details:   https://code.openbravo.com/erp/devel/pi/rev/0fe55503791b
changeset: 30047:0fe55503791b
user:      Atul Gaware <atul.gaware <at> openbravo.com>
date:      Fri Sep 02 01:36:34 2016 +0530
summary:   Fixes issue 33500: Wrong PSD Credit Memo invoices

In case of credit memo's invoiced amount as well as payment amount should be as 
per the variable multipler arc.
Sign of quantities in case of credit memo APC / ARC are opposite so skip the 
check done in other related issue.

diffstat:

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

diffs (54 lines):

diff -r 7cbdcc419167 -r 0fe55503791b 
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 Sep 07 12:06:09 2016 -0400
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml
     Fri Sep 02 01:36:34 2016 +0530
@@ -226,16 +226,19 @@
              fin_payment_scheduledetail.fin_payment_detail_id,
              fin_payment_scheduledetail.isinvoicepaid AS paid,
              CASE WHEN fin_payment_scheduledetail.fin_payment_detail_id is not 
null THEN 0 ELSE 1 END AS priority
-      FROM c_invoiceline, c_orderline, fin_payment_schedule,
+      FROM c_invoice, c_doctype, c_invoiceline, c_orderline, 
fin_payment_schedule,
         fin_payment_scheduledetail LEFT JOIN fin_payment_detail ON 
fin_payment_scheduledetail.fin_payment_detail_id = 
fin_payment_detail.fin_payment_detail_id
                                    LEFT JOIN fin_payment ON 
fin_payment_detail.fin_payment_id = fin_payment.fin_payment_id
-      WHERE c_invoiceline.c_orderline_id = c_orderline.c_orderline_id
+      WHERE c_invoice.c_doctype_id = c_doctype.c_doctype_id
+        AND c_invoice.c_invoice_id = c_invoiceline.c_invoice_id
+        AND c_invoiceline.c_orderline_id = c_orderline.c_orderline_id
         AND c_orderline.c_order_id = fin_payment_schedule.c_order_id
         AND fin_payment_schedule.fin_payment_schedule_id = 
fin_payment_scheduledetail.fin_payment_schedule_order
         AND fin_payment_scheduledetail.fin_payment_schedule_invoice is null
         AND fin_payment_scheduledetail.ISCANCELED <> 'Y'
-        AND c_invoiceline.c_invoice_id = invoice_id
-        AND sign(c_invoiceline.qtyinvoiced) = sign(c_orderline.qtyordered)
+        AND c_invoice.c_invoice_id = invoice_id
+        AND ((c_doctype.isreversal='N' AND sign(c_invoiceline.qtyinvoiced) = 
sign(c_orderline.qtyordered))
+        OR (c_doctype.isreversal='Y' AND sign(-c_invoiceline.qtyinvoiced) = 
sign(c_orderline.qtyordered)))
       ORDER BY CASE WHEN fin_payment_scheduledetail.fin_payment_detail_id is 
not null THEN 0 ELSE 1 END, c_orderline.c_order_id;
       order_schdet cur_order_schdet%ROWTYPE;
 
@@ -332,7 +335,7 @@
           END IF;
           v_pendingamount := v_pendingamount - v_paymentamount;
           v_scheduledamount := C_Currency_Round((v_paymentamount * 
v_multiplierarc), v_currency_id, NULL);
-          IF (v_scheduledamount < 0) THEN
+          IF (v_scheduledamount < 0 OR v_MultiplierARC = -1) THEN
             v_negativeps := -1;
           ELSE
             v_negativeps := 1;
@@ -388,7 +391,7 @@
               IF (v_IsSOTrx = 'Y') THEN
                 SELECT COALESCE(COUNT(*),0) INTO v_Count
                 FROM c_orderline
-                WHERE qtyinvoiced<>qtyordered
+                WHERE qtyordered <> (qtyinvoiced*v_MultiplierARC)
                   AND c_order_id = order_schdet.order_id;
               ELSE
                 SELECT count(*) INTO v_count
@@ -399,7 +402,7 @@
                                                   AND mpo.c_invoiceline_id IS 
NOT NULL
                   WHERE ol.c_order_id = order_schdet.order_id
                   GROUP BY ol.c_orderline_id, ol.qtyordered) a
-                WHERE a.matchedqty != a.qtyordered;
+                WHERE a.qtyordered != (a.matchedqty*v_MultiplierARC);
               END IF;
             END IF;
 

------------------------------------------------------------------------------
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to