Attached Files | 3.0RR14Q2.3_FixesIssue_26072.diff [^] (24,176 bytes) 2014-08-20 11:30 [Show Content] [Hide Content]diff --git a/src-db/database/model/tables/OBPOS_APPLICATIONS.xml b/src-db/database/model/tables/OBPOS_APPLICATIONS.xml
--- a/src-db/database/model/tables/OBPOS_APPLICATIONS.xml
+++ b/src-db/database/model/tables/OBPOS_APPLICATIONS.xml
@@ -73,6 +73,10 @@
<default/>
<onCreateDefault/>
</column>
+ <column name="PRINTOFFLINE" primaryKey="false" required="true" type="CHAR" size="1" autoIncrement="false">
+ <default><![CDATA[N]]></default>
+ <onCreateDefault/>
+ </column>
<foreign-key foreignTable="AD_CLIENT" name="OBPOS_APP_AD_CLIENT">
<reference local="AD_CLIENT_ID" foreign="AD_CLIENT_ID"/>
</foreign-key>
@@ -102,6 +106,7 @@
<unique-column name="VALUE"/>
</unique>
<check name="OBPOS_APP_ISACTIVE_CHK"><![CDATA[ISACTIVE IN ('Y', 'N')]]></check>
+ <check name="OBPOS_APP_PRINTOFFLINE_CHK"><![CDATA[PRINTOFFLINE IN ('Y', 'N')]]></check>
<check name="OBPOS_LOCATION_CHECK"><![CDATA[NOT ((OBPOS_C_BPARTNER_LOC_ID IS NULL) AND (C_BPARTNER_ID IS NOT NULL))]]></check>
</table>
</database>
diff --git a/src-db/database/sourcedata/AD_COLUMN.xml b/src-db/database/sourcedata/AD_COLUMN.xml
--- a/src-db/database/sourcedata/AD_COLUMN.xml
+++ b/src-db/database/sourcedata/AD_COLUMN.xml
@@ -4730,6 +4730,42 @@
<!--B50EE2AF9924461B8E8D385588F94EA4--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
<!--B50EE2AF9924461B8E8D385588F94EA4--></AD_COLUMN>
+<!--B72682D533B04244BF5CEB144494E040--><AD_COLUMN>
+<!--B72682D533B04244BF5CEB144494E040--> <AD_COLUMN_ID><![CDATA[B72682D533B04244BF5CEB144494E040]]></AD_COLUMN_ID>
+<!--B72682D533B04244BF5CEB144494E040--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--B72682D533B04244BF5CEB144494E040--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--B72682D533B04244BF5CEB144494E040--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--B72682D533B04244BF5CEB144494E040--> <NAME><![CDATA[Printoffline]]></NAME>
+<!--B72682D533B04244BF5CEB144494E040--> <DESCRIPTION><![CDATA[Print offline management]]></DESCRIPTION>
+<!--B72682D533B04244BF5CEB144494E040--> <HELP><![CDATA[Defines whether this terminal manages if the receipt printer is offline or online. If this flag is activated and the receipt printer is offline, then receipts are stored after closing the sale locally and will be printed after the receipt printer becomes online.]]></HELP>
+<!--B72682D533B04244BF5CEB144494E040--> <COLUMNNAME><![CDATA[Printoffline]]></COLUMNNAME>
+<!--B72682D533B04244BF5CEB144494E040--> <AD_TABLE_ID><![CDATA[FF80818132F311740132F31E2C9A0016]]></AD_TABLE_ID>
+<!--B72682D533B04244BF5CEB144494E040--> <AD_REFERENCE_ID><![CDATA[20]]></AD_REFERENCE_ID>
+<!--B72682D533B04244BF5CEB144494E040--> <FIELDLENGTH><![CDATA[1]]></FIELDLENGTH>
+<!--B72682D533B04244BF5CEB144494E040--> <DEFAULTVALUE><![CDATA[N]]></DEFAULTVALUE>
+<!--B72682D533B04244BF5CEB144494E040--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--B72682D533B04244BF5CEB144494E040--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--B72682D533B04244BF5CEB144494E040--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--B72682D533B04244BF5CEB144494E040--> <ISUPDATEABLE><![CDATA[Y]]></ISUPDATEABLE>
+<!--B72682D533B04244BF5CEB144494E040--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--B72682D533B04244BF5CEB144494E040--> <SEQNO><![CDATA[400]]></SEQNO>
+<!--B72682D533B04244BF5CEB144494E040--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--B72682D533B04244BF5CEB144494E040--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--B72682D533B04244BF5CEB144494E040--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--B72682D533B04244BF5CEB144494E040--> <AD_ELEMENT_ID><![CDATA[6F2D0E97FD4F4A95B1D4B9A3A5EB674A]]></AD_ELEMENT_ID>
+<!--B72682D533B04244BF5CEB144494E040--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--B72682D533B04244BF5CEB144494E040--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--B72682D533B04244BF5CEB144494E040--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--B72682D533B04244BF5CEB144494E040--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--B72682D533B04244BF5CEB144494E040--> <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
+<!--B72682D533B04244BF5CEB144494E040--> <POSITION><![CDATA[20]]></POSITION>
+<!--B72682D533B04244BF5CEB144494E040--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--B72682D533B04244BF5CEB144494E040--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--B72682D533B04244BF5CEB144494E040--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--B72682D533B04244BF5CEB144494E040--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--B72682D533B04244BF5CEB144494E040--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--B72682D533B04244BF5CEB144494E040--></AD_COLUMN>
+
<!--B836C049655E41B88FB0AD7567E9712D--><AD_COLUMN>
<!--B836C049655E41B88FB0AD7567E9712D--> <AD_COLUMN_ID><![CDATA[B836C049655E41B88FB0AD7567E9712D]]></AD_COLUMN_ID>
<!--B836C049655E41B88FB0AD7567E9712D--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -6787,7 +6823,7 @@
<!--FC1D7E9D9AB741B888B0EC28512900B1--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
<!--FC1D7E9D9AB741B888B0EC28512900B1--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
<!--FC1D7E9D9AB741B888B0EC28512900B1--> <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
-<!--FC1D7E9D9AB741B888B0EC28512900B1--> <POSITION><![CDATA[22]]></POSITION>
+<!--FC1D7E9D9AB741B888B0EC28512900B1--> <POSITION><![CDATA[18]]></POSITION>
<!--FC1D7E9D9AB741B888B0EC28512900B1--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
<!--FC1D7E9D9AB741B888B0EC28512900B1--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
<!--FC1D7E9D9AB741B888B0EC28512900B1--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
diff --git a/src-db/database/sourcedata/AD_ELEMENT.xml b/src-db/database/sourcedata/AD_ELEMENT.xml
--- a/src-db/database/sourcedata/AD_ELEMENT.xml
+++ b/src-db/database/sourcedata/AD_ELEMENT.xml
@@ -491,6 +491,20 @@
<!--6E0A2FC7280F4126A8C632C96BB6F08F--> <ISGLOSSARY><![CDATA[N]]></ISGLOSSARY>
<!--6E0A2FC7280F4126A8C632C96BB6F08F--></AD_ELEMENT>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--><AD_ELEMENT>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <AD_ELEMENT_ID><![CDATA[6F2D0E97FD4F4A95B1D4B9A3A5EB674A]]></AD_ELEMENT_ID>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <COLUMNNAME><![CDATA[Printoffline]]></COLUMNNAME>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <NAME><![CDATA[Print Offline]]></NAME>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <PRINTNAME><![CDATA[Print Offline]]></PRINTNAME>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <DESCRIPTION><![CDATA[Print offline management]]></DESCRIPTION>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <HELP><![CDATA[Defines whether this terminal manages if the receipt printer is offline or online. If this flag is activated and the receipt printer is offline, then receipts are stored after closing the sale locally and will be printed after the receipt printer becomes online.]]></HELP>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--> <ISGLOSSARY><![CDATA[N]]></ISGLOSSARY>
+<!--6F2D0E97FD4F4A95B1D4B9A3A5EB674A--></AD_ELEMENT>
+
<!--70BF9A6FAA2343E0BD6D8433D4740077--><AD_ELEMENT>
<!--70BF9A6FAA2343E0BD6D8433D4740077--> <AD_ELEMENT_ID><![CDATA[70BF9A6FAA2343E0BD6D8433D4740077]]></AD_ELEMENT_ID>
<!--70BF9A6FAA2343E0BD6D8433D4740077--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_FIELD.xml b/src-db/database/sourcedata/AD_FIELD.xml
--- a/src-db/database/sourcedata/AD_FIELD.xml
+++ b/src-db/database/sourcedata/AD_FIELD.xml
@@ -2097,6 +2097,35 @@
<!--6BF969B18D0646BF92BF70E301271370--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--6BF969B18D0646BF92BF70E301271370--></AD_FIELD>
+<!--6F8D432F831140568A2852AFB539B32E--><AD_FIELD>
+<!--6F8D432F831140568A2852AFB539B32E--> <AD_FIELD_ID><![CDATA[6F8D432F831140568A2852AFB539B32E]]></AD_FIELD_ID>
+<!--6F8D432F831140568A2852AFB539B32E--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--6F8D432F831140568A2852AFB539B32E--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--6F8D432F831140568A2852AFB539B32E--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--6F8D432F831140568A2852AFB539B32E--> <NAME><![CDATA[Print Offline]]></NAME>
+<!--6F8D432F831140568A2852AFB539B32E--> <DESCRIPTION><![CDATA[Print offline management]]></DESCRIPTION>
+<!--6F8D432F831140568A2852AFB539B32E--> <HELP><![CDATA[Defines whether this terminal manages if the receipt printer is offline or online. If this flag is activated and the receipt printer is offline, then receipts are stored after closing the sale locally and will be printed after the receipt printer becomes online.]]></HELP>
+<!--6F8D432F831140568A2852AFB539B32E--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--6F8D432F831140568A2852AFB539B32E--> <AD_TAB_ID><![CDATA[FF80818132F311740132F3233778004B]]></AD_TAB_ID>
+<!--6F8D432F831140568A2852AFB539B32E--> <AD_COLUMN_ID><![CDATA[B72682D533B04244BF5CEB144494E040]]></AD_COLUMN_ID>
+<!--6F8D432F831140568A2852AFB539B32E--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--6F8D432F831140568A2852AFB539B32E--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--6F8D432F831140568A2852AFB539B32E--> <DISPLAYLENGTH><![CDATA[1]]></DISPLAYLENGTH>
+<!--6F8D432F831140568A2852AFB539B32E--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--6F8D432F831140568A2852AFB539B32E--> <SEQNO><![CDATA[65]]></SEQNO>
+<!--6F8D432F831140568A2852AFB539B32E--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--6F8D432F831140568A2852AFB539B32E--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--6F8D432F831140568A2852AFB539B32E--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--6F8D432F831140568A2852AFB539B32E--> <SHOWINRELATION><![CDATA[N]]></SHOWINRELATION>
+<!--6F8D432F831140568A2852AFB539B32E--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--6F8D432F831140568A2852AFB539B32E--> <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
+<!--6F8D432F831140568A2852AFB539B32E--> <GRID_SEQNO><![CDATA[65]]></GRID_SEQNO>
+<!--6F8D432F831140568A2852AFB539B32E--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--6F8D432F831140568A2852AFB539B32E--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--6F8D432F831140568A2852AFB539B32E--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--6F8D432F831140568A2852AFB539B32E--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--6F8D432F831140568A2852AFB539B32E--></AD_FIELD>
+
<!--6F9D24D55C364C4CB054B2F96E9523CA--><AD_FIELD>
<!--6F9D24D55C364C4CB054B2F96E9523CA--> <AD_FIELD_ID><![CDATA[6F9D24D55C364C4CB054B2F96E9523CA]]></AD_FIELD_ID>
<!--6F9D24D55C364C4CB054B2F96E9523CA--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src/org/openbravo/retail/posterminal/OBPOSComponentProvider.java b/src/org/openbravo/retail/posterminal/OBPOSComponentProvider.java
--- a/src/org/openbravo/retail/posterminal/OBPOSComponentProvider.java
+++ b/src/org/openbravo/retail/posterminal/OBPOSComponentProvider.java
@@ -106,6 +106,7 @@
"model/paymentmethodcashup",
"model/taxcashup",
"model/returnreasons",
+ "model/offlineprinter",
"components/modalcancel",
"components/subwindow",
"components/leftsubwindow",
diff --git a/src/org/openbravo/retail/posterminal/term/TerminalProperties.java b/src/org/openbravo/retail/posterminal/term/TerminalProperties.java
--- a/src/org/openbravo/retail/posterminal/term/TerminalProperties.java
+++ b/src/org/openbravo/retail/posterminal/term/TerminalProperties.java
@@ -66,6 +66,7 @@
list.add(new HQLProperty("pos.obposTerminaltype.allowpayoncredit", "allowpayoncredit"));
list.add(new HQLProperty("pos.defaultwebpostab", "defaultwebpostab"));
list.add(new HQLProperty("postype", "terminalType"));
+ list.add(new HQLProperty("pos.printoffline", "printoffline"));
addTemplateProperty(Organization.PROPERTY_OBPOSCASHUPTEMPLATE, "printCashUpTemplate", list);
addTemplateProperty(Organization.PROPERTY_OBPOSTICKETTEMPLATE, "printTicketTemplate", list);
@@ -105,4 +106,4 @@
OBContext.restorePreviousMode();
}
}
-}
\ No newline at end of file
+}
diff --git a/web/org.openbravo.retail.posterminal/js/datasource.js b/web/org.openbravo.retail.posterminal/js/datasource.js
--- a/web/org.openbravo.retail.posterminal/js/datasource.js
+++ b/web/org.openbravo.retail.posterminal/js/datasource.js
@@ -84,6 +84,14 @@
};
OB.DS.HWServer.prototype._print = function (templatedata, params, callback) {
+ this._send(this._template(templatedata, params), callback);
+};
+
+OB.DS.HWServer.prototype._template = function (templatedata, params) {
+ return params ? _.template(templatedata, params) : templatedata;
+};
+
+OB.DS.HWServer.prototype._send = function (data, callback) {
if (this.url) {
var me = this;
var ajaxRequest = new enyo.Ajax({
@@ -93,13 +101,19 @@
handleAs: 'json',
timeout: 6000,
contentType: 'application/xml;charset=utf-8',
- data: params ? _.template(templatedata, params) : templatedata,
+ data: data,
success: function (inSender, inResponse) {
if (callback) {
callback(inResponse);
}
},
fail: function (inSender, inResponse) {
+ // prevent more than one entry.
+ if (this.failed) {
+ return;
+ }
+ this.failed = true;
+
if (callback) {
callback({
exception: {
diff --git a/web/org.openbravo.retail.posterminal/js/model/offlineprinter.js b/web/org.openbravo.retail.posterminal/js/model/offlineprinter.js
new file mode 100644
--- /dev/null
+++ b/web/org.openbravo.retail.posterminal/js/model/offlineprinter.js
@@ -0,0 +1,60 @@
+/*
+ ************************************************************************************
+ * Copyright (C) 2013 Openbravo S.L.U.
+ * Licensed under the Openbravo Commercial License version 1.0
+ * You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
+ * or in the legal folder of this module distribution.
+ ************************************************************************************
+ */
+
+/*global Backbone, _ */
+
+(function () {
+
+ OB.Data.Registry.registerModel(OB.Data.ExtensibleModel.extend({
+ modelName: 'OfflinePrinter',
+ tableName: 'OfflinePrinter',
+ entityName: 'OfflinePrinter',
+ source: '',
+ local: true
+ }));
+
+ OB.Model.OfflinePrinter.addProperties([{
+ name: 'id',
+ column: 'offline_id',
+ primaryKey: true,
+ type: 'TEXT'
+ }, {
+ name: 'data',
+ column: 'data',
+ type: 'TEXT'
+ }, {
+ name: 'sendfunction',
+ column: 'sendfunction',
+ type: 'TEXT'
+ }]);
+
+ OB.Model.OfflinePrinter.printPendingJobs = function () {
+ OB.Dal.find(OB.Model.OfflinePrinter, {}, function (jobs) {
+ OB.Model.OfflinePrinter._printPendingJobs(jobs);
+ });
+ };
+
+ OB.Model.OfflinePrinter._printPendingJobs = function (jobs) {
+ var job, sendfunction;
+ if (jobs.length > 0) {
+ job = jobs.at(0);
+ OB.POS.hwserver[job.get('sendfunction')](job.get('data'), function (result) {
+ if (result && result.exception) {
+ OB.UTIL.showError(result.exception.message);
+ } else {
+ // success. delete job and continue printing remaining jobs...
+ OB.Dal.remove(job);
+ jobs.remove(job);
+ OB.Model.OfflinePrinter._printPendingJobs(jobs);
+ }
+ });
+ }
+ };
+
+}());
\ No newline at end of file
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js b/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js
@@ -42,7 +42,7 @@
generatedModel: true,
modelName: 'DiscountFilterRole'
},
- OB.Model.CurrencyPanel, OB.Model.SalesRepresentative, OB.Model.ProductCharacteristic, OB.Model.Brand, OB.Model.ProductChValue, OB.Model.ReturnReason, OB.Model.CashUp, OB.Model.PaymentMethodCashUp, OB.Model.TaxCashUp],
+ OB.Model.CurrencyPanel, OB.Model.SalesRepresentative, OB.Model.ProductCharacteristic, OB.Model.Brand, OB.Model.ProductChValue, OB.Model.ReturnReason, OB.Model.CashUp, OB.Model.OfflinePrinter, OB.Model.PaymentMethodCashUp, OB.Model.TaxCashUp],
loadUnpaidOrders: function () {
// Shows a modal window with the orders pending to be paid
@@ -333,7 +333,9 @@
}
}
me.get('multiOrders').trigger('closed', order);
- me.get('multiOrders').trigger('print', order); // to guaranty execution order
+ me.get('multiOrders').trigger('print', order, {
+ offline: true
+ }); // to guaranty execution order
SyncReadyToSendFunction();
}
@@ -478,14 +480,18 @@
silent: true
});
});
- receipt.trigger('print'); // to guaranty execution order
+ receipt.trigger('print', null, {
+ offline: true
+ }); // to guaranty execution order
orderList.deleteCurrent(true);
}
});
} else {
receipt.trigger('closed', {
callback: function () {
- receipt.trigger('print'); // to guaranty execution order
+ receipt.trigger('print', null, {
+ offline: true
+ }); // to guaranty execution order
orderList.deleteCurrent(true);
}
});
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-print.js b/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-print.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-print.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-print.js
@@ -15,11 +15,12 @@
var terminal = OB.POS.modelterminal.get('terminal');
this.receipt = model.get('order');
this.multiOrders = model.get('multiOrders');
- this.multiOrders.on('print', function (order, forcePrint) {
- this.print(order, forcePrint);
+ this.multiOrders.on('print', function (order, args) {
+
+ this.print(order, args);
}, this);
- this.receipt.on('print', function (order, forcePrint) {
- this.print(null, forcePrint);
+ this.receipt.on('print', function (order, args) {
+ this.print(null, args);
}, this);
this.receipt.on('displayTotal', this.displayTotal, this);
@@ -36,7 +37,9 @@
this.templatecashup = new OB.DS.HWResource(terminal.printCashUpTemplate || OB.OBPOSPointOfSale.Print.CashUpTemplate);
};
- PrintReceipt.prototype.print = function (order, forcePrint) {
+ PrintReceipt.prototype.print = function (order, printargs) {
+
+ printargs = printargs || {};
// Clone the receipt
var receipt = new OB.Model.Order(),
@@ -44,7 +47,8 @@
template;
OB.MobileApp.model.hookManager.executeHooks('OBPRINT_PrePrint', {
- forcePrint: forcePrint,
+ forcePrint: printargs.forcePrint,
+ offline: printargs.offline,
order: order,
template: template
}, function (args) {
@@ -84,19 +88,29 @@
OB.POS.hwserver.print(args.template, {
order: receipt
}, function (result) {
- var otherMe = me;
var myreceipt = receipt;
if (result && result.exception) {
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBPOS_MsgHardwareServerNotAvailable'), OB.I18N.getLabel('OBPOS_MsgPrintAgain'), [{
label: OB.I18N.getLabel('OBMOBC_LblOk'),
action: function () {
- var otherOtherMe = otherMe;
- otherOtherMe.print();
+ me.print(receipt, printargs);
return true;
}
}, {
label: OB.I18N.getLabel('OBMOBC_LblCancel')
- }]);
+ }], {
+ onHideFunction: function (dialog) {
+ if (printargs.offline && OB.POS.modelterminal.get('terminal').printoffline) {
+ OB.Dal.save(new OB.Model.OfflinePrinter({
+ data: result.data,
+ sendfunction: '_send'
+ }));
+ }
+ }
+ });
+ } else {
+ // Success. Try to print the pending receipts.
+ OB.Model.OfflinePrinter.printPendingJobs();
}
});
//Print again when it is a return and the preference is 'Y' or when one of the payments method has the print twice checked
@@ -108,19 +122,29 @@
OB.POS.hwserver.print(args.template, {
order: receipt
}, function (result) {
- var otherMe = me;
var myreceipt = receipt;
if (result && result.exception) {
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBPOS_MsgHardwareServerNotAvailable'), OB.I18N.getLabel('OBPOS_MsgPrintAgain'), [{
label: OB.I18N.getLabel('OBMOBC_LblOk'),
action: function () {
- var otherOtherMe = otherMe;
- otherOtherMe.print();
+ me.print(receipt, printargs);
return true;
}
}, {
label: OB.I18N.getLabel('OBMOBC_LblCancel')
- }]);
+ }], {
+ onHideFunction: function (dialog) {
+ if (printargs.offline && OB.POS.modelterminal.get('terminal').printoffline) {
+ OB.Dal.save(new OB.Model.OfflinePrinter({
+ data: result.data,
+ sendfunction: '_send'
+ }));
+ }
+ }
+ });
+ } else {
+ // Success. Try to print the pending receipts.
+ OB.Model.OfflinePrinter.printPendingJobs();
}
});
}
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/pointofsale.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/pointofsale.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/pointofsale.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/pointofsale.js
@@ -278,19 +278,25 @@
if (args && args.cancelOperation && args.cancelOperation === true) {
return;
}
- receipt.trigger('print', null, true);
+ receipt.trigger('print', null, {
+ force: true
+ });
});
return;
}
receipt.calculateTaxes(function () {
- receipt.trigger('print', null, true);
+ receipt.trigger('print', null, {
+ force: true
+ });
});
return;
}
if (this.model.get('leftColumnViewManager').isMultiOrder()) {
_.each(this.model.get('multiOrders').get('multiOrdersList').models, function (order) {
- this.model.get('multiOrders').trigger('print', order, true);
+ this.model.get('multiOrders').trigger('print', order, {
+ force: true
+ });
}, this);
}
}
@@ -850,6 +856,9 @@
receiptList = this.model.get('orderList');
OB.MobileApp.view.scanningFocus(true);
+ // Try to print the pending receipts.
+ OB.Model.OfflinePrinter.printPendingJobs();
+
this.model.get('leftColumnViewManager').on('change:currentView', function (changedModel) {
if (changedModel.isMultiOrder()) {
this.rightToolbarDisabled({}, {
@@ -997,4 +1006,4 @@
permission: 'OBPOS_retail.pointofsale',
// Not to display it in the menu
menuLabel: 'POS'
-});
\ No newline at end of file
+});
|