details:   https://code.openbravo.com/erp/devel/pi/rev/9076baa5e480
changeset: 32410:9076baa5e480
user:      Armaignac <collazoandy4 <at> gmail.com>
date:      Fri Jun 23 10:40:44 2017 -0400
summary:   Fixes issue 36297: Wrong schedule details when voiding a prepaid 
invoice

The void process of prepaid invoice was taking into account all payments 
schedule
detail to update their amount with the invoice payment schedule amount.

Now the order payment schedule detail update it it's the one not asociated to 
any invoice
or a new one is created if the order have no pending payment schedule detail.

The invoice prepayment amount was also incorrect when the invoice is created 
from
CreateInvoicesFromOrder process and the order have a discount line.

Now the compute of prepayment amount is made without join the order lines to 
prevent
duplicate the payment schedule paidamt.

details:   https://code.openbravo.com/erp/devel/pi/rev/01727c5b58ac
changeset: 32411:01727c5b58ac
user:      Víctor Martínez Romanos <victor.martinez <at> openbravo.com>
date:      Wed Jul 05 14:16:09 2017 +0200
summary:   Fixed bug 36282: Adapted Grid Legacy process definitions

Four process definitions have been adapted:
Open Close Periods: Just set "Compatibility with Legacy Grids" = N as it's a 
manual UI Pattern process
UpdateInvariants: Just set "Compatibility with Legacy Grids" = N as it's a 
manual UI Pattern process
Modify Payment In Plan and Modify Payment Out Plan: Minor refactor in Handler 
to support new grid definition

diffstat:

 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/OBUIAPP_PROCESS.xml
                                     |   4 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/ModifyPaymentPlanActionHandler.java
 |   7 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
               |  28 +++++++--
 src-db/database/model/functions/C_INVOICE_POST.xml                             
                                         |  20 +++---
 src-db/database/sourcedata/OBUIAPP_PROCESS.xml                                 
                                         |   4 +-
 5 files changed, 41 insertions(+), 22 deletions(-)

diffs (171 lines):

diff -r b06cf6616ecc -r 01727c5b58ac 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/OBUIAPP_PROCESS.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/OBUIAPP_PROCESS.xml
       Wed Jul 05 18:57:28 2017 +0530
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/OBUIAPP_PROCESS.xml
       Wed Jul 05 14:16:09 2017 +0200
@@ -53,7 +53,7 @@
 <!--4EEB3497082C4F2182E16A4371CD5D96-->  
<UIPATTERN><![CDATA[OBUIAPP_PickAndExecute]]></UIPATTERN>
 <!--4EEB3497082C4F2182E16A4371CD5D96-->  
<ISMULTIRECORD><![CDATA[N]]></ISMULTIRECORD>
 <!--4EEB3497082C4F2182E16A4371CD5D96-->  
<IS_EXPLICIT_ACCESS><![CDATA[N]]></IS_EXPLICIT_ACCESS>
-<!--4EEB3497082C4F2182E16A4371CD5D96-->  
<ISGRIDLEGACY><![CDATA[Y]]></ISGRIDLEGACY>
+<!--4EEB3497082C4F2182E16A4371CD5D96-->  
<ISGRIDLEGACY><![CDATA[N]]></ISGRIDLEGACY>
 <!--4EEB3497082C4F2182E16A4371CD5D96-->  
<ISCANADDRECORDSTOSELECTOR><![CDATA[N]]></ISCANADDRECORDSTOSELECTOR>
 <!--4EEB3497082C4F2182E16A4371CD5D96--></OBUIAPP_PROCESS>
 
@@ -71,7 +71,7 @@
 <!--6F87442DF7BC43AB8A666BDED2F7D64E-->  
<UIPATTERN><![CDATA[OBUIAPP_PickAndExecute]]></UIPATTERN>
 <!--6F87442DF7BC43AB8A666BDED2F7D64E-->  
<ISMULTIRECORD><![CDATA[N]]></ISMULTIRECORD>
 <!--6F87442DF7BC43AB8A666BDED2F7D64E-->  
<IS_EXPLICIT_ACCESS><![CDATA[N]]></IS_EXPLICIT_ACCESS>
-<!--6F87442DF7BC43AB8A666BDED2F7D64E-->  
<ISGRIDLEGACY><![CDATA[Y]]></ISGRIDLEGACY>
+<!--6F87442DF7BC43AB8A666BDED2F7D64E-->  
<ISGRIDLEGACY><![CDATA[N]]></ISGRIDLEGACY>
 <!--6F87442DF7BC43AB8A666BDED2F7D64E-->  
<ISCANADDRECORDSTOSELECTOR><![CDATA[N]]></ISCANADDRECORDSTOSELECTOR>
 <!--6F87442DF7BC43AB8A666BDED2F7D64E--></OBUIAPP_PROCESS>
 
diff -r b06cf6616ecc -r 01727c5b58ac 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/ModifyPaymentPlanActionHandler.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/ModifyPaymentPlanActionHandler.java
   Wed Jul 05 18:57:28 2017 +0530
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/ModifyPaymentPlanActionHandler.java
   Wed Jul 05 14:16:09 2017 +0200
@@ -11,7 +11,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2012-2016 Openbravo SLU
+ * All portions are Copyright (C) 2012-2017 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -67,12 +67,15 @@
     JSONObject jsonRequest = null;
     try {
       jsonRequest = new JSONObject(content);
+      JSONObject params = jsonRequest.getJSONObject("_params");
+      JSONObject gridInfo = params.getJSONObject("grid");
+
       String strInvoiceId = jsonRequest.getString("inpcInvoiceId");
       if (strInvoiceId == null || strInvoiceId.isEmpty() || 
"null".equalsIgnoreCase(strInvoiceId)) {
         strInvoiceId = jsonRequest.getString("C_Invoice_ID");
       }
       Invoice invoice = OBDal.getInstance().get(Invoice.class, strInvoiceId);
-      JSONArray gridRows = 
jsonRequest.getJSONArray(ApplicationConstants.ALL_ROWS_PARAM);
+      JSONArray gridRows = 
gridInfo.getJSONArray(ApplicationConstants.ALL_ROWS_PARAM);
       List<FIN_PaymentSchedule> databaseRows = new 
ArrayList<FIN_PaymentSchedule>();
       databaseRows = getDatabaseRows(invoice);
 
diff -r b06cf6616ecc -r 01727c5b58ac 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
 Wed Jul 05 18:57:28 2017 +0530
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
 Wed Jul 05 14:16:09 2017 +0200
@@ -405,8 +405,10 @@
 
               // Updating dummy payment lines with invoice and reverse invoice
               for (FIN_PaymentScheduleDetail fpsd : psdQuery.list()) {
-                // invoice payment detail asociated to the order
-                boolean invoiceFPDOrder = fpsd.getPaymentDetails() != null;
+
+                // Invoice payment detail associated to the order
+                FIN_PaymentDetail invoiceFPDOrder = fpsd.getPaymentDetails();
+                FIN_PaymentSchedule orderPaymentSchedule = 
fpsd.getOrderPaymentSchedule();
 
                 // Create a payment detail
                 FIN_PaymentDetail pd = 
OBProvider.getInstance().get(FIN_PaymentDetail.class);
@@ -425,22 +427,36 @@
 
                 dummyPayment.getFINPaymentDetailList().add(pd);
 
-                if (invoiceFPDOrder) {
+                if (invoiceFPDOrder != null) {
                   StringBuilder orderPSDHQLQuery = new StringBuilder();
                   orderPSDHQLQuery.append(" as fpsd");
                   orderPSDHQLQuery.append(" join fpsd.paymentDetails fpd");
                   orderPSDHQLQuery.append(" where fpd.finPayment.id = 
:paymentId");
                   orderPSDHQLQuery.append(" and fpsd.id <> :invoicePSDId");
+                  orderPSDHQLQuery.append(" and fpsd.invoicePaymentSchedule is 
null");
                   OBQuery<FIN_PaymentScheduleDetail> orderPSDQuery = 
OBDal.getInstance()
                       .createQuery(FIN_PaymentScheduleDetail.class, 
orderPSDHQLQuery.toString());
-                  orderPSDQuery.setNamedParameter("paymentId", 
orderPayment.getId());
+                  orderPSDQuery.setNamedParameter("paymentId", 
invoiceFPDOrder.getFinPayment()
+                      .getId());
                   orderPSDQuery.setNamedParameter("invoicePSDId", 
fpsd.getId());
+                  orderPSDQuery.setMaxResult(1);
+                  FIN_PaymentScheduleDetail orderPSD = 
orderPSDQuery.uniqueResult();
 
-                  for (FIN_PaymentScheduleDetail orderPSD : 
orderPSDQuery.list()) {
+                  if (orderPSD == null) {
+                    // Order with no payment schedule detail, create a new one
+                    orderPSD = 
OBProvider.getInstance().get(FIN_PaymentScheduleDetail.class);
+                    orderPSD.setOrganization(fpsd.getOrganization());
+                    orderPSD.setAmount(fpsd.getAmount());
+                    orderPSD.setBusinessPartner(fpsd.getBusinessPartner());
+                    orderPSD.setPaymentDetails(invoiceFPDOrder);
+                    orderPSD.setOrderPaymentSchedule(orderPaymentSchedule);
+                  } else {
                     // Update order received amount
                     
orderPSD.setAmount(orderPSD.getAmount().add(fpsd.getAmount()));
-                    OBDal.getInstance().save(orderPSD);
                   }
+                  OBDal.getInstance().save(orderPSD);
+
+                  // Update invoice payment schedule
                   FIN_PaymentSchedule ps = fpsd.getInvoicePaymentSchedule();
                   ps.setPaidAmount(BigDecimal.ZERO);
                   ps.setOutstandingAmount(fpsd.getAmount());
diff -r b06cf6616ecc -r 01727c5b58ac 
src-db/database/model/functions/C_INVOICE_POST.xml
--- a/src-db/database/model/functions/C_INVOICE_POST.xml        Wed Jul 05 
18:57:28 2017 +0530
+++ b/src-db/database/model/functions/C_INVOICE_POST.xml        Wed Jul 05 
14:16:09 2017 +0200
@@ -174,7 +174,6 @@
   v_iscashvat C_Invoice.IsCashVat%TYPE;
   v_invoiceline_qtysum NUMBER;
   v_prepaymentamt NUMBER;
-  v_prepayment_inorders NUMBER;
   v_hasTaxes NUMBER;
   v_calendarId C_CALENDAR.C_CALENDAR_ID%TYPE;
    
@@ -1797,21 +1796,22 @@
     END IF;
   END IF;--FINISH_PROCESS
   IF (NOT FINISH_PROCESS AND NOT END_PROCESSING) THEN
-    --Update the prepayment amount from orders related to the invoice lines.
-    SELECT COALESCE(SUM(fps.paidamt),0)
-      INTO v_prepayment_inorders
-    FROM fin_payment_schedule fps
-      JOIN c_order o ON o.c_order_id=fps.c_order_id
-      JOIN c_orderline ol ON ol.c_order_id = o.c_order_id
-      JOIN c_invoiceline il ON il.c_orderline_id = ol.c_orderline_id
-    WHERE il.c_invoice_id = v_Record_ID;
+    -- Update prepayment amount for invoice related to order
+    UPDATE C_Invoice i
+    SET prepaymentamt = (
+      SELECT COALESCE(SUM(fps.paidamt), 0)
+      FROM FIN_Payment_Schedule fps
+      WHERE fps.C_Order_ID = i.C_Order_ID
+    )
+    WHERE i.C_Invoice_ID = v_Record_ID;
+  END IF;--FINISH_PROCESS
+  IF (NOT FINISH_PROCESS AND NOT END_PROCESSING) THEN
 
     -- Finish up -------------------------------------------------------------
     UPDATE C_INVOICE
     SET DocStatus='CO',
         Processed='Y',
         DocAction='RE',
-        PrepaymentAmt=v_prepayment_inorders,
         Updated=now(),
         UpdatedBy=v_UpdatedBy
     WHERE C_Invoice_ID=v_Record_ID;
diff -r b06cf6616ecc -r 01727c5b58ac 
src-db/database/sourcedata/OBUIAPP_PROCESS.xml
--- a/src-db/database/sourcedata/OBUIAPP_PROCESS.xml    Wed Jul 05 18:57:28 
2017 +0530
+++ b/src-db/database/sourcedata/OBUIAPP_PROCESS.xml    Wed Jul 05 14:16:09 
2017 +0200
@@ -450,7 +450,7 @@
 <!--7DC2C8DC186B4C1DB18E147911950861-->  <UIPATTERN><![CDATA[M]]></UIPATTERN>
 <!--7DC2C8DC186B4C1DB18E147911950861-->  
<ISMULTIRECORD><![CDATA[N]]></ISMULTIRECORD>
 <!--7DC2C8DC186B4C1DB18E147911950861-->  
<IS_EXPLICIT_ACCESS><![CDATA[N]]></IS_EXPLICIT_ACCESS>
-<!--7DC2C8DC186B4C1DB18E147911950861-->  
<ISGRIDLEGACY><![CDATA[Y]]></ISGRIDLEGACY>
+<!--7DC2C8DC186B4C1DB18E147911950861-->  
<ISGRIDLEGACY><![CDATA[N]]></ISGRIDLEGACY>
 <!--7DC2C8DC186B4C1DB18E147911950861-->  
<ISCANADDRECORDSTOSELECTOR><![CDATA[N]]></ISCANADDRECORDSTOSELECTOR>
 <!--7DC2C8DC186B4C1DB18E147911950861--></OBUIAPP_PROCESS>
 
@@ -562,7 +562,7 @@
 <!--A832A5DA28FB4BB391BDE883E928DFC5-->  <UIPATTERN><![CDATA[M]]></UIPATTERN>
 <!--A832A5DA28FB4BB391BDE883E928DFC5-->  
<ISMULTIRECORD><![CDATA[Y]]></ISMULTIRECORD>
 <!--A832A5DA28FB4BB391BDE883E928DFC5-->  
<IS_EXPLICIT_ACCESS><![CDATA[N]]></IS_EXPLICIT_ACCESS>
-<!--A832A5DA28FB4BB391BDE883E928DFC5-->  
<ISGRIDLEGACY><![CDATA[Y]]></ISGRIDLEGACY>
+<!--A832A5DA28FB4BB391BDE883E928DFC5-->  
<ISGRIDLEGACY><![CDATA[N]]></ISGRIDLEGACY>
 <!--A832A5DA28FB4BB391BDE883E928DFC5-->  
<ISCANADDRECORDSTOSELECTOR><![CDATA[N]]></ISCANADDRECORDSTOSELECTOR>
 <!--A832A5DA28FB4BB391BDE883E928DFC5--></OBUIAPP_PROCESS>
 

------------------------------------------------------------------------------
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