This script can be used to print total amount in words
Administrator Menu > Maintenance > Resources
1. In Ticket.Buttons enable below line:
<event key="ticket.total" code="event.total"/>
2. Add below code in the event.total resource :
private static String[] _groups =
{ "", "Millon","Billon","Trillon"};
private static String[] _units =
{"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};
private static String[] _ten1 =
{"", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
private static String[] _tens =
{"", "Ten", "Twenty", "Thirty", "Fourty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
private static String[] _hundreds =
{"", "One Hundred", "Two Hundred", "Three Hundred", "Four Hundred", "Five Hundred", "Six Hundred", "Seven Hundred"
, "Eight Hundred", "Nine Hundred"};
public static String thousandText( int n ) {
if (n == 0)
return "";
int hundreds = n / 100;
n = n % 100;
int tens = n / 10;
int units = n % 10;
String suffix = "";
if ( tens == 0 && units != 0 )
suffix = _units[units];
if ( tens == 1 && units != 0 )
suffix = _ten1[units];
if ( tens == 2 && units != 0 )
suffix = "Twenty"+_units[units];
if ( units == 0)
suffix = _tens[tens];
if ( tens > 2 && units != 0)
suffix = _tens[tens] + " and " + _units[units];
if (hundreds != 1)
return _hundreds[hundreds] + " " + suffix;
if ( units == 0 && tens == 0)
return "Hundred";
return "Hundred "+suffix;
}
public static String NumberToLetter( long n ){
String result = "";
int group = 0;
while ( n != 0 && group < _groups.length ) {
long fragment = n % 1000000;
int millarAlto = (int) (fragment / 1000);
int underathousand = (int) (fragment % 1000);
n = n / 1000000;
String groupname = _groups[group];
if (fragment > 1 && group > 0)
groupname += "es";
if ((millarAlto != 0) || (underathousand != 0)) {
if (millarAlto > 1)
result = thousandText(millarAlto) + " thousand " +
thousandText(underathousand) + " " +
groupname + " " +
result;
if (millarAlto == 0)
result = thousandText(underathousand) + " " +
groupname + " "+
result;
if (millarAlto == 1)
result = "thousand " + thousandText(underathousand) + " " +
groupname + " " +
result;
}
group++;
}
return result;
}
number = ticket.getTotal();
number = Math.round(number*Math.pow(10,2))/Math.pow(10,2);
number_whole=(int)number;
number_decimal=(int)((number*100)-(number_whole*100));
value1 = NumberToLetter(number_whole);
value2 = NumberToLetter(number_decimal);
ticket.setProperty("amount", value1);
ticket.setProperty("decimal", value2);
3. In Printer.Ticket and Printer.TicketPreview use below code to print amount in words:
<line>
<text align="left">${ticket.getProperty("amount")} ${ticket.getProperty("decimal")}</text>
</line>
Save
Leave a Reply