Numarayı Yazıya çevirme


Ayarlar --> Otomasyon --> Komutlar --> Komut Ekle

Adı: NumFunctions
Denetimci: num
Komut:


//var unidades = ["", "un", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quince", "dieciséis", "diecisiete", "dieciocho", "diecinueve", "veinte", "veintiún", "veintidós", "veintitrés", "veinticuatro", "veinticinco", "veintiséis", "veintisiete", "veintiocho", "veintinueve"];
var unidades = ["", "bir", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz", "dokuz", "on", "onbir", "oniki", "onüç", "ondört", "onbeş", "onaltı", "onyedi", "onsekiz", "ondokuz", "yirmi", "yirmibir", "yirmiiki", "yirmiüç", "yirmidört", "yirmibeş", "yirmialtı", "yirmiyedi", "yirmisekiz", "yirmidokuz"];
var decenas = ["", "", "", "otuz ", "kırk ", "elli ", "altmış ", "yetmiş ", "seksen ", "doksan "];
var centenas = ["", "yüz ", "ikiyüz ", "üçyüz ", "dörtyüz ", "beşyüz ", "altıyüz ", "yediyüz ", "sekizyüz ", "dokuzyüz "]
var ordenes = ["", " bin", " millones", " mil", " billones", " mil", " trillones", " mil", " cuatrillones", " mil"];
var gen = "num";
//var gen = "fem";
var digits = "0";


function numToSpanish(numToConvert,xr) {
	xr = typeof(xr)==='undefined' || xr=='' ? 1 : xr;

	numToConvert = Helper.ToNumber(numToConvert)/Number(xr);
	//numToConvert = Math.round(numToConvert);
	numToConvert = parseInt(numToConvert);
	numToConvert = numToConvert.toString();
	
    var numeral = "";

    var numParts = chop(new String(numToConvert));

    for (i = 0; i < numParts.length; i++)
        numerator(numParts, i);

    numeral += numParts.reverse().join(" ");

    if (numeral.length == 0)
        numeral = "cero";

    if (/((llón)|(llones))\s*$/.test(numeral) && gen != "num")
        numeral += " de";

    if (gen == "fem")
        numeral += (digits == "1 " ? " lempira" : " lempiras");
    else if (gen == "mas")
        numeral += (digits == "1 " ? " dólar" : " dólares");

    if (gen != "num")
        digits += (gen == "fem" ? "£" : "$");

    //return digits + "

" + numeral; numeral = numeral.toUpperCase(); return numeral; } function numerator(numParts, pos) { var centena, decena, unidad, numeral; centena = numParts[pos].charAt(0); decena = numParts[pos].charAt(1); unidad = numParts[pos].charAt(2); if (parseInt(decena, 10) < 3) numeral = new String(centenas[centena] + unidades[parseInt(decena + unidad, 10)]); else numeral = new String(centenas[centena] + decenas[decena] + unidades[unidad]); switch (centena + decena + unidad) { case "000": if (ordenes[pos] != " mil" && numParts[pos + 1] != "000") numeral += ordenes[pos]; break; case "001": numeral += ordenes[pos]; numeral = numeral.replace(/^un\smil$/, "mil"); if (pos == numParts.length - 1 || (pos < numParts.length - 1 && numParts[pos + 1] == "000")) numeral = numeral.replace(/llones$/, "llón"); if (pos == 0 && gen != "mas") numeral = (gen == "fem" ? "una" : "bir"); break; case "100": numeral = "yüz " + ordenes[pos]; break; default: numeral = numeral.replace(/@/g, ((gen == "fem" && pos < 2) ? "a" : "o")); numeral = numeral.replace(/\sy\s$/, ""); numeral += ordenes[pos]; } if (pos == 0 && gen != "mas") { numeral = numeral.replace(/veintiún$/, (gen == "fem" ? "veintiuna" : "veintiuno")); numeral = numeral.replace(/un$/, (gen == "fem" ? "una" : "bir")); } else if (pos == 1 && gen == "fem") { numeral = numeral.replace(/veintiún/, "veintiuna"); numeral = numeral.replace(/un\smil/, "una mil"); } numParts[pos] = numeral; } function chop(numString) { var numParts = new Array(); var numPart = 0; var numDigits = 0; numString = numString.replace(/\D*/g, "").replace(/^0*/, ""); if (numString == "") numString = "0"; digits = ""; for (var i = numString.length; i > 0; i -= 3) { numPart = numParts.push(numString.substring(i - 3, i)); digits = numParts[numPart - 1] + " " + digits; } numDigits = numParts[numPart - 1].length; if (numDigits < 3) numParts[numPart - 1] = (numDigits == 2 ? "0" : "00") + numParts[numPart - 1]; return numParts; } function padR(str,padChar,padLen) { while (str.length < padLen) str = str + padChar; return str; } function cents(num,xr,dec) { xr = typeof(xr)==='undefined' || xr=='' ? 1 : xr; xr = Number(xr); dec = typeof(dec)==='undefined' || dec=='' ? 6 : dec; dec = Number(dec); var div = Number(padR('1','0',dec-1)); // create our divider based on currency decimal places num = Helper.ToNumber(num); // strip thousands separators num = num/xr; num = num.toString(); if (num.indexOf('.') > -1) { num = num.substr(num.indexOf('.')+1); // get digits after decimal } else { num = '0'; // there are no digits after decimal } num = num.substr(0,dec); // use only supplied decimal places num = padR(num,'0',dec); // ensure the number is as long as our currency decimal places by padding right with zeros num = num/div; num = Math.round(num); num = num.toString(); //num = ('00' + num).slice(-2); // pad left with zeros return num; } function toSpanish(num,xr,dec,format) { xr = typeof(xr)==='undefined' || xr=='' ? 1 : xr; xr = Number(xr); dec = typeof(dec)==='undefined' || dec=='' ? 1 : dec; dec = Number(dec); format = typeof(format)==='undefined' || format=='' ? '' : format; var leftPart = numToSpanish(num,xr); var rightPart = cents(num,xr,dec); var currency = xr==1 ? '' : 'Lempiras'; var ret = ''; switch (format) { case 'text': ret = leftPart + ' ' + currency + ' ' + numToSpanish(rightPart,1) + ' Centavos'; break; default: ret = leftPart + ' ' + currency + ' ' + ('' + rightPart).slice(-2) + ''; break; } return ret; }

Kaydet

Ayarlar --> Yazdırma --> Yazıcı Şablonları
⇊ Kullandığınız şablonu açın ilgili yere ekleyin ⇊

<L00>{CALL:num.toSpanish('{TICKET TOTAL}')} LİRA

Bir milyon a kadar doğru yazar

1 Beğeni

Bu kadarına gerek yok ki, şablona aşağıdaki satırı eklemeniz yeterli. …

 <tr>
      <td width=190 align=Left>{TOTAL TEXT}</td>
            
</tr>

image

2 Beğeni

Adisyon toplamı için {TOTAL TEXT} güzel çözüm fakat kısmi ödeme yapılmış adisyonlarda gereksiz bilgi ve kafa karıştırıcı bir hal alıyor. Keşke {BALANCE TEXT} gibi kullanabileceğimiz bir tag olsaydı. Ben bu yöntemi kalan ödeme için kullanıyorum.

%C3%B6rnek2

Bunu yapmamdaki amaç;

Maç bitişine yakın her masa arka arkaya hesap isteyince bazen garsonlar ortasından çizgi geçen sıfırı 8 ile karıştıryorlar ve yanlış işlem yapıyorlar.

100 lira hesaba kredi kartından 188 lira çeken personelimiz oldu :slight_smile:

Şablonu HTML formatında kullanarak farklı bir font ile bu tür yanlış okumaların önüne kısmen de olsa geçebilirsiniz.

@Serhatoglu html şablon üzerine çok yoğun çalışıyorum, html şablonu anladığımda hiç bir sıkıntım kalmayacak :slight_smile:

denemelerimde “Justify” kısmında sıkıntı yaşadım, çözdüm sonrasında, ama hala hizalamada çözemediğim şeyler var.

Buradan örnek şablonları alıp kullanabilirsiniz.

teşekkür ederim,

hemen inceleyip kendime uyarlıyacağım.