details:   https://code.openbravo.com/erp/devel/pi/rev/7a0507ddc412
changeset: 13294:7a0507ddc412
user:      Gorka Ion Damián <gorkaion.damian <at> openbravo.com>
date:      Wed Jul 27 10:37:43 2011 +0200
summary:   Fixed issue 17966.Add checkings to know if we are processing the 
last payment schedule.

diffstat:

 
modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml
 |  25 +++++++++-
 1 files changed, 23 insertions(+), 2 deletions(-)

diffs (63 lines):

diff -r 2dc1e3222b4c -r 7a0507ddc412 
modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml
     Wed Jul 27 10:27:12 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml
     Wed Jul 27 10:37:43 2011 +0200
@@ -182,6 +182,7 @@
       v_scheduledetailid VARCHAR2(32);
       v_new_scheduledetailid VARCHAR2(32);
       v_ConsumedGranTotal NUMBER:= 0;
+      v_paymentCount NUMBER:= 0;
 
       CURSOR cur_order_schdet (invoice_id VARCHAR) IS
       SELECT c_orderline.c_order_id AS order_id, 
fin_payment_scheduledetail.amount + 
COALESCE(fin_payment_scheduledetail.writeoffamt,0) AS amount,
@@ -229,6 +230,23 @@
       
       IF (v_pendingAmount <> 0) THEN
 
+        SELECT count(*) INTO v_paymentcount
+        FROM (
+            SELECT line, percentage, onremainder, excludetax,
+                   COALESCE(paymentrule, v_paymentrule) AS paymentrule,
+                   fixmonthday, fixmonthday2, fixmonthday3, netdays,
+                   fixmonthoffset, netday, isnextbusinessday
+            FROM c_paymenttermline
+            WHERE c_paymentterm_id=v_paymentterm
+              AND isactive = 'Y'
+            UNION
+            -- Header of paymentTerm is processed at last
+            SELECT 9999 AS line, 100 AS percentage, 'Y' AS onremainder, 'N' AS 
excludetax,
+                   v_paymentRule AS paymentrule,
+                   fixmonthday, fixmonthday2, fixmonthday3, netdays,
+                   fixmonthoffset, netday, isnextbusinessday
+            FROM c_paymentterm
+            WHERE c_paymentterm_id=v_paymentterm);
         FOR cur_payments IN (
             SELECT line, percentage, onremainder, excludetax,
                    COALESCE(paymentrule, v_paymentrule) AS paymentrule,
@@ -248,6 +266,8 @@
             ORDER BY line
           )
         LOOP
+          -- Decrease v_paymentcount, when its value is 0 it's tha last 
payment.
+          v_paymentcount := v_paymentcount - 1;
           v_plannedDate:=C_Paymentduedate(v_bpartner_id, v_issotrx, 
cur_payments.fixmonthday, cur_payments.fixmonthday2, cur_payments.fixmonthday3, 
cur_payments.netdays, cur_payments.fixmonthoffset, cur_payments.netday, 
cur_payments.isnextbusinessday, v_dateinvoiced);
 
           IF(cur_payments.excludetax='Y') THEN
@@ -356,7 +376,8 @@
                 WHERE a.matchedqty != a.qtyordered;
               END IF;
 
-              IF(v_Count=0) THEN
+              -- The order is completely invoiced and it is the last payment 
schedule
+              IF(v_Count = 0 AND v_paymentcount = 0) THEN
                 v_differenceamount:= 0;
                 -- Calculate
                 SELECT COALESCE(SUM(amount), 0) + v_pendingAmountFromOrder 
INTO v_pendingAmountFromOrder
@@ -425,7 +446,7 @@
               v_notassignedamount := v_notassignedamount - 
v_scheduledetailamount;
               v_scheduledamount := v_scheduledamount - v_scheduledetailamount;
 
-              IF (v_scheduledamount <= 0) THEN
+              IF (v_scheduledamount <= 0 AND v_paymentcount > 0) THEN
                 -- actual payment processed.
                 v_oldorder := order_schdet.order_id;
                 EXIT;

------------------------------------------------------------------------------
Got Input?   Slashdot Needs You.
Take our quick survey online.  Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to