From 4455acc4b004e34d6b6d6a90c1f76f46205d3fa9 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 12 Feb 2007 02:02:44 +0000 Subject: [PATCH] * relocated to ddlutils/oracle/functions and ddlutils/oracle/procedures --- db/database/Functions/Acct_Balance.sql | 64 -- db/database/Functions/BOM_PriceLimit.sql | 48 -- db/database/Functions/BOM_PriceList.sql | 49 -- db/database/Functions/BOM_PriceStd.sql | 49 -- db/database/Functions/BOM_Qty_Available.sql | 21 - db/database/Functions/BOM_Qty_OnHand.sql | 120 --- db/database/Functions/BOM_Qty_Ordered.sql | 126 --- db/database/Functions/BOM_Qty_Reserved.sql | 125 --- .../Functions/C_BPartner_RemitLocation.SQL | 34 - db/database/Functions/C_Base_Convert.sql | 47 -- db/database/Functions/C_Currency_Convert.sql | 51 -- db/database/Functions/C_Currency_Rate.sql | 171 ---- db/database/Functions/C_Currency_Round.SQL | 49 -- db/database/Functions/C_Invoice_Discount.sql | 74 -- db/database/Functions/C_Invoice_Open.sql | 115 --- db/database/Functions/C_Invoice_Paid.sql | 60 -- .../Functions/C_PaymentTerm_Discount.sql | 71 -- .../Functions/C_PaymentTerm_DueDate.sql | 52 -- .../Functions/C_PaymentTerm_DueDays.sql | 58 -- db/database/Functions/C_Payment_Allocated.sql | 57 -- db/database/Functions/C_Payment_Available.sql | 62 -- db/database/Functions/DBA_ConstraintCmd.sql | 59 -- db/database/Functions/DBA_DisplayType.sql | 46 -- db/database/Functions/M_Attribute_Name.sql | 84 -- db/database/Procedures/AD_Column_Sync.sql | 280 ------- .../Procedures/AD_PrintPaper_Default.sql | 92 --- db/database/Procedures/AD_Sequence_Doc.sql | 56 -- .../Procedures/AD_Sequence_DocType.sql | 80 -- db/database/Procedures/AD_Sequence_Next.sql | 56 -- db/database/Procedures/AD_Syncronize.sql | 775 ------------------ db/database/Procedures/C_Order_DrillDown.sql | 173 ---- db/database/Procedures/C_ProcessCreate.sql | 56 -- db/database/Procedures/Cleanup.sql | 21 - db/database/Procedures/DBA_AfterImport.sql | 45 - db/database/Procedures/DBA_Cleanup.sql | 117 --- db/database/Procedures/DBA_Recompile.sql | 148 ---- .../Procedures/Fact_Acct_Balance_Update.sql | 116 --- db/database/Procedures/M_PriceList_Create.sql | 374 --------- .../Procedures/M_Product_BOM_Check.sql | 147 ---- db/database/Procedures/M_Product_Delete.sql | 37 - db/database/Procedures/M_Production_Run.sql | 298 ------- .../Procedures/T_InventoryValue_Create.sql | 198 ----- db/database/Procedures/nextID.sql | 55 -- 43 files changed, 4816 deletions(-) delete mode 100644 db/database/Functions/Acct_Balance.sql delete mode 100644 db/database/Functions/BOM_PriceLimit.sql delete mode 100644 db/database/Functions/BOM_PriceList.sql delete mode 100644 db/database/Functions/BOM_PriceStd.sql delete mode 100644 db/database/Functions/BOM_Qty_Available.sql delete mode 100644 db/database/Functions/BOM_Qty_OnHand.sql delete mode 100644 db/database/Functions/BOM_Qty_Ordered.sql delete mode 100644 db/database/Functions/BOM_Qty_Reserved.sql delete mode 100644 db/database/Functions/C_BPartner_RemitLocation.SQL delete mode 100644 db/database/Functions/C_Base_Convert.sql delete mode 100644 db/database/Functions/C_Currency_Convert.sql delete mode 100644 db/database/Functions/C_Currency_Rate.sql delete mode 100644 db/database/Functions/C_Currency_Round.SQL delete mode 100644 db/database/Functions/C_Invoice_Discount.sql delete mode 100644 db/database/Functions/C_Invoice_Open.sql delete mode 100644 db/database/Functions/C_Invoice_Paid.sql delete mode 100644 db/database/Functions/C_PaymentTerm_Discount.sql delete mode 100644 db/database/Functions/C_PaymentTerm_DueDate.sql delete mode 100644 db/database/Functions/C_PaymentTerm_DueDays.sql delete mode 100644 db/database/Functions/C_Payment_Allocated.sql delete mode 100644 db/database/Functions/C_Payment_Available.sql delete mode 100644 db/database/Functions/DBA_ConstraintCmd.sql delete mode 100644 db/database/Functions/DBA_DisplayType.sql delete mode 100644 db/database/Functions/M_Attribute_Name.sql delete mode 100644 db/database/Procedures/AD_Column_Sync.sql delete mode 100644 db/database/Procedures/AD_PrintPaper_Default.sql delete mode 100644 db/database/Procedures/AD_Sequence_Doc.sql delete mode 100644 db/database/Procedures/AD_Sequence_DocType.sql delete mode 100644 db/database/Procedures/AD_Sequence_Next.sql delete mode 100644 db/database/Procedures/AD_Syncronize.sql delete mode 100644 db/database/Procedures/C_Order_DrillDown.sql delete mode 100644 db/database/Procedures/C_ProcessCreate.sql delete mode 100644 db/database/Procedures/Cleanup.sql delete mode 100644 db/database/Procedures/DBA_AfterImport.sql delete mode 100644 db/database/Procedures/DBA_Cleanup.sql delete mode 100644 db/database/Procedures/DBA_Recompile.sql delete mode 100644 db/database/Procedures/Fact_Acct_Balance_Update.sql delete mode 100644 db/database/Procedures/M_PriceList_Create.sql delete mode 100644 db/database/Procedures/M_Product_BOM_Check.sql delete mode 100644 db/database/Procedures/M_Product_Delete.sql delete mode 100644 db/database/Procedures/M_Production_Run.sql delete mode 100644 db/database/Procedures/T_InventoryValue_Create.sql delete mode 100644 db/database/Procedures/nextID.sql diff --git a/db/database/Functions/Acct_Balance.sql b/db/database/Functions/Acct_Balance.sql deleted file mode 100644 index d4b0275108..0000000000 --- a/db/database/Functions/Acct_Balance.sql +++ /dev/null @@ -1,64 +0,0 @@ -CREATE OR REPLACE FUNCTION acctBalance -( - p_Account_ID IN NUMBER, - p_AmtDr IN NUMBER, - p_AmtCr IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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-2004 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: Acct_Balance.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Aclculate Balance based on Account Sign + Type - * Description: - * If an account is specified and found - * - If the account sign is Natural it sets it based on Account Type - * Returns Credit or Debit Balance - * Test: - SELECT Acct_Balance (0,11,22) FROM DUAL - SELECT AccountType, AccountSign, - Acct_Balance(C_ElementValue_ID, 20, 10) "DR Balance", - Acct_Balance(C_ElementValue_ID, 10, 20) "CR Balance" - FROM C_ElementValue - WHERE AccountSign<>'N' - ORDER BY AccountSign - ************************************************************************/ -AS - v_balance NUMBER; - v_AccountType C_ElementValue.AccountType%TYPE; - v_AccountSign C_ElementValue.AccountSign%TYPE; -BEGIN - v_balance := p_AmtDr - p_AmtCr; - -- - IF (p_Account_ID > 0) THEN - SELECT AccountType, AccountSign - INTO v_AccountType, v_AccountSign - FROM C_ElementValue - WHERE C_ElementValue_ID=p_Account_ID; - -- DBMS_OUTPUT.PUT_LINE('Type=' || v_AccountType || ' - Sign=' || v_AccountSign); - -- Natural Account Sign - IF (v_AccountSign='N') THEN - IF (v_AccountType IN ('A','E')) THEN - v_AccountSign := 'D'; - ELSE - v_AccountSign := 'C'; - END IF; - -- DBMS_OUTPUT.PUT_LINE('Type=' || v_AccountType || ' - Sign=' || v_AccountSign); - END IF; - -- Debit Balance - IF (v_AccountSign = 'C') THEN - v_balance := p_AmtCr - p_AmtDr; - END IF; - END IF; - -- - RETURN v_balance; -EXCEPTION WHEN OTHERS THEN - -- In case Acct not found - RETURN p_AmtDr - p_AmtCr; -END acctBalance; -/ diff --git a/db/database/Functions/BOM_PriceLimit.sql b/db/database/Functions/BOM_PriceLimit.sql deleted file mode 100644 index 20cf30ad27..0000000000 --- a/db/database/Functions/BOM_PriceLimit.sql +++ /dev/null @@ -1,48 +0,0 @@ -CREATE OR REPLACE FUNCTION bomPriceLimit -( - Product_ID IN NUMBER, - PriceList_Version_ID IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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: BOM_PriceLimit.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Return Limit Price of Product/BOM - * Description: - * if not found: 0 - ************************************************************************/ -AS - v_Price NUMBER; - v_ProductPrice NUMBER; - -- Get BOM Product info - CURSOR CUR_BOM IS - SELECT b.M_ProductBOM_ID, b.BOMQty, p.IsBOM - FROM M_Product_BOM b, M_Product p - WHERE b.M_ProductBOM_ID=p.M_Product_ID - AND b.M_Product_ID=Product_ID; - -- -BEGIN - -- Try to get price from PriceList directly - SELECT COALESCE (SUM(PriceLimit), 0) - INTO v_Price - FROM M_ProductPrice - WHERE M_PriceList_Version_ID=PriceList_Version_ID AND M_Product_ID=Product_ID; --- DBMS_OUTPUT.PUT_LINE('Price=' || v_Price); - - -- No Price - Check if BOM - IF (v_Price = 0) THEN - FOR bom IN CUR_BOM LOOP - v_ProductPrice := bomPriceLimit (bom.M_ProductBOM_ID, PriceList_Version_ID); - v_Price := v_Price + (bom.BOMQty * v_ProductPrice); - END LOOP; - END IF; - -- - RETURN v_Price; -END bomPriceLimit; -/ diff --git a/db/database/Functions/BOM_PriceList.sql b/db/database/Functions/BOM_PriceList.sql deleted file mode 100644 index 6a3a95a3ed..0000000000 --- a/db/database/Functions/BOM_PriceList.sql +++ /dev/null @@ -1,49 +0,0 @@ -CREATE OR REPLACE FUNCTION bomPriceList -( - Product_ID IN NUMBER, - PriceList_Version_ID IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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: BOM_PriceList.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Return List Price of Product/BOM - * Description: - * if not found: 0 - ************************************************************************/ -AS - v_Price NUMBER; - v_ProductPrice NUMBER; - -- Get BOM Product info - CURSOR CUR_BOM IS - SELECT b.M_ProductBOM_ID, b.BOMQty, p.IsBOM - FROM M_Product_BOM b, M_Product p - WHERE b.M_ProductBOM_ID=p.M_Product_ID - AND b.M_Product_ID=Product_ID; - -- -BEGIN - -- Try to get price from pricelist directly - SELECT COALESCE (SUM(PriceList), 0) - INTO v_Price - FROM M_ProductPrice - WHERE M_PriceList_Version_ID=PriceList_Version_ID AND M_Product_ID=Product_ID; --- DBMS_OUTPUT.PUT_LINE('Price=' || Price); - - -- No Price - Check if BOM - IF (v_Price = 0) THEN - FOR bom IN CUR_BOM LOOP - v_ProductPrice := bomPriceList (bom.M_ProductBOM_ID, PriceList_Version_ID); - v_Price := v_Price + (bom.BOMQty * v_ProductPrice); - -- DBMS_OUTPUT.PUT_LINE('Qry=' || bom.BOMQty || ' @ ' || v_ProductPrice || ', Price=' || v_Price); - END LOOP; -- BOM - END IF; - -- - RETURN v_Price; -END bomPriceList; -/ diff --git a/db/database/Functions/BOM_PriceStd.sql b/db/database/Functions/BOM_PriceStd.sql deleted file mode 100644 index ae1407a7b7..0000000000 --- a/db/database/Functions/BOM_PriceStd.sql +++ /dev/null @@ -1,49 +0,0 @@ -CREATE OR REPLACE FUNCTION bomPriceStd -( - Product_ID IN NUMBER, - PriceList_Version_ID IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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: BOM_PriceStd.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Return Standard Price of Product/BOM - * Description: - * if not found: 0 - ************************************************************************/ -AS - v_Price NUMBER; - v_ProductPrice NUMBER; - -- Get BOM Product info - CURSOR CUR_BOM IS - SELECT b.M_ProductBOM_ID, b.BOMQty, p.IsBOM - FROM M_Product_BOM b, M_Product p - WHERE b.M_ProductBOM_ID=p.M_Product_ID - AND b.M_Product_ID=Product_ID; - -- -BEGIN - -- Try to get price from pricelist directly - SELECT COALESCE(SUM(PriceStd), 0) - INTO v_Price - FROM M_ProductPrice - WHERE M_PriceList_Version_ID=PriceList_Version_ID AND M_Product_ID=Product_ID; --- DBMS_OUTPUT.PUT_LINE('Price=' || v_Price); - - -- No Price - Check if BOM - IF (v_Price = 0) THEN - FOR bom IN CUR_BOM LOOP - v_ProductPrice := bomPriceStd (bom.M_ProductBOM_ID, PriceList_Version_ID); - v_Price := v_Price + (bom.BOMQty * v_ProductPrice); - -- DBMS_OUTPUT.PUT_LINE('Price=' || v_Price); - END LOOP; -- BOM - END IF; - -- - RETURN v_Price; -END bomPriceStd; -/ diff --git a/db/database/Functions/BOM_Qty_Available.sql b/db/database/Functions/BOM_Qty_Available.sql deleted file mode 100644 index 81c2de2647..0000000000 --- a/db/database/Functions/BOM_Qty_Available.sql +++ /dev/null @@ -1,21 +0,0 @@ -CREATE OR REPLACE FUNCTION bomQtyAvailable -( - Product_ID IN NUMBER, - Warehouse_ID IN NUMBER, - Locator_ID IN NUMBER -- Only used, if warehouse is null -) -RETURN NUMBER -/****************************************************************************** - * ** Adempiere Product ** Copyright (c) 1999-2001 Accorto, Inc. USA - * Open Source Software Provided "AS IS" without warranty or liability - * When you use any parts (changed or unchanged), add "Powered by Adempiere" to - * your product name; See license details http://www.adempiere.org/license.html - ****************************************************************************** - * Return quantity available for BOM - */ -AS -BEGIN - RETURN bomQtyOnHand(Product_ID, Warehouse_ID, Locator_ID) - - bomQtyReserved(Product_ID, Warehouse_ID, Locator_ID); -END bomQtyAvailable; -/ diff --git a/db/database/Functions/BOM_Qty_OnHand.sql b/db/database/Functions/BOM_Qty_OnHand.sql deleted file mode 100644 index 65b258d1fb..0000000000 --- a/db/database/Functions/BOM_Qty_OnHand.sql +++ /dev/null @@ -1,120 +0,0 @@ -CREATE OR REPLACE FUNCTION bomQtyOnHand -( - Product_ID IN NUMBER, - Warehouse_ID IN NUMBER, - Locator_ID IN NUMBER -- Only used, if warehouse is null -) -RETURN NUMBER -/****************************************************************************** - * ** Adempiere Product ** Copyright (c) 1999-2001 Accorto, Inc. USA - * Open Source Software Provided "AS IS" without warranty or liability - * When you use any parts (changed or unchanged), add "Powered by Adempiere" to - * your product name; See license details http://www.adempiere.org/license.html - ****************************************************************************** - * Return quantity on hand for BOM - */ -AS - myWarehouse_ID NUMBER; - Quantity NUMBER := 99999; -- unlimited - IsBOM CHAR(1); - IsStocked CHAR(1); - ProductType CHAR(1); - ProductQty NUMBER; - StdPrecision NUMBER; - -- Get BOM Product info - CURSOR CUR_BOM IS - SELECT b.M_ProductBOM_ID, b.BOMQty, p.IsBOM, p.IsStocked, p.ProductType - FROM M_Product_BOM b, M_Product p - WHERE b.M_ProductBOM_ID=p.M_Product_ID - AND b.M_Product_ID=Product_ID; - -- -BEGIN - -- Check Parameters - myWarehouse_ID := Warehouse_ID; - IF (myWarehouse_ID IS NULL) THEN - IF (Locator_ID IS NULL) THEN - RETURN 0; - ELSE - SELECT SUM(M_Warehouse_ID) INTO myWarehouse_ID - FROM M_Locator - WHERE M_Locator_ID=Locator_ID; - END IF; - END IF; - IF (myWarehouse_ID IS NULL) THEN - RETURN 0; - END IF; --- DBMS_OUTPUT.PUT_LINE('Warehouse=' || myWarehouse_ID); - - -- Check, if product exists and if it is stocked - BEGIN - SELECT IsBOM, ProductType, IsStocked - INTO IsBOM, ProductType, IsStocked - FROM M_Product - WHERE M_Product_ID=Product_ID; - -- - EXCEPTION -- not found - WHEN OTHERS THEN - RETURN 0; - END; - -- Unimited capacity if no item - IF (IsBOM='N' AND (ProductType<>'I' OR IsStocked='N')) THEN - RETURN Quantity; - -- Stocked item - ELSIF (IsStocked='Y') THEN - -- Get ProductQty - SELECT NVL(SUM(QtyOnHand), 0) - INTO ProductQty - FROM M_Storage s - WHERE M_Product_ID=Product_ID - AND EXISTS (SELECT * FROM M_Locator l WHERE s.M_Locator_ID=l.M_Locator_ID - AND l.M_Warehouse_ID=myWarehouse_ID); - -- - -- DBMS_OUTPUT.PUT_LINE('Qty=' || ProductQty); - RETURN ProductQty; - END IF; - - -- Go though BOM --- DBMS_OUTPUT.PUT_LINE('BOM'); - FOR bom IN CUR_BOM LOOP - -- Stocked Items "leaf node" - IF (bom.ProductType = 'I' AND bom.IsStocked = 'Y') THEN - -- Get ProductQty - SELECT NVL(SUM(QtyOnHand), 0) - INTO ProductQty - FROM M_Storage s - WHERE M_Product_ID=bom.M_ProductBOM_ID - AND EXISTS (SELECT * FROM M_Locator l WHERE s.M_Locator_ID=l.M_Locator_ID - AND l.M_Warehouse_ID=myWarehouse_ID); - -- Get Rounding Precision - SELECT NVL(MAX(u.StdPrecision), 0) - INTO StdPrecision - FROM C_UOM u, M_Product p - WHERE u.C_UOM_ID=p.C_UOM_ID AND p.M_Product_ID=bom.M_ProductBOM_ID; - -- How much can we make with this product - ProductQty := ROUND (ProductQty/bom.BOMQty, StdPrecision); - -- How much can we make overall - IF (ProductQty < Quantity) THEN - Quantity := ProductQty; - END IF; - -- Another BOM - ELSIF (bom.IsBOM = 'Y') THEN - ProductQty := bomQtyOnHand (bom.M_ProductBOM_ID, myWarehouse_ID, Locator_ID); - -- How much can we make overall - IF (ProductQty < Quantity) THEN - Quantity := ProductQty; - END IF; - END IF; - END LOOP; -- BOM - - IF (Quantity > 0) THEN - -- Get Rounding Precision for Product - SELECT NVL(MAX(u.StdPrecision), 0) - INTO StdPrecision - FROM C_UOM u, M_Product p - WHERE u.C_UOM_ID=p.C_UOM_ID AND p.M_Product_ID=Product_ID; - -- - RETURN ROUND (Quantity, StdPrecision); - END IF; - RETURN 0; -END bomQtyOnHand; -/ diff --git a/db/database/Functions/BOM_Qty_Ordered.sql b/db/database/Functions/BOM_Qty_Ordered.sql deleted file mode 100644 index ef1a97c4e0..0000000000 --- a/db/database/Functions/BOM_Qty_Ordered.sql +++ /dev/null @@ -1,126 +0,0 @@ -CREATE OR REPLACE FUNCTION bomQtyOrdered -( - p_Product_ID IN NUMBER, - p_Warehouse_ID IN NUMBER, - p_Locator_ID IN NUMBER -- Only used, if warehouse is null -) -RETURN NUMBER -/****************************************************************************** - * ** Adempiere Product ** Copyright (c) 1999-2001 Accorto, Inc. USA - * Open Source Software Provided "AS IS" without warranty or liability - * When you use any parts (changed or unchanged), add "Powered by Adempiere" to - * your product name; See license details http://www.adempiere.org/license.html - ****************************************************************************** - * Return quantity ordered for BOM - */ -AS - v_Warehouse_ID NUMBER; - v_Quantity NUMBER := 99999; -- unlimited - v_IsBOM CHAR(1); - v_IsStocked CHAR(1); - v_ProductType CHAR(1); - v_ProductQty NUMBER; - v_StdPrecision NUMBER; - -- Get BOM Product info - CURSOR CUR_BOM IS - SELECT b.M_ProductBOM_ID, b.BOMQty, p.IsBOM, p.IsStocked, p.ProductType - FROM M_Product_BOM b, M_Product p - WHERE b.M_ProductBOM_ID=p.M_Product_ID - AND b.M_Product_ID=p_Product_ID; - -- -BEGIN - -- Check Parameters - v_Warehouse_ID := p_Warehouse_ID; - IF (v_Warehouse_ID IS NULL) THEN - IF (p_Locator_ID IS NULL) THEN - RETURN 0; - ELSE - SELECT MAX(M_Warehouse_ID) INTO v_Warehouse_ID - FROM M_Locator - WHERE M_Locator_ID=p_Locator_ID; - END IF; - END IF; - IF (v_Warehouse_ID IS NULL) THEN - RETURN 0; - END IF; --- DBMS_OUTPUT.PUT_LINE('Warehouse=' || v_Warehouse_ID); - - -- Check, if product exists and if it is stocked - BEGIN - SELECT IsBOM, ProductType, IsStocked - INTO v_IsBOM, v_ProductType, v_IsStocked - FROM M_Product - WHERE M_Product_ID=p_Product_ID; - -- - EXCEPTION -- not found - WHEN OTHERS THEN - RETURN 0; - END; - - -- No reservation for non-stocked - IF (v_IsBOM='N' AND (v_ProductType<>'I' OR v_IsStocked='N')) THEN - RETURN 0; - -- Stocked item - ELSIF (v_IsStocked='Y') THEN - -- Get ProductQty - SELECT NVL(SUM(QtyOrdered), 0) - INTO v_ProductQty - FROM M_Storage s - WHERE M_Product_ID=p_Product_ID - AND EXISTS (SELECT * FROM M_Locator l WHERE s.M_Locator_ID=l.M_Locator_ID - AND l.M_Warehouse_ID=v_Warehouse_ID); - -- - RETURN v_ProductQty; - END IF; - - -- Go though BOM --- DBMS_OUTPUT.PUT_LINE('BOM'); - FOR bom IN CUR_BOM LOOP - -- Stocked Items "leaf node" - IF (bom.ProductType = 'I' AND bom.IsStocked = 'Y') THEN - -- Get ProductQty - SELECT NVL(SUM(QtyOrdered), 0) - INTO v_ProductQty - FROM M_Storage s - WHERE M_Product_ID=bom.M_ProductBOM_ID - AND EXISTS (SELECT * FROM M_Locator l WHERE s.M_Locator_ID=l.M_Locator_ID - AND l.M_Warehouse_ID=v_Warehouse_ID); - -- Get Rounding Precision - SELECT NVL(MAX(u.StdPrecision), 0) - INTO v_StdPrecision - FROM C_UOM u, M_Product p - WHERE u.C_UOM_ID=p.C_UOM_ID AND p.M_Product_ID=bom.M_ProductBOM_ID; - -- How much can we make with this product - v_ProductQty := ROUND (v_ProductQty/bom.BOMQty, v_StdPrecision); - -- How much can we make overall - IF (v_ProductQty < v_Quantity) THEN - v_Quantity := v_ProductQty; - END IF; - -- Another BOM - ELSIF (bom.IsBOM = 'Y') THEN - v_ProductQty := bomQtyOrdered (bom.M_ProductBOM_ID, v_Warehouse_ID, p_Locator_ID); - -- How much can we make overall - IF (v_ProductQty < v_Quantity) THEN - v_Quantity := v_ProductQty; - END IF; - END IF; - END LOOP; -- BOM - - -- Unlimited (e.g. only services) - IF (v_Quantity = 99999) THEN - RETURN 0; - END IF; - - IF (v_Quantity > 0) THEN - -- Get Rounding Precision for Product - SELECT NVL(MAX(u.StdPrecision), 0) - INTO v_StdPrecision - FROM C_UOM u, M_Product p - WHERE u.C_UOM_ID=p.C_UOM_ID AND p.M_Product_ID=p_Product_ID; - -- - RETURN ROUND (v_Quantity, v_StdPrecision); - END IF; - -- - RETURN 0; -END bomQtyOrdered; -/ diff --git a/db/database/Functions/BOM_Qty_Reserved.sql b/db/database/Functions/BOM_Qty_Reserved.sql deleted file mode 100644 index e6b95f02a3..0000000000 --- a/db/database/Functions/BOM_Qty_Reserved.sql +++ /dev/null @@ -1,125 +0,0 @@ -CREATE OR REPLACE FUNCTION bomQtyReserved -( - p_Product_ID IN NUMBER, - p_Warehouse_ID IN NUMBER, - p_Locator_ID IN NUMBER -- Only used, if warehouse is null -) -RETURN NUMBER -/****************************************************************************** - * ** Adempiere Product ** Copyright (c) 1999-2001 Accorto, Inc. USA - * Open Source Software Provided "AS IS" without warranty or liability - * When you use any parts (changed or unchanged), add "Powered by Adempiere" to - * your product name; See license details http://www.adempiere.org/license.html - ****************************************************************************** - * Return quantity reserved for BOM - */ -AS - v_Warehouse_ID NUMBER; - v_Quantity NUMBER := 99999; -- unlimited - v_IsBOM CHAR(1); - v_IsStocked CHAR(1); - v_ProductType CHAR(1); - v_ProductQty NUMBER; - v_StdPrecision NUMBER; - -- Get BOM Product info - CURSOR CUR_BOM IS - SELECT b.M_ProductBOM_ID, b.BOMQty, p.IsBOM, p.IsStocked, p.ProductType - FROM M_Product_BOM b, M_Product p - WHERE b.M_ProductBOM_ID=p.M_Product_ID - AND b.M_Product_ID=p_Product_ID; - -- -BEGIN - -- Check Parameters - v_Warehouse_ID := p_Warehouse_ID; - IF (v_Warehouse_ID IS NULL) THEN - IF (p_Locator_ID IS NULL) THEN - RETURN 0; - ELSE - SELECT MAX(M_Warehouse_ID) INTO v_Warehouse_ID - FROM M_Locator - WHERE M_Locator_ID=p_Locator_ID; - END IF; - END IF; - IF (v_Warehouse_ID IS NULL) THEN - RETURN 0; - END IF; --- DBMS_OUTPUT.PUT_LINE('Warehouse=' || v_Warehouse_ID); - - -- Check, if product exists and if it is stocked - BEGIN - SELECT IsBOM, ProductType, IsStocked - INTO v_IsBOM, v_ProductType, v_IsStocked - FROM M_Product - WHERE M_Product_ID=p_Product_ID; - -- - EXCEPTION -- not found - WHEN OTHERS THEN - RETURN 0; - END; - - -- No reservation for non-stocked - IF (v_IsBOM='N' AND (v_ProductType<>'I' OR v_IsStocked='N')) THEN - RETURN 0; - -- Stocked item - ELSIF (v_IsStocked='Y') THEN - -- Get ProductQty - SELECT NVL(SUM(QtyReserved), 0) - INTO v_ProductQty - FROM M_Storage s - WHERE M_Product_ID=p_Product_ID - AND EXISTS (SELECT * FROM M_Locator l WHERE s.M_Locator_ID=l.M_Locator_ID - AND l.M_Warehouse_ID=v_Warehouse_ID); - -- - RETURN v_ProductQty; - END IF; - - -- Go though BOM --- DBMS_OUTPUT.PUT_LINE('BOM'); - FOR bom IN CUR_BOM LOOP - -- Stocked Items "leaf node" - IF (bom.ProductType = 'I' AND bom.IsStocked = 'Y') THEN - -- Get ProductQty - SELECT NVL(SUM(QtyReserved), 0) - INTO v_ProductQty - FROM M_Storage s - WHERE M_Product_ID=bom.M_ProductBOM_ID - AND EXISTS (SELECT * FROM M_Locator l WHERE s.M_Locator_ID=l.M_Locator_ID - AND l.M_Warehouse_ID=v_Warehouse_ID); - -- Get Rounding Precision - SELECT NVL(MAX(u.StdPrecision), 0) - INTO v_StdPrecision - FROM C_UOM u, M_Product p - WHERE u.C_UOM_ID=p.C_UOM_ID AND p.M_Product_ID=bom.M_ProductBOM_ID; - -- How much can we make with this product - v_ProductQty := ROUND (v_ProductQty/bom.BOMQty, v_StdPrecision); - -- How much can we make overall - IF (v_ProductQty < v_Quantity) THEN - v_Quantity := v_ProductQty; - END IF; - -- Another BOM - ELSIF (bom.IsBOM = 'Y') THEN - v_ProductQty := bomQtyReserved (bom.M_ProductBOM_ID, v_Warehouse_ID, p_Locator_ID); - -- How much can we make overall - IF (v_ProductQty < v_Quantity) THEN - v_Quantity := v_ProductQty; - END IF; - END IF; - END LOOP; -- BOM - - -- Unlimited (e.g. only services) - IF (v_Quantity = 99999) THEN - RETURN 0; - END IF; - - IF (v_Quantity > 0) THEN - -- Get Rounding Precision for Product - SELECT NVL(MAX(u.StdPrecision), 0) - INTO v_StdPrecision - FROM C_UOM u, M_Product p - WHERE u.C_UOM_ID=p.C_UOM_ID AND p.M_Product_ID=p_Product_ID; - -- - RETURN ROUND (v_Quantity, v_StdPrecision); - END IF; - RETURN 0; -END bomQtyReserved; -/ diff --git a/db/database/Functions/C_BPartner_RemitLocation.SQL b/db/database/Functions/C_BPartner_RemitLocation.SQL deleted file mode 100644 index 2a86317e96..0000000000 --- a/db/database/Functions/C_BPartner_RemitLocation.SQL +++ /dev/null @@ -1,34 +0,0 @@ -CREATE OR REPLACE FUNCTION bpartnerRemitLocation -( - p_C_BPartner_ID C_BPartner.C_BPartner_ID%TYPE -) -RETURN NUMBER -/************************************************************************* - * 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_RemitLocation.SQL,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Return the first RemitTo C_Location_ID of a Business Partner - * Description: - * - ************************************************************************/ -AS - v_C_Location_ID NUMBER := NULL; - CURSOR CUR_BPLoc IS - SELECT IsRemitTo, C_Location_ID - FROM C_BPartner_Location - WHERE C_BPartner_ID=p_C_BPartner_ID - ORDER BY IsRemitTo DESC; -BEGIN - FOR l IN CUR_BPLoc LOOP - IF (v_C_Location_ID IS NULL) THEN - v_C_Location_ID := l.C_Location_ID; - END IF; - END LOOP; - RETURN v_C_Location_ID; -END bpartnerRemitLocation; -/ diff --git a/db/database/Functions/C_Base_Convert.sql b/db/database/Functions/C_Base_Convert.sql deleted file mode 100644 index 146cd15fa9..0000000000 --- a/db/database/Functions/C_Base_Convert.sql +++ /dev/null @@ -1,47 +0,0 @@ -CREATE OR REPLACE FUNCTION currencyBase -( - p_Amount IN NUMBER, - p_CurFrom_ID IN NUMBER, - p_ConvDate IN DATE, - p_Client_ID IN NUMBER, - p_Org_ID IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_Base_Convert.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Convert Amount to Base Currency of Client - * Description: - * Get CurrencyTo from Client - * Returns NULL, if conversion not found - * Standard Rounding - * Test: - * SELECT C_Base_Convert(100,116,11,null) FROM DUAL => 64.72 - ************************************************************************/ -AS - v_CurTo_ID NUMBER; -BEGIN - -- Get Currency - SELECT MAX(ac.C_Currency_ID) - INTO v_CurTo_ID - FROM AD_ClientInfo ci, C_AcctSchema ac - WHERE ci.C_AcctSchema1_ID=ac.C_AcctSchema_ID - AND ci.AD_Client_ID=p_Client_ID; - -- Same as Currency_Conversion - if currency/rate not found - return 0 - IF (v_CurTo_ID IS NULL) THEN - RETURN NULL; - END IF; - -- Same currency - IF (p_CurFrom_ID = v_CurTo_ID) THEN - RETURN p_Amount; - END IF; - - RETURN currencyConvert (p_Amount, p_CurFrom_ID, v_CurTo_ID, p_ConvDate, null, p_Client_ID, p_Org_ID); -END currencyBase; -/ diff --git a/db/database/Functions/C_Currency_Convert.sql b/db/database/Functions/C_Currency_Convert.sql deleted file mode 100644 index 98206fc069..0000000000 --- a/db/database/Functions/C_Currency_Convert.sql +++ /dev/null @@ -1,51 +0,0 @@ -CREATE OR REPLACE FUNCTION currencyConvert -( - p_Amount IN NUMBER, - p_CurFrom_ID IN NUMBER, - p_CurTo_ID IN NUMBER, - p_ConvDate IN DATE, - p_ConversionType_ID IN NUMBER, - p_Client_ID IN NUMBER, - p_Org_ID IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_Currency_Convert.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Convert Amount (using IDs) - * Description: - * from CurrencyFrom_ID to CurrencyTo_ID - * Returns NULL, if conversion not found - * Standard Rounding - * Test: - * SELECT C_Currency_Convert(100,116,100,null,null) FROM DUAL => 64.72 - * SELECT C_Currency_Convert(100,116,100) FROM DUAL => 64.72 - ************************************************************************/ -AS - v_Rate NUMBER; -BEGIN - -- Return Amount - IF (p_Amount = 0 OR p_CurFrom_ID = p_CurTo_ID) THEN - RETURN p_Amount; - END IF; - -- Return NULL - IF (p_Amount IS NULL OR p_CurFrom_ID IS NULL OR p_CurTo_ID IS NULL) THEN - RETURN NULL; - END IF; - - -- Get Rate - v_Rate := currencyRate (p_CurFrom_ID, p_CurTo_ID, p_ConvDate, p_ConversionType_ID, p_Client_ID, p_Org_ID); - IF (v_Rate IS NULL) THEN - RETURN NULL; - END IF; - - -- Standard Precision - RETURN currencyRound(p_Amount * v_Rate, p_CurTo_ID, null); -END currencyConvert; -/ diff --git a/db/database/Functions/C_Currency_Rate.sql b/db/database/Functions/C_Currency_Rate.sql deleted file mode 100644 index b6c60990c8..0000000000 --- a/db/database/Functions/C_Currency_Rate.sql +++ /dev/null @@ -1,171 +0,0 @@ -CREATE OR REPLACE FUNCTION currencyRate -( - p_CurFrom_ID IN NUMBER, - p_CurTo_ID IN NUMBER, - p_ConvDate IN DATE, - p_ConversionType_ID IN NUMBER, - p_Client_ID IN NUMBER, - p_Org_ID IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_Currency_Rate.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Return Conversion Rate - * Description: - * from CurrencyFrom_ID to CurrencyTo_ID - * Returns NULL, if rate not found - * Test - * SELECT C_Currency_Rate(116, 100, null, null) FROM DUAL; => .647169 - * SELECT C_Currency_Rate(116, 100) FROM DUAL; => .647169 - ************************************************************************/ -AS - -- Currency From variables - cf_IsEuro CHAR(1); - cf_IsEMUMember CHAR(1); - cf_EMUEntryDate DATE; - cf_EMURate NUMBER; - -- Currency To variables - ct_IsEuro CHAR(1); - ct_IsEMUMember CHAR(1); - ct_EMUEntryDate DATE; - ct_EMURate NUMBER; - -- Triangle - v_CurrencyFrom NUMBER; - v_CurrencyTo NUMBER; - v_CurrencyEuro NUMBER; - -- - v_ConvDate DATE := SysDate; - v_ConversionType_ID NUMBER := 0; - v_Rate NUMBER; -BEGIN - -- No Conversion - IF (p_CurFrom_ID = p_CurTo_ID) THEN - RETURN 1; - END IF; - -- Default Date Parameter - IF (p_ConvDate IS NOT NULL) THEN - v_ConvDate := p_ConvDate; -- SysDate - END IF; - -- Default Conversion Type - IF (p_ConversionType_ID IS NULL OR p_ConversionType_ID = 0) THEN - BEGIN - SELECT C_ConversionType_ID - INTO v_ConversionType_ID - FROM C_ConversionType - WHERE IsDefault='Y' - AND AD_Client_ID IN (0,p_Client_ID) - AND ROWNUM=1 - ORDER BY AD_Client_ID DESC; - EXCEPTION WHEN OTHERS THEN - DBMS_OUTPUT.PUT_LINE('Conversion Type Not Found'); - END; - ELSE - v_ConversionType_ID := p_ConversionType_ID; - END IF; - - -- Get Currency Info - SELECT MAX(IsEuro), MAX(IsEMUMember), MAX(EMUEntryDate), MAX(EMURate) - INTO cf_IsEuro, cf_IsEMUMember, cf_EMUEntryDate, cf_EMURate - FROM C_Currency - WHERE C_Currency_ID = p_CurFrom_ID; - -- Not Found - IF (cf_IsEuro IS NULL) THEN - DBMS_OUTPUT.PUT_LINE('From Currency Not Found'); - RETURN NULL; - END IF; - SELECT MAX(IsEuro), MAX(IsEMUMember), MAX(EMUEntryDate), MAX(EMURate) - INTO ct_IsEuro, ct_IsEMUMember, ct_EMUEntryDate, ct_EMURate - FROM C_Currency - WHERE C_Currency_ID = p_CurTo_ID; - -- Not Found - IF (ct_IsEuro IS NULL) THEN - DBMS_OUTPUT.PUT_LINE('To Currency Not Found'); - RETURN NULL; - END IF; - - -- Fixed - From Euro to EMU - IF (cf_IsEuro = 'Y' AND ct_IsEMUMember ='Y' AND v_ConvDate >= ct_EMUEntryDate) THEN - RETURN ct_EMURate; - END IF; - - -- Fixed - From EMU to Euro - IF (ct_IsEuro = 'Y' AND cf_IsEMUMember ='Y' AND v_ConvDate >= cf_EMUEntryDate) THEN - RETURN 1 / cf_EMURate; - END IF; - - -- Fixed - From EMU to EMU - IF (cf_IsEMUMember = 'Y' AND cf_IsEMUMember ='Y' - AND v_ConvDate >= cf_EMUEntryDate AND v_ConvDate >= ct_EMUEntryDate) THEN - RETURN ct_EMURate / cf_EMURate; - END IF; - - -- Flexible Rates - v_CurrencyFrom := p_CurFrom_ID; - v_CurrencyTo := p_CurTo_ID; - - -- if EMU Member involved, replace From/To Currency - IF ((cf_isEMUMember = 'Y' AND v_ConvDate >= cf_EMUEntryDate) - OR (ct_isEMUMember = 'Y' AND v_ConvDate >= ct_EMUEntryDate)) THEN - SELECT MAX(C_Currency_ID) - INTO v_CurrencyEuro - FROM C_Currency - WHERE IsEuro = 'Y'; - -- Conversion Rate not Found - IF (v_CurrencyEuro IS NULL) THEN - DBMS_OUTPUT.PUT_LINE('Euro Not Found'); - RETURN NULL; - END IF; - IF (cf_isEMUMember = 'Y' AND v_ConvDate >= cf_EMUEntryDate) THEN - v_CurrencyFrom := v_CurrencyEuro; - ELSE - v_CurrencyTo := v_CurrencyEuro; - END IF; - END IF; - - -- Get Rate - DECLARE - CURSOR CUR_Rate IS - SELECT MultiplyRate - FROM C_Conversion_Rate - WHERE C_Currency_ID=v_CurrencyFrom AND C_Currency_ID_To=v_CurrencyTo - AND C_ConversionType_ID=v_ConversionType_ID - AND v_ConvDate BETWEEN ValidFrom AND ValidTo - AND AD_Client_ID IN (0,p_Client_ID) AND AD_Org_ID IN (0,p_Org_ID) - ORDER BY AD_Client_ID DESC, AD_Org_ID DESC, ValidFrom DESC; - BEGIN - FOR c IN CUR_Rate LOOP - v_Rate := c.MultiplyRate; - EXIT; -- only first - END LOOP; - END; - -- Not found - IF (v_Rate IS NULL) THEN - DBMS_OUTPUT.PUT_LINE('Conversion Rate Not Found'); - RETURN NULL; - END IF; - - -- Currency From was EMU - IF (cf_isEMUMember = 'Y' AND v_ConvDate >= cf_EMUEntryDate) THEN - RETURN v_Rate / cf_EMURate; - END IF; - - -- Currency To was EMU - IF (ct_isEMUMember = 'Y' AND v_ConvDate >= ct_EMUEntryDate) THEN - RETURN v_Rate * ct_EMURate; - END IF; - - RETURN v_Rate; - -EXCEPTION WHEN OTHERS THEN - DBMS_OUTPUT.PUT_LINE(SQLERRM); - RETURN NULL; - -END currencyRate; -/ diff --git a/db/database/Functions/C_Currency_Round.SQL b/db/database/Functions/C_Currency_Round.SQL deleted file mode 100644 index be2ea03e6d..0000000000 --- a/db/database/Functions/C_Currency_Round.SQL +++ /dev/null @@ -1,49 +0,0 @@ -CREATE OR REPLACE FUNCTION currencyRound -( - p_Amount IN NUMBER, - p_CurTo_ID IN NUMBER, - p_Costing IN VARCHAR2 -- Default 'N' -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_Currency_Round.SQL,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Round amount for Traget Currency - * Description: - * Round Amount using Costing or Standard Precision - * Returns unmodified amount if currency not found - * Test: - * SELECT C_Currency_Round(C_Currency_Convert(100,116,100,null,null),100,null) FROM DUAL => 64.72 - ************************************************************************/ -AS - v_StdPrecision NUMBER; - v_CostPrecision NUMBER; -BEGIN - -- Nothing to convert - IF (p_Amount IS NULL OR p_CurTo_ID IS NULL) THEN - RETURN p_Amount; - END IF; - - -- Ger Precision - SELECT MAX(StdPrecision), MAX(CostingPrecision) - INTO v_StdPrecision, v_CostPrecision - FROM C_Currency - WHERE C_Currency_ID = p_CurTo_ID; - -- Currency Not Found - IF (v_StdPrecision IS NULL) THEN - RETURN p_Amount; - END IF; - - IF (p_Costing = 'Y') THEN - RETURN ROUND (p_Amount, v_CostPrecision); - END IF; - - RETURN ROUND (p_Amount, v_StdPrecision); -END currencyRound; -/ \ No newline at end of file diff --git a/db/database/Functions/C_Invoice_Discount.sql b/db/database/Functions/C_Invoice_Discount.sql deleted file mode 100644 index e192616471..0000000000 --- a/db/database/Functions/C_Invoice_Discount.sql +++ /dev/null @@ -1,74 +0,0 @@ -CREATE OR REPLACE FUNCTION invoiceDiscount -( - p_C_Invoice_ID IN NUMBER, - p_PayDate IN DATE, - p_C_InvoicePaySchedule_ID IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_Invoice_Discount.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Calculate Payment Discount Amount - * Description: - * - Calculate discountable amount (i.e. with or without tax) - * - Calculate and return payment discount - ************************************************************************/ -AS - v_Amount NUMBER; - v_IsDiscountLineAmt CHAR(1); - v_GrandTotal NUMBER; - v_TotalLines NUMBER; - v_C_PaymentTerm_ID NUMBER(10); - v_DocDate DATE; - v_PayDate DATE := SysDate; - v_IsPayScheduleValid CHAR(1); - -BEGIN - SELECT ci.IsDiscountLineAmt, i.GrandTotal, i.TotalLines, - i.C_PaymentTerm_ID, i.DateInvoiced, i.IsPayScheduleValid - INTO v_IsDiscountLineAmt, v_GrandTotal, v_TotalLines, - v_C_PaymentTerm_ID, v_DocDate, v_IsPayScheduleValid - FROM AD_ClientInfo ci, C_Invoice i - WHERE ci.AD_Client_ID=i.AD_Client_ID - AND i.C_Invoice_ID=p_C_Invoice_ID; - -- What Amount is the Discount Base? - IF (v_IsDiscountLineAmt = 'Y') THEN - v_Amount := v_TotalLines; - ELSE - v_Amount := v_GrandTotal; - END IF; - - -- Anything to discount? - IF (v_Amount = 0) THEN - RETURN 0; - END IF; - IF (p_PayDate IS NOT NULL) THEN - v_PayDate := p_PayDate; - END IF; - - -- Valid Payment Schedule - IF (v_IsPayScheduleValid='Y' AND p_C_InvoicePaySchedule_ID > 0) THEN - SELECT COALESCE(MAX(DiscountAmt),0) - INTO v_Amount - FROM C_InvoicePaySchedule - WHERE C_InvoicePaySchedule_ID=p_C_InvoicePaySchedule_ID - AND DiscountDate <= v_PayDate; - -- - RETURN v_Amount; - END IF; - - -- return discount amount - RETURN paymentTermDiscount (v_Amount, 0, v_C_PaymentTerm_ID, v_DocDate, p_PayDate); - --- Most likely if invoice not found -EXCEPTION - WHEN OTHERS THEN - RETURN NULL; -END invoiceDiscount; -/ diff --git a/db/database/Functions/C_Invoice_Open.sql b/db/database/Functions/C_Invoice_Open.sql deleted file mode 100644 index a3de837860..0000000000 --- a/db/database/Functions/C_Invoice_Open.sql +++ /dev/null @@ -1,115 +0,0 @@ -CREATE OR REPLACE FUNCTION invoiceOpen -( - p_C_Invoice_ID IN NUMBER, - p_C_InvoicePaySchedule_ID IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_Invoice_Open.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Calculate Open Item Amount in Invoice Currency - * Description: - * Add up total amount open for C_Invoice_ID if no split payment. - * Grand Total minus Sum of Allocations in Invoice Currency - * - * For Split Payments: - * Allocate Payments starting from first schedule. - -SELECT C_Invoice_Open (109) FROM DUAL; -SELECT C_Invoice_Open (109, null) FROM DUAL; -SELECT C_Invoice_Open (109, 11) FROM DUAL; -SELECT C_Invoice_Open (109, 102) FROM DUAL; -SELECT C_Invoice_Open (109, 103) FROM DUAL; -SELECT * FROM RV_OpenItem WHERE C_Invoice_ID=109; -SELECT C_InvoicePaySchedule_ID, DueAmt FROM C_InvoicePaySchedule WHERE C_Invoice_ID=109 ORDER BY DueDate; - - * Cannot be used for IsPaid as mutating - ************************************************************************/ -AS - v_Currency_ID NUMBER(10); - v_TotalOpenAmt NUMBER := 0; - v_PaidAmt NUMBER := 0; - v_Remaining NUMBER := 0; - v_MultiplierAP NUMBER := 0; - v_MultiplierCM NUMBER := 0; - v_Temp NUMBER := 0; - -- - CURSOR Cur_Alloc IS - SELECT a.AD_Client_ID, a.AD_Org_ID, - al.Amount, al.DiscountAmt, al.WriteOffAmt, - a.C_Currency_ID, a.DateTrx - FROM C_AllocationLine al - INNER JOIN C_AllocationHdr a ON (al.C_AllocationHdr_ID=a.C_AllocationHdr_ID) - WHERE al.C_Invoice_ID = p_C_Invoice_ID - AND a.IsActive='Y'; - -- - CURSOR Cur_PaySchedule IS - SELECT C_InvoicePaySchedule_ID, DueAmt - FROM C_InvoicePaySchedule - WHERE C_Invoice_ID = p_C_Invoice_ID - AND IsValid='Y' - ORDER BY DueDate; - -BEGIN - -- Get Currency - BEGIN - SELECT MAX(C_Currency_ID), SUM(GrandTotal), MAX(MultiplierAP), MAX(Multiplier) - INTO v_Currency_ID, v_TotalOpenAmt, v_MultiplierAP, v_MultiplierCM - FROM C_Invoice_v -- corrected for CM / Split Payment - WHERE C_Invoice_ID = p_C_Invoice_ID; - EXCEPTION -- Invoice in draft form - WHEN OTHERS THEN - DBMS_OUTPUT.PUT_LINE('InvoiceOpen - ' || SQLERRM); - RETURN NULL; - END; --- DBMS_OUTPUT.PUT_LINE('== C_Invoice_ID=' || p_C_Invoice_ID || ', Total=' || v_TotalOpenAmt || ', AP=' || v_MultiplierAP || ', CM=' || v_MultiplierCM); - - -- Calculate Allocated Amount - FOR a IN Cur_Alloc LOOP - v_Temp := a.Amount + a.DisCountAmt + a.WriteOffAmt; - v_PaidAmt := v_PaidAmt - -- Allocation - + currencyConvert(v_Temp * v_MultiplierAP, - a.C_Currency_ID, v_Currency_ID, a.DateTrx, null, a.AD_Client_ID, a.AD_Org_ID); - DBMS_OUTPUT.PUT_LINE(' PaidAmt=' || v_PaidAmt || ', Allocation=' || v_Temp || ' * ' || v_MultiplierAP); - END LOOP; - - -- Do we have a Payment Schedule ? - IF (p_C_InvoicePaySchedule_ID > 0) THEN -- if not valid = lists invoice amount - v_Remaining := v_PaidAmt; - FOR s IN Cur_PaySchedule LOOP - IF (s.C_InvoicePaySchedule_ID = p_C_InvoicePaySchedule_ID) THEN - v_TotalOpenAmt := (s.DueAmt*v_MultiplierCM) + v_Remaining; - IF (s.DueAmt - v_Remaining < 0) THEN - v_TotalOpenAmt := 0; - END IF; - -- DBMS_OUTPUT.PUT_LINE('Sched Total=' || v_TotalOpenAmt || ', Due=' || s.DueAmt || ',Remaining=' || v_Remaining || ',CM=' || v_MultiplierCM); - ELSE -- calculate amount, which can be allocated to next schedule - v_Remaining := v_Remaining - s.DueAmt; - IF (v_Remaining < 0) THEN - v_Remaining := 0; - END IF; - -- DBMS_OUTPUT.PUT_LINE('Remaining=' || v_Remaining); - END IF; - END LOOP; - ELSE - v_TotalOpenAmt := v_TotalOpenAmt - v_PaidAmt; - END IF; --- DBMS_OUTPUT.PUT_LINE('== Total=' || v_TotalOpenAmt); - - -- Ignore Rounding - IF (v_TotalOpenAmt BETWEEN -0.00999 AND 0.00999) THEN - v_TotalOpenAmt := 0; - END IF; - - -- Round to penny - v_TotalOpenAmt := ROUND(COALESCE(v_TotalOpenAmt,0), 2); - RETURN v_TotalOpenAmt; -END invoiceOpen; -/ diff --git a/db/database/Functions/C_Invoice_Paid.sql b/db/database/Functions/C_Invoice_Paid.sql deleted file mode 100644 index 5c35922cf7..0000000000 --- a/db/database/Functions/C_Invoice_Paid.sql +++ /dev/null @@ -1,60 +0,0 @@ -CREATE OR REPLACE FUNCTION invoicePaid -( - p_C_Invoice_ID IN NUMBER, - p_C_Currency_ID IN NUMBER, - p_MultiplierAP IN NUMBER -- DEFAULT 1 -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_Invoice_Paid.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Calculate Paid/Allocated amount in Currency - * Description: - * Add up total amount paid for for C_Invoice_ID. - * Split Payments are ignored. - * all allocation amounts converted to invoice C_Currency_ID - * round it to the nearest cent - * and adjust for CreditMemos by using C_Invoice_v - * and for Payments with the multiplierAP (-1, 1) - * - SELECT C_Invoice_ID, IsPaid, IsSOTrx, GrandTotal, - C_Invoice_Paid (C_Invoice_ID, C_Currency_ID, MultiplierAP) - FROM C_Invoice_v; - -- - UPDATE C_Invoice_v1 - SET IsPaid = CASE WHEN C_Invoice_Paid(C_Invoice_ID,C_Currency_ID,MultiplierAP)=GrandTotal THEN 'Y' ELSE 'N' END - WHERE C_Invoice_ID>1000000 - * - ************************************************************************/ -AS - v_MultiplierAP NUMBER := 1; - v_PaymentAmt NUMBER := 0; - CURSOR Cur_Alloc IS - SELECT a.AD_Client_ID, a.AD_Org_ID, - al.Amount, al.DiscountAmt, al.WriteOffAmt, - a.C_Currency_ID, a.DateTrx - FROM C_AllocationLine al - INNER JOIN C_AllocationHdr a ON (al.C_AllocationHdr_ID=a.C_AllocationHdr_ID) - WHERE al.C_Invoice_ID = p_C_Invoice_ID - AND a.IsActive='Y'; -BEGIN - -- Default - IF (p_MultiplierAP IS NOT NULL) THEN - v_MultiplierAP := p_MultiplierAP; - END IF; - -- Calculate Allocated Amount - FOR a IN Cur_Alloc LOOP - v_PaymentAmt := v_PaymentAmt - + currencyConvert(a.Amount + a.DisCountAmt + a.WriteOffAmt, - a.C_Currency_ID, p_C_Currency_ID, a.DateTrx, null, a.AD_Client_ID, a.AD_Org_ID); - END LOOP; - -- - RETURN ROUND(NVL(v_PaymentAmt,0), 2) * v_MultiplierAP; -END invoicePaid; -/ diff --git a/db/database/Functions/C_PaymentTerm_Discount.sql b/db/database/Functions/C_PaymentTerm_Discount.sql deleted file mode 100644 index 2a65c80123..0000000000 --- a/db/database/Functions/C_PaymentTerm_Discount.sql +++ /dev/null @@ -1,71 +0,0 @@ -CREATE OR REPLACE FUNCTION paymentTermDiscount -( - Amount IN NUMBER, - Currency_ID IN NUMBER, - PaymentTerm_ID IN NUMBER, - DocDate IN DATE, - PayDate IN DATE -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_PaymentTerm_Discount.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Calculate Discount - * Description: - * Calculate the allowable Discount Amount of the Payment Term - * - * Test: SELECT C_PaymentTerm_Discount(17777, 103, '10-DEC-1999') FROM DUAL - ************************************************************************/ - -AS - Discount NUMBER := 0; - CURSOR Cur_PT IS - SELECT * - FROM C_PaymentTerm - WHERE C_PaymentTerm_ID = PaymentTerm_ID; - Discount1Date DATE; - Discount2Date DATE; - Add1Date NUMBER := 0; - Add2Date NUMBER := 0; -BEGIN - -- No Data - No Discount - IF (Amount IS NULL OR PaymentTerm_ID IS NULL OR DocDate IS NULL) THEN - RETURN 0; - END IF; - - FOR p IN Cur_PT LOOP -- for convineance only --- DBMS_OUTPUT.PUT_LINE(p.Name || ' - Doc = ' || TO_CHAR(DocDate)); - Discount1Date := TRUNC(DocDate + p.DiscountDays + p.GraceDays); - Discount2Date := TRUNC(DocDate + p.DiscountDays2 + p.GraceDays); - - -- Next Business Day - IF (p.IsNextBusinessDay='Y') THEN - -- Not fully correct - only does weekends (7=Saturday, 1=Sunday) - SELECT DECODE(TO_CHAR(Discount1Date,'D'), '7',2, '1',1, 0), - DECODE(TO_CHAR(Discount2Date,'D'), '7',2, '1',1, 0) - INTO Add1Date, Add2Date - FROM DUAL; - Discount1Date := Discount1Date+Add1Date; - Discount2Date := Discount2Date+Add2Date; - END IF; - - -- Discount 1 - IF (Discount1Date >= TRUNC(PayDate)) THEN --- DBMS_OUTPUT.PUT_LINE('Discount 1 ' || TO_CHAR(Discount1Date) || ' ' || p.Discount); - Discount := Amount * p.Discount / 100; - -- Discount 2 - ELSIF (Discount2Date >= TRUNC(PayDate)) THEN --- DBMS_OUTPUT.PUT_LINE('Discount 2 ' || TO_CHAR(Discount2Date) || ' ' || p.Discount2); - Discount := Amount * p.Discount2 / 100; - END IF; - END LOOP; - -- - RETURN ROUND(NVL(Discount,0), 2); -- fixed rounding -END paymentTermDiscount; -/ diff --git a/db/database/Functions/C_PaymentTerm_DueDate.sql b/db/database/Functions/C_PaymentTerm_DueDate.sql deleted file mode 100644 index 279d3c290d..0000000000 --- a/db/database/Functions/C_PaymentTerm_DueDate.sql +++ /dev/null @@ -1,52 +0,0 @@ -CREATE OR REPLACE FUNCTION paymentTermDueDate -( - PaymentTerm_ID IN NUMBER, - DocDate IN DATE -) -RETURN DATE -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_PaymentTerm_DueDate.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Get Due Date - * Description: - * Returns the due date - ************************************************************************/ -AS - Days NUMBER := 0; - DueDate DATE := TRUNC(DocDate); - -- - CURSOR Cur_PT IS - SELECT * - FROM C_PaymentTerm - WHERE C_PaymentTerm_ID = PaymentTerm_ID; - FirstDay DATE; - NoDays NUMBER; -BEGIN - FOR p IN Cur_PT LOOP -- for convineance only - -- DBMS_OUTPUT.PUT_LINE(p.Name || ' - Doc = ' || TO_CHAR(DocDate)); - -- Due 15th of following month - IF (p.IsDueFixed = 'Y') THEN - -- DBMS_OUTPUT.PUT_LINE(p.Name || ' - Day = ' || p.FixMonthDay); - FirstDay := TRUNC(DocDate, 'MM'); - NoDays := TRUNC(DocDate) - FirstDay; - DueDate := FirstDay + (p.FixMonthDay-1); -- starting on 1st - DueDate := ADD_MONTHS(DueDate, p.FixMonthOffset); - IF (NoDays > p.FixMonthCutoff) THEN - DueDate := ADD_MONTHS(DueDate, 1); - END IF; - ELSE - -- DBMS_OUTPUT.PUT_LINE('Net = ' || p.NetDays); - DueDate := TRUNC(DocDate) + p.NetDays; - END IF; - END LOOP; --- DBMS_OUTPUT.PUT_LINE('Due = ' || TO_CHAR(DueDate) || ', Pay = ' || TO_CHAR(PayDate)); - - RETURN DueDate; -END paymentTermDueDate; -/ diff --git a/db/database/Functions/C_PaymentTerm_DueDays.sql b/db/database/Functions/C_PaymentTerm_DueDays.sql deleted file mode 100644 index 361d6ca5d2..0000000000 --- a/db/database/Functions/C_PaymentTerm_DueDays.sql +++ /dev/null @@ -1,58 +0,0 @@ -CREATE OR REPLACE FUNCTION paymentTermDueDays -( - PaymentTerm_ID IN NUMBER, - DocDate IN DATE, - PayDate IN DATE -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_PaymentTerm_DueDays.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Get Due Days - * Description: - * Returns the days due (positive) or the days till due (negative) - * Grace days are not considered! - * If record is not found it assumes due immediately - * - * Test: SELECT C_PaymentTerm_DueDays(103, '01-DEC-2000', '15-DEC-2000') FROM DUAL - ************************************************************************/ -AS - Days NUMBER := 0; - DueDate DATE := TRUNC(DocDate); - -- - CURSOR Cur_PT IS - SELECT * - FROM C_PaymentTerm - WHERE C_PaymentTerm_ID = PaymentTerm_ID; - FirstDay DATE; - NoDays NUMBER; -BEGIN - FOR p IN Cur_PT LOOP -- for convineance only - -- DBMS_OUTPUT.PUT_LINE(p.Name || ' - Doc = ' || TO_CHAR(DocDate)); - -- Due 15th of following month - IF (p.IsDueFixed = 'Y') THEN - -- DBMS_OUTPUT.PUT_LINE(p.Name || ' - Day = ' || p.FixMonthDay); - FirstDay := TRUNC(DocDate, 'MM'); - NoDays := TRUNC(DocDate) - FirstDay; - DueDate := FirstDay + (p.FixMonthDay-1); -- starting on 1st - DueDate := ADD_MONTHS(DueDate, p.FixMonthOffset); - IF (NoDays > p.FixMonthCutoff) THEN - DueDate := ADD_MONTHS(DueDate, 1); - END IF; - ELSE - -- DBMS_OUTPUT.PUT_LINE('Net = ' || p.NetDays); - DueDate := TRUNC(DocDate) + p.NetDays; - END IF; - END LOOP; --- DBMS_OUTPUT.PUT_LINE('Due = ' || TO_CHAR(DueDate) || ', Pay = ' || TO_CHAR(PayDate)); - - Days := TRUNC(PayDate) - DueDate; - RETURN Days; -END paymentTermDueDays; -/ diff --git a/db/database/Functions/C_Payment_Allocated.sql b/db/database/Functions/C_Payment_Allocated.sql deleted file mode 100644 index 9227d4b478..0000000000 --- a/db/database/Functions/C_Payment_Allocated.sql +++ /dev/null @@ -1,57 +0,0 @@ -CREATE OR REPLACE FUNCTION paymentAllocated -( - p_C_Payment_ID IN NUMBER, - p_C_Currency_ID IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_Payment_Allocated.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Calculate Allocated Payment Amount in Payment Currency - * Description: - -- - SELECT C_Payment_Allocated(C_Payment_ID,C_Currency_ID), PayAmt, IsAllocated - FROM C_Payment_v - WHERE C_Payment_ID>=1000000; - -- - UPDATE C_Payment_v - SET IsAllocated=CASE WHEN C_Payment_Allocated(C_Payment_ID, C_Currency_ID)=PayAmt THEN 'Y' ELSE 'N' END - WHERE C_Payment_ID>=1000000; - - ************************************************************************/ -AS - v_AllocatedAmt NUMBER := 0; - v_PayAmt NUMBER; - CURSOR Cur_Alloc IS - SELECT a.AD_Client_ID, a.AD_Org_ID, al.Amount, a.C_Currency_ID, a.DateTrx - FROM C_AllocationLine al - INNER JOIN C_AllocationHdr a ON (al.C_AllocationHdr_ID=a.C_AllocationHdr_ID) - WHERE al.C_Payment_ID = p_C_Payment_ID - AND a.IsActive='Y'; - -- AND al.C_Invoice_ID IS NOT NULL; -BEGIN - -- Charge - nothing available - SELECT MAX(PayAmt) - INTO v_PayAmt - FROM C_Payment - WHERE C_Payment_ID=p_C_Payment_ID AND C_Charge_ID > 0; - IF (v_PayAmt IS NOT NULL) THEN - RETURN 0; - END IF; - - -- Calculate Allocated Amount - FOR a IN Cur_Alloc LOOP - v_AllocatedAmt := v_AllocatedAmt - + currencyConvert(a.Amount, a.C_Currency_ID, p_C_Currency_ID, a.DateTrx, null, a.AD_Client_ID, a.AD_Org_ID); - END LOOP; - -- Round to penny - v_AllocatedAmt := ROUND(NVL(v_AllocatedAmt,0), 2); - RETURN v_AllocatedAmt; -END paymentAllocated; -/ diff --git a/db/database/Functions/C_Payment_Available.sql b/db/database/Functions/C_Payment_Available.sql deleted file mode 100644 index aa10495639..0000000000 --- a/db/database/Functions/C_Payment_Available.sql +++ /dev/null @@ -1,62 +0,0 @@ -CREATE OR REPLACE FUNCTION paymentAvailable -( - p_C_Payment_ID IN NUMBER -) -RETURN NUMBER -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: C_Payment_Available.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Calculate Available Payment Amount in Payment Currency - * Description: - * similar to C_Invoice_Open - ************************************************************************/ -AS - v_Currency_ID NUMBER(10); - v_AvailableAmt NUMBER := 0; - v_IsReceipt C_Payment.IsReceipt%TYPE; - v_Amt NUMBER := 0; - CURSOR Cur_Alloc IS - SELECT a.AD_Client_ID, a.AD_Org_ID, al.Amount, a.C_Currency_ID, a.DateTrx - FROM C_AllocationLine al - INNER JOIN C_AllocationHdr a ON (al.C_AllocationHdr_ID=a.C_AllocationHdr_ID) - WHERE al.C_Payment_ID = p_C_Payment_ID - AND a.IsActive='Y'; - -- AND al.C_Invoice_ID IS NOT NULL; -BEGIN - -- Charge - fully allocated - SELECT MAX(PayAmt) - INTO v_Amt - FROM C_Payment - WHERE C_Payment_ID=p_C_Payment_ID AND C_Charge_ID > 0; - IF (v_Amt IS NOT NULL) THEN - RETURN v_Amt; - END IF; - - -- Get Currency - SELECT C_Currency_ID, PayAmt, IsReceipt - INTO v_Currency_ID, v_AvailableAmt, v_IsReceipt - FROM C_Payment_v -- corrected for AP/AR - WHERE C_Payment_ID = p_C_Payment_ID; --- DBMS_OUTPUT.PUT_LINE('== C_Payment_ID=' || p_C_Payment_ID || ', PayAmt=' || v_AvailableAmt || ', Receipt=' || v_IsReceipt); - - -- Calculate Allocated Amount - FOR a IN Cur_Alloc LOOP - v_Amt := currencyConvert(a.Amount, a.C_Currency_ID, v_Currency_ID, a.DateTrx, null, a.AD_Client_ID, a.AD_Org_ID); - v_AvailableAmt := v_AvailableAmt - v_Amt; --- DBMS_OUTPUT.PUT_LINE(' Allocation=' || a.Amount || ' - Available=' || v_AvailableAmt); - END LOOP; - -- Ignore Rounding - IF (v_AvailableAmt BETWEEN -0.00999 AND 0.00999) THEN - v_AvailableAmt := 0; - END IF; - -- Round to penny - v_AvailableAmt := ROUND(NVL(v_AvailableAmt,0), 2); - RETURN v_AvailableAmt; -END paymentAvailable; -/ diff --git a/db/database/Functions/DBA_ConstraintCmd.sql b/db/database/Functions/DBA_ConstraintCmd.sql deleted file mode 100644 index 75d82cc6d9..0000000000 --- a/db/database/Functions/DBA_ConstraintCmd.sql +++ /dev/null @@ -1,59 +0,0 @@ -CREATE OR REPLACE FUNCTION DBA_ConstraintCmd -( - p_ConstraintName IN VARCHAR2 -) -RETURN VARCHAR2 -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: DBA_ConstraintCmd.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - * $Source: /cvs/adempiere/db/database/Functions/DBA_ConstraintCmd.sql,v $ - *** - * Title: Create DML command for given constraint - * Description: - * SELECT DBA_ConstraintCmd(Constraint_Name) FROM User_Constraints WHERE CONSTRAINT_TYPE='R' - ************************************************************************/ -AS - v_Result VARCHAR2(2000); - v_TableName VARCHAR2(256); - v_ColumnName VARCHAR2(256); - v_ConstraintName VARCHAR2(256); - v_DeleteRule VARCHAR2(256); -BEGIN - -- Get First Part - SELECT c.Table_Name, cc.Column_name, c.R_Constraint_Name, c.Delete_Rule - INTO v_TableName, v_ColumnName, v_ConstraintName, v_DeleteRule - FROM USER_Constraints c, USER_Cons_Columns cc - WHERE c.Constraint_Name=cc.Constraint_Name - AND cc.Constraint_Name=p_ConstraintName; - -- Create First Part - v_Result := 'ALTER TABLE ' || v_TableName || ' ADD CONSTRAINT ' || p_ConstraintName - || ' FOREIGN KEY (' || v_ColumnName || ') '; - - -- Not a valid FK Reference - IF (v_ConstraintName IS NULL) THEN - RETURN NULL; - END IF; - - -- Get Second Part - SELECT c.Table_Name, cc.Column_name - INTO v_TableName, v_ColumnName - FROM USER_Constraints c, USER_Cons_Columns cc - WHERE c.Constraint_Name=cc.Constraint_Name - AND cc.Constraint_Name=v_ConstraintName; - -- Create Second Part - v_Result := v_Result || 'REFERENCES ' || v_TableName || '(' || v_ColumnName || ')'; - - IF (v_DeleteRule = 'CASCADE') THEN - v_Result := v_Result || ' ON DELETE CASCADE'; - END IF; --- DBMS_OUTPUT.PUT_LINE(v_Result); - RETURN v_Result; - -END DBA_ConstraintCmd; -/ - diff --git a/db/database/Functions/DBA_DisplayType.sql b/db/database/Functions/DBA_DisplayType.sql deleted file mode 100644 index b1cf73139e..0000000000 --- a/db/database/Functions/DBA_DisplayType.sql +++ /dev/null @@ -1,46 +0,0 @@ -CREATE OR REPLACE FUNCTION DBA_DisplayType -( - AD_Reference_ID IN NUMBER -) -RETURN VARCHAR2 -AS -BEGIN -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: DBA_DisplayType.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Show clear text od DisplayType - * Description: - ************************************************************************/ - IF (AD_Reference_ID = 10) THEN RETURN 'String = 10'; - ELSIF (AD_Reference_ID = 11) THEN RETURN 'Integer = 11'; - ELSIF (AD_Reference_ID = 12) THEN RETURN 'Amount = 12'; - ELSIF (AD_Reference_ID = 13) THEN RETURN 'ID = 13'; - ELSIF (AD_Reference_ID = 14) THEN RETURN 'Text = 14'; - ELSIF (AD_Reference_ID = 15) THEN RETURN 'Date = 15'; - ELSIF (AD_Reference_ID = 16) THEN RETURN 'DateTime = 16'; - ELSIF (AD_Reference_ID = 17) THEN RETURN 'List = 17'; - ELSIF (AD_Reference_ID = 18) THEN RETURN 'Table = 18'; - ELSIF (AD_Reference_ID = 19) THEN RETURN 'TableDir = 19'; - ELSIF (AD_Reference_ID = 20) THEN RETURN 'YesNo = 20'; - ELSIF (AD_Reference_ID = 21) THEN RETURN 'Location = 21'; - ELSIF (AD_Reference_ID = 22) THEN RETURN 'Number = 22'; - ELSIF (AD_Reference_ID = 23) THEN RETURN 'Binary = 23'; - ELSIF (AD_Reference_ID = 24) THEN RETURN 'Time = 24'; - ELSIF (AD_Reference_ID = 25) THEN RETURN 'Account = 25'; - ELSIF (AD_Reference_ID = 26) THEN RETURN 'RowID = 26'; - ELSIF (AD_Reference_ID = 27) THEN RETURN 'Color = 27'; - ELSIF (AD_Reference_ID = 28) THEN RETURN 'Button = 28'; - ELSIF (AD_Reference_ID = 29) THEN RETURN 'Quantity = 29'; - ELSIF (AD_Reference_ID = 30) THEN RETURN 'Search = 30'; - ELSIF (AD_Reference_ID = 31) THEN RETURN 'Locator = 31'; - ELSIF (AD_Reference_ID = 32) THEN RETURN 'Image = 32'; - ELSIF (AD_Reference_ID = 33) THEN RETURN 'Assignment= 33'; - ELSE RETURN 'Unknown ('||AD_Reference_ID||')'; END IF; -END DBA_DisplayType; -/ diff --git a/db/database/Functions/M_Attribute_Name.sql b/db/database/Functions/M_Attribute_Name.sql deleted file mode 100644 index 020e5766c6..0000000000 --- a/db/database/Functions/M_Attribute_Name.sql +++ /dev/null @@ -1,84 +0,0 @@ -CREATE OR REPLACE FUNCTION productAttribute -( - p_M_AttributeSetInstance_ID IN NUMBER -) -RETURN NVARCHAR2 -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: M_Attribute_Name.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Return Instance Attribute Info - * Description: - * - * Test: - SELECT M_Attribute_Name (M_AttributeSetInstance_ID) - FROM M_InOutLine WHERE M_AttributeSetInstance_ID > 0 - -- - SELECT p.Name - FROM C_InvoiceLine il LEFT OUTER JOIN M_Product p ON (il.M_Product_ID=p.M_Product_ID); - SELECT p.Name || M_Attribute_Name (il.M_AttributeSetInstance_ID) - FROM C_InvoiceLine il LEFT OUTER JOIN M_Product p ON (il.M_Product_ID=p.M_Product_ID); - - ************************************************************************/ -AS - v_Name NVARCHAR2(2000) := NULL; - v_NameAdd NVARCHAR2(2000) := ''; - -- - v_Lot M_AttributeSetInstance.Lot%TYPE; - v_LotStart M_AttributeSet.LotCharSOverwrite%TYPE; - v_LotEnd M_AttributeSet.LotCharEOverwrite%TYPE; - v_SerNo M_AttributeSetInstance.SerNo%TYPE; - v_SerNoStart M_AttributeSet.SerNoCharSOverwrite%TYPE; - v_SerNoEnd M_AttributeSet.SerNoCharEOverwrite%TYPE; - v_GuaranteeDate M_AttributeSetInstance.GuaranteeDate%TYPE; - -- - CURSOR CUR_Attributes IS - SELECT ai.Value, a.Name - FROM M_AttributeInstance ai - INNER JOIN M_Attribute a ON (ai.M_Attribute_ID=a.M_Attribute_ID AND a.IsInstanceAttribute='Y') - WHERE ai.M_AttributeSetInstance_ID=p_M_AttributeSetInstance_ID; - -BEGIN -/* -- Get Product Name - SELECT Name - INTO v_Name - FROM M_Product WHERE M_Product_ID=p_M_Product_ID; -*/ - -- Get Product Attribute Set Instance - IF (p_M_AttributeSetInstance_ID > 0) THEN - SELECT asi.Lot, asi.SerNo, asi.GuaranteeDate, - COALESCE(a.SerNoCharSOverwrite, N'#'), COALESCE(a.SerNoCharEOverwrite, N''), - COALESCE(a.LotCharSOverwrite, N'�'), COALESCE(a.LotCharEOverwrite, N'�') - INTO v_Lot, v_SerNo, v_GuaranteeDate, - v_SerNoStart, v_SerNoEnd, v_LotStart, v_LotEnd - FROM M_AttributeSetInstance asi - INNER JOIN M_AttributeSet a ON (asi.M_AttributeSet_ID=a.M_AttributeSet_ID) - WHERE asi.M_AttributeSetInstance_ID=p_M_AttributeSetInstance_ID; - -- - IF (v_SerNo IS NOT NULL) THEN - v_NameAdd := v_NameAdd || v_SerNoStart || v_SerNo || v_SerNoEnd || ' '; - END IF; - IF (v_Lot IS NOT NULL) THEN - v_NameAdd := v_NameAdd || v_LotStart || v_Lot || v_LotEnd || ' '; - END IF; - IF (v_GuaranteeDate IS NOT NULL) THEN - v_NameAdd := v_NameAdd || v_GuaranteeDate || ' '; - END IF; - -- - FOR a IN CUR_Attributes LOOP - v_NameAdd := v_NameAdd || a.Name || ':' || a.Value || ' '; - END LOOP; - -- - IF (LENGTH(v_NameAdd) > 0) THEN - v_Name := v_Name || ' (' || TRIM(v_NameAdd) || ')'; - END IF; - END IF; - - RETURN v_Name; -END productAttribute; -/ diff --git a/db/database/Procedures/AD_Column_Sync.sql b/db/database/Procedures/AD_Column_Sync.sql deleted file mode 100644 index d0e299fb45..0000000000 --- a/db/database/Procedures/AD_Column_Sync.sql +++ /dev/null @@ -1,280 +0,0 @@ -CREATE OR REPLACE PROCEDURE AD_Column_Sync -( - p_PInstance_ID IN NUMBER -) -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: AD_Column_Sync.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Synchronize Column with Database - * Description: - ************************************************************************/ -AS - -- Logistice - v_ResultStr VARCHAR2(2000); - v_Message VARCHAR2(2000); - v_Result NUMBER := 1; -- 0=failure - v_Record_ID NUMBER; - v_AD_User_ID NUMBER; - -- Parameter - CURSOR Cur_Parameter (pp_PInstance NUMBER) IS - SELECT i.Record_ID, i.AD_User_ID, - p.ParameterName, p.P_String, p.P_Number, p.P_Date - FROM AD_PInstance i, AD_PInstance_Para p - WHERE i.AD_PInstance_ID=pp_PInstance - AND i.AD_PInstance_ID=p.AD_PInstance_ID(+) - ORDER BY p.SeqNo; - -- Parameter Variables - -- Variables - v_TableName AD_Table.TableName%TYPE; - v_ColumnName AD_Column.ColumnName%TYPE; - v_AD_Reference_ID AD_Column.AD_Reference_ID%TYPE; - v_FieldLength AD_Column.FieldLength%TYPE; - v_DefaultValue AD_Column.DefaultValue%TYPE; - v_IsMandatory AD_Column.IsMandatory%TYPE; - -- - v_DB_DataType USER_TAB_COLUMNS.DATA_TYPE%TYPE; - v_Cmd VARCHAR2(255); - v_DB_TableName VARCHAR(60) := NULL; - -BEGIN - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Processing ' || p_PInstance_ID); - v_ResultStr := 'PInstanceNotFound'; - UPDATE AD_PInstance - SET Created = SysDate, - IsProcessing = 'Y' - WHERE AD_PInstance_ID=p_PInstance_ID; - COMMIT; - - -- Get Parameters - v_ResultStr := 'ReadingParameters'; - FOR p IN Cur_Parameter (p_PInstance_ID) LOOP - v_Record_ID := p.Record_ID; - v_AD_User_ID := p.AD_User_ID; - END LOOP; -- Get Parameter - DBMS_OUTPUT.PUT_LINE(' Record_ID=' || v_Record_ID); - - -- Get Table/Column Info - v_ResultStr := 'ReadingColumnInfo'; - SELECT t.TableName, c.ColumnName, c.AD_Reference_ID, c.FieldLength, - c.DefaultValue, c.IsMandatory - INTO v_TableName, v_ColumnName, v_AD_Reference_ID, v_FieldLength, - v_DefaultValue, v_IsMandatory - FROM AD_Table t, AD_Column c - WHERE t.AD_Table_ID = c.AD_Table_ID - AND c.AD_Column_ID = v_Record_ID; - - - -- Check if Table exists - v_ResultStr := 'ReadingDBTableInfo'; - BEGIN - SELECT Table_Name - INTO v_DB_TableName - FROM USER_TABLES - WHERE Table_Name=UPPER(v_TableName); - EXCEPTION - WHEN OTHERS THEN NULL; - END; - - -- Table does not exists - IF (v_DB_TableName IS NULL) THEN - v_ResultStr := 'CreateTableCommand'; - BEGIN - v_CMD := 'CREATE TABLE ' || SYS_CONTEXT('USERENV', 'CURRENT_USER') || '.' - || UPPER(v_TableName) || ' (XXXX CHAR(1))'; - EXECUTE IMMEDIATE v_Cmd; - EXCEPTION - WHEN OTHERS THEN - v_Result := 0; -- failure - v_Message := 'Error: ' || SQLERRM || ' - Command: ' || v_Cmd; - GOTO FINISH_PROCESS; - END; - END IF; - - - -- Get Data Dictionary Info - v_ResultStr := 'ReadingDBColumnInfo'; - BEGIN - SELECT DATA_TYPE --, DATA_LENGTH, DATA_PRECISION, DATA_SCALE, NULLABLE, DATA_DEFAULT - INTO v_DB_DataType - FROM USER_TAB_COLUMNS - WHERE TABLE_NAME=UPPER(v_TableName) - AND COLUMN_NAME=UPPER(v_ColumnName); - EXCEPTION - WHEN OTHERS THEN NULL; - END; - - - /** - * Create Column in Database - */ - IF (v_DB_DataType IS NULL) THEN - v_ResultStr := 'CreateALTERCommand'; - BEGIN - -- Get TableName - v_Cmd := 'ALTER TABLE ' || v_TableName || ' ADD ' || v_ColumnName || ' '; - -- Map Data Type - IF (v_AD_Reference_ID IN (10,14)) THEN - -- String, Text - v_Cmd := v_Cmd || 'NVARCHAR2(' || v_FieldLength || ')'; - ELSIF (v_AD_Reference_ID IN (17,20,28)) THEN - -- List,YesNo,Button - v_Cmd := v_Cmd || 'CHAR(' || v_FieldLength || ')'; - ELSIF (v_AD_Reference_ID IN (13,18,19,21,25,27,30,31)) THEN - -- ID,Table,TableDir,Location,Account,Color,Search,Locator - v_Cmd := v_Cmd || 'NUMBER(10)'; - ELSIF (v_AD_Reference_ID IN (11,12,22,29)) THEN - -- Integer,Amount,Number,Quantity - v_Cmd := v_Cmd || 'NUMBER'; - ELSIF (v_AD_Reference_ID IN (15,16)) THEN - -- Date,DateTime - v_Cmd := v_Cmd || 'DATE'; - ELSE -- 23-Binary, 24-Radio, 26-RowID, 32-Image - v_Result := 0; -- failure - v_Message := 'DisplayType Not Supported'; - END IF; - -- Default (literal) - IF (v_DefaultValue IS NOT NULL AND LENGTH(v_DefaultValue) <> 0) THEN - IF (v_AD_Reference_ID IN (10,14,17,20,28)) THEN - v_Cmd := v_Cmd || ' DEFAULT (''' || v_DefaultValue || ''')'; - ELSE - v_Cmd := v_Cmd || ' DEFAULT ' || v_DefaultValue; - END IF; - END IF; - -- Mandatory - IF (v_IsMandatory = 'Y') THEN - IF (v_DefaultValue IS NULL OR LENGTH(v_DefaultValue) = 0) THEN - v_Result := 0; -- failure - v_Message := 'Mandatory requites literal default value'; - ELSE - v_Cmd := v_Cmd || ' NOT NULL'; - END IF; - END IF; - -- Execute it - IF (v_Result = 1) THEN - EXECUTE IMMEDIATE v_Cmd; - v_Message := '@Created@ - ' || v_Cmd; - END IF; - EXCEPTION - WHEN OTHERS THEN - v_Result := 0; -- failure - v_Message := 'Error: ' || SQLERRM || ' - Command: ' || v_Cmd; - END; - - /** - * Change certain Attributes - */ - ELSE - v_ResultStr := 'CreateALTERCommand'; - BEGIN - -- Get TableName - v_Cmd := 'ALTER TABLE ' || v_TableName || ' MODIFY ' || v_ColumnName || ' '; - -- Map Data Type - IF (v_AD_Reference_ID IN (10,14)) THEN - -- String, Text - v_Cmd := v_Cmd || 'NVARCHAR2(' || v_FieldLength || ')'; - ELSIF (v_AD_Reference_ID IN (17,20,28)) THEN - -- List,YesNo,Button - v_Cmd := v_Cmd || 'CHAR(' || v_FieldLength || ')'; - ELSIF (v_AD_Reference_ID IN (13,18,19,21,25,27,30,31)) THEN - -- ID,Table,TableDir,Location,Account,Color,Search,Locator - v_Cmd := v_Cmd || 'NUMBER(10)'; - ELSIF (v_AD_Reference_ID IN (11,12,22,29)) THEN - -- Integer,Amount,Number,Quantity - v_Cmd := v_Cmd || 'NUMBER'; - ELSIF (v_AD_Reference_ID IN (15,16)) THEN - -- Date,DateTime - v_Cmd := v_Cmd || 'DATE'; - ELSE -- 23-Binary, 24-Radio, 26-RowID, 32-Image - v_Result := 0; -- failure - v_Message := 'DisplayType Not Supported'; - END IF; - -- Default (literal) - IF (v_DefaultValue IS NOT NULL AND LENGTH(v_DefaultValue) <> 0) THEN - IF (v_AD_Reference_ID IN (10,14,17,20,28)) THEN - v_Cmd := v_Cmd || ' DEFAULT (''' || v_DefaultValue || ''')'; - ELSE - v_Cmd := v_Cmd || ' DEFAULT ' || v_DefaultValue; - END IF; - END IF; - -- Mandatory - IF (v_IsMandatory = 'Y') THEN - IF (v_DefaultValue IS NULL OR LENGTH(v_DefaultValue) = 0) THEN - v_Result := 0; -- failure - v_Message := 'Mandatory requites literal default value'; - ELSE - v_Cmd := v_Cmd || ' NOT NULL'; - END IF; - END IF; - -- Execute it - IF (v_Result = 1) THEN - EXECUTE IMMEDIATE v_Cmd; - v_Message := '@Updated@ - ' || v_Cmd; - END IF; - EXCEPTION - WHEN OTHERS THEN - v_Result := 0; -- failure - v_Message := 'Error: ' || SQLERRM || ' - Command: ' || v_Cmd; - END; - END IF; - - /** - * Delete Column - * - ELSE - v_Cmd := 'ALTER TABLE ' || v_TableName - || ' DROP COLUMN ' || v_ColumnName; - -- Execute it - EXECUTE IMMEDIATE v_Cmd; - END IF; - /**/ - - - -- Table did not exist - drop initial column - IF (v_DB_TableName IS NULL) THEN - v_ResultStr := 'CreateDropXXColumnCommand'; - BEGIN - v_CMD := 'ALTER TABLE ' || v_TableName || ' DROP COLUMN XXXX'; - EXECUTE IMMEDIATE v_Cmd; - EXCEPTION - WHEN OTHERS THEN - v_Result := 0; -- failure - v_Message := 'Error: ' || SQLERRM || ' - Command: ' || v_Cmd; - END; - END IF; - - -<> - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || v_Message); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = v_Result, -- 1=success - ErrorMsg = v_Message - WHERE AD_PInstance_ID=p_PInstance_ID; - COMMIT; - RETURN; - -EXCEPTION - WHEN OTHERS THEN - v_ResultStr := v_ResultStr || ': ' || SQLERRM || ' - ' || v_Message; - DBMS_OUTPUT.PUT_LINE(v_ResultStr); - ROLLBACK; - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 0, -- failure - ErrorMsg = v_ResultStr - WHERE AD_PInstance_ID=p_PInstance_ID; - COMMIT; - RETURN; - -END AD_Column_Sync; -/ diff --git a/db/database/Procedures/AD_PrintPaper_Default.sql b/db/database/Procedures/AD_PrintPaper_Default.sql deleted file mode 100644 index 71a014d0f5..0000000000 --- a/db/database/Procedures/AD_PrintPaper_Default.sql +++ /dev/null @@ -1,92 +0,0 @@ -CREATE OR REPLACE PROCEDURE AD_PrintPaper_Default -( - p_AD_PInstance_ID IN NUMBER -) -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: AD_PrintPaper_Default.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Set Current Format as Default - * Description: - ************************************************************************/ -AS - -- Logistice - v_ResultStr VARCHAR2(2000); - v_Message VARCHAR2(2000); - p_Record_ID NUMBER; - -- Parameter - CURSOR Cur_Parameter (PInstance NUMBER) IS - SELECT i.Record_ID, p.ParameterName, p.P_String, p.P_Number, p.P_Date - FROM AD_PInstance i, AD_PInstance_Para p - WHERE i.AD_PInstance_ID=PInstance - AND i.AD_PInstance_ID=p.AD_PInstance_ID(+) - ORDER BY p.SeqNo; - -- Parameter Variables - p_AD_Client_ID NUMBER := NULL; - -BEGIN - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Processing ' || p_AD_PInstance_ID); - v_ResultStr := 'PInstanceNotFound'; - UPDATE AD_PInstance - SET Created = SysDate, - IsProcessing = 'Y' - WHERE AD_PInstance_ID=p_AD_PInstance_ID; - COMMIT; - - -- Get Parameters - v_ResultStr := 'ReadingParameters'; - FOR p IN Cur_Parameter (p_AD_PInstance_ID) LOOP - p_Record_ID := p.Record_ID; - IF (p.ParameterName = 'AD_Client_ID') THEN - p_AD_Client_ID := p.P_Number; - DBMS_OUTPUT.PUT_LINE(' AD_Client_ID=' || p_AD_Client_ID); - ELSE - DBMS_OUTPUT.PUT_LINE('*** Unknown Parameter=' || p.ParameterName); - END IF; - END LOOP; -- Get Parameter - DBMS_OUTPUT.PUT_LINE(' Record_ID=' || p_Record_ID); - - - v_ResultStr := 'Updating'; - UPDATE AD_PrintFormat pf - SET AD_PrintPaper_ID = p_Record_ID - WHERE (AD_Client_ID = p_AD_Client_ID OR p_AD_Client_ID IS NULL) - AND EXISTS (SELECT * FROM AD_PrintPaper pp - WHERE pf.AD_PrintPaper_ID=pp.AD_PrintPaper_ID - AND IsLandscape = (SELECT IsLandscape FROM AD_PrintPaper - WHERE AD_PrintPaper_ID=p_Record_ID)); - v_Message := '@Copied@=' || SQL%ROWCOUNT; - -<> - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || v_Message); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 1, -- success - ErrorMsg = v_Message - WHERE AD_PInstance_ID=p_AD_PInstance_ID; - COMMIT; - RETURN; - -EXCEPTION - WHEN OTHERS THEN - v_ResultStr := v_ResultStr || ': ' || SQLERRM || ' - ' || v_Message; - DBMS_OUTPUT.PUT_LINE(v_ResultStr); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 0, -- failure - ErrorMsg = v_ResultStr - WHERE AD_PInstance_ID=p_AD_PInstance_ID; - COMMIT; - RETURN; - -END AD_PrintPaper_Default; -/ diff --git a/db/database/Procedures/AD_Sequence_Doc.sql b/db/database/Procedures/AD_Sequence_Doc.sql deleted file mode 100644 index 444ec4914a..0000000000 --- a/db/database/Procedures/AD_Sequence_Doc.sql +++ /dev/null @@ -1,56 +0,0 @@ -CREATE OR REPLACE PROCEDURE AD_Sequence_Doc -( - p_SequenceName IN VARCHAR2, - p_AD_Client_ID IN NUMBER, - o_DocumentNo OUT VARCHAR2 - ) -AS -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: AD_Sequence_Doc.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Get the next DocumentNo of TableName - * Description: - * store in parameter o_DocumentNo - * if ID < 1000000, use System Doc Sequence - ************************************************************************/ - v_NextNo NUMBER; - v_NextNoSys NUMBER; - v_Prefix VARCHAR2(30); - v_Suffix VARCHAR2(30); -BEGIN - SELECT CurrentNext, CurrentNextSys, Prefix, Suffix - INTO v_NextNo, v_NextNoSys, v_Prefix, v_Suffix - FROM AD_Sequence - WHERE Name = p_SequenceName - AND IsActive = 'Y' - AND IsTableID = 'N' - AND IsAutoSequence = 'Y' - AND AD_Client_ID = p_AD_Client_ID - FOR UPDATE OF CurrentNext, CurrentNextSys; - - IF (v_NextNoSys <> -1 AND p_AD_Client_ID < 1000000) THEN -- System No - UPDATE AD_Sequence - SET CurrentNextSys = CurrentNextSys + IncrementNo, - Updated = SysDate - WHERE Name = p_SequenceName; - o_DocumentNo := NVL(v_Prefix, '') || v_NextNoSys || NVL(v_Suffix, ''); - ELSE -- Standard No - UPDATE AD_Sequence - SET CurrentNext = CurrentNext + IncrementNo, - Updated = SysDate - WHERE Name = p_SequenceName; - o_DocumentNo := NVL(v_Prefix, '') || v_NextNo || NVL(v_Suffix, ''); - END IF; - -EXCEPTION - WHEN NO_DATA_FOUND THEN - RAISE_APPLICATION_ERROR (-20100, 'Document Sequence not found - ' || p_SequenceName); - -END AD_Sequence_Doc; -/ diff --git a/db/database/Procedures/AD_Sequence_DocType.sql b/db/database/Procedures/AD_Sequence_DocType.sql deleted file mode 100644 index 71baa975e4..0000000000 --- a/db/database/Procedures/AD_Sequence_DocType.sql +++ /dev/null @@ -1,80 +0,0 @@ -CREATE OR REPLACE PROCEDURE AD_Sequence_DocType -( - p_DocType_ID IN NUMBER, - p_ID IN NUMBER, - p_DocumentNo OUT VARCHAR2 - ) -AS -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: AD_Sequence_DocType.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Get the next DocumentNo of Document Type - * Description: - * store in parameter p_DocumentNo - * If ID < 1000000, use System Doc Sequence - * If no Document Sequence is defined, return null ! - * Use AD_Sequence_Doc('DocumentNo_myTable',.. to get it directly - ************************************************************************/ - - v_NextNo NUMBER; - v_NextNoSys NUMBER; - v_Sequence_ID NUMBER := NULL; - v_Prefix VARCHAR2(30); - v_Suffix VARCHAR2(30); -BEGIN - -- Is a document Sequence defined and valid? - BEGIN - SELECT DocNoSequence_ID - INTO v_Sequence_ID - FROM C_DocType - WHERE C_DocType_ID=p_DocType_ID -- parameter - AND IsDocNoControlled='Y' - AND IsActive='Y'; - EXCEPTION - WHEN OTHERS THEN - NULL; - END; - - IF (v_Sequence_ID IS NULL) THEN -- No Sequence Number - p_DocumentNo := ''; -- Return NULL - DBMS_OUTPUT.PUT_LINE('[AD_Sequence_DocType: not found - C_DocType_ID=' || p_DocType_ID || ']'); - RETURN; - END IF; - - -- Get the numbers - SELECT s.AD_Sequence_ID, s.CurrentNext, s.CurrentNextSys, s.Prefix, s.Suffix - INTO v_Sequence_ID, v_NextNo, v_NextNoSys, v_Prefix, v_Suffix - FROM C_DocType d, AD_Sequence s - WHERE d.C_DocType_ID=p_DocType_ID -- parameter - AND d.DocNoSequence_ID=s.AD_Sequence_ID - AND s.IsActive = 'Y' - AND s.IsTableID = 'N' - AND s.IsAutoSequence = 'Y' - FOR UPDATE OF CurrentNext, CurrentNextSys; - - IF (v_NextNoSys <> -1 AND p_ID < 1000000) THEN -- System No - UPDATE AD_Sequence - SET CurrentNextSys = CurrentNextSys + IncrementNo - WHERE AD_Sequence_ID = v_Sequence_ID; - p_DocumentNo := NVL(v_Prefix, '') || v_NextNoSys || NVL(v_Suffix, ''); - ELSE -- Standard No - UPDATE AD_Sequence - SET CurrentNext = CurrentNext + IncrementNo - WHERE AD_Sequence_ID = v_Sequence_ID; - p_DocumentNo := NVL(v_Prefix, '') || v_NextNo || NVL(v_Suffix, ''); - END IF; --- DBMS_OUTPUT.PUT_LINE(p_DocumentNo); - -EXCEPTION - WHEN NO_DATA_FOUND THEN - RAISE_APPLICATION_ERROR (-20100, 'AD_Sequence_DocType: not found - DocType_ID=' - || p_DocType_ID || ', Sequence_ID=' || v_Sequence_ID); - -END AD_Sequence_DocType; -/ diff --git a/db/database/Procedures/AD_Sequence_Next.sql b/db/database/Procedures/AD_Sequence_Next.sql deleted file mode 100644 index 85f756bd64..0000000000 --- a/db/database/Procedures/AD_Sequence_Next.sql +++ /dev/null @@ -1,56 +0,0 @@ -CREATE OR REPLACE PROCEDURE AD_Sequence_Next -( - p_TableName IN VARCHAR2, - p_ID IN NUMBER, - p_NextNo OUT NUMBER - ) -AS -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: AD_Sequence_Next.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Get the next sequence number of TableName - * Description: - * store in parameter p_NextNo - * if ID < 1000000, use System Doc Sequence - ************************************************************************/ - - v_NextNoSys NUMBER; - v_ResultStr VARCHAR(255); -BEGIN - v_ResultStr := 'Read'; - SELECT CurrentNext, CurrentNextSys - INTO p_NextNo, v_NextNoSys - FROM AD_Sequence - WHERE Name = p_TableName - AND IsActive = 'Y' - AND IsTableID = 'Y' - AND IsAutoSequence = 'Y' - FOR UPDATE OF CurrentNext, CurrentNextSys; - - v_ResultStr := 'Write'; - IF (v_NextNoSys <> -1 AND p_ID < 1000000) THEN -- System No - UPDATE AD_Sequence - SET CurrentNextSys = CurrentNextSys + IncrementNo, - Updated = SysDate - WHERE Name = p_TableName; - p_NextNo := v_NextNoSys; - ELSE -- Standard No - UPDATE AD_Sequence - SET CurrentNext = CurrentNext + IncrementNo, - Updated = SysDate - WHERE Name = p_TableName; - END IF; - -EXCEPTION - WHEN NO_DATA_FOUND THEN - RAISE_APPLICATION_ERROR (-20100, 'Table Sequence not found '); --- || v_ResultStr || ': ' || p_TableName); - -END AD_Sequence_Next; -/ diff --git a/db/database/Procedures/AD_Syncronize.sql b/db/database/Procedures/AD_Syncronize.sql deleted file mode 100644 index 6301e8db3b..0000000000 --- a/db/database/Procedures/AD_Syncronize.sql +++ /dev/null @@ -1,775 +0,0 @@ -CREATE OR REPLACE PROCEDURE AD_Synchronize -( - p_PInstance_ID IN NUMBER -- DEFAULT NULL -) -/************************************************************************* - * 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-2003 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: AD_Syncronize.sql,v 1.2 2006/05/03 00:06:58 jjanke Exp $ - *** - * Title: Syncronize Application Dictionary - * Description: - * Synchronize Elements - * Update Column and Field with Names from Element and Process - * Update Process Parameters from Elements - * Update Workflow Notes from Windows - * Update Menu from Window/Form/Process/Task - ************************************************************************/ -AS - -- Logistice - v_ResultStr VARCHAR2(2000); - v_Message VARCHAR2(2000); - v_Result NUMBER := 1; -- 0=failure - v_Record_ID NUMBER; - v_AD_User_ID NUMBER; - -- Parameter - CURSOR Cur_Parameter (pp_PInstance NUMBER) IS - SELECT i.Record_ID, i.AD_User_ID, - p.ParameterName, p.P_String, p.P_Number, p.P_Date - FROM AD_PInstance i, AD_PInstance_Para p - WHERE i.AD_PInstance_ID=pp_PInstance - AND i.AD_PInstance_ID=p.AD_PInstance_ID(+) - ORDER BY p.SeqNo; - -- Parameter Variables - -BEGIN - IF (p_PInstance_ID IS NOT NULL) THEN - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Processing ' || p_PInstance_ID); - v_ResultStr := 'PInstanceNotFound'; - UPDATE AD_PInstance - SET Created = SysDate, - IsProcessing = 'Y' - WHERE AD_PInstance_ID=p_PInstance_ID; - COMMIT; - - -- Get Parameters - v_ResultStr := 'ReadingParameters'; - FOR p IN Cur_Parameter (p_PInstance_ID) LOOP - v_Record_ID := p.Record_ID; - v_AD_User_ID := p.AD_User_ID; - END LOOP; -- Get Parameter - DBMS_OUTPUT.PUT_LINE(' Record_ID=' || v_Record_ID); - END IF; - - --------------------------------------------------------------------------- - - DBMS_OUTPUT.PUT_LINE('Adding missing Elements'); - DECLARE - NextNo NUMBER; - CURSOR Cur_Column IS - SELECT DISTINCT ColumnName, Name, Description, Help, EntityType - FROM AD_Column c - WHERE NOT EXISTS - (SELECT * FROM AD_Element e - WHERE UPPER(c.ColumnName)=UPPER(e.ColumnName)); - CURSOR Cur_Process IS - SELECT DISTINCT ColumnName, Name, Description, Help, EntityType - FROM AD_Process_Para p - WHERE NOT EXISTS - (SELECT * FROM AD_Element e - WHERE UPPER(p.ColumnName)=UPPER(e.ColumnName)); - CC Cur_Column%ROWTYPE; - BEGIN - DBMS_OUTPUT.PUT_LINE('Column:'); - FOR CC IN Cur_Column LOOP - AD_Sequence_Next('AD_Element', 0, NextNo); -- get ID - INSERT INTO AD_ELEMENT - (AD_ELEMENT_ID, AD_CLIENT_ID, AD_ORG_ID, - ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY, - ColumnName, Name, PrintName, Description, Help, EntityType) - VALUES - (NextNo, 0, 0, - 'Y', SysDate, 0, SysDate, 0, - CC.ColumnName, CC.Name, CC.Name, CC.Description, CC.Help, CC.EntityType); - DBMS_OUTPUT.PUT_LINE(' added ' || cc.ColumnName); - COMMIT; - END LOOP; - DBMS_OUTPUT.PUT_LINE('Parameter:'); - FOR CC IN Cur_Process LOOP - AD_Sequence_Next('AD_Element', 0, NextNo); -- get ID - INSERT INTO AD_ELEMENT - (AD_ELEMENT_ID, AD_CLIENT_ID, AD_ORG_ID, - ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY, - ColumnName, Name, PrintName, Description, Help, EntityType) - VALUES - (NextNo, 0, 0, - 'Y', SysDate, 0, SysDate, 0, - CC.ColumnName, CC.Name, CC.Name, CC.Description, CC.Help, CC.EntityType); - DBMS_OUTPUT.PUT_LINE(' added ' || cc.ColumnName); - COMMIT; - END LOOP; - END; - - - DBMS_OUTPUT.PUT_LINE('Adding missing Element Translations'); - INSERT INTO AD_Element_Trl (AD_Element_ID, AD_Language, AD_Client_ID, AD_Org_ID, - IsActive, Created, CreatedBy, Updated, UpdatedBy, - Name, PrintName, Description, Help, IsTranslated) - SELECT m.AD_Element_ID, l.AD_Language, m.AD_Client_ID, m.AD_Org_ID, - m.IsActive, m.Created, m.CreatedBy, m.Updated, m.UpdatedBy, - m.Name, m.PrintName, m.Description, m.Help, 'N' - FROM AD_Element m, AD_Language l - WHERE l.IsActive = 'Y' AND l.IsSystemLanguage = 'Y' - AND AD_Element_ID || AD_Language NOT IN - (SELECT AD_Element_ID || AD_Language FROM AD_Element_Trl); - DBMS_OUTPUT.PUT_LINE(' rows added: ' || SQL%ROWCOUNT); - - - DBMS_OUTPUT.PUT_LINE('Creating link from Element to Column'); - UPDATE AD_Column c - SET AD_Element_id = - (SELECT AD_Element_ID FROM AD_Element e - WHERE UPPER(c.ColumnName)=UPPER(e.ColumnName)) - WHERE AD_Element_ID IS NULL; - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - COMMIT; - - - DBMS_OUTPUT.PUT_LINE('Deleting unused Elements'); - DELETE AD_Element_Trl - WHERE AD_Element_ID IN - (SELECT AD_Element_ID FROM AD_Element e - WHERE NOT EXISTS - (SELECT * FROM AD_Column c WHERE UPPER(e.ColumnName)=UPPER(c.ColumnName)) - AND NOT EXISTS - (SELECT * FROM AD_Process_Para p WHERE UPPER(e.ColumnName)=UPPER(p.ColumnName))); - - DELETE AD_Element e - WHERE NOT EXISTS - (SELECT * FROM AD_Column c WHERE UPPER(e.ColumnName)=UPPER(c.ColumnName)) - AND NOT EXISTS - (SELECT * FROM AD_Process_Para p WHERE UPPER(e.ColumnName)=UPPER(p.ColumnName)); - DBMS_OUTPUT.PUT_LINE(' rows deleted: ' || SQL%ROWCOUNT); - - --------------------------------------------------------------------------- - - -- Columns - DBMS_OUTPUT.PUT_LINE('Synchronize Column'); - /* Identify offending column -SELECT UPPER(ColumnName) -FROM AD_Element -GROUP BY UPPER(ColumnName) -HAVING COUNT(UPPER(ColumnName)) > 1 - -SELECT c.ColumnName, e.ColumnName -FROM AD_Column c - INNER JOIN AD_Element e ON (c.AD_Element_ID=e.AD_Element_ID) -WHERE c.ColumnName <> e.ColumnName - */ - UPDATE AD_Column c - SET (ColumnName, Name, Description, Help) = - (SELECT ColumnName, Name, Description, Help - FROM AD_Element e WHERE c.AD_Element_ID=e.AD_Element_ID), - Updated = SysDate - WHERE EXISTS (SELECT * FROM AD_Element e - WHERE c.AD_Element_ID=e.AD_Element_ID - AND (c.ColumnName <> e.ColumnName OR c.Name <> e.Name - OR NVL(c.Description,' ') <> NVL(e.Description,' ') OR NVL(c.Help,' ') <> NVL(e.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Fields should now be syncronized - DBMS_OUTPUT.PUT_LINE('Synchronize Field'); - UPDATE AD_Field f - SET (Name, Description, Help) = - (SELECT e.Name, e.Description, e.Help - FROM AD_Element e, AD_Column c - WHERE e.AD_Element_ID=c.AD_Element_ID AND c.AD_Column_ID=f.AD_Column_ID), - Updated = SysDate - WHERE f.IsCentrallyMaintained='Y' AND f.IsActive='Y' - AND EXISTS (SELECT * FROM AD_Element e, AD_Column c - WHERE f.AD_Column_ID=c.AD_Column_ID - AND c.AD_Element_ID=e.AD_Element_ID AND c.AD_Process_ID IS NULL - AND (f.Name <> e.Name OR NVL(f.Description,' ') <> NVL(e.Description,' ') OR NVL(f.Help,' ') <> NVL(e.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Field Translations - DBMS_OUTPUT.PUT_LINE('Synchronize Field Translations'); - UPDATE AD_Field_trl trl - SET Name = (SELECT e.Name FROM AD_Element_trl e, AD_Column c, AD_Field f - WHERE e.AD_Language=trl.AD_Language AND e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=f.AD_Column_ID AND f.AD_Field_ID=trl.AD_Field_ID), - Description = (SELECT e.Description FROM AD_Element_trl e, AD_Column c, AD_Field f - WHERE e.AD_Language=trl.AD_Language AND e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=f.AD_Column_ID AND f.AD_Field_ID=trl.AD_Field_ID), - Help = (SELECT e.Help FROM AD_Element_trl e, AD_Column c, AD_Field f - WHERE e.AD_Language=trl.AD_Language AND e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=f.AD_Column_ID AND f.AD_Field_ID=trl.AD_Field_ID), - IsTranslated = (SELECT e.IsTranslated FROM AD_Element_trl e, AD_Column c, AD_Field f - WHERE e.AD_Language=trl.AD_Language AND e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=f.AD_Column_ID AND f.AD_Field_ID=trl.AD_Field_ID), - Updated = SysDate - WHERE EXISTS (SELECT * FROM AD_Field f, AD_Element_trl e, AD_Column c - WHERE trl.AD_Field_ID=f.AD_Field_ID - AND f.AD_Column_ID=c.AD_Column_ID - AND c.AD_Element_ID=e.AD_Element_ID AND c.AD_Process_ID IS NULL - AND trl.AD_Language=e.AD_Language - AND f.IsCentrallyMaintained='Y' AND f.IsActive='Y' - AND (trl.Name <> e.Name OR NVL(trl.Description,' ') <> NVL(e.Description,' ') OR NVL(trl.Help,' ') <> NVL(e.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Fields should now be syncronized - DBMS_OUTPUT.PUT_LINE('Synchronize PO Field'); - UPDATE AD_Field f - SET Name = (SELECT e.PO_Name FROM AD_Element e, AD_Column c - WHERE e.AD_Element_ID=c.AD_Element_ID AND c.AD_Column_ID=f.AD_Column_ID), - Description = (SELECT e.PO_Description FROM AD_Element e, AD_Column c - WHERE e.AD_Element_ID=c.AD_Element_ID AND c.AD_Column_ID=f.AD_Column_ID), - Help = (SELECT e.PO_Help FROM AD_Element e, AD_Column c - WHERE e.AD_Element_ID=c.AD_Element_ID AND c.AD_Column_ID=f.AD_Column_ID), - Updated = SysDate - WHERE f.IsCentrallyMaintained='Y' AND f.IsActive='Y' - AND EXISTS (SELECT * FROM AD_Element e, AD_Column c - WHERE f.AD_Column_ID=c.AD_Column_ID - AND c.AD_Element_ID=e.AD_Element_ID AND c.AD_Process_ID IS NULL - AND (f.Name <> e.PO_Name OR NVL(f.Description,' ') <> NVL(e.PO_Description,' ') OR NVL(f.Help,' ') <> NVL(e.PO_Help,' ')) - AND e.PO_Name IS NOT NULL) - AND EXISTS (SELECT * FROM AD_Tab t, AD_Window w - WHERE f.AD_Tab_ID=t.AD_Tab_ID - AND t.AD_Window_ID=w.AD_Window_ID - AND w.IsSOTrx='N'); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Field Translations - DBMS_OUTPUT.PUT_LINE('Synchronize PO Field Translations'); - UPDATE AD_Field_trl trl - SET Name = (SELECT e.PO_Name FROM AD_Element_trl e, AD_Column c, AD_Field f - WHERE e.AD_Language=trl.AD_Language AND e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=f.AD_Column_ID AND f.AD_Field_ID=trl.AD_Field_ID), - Description = (SELECT e.PO_Description FROM AD_Element_trl e, AD_Column c, AD_Field f - WHERE e.AD_Language=trl.AD_Language AND e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=f.AD_Column_ID AND f.AD_Field_ID=trl.AD_Field_ID), - Help = (SELECT e.PO_Help FROM AD_Element_trl e, AD_Column c, AD_Field f - WHERE e.AD_Language=trl.AD_Language AND e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=f.AD_Column_ID AND f.AD_Field_ID=trl.AD_Field_ID), - IsTranslated = (SELECT e.IsTranslated FROM AD_Element_trl e, AD_Column c, AD_Field f - WHERE e.AD_Language=trl.AD_Language AND e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=f.AD_Column_ID AND f.AD_Field_ID=trl.AD_Field_ID), - Updated = SysDate - WHERE EXISTS (SELECT * FROM AD_Field f, AD_Element_trl e, AD_Column c - WHERE trl.AD_Field_ID=f.AD_Field_ID - AND f.AD_Column_ID=c.AD_Column_ID - AND c.AD_Element_ID=e.AD_Element_ID AND c.AD_Process_ID IS NULL - AND trl.AD_Language=e.AD_Language - AND f.IsCentrallyMaintained='Y' AND f.IsActive='Y' - AND (trl.Name <> e.PO_Name OR NVL(trl.Description,' ') <> NVL(e.PO_Description,' ') OR NVL(trl.Help,' ') <> NVL(e.PO_Help,' ')) - AND e.PO_Name IS NOT NULL) - AND EXISTS (SELECT * FROM AD_Field f, AD_Tab t, AD_Window w - WHERE trl.AD_Field_ID=f.AD_Field_ID - AND f.AD_Tab_ID=t.AD_Tab_ID - AND t.AD_Window_ID=w.AD_Window_ID - AND w.IsSOTrx='N'); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - - -- Fields from Process - DBMS_OUTPUT.PUT_LINE('Synchronize Field from Process'); - UPDATE AD_Field f - SET Name = (SELECT p.Name FROM AD_Process p, AD_Column c WHERE p.AD_Process_ID=c.AD_Process_ID - AND c.AD_Column_ID=f.AD_Column_ID), - Description = (SELECT p.Description FROM AD_Process p, AD_Column c WHERE p.AD_Process_ID=c.AD_Process_ID - AND c.AD_Column_ID=f.AD_Column_ID), - Help = (SELECT p.Help FROM AD_Process p, AD_Column c WHERE p.AD_Process_ID=c.AD_Process_ID - AND c.AD_Column_ID=f.AD_Column_ID), - Updated = SysDate - WHERE f.IsCentrallyMaintained='Y' AND f.IsActive='Y' - AND EXISTS (SELECT * FROM AD_Process p, AD_Column c - WHERE c.AD_Process_ID=p.AD_Process_ID AND f.AD_Column_ID=c.AD_Column_ID - AND (f.Name<>p.Name OR NVL(f.Description,' ')<>NVL(p.Description,' ') OR NVL(f.Help,' ')<>NVL(p.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Field Translations from Process - DBMS_OUTPUT.PUT_LINE('Synchronize Field Trl from Process Trl'); - UPDATE AD_Field_trl trl - SET Name = (SELECT p.Name FROM AD_Process_trl p, AD_Column c, AD_Field f - WHERE p.AD_Process_ID=c.AD_Process_ID AND c.AD_Column_ID=f.AD_Column_ID - AND f.AD_Field_ID=trl.AD_Field_ID AND p.AD_Language=trl.AD_Language), - Description = (SELECT p.Description FROM AD_Process_trl p, AD_Column c, AD_Field f - WHERE p.AD_Process_ID=c.AD_Process_ID AND c.AD_Column_ID=f.AD_Column_ID - AND f.AD_Field_ID=trl.AD_Field_ID AND p.AD_Language=trl.AD_Language), - Help = (SELECT p.Help FROM AD_Process_trl p, AD_Column c, AD_Field f - WHERE p.AD_Process_ID=c.AD_Process_ID AND c.AD_Column_ID=f.AD_Column_ID - AND f.AD_Field_ID=trl.AD_Field_ID AND p.AD_Language=trl.AD_Language), - IsTranslated = (SELECT p.IsTranslated FROM AD_Process_trl p, AD_Column c, AD_Field f - WHERE p.AD_Process_ID=c.AD_Process_ID AND c.AD_Column_ID=f.AD_Column_ID - AND f.AD_Field_ID=trl.AD_Field_ID AND p.AD_Language=trl.AD_Language), - Updated = SysDate - WHERE EXISTS (SELECT * FROM AD_Process_Trl p, AD_Column c, AD_Field f - WHERE c.AD_Process_ID=p.AD_Process_ID AND f.AD_Column_ID=c.AD_Column_ID - AND f.AD_Field_ID=trl.AD_Field_ID AND p.AD_Language=trl.AD_Language - AND f.IsCentrallyMaintained='Y' AND f.IsActive='Y' - AND (trl.Name<>p.Name OR NVL(trl.Description,' ')<>NVL(p.Description,' ') OR NVL(trl.Help,' ')<>NVL(p.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Sync Parameter ColumnName - UPDATE AD_Process_Para f - SET ColumnName = (SELECT e.ColumnName FROM AD_Element e - WHERE UPPER(e.ColumnName)=UPPER(f.ColumnName)) - WHERE f.IsCentrallyMaintained='Y' AND f.IsActive='Y' - AND EXISTS (SELECT * FROM AD_Element e - WHERE UPPER(e.ColumnName)=UPPER(f.ColumnName) - AND e.ColumnName<>f.ColumnName); - - - -- Paramenter Fields - UPDATE AD_Process_Para p - SET IsCentrallyMaintained = 'N' - WHERE IsCentrallyMaintained <> 'N' - AND NOT EXISTS (SELECT * FROM AD_Element e WHERE p.ColumnName=e.ColumnName); - - -- Parameter Fields - DBMS_OUTPUT.PUT_LINE('Synchronize Process Parameter'); - UPDATE AD_Process_Para f - SET Name = (SELECT e.Name FROM AD_Element e - WHERE e.ColumnName=f.ColumnName), - Description = (SELECT e.Description FROM AD_Element e - WHERE e.ColumnName=f.ColumnName), - Help = (SELECT e.Help FROM AD_Element e - WHERE e.ColumnName=f.ColumnName), - Updated = SysDate - WHERE f.IsCentrallyMaintained='Y' AND f.IsActive='Y' - AND EXISTS (SELECT * FROM AD_Element e - WHERE e.ColumnName=f.ColumnName - AND (f.Name <> e.Name OR NVL(f.Description,' ') <> NVL(e.Description,' ') OR NVL(f.Help,' ') <> NVL(e.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Parameter Translations - DBMS_OUTPUT.PUT_LINE('Synchronize Process Parameter Trl'); - UPDATE AD_Process_Para_Trl trl - SET Name = (SELECT et.Name FROM AD_Element_Trl et, AD_Element e, AD_Process_Para f - WHERE et.AD_Language=trl.AD_Language AND et.AD_Element_ID=e.AD_Element_ID - AND e.ColumnName=f.ColumnName AND f.AD_Process_Para_ID=trl.AD_Process_Para_ID), - Description = (SELECT et.Description FROM AD_Element_Trl et, AD_Element e, AD_Process_Para f - WHERE et.AD_Language=trl.AD_Language AND et.AD_Element_ID=e.AD_Element_ID - AND e.ColumnName=f.ColumnName AND f.AD_Process_Para_ID=trl.AD_Process_Para_ID), - Help = (SELECT et.Help FROM AD_Element_Trl et, AD_Element e, AD_Process_Para f - WHERE et.AD_Language=trl.AD_Language AND et.AD_Element_ID=e.AD_Element_ID - AND e.ColumnName=f.ColumnName AND f.AD_Process_Para_ID=trl.AD_Process_Para_ID), - IsTranslated = (SELECT et.IsTranslated FROM AD_Element_Trl et, AD_Element e, AD_Process_Para f - WHERE et.AD_Language=trl.AD_Language AND et.AD_Element_ID=e.AD_Element_ID - AND e.ColumnName=f.ColumnName AND f.AD_Process_Para_ID=trl.AD_Process_Para_ID), - Updated = SysDate - WHERE EXISTS (SELECT * FROM AD_Element_Trl et, AD_Element e, AD_Process_Para f - WHERE et.AD_Language=trl.AD_Language AND et.AD_Element_ID=e.AD_Element_ID - AND e.ColumnName=f.ColumnName AND f.AD_Process_Para_ID=trl.AD_Process_Para_ID - AND f.IsCentrallyMaintained='Y' AND f.IsActive='Y' - AND (trl.Name <> et.Name OR NVL(trl.Description,' ') <> NVL(et.Description,' ') OR NVL(trl.Help,' ') <> NVL(et.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - - -- Workflow Node - Window - DBMS_OUTPUT.PUT_LINE('Synchronize Workflow Node from Window'); - UPDATE AD_WF_Node n - SET Name = (SELECT w.Name FROM AD_Window w - WHERE w.AD_Window_ID=n.AD_Window_ID), - Description = (SELECT w.Description FROM AD_Window w - WHERE w.AD_Window_ID=n.AD_Window_ID), - Help = (SELECT w.Help FROM AD_Window w - WHERE w.AD_Window_ID=n.AD_Window_ID) - WHERE n.IsCentrallyMaintained = 'Y' - AND EXISTS (SELECT * FROM AD_Window w - WHERE w.AD_Window_ID=n.AD_Window_ID - AND (w.Name <> n.Name OR NVL(w.Description,' ') <> NVL(n.Description,' ') OR NVL(w.Help,' ') <> NVL(n.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Workflow Translations - Window - DBMS_OUTPUT.PUT_LINE('Synchronize Workflow Node Trl from Window Trl'); - UPDATE AD_WF_Node_Trl trl - SET Name = (SELECT t.Name FROM AD_Window_trl t, AD_WF_Node n - WHERE trl.AD_WF_Node_ID=n.AD_WF_Node_ID AND n.AD_Window_ID=t.AD_Window_ID - AND trl.AD_Language=t.AD_Language), - Description = (SELECT t.Description FROM AD_Window_trl t, AD_WF_Node n - WHERE trl.AD_WF_Node_ID=n.AD_WF_Node_ID AND n.AD_Window_ID=t.AD_Window_ID - AND trl.AD_Language=t.AD_Language), - Help = (SELECT t.Help FROM AD_Window_trl t, AD_WF_Node n - WHERE trl.AD_WF_Node_ID=n.AD_WF_Node_ID AND n.AD_Window_ID=t.AD_Window_ID - AND trl.AD_Language=t.AD_Language) - WHERE EXISTS (SELECT * FROM AD_Window_Trl t, AD_WF_Node n - WHERE trl.AD_WF_Node_ID=n.AD_WF_Node_ID AND n.AD_Window_ID=t.AD_Window_ID - AND trl.AD_Language=t.AD_Language AND n.IsCentrallyMaintained='Y' AND n.IsActive='Y' - AND (trl.Name <> t.Name OR NVL(trl.Description,' ') <> NVL(t.Description,' ') OR NVL(trl.Help,' ') <> NVL(t.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Workflow Node - Form - DBMS_OUTPUT.PUT_LINE('Synchronize Workflow Node from Form'); - UPDATE AD_WF_Node n - SET (Name, Description, Help) = (SELECT f.Name, f.Description, f.Help - FROM AD_Form f - WHERE f.AD_Form_ID=n.AD_Form_ID) - WHERE n.IsCentrallyMaintained = 'Y' - AND EXISTS (SELECT * FROM AD_Form f - WHERE f.AD_Form_ID=n.AD_Form_ID - AND (f.Name <> n.Name OR NVL(f.Description,' ') <> NVL(n.Description,' ') OR NVL(f.Help,' ') <> NVL(n.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Workflow Translations - Form - DBMS_OUTPUT.PUT_LINE('Synchronize Workflow Node Trl from Form Trl'); - UPDATE AD_WF_Node_Trl trl - SET (Name, Description, Help) = (SELECT t.Name, t.Description, t.Help - FROM AD_Form_trl t, AD_WF_Node n - WHERE trl.AD_WF_Node_ID=n.AD_WF_Node_ID AND n.AD_Form_ID=t.AD_Form_ID - AND trl.AD_Language=t.AD_Language) - WHERE EXISTS (SELECT * FROM AD_Form_Trl t, AD_WF_Node n - WHERE trl.AD_WF_Node_ID=n.AD_WF_Node_ID AND n.AD_Form_ID=t.AD_Form_ID - AND trl.AD_Language=t.AD_Language AND n.IsCentrallyMaintained='Y' AND n.IsActive='Y' - AND (trl.Name <> t.Name OR NVL(trl.Description,' ') <> NVL(t.Description,' ') OR NVL(trl.Help,' ') <> NVL(t.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Workflow Node - Report - DBMS_OUTPUT.PUT_LINE('Synchronize Workflow Node from Process'); - UPDATE AD_WF_Node n - SET (Name, Description, Help) = (SELECT f.Name, f.Description, f.Help - FROM AD_Process f - WHERE f.AD_Process_ID=n.AD_Process_ID) - WHERE n.IsCentrallyMaintained = 'Y' - AND EXISTS (SELECT * FROM AD_Process f - WHERE f.AD_Process_ID=n.AD_Process_ID - AND (f.Name <> n.Name OR NVL(f.Description,' ') <> NVL(n.Description,' ') OR NVL(f.Help,' ') <> NVL(n.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Workflow Translations - Form - DBMS_OUTPUT.PUT_LINE('Synchronize Workflow Node Trl from Process Trl'); - UPDATE AD_WF_Node_Trl trl - SET (Name, Description, Help) = (SELECT t.Name, t.Description, t.Help - FROM AD_Process_trl t, AD_WF_Node n - WHERE trl.AD_WF_Node_ID=n.AD_WF_Node_ID AND n.AD_Process_ID=t.AD_Process_ID - AND trl.AD_Language=t.AD_Language) - WHERE EXISTS (SELECT * FROM AD_Process_Trl t, AD_WF_Node n - WHERE trl.AD_WF_Node_ID=n.AD_WF_Node_ID AND n.AD_Process_ID=t.AD_Process_ID - AND trl.AD_Language=t.AD_Language AND n.IsCentrallyMaintained='Y' AND n.IsActive='Y' - AND (trl.Name <> t.Name OR NVL(trl.Description,' ') <> NVL(t.Description,' ') OR NVL(trl.Help,' ') <> NVL(t.Help,' '))); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - -- Need centrally maintained flag here! - DBMS_OUTPUT.PUT_LINE('Synchronize PrintFormatItem Name from Element'); - UPDATE AD_PrintFormatItem pfi - SET Name = (SELECT e.Name - FROM AD_Element e, AD_Column c - WHERE e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=pfi.AD_Column_ID) - WHERE pfi.IsCentrallyMaintained='Y' - AND EXISTS (SELECT * - FROM AD_Element e, AD_Column c - WHERE e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=pfi.AD_Column_ID - AND e.Name<>pfi.Name) - AND EXISTS (SELECT * FROM AD_Client - WHERE AD_Client_ID=pfi.AD_Client_ID AND IsMultiLingualDocument='Y'); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - DBMS_OUTPUT.PUT_LINE('Synchronize PrintFormatItem PrintName from Element'); - UPDATE AD_PrintFormatItem pfi - SET PrintName = (SELECT e.PrintName - FROM AD_Element e, AD_Column c - WHERE e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=pfi.AD_Column_ID) - WHERE pfi.IsCentrallyMaintained='Y' - AND EXISTS (SELECT * - FROM AD_Element e, AD_Column c, AD_PrintFormat pf - WHERE e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=pfi.AD_Column_ID - AND LENGTH(pfi.PrintName) > 0 - AND e.PrintName<>pfi.PrintName - AND pf.AD_PrintFormat_ID=pfi.AD_PrintFormat_ID - AND pf.IsForm='N' AND IsTableBased='Y') - AND EXISTS (SELECT * FROM AD_Client - WHERE AD_Client_ID=pfi.AD_Client_ID AND IsMultiLingualDocument='Y'); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - DBMS_OUTPUT.PUT_LINE('Synchronize PrintFormatItem Trl from Element Trl (Multi-Lingual)'); - UPDATE AD_PrintFormatItem_Trl trl - SET PrintName = (SELECT e.PrintName - FROM AD_Element_Trl e, AD_Column c, AD_PrintFormatItem pfi - WHERE e.AD_Language=trl.AD_Language - AND e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=pfi.AD_Column_ID - AND pfi.AD_PrintFormatItem_ID=trl.AD_PrintFormatItem_ID) - WHERE EXISTS (SELECT * - FROM AD_Element_Trl e, AD_Column c, AD_PrintFormatItem pfi, AD_PrintFormat pf - WHERE e.AD_Language=trl.AD_Language - AND e.AD_Element_ID=c.AD_Element_ID - AND c.AD_Column_ID=pfi.AD_Column_ID - AND pfi.AD_PrintFormatItem_ID=trl.AD_PrintFormatItem_ID - AND pfi.IsCentrallyMaintained='Y' - AND LENGTH(pfi.PrintName) > 0 - AND (e.PrintName<>trl.PrintName OR trl.PrintName IS NULL) - AND pf.AD_PrintFormat_ID=pfi.AD_PrintFormat_ID - AND pf.IsForm='N' AND IsTableBased='Y') - AND EXISTS (SELECT * FROM AD_Client - WHERE AD_Client_ID=trl.AD_Client_ID AND IsMultiLingualDocument='Y'); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - DBMS_OUTPUT.PUT_LINE('Synchronize PrintFormatItem Trl (Not Multi-Lingual)'); - UPDATE AD_PrintFormatItem_Trl trl - SET PrintName = (SELECT pfi.PrintName - FROM AD_PrintFormatItem pfi - WHERE pfi.AD_PrintFormatItem_ID=trl.AD_PrintFormatItem_ID) - WHERE EXISTS (SELECT * - FROM AD_PrintFormatItem pfi, AD_PrintFormat pf - WHERE pfi.AD_PrintFormatItem_ID=trl.AD_PrintFormatItem_ID - AND pfi.IsCentrallyMaintained='Y' - AND LENGTH(pfi.PrintName) > 0 - AND pfi.PrintName<>trl.PrintName - AND pf.AD_PrintFormat_ID=pfi.AD_PrintFormat_ID - AND pf.IsForm='N' AND pf.IsTableBased='Y') - AND EXISTS (SELECT * FROM AD_Client - WHERE AD_Client_ID=trl.AD_Client_ID AND IsMultiLingualDocument='N'); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - DBMS_OUTPUT.PUT_LINE('Reset PrintFormatItem Trl where not used in base table'); - UPDATE AD_PrintFormatItem_Trl trl - SET PrintName = NULL - WHERE PrintName IS NOT NULL - AND EXISTS (SELECT * - FROM AD_PrintFormatItem pfi - WHERE pfi.AD_PrintFormatItem_ID=trl.AD_PrintFormatItem_ID - AND pfi.IsCentrallyMaintained='Y' - AND (LENGTH (pfi.PrintName) = 0 OR pfi.PrintName IS NULL)); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - -/** -SELECT e.PrintName "Element", pfi.PrintName "FormatItem", trl.AD_Language, trl.PrintName "Trl" -FROM AD_Element e - INNER JOIN AD_Column c ON (e.AD_Element_ID=c.AD_Element_ID) - INNER JOIN AD_PrintFormatItem pfi ON (c.AD_Column_ID=pfi.AD_Column_ID) - INNER JOIN AD_PrintFormatItem_Trl trl ON (pfi.AD_PrintFormatItem_ID=trl.AD_PrintFormatItem_ID) -WHERE pfi.AD_PrintFormatItem_ID=? -**/ - - -- Sync Names - Window - DBMS_OUTPUT.PUT_LINE('Synchronizing Menu with Window'); - UPDATE AD_Menu m - SET Name = (SELECT Name FROM AD_Window w WHERE m.AD_Window_ID=w.AD_Window_ID), - Description = (SELECT Description FROM AD_Window w WHERE m.AD_Window_ID=w.AD_Window_ID) - WHERE AD_Window_ID IS NOT NULL - AND Action = 'W'; - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - UPDATE AD_Menu_Trl mt - SET Name = (SELECT wt.Name FROM AD_Window_Trl wt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Window_ID=wt.AD_Window_ID - AND mt.AD_Language=wt.AD_Language), - Description = (SELECT wt.Description FROM AD_Window_Trl wt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Window_ID=wt.AD_Window_ID - AND mt.AD_Language=wt.AD_Language), - IsTranslated = (SELECT wt.IsTranslated FROM AD_Window_Trl wt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Window_ID=wt.AD_Window_ID - AND mt.AD_Language=wt.AD_Language) - WHERE EXISTS (SELECT * FROM AD_Window_Trl wt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Window_ID=wt.AD_Window_ID - AND mt.AD_Language=wt.AD_Language - AND m.AD_Window_ID IS NOT NULL - AND m.Action = 'W'); - DBMS_OUTPUT.PUT_LINE(' trl rows updated: ' || SQL%ROWCOUNT); - - -- Sync Names - Process - DBMS_OUTPUT.PUT_LINE('Synchronizing Menu with Processes'); - UPDATE AD_Menu m - SET Name = (SELECT p.Name FROM AD_Process p WHERE m.AD_Process_ID=p.AD_Process_ID), - Description = (SELECT p.Description FROM AD_Process p WHERE m.AD_Process_ID=p.AD_Process_ID) - WHERE m.AD_Process_ID IS NOT NULL - AND m.Action IN ('R', 'P'); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - UPDATE AD_Menu_Trl mt - SET Name = (SELECT pt.Name FROM AD_Process_Trl pt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Process_ID=pt.AD_Process_ID - AND mt.AD_Language=pt.AD_Language), - Description = (SELECT pt.Description FROM AD_Process_Trl pt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Process_ID=pt.AD_Process_ID - AND mt.AD_Language=pt.AD_Language), - IsTranslated = (SELECT pt.IsTranslated FROM AD_Process_Trl pt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Process_ID=pt.AD_Process_ID - AND mt.AD_Language=pt.AD_Language) - WHERE EXISTS (SELECT * FROM AD_Process_Trl pt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Process_ID=pt.AD_Process_ID - AND mt.AD_Language=pt.AD_Language - AND m.AD_Process_ID IS NOT NULL - AND Action IN ('R', 'P')); - DBMS_OUTPUT.PUT_LINE(' trl rows updated: ' || SQL%ROWCOUNT); - - -- Sync Names = Form - DBMS_OUTPUT.PUT_LINE('Synchronizing Menu with Forms'); - UPDATE AD_Menu m - SET Name = (SELECT Name FROM AD_Form f WHERE m.AD_Form_ID=f.AD_Form_ID), - Description = (SELECT Description FROM AD_Form f WHERE m.AD_Form_ID=f.AD_Form_ID) - WHERE AD_Form_ID IS NOT NULL - AND Action = 'X'; - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - UPDATE AD_Menu_Trl mt - SET Name = (SELECT ft.Name FROM AD_Form_Trl ft, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Form_ID=ft.AD_Form_ID - AND mt.AD_Language=ft.AD_Language), - Description = (SELECT ft.Description FROM AD_Form_Trl ft, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Form_ID=ft.AD_Form_ID - AND mt.AD_Language=ft.AD_Language), - IsTranslated = (SELECT ft.IsTranslated FROM AD_Form_Trl ft, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Form_ID=ft.AD_Form_ID - AND mt.AD_Language=ft.AD_Language) - WHERE EXISTS (SELECT * FROM AD_Form_Trl ft, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Form_ID=ft.AD_Form_ID - AND mt.AD_Language=ft.AD_Language - AND m.AD_Form_ID IS NOT NULL - AND Action = 'X'); - DBMS_OUTPUT.PUT_LINE(' trl rows updated: ' || SQL%ROWCOUNT); - - -- Sync Names - Workflow - DBMS_OUTPUT.PUT_LINE('Synchronizing Menu with Workflows'); - UPDATE AD_Menu m - SET Name = (SELECT p.Name FROM AD_Workflow p WHERE m.AD_Workflow_ID=p.AD_Workflow_ID), - Description = (SELECT p.Description FROM AD_Workflow p WHERE m.AD_Workflow_ID=p.AD_Workflow_ID) - WHERE m.AD_Workflow_ID IS NOT NULL - AND m.Action = 'F'; - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - UPDATE AD_Menu_Trl mt - SET Name = (SELECT pt.Name FROM AD_Workflow_Trl pt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Workflow_ID=pt.AD_Workflow_ID - AND mt.AD_Language=pt.AD_Language), - Description = (SELECT pt.Description FROM AD_Workflow_Trl pt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Workflow_ID=pt.AD_Workflow_ID - AND mt.AD_Language=pt.AD_Language), - IsTranslated = (SELECT pt.IsTranslated FROM AD_Workflow_Trl pt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Workflow_ID=pt.AD_Workflow_ID - AND mt.AD_Language=pt.AD_Language) - WHERE EXISTS (SELECT * FROM AD_Workflow_Trl pt, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Workflow_ID=pt.AD_Workflow_ID - AND mt.AD_Language=pt.AD_Language - AND m.AD_Workflow_ID IS NOT NULL - AND Action = 'F'); - DBMS_OUTPUT.PUT_LINE(' trl rows updated: ' || SQL%ROWCOUNT); - - -- Sync Names = Task - DBMS_OUTPUT.PUT_LINE('Synchronizing Menu with Tasks'); - UPDATE AD_Menu m - SET Name = (SELECT Name FROM AD_Task f WHERE m.AD_Task_ID=f.AD_Task_ID), - Description = (SELECT Description FROM AD_Task f WHERE m.AD_Task_ID=f.AD_Task_ID) - WHERE AD_Task_ID IS NOT NULL - AND Action = 'T'; - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - - UPDATE AD_Menu_Trl mt - SET Name = (SELECT ft.Name FROM AD_Task_Trl ft, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Task_ID=ft.AD_Task_ID - AND mt.AD_Language=ft.AD_Language), - Description = (SELECT ft.Description FROM AD_Task_Trl ft, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Task_ID=ft.AD_Task_ID - AND mt.AD_Language=ft.AD_Language), - IsTranslated = (SELECT ft.IsTranslated FROM AD_Task_Trl ft, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Task_ID=ft.AD_Task_ID - AND mt.AD_Language=ft.AD_Language) - WHERE EXISTS (SELECT * FROM AD_Task_Trl ft, AD_Menu m - WHERE mt.AD_Menu_ID=m.AD_Menu_ID AND m.AD_Task_ID=ft.AD_Task_ID - AND mt.AD_Language=ft.AD_Language - AND m.AD_Task_ID IS NOT NULL - AND Action = 'T'); - DBMS_OUTPUT.PUT_LINE(' trl rows updated: ' || SQL%ROWCOUNT); - - -- Column Name + Element - DBMS_OUTPUT.PUT_LINE('Synchronizing Column with Element'); - UPDATE AD_Column c - SET (Name,Description,Help) = - (SELECT e.Name,e.Description,e.Help - FROM AD_Element e WHERE c.AD_Element_ID=e.AD_Element_ID) - WHERE EXISTS - (SELECT * FROM AD_Element e - WHERE c.AD_Element_ID=e.AD_Element_ID - AND c.Name<>e.Name); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - UPDATE AD_Column_Trl ct - SET Name = (SELECT e.Name - FROM AD_Column c INNER JOIN AD_Element_Trl e ON (c.AD_Element_ID=e.AD_Element_ID) - WHERE ct.AD_Column_ID=c.AD_Column_ID AND ct.AD_Language=e.AD_Language) - WHERE EXISTS - (SELECT * FROM AD_Column c INNER JOIN AD_Element_Trl e ON (c.AD_Element_ID=e.AD_Element_ID) - WHERE ct.AD_Column_ID=c.AD_Column_ID AND ct.AD_Language=e.AD_Language - AND ct.Name<>e.Name); - DBMS_OUTPUT.PUT_LINE(' trl rows updated: ' || SQL%ROWCOUNT); - - - -- Table Name + Element - DBMS_OUTPUT.PUT_LINE('Synchronizing Table with Element'); - UPDATE AD_Table t - SET (Name,Description) = (SELECT e.Name,e.Description FROM AD_Element e - WHERE t.TableName||'_ID'=e.ColumnName) - WHERE EXISTS (SELECT * FROM AD_Element e - WHERE t.TableName||'_ID'=e.ColumnName - AND t.Name<>e.Name); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - UPDATE AD_Table_Trl tt - SET Name = (SELECT e.Name - FROM AD_Table t INNER JOIN AD_Element ex ON (t.TableName||'_ID'=ex.ColumnName) - INNER JOIN AD_Element_Trl e ON (ex.AD_Element_ID=e.AD_Element_ID) - WHERE tt.AD_Table_ID=t.AD_Table_ID AND tt.AD_Language=e.AD_Language) - WHERE EXISTS (SELECT * - FROM AD_Table t INNER JOIN AD_Element ex ON (t.TableName||'_ID'=ex.ColumnName) - INNER JOIN AD_Element_Trl e ON (ex.AD_Element_ID=e.AD_Element_ID) - WHERE tt.AD_Table_ID=t.AD_Table_ID AND tt.AD_Language=e.AD_Language - AND tt.Name<>e.Name); - DBMS_OUTPUT.PUT_LINE(' trl rows updated: ' || SQL%ROWCOUNT); - - -- Trl Table Name + Element - UPDATE AD_Table t - SET (Name,Description) = (SELECT e.Name||' Trl', e.Description - FROM AD_Element e - WHERE SUBSTR(t.TableName,1,LENGTH(t.TableName)-4)||'_ID'=e.ColumnName) - WHERE TableName LIKE '%_Trl' - AND EXISTS (SELECT * FROM AD_Element e - WHERE SUBSTR(t.TableName,1,LENGTH(t.TableName)-4)||'_ID'=e.ColumnName - AND t.Name<>e.Name); - DBMS_OUTPUT.PUT_LINE(' rows updated: ' || SQL%ROWCOUNT); - UPDATE AD_Table_Trl tt - SET Name = (SELECT e.Name || ' **' - FROM AD_Table t INNER JOIN AD_Element ex ON (SUBSTR(t.TableName,1,LENGTH(t.TableName)-4)||'_ID'=ex.ColumnName) - INNER JOIN AD_Element_Trl e ON (ex.AD_Element_ID=e.AD_Element_ID) - WHERE tt.AD_Table_ID=t.AD_Table_ID AND tt.AD_Language=e.AD_Language) - WHERE EXISTS (SELECT * - FROM AD_Table t INNER JOIN AD_Element ex ON (SUBSTR(t.TableName,1,LENGTH(t.TableName)-4)||'_ID'=ex.ColumnName) - INNER JOIN AD_Element_Trl e ON (ex.AD_Element_ID=e.AD_Element_ID) - WHERE tt.AD_Table_ID=t.AD_Table_ID AND tt.AD_Language=e.AD_Language - AND t.TableName LIKE '%_Trl' - AND tt.Name<>e.Name); - DBMS_OUTPUT.PUT_LINE(' trl rows updated: ' || SQL%ROWCOUNT); - - /** Remaining tables - SELECT Name, TableName FROM AD_Table t WHERE Name=TableName ORDER BY 1 - **/ - - -<> - IF (p_PInstance_ID IS NOT NULL) THEN - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || v_Message); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = v_Result, -- 1=success - ErrorMsg = v_Message - WHERE AD_PInstance_ID=p_PInstance_ID; - END IF; - COMMIT; - RETURN; - -EXCEPTION - WHEN OTHERS THEN - v_ResultStr := v_ResultStr || ': ' || SQLERRM || ' - ' || v_Message; - DBMS_OUTPUT.PUT_LINE(v_ResultStr); - ROLLBACK; - IF (p_PInstance_ID IS NOT NULL) THEN - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 0, -- failure - ErrorMsg = v_ResultStr - WHERE AD_PInstance_ID=p_PInstance_ID; - COMMIT; - END IF; - RETURN; - -END AD_Synchronize; -/ diff --git a/db/database/Procedures/C_Order_DrillDown.sql b/db/database/Procedures/C_Order_DrillDown.sql deleted file mode 100644 index 3e55c3e299..0000000000 --- a/db/database/Procedures/C_Order_DrillDown.sql +++ /dev/null @@ -1,173 +0,0 @@ -CREATE OR REPLACE PROCEDURE C_Order_DrillDown -( - PInstance_ID IN NUMBER -) -/****************************************************************************** - * ** Adempiere Product ** Copyright (c) 1999-2001 Accorto, Inc. USA - * Open Source Software Provided "AS IS" without warranty or liability - * When you use any parts (changed or unchanged), add "Powered by Adempiere" to - * your product name; See license details http://www.adempiere.org/license.html - ****************************************************************************** - * List Orders with their Shipments and Invoices - * Spool to T_Spool - */ -AS - ResultStr VARCHAR2(2000); - Message VARCHAR2(2000); - Record_ID NUMBER; - CURSOR Cur_Parameter (PInstance NUMBER) IS - SELECT i.Record_ID, p.ParameterName, p.P_String, p.P_Number, p.P_Date - FROM AD_PInstance i, AD_PInstance_Para p - WHERE i.AD_PInstance_ID=PInstance - AND i.AD_PInstance_ID=p.AD_PInstance_ID(+) - ORDER BY p.SeqNo; - -- Parameter - C_Order_ID NUMBER; - -- - CURSOR Cur_Order IS - SELECT o.C_Order_ID, d.Name, o.DocumentNo, o.DocStatus, o.DocAction, o.Processed - FROM C_Order o, C_DocType d - WHERE o.C_Order_ID=C_Order_ID - AND o.C_DocType_ID=d.C_DocType_ID - ORDER BY o.DocumentNo DESC; - -BEGIN - -- No locking or Updating - - -- Get Parameters - ResultStr := 'ReadingParameters'; - FOR p IN Cur_Parameter (PInstance_ID) LOOP - Record_ID := p.Record_ID; - IF (p.ParameterName = 'C_Order_ID') THEN - C_Order_ID := p.P_Number; - DBMS_OUTPUT.PUT_LINE(' C_Order_ID=' || C_Order_ID); - ELSE - DBMS_OUTPUT.PUT_LINE('*** Unknown Parameter=' || p.ParameterName); - END IF; - END LOOP; -- Get Parameter - DBMS_OUTPUT.PUT_LINE(' Record_ID=' || Record_ID); - - IF (C_Order_ID IS NULL) THEN - C_Order_ID := Record_ID; - END IF; - - -- Should be nothing there - DELETE T_Spool - WHERE AD_PInstance_ID=PInstance_ID; - - -- Order Info - FOR o IN Cur_Order LOOP - - INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, - o.Name || ' ' || o.DocumentNo || ': @DocStatus@=' || o.DocStatus - || ', @DocAction@=' || o.DocAction || ', @Processed@=' || o.Processed); - - -- Order Lines - DECLARE - CURSOR Cur_OrderLine IS - SELECT * - FROM C_OrderLine - WHERE C_Order_ID=o.C_Order_ID - ORDER BY Line; - BEGIN - FOR ol IN Cur_OrderLine LOOP - INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, - ' @QtyOrdered@=' || ol.QtyOrdered || ', @QtyReserved@=' || ol.QtyReserved - || ', @QtyDelivered@=' || ol.QtyDelivered || ', @QtyInvoiced@=' || ol.QtyInvoiced - || ' - Wh=' || ol.M_Warehouse_ID - || ', Prd=' || ol.M_Product_ID); - END LOOP; - END; - - -- Shipment - DECLARE - CURSOR Cur_InOut IS - SELECT s.M_InOut_ID, d.Name, s.DocumentNo, s.DocStatus, s.Processed, s.M_Warehouse_ID - FROM M_InOut s, C_DocType d - WHERE s.C_Order_ID = o.C_Order_ID - AND s.C_DocType_ID=d.C_DocType_ID; - BEGIN - FOR s IN Cur_InOut LOOP - INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, - '> ' || s.Name || ' ' || s.DocumentNo || ': @DocStatus@=' || s.DocStatus - || ', @Processed@=' || s.Processed || ', Wh=' || s.M_Warehouse_ID); - - -- Shipment Lines - DECLARE - CURSOR Cur_InOutLine IS - SELECT * - FROM M_InOutLine - WHERE M_InOut_ID=s.M_InOut_ID - ORDER BY Line; - BEGIN - FOR sl IN Cur_InOutLine LOOP - INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, - ' @QtyDelivered@=' || sl.MovementQty || ', Prd=' || sl.M_Product_ID); - END LOOP; - END; -- Shipment Lines - END LOOP; -- Shipments - END; -- Shipment - - -- Invoice - DECLARE - CURSOR Cur_Invoice IS - SELECT i.C_Invoice_ID, d.Name, i.DocumentNo, i.DocStatus, i.Processed - FROM C_Invoice i, C_DocType d - WHERE i.C_DocType_ID=d.C_DocType_ID - AND EXISTS (SELECT * FROM C_InvoiceLine l, C_OrderLine ol - WHERE i.C_Invoice_ID = l.C_Invoice_ID - AND l.C_OrderLine_ID = ol.C_OrderLine_ID - AND ol.C_Order_ID=o.C_Order_ID); - BEGIN - FOR i IN Cur_Invoice LOOP - - INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, - '> ' || i.Name || ' ' || i.DocumentNo || ': @DocStatus@=' || i.DocStatus - || ', @Processed@=' || i.Processed); - - -- Invoice Lines - DECLARE - CURSOR Cur_InvoiceLine IS - SELECT * - FROM C_InvoiceLine - WHERE C_Invoice_ID=i.C_Invoice_ID - ORDER BY Line; - BEGIN - FOR il IN Cur_InvoiceLine LOOP - INSERT INTO T_Spool (AD_PInstance_ID, SeqNo, MsgText) VALUES (PInstance_ID, T_Spool_Seq.NextVal, - ' @QtyInvoiced@=' || il.QtyInvoiced || ', Prd=' || il.M_Product_ID); - END LOOP; - END; -- Invoice Lines - END LOOP; -- Invoices - END; -- Invoice - - END LOOP; -- Order - - -<> - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || Message); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 1, -- success - ErrorMsg = Message - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - RETURN; - -EXCEPTION - WHEN OTHERS THEN - ResultStr := ResultStr || ': ' || SQLERRM || ' - ' || Message; - DBMS_OUTPUT.PUT_LINE(ResultStr); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 0, -- failure - ErrorMsg = ResultStr - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - RETURN; - -END C_Order_DrillDown; -/ diff --git a/db/database/Procedures/C_ProcessCreate.sql b/db/database/Procedures/C_ProcessCreate.sql deleted file mode 100644 index 4ac739d956..0000000000 --- a/db/database/Procedures/C_ProcessCreate.sql +++ /dev/null @@ -1,56 +0,0 @@ -IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'C_ProcessCreate') - BEGIN - PRINT '<<< DROPPING PROCEDURE C_ProcessCreate >>>' - DROP Procedure C_ProcessCreate - END -go ------------------------------------------------------------------------------- -CREATE Procedure C_ProcessCreate -( - @AD_Table_ID Identifier, - @Record_ID Identifier, - @AD_IProcess_ID Identifier OUTPUT -) ---WITH ENCRYPTION -AS -/****************************************************************************** - * Author: Jorg Janke (c) ClassApps 1999 - * Version: $Header: /cvs/adempiere/db/database/Procedures/C_ProcessCreate.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - * - * Description: - * Create process for background execution - * - * Return values: - * Int_Process_ID - * - * Called by: - * - ******************************************************************************/ -BEGIN - Set NoCount ON - BEGIN TRANSACTION - - SELECT @AD_IProcess_ID = ISNULL(MAX(AD_IProcess_ID), 0)+1 - FROM AD_IProcess - --------------------------------- - INSERT INTO AD_IProcess - (AD_IProcess_ID, AD_Table_ID, Record_ID, IsProcessing, Updated) - VALUES - (@AD_IProcess_ID, @AD_Table_ID, @Record_ID, 'N', null) - - IF (@@ERROR <> 0) - BEGIN - RAISERROR 60001 'Int_Process insert error' - ROLLBACK TRAN - RETURN(1) - END - - COMMIT TRANSACTION -END -- C_ProcessCreate -go ------------------------------------------------------------------------------- -IF OBJECT_ID('C_ProcessCreate') IS NOT NULL - PRINT '<<< CREATED PROCEDURE C_ProcessCreate >>>' -ELSE - PRINT '<<< FAILED CREATING PROCEDURE C_ProcessCreate >>>' -go \ No newline at end of file diff --git a/db/database/Procedures/Cleanup.sql b/db/database/Procedures/Cleanup.sql deleted file mode 100644 index ff9ea7aa53..0000000000 --- a/db/database/Procedures/Cleanup.sql +++ /dev/null @@ -1,21 +0,0 @@ -CREATE OR REPLACE PROCEDURE Cleanup -/****************************************************************************** - * ** Adempiere Product ** Copyright (c) 1999-2001 Accorto, Inc. USA - * Open Source Software Provided "AS IS" without warranty or liability - * When you use any parts (changed or unchanged), add "Powered by Adempiere" to - * your product name; See license details http://www.adempiere.org/license.html - ****************************************************************************** - * Cleanup old temporary data - */ -AS -BEGIN - -- Processes - DELETE FROM AD_PInstance; - -- Search Info - DELETE FROM AD_Find; - -- Errors older than 1 week - DELETE AD_ERROR WHERE Created < SysDate-7; - -- - COMMIT; -END Cleanup; -/ diff --git a/db/database/Procedures/DBA_AfterImport.sql b/db/database/Procedures/DBA_AfterImport.sql deleted file mode 100644 index 663bfe50b8..0000000000 --- a/db/database/Procedures/DBA_AfterImport.sql +++ /dev/null @@ -1,45 +0,0 @@ -CREATE OR REPLACE PROCEDURE DBA_AfterImport -AS -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: DBA_AfterImport.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - * $Source: /cvs/adempiere/db/database/Procedures/DBA_AfterImport.sql,v $ - *** - * Title: Run after Import - * Description: - * - Set Java Permissions - * - Recompile - * - Compute Statistics - *****************************************************************************/ - - -- Statistics - CURSOR Cur_Stat IS - SELECT Table_Name, Blocks - FROM USER_TABLES - WHERE DURATION IS NULL -- No temporary tables - AND Table_Name NOT LIKE '%$%' - AND (LAST_ANALYZED IS NULL OR LAST_ANALYZED < SysDate-7); - -- - v_Cmd VARCHAR2(256); - v_NoC NUMBER := 0; - -- -BEGIN - -- Recompile - DBA_Recompile(NULL); - - -- Statistics - FOR s IN Cur_Stat LOOP - v_Cmd := 'ANALYZE TABLE ' || s.Table_Name || ' COMPUTE STATISTICS'; - -- DBMS_OUTPUT.PUT_LINE (v_Cmd); - v_NoC := v_NoC + 1; - EXECUTE IMMEDIATE v_Cmd; - END LOOP; - DBMS_OUTPUT.PUT_LINE ('Statistics computed: ' || v_NoC); - -- -END DBA_AfterImport; -/ diff --git a/db/database/Procedures/DBA_Cleanup.sql b/db/database/Procedures/DBA_Cleanup.sql deleted file mode 100644 index 2161e25083..0000000000 --- a/db/database/Procedures/DBA_Cleanup.sql +++ /dev/null @@ -1,117 +0,0 @@ -CREATE OR REPLACE PROCEDURE DBA_Cleanup -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: DBA_Cleanup.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Cleanup old temporary data - * Description: - ************************************************************************/ -AS -BEGIN - DBMS_OUTPUT.PUT_LINE('DBA_Cleanup'); - -- Clean up data - /** --- C_Invoice_CheckPaid(); - UPDATE C_Payment_v - SET IsAllocated=CASE WHEN paymentAllocated(C_Payment_ID, C_Currency_ID)=PayAmt THEN 'Y' ELSE 'N' END - WHERE IsAllocated='N'; - UPDATE C_Invoice_v1 - SET IsPaid = CASE WHEN invoicePaid(C_Invoice_ID,C_Currency_ID,MultiplierAP)=GrandTotal THEN 'Y' ELSE 'N' END - WHERE IsPaid='N'; - **/ - - -- Temporary Tables - DELETE FROM T_Aging; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' T_Aging=' || SQL%ROWCOUNT); - END IF; - - DELETE FROM T_DistributionRunDetail; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' T_DistributionRunDetail=' || SQL%ROWCOUNT); - END IF; - - DELETE FROM T_InventoryValue; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' T_InventoryValue=' || SQL%ROWCOUNT); - END IF; - - DELETE FROM T_Replenish; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' T_Replenish=' || SQL%ROWCOUNT); - END IF; - - DELETE FROM T_Report; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' T_Report=' || SQL%ROWCOUNT); - END IF; - - DELETE FROM T_ReportStatement; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' T_ReportStatement=' || SQL%ROWCOUNT); - END IF; - - DELETE FROM T_TrialBalance; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' T_TrialBalance=' || SQL%ROWCOUNT); - END IF; - - DELETE FROM T_Selection; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' T_Selection=' || SQL%ROWCOUNT); - END IF; - - DELETE FROM T_Selection2; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' T_Selection2=' || SQL%ROWCOUNT); - END IF; - - DELETE FROM T_Spool; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' T_Spool=' || SQL%ROWCOUNT); - END IF; - - -- Search Info - DELETE FROM AD_Find; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' AD_Find=' || SQL%ROWCOUNT); - END IF; - - -- Processes older than a week - DELETE FROM AD_PInstance WHERE Created < SysDate-7; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' Old AD_PInstance=' || SQL%ROWCOUNT); - END IF; - - /** Old Session (1 Week) - DELETE FROM AD_ChangeLog WHERE Created < SysDate-7; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' Old AD_ChangeLock=' || SQL%ROWCOUNT); - END IF; - DELETE FROM AD_Session WHERE Created < SysDate-7; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' Old AD_Session=' || SQL%ROWCOUNT); - END IF; - /** */ - - -- Errors older than 1 week - DELETE FROM AD_Error WHERE Created < SysDate-7; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' Old AD_Error=' || SQL%ROWCOUNT); - END IF; - - -- Acknowledged Notes older than a day - DELETE FROM AD_Note WHERE Processed='Y' AND Updated < SysDate-1; - IF (SQL%ROWCOUNT <> 0) THEN - DBMS_OUTPUT.PUT_LINE(' Processed AD_Note=' || SQL%ROWCOUNT); - END IF; - - -- - COMMIT; -END DBA_Cleanup; -/ diff --git a/db/database/Procedures/DBA_Recompile.sql b/db/database/Procedures/DBA_Recompile.sql deleted file mode 100644 index 760c95dbaf..0000000000 --- a/db/database/Procedures/DBA_Recompile.sql +++ /dev/null @@ -1,148 +0,0 @@ -CREATE OR REPLACE PROCEDURE DBA_Recompile -( - p_PInstance_ID IN NUMBER -- DEFAULT NULL -) -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: DBA_Recompile.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Recompile all User_Objects - * Description: - ************************************************************************/ -AS - -- Logistice - v_Message VARCHAR2(2000) := ' '; - v_Result NUMBER := 1; -- 0=failure - -- - v_Buffer VARCHAR2(2000); - v_Line VARCHAR(100); - v_PrintInfo CHAR(1) := 'N'; -- Diagnostic - -- - CURSOR Cur_Invalids IS - SELECT object_id, object_name, object_type - FROM user_objects - WHERE status <> 'VALID' - AND object_type IN ('VIEW', 'PACKAGE', 'PACKAGE BODY', 'FUNCTION', - 'PROCEDURE', 'TRIGGER', 'JAVA CLASS') - ORDER BY object_type, object_name; - - CURSOR Cur_Valids (p_id NUMBER) IS - SELECT 'FOUND' - FROM user_objects - WHERE status = 'VALID' - AND object_id = p_id; - - -- failed compile - TYPE invalid_tab IS TABLE OF Cur_Invalids%ROWTYPE INDEX BY BINARY_INTEGER; - invalid_tab_rec invalid_tab; - - count_compiled PLS_INTEGER; - valid_text VARCHAR2(5); - exec_cursor PLS_INTEGER := DBMS_SQL.OPEN_CURSOR; - sql_statement VARCHAR2(200); - count_object PLS_INTEGER := 0; - -BEGIN - LOOP - count_compiled := 0; - FOR ci IN Cur_Invalids LOOP - -- not unsuccessfuly compiled yet - IF NOT invalid_tab_rec.EXISTS(ci.object_id) THEN - IF (ci.object_type = 'JAVA CLASS') THEN - sql_statement := 'ALTER JAVA CLASS "' || ci.object_name || '" RESOLVE'; - ELSIF (ci.object_type = 'PACKAGE BODY') THEN - sql_statement := 'ALTER PACKAGE ' || ci.object_name || ' COMPILE BODY'; - ELSE - sql_statement := 'ALTER ' || ci.object_type || ' ' || ci.object_name || ' COMPILE'; - END IF; - -- compile - BEGIN - count_object := count_object + 1; - DBMS_SQL.PARSE(exec_cursor, sql_statement, DBMS_SQL.NATIVE); - EXCEPTION - WHEN OTHERS THEN - NULL; - END; - -- - OPEN Cur_Valids (ci.object_ID); - FETCH Cur_Valids INTO valid_text; - IF Cur_Valids%ROWCOUNT > 0 THEN - IF (v_PrintInfo = 'Y') THEN - DBMS_OUTPUT.PUT_LINE('OK: ' || ci.object_type || ' ' || ci.object_name); - END IF; - count_compiled := count_compiled + 1; - CLOSE Cur_Valids; - EXIT; - ELSE - IF (LENGTH(v_Message) < 1950) THEN - v_Message := v_Message || ci.object_name || ' '; - END IF; - IF (v_PrintInfo = 'Y') THEN - DBMS_OUTPUT.PUT_LINE('Error: ' || ci.object_type || ' ' || ci.object_name); - END IF; - -- - invalid_tab_rec(ci.object_id).object_name := ci.object_name; - invalid_tab_rec(ci.object_id).object_type := ci.object_type; - CLOSE Cur_Valids; - END IF; - END IF; -- not unsuccessfuly compiled yet - END LOOP; -- Cur_Invalids - -- any other to be compiled - IF count_compiled = 0 THEN - EXIT; - END IF; - END LOOP; -- outer loop - - DBMS_SQL.CLOSE_CURSOR(exec_cursor); - -- - -- Print Message - IF (LENGTH(v_Message) = 1) THEN - v_Message := 'All valid'; - DBMS_OUTPUT.PUT_LINE(v_Message); - ELSIF (LENGTH(v_Message) > 80) THEN - v_Buffer := v_Message; - DBMS_OUTPUT.PUT_LINE('>'); - WHILE (LENGTH(v_Buffer) > 0) LOOP - v_Line := SUBSTR(v_Buffer, 1, 80); - DBMS_OUTPUT.PUT_LINE(v_Line); - v_Buffer := SUBSTR(v_Buffer, 81); - END LOOP; - DBMS_OUTPUT.PUT_LINE('<'); - v_Result := 0; - DBMS_OUTPUT.PUT_LINE('ERROR'); - ELSE - DBMS_OUTPUT.PUT_LINE('>' || v_Message || '<'); - v_Result := 0; - DBMS_OUTPUT.PUT_LINE('ERROR'); - END IF; - -<> - IF (p_PInstance_ID IS NOT NULL) THEN - -- Update AD_PInstance - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = v_Result, -- 1=success - ErrorMsg = v_Message - WHERE AD_PInstance_ID=p_PInstance_ID; - END IF; - COMMIT; - RETURN; - - -EXCEPTION - WHEN OTHERS THEN - DBMS_OUTPUT.PUT_LINE(SQLERRM); - IF DBMS_SQL.IS_OPEN(exec_cursor) THEN - DBMS_SQL.CLOSE_CURSOR(exec_cursor); - END IF; - IF Cur_Valids%ISOPEN THEN - CLOSE Cur_Valids; - END IF; -END DBA_Recompile; -/ diff --git a/db/database/Procedures/Fact_Acct_Balance_Update.sql b/db/database/Procedures/Fact_Acct_Balance_Update.sql deleted file mode 100644 index 5fcf9c1a96..0000000000 --- a/db/database/Procedures/Fact_Acct_Balance_Update.sql +++ /dev/null @@ -1,116 +0,0 @@ -CREATE OR REPLACE PROCEDURE Fact_Acct_Balance_Update -( - p_DeleteFirst IN VARCHAR2 DEFAULT 'N' -) -/************************************************************************* - * 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-2003 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: Fact_Acct_Balance_Update.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Update ALL Balances - * Description: - * - Recreates all Balances - ************************************************************************/ -AS -BEGIN - - IF (p_DeleteFirst = 'Y') THEN - DELETE Fact_Acct_Balance; - DBMS_OUTPUT.PUT_LINE(' Deletes=' || SQL%ROWCOUNT); - ELSE - /** Update **/ - UPDATE Fact_Acct_Balance ab - SET (AmtAcctDr, AmtAcctCr, Qty) = - (SELECT COALESCE(SUM(AmtAcctDr),0), COALESCE(SUM(AmtAcctCr),0), COALESCE(SUM(Qty),0) - FROM Fact_Acct a - WHERE a.AD_Client_ID=ab.AD_Client_ID AND a.AD_Org_ID=ab.AD_Org_ID - AND a.C_AcctSchema_ID=ab.C_AcctSchema_ID AND TRUNC(a.DateAcct)=TRUNC(ab.DateAcct) - AND a.Account_ID=ab.Account_ID AND a.PostingType=ab.PostingType - AND COALESCE(a.M_Product_ID,0)=COALESCE(ab.M_Product_ID,0) AND COALESCE(a.C_BPartner_ID,0)=COALESCE(ab.C_BPartner_ID,0) - AND COALESCE(a.C_Project_ID,0)=COALESCE(ab.C_Project_ID,0) AND COALESCE(a.AD_OrgTrx_ID,0)=COALESCE(ab.AD_OrgTrx_ID,0) - AND COALESCE(a.C_SalesRegion_ID,0)=COALESCE(ab.C_SalesRegion_ID,0) AND COALESCE(a.C_Activity_ID,0)=COALESCE(ab.C_Activity_ID,0) - AND COALESCE(a.C_Campaign_ID,0)=COALESCE(ab.C_Campaign_ID,0) AND COALESCE(a.C_LocTo_ID,0)=COALESCE(ab.C_LocTo_ID,0) AND COALESCE(a.C_LocFrom_ID,0)=COALESCE(ab.C_LocFrom_ID,0) - AND COALESCE(a.User1_ID,0)=COALESCE(ab.User1_ID,0) AND COALESCE(a.User2_ID,0)=COALESCE(ab.User2_ID,0) AND COALESCE(a.GL_Budget_ID,0)=COALESCE(ab.GL_Budget_ID,0) - GROUP BY AD_Client_ID,AD_Org_ID, - C_AcctSchema_ID, TRUNC(DateAcct), - Account_ID, PostingType, - M_Product_ID, C_BPartner_ID, - C_Project_ID, AD_OrgTrx_ID, - C_SalesRegion_ID, C_Activity_ID, - C_Campaign_ID, C_LocTo_ID, C_LocFrom_ID, - User1_ID, User2_ID, GL_Budget_ID) - WHERE EXISTS - (SELECT * - FROM Fact_Acct a - WHERE a.AD_Client_ID=ab.AD_Client_ID AND a.AD_Org_ID=ab.AD_Org_ID - AND a.C_AcctSchema_ID=ab.C_AcctSchema_ID AND TRUNC(a.DateAcct)=TRUNC(ab.DateAcct) - AND a.Account_ID=ab.Account_ID AND a.PostingType=ab.PostingType - AND COALESCE(a.M_Product_ID,0)=COALESCE(ab.M_Product_ID,0) AND COALESCE(a.C_BPartner_ID,0)=COALESCE(ab.C_BPartner_ID,0) - AND COALESCE(a.C_Project_ID,0)=COALESCE(ab.C_Project_ID,0) AND COALESCE(a.AD_OrgTrx_ID,0)=COALESCE(ab.AD_OrgTrx_ID,0) - AND COALESCE(a.C_SalesRegion_ID,0)=COALESCE(ab.C_SalesRegion_ID,0) AND COALESCE(a.C_Activity_ID,0)=COALESCE(ab.C_Activity_ID,0) - AND COALESCE(a.C_Campaign_ID,0)=COALESCE(ab.C_Campaign_ID,0) AND COALESCE(a.C_LocTo_ID,0)=COALESCE(ab.C_LocTo_ID,0) AND COALESCE(a.C_LocFrom_ID,0)=COALESCE(ab.C_LocFrom_ID,0) - AND COALESCE(a.User1_ID,0)=COALESCE(ab.User1_ID,0) AND COALESCE(a.User2_ID,0)=COALESCE(ab.User2_ID,0) AND COALESCE(a.GL_Budget_ID,0)=COALESCE(ab.GL_Budget_ID,0) - GROUP BY AD_Client_ID,AD_Org_ID, - C_AcctSchema_ID, TRUNC(DateAcct), - Account_ID, PostingType, - M_Product_ID, C_BPartner_ID, - C_Project_ID, AD_OrgTrx_ID, - C_SalesRegion_ID, C_Activity_ID, - C_Campaign_ID, C_LocTo_ID, C_LocFrom_ID, - User1_ID, User2_ID, GL_Budget_ID); - DBMS_OUTPUT.PUT_LINE(' Updates=' || SQL%ROWCOUNT); - END IF; - - - /** Insert **/ - INSERT INTO Fact_Acct_Balance ab - (AD_Client_ID, AD_Org_ID, - C_AcctSchema_ID, DateAcct, - Account_ID, PostingType, - M_Product_ID, C_BPartner_ID, - C_Project_ID, AD_OrgTrx_ID, - C_SalesRegion_ID,C_Activity_ID, - C_Campaign_ID, C_LocTo_ID, C_LocFrom_ID, - User1_ID, User2_ID, GL_Budget_ID, - AmtAcctDr, AmtAcctCr, Qty) - -- - SELECT AD_Client_ID, AD_Org_ID, - C_AcctSchema_ID, TRUNC(DateAcct), - Account_ID, PostingType, - M_Product_ID, C_BPartner_ID, - C_Project_ID, AD_OrgTrx_ID, - C_SalesRegion_ID,C_Activity_ID, - C_Campaign_ID, C_LocTo_ID, C_LocFrom_ID, - User1_ID, User2_ID, GL_Budget_ID, - COALESCE(SUM(AmtAcctDr),0), COALESCE(SUM(AmtAcctCr),0), COALESCE(SUM(Qty),0) - FROM Fact_Acct a - WHERE NOT EXISTS - (SELECT * - FROM Fact_Acct_Balance x - WHERE a.AD_Client_ID=x.AD_Client_ID AND a.AD_Org_ID=x.AD_Org_ID - AND a.C_AcctSchema_ID=x.C_AcctSchema_ID AND TRUNC(a.DateAcct)=TRUNC(x.DateAcct) - AND a.Account_ID=x.Account_ID AND a.PostingType=x.PostingType - AND COALESCE(a.M_Product_ID,0)=COALESCE(x.M_Product_ID,0) AND COALESCE(a.C_BPartner_ID,0)=COALESCE(x.C_BPartner_ID,0) - AND COALESCE(a.C_Project_ID,0)=COALESCE(x.C_Project_ID,0) AND COALESCE(a.AD_OrgTrx_ID,0)=COALESCE(x.AD_OrgTrx_ID,0) - AND COALESCE(a.C_SalesRegion_ID,0)=COALESCE(x.C_SalesRegion_ID,0) AND COALESCE(a.C_Activity_ID,0)=COALESCE(x.C_Activity_ID,0) - AND COALESCE(a.C_Campaign_ID,0)=COALESCE(x.C_Campaign_ID,0) AND COALESCE(a.C_LocTo_ID,0)=COALESCE(x.C_LocTo_ID,0) AND COALESCE(a.C_LocFrom_ID,0)=COALESCE(x.C_LocFrom_ID,0) - AND COALESCE(a.User1_ID,0)=COALESCE(x.User1_ID,0) AND COALESCE(a.User2_ID,0)=COALESCE(x.User2_ID,0) AND COALESCE(a.GL_Budget_ID,0)=COALESCE(x.GL_Budget_ID,0) ) - GROUP BY AD_Client_ID,AD_Org_ID, - C_AcctSchema_ID, TRUNC(DateAcct), - Account_ID, PostingType, - M_Product_ID, C_BPartner_ID, - C_Project_ID, AD_OrgTrx_ID, - C_SalesRegion_ID, C_Activity_ID, - C_Campaign_ID, C_LocTo_ID, C_LocFrom_ID, - User1_ID, User2_ID, GL_Budget_ID; - DBMS_OUTPUT.PUT_LINE(' Inserts=' || SQL%ROWCOUNT); - - ----------------------- - COMMIT; - -END Fact_Acct_Balance_Update; -/ diff --git a/db/database/Procedures/M_PriceList_Create.sql b/db/database/Procedures/M_PriceList_Create.sql deleted file mode 100644 index 5c18436699..0000000000 --- a/db/database/Procedures/M_PriceList_Create.sql +++ /dev/null @@ -1,374 +0,0 @@ -CREATE OR REPLACE PROCEDURE M_PriceList_Create -( - PInstance_ID IN NUMBER -) -AS -/************************************************************************* - * 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-2003 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: M_PriceList_Create.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Create Pricelist - * Description: - * Create PriceList by copying purchase prices (M_Product_PO) - * and applying product category discounts (M_CategoryDiscount) - ************************************************************************/ - -- Logistice - ResultStr VARCHAR2(2000); - Message VARCHAR2(2000) := ''; - NoRate EXCEPTION; - -- Parameter - CURSOR Cur_Parameter (PInstance NUMBER) IS - SELECT i.Record_ID, p.ParameterName, p.P_String, p.P_Number, p.P_Date - FROM AD_PInstance i, AD_PInstance_Para p - WHERE i.AD_PInstance_ID=PInstance - AND i.AD_PInstance_ID=p.AD_PInstance_ID(+) - ORDER BY p.SeqNo; - -- Parameter Variables - p_PriceList_Version_ID NUMBER; - p_DeleteOld CHAR(1) := 'N'; - -- - v_Currency_ID NUMBER; - v_Client_ID NUMBER; - v_Org_ID NUMBER; - v_UpdatedBy NUMBER; - v_StdPrecision NUMBER; - v_DiscountSchema_ID NUMBER; - v_PriceList_Version_Base_ID NUMBER; - -- - v_NextNo NUMBER := 0; - - -- Get PL Parameter - CURSOR Cur_DiscountLine (DiscountSchema_ID NUMBER) IS - SELECT * - FROM M_DiscountSchemaLine - WHERE M_DiscountSchema_ID=DiscountSchema_ID - AND IsActive='Y' - ORDER BY SeqNo; - -BEGIN - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Processing'); - ResultStr := 'PInstanceNotFound'; - UPDATE AD_PInstance - SET Created = SysDate, - IsProcessing = 'Y' - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - - -- Get Parameters - ResultStr := 'ReadingParameters'; - FOR p IN Cur_Parameter (PInstance_ID) LOOP - p_PriceList_Version_ID := p.Record_ID; - IF (p.ParameterName = 'DeleteOld') THEN - p_DeleteOld := p.P_String; - DBMS_OUTPUT.PUT_LINE(' DeleteOld=' || p_DeleteOld); - ELSE - DBMS_OUTPUT.PUT_LINE('*** Unknown Parameter=' || p.ParameterName); - END IF; - END LOOP; -- Get Parameter - DBMS_OUTPUT.PUT_LINE(' PriceList_Version_ID=' || p_PriceList_Version_ID); - - -- Checking Prerequisites - -- -- PO Prices must exists - ResultStr := 'CorrectingProductPO'; - DBMS_OUTPUT.PUT_LINE(ResultStr); - UPDATE M_Product_PO - SET PriceList = 0 - WHERE PriceList IS NULL; - UPDATE M_Product_PO - SET PriceLastPO = 0 - WHERE PriceLastPO IS NULL; - UPDATE M_Product_PO - SET PricePO = PriceLastPO - WHERE (PricePO IS NULL OR PricePO = 0) AND PriceLastPO <> 0; - UPDATE M_Product_PO - SET PricePO = 0 - WHERE PricePO IS NULL; - -- Set default current vendor - UPDATE M_Product_PO p - SET IsCurrentVendor = 'Y' - WHERE IsCurrentVendor = 'N' - AND NOT EXISTS - (SELECT pp.M_Product_ID FROM M_Product_PO pp - WHERE pp.M_Product_ID=p.M_Product_ID - GROUP BY pp.M_Product_ID HAVING COUNT(*) > 1); - COMMIT; - - /** - * Make sure that we have only one active product - */ - ResultStr := 'CorrectingDuplicates'; - DBMS_OUTPUT.PUT_LINE(ResultStr); - DECLARE - -- All duplicate products - CURSOR Cur_Duplicates IS - SELECT DISTINCT M_Product_ID - FROM M_Product_PO po - WHERE IsCurrentVendor='Y' AND IsActive='Y' - AND EXISTS ( SELECT M_Product_ID FROM M_Product_PO x - WHERE x.M_Product_ID=po.M_Product_ID - GROUP BY M_Product_ID HAVING COUNT(*) > 1 ) - ORDER BY 1; - -- All vendors of Product - expensive first - CURSOR Cur_Vendors (Product_ID NUMBER) IS - SELECT M_Product_ID, C_BPartner_ID - FROM M_Product_PO - WHERE IsCurrentVendor='Y' AND IsActive='Y' - AND M_Product_ID=Product_ID - ORDER BY PriceList DESC; - -- - Product_ID NUMBER; - BPartner_ID NUMBER; - BEGIN - FOR dupl IN Cur_Duplicates LOOP - OPEN Cur_Vendors (dupl.M_Product_ID); - FETCH Cur_Vendors INTO Product_ID, BPartner_ID; -- Leave First - LOOP - FETCH Cur_Vendors INTO Product_ID, BPartner_ID; -- Get Record ID - EXIT WHEN Cur_Vendors%NOTFOUND; - -- - DBMS_OUTPUT.PUT_LINE(' Record: ' || Product_ID || ' / ' || BPartner_ID); - UPDATE M_Product_PO - SET IsCurrentVendor='N' - WHERE M_Product_ID=Product_ID AND C_BPartner_ID=BPartner_ID; - END LOOP; - CLOSE Cur_Vendors; - END LOOP; - COMMIT; - END; - - /** Delete Old Data */ - ResultStr := 'DeletingOld'; - IF (p_DeleteOld = 'Y') THEN - DELETE M_ProductPrice - WHERE M_PriceList_Version_ID = p_PriceList_Version_ID; - Message := '@Deleted@=' || SQL%ROWCOUNT || ' - '; - DBMS_OUTPUT.PUT_LINE(Message); - END IF; - - -- Get PriceList Info - ResultStr := 'GetPLInfo'; - DBMS_OUTPUT.PUT_LINE(ResultStr); - SELECT p.C_Currency_ID, c.StdPrecision, - v.AD_Client_ID, v.AD_Org_ID, v.UpdatedBy, - v.M_DiscountSchema_ID, M_PriceList_Version_Base_ID - INTO v_Currency_ID, v_StdPrecision, - v_Client_ID, v_Org_ID, v_UpdatedBy, - v_DiscountSchema_ID, v_PriceList_Version_Base_ID - FROM M_PriceList p, M_PriceList_Version v, C_Currency c - WHERE p.M_PriceList_ID=v.M_PriceList_ID - AND p.C_Currency_ID=c.C_Currency_ID - AND v.M_PriceList_Version_ID=p_PriceList_Version_ID; - - /** - * For All Discount Lines in Sequence - */ - FOR dl IN Cur_DiscountLine (v_DiscountSchema_ID) LOOP - ResultStr := 'Parameter Seq=' || dl.SeqNo; - -- DBMS_OUTPUT.PUT_LINE(ResultStr); - - -- Clear Temporary Table - DELETE FROM T_Selection; - - -- ----------------------------------- - -- Create Selection in temporary table - -- ----------------------------------- - IF (v_PriceList_Version_Base_ID IS NULL) THEN - -- Create Selection from M_Product_PO - INSERT INTO T_Selection (T_Selection_ID) - SELECT DISTINCT po.M_Product_ID - FROM M_Product p, M_Product_PO po - WHERE p.M_Product_ID=po.M_Product_ID - AND (p.AD_Client_ID=v_Client_ID OR p.AD_Client_ID=0) - AND p.IsActive='Y' AND po.IsActive='Y' AND po.IsCurrentVendor='Y' - -- Optional Restrictions - AND (dl.M_Product_Category_ID IS NULL OR p.M_Product_Category_ID=dl.M_Product_Category_ID) - AND (dl.C_BPartner_ID IS NULL OR po.C_BPartner_ID=dl.C_BPartner_ID) - AND (dl.M_Product_ID IS NULL OR p.M_Product_ID=dl.M_Product_ID); - ELSE - -- Create Selection from existing PriceList - INSERT INTO T_Selection (T_Selection_ID) - SELECT DISTINCT p.M_Product_ID - FROM M_Product p, M_ProductPrice pp - WHERE p.M_Product_ID=pp.M_Product_ID - AND pp.M_PriceList_Version_ID=v_PriceList_Version_Base_ID - AND p.IsActive='Y' AND pp.IsActive='Y' - -- Optional Restrictions - AND (dl.M_Product_Category_ID IS NULL OR p.M_Product_Category_ID=dl.M_Product_Category_ID) - AND (dl.C_BPartner_ID IS NULL OR EXISTS - (SELECT * FROM M_Product_PO po WHERE po.M_Product_ID=p.M_Product_ID AND po.C_BPartner_ID=dl.C_BPartner_ID)) - AND (dl.M_Product_ID IS NULL OR p.M_Product_ID=dl.M_Product_ID); - END IF; - Message := Message || '@Selected@=' || SQL%ROWCOUNT; - -- DBMS_OUTPUT.PUT_LINE(Message); - - -- Delete Prices in Selection, so that we can insert - IF (v_PriceList_Version_Base_ID IS NULL - OR v_PriceList_Version_Base_ID <> p_PriceList_Version_ID) THEN - ResultStr := ResultStr || ', Delete'; - DELETE M_ProductPrice pp - WHERE pp.M_PriceList_Version_ID = p_PriceList_Version_ID - AND EXISTS (SELECT * FROM T_Selection s WHERE pp.M_Product_ID=s.T_Selection_ID); - Message := ', @Deleted@=' || SQL%ROWCOUNT; - END IF; - - -- -------------------- - -- Copy (Insert) Prices - -- -------------------- - IF (v_PriceList_Version_Base_ID = p_PriceList_Version_ID) THEN - -- We have Prices already - NULL; - ELSIF (v_PriceList_Version_Base_ID IS NULL) THEN - -- Copy and Convert from Product_PO - ResultStr := ResultStr || ',Copy_PO'; - INSERT INTO M_ProductPrice - (M_PriceList_Version_ID, M_Product_ID, - AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy, - PriceList, PriceStd, PriceLimit) - SELECT - p_PriceList_Version_ID, po.M_Product_ID, - v_Client_ID, v_Org_ID, 'Y', SysDate, v_UpdatedBy, SysDate, v_UpdatedBy, - -- Price List - COALESCE(currencyConvert(po.PriceList, - po.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0), - -- Price Std - COALESCE(currencyConvert(po.PriceList, - po.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0), - -- Price Limit - COALESCE(currencyConvert(po.PricePO, - po.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0) - FROM M_Product_PO po - WHERE EXISTS (SELECT * FROM T_Selection s WHERE po.M_Product_ID=s.T_Selection_ID) - AND po.IsCurrentVendor='Y' AND po.IsActive='Y'; - ELSE - -- Copy and Convert from other PriceList_Version - ResultStr := ResultStr || ',Copy_PL'; - INSERT INTO M_ProductPrice - (M_PriceList_Version_ID, M_Product_ID, - AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy, - PriceList, PriceStd, PriceLimit) - SELECT - p_PriceList_Version_ID, pp.M_Product_ID, - v_Client_ID, v_Org_ID, 'Y', SysDate, v_UpdatedBy, SysDate, v_UpdatedBy, - -- Price List - COALESCE(currencyConvert(pp.PriceList, - pl.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0), - -- Price Std - COALESCE(currencyConvert(pp.PriceStd, - pl.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0), - -- Price Limit - COALESCE(currencyConvert(pp.PriceLimit, - pl.C_Currency_ID, v_Currency_ID, dl.ConversionDate, dl.C_ConversionType_ID, v_Client_ID, v_Org_ID),0) - FROM M_ProductPrice pp - INNER JOIN M_PriceList_Version plv ON (pp.M_PriceList_Version_ID=plv.M_PriceList_Version_ID) - INNER JOIN M_PriceList pl ON (plv.M_PriceList_ID=pl.M_PriceList_ID) - WHERE pp.M_PriceList_Version_ID=v_PriceList_Version_Base_ID - AND EXISTS (SELECT * FROM T_Selection s WHERE pp.M_Product_ID=s.T_Selection_ID) - AND pp.IsActive='Y'; - END IF; - Message := Message || ', @Inserted@=' || SQL%ROWCOUNT; - - -- ----------- - -- Calculation - -- ----------- - ResultStr := ResultStr || ',Calc'; - UPDATE M_ProductPrice p - SET PriceList = (DECODE(dl.List_Base, 'S', PriceStd, 'X', PriceLimit, PriceList) - + dl.List_AddAmt) * (1 - dl.List_Discount/100), - PriceStd = (DECODE(dl.Std_Base, 'L', PriceList, 'X', PriceLimit, PriceStd) - + dl.Std_AddAmt) * (1 - dl.Std_Discount/100), - PriceLimit = (DECODE(dl.Limit_Base, 'L', PriceList, 'S', PriceStd, PriceLimit) - + dl.Limit_AddAmt) * (1 - dl.Limit_Discount/100) - WHERE M_PriceList_Version_ID=p_PriceList_Version_ID - AND EXISTS (SELECT * FROM T_Selection s - WHERE s.T_Selection_ID=p.M_Product_ID); - - -- -------- - -- Rounding (AD_Reference_ID=155) - -- -------- - ResultStr := ResultStr || ',Round'; - UPDATE M_ProductPrice p - SET PriceList = DECODE(dl.List_Rounding, - 'N', PriceList, - '0', ROUND(PriceList, 0), -- Even .00 - 'D', ROUND(PriceList, 1), -- Dime .10 - 'T', ROUND(PriceList, -1), -- Ten 10.00 - '5', ROUND(PriceList*20,0)/20, -- Nickle .05 - 'Q', ROUND(PriceList*4,0)/4, -- Quarter .25 - ROUND(PriceList, v_StdPrecision)),-- Currency - PriceStd = DECODE(dl.Std_Rounding, - 'N', PriceStd, - '0', ROUND(PriceStd, 0), -- Even .00 - 'D', ROUND(PriceStd, 1), -- Dime .10 - 'T', ROUND(PriceStd, -1), -- Ten 10.00 - '5', ROUND(PriceStd*20,0)/20, -- Nickle .05 - 'Q', ROUND(PriceStd*4,0)/4, -- Quarter .25 - ROUND(PriceStd, v_StdPrecision)), -- Currency - PriceLimit = DECODE(dl.Limit_Rounding, - 'N', PriceLimit, - '0', ROUND(PriceLimit, 0), -- Even .00 - 'D', ROUND(PriceLimit, 1), -- Dime .10 - 'T', ROUND(PriceLimit, -1), -- Ten 10.00 - '5', ROUND(PriceLimit*20,0)/20, -- Nickle .05 - 'Q', ROUND(PriceLimit*4,0)/4, -- Quarter .25 - ROUND(PriceLimit, v_StdPrecision))-- Currency - WHERE M_PriceList_Version_ID=p_PriceList_Version_ID - AND EXISTS (SELECT * FROM T_Selection s - WHERE s.T_Selection_ID=p.M_Product_ID); - Message := Message || ', @Updated@=' || SQL%ROWCOUNT; - - -- Fixed Price overwrite - ResultStr := ResultStr || ',Fix'; - UPDATE M_ProductPrice p - SET PriceList = DECODE(dl.List_Base, 'F', dl.List_Fixed, PriceList), - PriceStd = DECODE(dl.Std_Base, 'F', dl.Std_Fixed, PriceStd), - PriceLimit = DECODE(dl.Limit_Base, 'F', dl.Limit_Fixed, PriceLimit) - WHERE M_PriceList_Version_ID=p_PriceList_Version_ID - AND EXISTS (SELECT * FROM T_Selection s - WHERE s.T_Selection_ID=p.M_Product_ID); - - -- Log Info - INSERT INTO AD_PInstance_Log (AD_PInstance_ID, Log_ID, P_ID, P_NUMBER, P_MSG) - VALUES (PInstance_ID, v_NextNo, null, dl.SeqNo, Message); - -- - v_NextNo := v_NextNo + 1; - Message := ''; - END LOOP; -- For all DiscountLines - - -- Delete Temporary Selection - DELETE FROM T_Selection; - - -<> - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE(Message); - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished'); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 1, -- success - ErrorMsg = Message - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - RETURN; - -EXCEPTION - WHEN OTHERS THEN - ResultStr := ResultStr || ':' || SQLERRM || ' ' || Message; - DBMS_OUTPUT.PUT_LINE(ResultStr); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 0, -- failure - ErrorMsg = ResultStr - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - RETURN; - -END M_PriceList_Create; -/ diff --git a/db/database/Procedures/M_Product_BOM_Check.sql b/db/database/Procedures/M_Product_BOM_Check.sql deleted file mode 100644 index 94c845e410..0000000000 --- a/db/database/Procedures/M_Product_BOM_Check.sql +++ /dev/null @@ -1,147 +0,0 @@ -CREATE OR REPLACE PROCEDURE M_Product_BOM_Check -( - PInstance_ID IN NUMBER -) -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: M_Product_BOM_Check.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Check BOM Structure (free of cycles) - * Description: - * Tree cannot contain BOMs which are already referenced - ************************************************************************/ -AS - -- Logistice - ResultStr VARCHAR2(2000); - Message VARCHAR2(2000); - Record_ID NUMBER; - -- Parameter - CURSOR Cur_Parameter (PInstance NUMBER) IS - SELECT i.Record_ID, p.ParameterName, p.P_String, p.P_Number, p.P_Date - FROM AD_PInstance i, AD_PInstance_Para p - WHERE i.AD_PInstance_ID=PInstance - AND i.AD_PInstance_ID=p.AD_PInstance_ID(+) - ORDER BY p.SeqNo; - -- Variables - Verified CHAR(1) := 'Y'; - IsBOM CHAR(1); - CountNo NUMBER; - -BEGIN - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Processing ' || PInstance_ID); - ResultStr := 'PInstanceNotFound'; - UPDATE AD_PInstance - SET Created = SysDate, - IsProcessing = 'Y' - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - - -- Get Parameters - ResultStr := 'ReadingParameters'; - FOR p IN Cur_Parameter (PInstance_ID) LOOP - Record_ID := p.Record_ID; - END LOOP; -- Get Parameter - DBMS_OUTPUT.PUT_LINE(' Record_ID=' || Record_ID); - - -- Record ID is M_Product_ID of product to be tested - SELECT IsBOM - INTO IsBOM - FROM M_Product - WHERE M_Product_ID=Record_ID; - - -- No BOM - should not happen, but no problem - IF (IsBOM = 'N') THEN - GOTO FINISH_PROCESS; - -- Did not find product - ELSIF (IsBOM <> 'Y') THEN - RETURN; - END IF; - - -- Checking BOM Structure - ResultStr := 'InsertingRoot'; - -- Table to put all BOMs - duplicate will cause exception - DELETE FROM T_Selection2 WHERE Query_ID = 0; - INSERT INTO T_Selection2 (Query_ID, T_Selection_ID) VALUES (0, Record_ID); - -- Table of root modes - DELETE FROM T_Selection; - INSERT INTO T_Selection (T_Selection_ID) VALUES (Record_ID); - - LOOP - -- How many do we have? - SELECT COUNT(*) - INTO CountNo - FROM T_Selection; - -- Nothing to do - EXIT WHEN (CountNo = 0); - - -- Insert BOM Nodes into "All" table - INSERT INTO T_Selection2 (Query_ID, T_Selection_ID) - SELECT 0, p.M_Product_ID - FROM M_Product p - WHERE IsBOM='Y' - AND EXISTS (SELECT * FROM M_Product_BOM b WHERE p.M_Product_ID=b.M_ProductBOM_ID - AND b.M_Product_ID IN (SELECT T_Selection_ID FROM T_Selection)); - - -- Insert BOM Nodes into temporary table - DELETE FROM T_Selection2 WHERE Query_ID = 1; - INSERT INTO T_Selection2 (Query_ID, T_Selection_ID) - SELECT 1, p.M_Product_ID - FROM M_Product p - WHERE IsBOM='Y' - AND EXISTS (SELECT * FROM M_Product_BOM b WHERE p.M_Product_ID=b.M_ProductBOM_ID - AND b.M_Product_ID IN (SELECT T_Selection_ID FROM T_Selection)); - - -- Copy into root table - DELETE FROM T_Selection; - INSERT INTO T_Selection (T_Selection_ID) - SELECT T_Selection_ID - FROM T_Selection2 - WHERE Query_ID = 1; - - END LOOP; - -<> - -- OK - Message := 'OK'; - UPDATE M_Product - SET IsVerified = 'Y' - WHERE M_Product_ID=Record_ID; - - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || Message); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 1, -- success - ErrorMsg = Message - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - RETURN; - -EXCEPTION - WHEN OTHERS THEN - ResultStr := ResultStr || ': ' || SQLERRM || ' - ' || Message; - DBMS_OUTPUT.PUT_LINE(ResultStr); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 0, -- failure - ErrorMsg = ResultStr - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - -- - UPDATE M_Product - SET IsVerified = 'N' - WHERE M_Product_ID=Record_ID; - COMMIT; - -- - RETURN; - -END M_Product_BOM_Check; -/ diff --git a/db/database/Procedures/M_Product_Delete.sql b/db/database/Procedures/M_Product_Delete.sql deleted file mode 100644 index cc878d536c..0000000000 --- a/db/database/Procedures/M_Product_Delete.sql +++ /dev/null @@ -1,37 +0,0 @@ -CREATE OR REPLACE PROCEDURE M_Product_Delete -( - whereClause IN VARCHAR2 DEFAULT NULL -) -AS -/****************************************************************************** - * ** Adempiere Product ** Copyright (c) 1999-2001 Accorto, Inc. USA - * Open Source Software Provided "AS IS" without warranty or liability - * When you use any parts (changed or unchanged), add "Powered by Adempiere" to - * your product name; See license details http://www.adempiere.org/license.html - ****************************************************************************** - * Delete Products - */ - CURSOR CUR_DEL IS - SELECT M_Product_ID, Value, Name - FROM M_Product - WHERE IsActive='N'; - -- - SQL_Base VARCHAR2(255) := 'SELECT M_Product_ID FROM M_Product WHERE '; --- SQL_Where VARCHAR2(255) := 'ValueX IN (SELECT ValueX FROM M_Product GROUP BY ValueX HAVING Count(*) <> 1) AND INSTR(Value,''@'') <> 0'; - SQL_Statement VARCHAR2(255); -BEGIN - -- Delete inactive - IF (whereClause IS NULL OR LENGTH(whereClause) = 0) THEN - For d IN CUR_DEL LOOP - BEGIN - DBMS_OUTPUT.PUT('Deleting ' || d.Name || ' - '); - DELETE M_Product - WHERE M_Product_ID=d.M_Product_ID; - DBMS_OUTPUT.PUT_LINE('OK'); - EXCEPTION WHEN OTHERS THEN - DBMS_OUTPUT.PUT_LINE('Error ' || SQLERRM); - END; - END LOOP; - END IF; -END M_Product_Delete; -/ diff --git a/db/database/Procedures/M_Production_Run.sql b/db/database/Procedures/M_Production_Run.sql deleted file mode 100644 index 4f6ed64390..0000000000 --- a/db/database/Procedures/M_Production_Run.sql +++ /dev/null @@ -1,298 +0,0 @@ -CREATE OR REPLACE PROCEDURE M_Production_Run -( - PInstance_ID IN NUMBER -) -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: M_Production_Run.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Production of BOMs - * Description: - * 1) Creating ProductionLines when IsCreated = 'N' - * 2) Posting the Lines (optionally only when fully stocked) - ************************************************************************/ -AS - -- Logistice - ResultStr VARCHAR2(2000); - Message VARCHAR2(2000); - Record_ID NUMBER; - -- Parameter - CURSOR Cur_Parameter (PInstance NUMBER) IS - SELECT i.Record_ID, p.ParameterName, p.P_String, p.P_Number, p.P_Date - FROM AD_PInstance i, AD_PInstance_Para p - WHERE i.AD_PInstance_ID=PInstance - AND i.AD_PInstance_ID=p.AD_PInstance_ID(+) - ORDER BY p.SeqNo; - -- Parameter Variables - MustBeStocked CHAR(1); - IsCreated CHAR(1); - Processed CHAR(1); - Client_ID NUMBER; - Org_ID NUMBER; - -- - Line NUMBER; - NextNo NUMBER; - CountNo NUMBER; - -- ProductionPlan - CURSOR CUR_PP IS - SELECT * - FROM M_ProductionPlan - WHERE M_Production_ID=Record_ID - ORDER BY Line, M_Product_ID; - -- BOM Lines - CURSOR CUR_BOM (Product_ID NUMBER) IS - SELECT * - FROM M_Product_BOM - WHERE M_Product_ID=Product_ID - ORDER BY Line; - -- ProductionLines which are non-stocked BOMs (need to be resolved) - CURSOR CUR_PLineBOM (ProductionPlan_ID NUMBER) IS - SELECT pl.M_ProductionLine_ID, pl.Line, pl.M_Product_ID, pl.MovementQty - FROM M_ProductionLine pl, M_Product p - WHERE pl.M_ProductionPlan_ID=ProductionPlan_ID - AND pl.M_Product_ID=p.M_Product_ID - AND pl.Line<>100 -- Origin Line - AND p.IsBOM='Y' AND p.IsStocked='N'; - - -- Posting - CURSOR CUR_PL_Post IS - SELECT pl.M_ProductionLine_ID, pl.AD_Client_ID, pl.AD_Org_ID, p.MovementDate, - pl.M_Product_ID, pl.M_AttributeSetInstance_ID, pl.MovementQty, pl.M_Locator_ID - FROM M_Production p, M_ProductionLine pl, M_ProductionPlan pp - WHERE p.M_Production_ID=pp.M_Production_ID - AND pp.M_ProductionPlan_ID=pl.M_ProductionPlan_ID - AND pp.M_Production_ID=Record_ID - ORDER BY pp.Line, pl.Line; - - - -BEGIN - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Processing ' || PInstance_ID); - ResultStr := 'PInstanceNotFound'; - UPDATE AD_PInstance - SET Created = SysDate, - IsProcessing = 'Y' - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - - -- Get Parameters - ResultStr := 'ReadingParameters'; - FOR p IN Cur_Parameter (PInstance_ID) LOOP - Record_ID := p.Record_ID; - IF (p.ParameterName = 'MustBeStocked') THEN - MustBeStocked := p.P_String; - DBMS_OUTPUT.PUT_LINE(' MustBeStocked=' || MustBeStocked); - ELSE - DBMS_OUTPUT.PUT_LINE('*** Unknown Parameter=' || p.ParameterName); - END IF; - END LOOP; -- Get Parameter - DBMS_OUTPUT.PUT_LINE(' Record_ID=' || Record_ID); - - -- Processing??? Lock ???? - -- TODO - - /** - * Get Info + Lock - */ - ResultStr := 'ReadingRecord'; - SELECT IsCreated, Processed, AD_Client_ID, AD_Org_ID - INTO IsCreated, Processed, Client_ID, Org_ID - FROM M_Production - WHERE M_Production_ID=Record_ID - FOR UPDATE; - - /** - * No Action - */ - IF (Processed <> 'N') THEN - Message := '@AlreadyPosted@'; - GOTO FINISH_PROCESS; - END IF; - - /************************************************************************** - * Create Lines - */ - IF (IsCreated <> 'Y') THEN - -- For every Production Plan - FOR pp IN CUR_PP LOOP - -- Delete prior lines - DELETE M_ProductionLine - WHERE M_ProductionPlan_ID=pp.M_ProductionPlan_ID; - -- DBMS_OUTPUT.PUT_LINE('ProductionPlan=' || pp.M_ProductionPlan_ID); - -- Create BOM Line - ResultStr := 'CreatingLine BOM'; - Line := 100; -- OriginLine - AD_Sequence_Next('M_ProductionLine', pp.AD_Client_ID, NextNo); - INSERT INTO M_ProductionLine - (M_ProductionLine_ID, M_ProductionPlan_ID, Line, - AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy, - M_Product_ID, MovementQty, M_Locator_ID, Description) - VALUES - (NextNo, pp.M_ProductionPlan_ID, Line, - pp.AD_Client_ID,pp.AD_Org_ID,'Y',SysDate,0,SysDate,0, - pp.M_Product_ID, pp.ProductionQty, pp.M_Locator_ID, pp.Description); - - -- Create First Level - FOR bom IN CUR_BOM (pp.M_Product_ID) LOOP - ResultStr := 'CreatingLine Products'; - Line := Line + 100; - AD_Sequence_Next('M_ProductionLine', pp.AD_Client_ID, NextNo); - INSERT INTO M_ProductionLine - (M_ProductionLine_ID, M_ProductionPlan_ID, Line, - AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy, - M_Product_ID, MovementQty, M_Locator_ID) - VALUES - (NextNo, pp.M_ProductionPlan_ID, Line, - pp.AD_Client_ID,pp.AD_Org_ID,'Y',SysDate,0,SysDate,0, - bom.M_ProductBOM_ID, -pp.ProductionQty*bom.BOMQty, pp.M_Locator_ID); - END LOOP; - - -- While we have BOMs - LOOP - -- Are there non-stored BOMs to list details? - ResultStr := 'CreatingLine CheckBOM'; - SELECT COUNT(*) INTO CountNo - FROM M_ProductionLine pl, M_Product p - WHERE pl.M_Product_ID=p.M_Product_ID - AND pl.M_ProductionPlan_ID=pp.M_ProductionPlan_ID - AND pl.Line<>100 -- Origin Line - AND p.IsBOM='Y' AND p.IsStocked='N'; - -- Nothing to do - EXIT WHEN (CountNo = 0); - -- - - -- Resolve BOMs in ProductLine which are not stocked - FOR pl IN CUR_PLineBOM (pp.M_ProductionPlan_ID) LOOP - ResultStr := 'CreatingLineBOM Resolution'; - Line := pl.Line; - -- Resolve BOM Line in product line - FOR bom IN CUR_BOM (pl.M_Product_ID) LOOP - ResultStr := 'CreatingLine Products2'; - Line := Line + 10; - AD_Sequence_Next('M_ProductionLine', pp.AD_Client_ID, NextNo); - INSERT INTO M_ProductionLine - (M_ProductionLine_ID, M_ProductionPlan_ID, Line, - AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy, - M_Product_ID, MovementQty, M_Locator_ID) - VALUES - (NextNo, pp.M_ProductionPlan_ID, Line, - pp.AD_Client_ID,pp.AD_Org_ID,'Y',SysDate,0,SysDate,0, - bom.M_ProductBOM_ID, pl.MovementQty*bom.BOMQty, pp.M_Locator_ID); - END LOOP; - -- Delete BOM line - DELETE M_ProductionLine - WHERE M_ProductionLine_ID=pl.M_ProductionLine_ID; - END LOOP; - END LOOP; -- While we have BOMs - - END LOOP; -- For every Production Plan - - -- Modifying locator to have sufficient stock - - - -- Indicate that it is Created - UPDATE M_Production - SET IsCreated='Y' - WHERE M_Production_ID=Record_ID; - - /************************************************************************** - * Post Lines - */ - ELSE - -- All Production Lines - FOR pl IN CUR_PL_Post LOOP - -- M_ProductionLine_ID, AD_Client_ID, AD_Org_ID, MovementDate, M_Product_ID, MovementQty, M_Locator_ID - -- DBMS_OUTPUT.PUT_LINE('ProductionLine=' || pl.M_ProductionLine_ID); - -- DBMS_OUTPUT.PUT_LINE(' Qty=' || pl.MovementQty || ', OnHand=' || BOM_Qty_OnHand(pl.M_Product_ID, NULL, pl.M_Locator_ID)); - -- Check Stock levels for reductions - IF (pl.MovementQty < 0 AND MustBeStocked <> 'N' - AND bomQtyOnHand(pl.M_Product_ID, NULL, pl.M_Locator_ID)+pl.MovementQty < 0) THEN - ROLLBACK; - SELECT '@NotEnoughStocked@: ' || Name INTO Message - FROM M_Product WHERE M_Product_ID=pl.M_Product_ID; - GOTO FINISH_PROCESS; - END IF; - - -- Adjust Quantity at Location - UPDATE M_Storage - SET QtyOnHand = QtyOnHand + pl.MovementQty, - Updated = SysDate - WHERE M_Locator_ID = pl.M_Locator_ID - AND M_AttributeSetInstance_ID = COALESCE(pl.M_AttributeSetInstance_ID,0) - AND M_Product_ID = pl.M_Product_ID; - -- Product not on Stock yet - IF (SQL%ROWCOUNT = 0) THEN - INSERT INTO M_Storage - (M_Product_ID, M_Locator_ID, M_AttributeSetInstance_ID, - AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy, - QtyOnHand, QtyReserved, QtyOrdered) - VALUES - (pl.M_Product_ID, pl.M_Locator_ID, COALESCE(pl.M_AttributeSetInstance_ID,0), - pl.AD_Client_ID, pl.AD_Org_ID, 'Y', SysDate, 0, SysDate, 0, - pl.MovementQty, 0, 0); - END IF; - - -- Create Transaction Entry - ResultStr := 'CreateTransaction'; - AD_Sequence_Next('M_Transaction', pl.AD_Org_ID, NextNo); - INSERT INTO M_Transaction - (M_Transaction_ID, M_ProductionLine_ID, - AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy, - MovementType, M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID, - MovementDate, MovementQty) - VALUES - (NextNo, pl.M_ProductionLine_ID, - pl.AD_Client_ID, pl.AD_Org_ID, 'Y', SysDate, 0, SysDate, 0, - 'P+', pl.M_Locator_ID, pl.M_Product_ID, COALESCE(pl.M_AttributeSetInstance_ID,0), -- not distinguishing between assemby/disassembly - pl.MovementDate, pl.MovementQty); - -- - UPDATE M_ProductionLine - SET Processed='Y' - WHERE M_ProductionLine_ID=pl.M_ProductionLine_ID; - END LOOP; - - -- Indicate that we are done - UPDATE M_Production - SET Processed='Y' - WHERE M_Production_ID=Record_ID; - UPDATE M_ProductionPlan - SET Processed='Y' - WHERE M_Production_ID=Record_ID; - - END IF; - -- Only commit when entire job successful - COMMIT; - -<> - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || Message); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 1, -- success - ErrorMsg = Message - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - RETURN; - -EXCEPTION - WHEN OTHERS THEN - ResultStr := ResultStr || ': ' || SQLERRM || ' - ' || Message; - DBMS_OUTPUT.PUT_LINE(ResultStr); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 0, -- failure - ErrorMsg = ResultStr - WHERE AD_PInstance_ID=PInstance_ID; - COMMIT; - RETURN; - -END M_Production_Run; -/ diff --git a/db/database/Procedures/T_InventoryValue_Create.sql b/db/database/Procedures/T_InventoryValue_Create.sql deleted file mode 100644 index b9c7d9e96f..0000000000 --- a/db/database/Procedures/T_InventoryValue_Create.sql +++ /dev/null @@ -1,198 +0,0 @@ -CREATE OR REPLACE PROCEDURE T_InventoryValue_Create -( - p_PInstance_ID IN NUMBER -) -/************************************************************************* - * 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-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: T_InventoryValue_Create.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Inventory Valuation Temporary Table - * Description: - ************************************************************************/ -AS - -- Logistice - v_ResultStr VARCHAR2(2000); - v_Message VARCHAR2(2000); - v_Result NUMBER := 1; -- 0=failure - v_Record_ID NUMBER; - v_AD_User_ID NUMBER; - -- Parameter - CURSOR Cur_Parameter (pp_PInstance NUMBER) IS - SELECT i.Record_ID, i.AD_User_ID, - p.ParameterName, p.P_String, p.P_Number, p.P_Date - FROM AD_PInstance i, AD_PInstance_Para p - WHERE i.AD_PInstance_ID=pp_PInstance - AND i.AD_PInstance_ID=p.AD_PInstance_ID(+) - ORDER BY p.SeqNo; - -- Parameter Variables - p_M_PriceList_Version_ID NUMBER(10); - p_DateValue DATE; - p_M_Warehouse_ID NUMBER(10); - p_C_Currency_ID NUMBER(10); - -BEGIN - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Processing ' || p_PInstance_ID); - v_ResultStr := 'PInstanceNotFound'; - UPDATE AD_PInstance - SET Created = SysDate, - IsProcessing = 'Y' - WHERE AD_PInstance_ID=p_PInstance_ID; - COMMIT; - - -- Get Parameters - v_ResultStr := 'ReadingParameters'; - FOR p IN Cur_Parameter (p_PInstance_ID) LOOP - v_Record_ID := p.Record_ID; - v_AD_User_ID := p.AD_User_ID; - IF (p.ParameterName = 'M_PriceList_Version_ID') THEN - p_M_PriceList_Version_ID := p.P_Number; - DBMS_OUTPUT.PUT_LINE(' M_PriceList_Version_ID=' || p_M_PriceList_Version_ID); - ELSIF (p.ParameterName = 'DateValue') THEN - p_DateValue := p.P_Date; - DBMS_OUTPUT.PUT_LINE(' DateValue=' || p_DateValue); - ELSIF (p.ParameterName = 'M_Warehouse_ID') THEN - p_M_Warehouse_ID := p.P_Number; - DBMS_OUTPUT.PUT_LINE(' M_Warehouse_ID=' || p_M_Warehouse_ID); - ELSIF (p.ParameterName = 'C_Currency_ID') THEN - p_C_Currency_ID := p.P_Number; - DBMS_OUTPUT.PUT_LINE(' C_Currency_ID=' || p_C_Currency_ID); - ELSE - DBMS_OUTPUT.PUT_LINE('*** Unknown Parameter=' || p.ParameterName); - END IF; - END LOOP; -- Get Parameter - DBMS_OUTPUT.PUT_LINE(' Record_ID=' || v_Record_ID); - - -- Clear --- v_ResultStr := 'ClearTable'; --- DELETE T_InventoryValue WHERE M_Warehouse_ID=p_M_Warehouse_ID; --- COMMIT; - - -- Insert Products - v_ResultStr := 'InsertStockedProducts'; - INSERT INTO T_InventoryValue - (AD_Client_ID,AD_Org_ID, AD_PInstance_ID, M_Warehouse_ID,M_Product_ID) - SELECT AD_Client_ID,AD_Org_ID, p_PInstance_ID, p_M_Warehouse_ID,M_Product_ID - FROM M_Product - WHERE IsStocked='Y'; - -- - IF (SQL%ROWCOUNT = 0) THEN - v_Message := '@Created@ = 0'; - GOTO FINISH_PROCESS; - END IF; - - -- Update Constants - v_ResultStr := 'UpdateConstants'; - UPDATE T_InventoryValue - SET DateValue = TRUNC(p_DateValue) + 0.9993, - M_PriceList_Version_ID = p_M_PriceList_Version_ID, - C_Currency_ID = p_C_Currency_ID - WHERE M_Warehouse_ID = p_M_Warehouse_ID; - - -- Get current QtyOnHand - v_ResultStr := 'GetQtyOnHand'; - UPDATE T_InventoryValue iv - SET QtyOnHand = (SELECT SUM(QtyOnHand) FROM M_Storage s, M_Locator l - WHERE iv.M_Product_ID=s.M_Product_ID - AND l.M_Locator_ID=s.M_Locator_ID - AND l.M_Warehouse_ID=iv.M_Warehouse_ID) - WHERE iv.M_Warehouse_ID = p_M_Warehouse_ID; - - -- Adjust for Valuation Date - v_ResultStr := 'AdjustQtyOnHand'; - UPDATE T_InventoryValue iv - SET QtyOnHand = - (SELECT iv.QtyOnHand - NVL(SUM(t.MovementQty), 0) - FROM M_Transaction t, M_Locator l - WHERE t.M_Product_ID=iv.M_Product_ID - -- AND t.M_AttributeSetInstance_ID=iv.M_AttributeSetInstance_ID - AND t.MovementDate > iv.DateValue - AND t.M_Locator_ID=l.M_Locator_ID - AND l.M_Warehouse_ID=iv.M_Warehouse_ID) - WHERE iv.M_Warehouse_ID = p_M_Warehouse_ID; - - -- Delete Records w/o OnHand Qty - v_ResultStr := 'DeleteZeroQtyOnHand'; - DELETE T_InventoryValue - WHERE QtyOnHand=0 - OR QtyOnHand IS NULL; - - -- Update Prices - v_ResultStr := 'GetPrices'; - UPDATE T_InventoryValue iv - SET PricePO = - (SELECT currencyConvert (po.PriceList,po.C_Currency_ID,iv.C_Currency_ID,iv.DateValue, null, iv.AD_Client_ID, iv.AD_Org_ID) - FROM M_Product_PO po WHERE po.M_Product_ID=iv.M_Product_ID - AND po.IsCurrentVendor='Y' AND RowNum=1), - PriceList = - (SELECT currencyConvert(pp.PriceList,pl.C_Currency_ID,iv.C_Currency_ID,iv.DateValue, null, iv.AD_Client_ID, iv.AD_Org_ID) - FROM M_PriceList pl, M_PriceList_Version plv, M_ProductPrice pp - WHERE pp.M_Product_ID=iv.M_Product_ID AND pp.M_PriceList_Version_ID=iv.M_PriceList_Version_ID - AND pp.M_PriceList_Version_ID=plv.M_PriceList_Version_ID - AND plv.M_PriceList_ID=pl.M_PriceList_ID), - PriceStd = - (SELECT currencyConvert(pp.PriceStd,pl.C_Currency_ID,iv.C_Currency_ID,iv.DateValue, null, iv.AD_Client_ID, iv.AD_Org_ID) - FROM M_PriceList pl, M_PriceList_Version plv, M_ProductPrice pp - WHERE pp.M_Product_ID=iv.M_Product_ID AND pp.M_PriceList_Version_ID=iv.M_PriceList_Version_ID - AND pp.M_PriceList_Version_ID=plv.M_PriceList_Version_ID - AND plv.M_PriceList_ID=pl.M_PriceList_ID), - PriceLimit = - (SELECT currencyConvert(pp.PriceLimit,pl.C_Currency_ID,iv.C_Currency_ID,iv.DateValue, null, iv.AD_Client_ID, iv.AD_Org_ID) - FROM M_PriceList pl, M_PriceList_Version plv, M_ProductPrice pp - WHERE pp.M_Product_ID=iv.M_Product_ID AND pp.M_PriceList_Version_ID=iv.M_PriceList_Version_ID - AND pp.M_PriceList_Version_ID=plv.M_PriceList_Version_ID - AND plv.M_PriceList_ID=pl.M_PriceList_ID), - CostStandard = - (SELECT currencyConvert(pc.CurrentCostPrice,acs.C_Currency_ID,iv.C_Currency_ID,iv.DateValue, null, iv.AD_Client_ID, iv.AD_Org_ID) - FROM AD_ClientInfo ci, C_AcctSchema acs, M_Product_Costing pc - WHERE iv.AD_Client_ID=ci.AD_Client_ID AND ci.C_AcctSchema1_ID=acs.C_AcctSchema_ID - AND acs.C_AcctSchema_ID=pc.C_AcctSchema_ID - AND iv.M_Product_ID=pc.M_Product_ID) - WHERE iv.M_Warehouse_ID = p_M_Warehouse_ID; - - -- Update Values - v_ResultStr := 'UpdateValue'; - UPDATE T_InventoryValue - SET PricePOAmt = QtyOnHand * PricePO, - PriceListAmt = QtyOnHand * PriceList, - PriceStdAmt = QtyOnHand * PriceStd, - PriceLimitAmt = QtyOnHand * PriceLimit, - CostStandardAmt = QtyOnHand * CostStandard - WHERE M_Warehouse_ID = p_M_Warehouse_ID; - - v_Message := '@Created@ = ' || SQL%ROWCOUNT; - - -<> - -- Update AD_PInstance - DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || v_Message); - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = v_Result, -- 1=success - ErrorMsg = v_Message - WHERE AD_PInstance_ID=p_PInstance_ID; - COMMIT; - RETURN; - -EXCEPTION - WHEN OTHERS THEN - v_ResultStr := v_ResultStr || ': ' || SQLERRM || ' - ' || v_Message; - DBMS_OUTPUT.PUT_LINE(v_ResultStr); - ROLLBACK; - UPDATE AD_PInstance - SET Updated = SysDate, - IsProcessing = 'N', - Result = 0, -- failure - ErrorMsg = v_ResultStr - WHERE AD_PInstance_ID=p_PInstance_ID; - COMMIT; - RETURN; - -END T_InventoryValue_Create; -/ diff --git a/db/database/Procedures/nextID.sql b/db/database/Procedures/nextID.sql deleted file mode 100644 index 2d23db2471..0000000000 --- a/db/database/Procedures/nextID.sql +++ /dev/null @@ -1,55 +0,0 @@ -CREATE OR REPLACE PROCEDURE nextID -( - p_AD_Sequence_ID IN NUMBER, - p_System IN CHAR, - o_NextID OUT NUMBER -) -/************************************************************************* - * 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-2005 Jorg Janke, ComPiere, Inc. All Rights Reserved. - ************************************************************************* - * $Id: nextID.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $ - *** - * Title: Get Next ID - no Commit - * Description: - * Test via -DECLARE - v_NextID NUMBER; -BEGIN - nextID(2, 'Y', v_NextID); - DBMS_OUTPUT.PUT_LINE(v_NextID); -END; - * - ************************************************************************/ -AS -BEGIN - IF (p_System = 'Y') THEN - SELECT CurrentNextSys - INTO o_NextID - FROM AD_Sequence - WHERE AD_Sequence_ID=p_AD_Sequence_ID - FOR UPDATE OF CurrentNextSys; - -- - UPDATE AD_Sequence - SET CurrentNextSys = CurrentNextSys + IncrementNo - WHERE AD_Sequence_ID=p_AD_Sequence_ID; - ELSE - SELECT CurrentNext - INTO o_NextID - FROM AD_Sequence - WHERE AD_Sequence_ID=p_AD_Sequence_ID - FOR UPDATE OF CurrentNext; - -- - UPDATE AD_Sequence - SET CurrentNext = CurrentNext + IncrementNo - WHERE AD_Sequence_ID=p_AD_Sequence_ID; - END IF; - -- -EXCEPTION - WHEN OTHERS THEN - DBMS_OUTPUT.PUT_LINE(SQLERRM); -END nextID; -/