details: https://code.openbravo.com/erp/devel/pi/rev/19e19b829b48
changeset: 24222:19e19b829b48
user: Víctor Martínez Romanos <victor.martinez <at> openbravo.com>
date: Thu Aug 07 18:35:47 2014 +0200
summary: Issue 27140: fixed execution in Oracle
The previous SQL queries raised a ORA-01403: no data found exception when no
records were found.
They have been rewritten to use count(*) instead, which either returns 0 if no
records are found or 1 when it finds any record.
diffstat:
src-db/database/model/functions/C_ORDER_POST1.xml | 20 ++++++++++----------
1 files changed, 10 insertions(+), 10 deletions(-)
diffs (59 lines):
diff -r 09161e698613 -r 19e19b829b48
src-db/database/model/functions/C_ORDER_POST1.xml
--- a/src-db/database/model/functions/C_ORDER_POST1.xml Thu Aug 07 15:19:21
2014 +0200
+++ b/src-db/database/model/functions/C_ORDER_POST1.xml Thu Aug 07 18:35:47
2014 +0200
@@ -61,9 +61,9 @@
v_IsBinding CHAR(1):='Y';
v_istaxincluded CHAR(1);
--
- ToDeliver CHAR(1):='N';
- ToInvoice CHAR(1):='N';
- ToDeliverOrToInvoice CHAR(1):='N';
+ ToDeliver NUMBER:=0;
+ ToInvoice NUMBER:=0;
+ ToDeliverOrToInvoice NUMBER:=0;
--
InOut_ID VARCHAR2(32);
Invoice_ID VARCHAR2(32);
@@ -1360,11 +1360,11 @@
*/
BEGIN
v_ResultStr:='OrderCompleteCheck';
- SELECT 'Y' INTO ToDeliverOrToInvoice FROM DUAL
+ SELECT COUNT(*) INTO ToDeliverOrToInvoice FROM DUAL
WHERE 0 <> ANY (select QtyOrdered - QtyDelivered from c_orderline
where c_order_id = v_Record_ID)
OR 0 <> ANY (select QtyOrdered - QtyInvoiced from c_orderline
where c_order_id = v_Record_ID);
- -- If something to deliver or to invoice, then ToDeliverOrToInvoice =
'Y'
- IF (ToDeliverOrToInvoice <> 'Y') THEN
+ -- If something to deliver or to invoice, then ToDeliverOrToInvoice = 1
+ IF (ToDeliverOrToInvoice = 0) THEN
DBMS_OUTPUT.PUT_LINE('OrderComplete') ;
IF (v_DocAction='CL') THEN
END_PROCESSING:=TRUE;
@@ -1507,15 +1507,15 @@
/**
* Final Completeness check
*/
- SELECT 'Y' INTO ToDeliver FROM DUAL
+ SELECT COUNT(*) INTO ToDeliver FROM DUAL
WHERE 0 <> ANY (select QtyOrdered - QtyDelivered from c_orderline where
c_order_id = v_Record_ID);
- SELECT 'Y' INTO ToInvoice FROM DUAL
+ SELECT COUNT(*) INTO ToInvoice FROM DUAL
WHERE 0 <> ANY (select QtyOrdered - QtyInvoiced from c_orderline where
c_order_id = v_Record_ID);
DBMS_OUTPUT.PUT_LINE('To deliver - ' || ToDeliver) ;
DBMS_OUTPUT.PUT_LINE('ToInvoice - ' || ToInvoice) ;
DBMS_OUTPUT.PUT_LINE('v_DocSubTypeSO - ' || v_DocSubTypeSO) ;
-- Nothing to Deliver + Invoice for (W)illCall(I)nvoice and
(W)alkIn(R)eceipt
- IF (v_DocSubTypeSO IN ('WI', 'WR') AND ToDeliver <> 'Y' AND ToInvoice <>
'Y') THEN
+ IF (v_DocSubTypeSO IN ('WI', 'WR') AND ToDeliver=0 AND ToInvoice=0) THEN
UPDATE C_ORDER
SET DocStatus='CO',
DocAction='--',
@@ -1531,7 +1531,7 @@
END IF;
END IF;
-- Nothing to Deliver for (W)illCall(P)ickup (Invoice generated
independently)
- IF (v_DocSubTypeSO='WP' AND ToDeliver <> 'Y') THEN
+ IF (v_DocSubTypeSO='WP' AND ToDeliver=0) THEN
UPDATE C_ORDER
SET DocStatus='CO',
DocAction='--',
------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls.
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits