5.0 Source Code

Committing 5.0 Source Code
This commit is contained in:
2023-04-06 18:58:04 +01:00
parent 0f3ede77fa
commit 0282345603
1680 changed files with 241310 additions and 0 deletions
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<fiscalreceipt>
#foreach ($ticketline in $ticket.getLines())
<!-- setting $vatinfo to the values contained in the fiscal printer vat table-->
#if (${ticketline.getTaxInfo().getRate()}==0.04)
#set ($vatinfo ="1")
#elseif (${ticketline.getTaxInfo().getRate()}==0.1)
#set ($vatinfo ="2")
#elseif (${ticketline.getTaxInfo().getRate()}==0.2)
#set ($vatinfo ="3")
#else
#set ($vatinfo ="1")
#end
#if ($ticketline.isProductCom())
<line price="${ticketline.getValue()}" units="${ticketline.getMultiply()}" tax="${vatinfo}">*${ticketline.printName()}</line>
#else
<line price="${ticketline.getValue()}" units="${ticketline.getMultiply()}" tax="${vatinfo}">${ticketline.printName()}</line>
#end
#end
<message>Items count: ${ticket.printArticlesCount()}</message>
#foreach ($paymentline in $ticket.payment)
#if ($paymentline.name == "cash")
<total paid="${paymentline.getPaid()}">Cash</total>
#end
#if ($paymentline.name == "cashrefund")
<total paid="${paymentline.getTotal()}">Refund</total>
#end
#if ($paymentline.name == "ccard")
<total paid="${paymentline.getTotal()}">Mag card</total>
#end
#if ($paymentline.name == "ccardrefund")
<total paid="${paymentline.getTotal()}">Mag card refund</total>
#end
#if ($paymentline.name == "cheque")
<total paid="${paymentline.getTotal()}">Cheque</total>
#end
#if ($paymentline.name == "chequerefund")
<total paid="${paymentline.getTotal()}">Cheque refund</total>
#end
#end
</fiscalreceipt>
<!-- Other commands -->
<!--
<fiscalzreport/>
<fiscalxreport/>
-->
</output>
@@ -0,0 +1,25 @@
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// http://sourceforge.net/projects/unicentaopos
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// **************************************************************************
// Cash.Close
// This script runs in the cash.close event
@@ -0,0 +1,151 @@
group = menu.addGroup("Menu.Main");
group.addPanel("/com/unicenta/images/sale.png", "Menu.Ticket", "com.unicenta.pos.sales.JPanelTicketSales");
group.addPanel("/com/unicenta/images/saleedit.png", "Menu.TicketEdit", "com.unicenta.pos.sales.JPanelTicketEdits");
group.addPanel("/com/unicenta/images/customerpay.png", "Menu.CustomersPayment", "com.unicenta.pos.customers.CustomersPayment");
group.addPanel("/com/unicenta/images/payments.png", "Menu.Payments", "com.unicenta.pos.panels.JPanelPayments");
group.addPanel("/com/unicenta/images/calculator.png", "Menu.CloseTPV", "com.unicenta.pos.panels.JPanelCloseMoney");
group = menu.addGroup("Menu.Backoffice");
submenu = group.addSubmenu("/com/unicenta/images/plugin.png", "Menu.Plugins", "plugins.configure");
submenu = group.addSubmenu("/com/unicenta/images/customer.png", "Menu.Customers", "com.unicenta.pos.forms.MenuCustomers");
submenu.addTitle("Menu.Panel.Customers.Forms");
submenu.addPanel("/com/unicenta/images/customer.png", "Menu.CustomersManagement", "com.unicenta.pos.customers.CustomersPanel");
submenu.addTitle("Menu.Panel.Customers.Reports");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Customers.Reports.Report", "/com/unicenta/reports/customers.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Customers.Reports.Sales", "/com/unicenta/reports/customers_sales.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Customers.Reports.Debtors", "/com/unicenta/reports/customers_debtors.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Customers.Reports.Diary", "/com/unicenta/reports/customers_diary.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Customers.Reports.Cards", "/com/unicenta/reports/customers_cards.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Customers.Reports.List", "/com/unicenta/reports/customers_list.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Customers.Reports.Export", "/com/unicenta/reports/customers_export.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Customers.Reports.Vouchers", "/com/unicenta/reports/customers_vouchers.bs");
submenu = group.addSubmenu("/com/unicenta/images/stockmaint.png", "Menu.Suppliers", "com.unicenta.pos.forms.MenuSuppliers");
submenu.addTitle("Menu.Panel.Suppliers.Forms");
submenu.addPanel("/com/unicenta/images/customer.png", "Menu.SuppliersManagement", "com.unicenta.pos.suppliers.SuppliersPanel");
submenu.addTitle("Menu.Panel.Suppliers.Reports");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Suppliers.Reports.Report", "/com/unicenta/reports/suppliers.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Suppliers.Reports.Products", "/com/unicenta/reports/suppliers_products.bs");
// submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Suppliers.Reports.Creditors", "/com/unicenta/reports/suppliers_creditors.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Suppliers.Reports.Diary", "/com/unicenta/reports/suppliers_diary.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Suppliers.Reports.Sales", "/com/unicenta/reports/suppliers_sales.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Suppliers.Reports.List", "/com/unicenta/reports/suppliers_list.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Suppliers.Reports.Export", "/com/unicenta/reports/suppliers_export.bs");
submenu = group.addSubmenu("/com/unicenta/images/products.png", "Menu.StockManagement", "com.unicenta.pos.forms.MenuStockManagement");
submenu.addTitle("Menu.Panel.Stock.Forms");
submenu.addPanel("/com/unicenta/images/category.png", "Menu.Categories", "com.unicenta.pos.inventory.CategoriesPanel");
submenu.addPanel("/com/unicenta/images/products.png", "Menu.Products", "com.unicenta.pos.inventory.ProductsPanel");
submenu.addPanel("/com/unicenta/images/location.png", "Menu.ProductsWarehouse", "com.unicenta.pos.inventory.ProductsWarehousePanel");
submenu.addPanel("/com/unicenta/images/stockmaint.png", "Menu.StockMovement", "com.unicenta.pos.inventory.StockManagement");
submenu.addPanel("/com/unicenta/images/auxiliary.png", "Menu.Auxiliar", "com.unicenta.pos.inventory.AuxiliarPanel");
submenu.addPanel("/com/unicenta/images/bundle.png", "Menu.Bundle", "com.unicenta.pos.inventory.BundlePanel");
submenu.addPanel("/com/unicenta/images/attributes.png", "Menu.Attributes", "com.unicenta.pos.inventory.AttributesPanel");
submenu.addPanel("/com/unicenta/images/attributes.png", "Menu.AttributeValues", "com.unicenta.pos.inventory.AttributeValuesPanel");
submenu.addPanel("/com/unicenta/images/attributes.png", "Menu.AttributeSets", "com.unicenta.pos.inventory.AttributeSetsPanel");
submenu.addPanel("/com/unicenta/images/attributes.png", "Menu.AttributeUse", "com.unicenta.pos.inventory.AttributeUsePanel");
submenu.addPanel("/com/unicenta/images/products.png", "Menu.Uom", "com.unicenta.pos.inventory.UomPanel");
submenu.addTitle("Menu.Panel.Stock.Reports");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Inventory", "/com/unicenta/reports/inventory.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Inventory2", "/com/unicenta/reports/inventory_b.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Inventory.Reports.Diary", "/com/unicenta/reports/inventory_diary.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.InventoryBroken", "/com/unicenta/reports/inventory_broken.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.InventoryDiff", "/com/unicenta/reports/inventory_diff.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.InventoryDiffDetail", "/com/unicenta/reports/inventory_diffdetail.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.InventoryListDetail", "/com/unicenta/reports/inventory_listdetail.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Products", "/com/unicenta/reports/products.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.SaleCatalog", "/com/unicenta/reports/salecatalog.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.ProductLabels", "/com/unicenta/reports/labels_product.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.BarcodeSheet", "/com/unicenta/reports/labels_barcode_sheet.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.ShelfEdgeLabels", "/com/unicenta/reports/labels_barcode_shelfedge.bs");
submenu = group.addSubmenu("/com/unicenta/images/sales.png", "Menu.SalesManagement", "com.unicenta.pos.forms.MenuSalesManagement");
submenu.addTitle("Menu.Panel.Sales.Reports");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Closing", "/com/unicenta/reports/sales_closedpos.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Closing1", "/com/unicenta/reports/sales_closedpos_1.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.CashRegisterLog", "/com/unicenta/reports/sales_cashregisterlog.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.ExtendedCashRegisterLog", "/com/unicenta/reports/sales_extendedcashregisterlog.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.CashFlow", "/com/unicenta/reports/sales_cashflow.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.PaymentReport", "/com/unicenta/reports/sales_payments.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.CategorySales", "/com/unicenta/reports/sales_categorysales.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.CategorySales1", "/com/unicenta/reports/sales_categorysales_1.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.ClosedProducts", "/com/unicenta/reports/sales_closedproducts.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.ClosedProducts1", "/com/unicenta/reports/sales_closedproducts_1.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.ExtendedByProducts", "/com/unicenta/reports/sales_extproducts.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.SalesProfit", "/com/unicenta/reports/sales_productsalesprofit.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.SaleTaxes", "/com/unicenta/reports/sales_saletaxes.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.TaxCatSales", "/com/unicenta/reports/sales_taxcatsales.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.ReportTaxes", "/com/unicenta/reports/sales_taxes.bs");
submenu.addTitle("Menu.Panel.Sales.Charts");
submenu.addPanel("/com/unicenta/images/chart.png", "Menu.ProductSales", "/com/unicenta/reports/sales_chart_productsales.bs");
submenu.addPanel("/com/unicenta/images/chart.png", "Menu.ProductCategorySalesPieChart", "/com/unicenta/reports/sales_chart_piesalescat.bs");
submenu.addPanel("/com/unicenta/images/chart.png", "Menu.SalesChart", "/com/unicenta/reports/sales_chart_sales.bs");
submenu.addPanel("/com/unicenta/images/chart.png", "Menu.TimeSeriesProduct", "/com/unicenta/reports/sales_chart_timeseriesproduct.bs");
submenu.addPanel("/com/unicenta/images/chart.png", "Menu.Top10Sales", "/com/unicenta/reports/sales_chart_top10.bs");
submenu = group.addSubmenu("/com/unicenta/images/maintain.png", "Menu.Maintenance", "com.unicenta.pos.forms.MenuMaintenance");
submenu.addTitle("Menu.Panel.Maintenance.Forms");
submenu.addPanel("/com/unicenta/images/resources.png", "Menu.Resources", "com.unicenta.pos.admin.ResourcesPanel");
submenu.addPanel("/com/unicenta/images/roles.png", "Menu.Roles", "com.unicenta.pos.admin.RolesPanel");
submenu.addPanel("/com/unicenta/images/user.png", "Menu.Users", "com.unicenta.pos.admin.PeoplePanel");
submenu.addPanel("/com/unicenta/images/bookmark.png", "Menu.TaxCategories", "com.unicenta.pos.inventory.TaxCategoriesPanel");
submenu.addPanel("/com/unicenta/images/bookmark.png", "Menu.TaxCustCategories", "com.unicenta.pos.inventory.TaxCustCategoriesPanel");
submenu.addPanel("/com/unicenta/images/bookmark.png", "Menu.Taxes", "com.unicenta.pos.inventory.TaxPanel");
submenu.addPanel("/com/unicenta/images/location.png", "Menu.Locations", "com.unicenta.pos.inventory.LocationsPanel");
submenu.addPanel("/com/unicenta/images/floors.png", "Menu.Floors", "com.unicenta.pos.mant.JPanelFloors");
submenu.addPanel("/com/unicenta/images/tables.png", "Menu.Tables", "com.unicenta.pos.mant.JPanelPlaces");
submenu.addPanel("/com/unicenta/images/products.png", "Menu.Vouchers", "com.unicenta.pos.voucher.VoucherPanel");
submenu.addTitle("Menu.Panel.Maintenance.Reports");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.UsersReport", "/com/unicenta/reports/users.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.UserSells", "/com/unicenta/reports/users_sales.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.UserNoSales", "/com/unicenta/reports/users_nosales.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.UserVoids", "/com/unicenta/reports/users_voids.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Customers.Reports.Vouchers", "/com/unicenta/reports/customers_vouchers.bs");
// EPM
submenu = group.addSubmenu("/com/unicenta/images/users.png", "Menu.PresenceManagement", "com.unicenta.pos.forms.MenuEmployees");
submenu.addTitle("Menu.PresenceManagement");
submenu.addPanel("/com/unicenta/images/coffee.png", "Menu.Breaks", "com.unicenta.pos.epm.BreaksPanel");
submenu.addPanel("/com/unicenta/images/leaves.png", "Menu.Leaves", "com.unicenta.pos.epm.LeavesPanel");
submenu.addTitle("Menu.Employees.Reports");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.EPM.DailyPresenceReport", "/com/unicenta/reports/epm_dailypresence.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.EPM.DailyScheduleReport", "/com/unicenta/reports/epm_dailyschedule.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.EPM.PerformanceReport", "/com/unicenta/reports/epm_performance.bs");
group = menu.addGroup("Menu.Utilities");
submenu = group.addSubmenu("/com/unicenta/images/utilities.png", "Menu.Tools", "com.unicenta.pos.imports.JPanelCSV");
submenu.addTitle("Menu.Import");
submenu.addPanel("/com/unicenta/images/import.png", "Menu.CSVImport", "com.unicenta.pos.imports.JPanelCSVImport");
submenu.addPanel("/com/unicenta/images/import.png", "Menu.CSVStockQty", "com.unicenta.pos.imports.StockQtyImport");
submenu.addPanel("/com/unicenta/images/import.png", "Menu.CustomerCSVImport", "com.unicenta.pos.imports.CustomerCSVImport");
submenu.addPanel("/com/unicenta/images/database.png", "Menu.CSVReset", "com.unicenta.pos.imports.JPanelCSVCleardb");
submenu.addPanel("/com/unicenta/images/database.png", "Menu.Transfer", "com.unicenta.pos.transfer.Transfer");
submenu.addTitle("Menu.Import.Reports");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Tools.NewProducts", "/com/unicenta/reports/tools_newproducts.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Tools.UpdatedPrices", "/com/unicenta/reports/tools_updatedprices.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Tools.StockQtyUpdate", "/com/unicenta/reports/tools_inventoryqtyupdate.bs");
// submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Tools.BadPrices", "/com/unicenta/reports/tools_badprice.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Tools.InvalidCategory", "/com/unicenta/reports/tools_invalidcategory.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Tools.MissingData", "/com/unicenta/reports/tools_missingdata.bs");
submenu.addPanel("/com/unicenta/images/reports.png", "Menu.Tools.InvalidData", "/com/unicenta/reports/tools_invaliddata.bs");
group = menu.addGroup("Menu.System");
group.addChangePasswordAction();
group.addPanel("/com/unicenta/images/configuration.png", "Menu.Configuration", "com.unicenta.pos.config.JPanelConfiguration");
group.addPanel("/com/unicenta/images/printer.png", "Menu.Printer", "com.unicenta.pos.panels.JPanelPrinter");
group.addPanel("/com/unicenta/images/timer.png", "Menu.CheckInCheckOut", "com.unicenta.pos.epm.JPanelEmployeePresence");
// Deprecated options. Only required with Openbravo ERP software
// submenu.addTitle("Menu.Maintenance.ERP");
// submenu.addExecution("/com/unicenta/images/openbravo.png", "Menu.ERPProducts", "com.unicenta.possync.ProductsSyncCreate");
// submenu.addExecution("/com/unicenta/images/openbravo.png", "Menu.ERPOrders", "com.unicenta.possync.OrdersSyncCreate");
group.addExitAction();
@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line></line>
<line size="1">
<text align ="center" bold="true" length="42">Close Cash Preview</text>
</line>
<line></line>
<line><text length="18" bold="true">Printed:</text><text>${payments.printDate()}</text></line>
<line><text length="18" bold="true">Printed by:</text><text>${payments.printUser()}</text></line>
<line><text length="18" bold="true">Terminal:</text><text>${payments.printHost()}</text></line>
<line><text length="18" bold="true">Sequence:</text><text>${payments.printSequence()}</text></line>
<line><text length="18" bold="true">Last Close Date:</text><text>${payments.printDateStart()}</text></line>
<line><text>------------------------------------------</text></line>
<line></line>
<line>
<text align ="left" bold="true" length="32">Payments Report</text>
<text align ="right" bold="true" length="10">Amount</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getPaymentLines())
<line>
<text align ="left" length="32">${line.printType()} ${line.printReason()}</text>
<text align ="right" length="10">${line.printValue()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line>
<text align ="left" length="32" bold="true">Total Sales</text>
<text align ="right" length="10" bold="true">${payments.printPaymentsTotal()}</text>
</line>
<line>
<text align ="left" length="22">Number of Payments:</text>
<text align ="right" length="10">${payments.printPayments()}</text>
</line>
<line></line>
<line>
<text align ="left" bold="true" length="32">Tax Analysis</text>
<text align ="right" bold="true" length="10">Amount</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getSaleLines())
<line>
<text align ="left" length="32">${line.printTaxName()}</text>
<text align ="right" length="10">${line.printTaxes()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<!-- START OF VOIDS -->
<line size="1"><text align="center" length="42" bold="true">Line Voids</text></line>
<line>
<text align ="left" length="6" bold="true">Tkt</text>
<text align ="left" length="12" bold="true">User</text>
<text align ="left" length="19" bold="true">Product</text>
<text align ="right" length="5" bold="true">Total</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getRemovedProductLines())
<line>
<text align ="left" length="6">${line.printTicketId()}</text>
<text align ="left" length="11">${line.printWorkerName()}</text>
<text align ="left" length="1"></text>
<text align ="left" length="19">${line.printProductName()}</text>
<text align ="right" length="5">${line.printTotalUnits()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line></line>
<!-- END OF VOIDS -->
<!-- START OF NO SALES -->
<line size="1"><text align="center" length="42" bold="true">No Sales</text></line>
<line>
<text align ="left" length="34" bold="true">User</text>
<text align ="right" length="8" bold="true">Ticket</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getDrawerOpenedLines())
<line>
<text align ="left" length="34">${line.printUserName()}</text>
<text align ="right" length="8">${line.printTicketId()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line></line>
<!-- END OF NO SALES -->
<line>
<text align ="left" length="32">Receipts:</text>
<text align ="right" length="10">${payments.printSales()}</text>
</line>
<line></line>
<line size="1">
<text align ="left" length="32" bold="true">SubTotal</text>
<text align ="right" length="10" bold="true">${payments.printSalesBase()}</text>
</line>
<line size="1">
<text align ="left" length="32" bold="true">Taxes</text>
<text align ="right" length="10" bold="true">${payments.printSalesTaxes()}</text>
</line>
<line size="1">
<text align ="left" length="32" bold="true">Totals</text>
<text align ="right" length="10" bold="true">${payments.printSalesTotal()}</text>
</line>
</ticket>
</output>
@@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line></line>
<line size="1">
<text align ="center" bold="true" length="42">Close Cash Report</text>
</line>
<line></line>
<line>
<text align ="left" bold="true" length="30">Payments Report</text>
<text align ="right" bold="true" length="12">Amount</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getPaymentLines())
<line>
<text align ="left" length="30">${line.printType()} ${line.printReason()}</text>
<text align ="right" length="12">${line.printValue()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line>
<text align ="left" length="30" bold="true">Total Sales</text>
<text align ="right" length="12" bold="true">${payments.printPaymentsTotal()}</text>
</line>
<line>
<text align ="left" length="30">Number of Payments:</text>
<text align ="right" length="12">${payments.printPayments()}</text>
</line>
<line></line>
<line>
<text align ="left" bold="true" length="30">Tax Analysis</text>
<text align ="right" bold="true" length="12">Amount</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getSaleLines())
<line>
<text align ="left" length="30">${line.printTaxName()}</text>
<text align ="right" length="12">${line.printTaxes()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<!-- START OF VOIDS -->
<line size="1"><text align="center" length="42" bold="true">Line Voids</text></line>
<line>
<text align ="left" length="6" bold="true">Tkt</text>
<text align ="left" length="12" bold="true">User</text>
<text align ="left" length="19" bold="true">Product</text>
<text align ="right" length="5" bold="true">Total</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getRemovedProductLines())
<line>
<text align ="left" length="6">${line.printTicketId()}</text>
<text align ="left" length="11">${line.printWorkerName()}</text>
<text align ="left" length="1"></text>
<text align ="left" length="19">${line.printProductName()}</text>
<text align ="right" length="5">${line.printTotalUnits()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line></line>
<!-- END OF VOIDS -->
<!-- START OF NO SALES -->
<line size="1"><text align="center" length="42" bold="true">No Sales</text></line>
<line>
<text align ="left" length="34" bold="true">User</text>
<text align ="right" length="8" bold="true">Ticket</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getDrawerOpenedLines())
<line>
<text align ="left" length="34">${line.printUserName()}</text>
<text align ="right" length="8">${line.printTicketId()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line></line>
<!-- END OF NO SALES -->
<line>
<text align ="left" length="3">Receipts:</text>
<text align ="right" length="12">${payments.printSales()}</text>
</line>
<line></line>
<line size="1">
<text align ="left" length="30" bold="true">SubTotal</text>
<text align ="right" length="12" bold="true">${payments.printSalesBase()}</text>
</line>
<line size="1">
<text align ="left" length="30" bold="true">Taxes</text>
<text align ="right" length="12" bold="true">${payments.printSalesTaxes()}</text>
</line>
<line size="1">
<text align ="left" length="30" bold="true">Totals</text>
<text align ="right" length="12" bold="true">${payments.printSalesTotal()}</text>
</line>
<line><text>------------------------------------------</text></line>
<line><text length="18" bold="true">Closed by:</text><text>${payments.printUser()}</text></line>
<line><text length="18" bold="true">Terminal:</text><text>${payments.printHost()}</text></line>
<line><text length="18" bold="true">Sequence:</text><text>${payments.printSequence()}</text></line>
<line><text length="18" bold="true">Start Date:</text><text>${payments.printDateStart()}</text></line>
<line><text length="18" bold="true">End Date:</text><text>${payments.printDateEnd()}</text></line>
</ticket>
</output>
@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty or
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS.
If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="10">Total paid</text>
<text align="right" length="10">${ticket.printTotalPaid()}</text>
</line>
<line>
<text align="center" length="20">Thank You for your custom</text>
</line>
</display>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line>
<text align="center" length="42">Printer.CustomerPaid</text>
</line>
<line>
<text align="center" length="42">You can change this template</text>
</line>
<line>
<text align="center" length="42">in the Resources panel</text>
</line>
<line></line>
<line>
<text align="left" length="15">Receipt:</text>
<text>${ticket.printId()}</text>
</line>
<line>
<text align="left" length="15">Date:</text>
<text>${ticket.printDate()}</text>
</line>
#if ($ticket.getCustomer())
<line>
<text align="left" length="15">Account:</text>
<text>${ticket.getCustomer().printTaxid()}</text>
</line>
<line>
<text align="left" length="15">Customer:</text>
<text>${ticket.getCustomer().printName()}</text>
</line>
#end
<line></line>
<line size="1">
<text align ="left" length="32" bold="true">Total Paid</text>
<text align ="right" length="10" bold="true">${ticket.printTotalPaid()}</text>
</line>
<line></line>
<line>
<text align ="left" length="32" bold="true">Account Balance</text>
<text align ="right" length="10" bold="true">${customer.printCurDebt()}</text>
</line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<line></line>
<line>
<text bold="true">Cash</text>
</line>
<line>
<text align="left" length="22">Tendered:</text>
<text align ="right" length="20">${paymentline.printPaid()}</text>
</line>
<line>
<text align="left" length="22">Change:</text>
<text align ="right" length="20">${paymentline.printChange()}</text>
</line>
#end
#if ($paymentline.name == "ccard")
<line></line>
<line>
<text bold="true">Mag card</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
<line>
<text align ="left" length="22">Number:</text>
<text>${paymentline.printCardNumber()}</text>
</line>
<line>
<text align ="left" length="22">Expiry Date:</text>
<text>${paymentline.printExpirationDate()}</text>
</line>
<line>
<text align ="left" length="22">Operation:</text>
<text>${paymentline.printTransactionID()}</text>
</line>
<line>
<text align ="left" length="22">Authorization:</text>
<text>${paymentline.printAuthorization()}</text>
</line>
#end
#if ($paymentline.name == "cheque")
<line></line>
<line>
<text bold="true">Cheque</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "voucherin")
<line></line>
<line>
<text bold="true">Voucher</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
#end
#end
<line></line>
<line>
<text align="left" length="15">Cashier:</text>
<text>${ticket.printUser()}</text>
</line>
<line></line>
<line>
<text align="center" length="42">Thank You for your custom</text>
</line>
</ticket>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<opendrawer/>
#end
#if ($paymentline.name == "cashrefund")
<opendrawer/>
#end
#end
</output>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="10">Total Paid</text>
<text align="right" length="10">${ticket.printTotalPaid()}</text>
</line>
<line>
<text align="center" length="20">Thank You for your custom</text>
</line>
</display>
</output>
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<fiscalreceipt>
#foreach ($ticketline in $ticket.getLines())
<!-- setting $vatinfo to the values contained in the fiscal printer vat table-->
#if (${ticketline.getTaxInfo().getRate()}==0.04)
#set ($vatinfo ="1")
#elseif (${ticketline.getTaxInfo().getRate()}==0.1)
#set ($vatinfo ="2")
#elseif (${ticketline.getTaxInfo().getRate()}==0.2)
#set ($vatinfo ="3")
#else #set ($vatinfo ="1")
#end
#if ($ticketline.isProductCom())
<line price="${ticketline.getValue()}" units="${ticketline.getMultiply()}" tax="${vatinfo}">*${ticketline.printName()}</line>
#else
<line price="${ticketline.getValue()}" units="${ticketline.getMultiply()}" tax="${vatinfo}">${ticketline.printName()}</line>
#end
#end
<message>Items count: ${ticket.printArticlesCount()}</message>
#foreach ($paymentline in $ticket.payment)
#if ($paymentline.name == "cash")
<total paid="${paymentline.getPaid()}">Cash</total>
#end
#if ($paymentline.name == "cashrefund")
<total paid="${paymentline.getTotal()}">Refund</total>
#end
#if ($paymentline.name == "ccard")
<total paid="${paymentline.getTotal()}">Mag card</total>
#end
#if ($paymentline.name == "ccardrefund")
<total paid="${paymentline.getTotal()}">Mag card refund</total>
#end
#if ($paymentline.name == "cheque")
<total paid="${paymentline.getTotal()}">Cheque</total>
#end
#if ($paymentline.name == "chequerefund")
<total paid="${paymentline.getTotal()}">Cheque refund</total>
#end
#end
</fiscalreceipt>
<!-- Other commands -->
<!--
<fiscalzreport/>
<fiscalxreport/>
-->
</output>
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
https://unicenta.com
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line><text align="center" length="42">You can change Printer.Inventory template</text></line>
<line><text align="center" length="42">in the Resources panel</text></line>
<line></line>
<line><text align="center" bold="true" length="42">Inventory Record</text></line>
<line>
<text align ="left" bold="true" length="12">Date : </text>
<text align ="left" length="30">${inventoryrecord.printDate()}</text></line>
<line><text align ="left" bold="true" length="12">Reason : </text>
<text align ="left" length="30">${inventoryrecord.printReason()}</text></line>
<line><text align ="left" bold="true" length="12">User : </text>
<text align ="left" length="30">${inventoryrecord.printUser()}</text></line>
<line><text align ="left" bold="true" length="12">Location : </text>
<text align ="left" length="30">${inventoryrecord.printLocation()}</text></line>
<line><text align ="left" bold="true" length="12">Supplier : </text>
<text align ="left" length="30">${inventoryrecord.printSupplier()}</text></line>
<line><text align ="left" bold="true" length="12">Document : </text>
<text align ="left" length="30">${inventoryrecord.printSupplierDoc()}</text></line>
<line size="1">
#if ($inventoryrecord.isInput())
<text align ="center" bold="true" length="42">In</text>
#else
<text align ="center" bold="true" length="42">Out</text>
#end
</line>
<line></line>
<line>
<text align ="left" bold="true" length="17">Item</text>
<text align ="right" bold="true" length="10">Price</text>
<text align ="right" bold="true" length="5">Qty</text>
<text align ="right" bold="true" length="10">Value</text>
</line>
<line>
<text>------------------------------------------</text>
</line>
#foreach ($inventoryline in $inventoryrecord.getLines())
<line>
<text align ="left" length="17">${inventoryline.printName()}</text>
<text align ="right" length="10">${inventoryline.printPrice()}</text>
<text align ="right" length="5">x${inventoryline.printMultiply()}</text>
<text align ="right" length="10">${inventoryline.printSubValue()}</text>
</line>
#if ($inventoryline.productAttSetInstId)
<line><text align ="left" length="42">${inventoryline.productAttSetInstDesc}</text></line>
#end
#end
<line><text>------------------------------------------</text></line>
<line></line>
<line>
<text align ="left" bold="true" length="27">Totals :</text>
<text align ="right" bold="true" length="5">${inventoryrecord.printTotalArticles()}</text>
<text align ="right" bold="true" length="10">${inventoryrecord.printSubTotal()}</text>
</line>
<line></line>
<line><text align="center" length="42">Please keep this ticket</text></line>
</ticket>
</output>
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS.
If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<opendrawer/>
</output>
@@ -0,0 +1,201 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line></line>
<line size="1"><text align="center" length="42" bold="true">Partial Cash Report</text></line>
<line></line>
<!-- START OF SEQUENCE DETAIL -->
<line><text length="18" bold="true">Run by:</text><text>${payments.printUser()}</text></line>
<line><text length="18" bold="true">Terminal:</text><text>${payments.printHost()}</text></line>
<line><text length="18" bold="true">Sequence:</text><text>${payments.printSequence()}</text></line>
<line><text length="18" bold="true">Start Date:</text><text>${payments.printDateStart()}</text></line>
<line><text length="18" bold="true">End Date:</text><text>${payments.printDateEnd()}</text></line>
<line></line>
<!-- END OF SEQUENCE DETAIL -->
<!-- START OF SALES -->
<line size="1"><text align="center" length="42" bold="true">Sales</text></line>
<line>
<text align ="left" length="16" bold="true">Name</text>
<text align ="right" length="6" bold="true">Sold</text>
<text align ="right" length="10" bold="true">Net</text>
<text align ="right" length="10" bold="true">Total</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getProductSalesLines())
<line>
<text align ="left" length="16">${line.printProductName()}</text>
<text align ="right" length="6">${line.printProductUnits()}</text>
<text align ="right" length="10">${line.printProductPriceNet()}</text>
<text align ="right" length="10">${line.printProductSubValue()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line>
<text align ="left" length="16" bold="true">Total</text>
<text align ="right" length="6" bold="true">${payments.printProductSalesTotalUnits()}</text>
<text align ="right" length="10" bold="true">${payments.printSalesBase()}</text>
<text align ="right" length="10" bold="true">${payments.printProductSalesTotal()}</text>
</line>
<line></line>
<!-- END OF SALES SUMMARY -->
<!-- START OF CATEGORIES SUMMARY -->
<line size="1"><text align="center" length="42" bold="true">Product Categories</text></line>
<line>
<text align ="left" length="16" bold="true">Name</text>
<text align ="right" length="6" bold="true">Sold</text>
<text align ="right" length="10" bold="true"></text>
<text align ="right" length="10" bold="true">Total</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getCategorySalesLines())
<line>
<text align ="left" length="16">${line.printCategoryName()}</text>
<text align ="right" length="6">${line.printCategoryUnits()}</text>
<text align ="right" length="10"></text>
<text align ="right" length="10">${line.printCategorySum()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line><text align ="left" length="16" bold="true">Total</text>
<text align ="right" length="6" bold="true">${payments.printCategorySalesTotalUnits()}</text>
<text align ="right" length="10" bold="true"></text>
<text align ="right" length="10" bold="true">${payments.printCategorySalesTotal()}</text>
</line>
<line></line>
<!-- END OF CATEGORIES SUMMARY -->
<!-- START OF VOIDS -->
<line size="1"><text align="center" length="42" bold="true">Line Voids</text></line>
<line>
<text align ="left" length="6" bold="true">Tkt</text>
<text align ="left" length="12" bold="true">User</text>
<text align ="left" length="19" bold="true">Product</text>
<text align ="right" length="5" bold="true">Total</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getRemovedProductLines())
<line>
<text align ="left" length="6">${line.printTicketId()}</text>
<text align ="left" length="11">${line.printWorkerName()}</text>
<text align ="left" length="1"></text>
<text align ="left" length="19">${line.printProductName()}</text>
<text align ="right" length="5">${line.printTotalUnits()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line></line>
<!-- END OF VOIDS -->
<!-- START OF NO SALES -->
<line size="1"><text align="center" length="42" bold="true">No Sales</text></line>
<line>
<text align ="left" length="34" bold="true">User</text>
<text align ="right" length="8" bold="true">Ticket</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getDrawerOpenedLines())
<line>
<text align ="left" length="34">${line.printUserName()}</text>
<text align ="right" length="8">${line.printTicketId()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line></line>
<!-- END OF NO SALES -->
<!-- START OF TAXES ANALYSIS -->
<line size="1"><text align="center" length="42" bold="true">Taxes</text></line>
<line>
<text align ="left" length="12" bold="true">Name</text>
<text align ="right" length="10" bold="true">Net</text>
<text align ="right" length="10" bold="true">Gross</text>
<text align ="right" length="10" bold="true">Total</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getSaleLines())
<line>
<text align ="left" length="12">${line.printTaxName()}</text>
<text align ="right" length="10">${line.printTaxNet()}</text>
<text align ="right" length="10">${line.printTaxGross()}</text>
<text align ="right" length="10">${line.printTaxes()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line></line>
<!-- END OF TAXES ANALYSIS -->
<!-- START OF PAYMENTS -->
<line size="1"><text align="center" length="42" bold="true">Payments</text></line>
<line>
<text align ="left" length="32" bold="true">Type</text>
<text align ="right" length="10" bold="true">Total</text>
</line>
<line><text>------------------------------------------</text></line>
#foreach ($line in $payments.getPaymentLines())
<line>
<text align ="left" length="22">${line.printType()}</text>
<text align ="right" length="10">${line.printReason()}</text>
<text align ="right" length="10">${line.printValue()}</text>
</line>
#end
<line><text>------------------------------------------</text></line>
<line>
<text align ="left" length="30" bold="true">Total</text>
<text align ="right" length="12" bold="true">${payments.printPaymentsTotal()}</text>
</line>
<line></line>
<!-- END OF PAYMENTS RECEIVED -->
<!-- START OF TOTALS SUMMARY -->
<line><text>******************************************</text></line>
<line size="1"><text align="center" length="42" bold="true">SUMMARY</text></line>
<line><text>******************************************</text></line>
<line><text align ="left" length="30" bold="true">Tickets</text>
<text align ="right" length="12" bold="true">${payments.printSales()}</text>
</line>
<line><text align ="left" length="30" bold="true">Ticket Lines</text>
<text align ="right" length="12" bold="true">${payments.printProductSalesRows()}</text>
</line>
<line><text align ="left" length="30" bold="true">Payments</text>
<text align ="right" length="12" bold="true">${payments.printPayments()}</text>
</line>
<line><text align ="left" length="30" bold="true">Net Sales</text>
<text align ="right" length="12" bold="true">${payments.printSalesBase()}</text>
</line>
<line><text align ="left" length="30" bold="true">Tax</text>
<text align ="right" length="12" bold="true">${payments.printSalesTaxes()}</text>
</line>
<line><text align ="left" length="30" bold="true">Gross Sales</text>
<text align ="right" length="12" bold="true">${payments.printSalesTotal()}</text>
</line>
<!-- END OF TOTALS SUMMARY -->
</ticket>
</output>
@@ -0,0 +1,405 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line><text align="left" length="8">Total</text><text align="right" length="12">${ticket.printTotal()}</text></line>
<line><text align="center" length="20">Thank you</text></line>
</display>
<ticket>
<image>Printer.Ticket.Logo</image>
<line>
</line>
#if (${ticket.printTicketHeaderLine1()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine1()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine2()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine2()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine3()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine3()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine4()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine4()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine5()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine5()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine6()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine6()}</text>
</line>
#end
<line>
<text align="center" length="42">Printer.PrintLastTicket</text>
</line>
<line></line>
#if (${ticket.ticketType} == 0)
<line>
<text align="left" length="15">Receipt:</text>
<text>${ticket.printId()}</text>
</line>
#end
#if (${ticket.ticketType} == 1)
<line>
<text align="left" length="15">Refund:</text>
<text>${ticket.printId()}</text>
</line>
#end
<line>
<text align="left" length="15">Date:</text>
<text>${ticket.printDate()}</text>
</line>
<line>
<text align="left" length="15">Terminal: </text>
<text>${ticket.getHost()}</text>
</line>
<line>
<text align="left" length="15">Served by:</text>
<text>${ticket.printUser()}</text>
</line>
#if ($ticket.getCustomer())
<line>
<text align="left" length="15">Account #:</text>
<text>${ticket.getCustomer().printTaxCustomerID()}</text>
</line>
<line>
<text align="left" length="15">Customer:</text>
<text>${ticket.getCustomer().printName()}</text>
</line>
<line>
<text align="left" length="15">Address:</text>
<text>${ticket.getCustomer().printAddress()}</text>
</line>
<line>
<text align="left" length="15">Postal:</text>
<text>${ticket.getCustomer().printPostal()}</text>
</line>
<line>
<text align="left" length="15">Phone:</text>
<text>${ticket.getCustomer().printPhone()}</text>
</line>
<line>
<text align="left" length="15">Current Debt:</text>
<text>${ticket.getCustomer().printCurDebt()}</text>
</line>
#end
#if (${tickettext.place} != ${place})
<line>
<text align="left" length="15">Table:</text>
<text>${place}</text>
</line>
#end
<line></line>
<line>
<text align ="left" length="17">Item</text>
<text align ="right" length="8">Price</text>
<text align ="right" length="7">Qty</text>
<text align ="right" length="10">Value</text>
</line>
<line>
<text align="left" length="42">------------------------------------------</text>
</line>
#foreach ($ticketline in $ticket.getLines())
<line>
#if ($ticketline.isProductCom())
<text align ="left" length="17">*${ticketline.printName()}</text>
#else
<text align ="left" length="17">${ticketline.printName()}</text>
#end
<!-- Print line to show Prices pre-Tax
<text align ="right" length="8">${ticketline.printPrice()}</text>
<text align ="right" length="7">x${ticketline.printMultiply()}</text>
<text align ="right" length="8">${ticketline.printSubValue()}</text>
</line>
-->
<!-- Print line to show Prices inc. Tax -->
<text align ="right" length="8">${ticketline.printPriceTax()}</text>
<text align ="right" length="7">x${ticketline.printMultiply()}</text>
<text align ="right" length="10">${ticketline.printValue()}</text>
</line>
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- un-comment line below if you want to add a product's barcode -->
<!-- <line><text align ="left" length="12">Barcode : </text>${ticketline.printCode()}</text></line> -->
<!-- un-comment line below if you want to add a product's Reference -->
<!-- <line><text align ="left" length="12">Reference : </text>${ticketline.printReference()}</text></line> -->
#if ($ticketline.productAttSetInstId)
<line>
<text align ="left" length="42">${ticketline.productAttSetInstDesc}</text>
</line>
#end
#end
<line><text align="left" length="42">------------------------------------------</text></line>
<line><text>Items count: </text><text align ="left" length="14">${ticket.printArticlesCount()}</text></line>
<line></line>
<line><text align ="left" bold="true" length="16">Subtotal</text><text align ="right" length="26">${ticket.printSubTotal()}</text></line>
<line><text align ="left" length="16">Tax</text><text align ="right" length="26">${ticket.printTax()}</text></line>
<line></line>
<line size="1"><text align ="left" length="16" bold="true">Balance Due</text><text align ="right" length="26" bold="true">${ticket.printTotal()}</text></line>
<line></line>
#foreach ($taxinfo in $taxes)
<!-- #set( $taxline = $ticket.getTaxLine($taxinfo)) -->
<line>
<text align ="left" length="18">${taxline.getTaxInfo()}</text>
<text align ="right" length="12">${taxline.printSubTotal()}</text>
<text align ="right" length="12">${taxline.printTax()}</text>
</line>
#end
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<line><text bold="true">Cash</text></line>
<line>
<text align="left" length="22">Tendered:</text>
<text align ="right" length="20">${paymentline.printPaid()}</text>
</line>
<line>
<text align="left" length="22">Change:</text>
<text align ="right" length="20">${paymentline.printChange()}</text>
</line>
#end
#if ($paymentline.name == "cashrefund")
<line>
<text align="left" length="22" bold="true">Refund</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "cheque")
<line>
<text align="left" length="22" bold="true">Cheque</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "chequerefund")
<line>
<text align="left" length="22" bold="true">Cheque Refund</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "voucherin")
<line>
<text align="left" length="22" bold="true">Voucher</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "voucherout")
<line>
<text align="left" length="22" bold="true">Note Refund</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "slip")
<line>
<text align="left" length="22" bold="true">Slip</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "free")
<line>
<text align="left" length="22" bold="true">Free</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "debt")
<line>
<text align="left" length="22" bold="true">On Account</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#end
#if (${ticket.printTicketFooterLine1()} != "")
<line></line>
<line>
<text align="center" length="42">${ticket.printTicketFooterLine1()}</text>
</line>
<line><text>==========================================</text></line>
#end
#if (${ticket.printTicketFooterLine2()} != "")
<line><text>${ticket.printTicketFooterLine2()}</text></line>
#end
#if (${ticket.printTicketFooterLine3()} != "")
<line><text>${ticket.printTicketFooterLine3()}</text></line>
#end
#if (${ticket.printTicketFooterLine4()} != "")
<line><text>${ticket.printTicketFooterLine4()}</text></line>
#end
#if (${ticket.printTicketFooterLine5()} != "")
<line><text>${ticket.printTicketFooterLine5()}</text></line>
#end
#if (${ticket.printTicketFooterLine6()} != "")
<line><text>${ticket.printTicketFooterLine6()}</text></line>
#end
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "ccard")
#if ($paymentline.chipAndPin)
<line size="1">
<text align="center" length="42" bold="true">CARD SALE</text>
</line>
<line size="1">
<text>${paymentline.getCardName()}</text>
</line>
<line>
<text>${paymentline.printCardNumber()}</text>
</line>
<line></line>
<line size="1">
<text align="left" length="10">AMOUNT</text>
<text align ="right" length="32">${paymentline.printTotal()}</text></line>
<line>
<text>Tranx ID : </text>
<text>${paymentline.printTransactionID()}</text>
</line>
<line>
<text>Auth Code : </text>
<text>${paymentline.printAuthorization()}</text>
</line>
<line>
<text>Verified By : </text>
<text>${paymentline.printVerification()}</text>
</line>
#end
#if (!$paymentline.chipAndPin)
<line size="1">
<text align="center" length="42" bold="true">CARD SALE</text>
</line>
<line size="1">
<text>${paymentline.getCardName()}</text>
</line>
<line>
<text>${paymentline.printCardNumber()}</text>
</line>
<line></line>
<line size="1">
<text align="left" length="10">AMOUNT</text>
<text align ="right" length="32">${paymentline.printTotal()}</text></line>
<text align ="left" length="22">Expiration Date:</text>
<text>${paymentline.printExpirationDate()}</text>
</line>
<line>
<text>Operation : </text>
<text>${paymentline.printTransactionID()}</text>
</line>
<line>
<text>Auth Code : </text>
<text>${paymentline.printAuthorization()}</text>
</line>
<line></line>
#end
#if ($ticket.hasTip())
<line>
<text align ="left" length="16">Tip:</text>
<text align ="right" length="26">_______________</text></line>
<line></line>
<line size="1">
<text align ="left" length="16" bold="false">Total</text>
<text align ="right" length="26" bold="false">_______________</text></line>
<line></line>
<line></line>
<line size="1">
<text align ="left" length="42" bold="false">__________________________________________</text>
</line>
<line size="1">
<text align ="center" length="42" bold="false">Signature</text>
</line>
#else
<line size="1">
<text align ="left" length="16" bold="true">Total</text>
<text align ="right" length="26" bold="true">${ticket.printTotal()}</text>
</line>
#end
#end
#if ($paymentline.name == "ccardrefund")
<line size="1">
<text align="center" length="42" bold="true">CARD REFUND</text>
</line>
<line size="1">
<text>${paymentline.getCardName()}</text>
</line>
<line>
<text>${paymentline.printCardNumber()}</text>
</line>
<line></line>
<line size="1">
<text align="left" length="10">AMOUNT</text>
<text align ="right" length="32">${paymentline.printTotal()}</text></line>
<line>
<text align ="left" length="22">Expiration Date:</text>
<text>${paymentline.printExpirationDate()}</text></line>
<line>
<text>Tranx ID : </text>
<text>${paymentline.printTransactionID()}</text>
</line>
<line>
<text>Auth Code : </text>
<text>${paymentline.printAuthorization()}</text>
</line>
<line></line>
#end
#end
</ticket>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<opendrawer/>
#end
#if ($paymentline.name == "cashrefund")
<opendrawer/>
#end
#end
</output>
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<ticket>
<image>Printer.Ticket.Logo</image>
<line>
<text align="center" length="42">N.I.F. 00.000.000 X</text>
</line>
<line size="1">
<text align ="center" length="42" bold="true">${product.printName()}</text>
</line>
<line></line>
<line size="3">
<text>Eur.</text>
<text align ="right" length="6">${product.printPriceEur()}</text>
</line>
<line size="2">
<text>Pts.</text>
<text align ="right" length="6">${product.printPricePts()}</text>
</line>
<barcode type="EAN13">${product.printCode()}</barcode>
</ticket>
</output>
@@ -0,0 +1,303 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line><text align="left" length="8">Total</text><text align="right" length="12">${ticket.printTotal()}</text></line>
<line><text align="center" length="20">Thank you</text></line>
</display>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
#if (${ticket.printTicketHeaderLine1()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine1()}</text></line>
#end
#if (${ticket.printTicketHeaderLine2()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine2()}</text></line>
#end
#if (${ticket.printTicketHeaderLine3()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine3()}</text></line>
#end
#if (${ticket.printTicketHeaderLine4()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine4()}</text></line>
#end
#if (${ticket.printTicketHeaderLine5()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine5()}</text></line>
#end
#if (${ticket.printTicketHeaderLine6()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine6()}</text></line>
#end
<line><text align="center" length="42">Printer.ReprintTicket</text></line>
<line></line>
#if (${ticket.ticketType} == 0)
<line><text align="left" length="15">Receipt:</text><text>${ticket.printId()}</text></line>
#end
#if (${ticket.ticketType} == 1)
<line><text align="left" length="15">Refund:</text><text>${ticket.printId()}</text></line>
#end
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
<line><text align="left" length="15">Terminal: </text><text>${ticket.getHost()}</text></line>
<line><text align="left" length="15">Served by:</text><text>${ticket.printUser()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().printTaxCustomerID()}</text></line>
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().printName()}</text></line>
<line><text align="left" length="15">Address:</text><text>${ticket.getCustomer().printAddress()}</text></line>
<line><text align="left" length="15">Postal:</text><text>${ticket.getCustomer().printPostal()}</text></line>
<line><text align="left" length="15">Phone:</text><text>${ticket.getCustomer().printPhone1()}</text></line>
<line><text align="left" length="15">Current Debt:</text><text>${ticket.getCustomer().printCurDebt()}</text></line>
#end
#if (${tickettext.place} != ${place})
<line><text align="left" length="15">Table:</text><text>${place}</text></line>
#end
<line></line>
<line>
<text align ="left" length="17">Item</text>
<text align ="right" length="8">Price</text>
<text align ="right" length="7">Qty</text>
<text align ="right" length="10">Value</text>
</line>
<line><text align="left" length="42">------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
<line>
#if ($ticketline.isProductCom())
<text align ="left" length="17">*${ticketline.printName()}</text>
#else
<text align ="left" length="17">${ticketline.printName()}</text>
#end
<!-- Print line to show Prices pre-Tax
<text align ="right" length="8">${ticketline.printPrice()}</text>
<text align ="right" length="7">x${ticketline.printMultiply()}</text>
<text align ="right" length="8">${ticketline.printSubValue()}</text>
</line>
-->
<!-- Print line to show Prices inc. Tax -->
<text align ="right" length="8">${ticketline.printPriceTax()}</text>
<text align ="right" length="7">x${ticketline.printMultiply()}</text>
<text align ="right" length="10">${ticketline.printValue()}</text>
</line>
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- un-comment line below if you want to add a product's barcode -->
<!-- <line><text align ="left" length="12">Barcode : </text>${ticketline.printCode()}</text></line> -->
<!-- un-comment line below if you want to add a product's Reference -->
<!-- <line><text align ="left" length="12">Reference : </text>${ticketline.printReference()}</text></line> -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
#end
#end
<line><text align="left" length="42">------------------------------------------</text></line>
<line><text>Items count: </text><text align ="left" length="14">${ticket.printArticlesCount()}</text></line>
<line></line>
<line><text align ="left" bold="true" length="16">Subtotal</text><text align ="right" length="26">${ticket.printSubTotal()}</text></line>
<line><text align ="left" length="16">Tax</text><text align ="right" length="26">${ticket.printTax()}</text></line>
<line></line>
<line size="1"><text align ="left" length="16" bold="true">Balance Due</text>
<text align ="right" length="26" bold="true">${ticket.printTotal()}</text>
</line>
<line></line>
#foreach ($taxinfo in $taxes)
<!-- #set( $taxline = $ticket.getTaxLine($taxinfo)) -->
<line>
<text align ="left" length="18">${taxline.getTaxInfo()}</text>
<text align ="right" length="12">${taxline.printSubTotal()}</text>
<text align ="right" length="12">${taxline.printTax()}</text>
</line>
#end
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<line><text bold="true">Cash</text></line>
<line><text align="left" length="22">Tendered:</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
<line><text align="left" length="22">Change:</text><text align ="right" length="20">${paymentline.printChange()}</text></line>
#end
#if ($paymentline.name == "cashrefund")
<line>
<text align="left" length="22" bold="true">Refund</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "cheque")
<line>
<text align="left" length="22" bold="true">Cheque</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "chequerefund")
<line>
<text align="left" length="22" bold="true">Cheque Refund</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "voucherin")
<line>
<text align="left" length="22" bold="true">Voucher</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "voucherout")
<line>
<text align="left" length="22" bold="true">Note Refund</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "slip")
<line>
<text align="left" length="22" bold="true">Slip</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "free")
<line>
<text align="left" length="22" bold="true">Free</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "debt")
<line>
<text align="left" length="22" bold="true">On Account</text>
<text align ="right" length="20">${paymentline.printTotal()}</text>
</line>
#end
#end
#if (${ticket.printTicketFooterLine1()} != "")
<line></line>
<line>
<text align="center" length="42">${ticket.printTicketFooterLine1()}</text>
</line>
<line><text>==========================================</text></line>
#end
#if (${ticket.printTicketFooterLine2()} != "")
<line><text>${ticket.printTicketFooterLine2()}</text></line>
#end
#if (${ticket.printTicketFooterLine3()} != "")
<line><text>${ticket.printTicketFooterLine3()}</text></line>
#end
#if (${ticket.printTicketFooterLine4()} != "")
<line><text>${ticket.printTicketFooterLine4()}</text></line>
#end
#if (${ticket.printTicketFooterLine5()} != "")
<line><text>${ticket.printTicketFooterLine5()}</text></line>
#end
#if (${ticket.printTicketFooterLine6()} != "")
<line><text>${ticket.printTicketFooterLine6()}</text></line>
#end
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "ccard")
#if ($paymentline.chipAndPin)
<line size="1"><text align="center" length="42" bold="true">CARD SALE</text></line>
<line size="1"><text>${paymentline.getCardName()}</text></line>
<line><text>${paymentline.printCardNumber()}</text></line>
<line></line>
<line size="1">
<text align="left" length="10">AMOUNT</text>
<text align ="right" length="32">${paymentline.printTotal()}</text></line>
<line><text>Tranx ID : </text><text>${paymentline.printTransactionID()}</text></line>
<line><text>Auth Code : </text><text>${paymentline.printAuthorization()}</text></line>
<line><text>Verified By : </text><text>${paymentline.printVerification()}</text></line>
#end
#if (!$paymentline.chipAndPin)
<line size="1"><text align="center" length="42" bold="true">CARD SALE</text></line>
<line size="1"><text>${paymentline.getCardName()}</text></line>
<line><text>${paymentline.printCardNumber()}</text></line>
<line></line>
<line size="1">
<text align="left" length="10">AMOUNT</text>
<text align ="right" length="32">${paymentline.printTotal()}</text>
</line>
<line>
<text align ="left" length="22">Expiration Date:</text>
<text>${paymentline.printExpirationDate()}</text>
</line>
<line><text>Operation : </text><text>${paymentline.printTransactionID()}</text></line>
<line><text>Auth Code : </text><text>${paymentline.printAuthorization()}</text></line>
<line></line>
#end
#if ($ticket.hasTip())
<line><text align ="left" length="16">Tip:</text><text align ="right" length="26">_______________</text></line>
<line></line>
<line size="1">
<text align ="left" length="16" bold="false">Total</text>
<text align ="right" length="26" bold="false">_______________</text></line>
<line></line>
<line></line>
<line size="1">
<text align ="left" length="42" bold="false">__________________________________________</text>
</line>
<line size="1">
<text align ="center" length="42" bold="false">Signature</text>
</line>
#else
<line size="1">
<text align ="left" length="16" bold="true">Total</text>
<text align ="right" length="26" bold="true">${ticket.printTotal()}</text>
</line>
#end
#end
#if ($paymentline.name == "ccardrefund")
<line size="1"><text align="center" length="42" bold="true">CARD REFUND</text></line>
<line size="1"><text>${paymentline.getCardName()}</text></line>
<line><text>${paymentline.printCardNumber()}</text></line>
<line></line>
<line size="1"><text align="left" length="10">AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
<line><text align ="left" length="22">Expiration Date:</text><text>${paymentline.printExpirationDate()}</text></line>
<line><text>Tranx ID : </text><text>${paymentline.printTransactionID()}</text></line>
<line><text>Auth Code : </text><text>${paymentline.printAuthorization()}</text></line>
<line></line>
#end
#end
</ticket>
<!-- unComment this block if you want to open Cashdrawer in Print Preview
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<opendrawer/>
#end
#if ($paymentline.name == "cashrefund")
<opendrawer/>
#end
#end -->
</output>
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<!-- DISPLAY ANIMATION OPTIONS -->
<!-- <display animation="flyer"> -->
<!-- <display animation="scroll"> -->
<!-- <display animation="blink"> -->
<!-- <display animation="curtain"> -->
<display animation="none">
<line><text align="center" length="20">uniCenta oPOS</text></line>
<line><text align="center" length="20">Touch Friendly POS</text></line>
</display>
</output>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="10">Order sent to P1</text>
<text align="right" length="10">${ticket.printTotal()}</text>
</line>
<line>
<text align="center" length="20">Thank you.</text>
</line>
</display>
<ticket printer="1">
<line></line>
<line></line>
<line size = "1"><text bold = "true" align="center" length="42">Printer 1</text></line>
<line></line>
<line size = "1"><text>Order : </text><text bold = "true">${ticket.getPickupId()}</text></line>
#if (${tickettext.place} != ${place})
<line size = "1"><text align="left" length="15">Table:</text><text>${place}</text></line>
#end
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
<line><text align="left" length="15">Sent from: </text><text>${ticket.getHost()}</text></line>
<line><text align="left" length="15">Server:</text><text>${ticket.printUser()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().getName()}</text></line>
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().getTaxid()}</text></line>
#end
<line></line>
<line><text align ="left" length="17">Item</text><text align ="right" length="5"></text></line>
<line><text>------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
#if($ticketline.printPrinter().equals("1"))
#if($ticketline.getProperty("ticket.updated").equals("true"))
#if ($ticketline.isProductCom())
<line size="1"><text align ="left" length="37">--${ticketline.printName()}</text></line>
#else
<line size="1">
<text align ="left" length="5"> ${ticketline.printMultiply()}x</text>
<text align ="left" length="37"> ${ticketline.printName()}</text>
</line>
#end
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- Add the following lines only for 2.30 Attributes -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
<line></line>
#end
${ticketline.setProperty("ticket.updated", "false")}
#end
#end
#end
</ticket>
</output>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="10">Order sent to P2</text>
<text align="right" length="10">${ticket.printTotal()}</text>
</line>
<line>
<text align="center" length="20">Thank you.</text>
</line>
</display>
<ticket printer="2">
<line></line>
<line></line>
<line size = "1"><text bold = "true" align="center" length="42">Printer 2</text></line>
<line></line>
<line size = "1"><text>Order : </text><text bold = "true">${ticket.getPickupId()}</text></line>
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
<line><text align="left" length="15">Sent from: </text><text>${ticket.getHost()}</text></line>
<line><text align="left" length="15">Server:</text><text>${ticket.printUser()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().getName()}</text></line>
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().getTaxid()}</text></line>
#end
#if (${tickettext.place} != ${place})
<line><text align="left" length="15">Table:</text><text>${place}</text></line>
#end
<line></line>
<line><text align ="left" length="17">Item</text><text align ="right" length="5"></text></line>
<line><text>------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
#if($ticketline.printPrinter().equals("2"))
#if($ticketline.getProperty("ticket.updated").equals("true"))
#if ($ticketline.isProductCom())
<line size="1"><text align ="left" length="37">--${ticketline.printName()}</text></line>
#else
<line size="1">
<text align ="left" length="5"> ${ticketline.printMultiply()}x</text>
<text align ="left" length="37"> ${ticketline.printName()}</text>
</line>
#end
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- Add the following lines only for 2.30 Attributes -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
<line></line>
#end
${ticketline.setProperty("ticket.updated", "false")}
#end
#end
#end
</ticket>
</output>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="10">Order sent to P3</text>
<text align="right" length="10">${ticket.printTotal()}</text>
</line>
<line>
<text align="center" length="20">Thank you.</text>
</line>
</display>
<ticket printer="3">
<line></line>
<line></line>
<line size = "1"><text bold = "true" align="center" length="42">Printer 3</text></line>
<line></line>
<line size = "1"><text>Order : </text><text bold = "true">${ticket.getPickupId()}</text></line>
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
<line><text align="left" length="15">Sent from: </text><text>${ticket.getHost()}</text></line>
<line><text align="left" length="15">Server:</text><text>${ticket.printUser()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().getName()}</text></line>
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().getTaxid()}</text></line>
#end
#if (${tickettext.place} != ${place})
<line><text align="left" length="15">Table:</text><text>${place}</text></line>
#end
<line></line>
<line><text align ="left" length="17">Item</text><text align ="right" length="5"></text></line>
<line><text>------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
#if($ticketline.printPrinter().equals("3"))
#if($ticketline.getProperty("ticket.updated").equals("true"))
#if ($ticketline.isProductCom())
<line size="1"><text align ="left" length="37">--${ticketline.printName()}</text></line>
#else
<line size="1">
<text align ="left" length="5"> ${ticketline.printMultiply()}x</text>
<text align ="left" length="37"> ${ticketline.printName()}</text>
</line>
#end
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- Add the following lines only for 2.30 Attributes -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
<line></line>
#end
${ticketline.setProperty("ticket.updated", "false")}
#end
#end
#end
</ticket>
</output>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="10">Order sent to P4</text>
<text align="right" length="10">${ticket.printTotal()}</text>
</line>
<line>
<text align="center" length="20">Thank you.</text>
</line>
</display>
<ticket printer="4">
<line></line>
<line></line>
<line size = "1"><text bold = "true" align="center" length="42">Printer 4</text></line>
<line></line>
<line size = "1"><text>Order : </text><text bold = "true">${ticket.getPickupId()}</text></line>
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
<line><text align="left" length="15">Sent from: </text><text>${ticket.getHost()}</text></line>
<line><text align="left" length="15">Server:</text><text>${ticket.printUser()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().getName()}</text></line>
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().getTaxid()}</text></line>
#end
#if (${tickettext.place} != ${place})
<line><text align="left" length="15">Table:</text><text>${place}</text></line>
#end
<line></line>
<line><text align ="left" length="17">Item</text><text align ="right" length="5"></text></line>
<line><text>------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
#if($ticketline.printPrinter().equals("4"))
#if($ticketline.getProperty("ticket.updated").equals("true"))
#if ($ticketline.isProductCom())
<line size="1"><text align ="left" length="37">--${ticketline.printName()}</text></line>
#else
<line size="1">
<text align ="left" length="5"> ${ticketline.printMultiply()}x</text>
<text align ="left" length="37"> ${ticketline.printName()}</text>
</line>
#end
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- Add the following lines only for 2.30 Attributes -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
<line></line>
#end
${ticketline.setProperty("ticket.updated", "false")}
#end
#end
#end
</ticket>
</output>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="10">Order sent to P5</text>
<text align="right" length="10">${ticket.printTotal()}</text>
</line>
<line>
<text align="center" length="20">Thank you.</text>
</line>
</display>
<ticket printer="5">
<line></line>
<line></line>
<line size = "1"><text bold = "true" align="center" length="42">Printer 5</text></line>
<line></line>
<line size = "1"><text>Order : </text><text bold = "true">${ticket.getPickupId()}</text></line>
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
<line><text align="left" length="15">Sent from: </text><text>${ticket.getHost()}</text></line>
<line><text align="left" length="15">Server:</text><text>${ticket.printUser()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().getName()}</text></line>
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().getTaxid()}</text></line>
#end
#if (${tickettext.place} != ${place})
<line><text align="left" length="15">Table:</text><text>${place}</text></line>
#end
<line></line>
<line><text align ="left" length="17">Item</text><text align ="right" length="5"></text></line>
<line><text>------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
#if($ticketline.printPrinter().equals("5"))
#if($ticketline.getProperty("ticket.updated").equals("true"))
#if ($ticketline.isProductCom())
<line size="1"><text align ="left" length="37">--${ticketline.printName()}</text></line>
#else
<line size="1">
<text align ="left" length="5"> ${ticketline.printMultiply()}x</text>
<text align ="left" length="37"> ${ticketline.printName()}</text>
</line>
#end
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- Add the following lines only for 2.30 Attributes -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
<line></line>
#end
${ticketline.setProperty("ticket.updated", "false")}
#end
#end
#end
</ticket>
</output>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="10">Order sent to P6</text>
<text align="right" length="10">${ticket.printTotal()}</text>
</line>
<line>
<text align="center" length="20">Thank you.</text>
</line>
</display>
<ticket printer="6">
<line></line>
<line></line>
<line size = "1"><text bold = "true" align="center" length="42">Printer 6</text></line>
<line></line>
<line size = "1"><text>Order : </text><text bold = "true">${ticket.getPickupId()}</text></line>
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
<line><text align="left" length="15">Sent from: </text><text>${ticket.getHost()}</text></line>
<line><text align="left" length="15">Server:</text><text>${ticket.printUser()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().getName()}</text></line>
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().getTaxid()}</text></line>
#end
#if (${tickettext.place} != ${place})
<line><text align="left" length="15">Table:</text><text>${place}</text></line>
#end
<line></line>
<line><text align ="left" length="17">Item</text><text align ="right" length="5"></text></line>
<line><text>------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
#if($ticketline.printPrinter().equals("6"))
#if($ticketline.getProperty("ticket.updated").equals("true"))
#if ($ticketline.isProductCom())
<line size="1"><text align ="left" length="37">--${ticketline.printName()}</text></line>
#else
<line size="1">
<text align ="left" length="5"> ${ticketline.printMultiply()}x</text>
<text align ="left" length="37"> ${ticketline.printName()}</text>
</line>
#end
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- Add the following lines only for 2.30 Attributes -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
<line></line>
#end
${ticketline.setProperty("ticket.updated", "false")}
#end
#end
#end
</ticket>
</output>
@@ -0,0 +1,270 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2019 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line><text align="left" length="8">Total</text><text align="right" length="12">${ticket.printTotal()}</text></line>
<line><text align="center" length="20">Thank you</text></line>
</display>
<ticket>
<image>Printer.Ticket.Logo</image>
<line>
</line>
#if (${ticket.printTicketHeaderLine1()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine1()}</text></line>
#end
#if (${ticket.printTicketHeaderLine2()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine2()}</text></line>
#end
#if (${ticket.printTicketHeaderLine3()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine3()}</text></line>
#end
#if (${ticket.printTicketHeaderLine4()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine4()}</text></line>
#end
#if (${ticket.printTicketHeaderLine5()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine5()}</text></line>
#end
#if (${ticket.printTicketHeaderLine6()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine6()}</text></line>
#end
<line><text align="center" length="42">Printer.Ticket</text></line>
<line></line>
#if (${ticket.ticketType} == 0)
<line><text align="left" length="15">Receipt:</text><text>${ticket.printId()}</text></line>
#end
#if (${ticket.ticketType} == 1)
<line><text align="left" length="15">Refund:</text><text>${ticket.printId()}</text></line>
#end
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
<line><text align="left" length="15">Terminal: </text><text>${ticket.getHost()}</text></line>
<line><text align="left" length="15">Served by:</text><text>${ticket.printUser()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().printTaxCustomerID()}</text></line>
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().printName()}</text></line>
<line><text align="left" length="15">Address:</text><text>${ticket.getCustomer().printAddress()}</text></line>
<line><text align="left" length="15">Postal:</text><text>${ticket.getCustomer().printPostal()}</text></line>
<line><text align="left" length="15">Phone:</text><text>${ticket.getCustomer().printPhone1()}</text></line>
<line><text align="left" length="15">Current Debt:</text><text>${ticket.getCustomer().printCurDebt()}</text></line>
<line><text align="left" length="15">Balance:</text><text>${ticket.getCustomer().printCurBal()}</text></line>
<line><text align="left" length="15">TaxId:</text><text>${ticket.getCustomer().getTaxid()}</text></line>
#end
#if (${tickettext.place} != ${place})
<line><text align="left" length="15">Table:</text><text>${place}</text></line>
#end
<line></line>
<line>
<text align ="left" length="17">Item</text>
<text align ="right" length="8">Price</text>
<text align ="right" length="7">Qty</text>
<text align ="right" length="10">Value</text>
</line>
<line><text align="left" length="42">------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
<line>
#if ($ticketline.isProductCom())
<text align ="left" length="17">*${ticketline.printName()}</text>
#else
<text align ="left" length="17">${ticketline.printName()}</text>
#end
<!-- Print line to show Prices pre-Tax
<text align ="right" length="8">${ticketline.printPrice()}</text>
<text align ="right" length="7">x${ticketline.printMultiply()}</text>
<text align ="right" length="8">${ticketline.printSubValue()}</text>
</line>
-->
<!-- Print line to show Prices inc. Tax -->
<text align ="right" length="8">${ticketline.printPriceTax()}</text>
<text align ="right" length="7">x${ticketline.printMultiply()}</text>
<text align ="right" length="10">${ticketline.printValue()}</text>
</line>
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- un-comment line below if you want to add a product's barcode -->
<!-- <line><text align ="left" length="12">Barcode : </text>${ticketline.printCode()}</text></line> -->
<!-- un-comment line below if you want to add a product's Reference -->
<!-- <line><text align ="left" length="12">Reference : </text>${ticketline.printReference()}</text></line> -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
#end
#end
<line><text align="left" length="42">------------------------------------------</text></line>
<line><text>Items count: </text><text align ="left" length="14">${ticket.printArticlesCount()}</text></line>
<line></line>
<line>
<text align ="left" bold="true" length="16">Subtotal</text>
<text align ="right" length="26">${ticket.printSubTotal()}</text>
</line>
<line>
<text align ="left" length="16">Tax</text>
<text align ="right" length="26">${ticket.printTax()}</text>
</line>
<line></line>
<line size="1">
<text align ="left" length="16" bold="true">Balance Due</text>
<text align ="right" length="26" bold="true">${ticket.printTotal()}</text>
</line>
<line></line>
#foreach ($taxinfo in $taxes)
#set( $taxline = $ticket.getTaxLine($taxinfo))
<line>
<text align ="left" length="18">${taxline.getTaxInfo()}</text>
<text align ="right" length="12">${taxline.printSubTotal()}</text>
<text align ="right" length="12">${taxline.printTax()}</text>
</line>
#end
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<line><text bold="true">Cash</text></line>
<line><text align="left" length="22">Tendered:</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
<line><text align="left" length="22">Change:</text><text align ="right" length="20">${paymentline.printChange()}</text></line>
#end
#if ($paymentline.name == "cashrefund")
<line><text align="left" length="22" bold="true">Refund</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
#end
#if ($paymentline.name == "cheque")
<line><text align="left" length="22" bold="true">Cheque</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
#end
#if ($paymentline.name == "chequerefund")
<line><text align="left" length="22" bold="true">Cheque Refund</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
#end
#if ($paymentline.name == "voucherin")
<line><text align="left" length="22" bold="true">Voucher : ${paymentline.printVoucherNumber()}</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
#end
#if ($paymentline.name == "voucherout")
<line><text align="left" length="22" bold="true">Voucher Refund : ${paymentline.printVoucherNumber()}</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
#end
#if ($paymentline.name == "slip")
<line><text align="left" length="22" bold="true">Slip</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
#end
#if ($paymentline.name == "free")
<line><text align="left" length="22" bold="true">Free</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
#end
#if ($paymentline.name == "debt")
<line><text align="left" length="22" bold="true">On Account</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
#end
#end
#if (${ticket.printTicketFooterLine1()} != "")
<line></line>
<line><text align="center" length="42">${ticket.printTicketFooterLine1()}</text></line>
<line><text>==========================================</text></line>
#end
#if (${ticket.printTicketFooterLine2()} != "")
<line><text>${ticket.printTicketFooterLine2()}</text></line>
#end
#if (${ticket.printTicketFooterLine3()} != "")
<line><text>${ticket.printTicketFooterLine3()}</text></line>
#end
#if (${ticket.printTicketFooterLine4()} != "")
<line><text>${ticket.printTicketFooterLine4()}</text></line>
#end
#if (${ticket.printTicketFooterLine5()} != "")
<line><text>${ticket.printTicketFooterLine5()}</text></line>
#end
#if (${ticket.printTicketFooterLine6()} != "")
<line><text>${ticket.printTicketFooterLine6()}</text></line>
#end
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "ccard")
#if ($paymentline.chipAndPin)
<line size="1"><text align="center" length="42" bold="true">CARD SALE</text></line>
<line size="1"><text>${paymentline.getCardName()}</text></line>
<line><text>${paymentline.printCardNumber()}</text></line>
<line></line>
<line size="1"><text align="left" length="10">AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
<line><text>Tranx ID : </text><text>${paymentline.printTransactionID()}</text></line>
<line><text>Auth Code : </text><text>${paymentline.printAuthorization()}</text></line>
<line><text>Verified By : </text><text>${paymentline.printVerification()}</text></line>
<line><text>Card # (last 4) : </text><text>${paymentline.printLastFourDigits()}</text></line>
#end
#if (!$paymentline.chipAndPin)
<line size="1"><text align="center" length="42" bold="true">CARD SALE</text></line>
<line size="1"><text>${paymentline.getCardName()}</text></line>
<line><text>${paymentline.printCardNumber()}</text></line>
<line></line>
<line size="1"><text align="left" length="10">AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
<line><text align ="left" length="22">Expiration Date:</text><text>${paymentline.printExpirationDate()}</text></line>
<line><text>Operation : </text><text>${paymentline.printTransactionID()}</text></line>
<line><text>Auth Code : </text><text>${paymentline.printAuthorization()}</text></line>
<line></line>
#end
#if ($ticket.hasTip())
<line><text align ="left" length="16">Tip:</text><text align ="right" length="26">_______________</text></line>
<line></line>
<line size="1"><text align ="left" length="16" bold="false">Total</text><text align ="right" length="26" bold="false">_______________</text></line>
<line></line>
<line></line>
<line size="1"><text align ="left" length="42" bold="false">__________________________________________</text></line>
<line size="1"><text align ="center" length="42" bold="false">Signature</text></line>
#else
<line size="1"><text align ="left" length="16" bold="true">Total</text><text align ="right" length="26" bold="true">${paymentline.printTotal()}</text></line>
#end
#end
#if ($paymentline.name == "ccardrefund")
<line size="1"><text align="center" length="42" bold="true">CARD REFUND</text></line>
<line size="1"><text>${paymentline.getCardName()}</text></line>
<line><text>${paymentline.printCardNumber()}</text></line>
<line></line>
<line size="1"><text align="left" length="10">AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
<line><text align ="left" length="22">Expiration Date:</text><text>${paymentline.printExpirationDate()}</text></line>
<line><text>Tranx ID : </text><text>${paymentline.printTransactionID()}</text></line>
<line><text>Auth Code : </text><text>${paymentline.printAuthorization()}</text></line>
<line></line>
#end
#end
</ticket>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<opendrawer/>
#end
#if ($paymentline.name == "cashrefund")
<opendrawer/>
#end
#end
</output>
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="8">Total:</text>
<text align="right" length="12">${ticket.printTotal()}</text>
</line>
<line>
<text align="center" length="20">Thank You for your custom</text>
</line>
</display>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<opendrawer/>
#end
#if ($paymentline.name == "cashrefund")
<opendrawer/>
#end
#end
</output>
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
This displays amount tendered and change on customer display
-->
<output>
<display>
#foreach ($paymentline in $ticket.payments)
<line>
<text align="left" length="8">Given:</text>
<text align ="right" length="12">${paymentline.printPaid()}</text>
</line>
<line>
<text align="left" length="8">Change:</text>
<text align ="right" length="12">${paymentline.printChange()}</text>
</line>
#end
</display>
</output>
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
#if ($ticketline.isProductCom())
<text align="left" length="15">*${ticketline.printName()}</text>
#else
<text align="left" length="15">${ticketline.printName()}</text>
#end
<text align="right" length="5">x${ticketline.printMultiply()}</text>
</line>
<line>
<!-- These lines for values without tax
<text align="right" length="10">${ticketline.printPrice()}</text>
<text align="right" length="10">${ticketline.printSubValue()}</text>
-->
<!-- These lines for values with tax -->
<text align ="right" length="10">${ticketline.printPriceTax()}</text>
<text align ="right" length="10">${ticketline.printValue()}</text>
</line>
</display>
</output>
@@ -0,0 +1,319 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="10">Total</text>
<text align="right" length="10">${ticket.printTotal()}</text>
</line>
<line>
<text align="center" length="20">Thank you for your custom</text>
</line>
</display>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
#if (${ticket.printTicketHeaderLine1()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine1()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine2()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine2()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine3()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine3()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine4()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine4()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine5()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine5()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine6()} != "")
<line>
<text align="center" length="42">${ticket.printTicketHeaderLine6()}</text>
</line>
#end
<line>
<text align="center" length="42">Printer.TicketNew</text>
</line>
<line></line>
#if (${ticket.ticketType} == 0)
<line>
<text align="left" length="15">Receipt:</text>
<text>${ticket.printId()}</text>
</line>
#end
#if (${ticket.ticketType} == 1)
<line>
<text align="left" length="15">Refund:</text>
<text>${ticket.printId()}</text>
</line>
#end
<line>
<text align="left" length="15">Date:</text>
<text>${ticket.printDate()}</text>
</line>
#if ($ticket.getCustomer())
<line>
<text align="left" length="15">Customer:</text>
<text>${ticket.getCustomer().printName()}</text>
</line>
<line>
<text align="left" length="15">Account #:</text>
<text>${ticket.getCustomer().printTaxid()}</text>
</line>
<line>
<text align="left" length="15">Current Debt:</text>
<text>${ticket.getCustomer().printCurDebt()}</text>
</line>
#end
#if (${tickettext.place} != ${place})
<line>
<text align="left" length="15">Table:</text>
<text>${place}</text>
</line>
#end
<line>
<text align="left" length="15">Served by:</text>
<text>${ticket.printUser()}</text>
</line>
<line></line>
<line>
<text align ="left" length="17">Item</text>
<text align ="right" length="8">Price</text>
<text align ="right" length="7">Qty</text>
<text align ="right" length="10">Value</text>
</line>
<line>
<text>------------------------------------------</text>
</line>
#foreach ($ticketline in $ticket.getLines())
<line>
#if ($ticketline.isProductCom())
<text align ="left" length="17">*${ticketline.printName()}</text>
#else
<text align ="left" length="17">${ticketline.printName()}</text>
#end
<text align ="right" length="8">${ticketline.printPriceTax()}</text>
<text align ="right" length="7">x${ticketline.printMultiply()}</text>
<text align ="right" length="10">${ticketline.printValue()}</text>
</line>
#if ($ticketline.productAttSetInstId)
<line>
<text align ="left" length="42">${ticketline.productAttSetInstDesc}</text>
</line>
#end
#end
<line>
<text>------------------------------------------</text>
</line>
<line>
<text>Items count: </text>
<text align ="left" length="14">${ticket.printArticlesCount()}</text>
</line>
<line></line>
<line size="1">
<text align ="left" length="16" bold="true">Total</text>
<text align ="right" length="26" bold="true">${ticket.printTotal()}</text>
</line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<line>
<text bold="true">Cash</text>
</line>
<line>
<text align="left" length="22">Tendered:</text>
<text align ="right" length="20">${paymentline.printPaid()}</text>
</line>
<line>
<text align="left" length="22">Change:</text>
<text align ="right" length="20">${paymentline.printChange()}</text>
</line>
#end
#if ($paymentline.name == "cashrefund")
<line>
<text bold="true">Refund</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "ccard")
<line>
<text bold="true">Card</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
<line>
<text align ="left" length="22">Card Number:</text>
<text>${paymentline.printCardNumber()}</text>
</line>
<line>
<text align ="left" length="22">Expiration Date:</text>
<text>${paymentline.printExpirationDate()}</text>
</line>
<line>
<text align ="left" length="22">Operation:</text>
<text>${paymentline.printTransactionID()}</text>
</line>
<line>
<text align ="left" length="22">Authorisation:</text>
<text>${paymentline.printAuthorization()}</text>
</line>
#end
#if ($paymentline.name == "ccardrefund")
<line>
<text bold="true">Card Refund</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "cheque")
<line></line>
<line>
<text bold="true">Cheque</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "chequerefund")
<line></line>
<line>
<text bold="true">Cheque Refund</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "voucherin")
<line></line>
<line>
<text bold="true">Voucher</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "voucherout")
<line></line>
<line>
<text bold="true">Note Refund</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "free")
<line></line>
<line>
<text bold="true">Free</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
#end
#if ($paymentline.name == "debt")
<line></line>
<line>
<text bold="true">On Account</text>
</line>
<line>
<text align ="right" length="42">${paymentline.printTotal()}</text>
</line>
#end
#end
<line></line>
<line>
<text align ="left" bold="true" length="16">Nett of Tax:</text>
<text align ="right" length="26">${ticket.printSubTotal()}</text>
</line>
<line>
<text align ="left" length="16">Taxes:</text>
<text align ="right" length="26">${ticket.printTax()}</text>
</line>
#foreach ($taxinfo in $taxes)
<line>
<text align ="left" length="18">${taxinfo.getTaxInfo()}</text>
<text align ="right" length="12">${taxinfo.printSubTotal()}</text>
<text align ="right" length="12">${taxinfo.printTax()}</text>
</line>
#end
<line></line>
<line>
<text align="center" length="42">${ticket.printTicketFooterLine1()}</text>
</line>
<line>
<text>==========================================</text>
</line>
#end
#if (${ticket.printTicketFooterLine2()} != "")
<line>
<text>${ticket.printTicketFooterLine2()}</text>
</line>
#end
#if (${ticket.printTicketFooterLine3()} != "")
<line>
<text>${ticket.printTicketFooterLine3()}</text>
</line>
#end
#if (${ticket.printTicketFooterLine4()} != "")
<line>
<text>${ticket.printTicketFooterLine4()}</text>
</line>
#end
#if (${ticket.printTicketFooterLine5()} != "")
<line>
<text>${ticket.printTicketFooterLine5()}</text>
</line>
#end
#if (${ticket.printTicketFooterLine6()} != "")
<line>
<text>${ticket.printTicketFooterLine6()}</text>
</line>
#end
</ticket>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<opendrawer/>
#end
#if ($paymentline.name == "cashrefund")
<opendrawer/>
#end
#end
</output>
@@ -0,0 +1,245 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line><text align="left" length="8">Total</text><text align="right" length="12">${ticket.printTotal()}</text></line>
<line><text align="center" length="20">Thank you</text></line>
</display>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
#if (${ticket.printTicketHeaderLine1()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine1()}</text></line>
#end
#if (${ticket.printTicketHeaderLine2()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine2()}</text></line>
#end
#if (${ticket.printTicketHeaderLine3()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine3()}</text></line>
#end
#if (${ticket.printTicketHeaderLine4()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine4()}</text></line>
#end
#if (${ticket.printTicketHeaderLine5()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine5()}</text></line>
#end
#if (${ticket.printTicketHeaderLine6()} != "")
<line><text align="center" length="42">${ticket.printTicketHeaderLine6()}</text></line>
#end
<line><text align="center" length="42">Printer.TicketPreview</text></line>
<line></line>
#if (${ticket.ticketType} == 0)
<line><text align="left" length="15">Receipt:</text><text>${ticket.printId()}</text></line>
#end
#if (${ticket.ticketType} == 1)
<line><text align="left" length="15">Refund:</text><text>${ticket.printId()}</text></line>
#end
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
<line><text align="left" length="15">Terminal: </text><text>${ticket.getHost()}</text></line>
<line><text align="left" length="15">Served by:</text><text>${ticket.printUser()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().printTaxCustomerID()}</text></line>
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().printName()}</text></line>
<line><text align="left" length="15">Address:</text><text>${ticket.getCustomer().printAddress()}</text></line>
<line><text align="left" length="15">Postal:</text><text>${ticket.getCustomer().printPostal()}</text></line>
<line><text align="left" length="15">Phone:</text><text>${ticket.getCustomer().printPhone1()}</text></line>
<line><text align="left" length="15">Current Debt:</text><text>${ticket.getCustomer().printCurDebt()}</text></line>
<line><text align="left" length="15">Balance:</text><text>${ticket.getCustomer().printCurBal()}</text></line>
#end
#if (${tickettext.place} != ${place})
<line><text align="left" length="15">Table:</text><text>${place}</text></line>
#end
<line></line>
<line>
<text align ="left" length="17">Item</text>
<text align ="right" length="8">Price</text>
<text align ="right" length="7">Qty</text>
<text align ="right" length="10">Value</text>
</line>
<line><text align="left" length="42">------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
<line>
#if ($ticketline.isProductCom())
<text align ="left" length="17">*${ticketline.printName()}</text>
#else
<text align ="left" length="17">${ticketline.printName()}</text>
#end
<!-- Print line to show Prices pre-Tax
<text align ="right" length="8">${ticketline.printPrice()}</text>
<text align ="right" length="7">x${ticketline.printMultiply()}</text>
<text align ="right" length="8">${ticketline.printSubValue()}</text>
</line>
-->
<!-- Print line to show Prices inc. Tax -->
<text align ="right" length="8">${ticketline.printPriceTax()}</text>
<text align ="right" length="7">x${ticketline.printMultiply()}</text>
<text align ="right" length="10">${ticketline.printValue()}</text>
</line>
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- un-comment line below if you want to add a product's barcode -->
<!-- <line><text align ="left" length="12">Barcode : </text>${ticketline.printCode()}</text></line> -->
<!-- un-comment line below if you want to add a product's Reference -->
<!-- <line><text align ="left" length="12">Reference : </text>${ticketline.printReference()}</text></line> -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
#end
#end
<line><text align="left" length="42">------------------------------------------</text></line>
<line><text>Items count: </text><text align ="left" length="14">${ticket.printArticlesCount()}</text></line>
<line></line>
<line>
<text align ="left" bold="true" length="16">Subtotal</text>
<text align ="right" length="26">${ticket.printSubTotal()}</text>
</line>
<line>
<text align ="left" length="16">Tax</text>
<text align ="right" length="26">${ticket.printTax()}</text>
</line>
<line></line>
<line size="1">
<text align ="left" length="16" bold="true">Balance Due</text>
<text align ="right" length="26" bold="true">${ticket.printTotal()}</text>
</line>
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<line><text bold="true">Cash</text></line>
<line><text align="left" length="22">Tendered:</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
<line><text align="left" length="22">Change:</text><text align ="right" length="20">${paymentline.printChange()}</text></line>
#end
#if ($paymentline.name == "cashrefund")
<line><text align="left" length="22" bold="true">Refund</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "cheque")
<line><text align="left" length="22" bold="true">Cheque</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "chequerefund")
<line><text align="left" length="22" bold="true">Cheque Refund</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "voucherin")
<line><text align="left" length="22" bold="true">Voucher</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
#end
#if ($paymentline.name == "voucherout")
<line><text align="left" length="22" bold="true">Voucher Refund<text align ="right" length="20">${paymentline.printPaid()}</text></line>
#end
#if ($paymentline.name == "slip")
<line><text align="left" length="22" bold="true">Slip</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "free")
<line><text align="left" length="22" bold="true">Free</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "debt")
<line><text align="left" length="22" bold="true">On Account</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#end
#if (${ticket.printTicketFooterLine1()} != "")
<line></line>
<line><text align="center" length="42">${ticket.printTicketFooterLine1()}</text></line>
<line><text>==========================================</text></line>
#end
#if (${ticket.printTicketFooterLine2()} != "")
<line><text>${ticket.printTicketFooterLine2()}</text></line>
#end
#if (${ticket.printTicketFooterLine3()} != "")
<line><text>${ticket.printTicketFooterLine3()}</text></line>
#end
#if (${ticket.printTicketFooterLine4()} != "")
<line><text>${ticket.printTicketFooterLine4()}</text></line>
#end
#if (${ticket.printTicketFooterLine5()} != "")
<line><text>${ticket.printTicketFooterLine5()}</text></line>
#end
#if (${ticket.printTicketFooterLine6()} != "")
<line><text>${ticket.printTicketFooterLine6()}</text></line>
#end
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "ccard")
#if ($paymentline.chipAndPin)
<line size="1"><text align="center" length="42" bold="true">CARD SALE</text></line>
<line><text align = "center" length="42" bold="true">A card payment was received</text></line>
<line></line>
<line size="1"><text align="left" length="10">AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
#end
#if (!$paymentline.chipAndPin)
<line size="1"><text align="center" length="42" bold="true">CARD SALE</text></line>
<line><text align = "center" length="42" bold="true">A card payment was received</text></line>
<line></line>
<line size="1"><text align="left" length="10">AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
#end
#if ($ticket.hasTip())
<line><text align ="left" length="16">Tip:</text><text align ="right" length="26">_______________</text></line>
<line></line>
<line size="1"><text align ="left" length="16" bold="false">Total</text><text align ="right" length="26" bold="false">_______________</text></line>
<line></line>
<line></line>
<line size="1"><text align ="left" length="42" bold="false">__________________________________________</text></line>
<line size="1"><text align ="center" length="42" bold="false">Signature</text></line>
#else
<line size="1"><text align ="left" length="16" bold="true">Total</text><text align ="right" length="26" bold="true">${paymentline.printTotal()}</text></line>
#end
#end
#if ($paymentline.name == "ccardrefund")
<line size="1"><text align="center" length="42" bold="true">CARD SALE</text></line>
<line></line>
<line><text align = "center" length="42" bold="true">A card payment was received</text></line>
<line></line>
<line size="1"><text align="left" length="10">AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
#end
#end
</ticket>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<opendrawer/>
#end
#if ($paymentline.name == "cashrefund")
<opendrawer/>
#end
#end
</output>
@@ -0,0 +1,243 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Contributed by: Julian Roberts, Brockley Estate, Tasmania
Additional changes: uniCenta 2015
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line><text align="left" length="8">Total</text><text align="right" length="12">${ticket.printTotal()}</text></line>
<line><text align="center" length="20">Thank you</text></line>
</display>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
#if (${ticket.printTicketHeaderLine1()} != "")
<line><text align="center" length="126">${ticket.printTicketHeaderLine1()}</text></line>
#end
#if (${ticket.printTicketHeaderLine2()} != "")
<line><text align="center" length="126">${ticket.printTicketHeaderLine2()}</text></line>
#end
#if (${ticket.printTicketHeaderLine3()} != "")
<line><text align="center" length="126">${ticket.printTicketHeaderLine3()}</text></line>
#end
#if (${ticket.printTicketHeaderLine4()} != "")
<line><text align="center" length="126">${ticket.printTicketHeaderLine4()}</text></line>
#end
#if (${ticket.printTicketHeaderLine5()} != "")
<line><text align="center" length="126">${ticket.printTicketHeaderLine5()}</text></line>
#end
#if (${ticket.printTicketHeaderLine6()} != "")
<line><text align="center" length="126">${ticket.printTicketHeaderLine6()}</text></line>
#end
<line><text align="center" length="126">Printer.TicketPreview</text></line>
<line></line>
#if (${ticket.ticketType} == 0)
<line><text align="left" length="15">Receipt:</text><text>${ticket.printId()}</text></line>
#end
#if (${ticket.ticketType} == 1)
<line><text align="left" length="15">Refund:</text><text>${ticket.printId()}</text></line>
#end
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
<line><text align="left" length="15">Terminal: </text><text>${ticket.getHost()}</text></line>
<line><text align="left" length="15">Served by:</text><text>${ticket.printUser()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().printTaxCustomerID()}</text></line>
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().printName()}</text></line>
<line><text align="left" length="15">Address:</text><text>${ticket.getCustomer().printAddress()}</text></line>
<line><text align="left" length="15">Postal:</text><text>${ticket.getCustomer().printPostal()}</text></line>
<line><text align="left" length="15">Phone:</text><text>${ticket.getCustomer().printPhone1()}</text></line>
<line><text align="left" length="15">Current Debt:</text><text>${ticket.getCustomer().printCurDebt()}</text></line>
<line><text align="left" length="15">Balance:</text><text>${ticket.getCustomer().printCurBal()}</text></line>
#end
#if (${tickettext.place} != ${place})
<line><text align="left" length="15">Table:</text><text>${place}</text></line>
#end
<line></line>
<line>
<text align ="left" length="83">Item</text>
<text align ="right" length="10">Price</text>
<text align ="right" length="5">Qty</text>
<text align ="right" length="10">Value</text>
</line>
<line><text align="left" length="108">------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
<line>
#if ($ticketline.isProductCom())
<text align ="left" length="83">*${ticketline.printName()}</text>
#else
<text align ="left" length="83">${ticketline.printName()}</text>
#end
<!-- Print line to show Prices pre-Tax -->
<text align ="right" length="10">${ticketline.printPrice()}</text>
<text align ="right" length="5">x${ticketline.printMultiply()}</text>
<text align ="right" length="10">${ticketline.printSubValue()}</text>
</line>
<!-- Print line to show Prices inc. Tax
<text align ="right" length="10">${ticketline.printPriceTax()}</text>
<text align ="right" length="5">x${ticketline.printMultiply()}</text>
<text align ="right" length="10">${ticketline.printValue()}</text>
</line>
-->
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="108">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="108">${ticketline.getProperty("notes", "")}</text> </line> -->
<!-- un-comment line below if you want to add a product's barcode -->
<!-- <line><text align ="left" length="30">Barcode : </text>${ticketline.printCode()}</text></line> -->
<!-- un-comment line below if you want to add a product's Reference -->
<!-- <line><text align ="left" length="30">Reference : </text>${ticketline.printReference()}</text></line> -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
#end
#end
<line><text align="left" length="108">------------------------------------------</text></line>
<line><text>Items count: </text><text align ="left" length="14">${ticket.printArticlesCount()}</text></line>
<line></line>
<line>
<text align ="left" bold="true" length="16">Subtotal</text>
<text align ="right" length="26">${ticket.printSubTotal()}</text>
</line>
<line>
<text align ="left" length="16">Tax</text>
<text align ="right" length="26">${ticket.printTax()}</text>
</line>
<line></line>
<line size="1">
<text align ="left" length="16" bold="true">Balance Due</text>
<text align ="right" length="26" bold="true">${ticket.printTotal()}</text>
</line>
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<line><text bold="true">Cash</text></line>
<line><text align="left" length="22">Tendered:</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
<line><text align="left" length="22">Change:</text><text align ="right" length="20">${paymentline.printChange()}</text></line>
#end
#if ($paymentline.name == "cashrefund")
<line><text align="left" length="22" bold="true">Refund</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "cheque")
<line><text align="left" length="22" bold="true">Cheque</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "chequerefund")
<line><text align="left" length="22" bold="true">Cheque Refund</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "voucherin")
<line><text align="left" length="22" bold="true">Voucher</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "voucherout")
<line><text align="left" length="22" bold="true">Note Refund</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "slip")
<line><text align="left" length="22" bold="true">Slip</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "free")
<line><text align="left" length="22" bold="true">Free</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "debt")
<line><text align="left" length="22" bold="true">On Account</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#end
#if (${ticket.printTicketFooterLine1()} != "")
<line></line>
<line><text align="center" length="108">${ticket.printTicketFooterLine1()}</text></line>
<line><text>==========================================</text></line>
#end
#if (${ticket.printTicketFooterLine2()} != "")
<line><text>${ticket.printTicketFooterLine2()}</text></line>
#end
#if (${ticket.printTicketFooterLine3()} != "")
<line><text>${ticket.printTicketFooterLine3()}</text></line>
#end
#if (${ticket.printTicketFooterLine4()} != "")
<line><text>${ticket.printTicketFooterLine4()}</text></line>
#end
#if (${ticket.printTicketFooterLine5()} != "")
<line><text>${ticket.printTicketFooterLine5()}</text></line>
#end
#if (${ticket.printTicketFooterLine6()} != "")
<line><text>${ticket.printTicketFooterLine6()}</text></line>
#end
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "ccard")
#if ($paymentline.chipAndPin)
<line size="1"><text align="center" length="126" bold="true">CARD SALE</text></line>
<line><text align = "center" length="126" bold="true">A card payment was received</text></line>
<line></line>
<line size="1"><text align="left" length="10">AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
#end
#if (!$paymentline.chipAndPin)
<line size="1"><text align="center" length="126" bold="true">CARD SALE</text></line>
<line><text align = "center" length="126" bold="true">A card payment was received</text></line>
<line></line>
<line size="1"><text align="left" length="10">AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
#end
#if ($ticket.hasTip())
<line><text align ="left" length="16">Tip:</text><text align ="right" length="26">_______________</text></line>
<line></line>
<line size="1"><text align ="left" length="16" bold="false">Total</text><text align ="right" length="26" bold="false">_______________</text></line>
<line></line>
<line></line>
<line size="1"><text align ="left" length="126" bold="false">__________________________________________</text></line>
<line size="1"><text align ="center" length="126" bold="false">Signature</text></line>
#else
<line size="1"><text align ="left" length="16" bold="true">Total</text><text align ="right" length="26" bold="true">${paymentline.printTotal()}</text></line>
#end
#end
#if ($paymentline.name == "ccardrefund")
<line size="1"><text align="center" length="126" bold="true">CARD SALE</text></line>
<line></line>
<line><text align = "center" length="126" bold="true">A card payment was received</text></line>
<line></line>
<line size="1"><text align="left" length="10">AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
#end
#end
</ticket>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<opendrawer/>
#end
#if ($paymentline.name == "cashrefund")
<opendrawer/>
#end
#end
</output>
@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="8">Sent!</text>
<text align="right" length="12">${ticket.printTotal()}</text>
</line>
<line>
<text align="center" length="20">Thank you</text>
</line>
</display>
<ticket printer = "2">
<line></line>
<line></line>
<line size = "1">
<text bold = "true" align="center" length="42">ORDER</text>
</line>
<line></line>
#if (${tickettext.place} != ${place})
<line size ="1">
<text bold="true" align="left" length="15">Table:</text>
<text bold="true">${place}</text>
</line>
#end
<line>
<text align="left" length="15">Server:</text>
<text>${ticket.printUser()}</text>
</line>
<line>
<text align="left" length="15">Date:</text>
<text>${ticket.printDate()}</text>
</line>
<line>
<text align="left" length="15">Receipt:</text>
<text>${ticket.printId()}</text>
</line>
#if ($ticket.getCustomer())
<line>
<text align="left" length="15">Customer:</text>
<text>${ticket.getCustomer().getName()}</text>
</line>
<line>
<text align="left" length="15">Account #:</text>
<text>${ticket.getCustomer().getTaxid()}</text>
</line>
#end
<line></line>
<line>
<text align ="left" length="17">Item</text>
<text align ="right" length="5"></text>
</line>
<line>
<text>------------------------------------------</text>
</line>
#foreach ($ticketline in $ticket.getLines())
<!-- Show Product's assigned Printer
<line><text align="left" length="15">Printer :</text><text>${ticketline.printPrinter()}</text></line>-->
#if(($ticketline.printPrinter()) && ($ticketline.getProperty("sendstatus").equals("No")))
<line size = "1">
<text align ="left" length="5">${ticketline.printMultiply()}x</text>
#if ($ticketline.isProductCom())
<text align ="left" length="37">--${ticketline.printName()}</text>
#else
<text align ="left" length="37">${ticketline.printName()}</text>
#end
</line>
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
#if ($ticketline.productAttSetInstId)
<line>
<text align ="left" length="42"> ${ticketline.productAttSetInstDesc}</text>
</line>
<line></line>
#end
#end
#end
<line>
<text>------------------------------------------</text>
</line>
</ticket>
</output>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line>
<text align="left" length="8">Total:</text>
<text align="right" length="12">${ticket.printTotal()}</text>
</line>
<line>
<text align="center" length="20">Thank You for your custom</text>
</line>
</display>
</output>
@@ -0,0 +1,259 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Contributed by: Julian Roberts, Brockley Estate, Tasmania
Additional changes: uniCenta 2015
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<output>
<display>
<line><text align="left" length="10">Total</text><text align="right" length="10">${ticket.printTotal()}</text></line>
<line><text align="center" length="20">Thank you for your custom</text></line>
</display>
<ticket>
<line></line>
<image>Printer.Ticket.Logo</image>
<line></line>
<line><text align="center" length="126">Tax Invoice</text></line>
<line></line>
#if (${ticket.printTicketHeaderLine1()} != "")
<line>
<text align="center" length="126">${ticket.printTicketHeaderLine1()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine2()} != "")
<line>
<text align="center" length="126">${ticket.printTicketHeaderLine2()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine3()} != "")
<line>
<text align="center" length="126">${ticket.printTicketHeaderLine3()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine4()} != "")
<line>
<text align="center" length="126">${ticket.printTicketHeaderLine4()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine5()} != "")
<line>
<text align="center" length="126">${ticket.printTicketHeaderLine5()}</text>
</line>
#end
#if (${ticket.printTicketHeaderLine6()} != "")
<line>
<text align="center" length="126">${ticket.printTicketHeaderLine6()}</text>
</line>
#end
<line></line>
#if (${ticket.ticketType} == 0)
<line><text align="left" length="15">Receipt:</text><text>${ticket.printId()}</text></line>
#end
#if (${ticket.ticketType} == 1)
<line><text align="left" length="15">Refund:</text><text>${ticket.printId()}</text></line>
#end
<line><text align="left" length="15">Date:</text><text>${ticket.printDate()}</text></line>
#if ($ticket.getCustomer())
<line><text align="left" length="15">Account #:</text><text>${ticket.getCustomer().printTaxCustomerID()}</text></line>
<line><text align="left" length="15">Customer:</text><text>${ticket.getCustomer().printName()}</text></line>
<line><text align="left" length="15">Address:</text><text>${ticket.getCustomer().printAddress()}</text></line>
<line><text align="left" length="15">Postal:</text><text>${ticket.getCustomer().printPostal()}</text></line>
<line><text align="left" length="15">Phone:</text><text>${ticket.getCustomer().printPhone1()}</text></line>
<line><text align="left" length="15">Current Debt:</text><text>${ticket.getCustomer().printCurDebt()}</text></line>
<line><text align="left" length="15">Balance:</text><text>${ticket.getCustomer().printCurBal()}</text></line>
#end
#if (${tickettext.place} != ${place})
<line><text align="left" length="15">Table/Room:</text><text>${place}</text></line>
#end
<line><text align="left" length="15">Served by:</text><text>${ticket.printUser()}</text></line>
<line></line>
<line><text align ="left" length="83">Item</text><text align ="right" length="10">Price</text><text align ="right" length="5">Qty</text><text align ="right" length="10">Value</text></line>
<line><text align="left" length="108">------------------------------------------------------------------------------------------------------------</text></line>
#foreach ($ticketline in $ticket.getLines())
<line>
#if ($ticketline.isProductCom())
<text align ="left" length="83">*${ticketline.printName()}</text>
#else
<text align ="left" length="83">${ticketline.printName()}</text>
#end
<text align ="right" length="10">${ticketline.printPriceTax()}</text>
<text align ="right" length="5">x${ticketline.printMultiply()}</text>
<text align ="right" length="10">${ticketline.printValue()}</text>
</line>
<!-- un-comment line below if you want to add a product's properties -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("ingredients", "")}</text> </line> -->
<!-- un-comment line below if you want to add a user input sales line's Note -->
<!-- <line><text align ="left" length="42">${ticketline.getProperty("notes", "")}</text> </line> -->
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="42">${ticketline.productAttSetInstDesc}</text></line>
#end
#end
<line><text align="left" length="108">------------------------------------------------------------------------------------------------------------</text></line>
<line><text>Items count: </text><text align ="left" length="14">${ticket.printArticlesCount()}</text></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<line><text bold="true">Cash</text></line>
<!-- <line><text align="left" length="22">Tendered:</text><text align ="right" length="20">${paymentline.printTendered()}</text></line> -->
<line><text align="left" length="22">Change:</text><text align ="right" length="20">${paymentline.printChange()}</text></line>
#end
#if ($paymentline.name == "cashrefund")
<line><text bold="true">Refund</text></line>
<line><text align ="right" length="108">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "ccard")
<line><text bold="true">Card</text></line>
<line> <text>Card Type</text></line>
<line>
<text>${paymentline.getCardName()}</text>
</line>
<line><text align ="right" length="108">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "ccardrefund")
<line><text bold="true">Card Refund</text></line>
<line> <text>Card Type</text></line>
<line>
<text>${paymentline.getCardName()}</text>
</line>
<line><text align ="right" length="108">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "cheque")
<line></line>
<line><text bold="true">Cheque</text></line>
<line><text align ="right" length="108">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "chequerefund")
<line></line>
<line><text bold="true">Cheque Refund</text></line>
<line><text align ="right" length="108">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "voucherin")
<line></line>
<line><text bold="true">Voucher</text></line>
<line><text align ="right" length="108">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "voucherout")
<line></line>
<line><text bold="true">Note Refund</text></line>
<line><text align ="right" length="108">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "free")
<line></line>
<line><text bold="true">Free</text></line>
<line><text align ="right" length="108">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "debt")
<line></line>
<line><text bold="true">On Account</text></line>
<line><text align ="right" length="108">${paymentline.printTotal()}</text></line>
#end
#end
<line></line>
<line><text align ="left" length="16">Taxable Items:</text><text align ="right" length="92">${ticket.printSubTotal()}</text></line>
<line><text align ="left" length="22">Tax Included in total:</text><text align ="right" length="86">${ticket.printTax()}</text></line>
<line></line>
<line></line>
<line size="1"><text align ="left" length="16" bold="true">Total</text><text align ="right" length="92" bold="true">${ticket.printTotal()}</text></line>
<!-- #foreach ($taxinfo in $taxes) -->
<!-- #set( $taxline = $ticket.getTaxLine($taxinfo)) -->
<!-- <line> -->
<!-- <text align ="left" length="18">${taxline.getTaxInfo()}</text> -->
<!-- <text align ="right" length="12">${taxline.printSubTotal()}</text> -->
<!-- <text align ="right" length="12">${taxline.printTax()}</text> -->
<!-- </line> -->
<!--#end -->
<line></line>
#if (${ticket.printTicketFooterLine1()} != "")
<line>
<text align="center" length="105">${ticket.printTicketFooterLine1()}</text>
</line>
<line>
<text>==========================================</text>
</line>
#end
#if (${ticket.printTicketFooterLine2()} != "")
<line>
<text>${ticket.printTicketFooterLine2()}</text>
</line>
#end
#if (${ticket.printTicketFooterLine3()} != "")
<line>
<text>${ticket.printTicketFooterLine3()}</text>
</line>
#end
#if (${ticket.printTicketFooterLine4()} != "")
<line>
<text>${ticket.printTicketFooterLine4()}</text>
</line>
#end
#if (${ticket.printTicketFooterLine5()} != "")
<line>
<text>${ticket.printTicketFooterLine5()}</text>
</line>
#end
#if (${ticket.printTicketFooterLine6()} != "")
<line>
<text>${ticket.printTicketFooterLine6()}</text>
</line>
#end
<line></line>
<!-- <line><barcode type="CODE128">${ticket.printId()}</barcode></line> -->
</ticket>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<opendrawer/>
#end
#if ($paymentline.name == "cashrefund")
<opendrawer/>
#end
#end
</output>
@@ -0,0 +1,198 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS.
If not, see <http://www.gnu.org/licenses/>.
-->
<!--
The Administrator Role Permissions has full access to all uniCenta oPOS
functionality.
The Administrator Role should only be used to make system changes.
*** Do not change unless you know what you are doing ***
-->
<permissions>
<class name="plugins.configure"/>
<class name="com.unicenta.pos.panels.JPanelCloseMoney"/>
<class name="com.unicenta.pos.panels.JPanelCloseMoneyReprint"/>
<class name="com.unicenta.pos.panels.JPanelPayments"/>
<class name="com.unicenta.pos.sales.JPanelTicketEdits"/>
<class name="com.unicenta.pos.sales.JPanelTicketSales"/>
<class name="payment.bank"/>
<class name="payment.cash"/>
<class name="payment.cheque"/>
<class name="payment.debt"/>
<class name="payment.free"/>
<class name="payment.magcard"/>
<class name="payment.slip"/>
<class name="payment.voucher"/>
<class name="refund.cash"/>
<class name="refund.cheque"/>
<class name="refund.magcard"/>
<class name="refund.voucher"/>
<class name="sales.ChangeTaxOptions"/>
<class name="sales.DeleteLines"/>
<class name="sales.DeleteTicket"/>
<class name="sales.EditLines"/>
<class name="sales.EditTicket"/>
<class name="sales.Layout"/>
<class name="sales.Override"/>
<class name="sales.PrintRemote"/>
<class name="sales.PrintTicket"/>
<class name="sales.RefundTicket"/>
<class name="sales.ShowList"/>
<class name="sales.Total"/>
<class name="sales.ViewSharedTicket"/>
<!-- Standard button scripts -->
<class name="button.opendrawer"/>
<class name="button.print"/>
<class name="button.Totaldiscount"/>
<!-- Additional button scripts -->
<class name="button.keyboard"/>
<class name="button.Linediscount"/>
<class name="button.refundit"/>
<class name="button.scharge"/>
<class name="button.sendorder"/>
<class name="com.unicenta.pos.forms.MenuCustomers"/>
<class name="com.unicenta.pos.customers.CustomersPanel"/>
<class name="/com/unicenta/reports/customers.bs"/>
<class name="/com/unicenta/reports/customers_cards.bs"/>
<class name="/com/unicenta/reports/customers_debtors.bs"/>
<class name="/com/unicenta/reports/customers_diary.bs"/>
<class name="/com/unicenta/reports/customers_export.bs"/>
<class name="/com/unicenta/reports/customers_list.bs"/>
<class name="/com/unicenta/reports/customers_sales.bs"/>
<class name="com.unicenta.pos.forms.MenuSuppliers"/>
<class name="com.unicenta.pos.suppliers.SuppliersPanel"/>
<class name="/com/unicenta/reports/suppliers.bs"/>
<class name="/com/unicenta/reports/suppliers_b.bs"/>
<class name="/com/unicenta/reports/suppliers_creditors.bs"/>
<class name="/com/unicenta/reports/suppliers_diary.bs"/>
<class name="/com/unicenta/reports/suppliers_export.bs"/>
<class name="/com/unicenta/reports/suppliers_list.bs"/>
<class name="/com/unicenta/reports/suppliers_products.bs"/>
<class name="/com/unicenta/reports/suppliers_sales.bs"/>
<class name="com.unicenta.pos.forms.MenuStockManagement"/>
<class name="com.unicenta.pos.inventory.AttributeSetsPanel"/>
<class name="com.unicenta.pos.inventory.AttributesPanel"/>
<class name="com.unicenta.pos.inventory.AttributeUsePanel"/>
<class name="com.unicenta.pos.inventory.AttributeValuesPanel"/>
<class name="com.unicenta.pos.inventory.AuxiliarPanel"/>
<class name="com.unicenta.pos.inventory.BundlePanel"/>
<class name="com.unicenta.pos.inventory.CategoriesPanel"/>
<class name="com.unicenta.pos.inventory.ProductsPanel"/>
<class name="com.unicenta.pos.inventory.ProductsWarehousePanel"/>
<class name="com.unicenta.pos.inventory.StockDiaryPanel"/>
<class name="com.unicenta.pos.inventory.StockManagement"/>
<class name="com.unicenta.pos.inventory.TaxCategoriesPanel"/>
<class name="com.unicenta.pos.inventory.TaxCustCategoriesPanel"/>
<class name="com.unicenta.pos.inventory.TaxPanel"/>
<class name="com.unicenta.pos.inventory.UomPanel"/>
<class name="/com/unicenta/reports/inventory.bs"/>
<class name="/com/unicenta/reports/inventory_b.bs"/>
<class name="/com/unicenta/reports/inventory_broken.bs"/>
<class name="/com/unicenta/reports/inventory_diary.bs"/>
<class name="/com/unicenta/reports/inventory_diff.bs"/>
<class name="/com/unicenta/reports/inventory_diffdetail.bs"/>
<class name="/com/unicenta/reports/inventory_listdetail.bs"/>
<class name="/com/unicenta/reports/labels_barcode_sheet.bs"/>
<class name="/com/unicenta/reports/labels_barcode_shelfedge.bs"/> <class name="/com/unicenta/reports/productscatalog.bs"/>
<class name="/com/unicenta/reports/labels_product.bs"/>
<class name="/com/unicenta/reports/products.bs"/>
<class name="/com/unicenta/reports/salecatalog.bs"/>
<class name="com.unicenta.pos.forms.MenuSalesManagement"/>
<class name="/com/unicenta/reports/sales_cashflow.bs"/>
<class name="/com/unicenta/reports/sales_cashregisterlog.bs"/>
<class name="/com/unicenta/reports/sales_categorysales.bs"/>
<class name="/com/unicenta/reports/sales_categorysales_1.bs"/>
<class name="/com/unicenta/reports/sales_closedpos.bs"/>
<class name="/com/unicenta/reports/sales_closedpos_1.bs"/>
<class name="/com/unicenta/reports/sales_closedproducts.bs"/>
<class name="/com/unicenta/reports/sales_closedproducts_1.bs"/>
<class name="/com/unicenta/reports/sales_extendedcashregisterlog.bs"/>
<class name="/com/unicenta/reports/sales_extproducts.bs"/>
<class name="/com/unicenta/reports/sales_payments.bs"/>
<class name="/com/unicenta/reports/sales_productsalesprofit.bs"/>
<class name="/com/unicenta/reports/sales_saletaxes.bs"/>
<class name="/com/unicenta/reports/sales_taxcatsales.bs"/>
<class name="/com/unicenta/reports/sales_taxes.bs"/>
<class name="/com/unicenta/reports/sales_chart_piesalescat.bs"/>
<class name="/com/unicenta/reports/sales_chart_productsales.bs"/>
<class name="/com/unicenta/reports/sales_chart_sales.bs"/>
<class name="/com/unicenta/reports/sales_chart_timeseriesproduct.bs"/>
<class name="/com/unicenta/reports/sales_chart_top10.bs"/>
<class name="com.unicenta.pos.forms.MenuMaintenance"/>
<class name="com.unicenta.pos.admin.PeoplePanel"/>
<class name="com.unicenta.pos.admin.ResourcesPanel"/>
<class name="com.unicenta.pos.admin.RolesPanel"/>
<class name="com.unicenta.pos.inventory.LocationsPanel"/>
<class name="com.unicenta.pos.mant.JPanelFloors"/>
<class name="com.unicenta.pos.mant.JPanelPlaces"/>
<class name="com.unicenta.pos.voucher.VoucherPanel"/>
<class name="/com/unicenta/reports/customers_vouchers.bs"/>
<class name="/com/unicenta/reports/users.bs"/>
<class name="/com/unicenta/reports/users_nosales.bs"/>
<class name="/com/unicenta/reports/users_sales.bs"/>
<class name="/com/unicenta/reports/users_tips.bs"/>
<class name="/com/unicenta/reports/users_voids.bs"/>
<class name="com.unicenta.pos.imports.JPanelCSV"/>
<class name="com.unicenta.pos.imports.CustomerCSVImport"/>
<class name="com.unicenta.pos.imports.JPanelCSVCleardb"/>
<class name="com.unicenta.pos.imports.JPanelCSVImport"/>
<class name="com.unicenta.pos.imports.StockQtyImport"/>
<class name="com.unicenta.pos.transfer.Transfer"/>
<class name="/com/unicenta/reports/tools_invalidcategory.bs"/>
<class name="/com/unicenta/reports/tools_invaliddata.bs"/>
<class name="/com/unicenta/reports/tools_inventoryqtyupdate.bs"/>
<class name="/com/unicenta/reports/tools_missingdata.bs"/>
<class name="/com/unicenta/reports/tools_newproducts.bs"/>
<class name="/com/unicenta/reports/tools_updatedprices.bs"/>
// <class name="/com/unicenta/reports/tools_badprice.bs"/>
<!-- EPM -->
<class name="com.unicenta.pos.forms.MenuEmployees" />
<class name="com.unicenta.pos.epm.BreaksPanel" />
<class name="com.unicenta.pos.epm.JPanelEmployeePresence" />
<class name="com.unicenta.pos.epm.LeavesPanel" />
<class name="/com/unicenta/reports/epm_dailypresence.bs" />
<class name="/com/unicenta/reports/epm_dailyschedule.bs" />
<class name="/com/unicenta/reports/epm_performance.bs" />
<!-- <class name="com.unicenta.possync.ProductsSyncCreate"/> -->
<!-- <class name="com.unicenta.possync.OrdersSyncCreate"/> -->
<class name="Menu.ChangePassword"/>
<class name="com.unicenta.pos.panels.JPanelPrinter"/>
<class name="com.unicenta.pos.config.JPanelConfiguration"/>
</permissions>
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS.
If not, see <http://www.gnu.org/licenses/>.
-->
<!--
The Administrator Role Permissions has full access to all uniCenta oPOS
functionality.
The Administrator Role should only be used to make system changes.
*** Do not change unless you know what you are doing ***
-->
<permissions>
<class name="com.unicenta.pos.customers.CustomersPayment"/>
<class name="com.unicenta.pos.panels.JPanelPayments"/>
<class name="com.unicenta.pos.sales.JPanelTicketEdits"/>
<class name="com.unicenta.pos.sales.JPanelTicketSales"/>
<class name="payment.cash"/>
<class name="payment.cheque"/>
<class name="payment.debt"/>
<class name="payment.free"/>
<class name="payment.magcard"/>
<class name="payment.slip"/>
<class name="payment.voucher"/>
<class name="sales.DeleteLines"/>
<class name="sales.EditLines"/>
<class name="sales.EditTicket"/>
<class name="sales.PrintRemote"/>
<class name="sales.PrintTicket"/>
<class name="sales.Total"/>
<class name="sales.ViewSharedTicket"/>
<!-- Standard button scripts -->
<class name="button.opendrawer"/>
<class name="button.print"/>
<class name="button.Totaldiscount"/>
<!-- Additional button scripts -->
<class name="button.keyboard"/>
<class name="button.Linediscount"/>
<class name="button.scharge"/>
<class name="button.sendorder"/>
<class name="com.unicenta.pos.forms.MenuCustomers"/>
<class name="com.unicenta.pos.customers.CustomersPanel"/>
<class name="/com/unicenta/reports/customers.bs"/>
<class name="/com/unicenta/reports/customers_cards.bs"/>
<class name="com.unicenta.pos.forms.MenuSuppliers"/>
<class name="com.unicenta.pos.suppliers.SuppliersPanel"/>
<class name="/com/unicenta/reports/suppliers.bs"/>
<class name="com.unicenta.pos.forms.MenuMaintenance"/>
<class name="com.unicenta.pos.voucher.VoucherPanel"/>
<!-- EPM -->
<class name="com.unicenta.pos.forms.MenuEmployees" />
<class name="Menu.ChangePassword"/>
<class name="com.unicenta.pos.panels.JPanelPrinter"/>
<class name="com.unicenta.pos.config.JPanelConfiguration"/>
</permissions>
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<permissions>
<class name="com.unicenta.pos.sales.JPanelTicketSales"/>
<class name="button.keyboard"/>
</permissions>
@@ -0,0 +1,198 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS.
If not, see <http://www.gnu.org/licenses/>.
-->
<!--
The Administrator Role Permissions has full access to all uniCenta oPOS
functionality.
The Administrator Role should only be used to make system changes.
*** Do not change unless you know what you are doing ***
-->
<permissions>
<class name="com.unicenta.pos.customers.CustomersPayment"/>
<class name="com.unicenta.pos.panels.JPanelCloseMoney"/>
<class name="com.unicenta.pos.panels.JPanelCloseMoneyReprint"/>
<class name="com.unicenta.pos.panels.JPanelPayments"/>
<class name="com.unicenta.pos.sales.JPanelTicketEdits"/>
<class name="com.unicenta.pos.sales.JPanelTicketSales"/>
<class name="payment.bank"/>
<class name="payment.cash"/>
<class name="payment.cheque"/>
<class name="payment.debt"/>
<class name="payment.free"/>
<class name="payment.magcard"/>
<class name="payment.slip"/>
<class name="payment.voucher"/>
<class name="refund.cash"/>
<class name="refund.cheque"/>
<class name="refund.magcard"/>
<class name="refund.voucher"/>
<class name="sales.ChangeTaxOptions"/>
<class name="sales.DeleteLines"/>
<class name="sales.DeleteTicket"/>
<class name="sales.EditLines"/>
<class name="sales.EditTicket"/>
<class name="sales.Layout"/>
<class name="sales.Override"/>
<class name="sales.PrintRemote"/>
<class name="sales.PrintTicket"/>
<class name="sales.RefundTicket"/>
<class name="sales.ShowList"/>
<class name="sales.Total"/>
<class name="sales.ViewSharedTicket"/>
<!-- Standard button scripts -->
<class name="button.opendrawer"/>
<class name="button.print"/>
<class name="button.Totaldiscount"/>
<!-- Additional button scripts -->
<class name="button.keyboard"/>
<class name="button.Linediscount"/>
<class name="button.refundit"/>
<class name="button.scharge"/>
<class name="button.sendorder"/>
<class name="com.unicenta.pos.forms.MenuCustomers"/>
<class name="com.unicenta.pos.customers.CustomersPanel"/>
<class name="/com/unicenta/reports/customers.bs"/>
<class name="/com/unicenta/reports/customers_cards.bs"/>
<class name="/com/unicenta/reports/customers_debtors.bs"/>
<class name="/com/unicenta/reports/customers_diary.bs"/>
<class name="/com/unicenta/reports/customers_export.bs"/>
<class name="/com/unicenta/reports/customers_list.bs"/>
<class name="/com/unicenta/reports/customers_sales.bs"/>
<class name="com.unicenta.pos.forms.MenuSuppliers"/>
<class name="com.unicenta.pos.suppliers.SuppliersPanel"/>
<class name="/com/unicenta/reports/suppliers.bs"/>
<class name="/com/unicenta/reports/suppliers_b.bs"/>
<class name="/com/unicenta/reports/suppliers_creditors.bs"/>
<class name="/com/unicenta/reports/suppliers_diary.bs"/>
<class name="/com/unicenta/reports/suppliers_export.bs"/>
<class name="/com/unicenta/reports/suppliers_list.bs"/>
<class name="/com/unicenta/reports/suppliers_products.bs"/>
<class name="/com/unicenta/reports/suppliers_sales.bs"/>
<class name="com.unicenta.pos.forms.MenuStockManagement"/>
<class name="com.unicenta.pos.inventory.AttributeSetsPanel"/>
<class name="com.unicenta.pos.inventory.AttributesPanel"/>
<class name="com.unicenta.pos.inventory.AttributeUsePanel"/>
<class name="com.unicenta.pos.inventory.AttributeValuesPanel"/>
<class name="com.unicenta.pos.inventory.AuxiliarPanel"/>
<class name="com.unicenta.pos.inventory.BundlePanel"/>
<class name="com.unicenta.pos.inventory.CategoriesPanel"/>
<class name="com.unicenta.pos.inventory.ProductsPanel"/>
<class name="com.unicenta.pos.inventory.ProductsWarehousePanel"/>
<class name="com.unicenta.pos.inventory.StockDiaryPanel"/>
<class name="com.unicenta.pos.inventory.StockManagement"/>
<class name="com.unicenta.pos.inventory.TaxCategoriesPanel"/>
<class name="com.unicenta.pos.inventory.TaxCustCategoriesPanel"/>
<class name="com.unicenta.pos.inventory.TaxPanel"/>
<class name="com.unicenta.pos.inventory.UomPanel"/>
<class name="/com/unicenta/reports/inventory.bs"/>
<class name="/com/unicenta/reports/inventory_b.bs"/>
<class name="/com/unicenta/reports/inventory_broken.bs"/>
<class name="/com/unicenta/reports/inventory_diary.bs"/>
<class name="/com/unicenta/reports/inventory_diff.bs"/>
<class name="/com/unicenta/reports/inventory_diffdetail.bs"/>
<class name="/com/unicenta/reports/inventory_listdetail.bs"/>
<class name="/com/unicenta/reports/labels_barcode_sheet.bs"/>
<class name="/com/unicenta/reports/labels_barcode_shelfedge.bs"/> <class name="/com/unicenta/reports/productscatalog.bs"/>
<class name="/com/unicenta/reports/labels_product.bs"/>
<class name="/com/unicenta/reports/products.bs"/>
<class name="/com/unicenta/reports/salecatalog.bs"/>
<class name="com.unicenta.pos.forms.MenuSalesManagement"/>
<class name="/com/unicenta/reports/sales_cashflow.bs"/>
<class name="/com/unicenta/reports/sales_cashregisterlog.bs"/>
<class name="/com/unicenta/reports/sales_categorysales.bs"/>
<class name="/com/unicenta/reports/sales_categorysales_1.bs"/>
<class name="/com/unicenta/reports/sales_closedpos.bs"/>
<class name="/com/unicenta/reports/sales_closedpos_1.bs"/>
<class name="/com/unicenta/reports/sales_closedproducts.bs"/>
<class name="/com/unicenta/reports/sales_closedproducts_1.bs"/>
<class name="/com/unicenta/reports/sales_extendedcashregisterlog.bs"/>
<class name="/com/unicenta/reports/sales_extproducts.bs"/>
<class name="/com/unicenta/reports/sales_payments.bs"/>
<class name="/com/unicenta/reports/sales_productsalesprofit.bs"/>
<class name="/com/unicenta/reports/sales_saletaxes.bs"/>
<class name="/com/unicenta/reports/sales_taxcatsales.bs"/>
<class name="/com/unicenta/reports/sales_taxes.bs"/>
<class name="/com/unicenta/reports/sales_chart_piesalescat.bs"/>
<class name="/com/unicenta/reports/sales_chart_productsales.bs"/>
<class name="/com/unicenta/reports/sales_chart_sales.bs"/>
<class name="/com/unicenta/reports/sales_chart_timeseriesproduct.bs"/>
<class name="/com/unicenta/reports/sales_chart_top10.bs"/>
<class name="com.unicenta.pos.forms.MenuMaintenance"/>
<class name="com.unicenta.pos.admin.PeoplePanel"/>
<class name="com.unicenta.pos.admin.ResourcesPanel"/>
<class name="com.unicenta.pos.admin.RolesPanel"/>
<class name="com.unicenta.pos.inventory.LocationsPanel"/>
<class name="com.unicenta.pos.mant.JPanelFloors"/>
<class name="com.unicenta.pos.mant.JPanelPlaces"/>
<class name="com.unicenta.pos.voucher.VoucherPanel"/>
<class name="/com/unicenta/reports/customers_vouchers.bs"/>
<class name="/com/unicenta/reports/users.bs"/>
<class name="/com/unicenta/reports/users_nosales.bs"/>
<class name="/com/unicenta/reports/users_sales.bs"/>
<class name="/com/unicenta/reports/users_tips.bs"/>
<class name="/com/unicenta/reports/users_voids.bs"/>
<class name="com.unicenta.pos.imports.JPanelCSV"/>
<class name="com.unicenta.pos.imports.CustomerCSVImport"/>
<class name="com.unicenta.pos.imports.JPanelCSVCleardb"/>
<class name="com.unicenta.pos.imports.JPanelCSVImport"/>
<class name="com.unicenta.pos.imports.StockQtyImport"/>
<class name="com.unicenta.pos.transfer.Transfer"/>
<class name="/com/unicenta/reports/tools_invalidcategory.bs"/>
<class name="/com/unicenta/reports/tools_invaliddata.bs"/>
<class name="/com/unicenta/reports/tools_inventoryqtyupdate.bs"/>
<class name="/com/unicenta/reports/tools_missingdata.bs"/>
<class name="/com/unicenta/reports/tools_newproducts.bs"/>
<class name="/com/unicenta/reports/tools_updatedprices.bs"/>
// <class name="/com/unicenta/reports/tools_badprice.bs"/>
<!-- EPM -->
<class name="com.unicenta.pos.forms.MenuEmployees" />
<class name="com.unicenta.pos.epm.BreaksPanel" />
<class name="com.unicenta.pos.epm.JPanelEmployeePresence" />
<class name="com.unicenta.pos.epm.LeavesPanel" />
<class name="/com/unicenta/reports/epm_dailypresence.bs" />
<class name="/com/unicenta/reports/epm_dailyschedule.bs" />
<class name="/com/unicenta/reports/epm_performance.bs" />
<!-- <class name="com.unicenta.possync.ProductsSyncCreate"/> -->
<!-- <class name="com.unicenta.possync.OrdersSyncCreate"/> -->
<class name="Menu.ChangePassword"/>
<class name="com.unicenta.pos.panels.JPanelPrinter"/>
<class name="com.unicenta.pos.config.JPanelConfiguration"/>
</permissions>
@@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<!-- To ENABLE a feature remove the beginning and end of line commentors -->
<!-- To DISABLE a feature you must add the beginning and of line commentors -->
<configuration>
<!-- Sales Ticket Button Bar - Show icons **************************************** -->
<!-- SET Sales Ticket Refund Item (Default=DISABLED) -->
<!-- <button key="button.refundit" image="img.refundit" code="script.Refundit"/> -->
<!-- SET Sales Ticket ServiceCharge (Default=DISABLED) -->
<!-- <button key="button.scharge" image="img.heart" code="script.ServiceCharge"/> -->
<!-- SET Sales line Note (Default=DISABLED) -->
<!-- <button key="button.note" image="img.refundit" code="script.addlinenote"/> -->
<!-- SET Line or Total Discount (Default=TotalDiscount= ENABLED) -->
<button key="button.Totaldiscount" image="img.discount" code="script.Totaldiscount"/>
<button key="button.Linediscount" image="img.discount_b" code="script.Linediscount"/>
<!-- SET Waiter's name (Default=DISABLED) -->
<!-- <button key="button.setperson" image="img.user" code="script.SetPerson"/> -->
<!-- SET Remote Printer (Default=DISABLED) -->
<!-- <button key="button.sendorder" image="img.kit_print" code="script.SendOrder"/> -->
<!-- SET Ticket Print Preview (Default=ENABLED) -->
<button key="button.print" image="img.ticket_print" template="Printer.TicketPreview"/>
<!-- SET Open Cashdrawer (Default=ENABLED) -->
<button key="button.opendrawer" image="img.cashdrawer" template="Printer.OpenDrawer"/>
<!-- SET Virtual Keyboard (Default=ENABLED) -->
<button key="button.keyboard" image="img.keyboard_48" code="script.Keyboard"/>
<!-- END Sales Ticket Button Bar - Show icons -->
<!-- SET Ticket Button Bar - Text Only ****************************************************************** -->
<!-- <button key="button.refundit" name="button.refundit" code="script.Refundit"/> -->
<!-- <button key="button.Linediscount" name="button.Linediscount" code="script.Linediscount"/> -->
<!-- <button key="button.Totaldiscount" name="button.Totaldiscount" code="script.Totaldiscount"/> -->
<!-- <button key="button.setperson" name="button.setperson" code="script.SetPerson"/> -->
<!-- <button key="button.sendorder" name="button.sendorder" code="script.SendOrder"/> -->
<!-- <button key="button.print" titlekey="button.print" template="Printer.TicketPreview"/> -->
<!-- <button key="button.opendrawer" titlekey="button.opendrawer" template="Printer.OpenDrawer"/> -->
<!-- <button key="button.keyboard" titlekey="button.keyboard" template="script.Keyboard"/> -->
<!-- END Ticket Button Bar - Text Only -->
<!-- SET Product Area Size ********************************************* -->
<!-- Maximum Category height for 800x480 for PDA in Full Screen mode -->
<!-- <cat-height value="100" /> -->
<!-- Maximum Category height for 800x600 -->
<!-- <cat-height value="155" /> -->
<!-- Maximum Category height for 1024x768 in Full Screen mode (Default=ENABLED) -->
<cat-height value="320" />
<!-- Maximum Category height for 1280x1024 in Full Screen mode -->
<!-- <cat-height value="640" /> -->
<!-- END Product Area Size -->
<!-- SET Product Button Sizes ****************************************** -->
<!-- Small Product button size in Sales screen (Default=DISABLED) -->
<!-- <img-width value="64"/> -->
<!-- <img-height value="48"/> -->
<!-- Medium Product button size in Sales screen (Default=ENABLED) -->
<img-width value="107"/>
<img-height value="60"/>
<!-- Large Product button size in Sales screen (Default=DISABLED)-->
<!-- <img-width value="128"/> -->
<!-- <img-height value="96"/> -->
<!-- END Product Button Size -->
<!-- Print Receipt (Default=ENABLED) -->
<printselected value="true"/>
<!-- ADDITIONAL FEATURES ************************************************* -->
<!-- SET Show Change in Cash Sale (Default=ENABLED -->
<event key="ticket.close" code="Ticket.Close"/>
<event key="cash.close" code="Cash.Close"/>
<!-- Execute your own scripts by EVENTS triggered by Sales Screen -->
<!-- <event key="ticket.change" code="script.multibuy"/> Discount 2 different products -->
<!-- <event key="ticket.change" code="script.YourChangeScript"/> after a ticketline is changed -->
<!-- <event key="ticket.addline" code="script.YourAddLineScript"/> before a ticketline is added -->
<!-- <event key="ticket.setline" code="script.YourSetLineScript"/> before an exisitng ticketline is changed -->
<!-- <event key="ticket.removeline" code="script.YourRemoveLineScript"/> before a ticketline is deleted -->
<!-- <event key="ticket.show" code="script.YourShowScript"/> before the receipt is shown -->
<!-- <event key="ticket.total" code="script.YourTotalScript"/> after the equals button -->
<!-- <event key="ticket.save" code="script.YourSaveScript"/> after payment OK button -->
<!-- <event key="ticket.close" code="script.YourCloseScript"/> after ticket is stored in database and ticket number assigned -->
<taxesincluded value="true"/>
<taxcategoryid value="001"/>
<pricevisible value="true" />
</configuration>
@@ -0,0 +1,59 @@
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// http://sourceforge.net/projects/unicentaopos
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// **************************************************************************
// Ticket.Close
// This script displays the amount of Cash Change (CashTendered - TicketValue) to be given to Customer
import java.awt.Font;
import javax.swing.plaf.FontUIResource;
import com.unicenta.pos.payment.PaymentInfo;
import javax.swing.JOptionPane;
import javax.swing.JDialog;
boolean isCash = false;
String change = "";
PaymentInfo p = ticket.payments.getFirst();
if ("cash".equals(p.getName())) {
isCash = true;
change = p.printChange();
}
// Get details of the original font before we change it otherwise all dialogboxes will use new settings
JOptionPane pane = new JOptionPane();
Font originalFont=pane.getFont();
UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font("ARIAL",Font.PLAIN,20)));
message = "Change: " + change;
JLabel FontText = new JLabel(message);
FontText.setFont (new Font ( "Arial", Font.BOLD, 36) );
if(isCash) {
JOptionPane pane = new JOptionPane();
pane.setMessage(FontText);
pane.setPreferredSize( new Dimension(450,150));
JDialog dialog = pane.createDialog("Cash payment");
new Thread(new Runnable() { void run() {
dialog.show();
} }).start();
}
// Return to default settings
UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font(originalFont.getName(),originalFont.getStyle(),originalFont.getSize())));
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<!-- This sales transaction screen is great for Retailers! -->
<line>
<column name="label.item" width="185" align="left" value="&lt;html&gt;
#if ($ticketline.isProductCom()) &lt;i&gt;*&amp;nbsp;&amp;nbsp;
${ticketline.printName()}&lt;/i&gt;
#else
${ticketline.printName()}
#end
&lt;br&gt;${ticketline.getProductAttSetInstDesc()}"/>
<column name="label.price" width="50" align="right" value="${ticketline.printPrice()}"/>
<column name="label.units" width="50" align="right" value="x${ticketline.printMultiply()}"/>
<column name="label.tax" width="50" align="right" value="${ticketline.printTaxRate()}"/>
<column name="label.value" width="100" align="right" value="${ticketline.printValue()}"/>
<column name="label.printto" width="5" align="center" value="${ticketline.printPrinter()}"/>
<!--<column name="label.sendorder" width="5" align="left" value="${ticketline.getProperty('printkb','?')}"/> -->
<!--<column name="label.sendstatus" width="5" align="left" value="${ticketline.getProperty('sendstatus','?')}"/> -->
</line>
<!-- This sales transaction screen is great for Hospitality!
<line>
<column name="label.item2" width="235" align="left" value="&lt;html&gt;
#if ($ticketline.isProductCom())
&lt;i&gt;*&amp;nbsp;&amp;nbsp;${ticketline.printName()}&lt;/i&gt;
#else
${ticketline.printName()}
#end
&lt;br&gt;${ticketline.getProductAttSetInstDesc()}"/>
<column name="label.units2" width="50" align="right" value="x${ticketline.printMultiply()}"/>
<column name="label.value2" width="100" align="right" value="${ticketline.printValue()}"/>
<column name="label.printto" width="5" align="center" value="${ticketline.printPrinter()}"/>
</line>
-->
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
uniCenta oPOS - Touch friendly Point Of Sale
Copyright (c) 2009-2018 uniCenta.
http://sourceforge.net/projects/unicentaopos
This file is part of uniCenta oPOS.
uniCenta oPOS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
uniCenta oPOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
-->
<line>
<column name="label.item" width="125" align="left" value="&lt;html&gt;
#if ($ticketline.isProductCom())
&lt;i&gt;*&amp;nbsp;&amp;nbsp;${ticketline.printName()}&lt;/i&gt;
#else ${ticketline.printName()}
#end"/>
<column name="label.price" width="80" align="right" value="${ticketline.printPriceTax()}"/>
<column name="label.units" width="50" align="right" value="x${ticketline.printMultiply()}"/>
<column name="label.tax" width="100" align="right" value="${ticketline.printTaxRate()}"/>
<column name="label.value" width="80" align="right" value="${ticketline.printValue()}"/>
</line>
@@ -0,0 +1 @@
uniCenta oPOS - Touch Friendly Point Of Sale
@@ -0,0 +1,27 @@
// Customer.Created
// This script initialises the uniCenta posApps CUSTOMER CREATED
// REST API web services
//
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// http://sourceforge.net/projects/unicentaopos
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// **************************************************************************
import uk.co.pos_apps.PosApps;
PosApps.createCustomer(device, customer);
@@ -0,0 +1,27 @@
// Customer.Deleted
// This script initialises the uniCenta posApps CUSTOMER DELETED
// REST API web services
//
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// http://sourceforge.net/projects/unicentaopos
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// **************************************************************************
import uk.co.pos_apps.PosApps;
PosApps.deleteCustomer(device, customer);
@@ -0,0 +1,27 @@
// Customer.Updated
// This script initialises the uniCenta posApps CUSTOMER UPDATED
// REST API web services
//
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// http://sourceforge.net/projects/unicentaopos
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// **************************************************************************
import uk.co.pos_apps.PosApps;
PosApps.updateCustomer(device, customer);
@@ -0,0 +1,41 @@
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// http://sourceforge.net/projects/unicentaopos
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// *************************************************************************
// *************************************************************************
// All currency payment denominations to show in Payment forms
// You can find additional prepared currency styles in the Configs folder of
// uniCenta oPOS install folder. Use the Import button to load
//
// To INCLUDE a denomination remove "//" from the line
// To EXCLUDE a denomination add "//" to the line
// *************************************************************************
payment.addButton("img.50", 50.0);
payment.addButton("img.20", 20.0);
payment.addButton("img.10", 10.0);
payment.addButton("img.5", 5.0);
payment.addButton("img.2", 2.0);
payment.addButton("img.1", 1.00);
payment.addButton("img.050", 0.50);
payment.addButton("img.020", 0.20);
payment.addButton("img.010", 0.10);
payment.addButton("img.005", 0.05);
payment.addButton("img.002", 0.02);
payment.addButton("img.001", 0.01);
@@ -0,0 +1,29 @@
// script.Keyboard.txt
// This script launches uniCenta Virtual Keyboard
//
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// http://sourceforge.net/projects/unicentaopos
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// **************************************************************************
Runtime runtime = Runtime.getRuntime();
// Windows
Process proc = runtime.getRuntime() .exec("cmd /C start osk.exe");
// Ubuntu
// Process proc = runtime.getRuntime() .exec("onboard");
@@ -0,0 +1,51 @@
// script.Linediscount
//
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// http://sourceforge.net/projects/unicentaopos
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// **************************************************************************
// This script applies UsersInput %Discount for the Item Line value
// To use in the sales screen: Highlight the line you want to discount
// Then Tap in the %Discount amount and touch the % button
import com.unicenta.format.Formats;
import com.unicenta.pos.ticket.TicketLineInfo;
import com.unicenta.pos.ticket.TicketProductInfo;
discountrate = sales.getInputValue() / 100.0;
index = sales.getSelectedIndex();
if (index >= 0) {
line = ticket.getLine(index);
if (line.getPrice() > 0.0 && discountrate > 0.0) {
sdiscount = Formats.PERCENT.formatValue(discountrate);
ticket.insertLine(index + 1,
new TicketLineInfo(
"Line Discount " + sdiscount,
line.getProductTaxCategoryID(),
line.getProductPrinter(),
line.getMultiply(),
-(double)Math.abs(line.getNewPrice() * discountrate * 100) / 100,
line.getTaxInfo()));
sales.setSelectedIndex(index + 1);
} else {
java.awt.Toolkit.getDefaultToolkit().beep();
}
} else {
java.awt.Toolkit.getDefaultToolkit().beep();
}
@@ -0,0 +1,76 @@
// script.SendOrder
// Sends an item in a Sale to a remote Printers
//
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// http://sourceforge.net/projects/unicentaopos
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// **************************************************************************
private boolean printedP1 = false;
private boolean printedP2 = false;
private boolean printedP3 = false;
private boolean printedP4 = false;
private boolean printedP5 = false;
private boolean printedP6 = false;
for(int i= 0; i < ticket.getLinesCount(); i++){
line = ticket.getLine(i);
if (line.getProperty("product.printer")!=null) {
if (line.getProperty("product.printer").equals("1")) {
if((printedP1 == false) && line.getProperty("ticket.updated").equals("true")) {
sales.printTicket("Printer.Ticket.P1");
printedP1 = true;
}
}
if (line.getProperty("product.printer").equals("2")) {
if((printedP2 == false) && line.getProperty("ticket.updated").equals("true")){
sales.printTicket("Printer.Ticket.P2");
printedP2 = true;
}
}
if (line.getProperty("product.printer").equals("3")) {
if((printedP3 == false) && line.getProperty("ticket.updated").equals("true")){
sales.printTicket("Printer.Ticket.P3");
printedP3 = true;
}
}
if (line.getProperty("product.printer").equals("4")) {
if((printedP4 == false) && line.getProperty("ticket.updated").equals("true")){
sales.printTicket("Printer.Ticket.P4");
printedP4 = true;
}
}
if (line.getProperty("product.printer").equals("5")) {
if((printedP5 == false) && line.getProperty("ticket.updated").equals("true")){
sales.printTicket("Printer.Ticket.P5");
printedP5 = true;
}
}
if (line.getProperty("product.printer").equals("6")) {
if((printedP6 == false) && line.getProperty("ticket.updated").equals("true")){
sales.printTicket("Printer.Ticket.P6");
printedP6 = true;
}
}
}
}
@@ -0,0 +1,54 @@
// script.Totaldiscount
//
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// http://sourceforge.net/projects/unicentaopos
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// **************************************************************************
// This script applies UsersInput %Discount for the Total Ticket
// each Line value is recalculated and annotated
// To use in the sales screen: Highlight the line you want to discount
// Then Tap in the %Discount amount and touch the % button
import com.unicenta.format.Formats;
import com.unicenta.pos.ticket.TicketLineInfo;
import com.unicenta.pos.ticket.TicketProductInfo;
discountrate = sales.getInputValue() / 100.0;
index = sales.getSelectedIndex();
if (index >= 0) {
if (ticket.getTotal() > 0.0 && discountrate > 0.0) {
sdiscount = Formats.PERCENT.formatValue((discountrate));
for (int number= 0; number < ticket.getLinesCount(); number++) {
line = ticket.getLine(number);
ticket.setLine(number,
new TicketLineInfo(
line.getProductID(),
line.getProductName() + " - Item Discount @ " + sdiscount,
line.getProductTaxCategoryID(),
line.getProductPrinter(),
line.getMultiply(),
line.getNewPrice() - (double)Math.abs(line.getNewPrice() * discountrate * 100) /100,
line.getTaxInfo()));
}
} else {
java.awt.Toolkit.getDefaultToolkit().beep();
}
} else {
java.awt.Toolkit.getDefaultToolkit().beep();
}
@@ -0,0 +1,82 @@
//
// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright © 2009-2020 uniCenta
//
// This file is part of uniCenta oPOS.
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
// **************************************************************************
import com.unicenta.pos.ticket.TicketLineInfo;
index = sales.getSelectedIndex();
if (index != -1)
{
line = ticket.getLine(index);
int count = Integer.parseInt(line.getProperty("COUNT", "0"));
Double newPrice1 = new Double(line.getProperty("PRICE", "0"));
String groupName = line.getProperty("GROUP", "0");
if (count > 0) {
int productCount = 0;
int discountsAlreadyApplied = 0;
String productID = line.getProductID();
for (TicketLineInfo ticketLine: ticket.getLines()) {
boolean grouped = groupName.equals(ticketLine.getProperty("GROUP", "0"));
boolean multi = count > 0;
if (multi && grouped) {
productCount++;
}
if (ticketLine.getProductName().contains("Buy")) {
discountsAlreadyApplied = discountsAlreadyApplied + count;
}
}
if (count == (productCount - discountsAlreadyApplied)) {
newPrice2 = -(line.getPriceTax() * count) + newPrice1;
ticket.insertLine(ticket.getLinesCount(),
new TicketLineInfo(
"Buy " + count + " for £" + (line.getProperty("PRICE")),ox
line.getProductTaxCategoryID(),
"",
1,
0,
line.getTaxInfo()));
sales.setSelectedIndex(ticket.getLinesCount() - 1);
index = sales.getSelectedIndex();
line = ticket.getLine(index);
line.setPriceTax(newPrice2);
sales.setSelectedIndex(ticket.getLinesCount() - 2);
/* Remove BOGO property to start fresh */
for (i = 0; i < ticket.getLinesCount(); i++) {
if (productID.equals(ticket.getLine(i).getProductID())) {
ticket.getLine(i).setProperty("COUNT", "0");
}
}
}
sales.setSelectedIndex(ticket.getLinesCount() - 1);
}
}
//END MULTI BUY
@@ -0,0 +1,208 @@
#set ( $leftm= " " ) ## Uses spaces to set the LEFT margin - 10 is default for A4
#set ( $len= 'length="130"' ) ## Sets the line LENGTH - 130 is default for A4
<ticket>
<image>Printer.Ticket.Logo</image>
<line size="1"><text align="center" $len>$leftm Printer.TicketPreview_A4</text></line>
<line></line>
<line>
#if (${ticket.ticketType} == 0)
<text align="left" length="40">$leftm Receipt: ${ticket.printId()}</text>
#if (${ticket.printTicketHeaderLine1()} != "")
<text align="right" length="90">$leftm ${ticket.printTicketHeaderLine1()}</text>
#end
#end
#if (${ticket.ticketType} == 1)
<text align="left" length="40">$leftm Refund: ${ticket.printId()}</text>
#if (${ticket.printTicketHeaderLine1()} != "")
<text align="right" length="90">$leftm ${ticket.printTicketHeaderLine1()}</text>
#end
#end
</line>
<line>
<text align="left" length="20">$leftm Date: </text><text length="20">${ticket.printDate()}</text>
#if (${ticket.printTicketHeaderLine2()} != "")
<text align="right" length="90">$leftm ${ticket.printTicketHeaderLine2()}</text>
#end
</line>
<line>
<text align="left" length="20">$leftm Terminal: </text><text length="20">${ticket.getHost()}</text>
#if (${ticket.printTicketHeaderLine3()} != "")
<text align="right" length="90">$leftm ${ticket.printTicketHeaderLine3()}</text>
#end
</line>
<line>
<text align="left" length="20">$leftm Server: </text><text length="20">${ticket.printUser()}</text>
#if (${ticket.printTicketHeaderLine4()} != "")
<text align="right" length="90">${ticket.printTicketHeaderLine4()}</text>
#end
</line>
<line>
#if (${tickettext.place} != ${place})
<text align="left" length="20">$leftm Table:</text><text length="20">${place}</text>
#if (${ticket.printTicketHeaderLine5()} != "")
<text align="right" length="90">${ticket.printTicketHeaderLine5()}</text>
#end
#else
#if (${ticket.printTicketHeaderLine5()} != "")
<text align="right" $len>${ticket.printTicketHeaderLine5()}</text>
#end
#end
</line>
<line>
#if (${ticket.printTicketHeaderLine6()} != "")
<text align="right" $len>${ticket.printTicketHeaderLine6()}</text>
#end
</line>
#if ($ticket.getCustomer())
<line><text align="left">$leftm Account #: </text><text>${ticket.getCustomer().printTaxCustomerID()}</text></line>
<line><text align="left">$leftm Customer: </text><text>${ticket.getCustomer().printName()}</text></line>
<line><text align="left">$leftm Address: </text><text>${ticket.getCustomer().printAddress()}</text></line>
<line><text align="left">$leftm Postal: </text><text>${ticket.getCustomer().printPostal()}</text></line>
<line><text align="left">$leftm Phone: </text><text>${ticket.getCustomer().printPhone1()}</text></line>
<line><text align="left">$leftm Current Debt: </text><text>${ticket.getCustomer().printCurDebt()}</text></line>
#end
<line></line>
<line><text align="left" $len>$leftm ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────</text></line>
<line>
<text align ="left" length="20" bold="true">$leftm REFERENCE</text>
<text align ="left" length="74" bold="true">$leftm ITEM</text>
<text align ="right" length="10" bold="true">PRICE</text>
<text align ="right" length="10" bold="true">QTY</text>
<text align ="right" bold="true">$leftm VALUE</text>
</line>
<line><text align="left" $len>$leftm ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────</text></line>
#foreach ($ticketline in $ticket.getLines())
<line>
#if ($ticketline.isProductCom())
<text align ="left" length="20">$leftm ★${ticketline.printReference()}</text>
<text align ="left" length="74">$leftm ${ticketline.printName()}</text>
#else
<text align ="left" length="20">$leftm ${ticketline.printReference()}</text>
<text align ="left" length="74">$leftm ${ticketline.printName()}</text>
#end
<text align ="right" length="11">${ticketline.printPriceTax()}</text>
<text align ="right" length="10">${ticketline.printMultiply()}</text>
<text align ="right" length="15">${ticketline.printValue()}</text>
</line>
#if ($ticketline.productAttSetInstId)
<line><text align ="left" length="74">$leftm $leftm ★★ ${ticketline.productAttSetInstDesc}</text></line>
#end
#end
<line><text align="left" $len>$leftm ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────</text></line>
<line><text>$leftm Items count: </text><text align ="left" length="15">${ticket.printArticlesCount()}</text></line>
<line></line>
<line>
<text align="right" length="115">$leftm Subtotal</text>
<text align ="right" length="15">${ticket.printSubTotal()}</text>
</line>
<line>
<text align ="right" length="115">$leftm Tax</text>
<text align ="right" length="15">${ticket.printTax()}</text>
</line>
<line><text align="right" $len>$leftm ───────────────</text></line>
<line></line>
<line size="1">
<text align ="right" length="115" bold="true">$leftm Balance Due</text>
<text align ="right" length="15" bold="true">${ticket.printTotal()}</text>
</line>
<line><text align="right" $len>$leftm ═══════════════</text></line>
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "cash")
<line><text bold="true">$leftm Cash</text></line>
<line><text align="left" length="22">$leftm Tendered:</text><text align ="right" length="20">${paymentline.printPaid()}</text></line>
<line><text align="left" length="22">$leftm Change:</text><text align ="right" length="20">${paymentline.printChange()}</text></line>
#end
#if ($paymentline.name == "cashrefund")
<line><text align="left" length="22" bold="true">$leftm Refund</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "cheque")
<line><text align="left" length="22" bold="true">$leftm Cheque</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "chequerefund")
<line><text align="left" length="22" bold="true">$leftm Cheque Refund</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "voucherin")
<line><text align="left" length="22" bold="true">$leftm Voucher</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "voucherout")
<line><text align="left" length="22" bold="true">$leftm Note Refund</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "slip")
<line><text align="left" length="22" bold="true">$leftm Slip</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "free")
<line><text align="left" length="22" bold="true">$leftm Free</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#if ($paymentline.name == "debt")
<line><text align="left" length="22" bold="true">$leftm On Account</text><text align ="right" length="20">${paymentline.printTotal()}</text></line>
#end
#end
#if (${ticket.printTicketFooterLine1()} != "")
<line></line>
<line><text align="center" $len>$leftm ${ticket.printTicketFooterLine1()}</text></line>
<line><text align="left" $len>$leftm ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────</text></line>
#end
#if (${ticket.printTicketFooterLine2()} != "")
<line><text>$leftm ${ticket.printTicketFooterLine2()}</text></line>
#end
#if (${ticket.printTicketFooterLine3()} != "")
<line><text>$leftm ${ticket.printTicketFooterLine3()}</text></line>
#end
#if (${ticket.printTicketFooterLine4()} != "")
<line><text>$leftm ${ticket.printTicketFooterLine4()}</text></line>
#end
#if (${ticket.printTicketFooterLine5()} != "")
<line><text>$leftm ${ticket.printTicketFooterLine5()}</text></line>
#end
#if (${ticket.printTicketFooterLine6()} != "")
<line><text>$leftm ${ticket.printTicketFooterLine6()}</text></line>
#end
<line></line>
#foreach ($paymentline in $ticket.payments)
#if ($paymentline.name == "ccard")
#if ($paymentline.chipAndPin)
<line size="1"><text align="center" $len bold="true">$leftm CARD SALE</text></line>
<line><text align = "center" $len bold="true">$leftm A card payment was received</text></line>
<line></line>
<line size="1"><text align="left">$leftm AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
#end
#if (!$paymentline.chipAndPin)
<line size="1"><text align="center" $len bold="true">$leftm CARD SALE</text></line>
<line><text align = "center" $len bold="true">$leftm A card payment was received</text></line>
<line></line>
<line size="1"><text align="left">$leftm AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
#end
#if ($ticket.hasTip())
<line><text align ="left">$leftm Tip: </text><text align ="right" length="26">_______________</text></line>
<line></line>
<line size="1"><text align ="left" bold="false">$leftm Total </text><text align ="right" length="26" bold="false">_______________</text></line>
<line></line>
<line></line>
<line size="1"><text align ="left" bold="false">$leftm __________________________________________</text></line>
<line size="1"><text align ="center" bold="false">$leftm Signature</text></line>
#else
<line size="1"><text align ="left" bold="true">$leftm Total</text><text align ="right" length="26" bold="true">${paymentline.printTotal()}</text></line>
#end
#end
#if ($paymentline.name == "ccardrefund")
<line size="1"><text align="center" $len bold="true">$leftm CARD SALE</text></line>
<line></line>
<line><text align = "center" $len bold="true">$leftm A card payment was received</text></line>
<line></line>
<line size="1"><text align="left">$leftm AMOUNT</text><text align ="right" length="32">${paymentline.printTotal()}</text></line>
#end
#end
</ticket>