|
@@ -2,6 +2,29 @@
|
|
|
(function () {
|
|
|
var instance = openerp
|
|
|
openerp.print_engine = {}
|
|
|
+
|
|
|
+ String.prototype.add = function (string) {
|
|
|
+ return this.concat(string);
|
|
|
+ }
|
|
|
+
|
|
|
+ String.prototype.center = function (width, padding) {
|
|
|
+ padding = padding || '';
|
|
|
+ padding = padding.substr(0, 1);
|
|
|
+
|
|
|
+ if (this.length < width) {
|
|
|
+ var length = width - this.length;
|
|
|
+ var remain = (length % 2 == 0) ? '' : padding;
|
|
|
+ var pads = padding.repeat(parseInt(length / 2));
|
|
|
+
|
|
|
+ return pads + this + pads + remain;
|
|
|
+ } else {
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String.prototype.lineFeed = function () {
|
|
|
+ return this + '\n';
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
*
|
|
@@ -179,6 +202,59 @@
|
|
|
}
|
|
|
|
|
|
this.sendToSocket(commands)
|
|
|
+ },
|
|
|
+ printTicket(company, address, phone, items, total, change, customer) {
|
|
|
+ company = company || 'SIN NOMBRE';
|
|
|
+ var buffer = '';
|
|
|
+ buffer = buffer.add(company.center(40, ' ').toUpperCase()).lineFeed();
|
|
|
+
|
|
|
+ if (address) {
|
|
|
+ buffer = buffer.add(address.center(40, ' ')).lineFeed();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (phone) {
|
|
|
+ buffer = buffer.add(phone.center(40, ' ')).lineFeed();
|
|
|
+ }
|
|
|
+
|
|
|
+ buffer = buffer.add('-'.center(40, '-')).lineFeed();
|
|
|
+ buffer = buffer.add('DESCRIPCION').lineFeed();
|
|
|
+ buffer = buffer.add('PRECIO CANTIDAD SUBTOTAL').lineFeed();
|
|
|
+ buffer = buffer.add('-'.center(40, '-')).lineFeed();
|
|
|
+
|
|
|
+ if (!!items && items.length > 0) {
|
|
|
+ for (var i = 0; i < items.length; i++) {
|
|
|
+ buffer = buffer.add(items[i][0].toUpperCase()).lineFeed();
|
|
|
+ buffer = buffer.add(items[i][1] + '\t\t' + items[i][2] + '\t\t' + items[i][3]).lineFeed();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ buffer = buffer.add('-'.center(40, '-')).lineFeed();
|
|
|
+
|
|
|
+ buffer = buffer.add('TOTAL: ' + total).lineFeed();
|
|
|
+ buffer = buffer.add('RECIBIDO: ' + 5000).lineFeed();
|
|
|
+ buffer = buffer.add('VUELTO: ' + change).lineFeed();
|
|
|
+ buffer = buffer.add('CLIENTE: ' + customer).lineFeed().lineFeed();
|
|
|
+ buffer = buffer.lineFeed().add('GRACIAS POR SU PREFERENCIA!!!'.center(40, ' ')).lineFeed().lineFeed().lineFeed().lineFeed().lineFeed().lineFeed().lineFeed();
|
|
|
+
|
|
|
+ if (this.sockets.length === 0) {
|
|
|
+ instance.web.notification.do_warn('Atención', 'No hay sockets registrados');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var printer = null;
|
|
|
+ for (var j = 0; j < this.sockets[0].printers.length; j++) {
|
|
|
+ if (this.sockets[0].printers[j].isDefault) {
|
|
|
+ printer = this.sockets[0].printers[j];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!printer) {
|
|
|
+ instance.web.notification.do_warn('Atención', 'No hay impresora por defecto');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.print(printer.name, buffer);
|
|
|
}
|
|
|
});
|
|
|
|