76 lines
2.7 KiB
MySQL
76 lines
2.7 KiB
MySQL
|
/*************************************************************************
|
||
|
* The contents of this file are subject to the Adempiere License. You may
|
||
|
* obtain a copy of the License at http://www.adempiere.org/license.html
|
||
|
* Software is on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
|
||
|
* express or implied. See the License for details. Code: Adempiere ERP+CRM
|
||
|
* Copyright (C) 1999-2002 Jorg Janke, ComPiere, Inc. All Rights Reserved.
|
||
|
*************************************************************************
|
||
|
* $Id: C_BPartner_Check.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $
|
||
|
***
|
||
|
* Title: Check C_BPartner
|
||
|
* Description:
|
||
|
* For C_BPartner create
|
||
|
* - Missing BPartner Tree Structure(s)
|
||
|
*
|
||
|
* Recalculate Credit Used and Lifetime Value
|
||
|
************************************************************************/
|
||
|
BEGIN
|
||
|
DBMS_OUTPUT.PUT_LINE('Adding to Base BPartner Tree');
|
||
|
DECLARE
|
||
|
CURSOR Cur_Tree IS
|
||
|
SELECT *
|
||
|
FROM AD_ClientInfo;
|
||
|
CURSOR Cur_BPartner (Client NUMBER, Tree NUMBER) IS
|
||
|
SELECT *
|
||
|
FROM C_BPartner
|
||
|
WHERE C_BPartner_ID NOT IN
|
||
|
(SELECT Node_ID FROM AD_TreeNodeBP WHERE AD_Tree_ID=Tree)
|
||
|
AND AD_Client_ID=Client;
|
||
|
BEGIN
|
||
|
FOR CT IN Cur_Tree LOOP
|
||
|
DBMS_OUTPUT.PUT_LINE(' For Tree ' || CT.AD_Tree_BPartner_ID);
|
||
|
--
|
||
|
FOR CM IN Cur_BPartner (CT.AD_Client_ID, CT.AD_Tree_BPartner_ID) LOOP
|
||
|
INSERT INTO AD_TreeNodeBP
|
||
|
(AD_Client_ID, AD_Org_ID,
|
||
|
IsActive, Created, CreatedBy, Updated, UpdatedBy,
|
||
|
AD_Tree_ID, Node_ID, Parent_ID, SeqNo)
|
||
|
VALUES
|
||
|
(CM.AD_Client_ID, CM.AD_Org_ID,
|
||
|
CM.IsActive, CM.Created, CM.CreatedBy, CM.Updated, CM.UpdatedBy,
|
||
|
CT.AD_Tree_BPartner_ID, CM.C_BPartner_ID, 0, 999);
|
||
|
DBMS_OUTPUT.PUT_LINE(' added: ' || CM.NAME);
|
||
|
END LOOP; -- BPartner Loop
|
||
|
END LOOP; -- Tree Loop
|
||
|
END; -- Adding to Tree
|
||
|
|
||
|
COMMIT;
|
||
|
END;
|
||
|
/
|
||
|
/** Recalculate Credit Used & Actual Life Time Value **/
|
||
|
UPDATE C_BPartner bp
|
||
|
SET SO_CreditUsed =
|
||
|
(SELECT SUM(C_Base_Convert(C_Invoice_Open(C_Invoice_ID), C_Currency_ID, AD_Client_ID, SysDate))
|
||
|
FROM C_Invoice i -- invoice_open returns CM corrected amt
|
||
|
WHERE i.C_BPartner_ID=bp.C_BPartner_ID AND i.IsSOTrx='Y'),
|
||
|
ActualLifeTimeValue =
|
||
|
(SELECT SUM(C_Base_Convert(GrandTotal, C_Currency_ID, AD_Client_ID, SysDate))
|
||
|
FROM C_Invoice_v i
|
||
|
WHERE i.C_BPartner_ID=bp.C_BPartner_ID AND i.IsSOTrx='Y')
|
||
|
WHERE EXISTS
|
||
|
(SELECT * FROM C_Invoice i
|
||
|
WHERE i.C_BPartner_ID=bp.C_BPartner_ID AND i.IsSOTrx='Y');
|
||
|
COMMIT;
|
||
|
|
||
|
-- Zero
|
||
|
UPDATE C_BPartner bp
|
||
|
SET SO_CreditUsed = 0,
|
||
|
ActualLifeTimeValue = 0
|
||
|
WHERE NOT EXISTS
|
||
|
(SELECT * FROM C_Invoice i
|
||
|
WHERE i.C_BPartner_ID=bp.C_BPartner_ID AND i.IsSOTrx='Y');
|
||
|
|
||
|
COMMIT;
|
||
|
|
||
|
|