details:   https://code.openbravo.com/erp/devel/pi/rev/8bf896a22664
changeset: 34266:8bf896a22664
user:      Asier Martirena <asier.martirena <at> openbravo.com>
date:      Tue Dec 12 18:23:16 2017 +0100
summary:   Related to issue 37460: Check delivered status in C&R.

The delivered status must be different for an order after the cancel and 
replace process depending in the associated shipments

diffstat:

 src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java |  26 
++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diffs (43 lines):

diff -r 85da1c363b49 -r 8bf896a22664 
src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java
--- a/src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java    
Thu Jul 05 08:47:26 2018 +0200
+++ b/src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java    
Tue Dec 12 18:23:16 2017 +0100
@@ -349,6 +349,20 @@
         throw new 
OBException(String.format(OBMessageUtils.messageBD("IsCancelled"),
             oldOrder.getDocumentNo()));
       }
+
+      // Check if there's any shipment associated to the old order
+      final StringBuffer hql = new StringBuffer();
+      hql.append("SELECT 1 ");
+      hql.append("FROM OrderLine AS ol ");
+      hql.append("WHERE EXISTS (SELECT 1 ");
+      hql.append("FROM MaterialMgmtShipmentInOutLine AS sl ");
+      hql.append("WHERE sl.salesOrderLine = ol) ");
+      hql.append("AND ol.salesOrder.id = :orderId)");
+      final Query query = 
OBDal.getInstance().getSession().createQuery(hql.toString());
+      query.setParameter("orderId", oldOrderId);
+      query.setMaxResults(1);
+      final boolean hasShipment = query.uniqueResult() != null;
+
       // Close old reservations
       closeOldReservations(oldOrder);
 
@@ -557,6 +571,18 @@
         callCOrderTaxAdjustment(inverseOrder);
       }
 
+      // Set the delivered status for the old and inverse orders
+      if (createNettingGoodsShipment) {
+        inverseOrder.setDelivered(true);
+        oldOrder.setDelivered(true);
+      } else if (associateShipmentToNewReceipt && replaceOrder) {
+        inverseOrder.setDelivered(false);
+        oldOrder.setDelivered(false);
+      } else {
+        inverseOrder.setDelivered(false);
+        oldOrder.setDelivered(hasShipment ? true : false);
+      }
+
       // Close inverse order
       inverseOrder.setDocumentStatus("CL");
       inverseOrder.setDocumentAction("--");

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to