# HG changeset patch
# User Alvaro Ferraz <alvaro.ferraz@openbravo.com>
# Date 1434560026 -7200
#      Wed Jun 17 18:53:46 2015 +0200
# Node ID 7f4860b6a455fda04ea4f34e446c26c1510a02d9
# Parent  56e313660729ba9148ad01703190a43a604ae231
Fixes issue 30020: Payment schedule amount incorrectly calculated

FIN_PaymentProcess was not setting isinvoicepaid = true when processing a payment related to an order.
Also, APRM_ISPAYMENTCONFIRMED function, was not taking into account isinvoicepaid when checking if a payment related to an order was confirmed.
Name of preference in UpdatePaymentPlan modulescript has been update to run it again and fix wrong data created by the issue.

diff --git a/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_ISPAYMENTCONFIRMED.xml b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_ISPAYMENTCONFIRMED.xml
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_ISPAYMENTCONFIRMED.xml
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_ISPAYMENTCONFIRMED.xml
@@ -19,7 +19,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) 2011-2014 Openbravo SLU
+* All portions are Copyright (C) 2011-2015 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************/
@@ -33,6 +33,7 @@
   TYPE RECORD IS REF CURSOR;
   Cur_Dbprefix RECORD;
   v_invoicepaidstatus  VARCHAR2(32);
+  v_fin_payment_schedule_order VARCHAR(32);
   v_fin_payment_schedule_invoice VARCHAR(32);
   v_p_fin_psd_id VARCHAR(32);
 BEGIN
@@ -52,13 +53,13 @@
   END IF;
   
   IF (v_p_fin_psd_id is not null ) THEN
-  select isinvoicepaid , fin_payment_schedule_invoice
-  into v_isinvoicepaid , v_fin_payment_schedule_invoice
+  select isinvoicepaid, fin_payment_schedule_order, fin_payment_schedule_invoice
+  into v_isinvoicepaid, v_fin_payment_schedule_order, v_fin_payment_schedule_invoice
   from fin_payment_scheduledetail
   where fin_payment_scheduledetail_id=v_p_fin_psd_id;
   END IF;
 
-  IF (v_fin_payment_schedule_invoice is not null)THEN
+  IF (v_fin_payment_schedule_order is not null OR v_fin_payment_schedule_invoice is not null) THEN
     IF(v_isinvoicepaid='Y')THEN
     -- core intermediate statuses
     v_isPaymentConfirmed := 'Y';
diff --git a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
@@ -451,6 +451,7 @@
                         paymentScheduleDetail.getOrderPaymentSchedule(),
                         paymentScheduleDetail.getAmount(),
                         paymentScheduleDetail.getWriteoffAmount());
+                    paymentScheduleDetail.setInvoicePaid(true);
                   }
                   // when generating credit for a BP SO_CreditUsed is also updated
                   if (paymentScheduleDetail.getInvoicePaymentSchedule() == null
diff --git a/src-util/modulescript/build/classes/org/openbravo/modulescript/UpdatePaymentPlanData.class b/src-util/modulescript/build/classes/org/openbravo/modulescript/UpdatePaymentPlanData.class
index 120ef0ba7e8c244adb75337a9c61ed1cb7fee26b..d4ca2e682ccc885a8ce078266229c7b3151959f0
GIT binary patch
literal 8048
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
GJHG_Fd)F2K

diff --git a/src-util/modulescript/src/org/openbravo/modulescript/UpdatePaymentPlan_data.xsql b/src-util/modulescript/src/org/openbravo/modulescript/UpdatePaymentPlan_data.xsql
--- a/src-util/modulescript/src/org/openbravo/modulescript/UpdatePaymentPlan_data.xsql
+++ b/src-util/modulescript/src/org/openbravo/modulescript/UpdatePaymentPlan_data.xsql
@@ -54,7 +54,7 @@
         SELECT count(*) as exist
         FROM DUAL
         WHERE EXISTS (SELECT 1 FROM ad_preference
-                      WHERE attribute = 'PaymentPlanUpdatedV2')
+                      WHERE attribute = 'PaymentPlanUpdatedV4')
       ]]>
     </Sql>
   </SqlMethod>
@@ -66,7 +66,7 @@
            ad_preference_id, ad_client_id, ad_org_id, isactive,
            createdby, created, updatedby, updated,attribute
            ) VALUES (
-           get_uuid(), '0', '0', 'Y', '0', NOW(), '0', NOW(),'PaymentPlanUpdatedV2')
+           get_uuid(), '0', '0', 'Y', '0', NOW(), '0', NOW(),'PaymentPlanUpdatedV4')
          ]]>
         </Sql>
    </SqlMethod>
