details: /erp/stable/2.50/rev/692c9a694d11
changeset: 9392:692c9a694d11
user: Adrián Romero <adrianromero <at> openbravo.com>
date: Wed Apr 27 18:14:09 2011 +0200
summary: Issue 0016056: A sales order with discount cannot be reactivated nor
closed
It has been fixed the process of closing sales orders. Discounts are
recalculated reusing previous discount lines if it is not possible to delete
these discount lines because there already exist records linked to these
discount lines
details: /erp/stable/2.50/rev/b89aedcaf3d2
changeset: 9393:b89aedcaf3d2
user: Adrián Romero <adrianromero <at> openbravo.com>
date: Mon May 02 10:14:57 2011 +0200
summary: Fixes issue 0015943: The date of documents created by a process
includes the time, but when creating manually they don't include time
It has been removed the time in the fields movementdate and dateacct when
creating a new shipment in the function M_INOUT_CREATE
diffstat:
src-db/database/model/functions/C_ORDER_POST1.xml | 105 +++++++++++++-------
src-db/database/model/functions/M_INOUT_CREATE.xml | 4 +-
2 files changed, 71 insertions(+), 38 deletions(-)
diffs (164 lines):
diff -r 2e20ee3790ed -r b89aedcaf3d2
src-db/database/model/functions/C_ORDER_POST1.xml
--- a/src-db/database/model/functions/C_ORDER_POST1.xml Fri Apr 29 19:25:33
2011 +0200
+++ b/src-db/database/model/functions/C_ORDER_POST1.xml Mon May 02 10:14:57
2011 +0200
@@ -104,6 +104,7 @@
v_Discount NUMBER;
v_precision NUMBER;
Cur_OrderLine RECORD;
+ v_DiscountExist NUMBER;
BEGIN
IF(p_PInstance_ID IS NOT NULL) THEN
-- Update AD_PInstance
@@ -616,19 +617,43 @@
END IF;
END IF;
END IF;--END_PROCESSING
+
IF(NOT FINISH_PROCESS AND NOT END_PROCESSING) THEN
/**************************************************************************
- * Calculate Discounts only when processing the document.
+ * Calculate Discounts
*************************************************************************/
- -- AProove, COmplete, PRocess
- IF(v_DocAction IN('AP', 'CO', 'PR')) THEN
+ -- Delete first previous discounts (if possible) and then recalculate
them
- -- Delete first previous discounts if any and then recalculate them
+ UPDATE C_ORDER
+ SET DocStatus='IP', -- In progress
+ Processing='N',
+ Processed='N',
+ Updated=now(),
+ UpdatedBy=v_User
+ WHERE C_Order_ID=v_Record_ID;
+
DELETE
FROM C_ORDERLINE
WHERE C_ORDER_DISCOUNT_ID IS NOT NULL
+ AND C_ORDER_ID = v_Record_ID
+ AND NOT EXISTS (SELECT C_INVOICELINE_ID FROM C_INVOICELINE WHERE
C_INVOICELINE.C_ORDERLINE_ID = C_ORDERLINE.C_ORDERLINE_ID)
+ AND NOT EXISTS (SELECT M_INOUTLINE_ID FROM M_INOUTLINE WHERE
M_INOUTLINE.C_ORDERLINE_ID = C_ORDERLINE.C_ORDERLINE_ID)
+ AND NOT EXISTS (SELECT M_MATCHPO_ID FROM M_MATCHPO WHERE
M_MATCHPO.C_ORDERLINE_ID = C_ORDERLINE.C_ORDERLINE_ID);
+
+ UPDATE C_ORDERLINE
+ SET pricelist = 0, priceactual = 0, pricelimit = 0, linenetamt = 0,
pricestd = 0
+ WHERE C_ORDER_DISCOUNT_ID IS NOT NULL
AND C_ORDER_ID=v_Record_ID;
+
+ UPDATE C_ORDER
+ SET DocStatus=v_DocStatus, -- restore
+ Processing=v_IsProcessing,
+ Processed=v_IsProcessed,
+ Updated=now(),
+ UpdatedBy=v_User
+ WHERE C_Order_ID=v_Record_ID;
+
v_CumDiscount:=0;
v_OldCumDiscount:=0;
v_Line:=10;
@@ -674,43 +699,51 @@
ELSE
v_Discount:=(-1) * Cur_TaxDiscount.LINENETAMT *
Cur_COrderDiscount.Discount/100;
END IF;
- v_OrderLineSeqNo:=10 + v_OrderLineSeqNo;
- v_OrderLine:=get_uuid() ;
+
+ SELECT COUNT(*) INTO v_DiscountExist FROM C_ORDERLINE
+ WHERE C_ORDERLINE.C_ORDER_DISCOUNT_ID =
Cur_COrderDiscount.C_ORDER_DISCOUNT_ID
+ AND C_ORDERLINE.C_TAX_ID = Cur_TaxDiscount.C_TAX_ID;
- INSERT INTO c_orderline
- (
- c_orderline_id, ad_client_id, ad_org_id, isactive, created,
createdby,
- updated, updatedby, c_order_id, line, c_bpartner_id,
c_bpartner_location_id,
- dateordered, datepromised, datedelivered, dateinvoiced,
description,
- m_product_id, m_warehouse_id, directship, c_uom_id,
qtyordered,
- qtyreserved, qtydelivered, qtyinvoiced, m_shipper_id,
c_currency_id,
- pricelist, priceactual, pricelimit, linenetamt, discount,
freightamt,
- c_charge_id, chargeamt, c_tax_id, s_resourceassignment_id,
ref_orderline_id,
- m_attributesetinstance_id, isdescription, quantityorder,
m_product_uom_id,
- m_offer_id, pricestd, C_ORDER_DISCOUNT_ID
- )
- VALUES
- (
- v_OrderLine, v_Client_ID, v_Org_ID, 'Y', now(), v_UpdatedBy,
- now(), v_UpdatedBy, v_Record_ID, v_OrderLineSeqNo, NULL, NULL,
- now(), now(), now(), now(), Cur_COrderDiscount.NAME,
- Cur_COrderDiscount.M_PRODUCT_ID, v_M_Warehouse_ID, 'N',
Cur_COrderDiscount.C_UOM_ID, 1,
- 0, 0, 0, NULL, v_c_currency_id,
- ROUND(v_Discount,v_precision), ROUND(v_Discount,v_precision),
ROUND(v_Discount,v_precision), ROUND(v_Discount,v_precision), 0, 0,
- NULL, NULL, Cur_TaxDiscount.C_TAX_ID, NULL, NULL,
- NULL, 'N', NULL, NULL,
- NULL, ROUND(v_Discount,v_precision), NULL
- );
-
- UPDATE C_ORDERLINE
- SET C_ORDER_DISCOUNT_ID=Cur_COrderDiscount.C_ORDER_DISCOUNT_ID
- WHERE C_ORDERLINE_ID=v_OrderLine;
-
+ IF (v_DiscountExist = 0) THEN
+ v_OrderLineSeqNo:=10 + v_OrderLineSeqNo;
+ v_OrderLine:=get_uuid();
+ INSERT INTO c_orderline
+ (
+ c_orderline_id, ad_client_id, ad_org_id, isactive,
created, createdby,
+ updated, updatedby, c_order_id, line, c_bpartner_id,
c_bpartner_location_id,
+ dateordered, datepromised, datedelivered, dateinvoiced,
description,
+ m_product_id, m_warehouse_id, directship, c_uom_id,
qtyordered,
+ qtyreserved, qtydelivered, qtyinvoiced, m_shipper_id,
c_currency_id,
+ pricelist, priceactual, pricelimit, linenetamt,
discount, freightamt,
+ c_charge_id, chargeamt, c_tax_id,
s_resourceassignment_id, ref_orderline_id,
+ m_attributesetinstance_id, isdescription,
quantityorder, m_product_uom_id,
+ m_offer_id, pricestd, C_ORDER_DISCOUNT_ID
+ )
+ VALUES
+ (
+ v_OrderLine, v_Client_ID, v_Org_ID, 'Y', now(),
v_UpdatedBy,
+ now(), v_UpdatedBy, v_Record_ID, v_OrderLineSeqNo,
NULL, NULL,
+ now(), now(), now(), now(), Cur_COrderDiscount.NAME,
+ Cur_COrderDiscount.M_PRODUCT_ID, v_M_Warehouse_ID, 'N',
Cur_COrderDiscount.C_UOM_ID, 1,
+ 0, 0, 0, NULL, v_c_currency_id,
+ ROUND(v_Discount,v_precision),
ROUND(v_Discount,v_precision), ROUND(v_Discount,v_precision),
ROUND(v_Discount,v_precision), 0, 0,
+ NULL, NULL, Cur_TaxDiscount.C_TAX_ID, NULL, NULL,
+ NULL, 'N', NULL, NULL,
+ NULL, ROUND(v_Discount,v_precision), NULL
+ );
+ UPDATE C_ORDERLINE
+ SET
C_ORDER_DISCOUNT_ID=Cur_COrderDiscount.C_ORDER_DISCOUNT_ID
+ WHERE C_ORDERLINE_ID=v_OrderLine;
+ ELSE
+ UPDATE C_ORDERLINE
+ SET pricelist = ROUND(v_Discount,v_precision), priceactual
= ROUND(v_Discount,v_precision), pricelimit = ROUND(v_Discount,v_precision),
linenetamt = ROUND(v_Discount,v_precision), pricestd =
ROUND(v_Discount,v_precision)
+ WHERE C_ORDERLINE.C_ORDER_DISCOUNT_ID =
Cur_COrderDiscount.C_ORDER_DISCOUNT_ID
+ AND C_ORDERLINE.C_TAX_ID = Cur_TaxDiscount.C_TAX_ID;
+ END IF;
END LOOP;
v_Line:=v_Line + 10;
END LOOP;
- END IF;
END IF;
IF(NOT END_PROCESSING AND NOT FINISH_PROCESS) THEN
diff -r 2e20ee3790ed -r b89aedcaf3d2
src-db/database/model/functions/M_INOUT_CREATE.xml
--- a/src-db/database/model/functions/M_INOUT_CREATE.xml Fri Apr 29
19:25:33 2011 +0200
+++ b/src-db/database/model/functions/M_INOUT_CREATE.xml Mon May 02
10:14:57 2011 +0200
@@ -307,7 +307,7 @@
IF Cur_Order.DocSubTypeSO = 'WR' THEN
v_NEWORDERDATE := Cur_Order.DATEORDERED; -- IS A POS ORDER
ELSE
- v_NEWORDERDATE := now();
+ v_NEWORDERDATE := TRUNC(now());
END IF;
--RAISE_APPLICATION_ERROR(-20100,'el numero documento
es:'||COALESCE(v_DocumentNo,0)||' El doctypeId es:
'||COALESCE(v_DocType_ID,0)||' El cOrderId es:
'||COALESCE(Cur_Order.C_Order_ID,'0'));
@@ -332,7 +332,7 @@
Cur_Order.AD_Org_ID, 'Y', now(), v_User_ID,
now(), v_User_ID, v_DocumentNo, v_DocType_ID,
Cur_Order.Description, 'N', 'C-', v_NEWORDERDATE,
- now(), Cur_Order.C_BPartner_ID,
Cur_Order.C_BPartner_Location_ID, Cur_Order.AD_User_ID,
+ TRUNC(now()), Cur_Order.C_BPartner_ID,
Cur_Order.C_BPartner_Location_ID, Cur_Order.AD_User_ID,
Cur_Order.M_Warehouse_ID, Cur_Order.POReference,
Cur_Order.DateOrdered, Cur_Order.DeliveryRule,
Cur_Order.FreightCostRule, Cur_Order.FreightAmt,
Cur_Order.C_Project_ID, Cur_Order.C_Activity_ID,
Cur_Order.C_Campaign_ID, Cur_Order.AD_OrgTrx_ID,
Cur_Order.User1_ID, Cur_Order.User2_ID,
------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today. Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits