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