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 Compiere License. You may * obtain a copy of the License at http://www.compiere.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: Compiere 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 AND b.M_ProductBOM_ID != Product_ID AND b.IsActive='Y'; -- 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; / 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 Compiere License. You may * obtain a copy of the License at http://www.compiere.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: Compiere 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 AND b.M_ProductBOM_ID != Product_ID AND b.IsActive='Y'; -- 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; / 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 Compiere License. You may * obtain a copy of the License at http://www.compiere.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: Compiere 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 AND b.M_ProductBOM_ID != Product_ID AND b.IsActive='Y'; -- 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; / SELECT register_migration_script('201505201243_IDEMPIERE-2625.sql') FROM dual ;