Attached Files | PayOpenTickets.diff [^] (10,853 bytes) 2021-02-15 12:08 [Show Content] [Hide Content]diff --git a/src-db/database/sourcedata/AD_MESSAGE.xml b/src-db/database/sourcedata/AD_MESSAGE.xml
index e14c5596f3eb8c2d08b686620f52639aad02567d..1d0b8bf00a34e83cbf3cd9e5021a4e3334d5a355 100644
--- a/src-db/database/sourcedata/AD_MESSAGE.xml
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml
@@ -9497,6 +9497,18 @@ Please contact your system administrator.]]></MSGTEXT>
<!--ADA55218AFDF4F0CAA74F59ADC34C526--> <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
<!--ADA55218AFDF4F0CAA74F59ADC34C526--></AD_MESSAGE>
+<!--ADB6AE049FC24964B6333C083B1A7446--><AD_MESSAGE>
+<!--ADB6AE049FC24964B6333C083B1A7446--> <AD_MESSAGE_ID><![CDATA[ADB6AE049FC24964B6333C083B1A7446]]></AD_MESSAGE_ID>
+<!--ADB6AE049FC24964B6333C083B1A7446--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--ADB6AE049FC24964B6333C083B1A7446--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--ADB6AE049FC24964B6333C083B1A7446--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--ADB6AE049FC24964B6333C083B1A7446--> <VALUE><![CDATA[OBPOS_ReceiptNotLoaded]]></VALUE>
+<!--ADB6AE049FC24964B6333C083B1A7446--> <MSGTEXT><![CDATA[It has not been possible to load the following tickets: %0]]></MSGTEXT>
+<!--ADB6AE049FC24964B6333C083B1A7446--> <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--ADB6AE049FC24964B6333C083B1A7446--> <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
+<!--ADB6AE049FC24964B6333C083B1A7446--> <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--ADB6AE049FC24964B6333C083B1A7446--></AD_MESSAGE>
+
<!--ADDDB46DEFA54947B3334A5E95AA17AC--><AD_MESSAGE>
<!--ADDDB46DEFA54947B3334A5E95AA17AC--> <AD_MESSAGE_ID><![CDATA[ADDDB46DEFA54947B3334A5E95AA17AC]]></AD_MESSAGE_ID>
<!--ADDDB46DEFA54947B3334A5E95AA17AC--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/web/org.openbravo.retail.posterminal/js/components/modal-pay-open-tickets.js b/web/org.openbravo.retail.posterminal/js/components/modal-pay-open-tickets.js
index d8bfd9342b90b7be1869f6a6ed8e144903a40549..76215bfb1e507c588c2ef513ff3d3a7e58c58afe 100644
--- a/web/org.openbravo.retail.posterminal/js/components/modal-pay-open-tickets.js
+++ b/web/org.openbravo.retail.posterminal/js/components/modal-pay-open-tickets.js
@@ -378,9 +378,10 @@ enyo.kind({
disableDoneButton: function(value) {
this.$.doneMultiOrdersButton.setDisabled(value);
},
- doneAction: function() {
+ doneAction: async function() {
var execution = OB.UTIL.ProcessController.start('payOpenTicketsValidation'),
selectedMultiOrders = [],
+ loadedOrderThatWereNotLoaded = [],
alreadyPaidOrders = [],
alreadyPaidOrdersDocNo = '',
me = this,
@@ -421,6 +422,10 @@ enyo.kind({
},
function(args) {
if (args && args.cancellation) {
+ _.each(loadedOrderThatWereNotLoaded, order => {
+ OB.Dal.remove(order, null, null);
+ });
+
OB.UTIL.ProcessController.finish(
'payOpenTicketsValidation',
execution
@@ -430,10 +435,6 @@ enyo.kind({
me.doSelectMultiOrders({
value: selectedMultiOrders,
callback: function() {
- OB.UTIL.ProcessController.finish(
- 'payOpenTicketsValidation',
- execution
- );
OB.POS.terminal.$.containerWindow
.getRoot()
.$.multiColumn.$.panels.addClass(
@@ -452,7 +453,7 @@ enyo.kind({
});
};
- addOrdersToOrderList = _.after(checkedMultiOrders.length, function() {
+ addOrdersToOrderList = function() {
if (alreadyPaidOrdersDocNo) {
if (checkedMultiOrders.length === alreadyPaidOrders.length) {
OB.UTIL.showConfirmation.display(
@@ -486,7 +487,7 @@ enyo.kind({
} else {
showSomeOrderIsPaidPopup();
}
- });
+ };
this.doHideThisPopup();
// Check if the selected orders are payable by the 'Pay Open Tickets' flow
@@ -556,101 +557,105 @@ enyo.kind({
return;
}
this.owner.owner.model.deleteMultiOrderList();
- _.each(checkedMultiOrders, function(iter) {
- var idx = me.owner.owner.model
- .get('orderList')
- .map(function(order) {
- return order.id;
- })
- .indexOf(iter.id);
- if (idx !== -1) {
- var order = me.owner.owner.model.get('orderList').at(idx);
- order.set('checked', true);
- order.save();
- selectedMultiOrders.push(order);
- addOrdersToOrderList();
- } else {
- process.exec(
- {
- orderid: iter.id,
- crossStore: OB.UTIL.isCrossStoreReceipt(iter)
- ? iter.get('organization')
- : null
- },
- function(data) {
- if (data && data.exception) {
- OB.UTIL.ProcessController.finish(
- 'payOpenTicketsValidation',
- execution
- );
- OB.UTIL.showLoading(false);
- OB.UTIL.showConfirmation.display('', data.exception.message);
- } else if (data) {
- if (data[0].recordInImportEntry) {
- OB.UTIL.ProcessController.finish(
- 'payOpenTicketsValidation',
- execution
- );
- OB.UTIL.showLoading(false);
- OB.UTIL.showConfirmation.display(
- OB.I18N.getLabel('OBMOBC_Error'),
- OB.I18N.getLabel('OBPOS_ReceiptNotSynced', [
- data[0].documentNo
- ])
+
+ const loadOrders = async function(iter) {
+ return new Promise((resolve, reject) => {
+ var idx = me.owner.owner.model
+ .get('orderList')
+ .map(function(order) {
+ return order.id;
+ })
+ .indexOf(iter.id);
+ if (idx !== -1) {
+ var order = me.owner.owner.model.get('orderList').at(idx);
+ order.set('checked', true);
+ order.save();
+ selectedMultiOrders.push(order);
+ resolve();
+ } else {
+ process.exec(
+ {
+ orderid: iter.id,
+ crossStore: OB.UTIL.isCrossStoreReceipt(iter)
+ ? iter.get('organization')
+ : null
+ },
+ function(data) {
+ if (data && data.exception) {
+ reject();
+ } else if (data) {
+ if (data[0].recordInImportEntry) {
+ reject();
+ }
+ me.owner.owner.model.get('orderList').newPaidReceipt(
+ data[0],
+ function(order) {
+ if (
+ (order.get('isPaid') || order.get('isLayaway')) &&
+ order.getPayment() >= order.getGross()
+ ) {
+ OB.Dal.remove(order);
+ alreadyPaidOrders.push(order);
+ alreadyPaidOrdersDocNo = alreadyPaidOrdersDocNo.concat(
+ ' ' + order.get('documentNo')
+ );
+ resolve();
+ } else {
+ order.set('loadedFromServer', true);
+ me.owner.owner.model
+ .get('orderList')
+ .addMultiReceipt(order);
+ order.set('checked', iter.get('checked'));
+ OB.DATA.OrderTaxes(order);
+ order.set('belongsToMultiOrder', true);
+ order.calculateReceipt(function() {
+ selectedMultiOrders.push(order);
+ resolve(order);
+ });
+ }
+ },
+ function() {
+ reject();
+ }
);
- return;
+ } else {
+ reject();
}
- me.owner.owner.model.get('orderList').newPaidReceipt(
- data[0],
- function(order) {
- if (
- (order.get('isPaid') || order.get('isLayaway')) &&
- order.getPayment() >= order.getGross()
- ) {
- OB.Dal.remove(order);
- alreadyPaidOrders.push(order);
- alreadyPaidOrdersDocNo = alreadyPaidOrdersDocNo.concat(
- ' ' + order.get('documentNo')
- );
- addOrdersToOrderList();
- } else {
- order.set('loadedFromServer', true);
- me.owner.owner.model
- .get('orderList')
- .addMultiReceipt(order);
- order.set('checked', iter.get('checked'));
- OB.DATA.OrderTaxes(order);
- order.set('belongsToMultiOrder', true);
- order.calculateReceipt(function() {
- selectedMultiOrders.push(order);
- addOrdersToOrderList();
- });
- }
- },
- function() {
- OB.UTIL.ProcessController.finish(
- 'payOpenTicketsValidation',
- execution
- );
- OB.UTIL.showLoading(false);
- }
- );
- } else {
- OB.UTIL.ProcessController.finish(
- 'payOpenTicketsValidation',
- execution
- );
+ },
+ function(data) {
+ reject();
}
- },
- function(data) {
- OB.UTIL.ProcessController.finish(
- 'payOpenTicketsValidation',
- execution
- );
- }
- );
+ );
+ }
+ });
+ };
+ let error = [];
+ for (let i = 0; i < checkedMultiOrders.length; i++) {
+ const order = checkedMultiOrders[i];
+ try {
+ const result = await loadOrders(order);
+
+ if (result) {
+ loadedOrderThatWereNotLoaded.push(iter);
+ }
+ } catch (e) {
+ error.push(iter.get('documentNo'));
}
- });
+ }
+
+ if (error.length > 0) {
+ OB.UTIL.showConfirmation.display(
+ OB.I18N.getLabel('OBMOBC_Error'),
+ OB.I18N.getLabel('OBPOS_ReceiptNotLoaded', [error.join(', ')])
+ );
+ }
+
+ if (error.length < checkedMultiOrders.length) {
+ addOrdersToOrderList();
+ }
+
+ OB.UTIL.ProcessController.finish('payOpenTicketsValidation', execution);
+ OB.UTIL.showLoading(false);
},
cancelAction: function() {
this.doHideThisPopup();
|