merge IDEMPIERE-215
This commit is contained in:
commit
b4bdf57cd6
|
@ -1,38 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database">
|
|
||||||
<database name="default" defaultIdMethod="none">
|
|
||||||
<table name="M_PRODUCT_COSTING">
|
|
||||||
<column name="M_PRODUCT_ID" primaryKey="true" required="true" type="ID" size="10" autoIncrement="false"/>
|
|
||||||
<column name="C_ACCTSCHEMA_ID" primaryKey="true" required="true" type="ID" size="10" autoIncrement="false"/>
|
|
||||||
<column name="AD_CLIENT_ID" primaryKey="false" required="true" type="ID" size="10" autoIncrement="false"/>
|
|
||||||
<column name="AD_ORG_ID" primaryKey="false" required="true" type="ID" size="10" autoIncrement="false"/>
|
|
||||||
<column name="ISACTIVE" primaryKey="false" required="true" type="CHAR" size="1" default="Y" autoIncrement="false"/>
|
|
||||||
<column name="CREATED" primaryKey="false" required="true" type="TIMESTAMP" size="7" default="CURRENT_TIMESTAMP" autoIncrement="false"/>
|
|
||||||
<column name="CREATEDBY" primaryKey="false" required="true" type="ID" size="10" autoIncrement="false"/>
|
|
||||||
<column name="UPDATED" primaryKey="false" required="true" type="TIMESTAMP" size="7" default="CURRENT_TIMESTAMP" autoIncrement="false"/>
|
|
||||||
<column name="UPDATEDBY" primaryKey="false" required="true" type="ID" size="10" autoIncrement="false"/>
|
|
||||||
<column name="CURRENTCOSTPRICE" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="FUTURECOSTPRICE" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="COSTSTANDARD" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="COSTSTANDARDPOQTY" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="COSTSTANDARDPOAMT" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="COSTSTANDARDCUMQTY" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="COSTSTANDARDCUMAMT" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="COSTAVERAGE" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="COSTAVERAGECUMQTY" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="COSTAVERAGECUMAMT" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="PRICELASTPO" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="PRICELASTINV" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="TOTALINVQTY" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<column name="TOTALINVAMT" primaryKey="false" required="true" type="DECIMAL" default="0" autoIncrement="false"/>
|
|
||||||
<foreign-key foreignTable="C_ACCTSCHEMA" name="CACCTSCHEMA_MPRODUCTCOSTING" onDelete="cascade">
|
|
||||||
<reference local="C_ACCTSCHEMA_ID" foreign="C_ACCTSCHEMA_ID"/>
|
|
||||||
</foreign-key>
|
|
||||||
<foreign-key foreignTable="M_PRODUCT" name="MPRODUCT_MPRODUCTCOSTING" onDelete="cascade">
|
|
||||||
<reference local="M_PRODUCT_ID" foreign="M_PRODUCT_ID"/>
|
|
||||||
</foreign-key>
|
|
||||||
<check>
|
|
||||||
<rule><![CDATA[IsActive in ('Y','N')]]></rule>
|
|
||||||
</check>
|
|
||||||
</table>
|
|
||||||
</database>
|
|
|
@ -1,29 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW RV_PRODUCT_COSTING
|
|
||||||
(M_PRODUCT_ID, C_ACCTSCHEMA_ID, VALUE, NAME, M_PRODUCT_CATEGORY_ID,
|
|
||||||
AD_CLIENT_ID, AD_ORG_ID, ISACTIVE, CREATED, CREATEDBY,
|
|
||||||
UPDATED, UPDATEDBY, CURRENTCOSTPRICE, FUTURECOSTPRICE, COSTSTANDARD,
|
|
||||||
COSTSTANDARDPOQTY, COSTSTANDARDPOAMT, COSTSTANDARDPODIFF, COSTSTANDARDCUMQTY, COSTSTANDARDCUMAMT,
|
|
||||||
COSTSTANDARDINVDIFF, COSTAVERAGE, COSTAVERAGECUMQTY, COSTAVERAGECUMAMT, TOTALINVQTY,
|
|
||||||
TOTALINVAMT, TOTALINVCOST, PRICELASTPO, PRICELASTINV)
|
|
||||||
AS
|
|
||||||
SELECT pc.M_Product_ID, pc.C_AcctSchema_ID, p.Value, p.Name, p.M_Product_Category_ID,
|
|
||||||
pc.AD_Client_ID, pc.AD_Org_ID, pc.IsActive, pc.Created,pc.CreatedBy,pc.Updated,pc.UpdatedBy,
|
|
||||||
pc.CurrentCostPrice,
|
|
||||||
-- Standard Costing
|
|
||||||
pc.FutureCostPrice, pc.CostStandard,
|
|
||||||
pc.CostStandardPOQty, pc.CostStandardPOAmt,
|
|
||||||
CASE WHEN pc.CostStandardPOQty=0 THEN 0 ELSE pc.CostStandardPOAmt/pc.CostStandardPOQty END AS CostStandardPODiff,
|
|
||||||
pc.CostStandardCumQty, pc.CostStandardCumAmt,
|
|
||||||
CASE WHEN pc.CostStandardCumQty=0 THEN 0 ELSE pc.CostStandardCumAmt/pc.CostStandardCumQty END AS CostStandardInvDiff,
|
|
||||||
-- Average Costing
|
|
||||||
pc.CostAverage,
|
|
||||||
pc.CostAverageCumQty, pc.CostAverageCumAmt,
|
|
||||||
pc.TotalInvQty, pc.TotalInvAmt,
|
|
||||||
CASE WHEN pc.TotalInvQty=0 THEN 0 ELSE pc.TotalInvAmt/pc.TotalInvQty END AS TotalInvCost,
|
|
||||||
-- LastPrice
|
|
||||||
pc.PriceLastPO, pc.PriceLastInv
|
|
||||||
FROM M_Product_Costing pc
|
|
||||||
INNER JOIN M_Product p ON (pc.M_Product_ID=p.M_Product_ID);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW RV_PRODUCT_COSTING
|
|
||||||
(M_PRODUCT_ID, C_ACCTSCHEMA_ID, VALUE, NAME, M_PRODUCT_CATEGORY_ID,
|
|
||||||
AD_CLIENT_ID, AD_ORG_ID, ISACTIVE, CREATED, CREATEDBY,
|
|
||||||
UPDATED, UPDATEDBY, CURRENTCOSTPRICE, FUTURECOSTPRICE, COSTSTANDARD,
|
|
||||||
COSTSTANDARDPOQTY, COSTSTANDARDPOAMT, COSTSTANDARDPODIFF, COSTSTANDARDCUMQTY, COSTSTANDARDCUMAMT,
|
|
||||||
COSTSTANDARDINVDIFF, COSTAVERAGE, COSTAVERAGECUMQTY, COSTAVERAGECUMAMT, TOTALINVQTY,
|
|
||||||
TOTALINVAMT, TOTALINVCOST, PRICELASTPO, PRICELASTINV)
|
|
||||||
AS
|
|
||||||
SELECT pc.M_Product_ID, pc.C_AcctSchema_ID, p.Value, p.Name, p.M_Product_Category_ID,
|
|
||||||
pc.AD_Client_ID, pc.AD_Org_ID, pc.IsActive, pc.Created,pc.CreatedBy,pc.Updated,pc.UpdatedBy,
|
|
||||||
pc.CurrentCostPrice,
|
|
||||||
-- Standard Costing
|
|
||||||
pc.FutureCostPrice, pc.CostStandard,
|
|
||||||
pc.CostStandardPOQty, pc.CostStandardPOAmt,
|
|
||||||
CASE WHEN pc.CostStandardPOQty=0 THEN 0 ELSE pc.CostStandardPOAmt/pc.CostStandardPOQty END AS CostStandardPODiff,
|
|
||||||
pc.CostStandardCumQty, pc.CostStandardCumAmt,
|
|
||||||
CASE WHEN pc.CostStandardCumQty=0 THEN 0 ELSE pc.CostStandardCumAmt/pc.CostStandardCumQty END AS CostStandardInvDiff,
|
|
||||||
-- Average Costing
|
|
||||||
pc.CostAverage,
|
|
||||||
pc.CostAverageCumQty, pc.CostAverageCumAmt,
|
|
||||||
pc.TotalInvQty, pc.TotalInvAmt,
|
|
||||||
CASE WHEN pc.TotalInvQty=0 THEN 0 ELSE pc.TotalInvAmt/pc.TotalInvQty END AS TotalInvCost,
|
|
||||||
-- LastPrice
|
|
||||||
pc.PriceLastPO, pc.PriceLastInv
|
|
||||||
FROM M_Product_Costing pc
|
|
||||||
INNER JOIN M_Product p ON (pc.M_Product_ID=p.M_Product_ID);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
-- Apr 4, 2012 10:57:20 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Tab_Trl WHERE AD_Tab_ID=254
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 10:57:20 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Tab WHERE AD_Tab_ID=254
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 10:58:04 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Table_Trl WHERE AD_Table_ID=327
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 10:58:04 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Table WHERE AD_Table_ID=327
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:00:31 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_ReportView WHERE AD_ReportView_ID=125
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:34 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Menu_Trl WHERE AD_Menu_ID=314
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:34 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Menu WHERE AD_Menu_ID=314
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:34 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_TreeNodeMM n WHERE Node_ID=314 AND EXISTS (SELECT * FROM AD_Tree t WHERE t.AD_Tree_ID=n.AD_Tree_ID AND t.TreeType='MM')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:48 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Process_Trl WHERE AD_Process_ID=183
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:48 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Process WHERE AD_Process_ID=183
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:55 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_ReportView WHERE AD_ReportView_ID=125
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:05:21 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Table_Trl WHERE AD_Table_ID=479
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:05:22 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Table WHERE AD_Table_ID=479
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:05:22 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DROP VIEW RV_Product_Costing;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:05:22 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DROP TABLE M_Product_Costing;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:05:22 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
UPDATE AD_System
|
||||||
|
SET LastMigrationScriptApplied='830_IDEMPIERE-215.sql'
|
||||||
|
WHERE LastMigrationScriptApplied<'830_IDEMPIERE-215.sql'
|
||||||
|
OR LastMigrationScriptApplied IS NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
-- Apr 4, 2012 10:57:20 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Tab_Trl WHERE AD_Tab_ID=254
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 10:57:20 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Tab WHERE AD_Tab_ID=254
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 10:58:04 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Table_Trl WHERE AD_Table_ID=327
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 10:58:04 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Table WHERE AD_Table_ID=327
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:34 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Menu_Trl WHERE AD_Menu_ID=314
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:34 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Menu WHERE AD_Menu_ID=314
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:34 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_TreeNodeMM WHERE Node_ID=314 AND EXISTS (SELECT * FROM AD_Tree t WHERE t.AD_Tree_ID=AD_TreeNodeMM.AD_Tree_ID AND t.TreeType='MM')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:48 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Process_Trl WHERE AD_Process_ID=183
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:48 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Process WHERE AD_Process_ID=183
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:04:55 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_ReportView WHERE AD_ReportView_ID=125
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:05:21 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Table_Trl WHERE AD_Table_ID=479
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:05:22 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DELETE FROM AD_Table WHERE AD_Table_ID=479
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:05:22 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DROP VIEW RV_Product_Costing;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:05:22 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
DROP TABLE M_Product_Costing;
|
||||||
|
|
||||||
|
-- Apr 4, 2012 11:05:22 AM MYT
|
||||||
|
-- IDEMPIERE-215 Costing: Remove M_Product_Costing
|
||||||
|
UPDATE AD_System
|
||||||
|
SET LastMigrationScriptApplied='830_IDEMPIERE-215.sql'
|
||||||
|
WHERE LastMigrationScriptApplied<'830_IDEMPIERE-215.sql'
|
||||||
|
OR LastMigrationScriptApplied IS NULL
|
||||||
|
;
|
||||||
|
|
|
@ -60,7 +60,6 @@ public class CostUpdate extends SvrProcess
|
||||||
private static final String TO_FutureStandardCost = "f";
|
private static final String TO_FutureStandardCost = "f";
|
||||||
private static final String TO_LastInvoicePrice = "i";
|
private static final String TO_LastInvoicePrice = "i";
|
||||||
private static final String TO_LastPOPrice = "p";
|
private static final String TO_LastPOPrice = "p";
|
||||||
private static final String TO_OldStandardCost = "x";
|
|
||||||
|
|
||||||
/** Standard Cost Element */
|
/** Standard Cost Element */
|
||||||
private MCostElement m_ce = null;
|
private MCostElement m_ce = null;
|
||||||
|
@ -464,10 +463,6 @@ public class CostUpdate extends SvrProcess
|
||||||
retValue = xCost.getCurrentCostPrice();
|
retValue = xCost.getCurrentCostPrice();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Old Std Costs
|
|
||||||
else if (to.equals(TO_OldStandardCost))
|
|
||||||
retValue = getOldCurrentCostPrice(cost);
|
|
||||||
|
|
||||||
// Price List
|
// Price List
|
||||||
else if (to.equals(TO_PriceListLimit))
|
else if (to.equals(TO_PriceListLimit))
|
||||||
retValue = getPrice(cost);
|
retValue = getPrice(cost);
|
||||||
|
@ -496,51 +491,6 @@ public class CostUpdate extends SvrProcess
|
||||||
return ce;
|
return ce;
|
||||||
} // getCostElement
|
} // getCostElement
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Old Current Cost Price
|
|
||||||
* @param cost costs
|
|
||||||
* @return price if found
|
|
||||||
*/
|
|
||||||
private BigDecimal getOldCurrentCostPrice(MCost cost)
|
|
||||||
{
|
|
||||||
BigDecimal retValue = null;
|
|
||||||
String sql = "SELECT CostStandard, CurrentCostPrice "
|
|
||||||
+ "FROM M_Product_Costing "
|
|
||||||
+ "WHERE M_Product_ID=? AND C_AcctSchema_ID=?";
|
|
||||||
PreparedStatement pstmt = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
pstmt = DB.prepareStatement (sql, null);
|
|
||||||
pstmt.setInt (1, cost.getM_Product_ID());
|
|
||||||
pstmt.setInt (2, cost.getC_AcctSchema_ID());
|
|
||||||
ResultSet rs = pstmt.executeQuery ();
|
|
||||||
if (rs.next ())
|
|
||||||
{
|
|
||||||
retValue = rs.getBigDecimal(1);
|
|
||||||
if (retValue == null || retValue.signum() == 0)
|
|
||||||
retValue = rs.getBigDecimal(2);
|
|
||||||
}
|
|
||||||
rs.close ();
|
|
||||||
pstmt.close ();
|
|
||||||
pstmt = null;
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
log.log (Level.SEVERE, sql, e);
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (pstmt != null)
|
|
||||||
pstmt.close ();
|
|
||||||
pstmt = null;
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
pstmt = null;
|
|
||||||
}
|
|
||||||
return retValue;
|
|
||||||
} // getOldCurrentCostPrice
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Price from Price List
|
* Get Price from Price List
|
||||||
* @param cost cost record
|
* @param cost cost record
|
||||||
|
|
|
@ -1,293 +0,0 @@
|
||||||
/******************************************************************************
|
|
||||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
|
||||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
|
||||||
* This program is free software; you can redistribute it and/or modify it *
|
|
||||||
* under the terms version 2 of the GNU General Public License as published *
|
|
||||||
* by the Free Software Foundation. This program is distributed in the hope *
|
|
||||||
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
|
|
||||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
|
||||||
* See the GNU General Public License for more details. *
|
|
||||||
* You should have received a copy of the GNU General Public License along *
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc., *
|
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
|
||||||
* For the text or an alternative of this public license, you may reach us *
|
|
||||||
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
|
||||||
* or via info@compiere.org or http://www.compiere.org/license.html *
|
|
||||||
* Portions created by Carlos Ruiz are Copyright (C) 2005 QSS Ltda.
|
|
||||||
* Contributor(s): Carlos Ruiz (globalqss)
|
|
||||||
*****************************************************************************/
|
|
||||||
package org.compiere.process;
|
|
||||||
|
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
|
|
||||||
import org.compiere.util.AdempiereUserError;
|
|
||||||
import org.compiere.util.CLogger;
|
|
||||||
import org.compiere.util.DB;
|
|
||||||
import org.compiere.util.ValueNamePair;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Title: Create the (new) costing information
|
|
||||||
* Description:
|
|
||||||
* - (optionally) update FutureCostPrice according to Parameter
|
|
||||||
* - (optionally) set CostStandard to FutureCostPrice
|
|
||||||
* - set CurrentCostPrice to cost depending on primary AcctSchema
|
|
||||||
*
|
|
||||||
* @author Carlos Ruiz (globalqss)
|
|
||||||
* @version $Id: M_Product_CostingUpdate.java,v 1.0 2005/09/26 22:28:00 globalqss Exp $
|
|
||||||
*/
|
|
||||||
public class M_Product_CostingUpdate extends SvrProcess
|
|
||||||
{
|
|
||||||
|
|
||||||
/** The Record */
|
|
||||||
private int p_Record_ID = 0;
|
|
||||||
private int p_AD_Client_ID = -1;
|
|
||||||
private int p_M_Product_Category_ID = -1;
|
|
||||||
private String p_SetFutureCostTo;
|
|
||||||
private int p_M_PriceList_Version_ID = -1;
|
|
||||||
private String p_SetStandardCost;
|
|
||||||
private String v_CostingMethod;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepare - e.g., get Parameters.
|
|
||||||
*/
|
|
||||||
protected void prepare()
|
|
||||||
{
|
|
||||||
ProcessInfoParameter[] para = getParameter();
|
|
||||||
for (int i = 0; i < para.length; i++)
|
|
||||||
{
|
|
||||||
String name = para[i].getParameterName();
|
|
||||||
if (para[i].getParameter() == null)
|
|
||||||
;
|
|
||||||
else if (name.equals("AD_Client_ID"))
|
|
||||||
p_AD_Client_ID = para[i].getParameterAsInt();
|
|
||||||
else if (name.equals("M_Product_Category_ID"))
|
|
||||||
p_M_Product_Category_ID = para[i].getParameterAsInt();
|
|
||||||
else if (name.equals("SetFutureCostTo"))
|
|
||||||
p_SetFutureCostTo = (String) para[i].getParameter();
|
|
||||||
else if (name.equals("M_PriceList_Version_ID"))
|
|
||||||
p_M_PriceList_Version_ID = para[i].getParameterAsInt();
|
|
||||||
else if (name.equals("SetStandardCost"))
|
|
||||||
p_SetStandardCost = (String) para[i].getParameter();
|
|
||||||
else
|
|
||||||
log.log(Level.SEVERE, "Unknown Parameter: " + name);
|
|
||||||
}
|
|
||||||
p_Record_ID = getRecord_ID();
|
|
||||||
} // prepare
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Process
|
|
||||||
* @return message
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
protected String doIt() throws Exception
|
|
||||||
{
|
|
||||||
StringBuffer sql = null;
|
|
||||||
int no = 0;
|
|
||||||
int no1 = 0;
|
|
||||||
int no2 = 0;
|
|
||||||
|
|
||||||
log.info("Create the (new) costing information");
|
|
||||||
|
|
||||||
// ========== (1) Set Future Cost To ==========
|
|
||||||
|
|
||||||
if (p_SetFutureCostTo.equals("S")) {
|
|
||||||
// S - Standard Cost
|
|
||||||
log.info("Set to Standard Cost");
|
|
||||||
sql = new StringBuffer(
|
|
||||||
"UPDATE M_Product_Costing " +
|
|
||||||
"SET FutureCostPrice = CostStandard " +
|
|
||||||
"WHERE AD_Client_ID=" + p_AD_Client_ID + " AND " +
|
|
||||||
"("+ p_M_Product_Category_ID + " = -1 OR " +
|
|
||||||
"EXISTS (SELECT * FROM M_Product p " +
|
|
||||||
"WHERE p.M_Product_Category_ID= " + p_M_Product_Category_ID + " " +
|
|
||||||
"AND p.M_Product_ID=M_Product_Costing.M_Product_ID))");
|
|
||||||
no = DB.executeUpdate(sql.toString(), get_TrxName());
|
|
||||||
if (no == -1) raiseError("Set to Standard Cost:ERROR", sql.toString());
|
|
||||||
|
|
||||||
} else if (p_SetFutureCostTo.equals("DP")) {
|
|
||||||
// DP - Difference PO
|
|
||||||
log.info("Set to Difference PO");
|
|
||||||
sql = new StringBuffer(
|
|
||||||
"UPDATE M_Product_Costing " +
|
|
||||||
"SET FutureCostPrice = CostStandard + (CostStandardPOAmt/CostStandardPOQty) " +
|
|
||||||
"WHERE CostStandardPOQty <> 0 AND " +
|
|
||||||
"CostStandardPOAmt <> 0 AND " +
|
|
||||||
"AD_Client_ID="+p_AD_Client_ID+" AND " +
|
|
||||||
"("+ p_M_Product_Category_ID + " = -1 OR " +
|
|
||||||
"EXISTS (SELECT * FROM M_Product p " +
|
|
||||||
"WHERE p.M_Product_Category_ID="+p_M_Product_Category_ID+" AND " +
|
|
||||||
"p.M_Product_ID=M_Product_Costing.M_Product_ID))");
|
|
||||||
no = DB.executeUpdate(sql.toString(), get_TrxName());
|
|
||||||
if (no == -1) raiseError("Set to Difference PO:ERROR", sql.toString());
|
|
||||||
|
|
||||||
} else if (p_SetFutureCostTo.equals("DI")) {
|
|
||||||
// DI - Difference Invoice
|
|
||||||
log.info("Set to Difference Inv");
|
|
||||||
sql = new StringBuffer(
|
|
||||||
"UPDATE M_Product_Costing " +
|
|
||||||
"SET FutureCostPrice = CostStandard + (CostStandardCumAmt/CostStandardCumQty) " +
|
|
||||||
"WHERE CostStandardCumQty <> 0 AND " +
|
|
||||||
"CostStandardCumAmt <> 0 AND " +
|
|
||||||
"AD_Client_ID="+p_AD_Client_ID+" AND " +
|
|
||||||
"("+ p_M_Product_Category_ID + " = -1 OR " +
|
|
||||||
"EXISTS (SELECT * FROM M_Product p " +
|
|
||||||
"WHERE p.M_Product_Category_ID="+p_M_Product_Category_ID+" AND " +
|
|
||||||
"p.M_Product_ID=M_Product_Costing.M_Product_ID))");
|
|
||||||
no = DB.executeUpdate(sql.toString(), get_TrxName());
|
|
||||||
if (no == -1) raiseError("Set to Difference Inv:ERROR", sql.toString());
|
|
||||||
|
|
||||||
} else if (p_SetFutureCostTo.equals("P")) {
|
|
||||||
// P - Last PO Price
|
|
||||||
log.info("Set to PO Price");
|
|
||||||
sql = new StringBuffer(
|
|
||||||
"UPDATE M_Product_Costing " +
|
|
||||||
"SET FutureCostPrice = PriceLastPO " +
|
|
||||||
"WHERE PriceLastPO <> 0 AND " +
|
|
||||||
"AD_Client_ID="+p_AD_Client_ID+" AND " +
|
|
||||||
"("+ p_M_Product_Category_ID + " = -1 OR " +
|
|
||||||
"EXISTS (SELECT * FROM M_Product p " +
|
|
||||||
"WHERE p.M_Product_Category_ID="+p_M_Product_Category_ID+" AND " +
|
|
||||||
"p.M_Product_ID=M_Product_Costing.M_Product_ID))");
|
|
||||||
no = DB.executeUpdate(sql.toString(), get_TrxName());
|
|
||||||
if (no == -1) raiseError("Set to PO Price:ERROR", sql.toString());
|
|
||||||
|
|
||||||
} else if (p_SetFutureCostTo.equals("I")) {
|
|
||||||
// L - Last Inv Price
|
|
||||||
log.info("Set to Inv Price");
|
|
||||||
sql = new StringBuffer(
|
|
||||||
"UPDATE M_Product_Costing " +
|
|
||||||
"SET FutureCostPrice = PriceLastInv " +
|
|
||||||
"WHERE PriceLastInv <> 0 AND " +
|
|
||||||
"AD_Client_ID="+p_AD_Client_ID+" AND " +
|
|
||||||
"("+ p_M_Product_Category_ID + " = -1 OR " +
|
|
||||||
"EXISTS (SELECT * FROM M_Product p " +
|
|
||||||
"WHERE p.M_Product_Category_ID="+p_M_Product_Category_ID+" AND " +
|
|
||||||
"p.M_Product_ID=M_Product_Costing.M_Product_ID))");
|
|
||||||
no = DB.executeUpdate(sql.toString(), get_TrxName());
|
|
||||||
if (no == -1) raiseError("Set to Inv Price:ERROR", sql.toString());
|
|
||||||
|
|
||||||
} else if (p_SetFutureCostTo.equals("A")) {
|
|
||||||
// A - Average Cost
|
|
||||||
log.info("Set to Average Cost");
|
|
||||||
sql = new StringBuffer(
|
|
||||||
"UPDATE M_Product_Costing " +
|
|
||||||
"SET FutureCostPrice = CostAverage " +
|
|
||||||
"WHERE CostAverage <> 0 AND " +
|
|
||||||
"AD_Client_ID="+p_AD_Client_ID+" AND " +
|
|
||||||
"("+ p_M_Product_Category_ID + " = -1 OR " +
|
|
||||||
"EXISTS (SELECT * FROM M_Product p " +
|
|
||||||
"WHERE p.M_Product_Category_ID="+p_M_Product_Category_ID+" AND " +
|
|
||||||
"p.M_Product_ID=M_Product_Costing.M_Product_ID))");
|
|
||||||
no = DB.executeUpdate(sql.toString(), get_TrxName());
|
|
||||||
if (no == -1) raiseError("Set to Average Cost:ERROR", sql.toString());
|
|
||||||
|
|
||||||
} else if (p_SetFutureCostTo.equals("LL") && p_M_PriceList_Version_ID > 0) {
|
|
||||||
// A - Average Cost
|
|
||||||
log.info("Set to PriceList " + p_M_PriceList_Version_ID);
|
|
||||||
sql = new StringBuffer(
|
|
||||||
"UPDATE M_Product_Costing " +
|
|
||||||
"SET FutureCostPrice = " +
|
|
||||||
"(SELECT pp.PriceLimit " +
|
|
||||||
"FROM M_ProductPrice pp " +
|
|
||||||
"WHERE pp.M_PriceList_Version_ID="+p_M_PriceList_Version_ID+" AND " +
|
|
||||||
"pp.M_Product_ID=M_Product_Costing.M_Product_ID)" +
|
|
||||||
/** SET FutureCostPrice = C_Currency_Convert (
|
|
||||||
-- Amount
|
|
||||||
(SELECT pp.PriceLimit FROM M_ProductPrice pp
|
|
||||||
WHERE pp.M_PriceList_Version_ID=11
|
|
||||||
AND pp.M_Product_ID=M_Product_Costing.M_Product_ID),
|
|
||||||
-- Cur From
|
|
||||||
(SELECT C_Currency_ID FROM M_PriceList pl, M_PriceList_Version pv
|
|
||||||
WHERE pv.M_PriceList_ID=pl.M_PriceList_ID
|
|
||||||
AND pv.M_PriceList_Version_ID=11),
|
|
||||||
-- Cur To
|
|
||||||
(SELECT a.C_Currency_ID FROM C_AcctSchema a WHERE a.C_AcctSchema_ID=M_Product_Costing.C_AcctSchema_ID))
|
|
||||||
**/
|
|
||||||
"WHERE AD_Client_ID="+p_AD_Client_ID+ " " +
|
|
||||||
// we have a price
|
|
||||||
"AND EXISTS (SELECT * FROM M_ProductPrice pp " +
|
|
||||||
"WHERE pp.M_PriceList_Version_ID="+p_M_PriceList_Version_ID+" " +
|
|
||||||
"AND pp.M_Product_ID=M_Product_Costing.M_Product_ID) " +
|
|
||||||
// and the same currency
|
|
||||||
"AND EXISTS (SELECT * FROM C_AcctSchema a, M_PriceList pl, M_PriceList_Version pv " +
|
|
||||||
"WHERE a.C_AcctSchema_ID=M_Product_CostingUpdate.C_AcctSchema_ID " +
|
|
||||||
"AND pv.M_PriceList_Version_ID="+p_M_PriceList_Version_ID+" " +
|
|
||||||
"AND pv.M_PriceList_ID=pl.M_PriceList_ID " +
|
|
||||||
"AND pl.C_Currency_ID=a.C_Currency_ID) " +
|
|
||||||
"AND ("+p_M_Product_Category_ID+" = -1 OR " +
|
|
||||||
"EXISTS (SELECT * FROM M_Product p " +
|
|
||||||
"WHERE p.M_Product_Category_ID="+p_M_Product_Category_ID+" " +
|
|
||||||
"AND p.M_Product_ID=M_Product_Costing.M_Product_ID))");
|
|
||||||
no = DB.executeUpdate(sql.toString(), get_TrxName());
|
|
||||||
if (no == -1) raiseError("Set to Average Cost:ERROR", sql.toString());
|
|
||||||
|
|
||||||
} else {
|
|
||||||
log.info("SetFutureCostTo=" + p_SetFutureCostTo + " ?");
|
|
||||||
|
|
||||||
}
|
|
||||||
log.info(" - Updated: " + no);
|
|
||||||
|
|
||||||
// ========== (2) SetStandardCost ==========
|
|
||||||
if (p_SetStandardCost.equals("Y")) {
|
|
||||||
// A - Average Cost
|
|
||||||
log.info("Set Standard Cost");
|
|
||||||
sql = new StringBuffer(
|
|
||||||
"UPDATE M_Product_Costing " +
|
|
||||||
"SET CostStandard = FutureCostPrice " +
|
|
||||||
"WHERE AD_Client_ID="+ p_AD_Client_ID + " AND " +
|
|
||||||
"(" + p_M_Product_Category_ID + " = -1 OR " +
|
|
||||||
"EXISTS (SELECT * FROM M_Product p " +
|
|
||||||
"WHERE p.M_Product_Category_ID="+p_M_Product_Category_ID+ " AND " +
|
|
||||||
"p.M_Product_ID=M_Product_Costing.M_Product_ID))");
|
|
||||||
no1 = DB.executeUpdate(sql.toString(), get_TrxName());
|
|
||||||
if (no1 == -1) raiseError("Set Standard Cost", sql.toString());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// ========== (3) Update CurrentCostPrice depending on Costing Method ==========
|
|
||||||
try
|
|
||||||
{
|
|
||||||
PreparedStatement pstmt = DB.prepareStatement
|
|
||||||
("SELECT a.CostingMethod " +
|
|
||||||
"FROM C_AcctSchema a, AD_ClientInfo ci " +
|
|
||||||
"WHERE a.C_AcctSchema_ID=ci.C_AcctSchema1_ID AND " +
|
|
||||||
"ci.AD_Client_ID="+p_AD_Client_ID, get_TrxName());
|
|
||||||
ResultSet rs = pstmt.executeQuery();
|
|
||||||
if (rs.next())
|
|
||||||
v_CostingMethod = rs.getString(1);
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
}
|
|
||||||
catch (SQLException e)
|
|
||||||
{
|
|
||||||
throw new Exception ("select CostingMethod", e);
|
|
||||||
}
|
|
||||||
// (A)verage (S)tandard
|
|
||||||
log.info("Update Current Cost " + v_CostingMethod);
|
|
||||||
log.info("Set Standard Cost");
|
|
||||||
sql = new StringBuffer(
|
|
||||||
"UPDATE M_Product_Costing " +
|
|
||||||
"SET CurrentCostPrice = " +
|
|
||||||
"DECODE ('"+ v_CostingMethod + "', 'A', CostAverage, CostStandard) " +
|
|
||||||
"WHERE AD_Client_ID="+p_AD_Client_ID);
|
|
||||||
no2 = DB.executeUpdate(sql.toString(), get_TrxName());
|
|
||||||
if (no2 == -1) raiseError("Set Standard Cost", sql.toString());
|
|
||||||
log.info(" - Updated: " + no2);
|
|
||||||
|
|
||||||
return "@Updated@: " + no + "/" + no1;
|
|
||||||
} // doIt
|
|
||||||
|
|
||||||
private void raiseError(String string, String sql) throws Exception {
|
|
||||||
DB.rollback(false, get_TrxName());
|
|
||||||
String msg = string;
|
|
||||||
ValueNamePair pp = CLogger.retrieveError();
|
|
||||||
if (pp != null)
|
|
||||||
msg = pp.getName() + " - ";
|
|
||||||
msg += sql;
|
|
||||||
throw new AdempiereUserError (msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // M_Product_CostingUpdate
|
|
|
@ -284,12 +284,6 @@ public class OrgOwnership extends SvrProcess
|
||||||
if (no != 0)
|
if (no != 0)
|
||||||
log.fine("generalOwnership - C_BP_Withholding=" + no);
|
log.fine("generalOwnership - C_BP_Withholding=" + no);
|
||||||
|
|
||||||
// Costing
|
|
||||||
sql = "UPDATE M_Product_Costing " + set;
|
|
||||||
no = DB.executeUpdate(sql, get_TrxName());
|
|
||||||
if (no != 0)
|
|
||||||
log.fine("generalOwnership - M_Product_Costing=" + no);
|
|
||||||
|
|
||||||
// Replenish
|
// Replenish
|
||||||
sql = "UPDATE M_Replenish " + set;
|
sql = "UPDATE M_Replenish " + set;
|
||||||
no = DB.executeUpdate(sql, get_TrxName());
|
no = DB.executeUpdate(sql, get_TrxName());
|
||||||
|
|
|
@ -189,9 +189,11 @@ public class T_InventoryValue_Create extends SvrProcess
|
||||||
+ "AND plv.M_PriceList_ID=pl.M_PriceList_ID), "
|
+ "AND plv.M_PriceList_ID=pl.M_PriceList_ID), "
|
||||||
+ "CostStandard = "
|
+ "CostStandard = "
|
||||||
+ "(SELECT currencyConvert(pc.CurrentCostPrice,acs.C_Currency_ID,T_InventoryValue.C_Currency_ID,T_InventoryValue.DateValue, null, T_InventoryValue.AD_Client_ID, T_InventoryValue.AD_Org_ID) "
|
+ "(SELECT currencyConvert(pc.CurrentCostPrice,acs.C_Currency_ID,T_InventoryValue.C_Currency_ID,T_InventoryValue.DateValue, null, T_InventoryValue.AD_Client_ID, T_InventoryValue.AD_Org_ID) "
|
||||||
+ "FROM AD_ClientInfo ci, C_AcctSchema acs, M_Product_Costing pc "
|
+ "FROM AD_ClientInfo ci, C_AcctSchema acs, M_Cost pc, M_CostElement ce "
|
||||||
+ "WHERE T_InventoryValue.AD_Client_ID=ci.AD_Client_ID AND ci.C_AcctSchema1_ID=acs.C_AcctSchema_ID "
|
+ "WHERE T_InventoryValue.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 acs.C_AcctSchema_ID=pc.C_AcctSchema_ID "
|
||||||
|
+ "AND pc.M_CostElement_ID=ce.M_CostElement_ID "
|
||||||
|
+ "AND ce.CostingMethod='S'"
|
||||||
+ "AND T_InventoryValue.M_Product_ID=pc.M_Product_ID) "
|
+ "AND T_InventoryValue.M_Product_ID=pc.M_Product_ID) "
|
||||||
+ "WHERE T_InventoryValue.M_Warehouse_ID = " + p_M_Warehouse_ID;
|
+ "WHERE T_InventoryValue.M_Warehouse_ID = " + p_M_Warehouse_ID;
|
||||||
cntu = DB.executeUpdate(sqlupd, get_TrxName());
|
cntu = DB.executeUpdate(sqlupd, get_TrxName());
|
||||||
|
|
|
@ -257,7 +257,6 @@ public class Doc_InOut extends Doc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // for all lines
|
} // for all lines
|
||||||
updateProductInfo(as.getC_AcctSchema_ID()); // only for SO!
|
|
||||||
|
|
||||||
/** Commitment release ****/
|
/** Commitment release ****/
|
||||||
if (as.isAccrual() && as.isCreateSOCommitment())
|
if (as.isAccrual() && as.isCreateSOCommitment())
|
||||||
|
@ -368,7 +367,6 @@ public class Doc_InOut extends Doc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // for all lines
|
} // for all lines
|
||||||
updateProductInfo(as.getC_AcctSchema_ID()); // only for SO!
|
|
||||||
} // Sales Return
|
} // Sales Return
|
||||||
|
|
||||||
// *** Purchasing - Receipt
|
// *** Purchasing - Receipt
|
||||||
|
@ -614,35 +612,4 @@ public class Doc_InOut extends Doc
|
||||||
&& m_Reversal_ID !=0 && line.getReversalLine_ID() != 0;
|
&& m_Reversal_ID !=0 && line.getReversalLine_ID() != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update Sales Order Costing Product Info (old).
|
|
||||||
* Purchase side handled in Invoice Matching.
|
|
||||||
* <br>
|
|
||||||
* decrease average cumulatives
|
|
||||||
* @param C_AcctSchema_ID accounting schema
|
|
||||||
* @deprecated old costing
|
|
||||||
*/
|
|
||||||
private void updateProductInfo (int C_AcctSchema_ID)
|
|
||||||
{
|
|
||||||
log.fine("M_InOut_ID=" + get_ID());
|
|
||||||
// Old Model
|
|
||||||
StringBuffer sql = new StringBuffer(
|
|
||||||
//FYRACLE add pc. everywhere
|
|
||||||
"UPDATE M_Product_Costing pc "
|
|
||||||
+ "SET (CostAverageCumQty, CostAverageCumAmt)="
|
|
||||||
+ "(SELECT pc.CostAverageCumQty - SUM(il.MovementQty),"
|
|
||||||
+ " pc.CostAverageCumAmt - SUM(il.MovementQty*pc.CurrentCostPrice) "
|
|
||||||
+ "FROM M_InOutLine il "
|
|
||||||
+ "WHERE pc.M_Product_ID=il.M_Product_ID"
|
|
||||||
+ " AND il.M_InOut_ID=").append(get_ID()).append(") ")
|
|
||||||
.append("WHERE EXISTS (SELECT * "
|
|
||||||
+ "FROM M_InOutLine il "
|
|
||||||
+ "WHERE pc.M_Product_ID=il.M_Product_ID"
|
|
||||||
+ " AND il.M_InOut_ID=").append(get_ID()).append(")");
|
|
||||||
int no = DB.executeUpdate(sql.toString(), getTrxName());
|
|
||||||
log.fine("M_Product_Costing - Updated=" + no);
|
|
||||||
//
|
|
||||||
} // updateProductInfo
|
|
||||||
|
|
||||||
} // Doc_InOut
|
} // Doc_InOut
|
||||||
|
|
|
@ -580,7 +580,6 @@ public class Doc_Invoice extends Doc
|
||||||
getC_Currency_ID(), null, serviceAmt);
|
getC_Currency_ID(), null, serviceAmt);
|
||||||
//
|
//
|
||||||
updateProductPO(as); // Only API
|
updateProductPO(as); // Only API
|
||||||
updateProductInfo (as.getC_AcctSchema_ID()); // only API
|
|
||||||
}
|
}
|
||||||
// APC
|
// APC
|
||||||
else if (getDocumentType().equals(DOCTYPE_APCredit))
|
else if (getDocumentType().equals(DOCTYPE_APCredit))
|
||||||
|
@ -918,72 +917,4 @@ public class Doc_Invoice extends Doc
|
||||||
log.fine("Updated=" + no);
|
log.fine("Updated=" + no);
|
||||||
} // updateProductPO
|
} // updateProductPO
|
||||||
|
|
||||||
/**
|
|
||||||
* Update Product Info (old).
|
|
||||||
* - Costing (PriceLastInv)
|
|
||||||
* - PO (PriceLastInv)
|
|
||||||
* @param C_AcctSchema_ID accounting schema
|
|
||||||
* @deprecated old costing
|
|
||||||
*/
|
|
||||||
private void updateProductInfo (int C_AcctSchema_ID)
|
|
||||||
{
|
|
||||||
log.fine("C_Invoice_ID=" + get_ID());
|
|
||||||
|
|
||||||
/** @todo Last.. would need to compare document/last updated date
|
|
||||||
* would need to maintain LastPriceUpdateDate on _PO and _Costing */
|
|
||||||
|
|
||||||
// update Product Costing
|
|
||||||
// requires existence of currency conversion !!
|
|
||||||
// if there are multiple lines of the same product last price uses first
|
|
||||||
// -> TotalInvAmt is sometimes NULL !! -> error
|
|
||||||
// begin globalqss 2005-10-19
|
|
||||||
// postgresql doesn't support LIMIT on UPDATE or DELETE statements
|
|
||||||
/*
|
|
||||||
StringBuffer sql = new StringBuffer (
|
|
||||||
"UPDATE M_Product_Costing pc "
|
|
||||||
+ "SET (PriceLastInv, TotalInvAmt,TotalInvQty) = "
|
|
||||||
// select
|
|
||||||
+ "(SELECT currencyConvert(il.PriceActual,i.C_Currency_ID,a.C_Currency_ID,i.DateInvoiced,i.C_ConversionType_ID,i.AD_Client_ID,i.AD_Org_ID),"
|
|
||||||
+ " currencyConvert(il.LineNetAmt,i.C_Currency_ID,a.C_Currency_ID,i.DateInvoiced,i.C_ConversionType_ID,i.AD_Client_ID,i.AD_Org_ID),il.QtyInvoiced "
|
|
||||||
+ "FROM C_Invoice i, C_InvoiceLine il, C_AcctSchema a "
|
|
||||||
+ "WHERE i.C_Invoice_ID=il.C_Invoice_ID"
|
|
||||||
+ " AND pc.M_Product_ID=il.M_Product_ID AND pc.C_AcctSchema_ID=a.C_AcctSchema_ID"
|
|
||||||
+ " AND ROWNUM=1"
|
|
||||||
+ " AND pc.C_AcctSchema_ID=").append(C_AcctSchema_ID).append(" AND i.C_Invoice_ID=")
|
|
||||||
.append(get_ID()).append(") ")
|
|
||||||
// update
|
|
||||||
.append("WHERE EXISTS (SELECT * "
|
|
||||||
+ "FROM C_Invoice i, C_InvoiceLine il, C_AcctSchema a "
|
|
||||||
+ "WHERE i.C_Invoice_ID=il.C_Invoice_ID"
|
|
||||||
+ " AND pc.M_Product_ID=il.M_Product_ID AND pc.C_AcctSchema_ID=a.C_AcctSchema_ID"
|
|
||||||
+ " AND pc.C_AcctSchema_ID=").append(C_AcctSchema_ID).append(" AND i.C_Invoice_ID=")
|
|
||||||
.append(get_ID()).append(")");
|
|
||||||
*/
|
|
||||||
// the next command is equivalent and works in postgresql and oracle
|
|
||||||
StringBuffer sql = new StringBuffer (
|
|
||||||
"UPDATE M_Product_Costing pc "
|
|
||||||
+ "SET (PriceLastInv, TotalInvAmt,TotalInvQty) = "
|
|
||||||
// select
|
|
||||||
+ "(SELECT currencyConvert(il.PriceActual,i.C_Currency_ID,a.C_Currency_ID,i.DateInvoiced,i.C_ConversionType_ID,i.AD_Client_ID,i.AD_Org_ID),"
|
|
||||||
+ " currencyConvert(il.LineNetAmt,i.C_Currency_ID,a.C_Currency_ID,i.DateInvoiced,i.C_ConversionType_ID,i.AD_Client_ID,i.AD_Org_ID),il.QtyInvoiced "
|
|
||||||
+ "FROM C_Invoice i, C_InvoiceLine il, C_AcctSchema a "
|
|
||||||
+ "WHERE i.C_Invoice_ID=il.C_Invoice_ID"
|
|
||||||
+ " AND il.c_invoiceline_id = (SELECT MIN(C_InvoiceLine_ID) FROM C_InvoiceLine il2" +
|
|
||||||
" WHERE il2.M_PRODUCT_ID=il.M_PRODUCT_ID AND C_Invoice_ID=")
|
|
||||||
.append(get_ID()).append(")"
|
|
||||||
+ " AND pc.M_Product_ID=il.M_Product_ID AND pc.C_AcctSchema_ID=a.C_AcctSchema_ID"
|
|
||||||
+ " AND pc.C_AcctSchema_ID=").append(C_AcctSchema_ID).append(" AND i.C_Invoice_ID=")
|
|
||||||
.append(get_ID()).append(") ")
|
|
||||||
// update
|
|
||||||
.append("WHERE EXISTS (SELECT * "
|
|
||||||
+ "FROM C_Invoice i, C_InvoiceLine il, C_AcctSchema a "
|
|
||||||
+ "WHERE i.C_Invoice_ID=il.C_Invoice_ID"
|
|
||||||
+ " AND pc.M_Product_ID=il.M_Product_ID AND pc.C_AcctSchema_ID=a.C_AcctSchema_ID"
|
|
||||||
+ " AND pc.C_AcctSchema_ID=").append(C_AcctSchema_ID).append(" AND i.C_Invoice_ID=")
|
|
||||||
.append(get_ID()).append(")");
|
|
||||||
// end globalqss 2005-10-19
|
|
||||||
int no = DB.executeUpdate(sql.toString(), getTrxName());
|
|
||||||
log.fine("M_Product_Costing - Updated=" + no);
|
|
||||||
} // updateProductInfo
|
|
||||||
|
|
||||||
} // Doc_Invoice
|
} // Doc_Invoice
|
||||||
|
|
|
@ -31,7 +31,6 @@ import org.compiere.model.MInvoice;
|
||||||
import org.compiere.model.MInvoiceLine;
|
import org.compiere.model.MInvoiceLine;
|
||||||
import org.compiere.model.MMatchInv;
|
import org.compiere.model.MMatchInv;
|
||||||
import org.compiere.model.ProductCost;
|
import org.compiere.model.ProductCost;
|
||||||
import org.compiere.util.DB;
|
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -312,10 +311,6 @@ public class Doc_MatchInv extends Doc
|
||||||
p_Error = error;
|
p_Error = error;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update Costing
|
|
||||||
updateProductInfo(as.getC_AcctSchema_ID(),
|
|
||||||
MAcctSchema.COSTINGMETHOD_StandardCosting.equals(as.getCostingMethod()));
|
|
||||||
//
|
//
|
||||||
facts.add(fact);
|
facts.add(fact);
|
||||||
|
|
||||||
|
@ -417,64 +412,4 @@ public class Doc_MatchInv extends Doc
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Update Product Info (old).
|
|
||||||
* - Costing (CostStandardCumQty, CostStandardCumAmt, CostAverageCumQty, CostAverageCumAmt)
|
|
||||||
* @param C_AcctSchema_ID accounting schema
|
|
||||||
* @param standardCosting true if std costing
|
|
||||||
* @return true if updated
|
|
||||||
* @deprecated old costing
|
|
||||||
*/
|
|
||||||
private boolean updateProductInfo (int C_AcctSchema_ID, boolean standardCosting)
|
|
||||||
{
|
|
||||||
log.fine("M_MatchInv_ID=" + get_ID());
|
|
||||||
|
|
||||||
// update Product Costing Qty/Amt
|
|
||||||
// requires existence of currency conversion !!
|
|
||||||
StringBuffer sql = new StringBuffer (
|
|
||||||
"UPDATE M_Product_Costing pc "
|
|
||||||
+ "SET (CostStandardCumQty,CostStandardCumAmt, CostAverageCumQty,CostAverageCumAmt) = "
|
|
||||||
+ "(SELECT pc.CostStandardCumQty + m.Qty,"
|
|
||||||
+ "pc.CostStandardCumAmt + currencyConvert(il.PriceActual,i.C_Currency_ID,a.C_Currency_ID,i.DateInvoiced,i.C_ConversionType_ID,i.AD_Client_ID,i.AD_Org_ID)*m.Qty, "
|
|
||||||
+ "pc.CostAverageCumQty + m.Qty,"
|
|
||||||
+ "pc.CostAverageCumAmt + currencyConvert(il.PriceActual,i.C_Currency_ID,a.C_Currency_ID,i.DateInvoiced,i.C_ConversionType_ID,i.AD_Client_ID,i.AD_Org_ID)*m.Qty "
|
|
||||||
+ "FROM M_MatchInv m"
|
|
||||||
+ " INNER JOIN C_InvoiceLine il ON (m.C_InvoiceLine_ID=il.C_InvoiceLine_ID)"
|
|
||||||
+ " INNER JOIN C_Invoice i ON (il.C_Invoice_ID=i.C_Invoice_ID),"
|
|
||||||
+ " C_AcctSchema a "
|
|
||||||
+ "WHERE pc.C_AcctSchema_ID=a.C_AcctSchema_ID"
|
|
||||||
+ " AND pc.M_Product_ID=m.M_Product_ID"
|
|
||||||
+ " AND m.M_MatchInv_ID=").append(get_ID()).append(")"
|
|
||||||
//
|
|
||||||
+ "WHERE pc.C_AcctSchema_ID=").append(C_AcctSchema_ID).append(
|
|
||||||
" AND EXISTS (SELECT * FROM M_MatchInv m "
|
|
||||||
+ "WHERE pc.M_Product_ID=m.M_Product_ID"
|
|
||||||
+ " AND m.M_MatchInv_ID=").append(get_ID()).append(")");
|
|
||||||
int no = DB.executeUpdate(sql.toString(), getTrxName());
|
|
||||||
log.fine("M_Product_Costing - Qty/Amt Updated #=" + no);
|
|
||||||
|
|
||||||
// Update Average Cost
|
|
||||||
sql = new StringBuffer (
|
|
||||||
"UPDATE M_Product_Costing "
|
|
||||||
+ "SET CostAverage = CostAverageCumAmt/DECODE(CostAverageCumQty, 0,1, CostAverageCumQty) "
|
|
||||||
+ "WHERE C_AcctSchema_ID=").append(C_AcctSchema_ID)
|
|
||||||
.append(" AND M_Product_ID=").append(getM_Product_ID());
|
|
||||||
no = DB.executeUpdate(sql.toString(), getTrxName());
|
|
||||||
log.fine("M_Product_Costing - AvgCost Updated #=" + no);
|
|
||||||
|
|
||||||
|
|
||||||
// Update Current Cost
|
|
||||||
if (!standardCosting)
|
|
||||||
{
|
|
||||||
sql = new StringBuffer (
|
|
||||||
"UPDATE M_Product_Costing "
|
|
||||||
+ "SET CurrentCostPrice = CostAverage "
|
|
||||||
+ "WHERE C_AcctSchema_ID=").append(C_AcctSchema_ID)
|
|
||||||
.append(" AND M_Product_ID=").append(getM_Product_ID());
|
|
||||||
no = DB.executeUpdate(sql.toString(), getTrxName());
|
|
||||||
log.fine("M_Product_Costing - CurrentCost Updated=" + no);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
} // updateProductInfo
|
|
||||||
|
|
||||||
} // Doc_MatchInv
|
} // Doc_MatchInv
|
||||||
|
|
|
@ -37,7 +37,6 @@ import org.compiere.model.MProduct;
|
||||||
import org.compiere.model.MTax;
|
import org.compiere.model.MTax;
|
||||||
import org.compiere.model.ProductCost;
|
import org.compiere.model.ProductCost;
|
||||||
import org.compiere.model.X_M_InOut;
|
import org.compiere.model.X_M_InOut;
|
||||||
import org.compiere.util.DB;
|
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -289,34 +288,6 @@ public class Doc_MatchPO extends Doc
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Update Product Info (old).
|
|
||||||
* - Costing (CostStandardPOQty, CostStandardPOAmt)
|
|
||||||
* @param C_AcctSchema_ID accounting schema
|
|
||||||
* @deprecated old costing
|
|
||||||
*/
|
|
||||||
private void updateProductInfo (int C_AcctSchema_ID)
|
|
||||||
{
|
|
||||||
log.fine("M_MatchPO_ID=" + get_ID());
|
|
||||||
|
|
||||||
// update Product Costing
|
|
||||||
// requires existence of currency conversion !!
|
|
||||||
StringBuffer sql = new StringBuffer (
|
|
||||||
"UPDATE M_Product_Costing pc "
|
|
||||||
+ "SET (CostStandardPOQty,CostStandardPOAmt) = "
|
|
||||||
+ "(SELECT CostStandardPOQty + m.Qty,"
|
|
||||||
+ " CostStandardPOAmt + currencyConvert(ol.PriceActual,ol.C_Currency_ID,a.C_Currency_ID,ol.DateOrdered,null,ol.AD_Client_ID,ol.AD_Org_ID)*m.Qty "
|
|
||||||
+ "FROM M_MatchPO m, C_OrderLine ol, C_AcctSchema a "
|
|
||||||
+ "WHERE m.C_OrderLine_ID=ol.C_OrderLine_ID"
|
|
||||||
+ " AND pc.M_Product_ID=ol.M_Product_ID"
|
|
||||||
+ " AND pc.C_AcctSchema_ID=a.C_AcctSchema_ID"
|
|
||||||
+ " AND m.M_MatchPO_ID=").append(get_ID()).append(") ")
|
|
||||||
.append("WHERE pc.C_AcctSchema_ID=").append(C_AcctSchema_ID)
|
|
||||||
.append(" AND pc.M_Product_ID=").append(getM_Product_ID());
|
|
||||||
int no = DB.executeUpdate(sql.toString(), getTrxName());
|
|
||||||
log.fine("M_Product_Costing - Updated=" + no);
|
|
||||||
} // updateProductInfo
|
|
||||||
|
|
||||||
// Elaine 2008/6/20
|
// Elaine 2008/6/20
|
||||||
private String createMatchPOCostDetail(MAcctSchema as)
|
private String createMatchPOCostDetail(MAcctSchema as)
|
||||||
{
|
{
|
||||||
|
|
|
@ -343,7 +343,6 @@ public class Doc_Order extends Doc
|
||||||
if (getDocumentType().equals(DOCTYPE_POrder))
|
if (getDocumentType().equals(DOCTYPE_POrder))
|
||||||
{
|
{
|
||||||
updateProductPO(as);
|
updateProductPO(as);
|
||||||
updateProductInfo(as.getC_AcctSchema_ID());
|
|
||||||
|
|
||||||
BigDecimal grossAmt = getAmount(Doc.AMTTYPE_Gross);
|
BigDecimal grossAmt = getAmount(Doc.AMTTYPE_Gross);
|
||||||
|
|
||||||
|
@ -773,52 +772,5 @@ public class Doc_Order extends Doc
|
||||||
fact.createLine (null, offset,
|
fact.createLine (null, offset,
|
||||||
C_Currency_ID, null, total);
|
C_Currency_ID, null, total);
|
||||||
return fact;
|
return fact;
|
||||||
} // getCommitmentSalesRelease
|
} // getCommitmentSalesRelease
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* Update Product Info (old)
|
|
||||||
* - Costing (PriceLastPO)
|
|
||||||
* - PO (PriceLastPO)
|
|
||||||
* @param C_AcctSchema_ID accounting schema
|
|
||||||
* @deprecated old costing
|
|
||||||
*/
|
|
||||||
private void updateProductInfo (int C_AcctSchema_ID)
|
|
||||||
{
|
|
||||||
log.fine("C_Order_ID=" + get_ID());
|
|
||||||
|
|
||||||
/** @todo Last.. would need to compare document/last updated date
|
|
||||||
* would need to maintain LastPriceUpdateDate on _PO and _Costing */
|
|
||||||
|
|
||||||
// update Product Costing
|
|
||||||
// requires existence of currency conversion !!
|
|
||||||
// if there are multiple lines of the same product last price uses first
|
|
||||||
StringBuffer sql = new StringBuffer (
|
|
||||||
"UPDATE M_Product_Costing pc "
|
|
||||||
+ "SET PriceLastPO = "
|
|
||||||
+ "(SELECT currencyConvert(ol.PriceActual,ol.C_Currency_ID,a.C_Currency_ID,o.DateOrdered,o.C_ConversionType_ID,o.AD_Client_ID,o.AD_Org_ID) "
|
|
||||||
+ "FROM C_Order o, C_OrderLine ol, C_AcctSchema a "
|
|
||||||
+ "WHERE o.C_Order_ID=ol.C_Order_ID"
|
|
||||||
+ " AND pc.M_Product_ID=ol.M_Product_ID AND pc.C_AcctSchema_ID=a.C_AcctSchema_ID ");
|
|
||||||
if (DB.isOracle()) //jz
|
|
||||||
{
|
|
||||||
sql.append(" AND ROWNUM=1 ");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
sql.append(" AND ol.C_OrderLine_ID = (SELECT MIN(ol1.C_OrderLine_ID) "
|
|
||||||
+ "FROM C_Order o1, C_OrderLine ol1 "
|
|
||||||
+ "WHERE o1.C_Order_ID=ol1.C_Order_ID"
|
|
||||||
+ " AND pc.M_Product_ID=ol1.M_Product_ID ")
|
|
||||||
.append(" AND o1.C_Order_ID=").append(get_ID()).append(") ");
|
|
||||||
sql.append(" AND pc.C_AcctSchema_ID=").append(C_AcctSchema_ID).append(" AND o.C_Order_ID=")
|
|
||||||
.append(get_ID()).append(") ")
|
|
||||||
.append("WHERE EXISTS (SELECT * "
|
|
||||||
+ "FROM C_Order o, C_OrderLine ol, C_AcctSchema a "
|
|
||||||
+ "WHERE o.C_Order_ID=ol.C_Order_ID"
|
|
||||||
+ " AND pc.M_Product_ID=ol.M_Product_ID AND pc.C_AcctSchema_ID=a.C_AcctSchema_ID"
|
|
||||||
+ " AND pc.C_AcctSchema_ID=").append(C_AcctSchema_ID).append(" AND o.C_Order_ID=")
|
|
||||||
.append(get_ID()).append(")");
|
|
||||||
int no = DB.executeUpdate(sql.toString(), getTrxName());
|
|
||||||
log.fine("M_Product_Costing - Updated=" + no);
|
|
||||||
} // updateProductInfo
|
|
||||||
|
|
||||||
} // Doc_Order
|
} // Doc_Order
|
|
@ -228,70 +228,6 @@ public class ProductInfo
|
||||||
return m_qty;
|
return m_qty;
|
||||||
} // getQty
|
} // getQty
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update/Create initial Cost Record.
|
|
||||||
* Check first for Purchase Price List,
|
|
||||||
* then Product Purchase Costs
|
|
||||||
* and then Price List
|
|
||||||
* @param as accounting schema
|
|
||||||
* @param create create record
|
|
||||||
* @return costs
|
|
||||||
*/
|
|
||||||
private BigDecimal updateCosts (MAcctSchema as, boolean create)
|
|
||||||
{
|
|
||||||
// Create Zero Record
|
|
||||||
if (create)
|
|
||||||
{
|
|
||||||
StringBuffer sql = new StringBuffer ("INSERT INTO M_Product_Costing "
|
|
||||||
+ "(M_Product_ID,C_AcctSchema_ID,"
|
|
||||||
+ " AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,"
|
|
||||||
+ " CurrentCostPrice,CostStandard,FutureCostPrice,"
|
|
||||||
+ " CostStandardPOQty,CostStandardPOAmt,CostStandardCumQty,CostStandardCumAmt,"
|
|
||||||
+ " CostAverage,CostAverageCumQty,CostAverageCumAmt,"
|
|
||||||
+ " PriceLastPO,PriceLastInv, TotalInvQty,TotalInvAmt) "
|
|
||||||
+ "VALUES (");
|
|
||||||
sql.append(m_M_Product_ID).append(",").append(as.getC_AcctSchema_ID()).append(",")
|
|
||||||
.append(m_AD_Client_ID).append(",").append(m_AD_Org_ID).append(",")
|
|
||||||
.append("'Y',SysDate,0,SysDate,0, 0,0,0, 0,0,0,0, 0,0,0, 0,0, 0,0)");
|
|
||||||
int no = DB.executeUpdate(sql.toString(), m_trxName);
|
|
||||||
if (no == 1)
|
|
||||||
log.fine("CostingCreated");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to find non ZERO Price
|
|
||||||
String costSource = "PriceList-PO";
|
|
||||||
BigDecimal costs = getPriceList (as, true);
|
|
||||||
if (costs == null || costs.compareTo(Env.ZERO)==0)
|
|
||||||
{
|
|
||||||
costSource = "PO Cost";
|
|
||||||
costs = getPOCost(as);
|
|
||||||
}
|
|
||||||
if (costs == null || costs.compareTo(Env.ZERO)==0)
|
|
||||||
{
|
|
||||||
costSource = "PriceList";
|
|
||||||
costs = getPriceList (as, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// if not found use $1 (to be able to do material transactions)
|
|
||||||
if (costs == null || costs.compareTo(Env.ZERO)==0)
|
|
||||||
{
|
|
||||||
costSource = "Not Found";
|
|
||||||
costs = new BigDecimal("1");
|
|
||||||
}
|
|
||||||
|
|
||||||
// update current costs
|
|
||||||
StringBuffer sql = new StringBuffer ("UPDATE M_Product_Costing ");
|
|
||||||
sql.append("SET CurrentCostPrice=").append(costs)
|
|
||||||
.append(" WHERE M_Product_ID=").append(m_M_Product_ID)
|
|
||||||
.append(" AND C_AcctSchema_ID=").append(as.getC_AcctSchema_ID());
|
|
||||||
int no = DB.executeUpdate(sql.toString(), m_trxName);
|
|
||||||
if (no == 1)
|
|
||||||
log.fine(costSource + " - " + costs);
|
|
||||||
return costs;
|
|
||||||
} // createCosts
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get PO Price from PriceList - and convert it to AcctSchema Currency
|
* Get PO Price from PriceList - and convert it to AcctSchema Currency
|
||||||
* @param as accounting schema
|
* @param as accounting schema
|
||||||
|
|
|
@ -1,317 +0,0 @@
|
||||||
/******************************************************************************
|
|
||||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
|
||||||
* Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. *
|
|
||||||
* This program is free software, you can redistribute it and/or modify it *
|
|
||||||
* under the terms version 2 of the GNU General Public License as published *
|
|
||||||
* by the Free Software Foundation. This program is distributed in the hope *
|
|
||||||
* that it will be useful, but WITHOUT ANY WARRANTY, without even the implied *
|
|
||||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
|
||||||
* See the GNU General Public License for more details. *
|
|
||||||
* You should have received a copy of the GNU General Public License along *
|
|
||||||
* with this program, if not, write to the Free Software Foundation, Inc., *
|
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
|
||||||
* For the text or an alternative of this public license, you may reach us *
|
|
||||||
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
|
||||||
* or via info@compiere.org or http://www.compiere.org/license.html *
|
|
||||||
*****************************************************************************/
|
|
||||||
package org.compiere.model;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.sql.Timestamp;
|
|
||||||
import org.compiere.util.KeyNamePair;
|
|
||||||
|
|
||||||
/** Generated Interface for M_Product_Costing
|
|
||||||
* @author Adempiere (generated)
|
|
||||||
* @version Release 3.6.0LTS
|
|
||||||
*/
|
|
||||||
public interface I_M_Product_Costing
|
|
||||||
{
|
|
||||||
|
|
||||||
/** TableName=M_Product_Costing */
|
|
||||||
public static final String Table_Name = "M_Product_Costing";
|
|
||||||
|
|
||||||
/** AD_Table_ID=327 */
|
|
||||||
public static final int Table_ID = MTable.getTable_ID(Table_Name);
|
|
||||||
|
|
||||||
KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);
|
|
||||||
|
|
||||||
/** AccessLevel = 3 - Client - Org
|
|
||||||
*/
|
|
||||||
BigDecimal accessLevel = BigDecimal.valueOf(3);
|
|
||||||
|
|
||||||
/** Load Meta Data */
|
|
||||||
|
|
||||||
/** Column name AD_Client_ID */
|
|
||||||
public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID";
|
|
||||||
|
|
||||||
/** Get Client.
|
|
||||||
* Client/Tenant for this installation.
|
|
||||||
*/
|
|
||||||
public int getAD_Client_ID();
|
|
||||||
|
|
||||||
/** Column name AD_Org_ID */
|
|
||||||
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";
|
|
||||||
|
|
||||||
/** Set Organization.
|
|
||||||
* Organizational entity within client
|
|
||||||
*/
|
|
||||||
public void setAD_Org_ID (int AD_Org_ID);
|
|
||||||
|
|
||||||
/** Get Organization.
|
|
||||||
* Organizational entity within client
|
|
||||||
*/
|
|
||||||
public int getAD_Org_ID();
|
|
||||||
|
|
||||||
/** Column name C_AcctSchema_ID */
|
|
||||||
public static final String COLUMNNAME_C_AcctSchema_ID = "C_AcctSchema_ID";
|
|
||||||
|
|
||||||
/** Set Accounting Schema.
|
|
||||||
* Rules for accounting
|
|
||||||
*/
|
|
||||||
public void setC_AcctSchema_ID (int C_AcctSchema_ID);
|
|
||||||
|
|
||||||
/** Get Accounting Schema.
|
|
||||||
* Rules for accounting
|
|
||||||
*/
|
|
||||||
public int getC_AcctSchema_ID();
|
|
||||||
|
|
||||||
public I_C_AcctSchema getC_AcctSchema() throws RuntimeException;
|
|
||||||
|
|
||||||
/** Column name CostAverage */
|
|
||||||
public static final String COLUMNNAME_CostAverage = "CostAverage";
|
|
||||||
|
|
||||||
/** Set Average Cost.
|
|
||||||
* Weighted average costs
|
|
||||||
*/
|
|
||||||
public void setCostAverage (BigDecimal CostAverage);
|
|
||||||
|
|
||||||
/** Get Average Cost.
|
|
||||||
* Weighted average costs
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostAverage();
|
|
||||||
|
|
||||||
/** Column name CostAverageCumAmt */
|
|
||||||
public static final String COLUMNNAME_CostAverageCumAmt = "CostAverageCumAmt";
|
|
||||||
|
|
||||||
/** Set Average Cost Amount Sum.
|
|
||||||
* Cumulative average cost amounts (internal)
|
|
||||||
*/
|
|
||||||
public void setCostAverageCumAmt (BigDecimal CostAverageCumAmt);
|
|
||||||
|
|
||||||
/** Get Average Cost Amount Sum.
|
|
||||||
* Cumulative average cost amounts (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostAverageCumAmt();
|
|
||||||
|
|
||||||
/** Column name CostAverageCumQty */
|
|
||||||
public static final String COLUMNNAME_CostAverageCumQty = "CostAverageCumQty";
|
|
||||||
|
|
||||||
/** Set Average Cost Quantity Sum.
|
|
||||||
* Cumulative average cost quantities (internal)
|
|
||||||
*/
|
|
||||||
public void setCostAverageCumQty (BigDecimal CostAverageCumQty);
|
|
||||||
|
|
||||||
/** Get Average Cost Quantity Sum.
|
|
||||||
* Cumulative average cost quantities (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostAverageCumQty();
|
|
||||||
|
|
||||||
/** Column name CostStandard */
|
|
||||||
public static final String COLUMNNAME_CostStandard = "CostStandard";
|
|
||||||
|
|
||||||
/** Set Standard Cost.
|
|
||||||
* Standard Costs
|
|
||||||
*/
|
|
||||||
public void setCostStandard (BigDecimal CostStandard);
|
|
||||||
|
|
||||||
/** Get Standard Cost.
|
|
||||||
* Standard Costs
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostStandard();
|
|
||||||
|
|
||||||
/** Column name CostStandardCumAmt */
|
|
||||||
public static final String COLUMNNAME_CostStandardCumAmt = "CostStandardCumAmt";
|
|
||||||
|
|
||||||
/** Set Std Cost Amount Sum.
|
|
||||||
* Standard Cost Invoice Amount Sum (internal)
|
|
||||||
*/
|
|
||||||
public void setCostStandardCumAmt (BigDecimal CostStandardCumAmt);
|
|
||||||
|
|
||||||
/** Get Std Cost Amount Sum.
|
|
||||||
* Standard Cost Invoice Amount Sum (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostStandardCumAmt();
|
|
||||||
|
|
||||||
/** Column name CostStandardCumQty */
|
|
||||||
public static final String COLUMNNAME_CostStandardCumQty = "CostStandardCumQty";
|
|
||||||
|
|
||||||
/** Set Std Cost Quantity Sum.
|
|
||||||
* Standard Cost Invoice Quantity Sum (internal)
|
|
||||||
*/
|
|
||||||
public void setCostStandardCumQty (BigDecimal CostStandardCumQty);
|
|
||||||
|
|
||||||
/** Get Std Cost Quantity Sum.
|
|
||||||
* Standard Cost Invoice Quantity Sum (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostStandardCumQty();
|
|
||||||
|
|
||||||
/** Column name CostStandardPOAmt */
|
|
||||||
public static final String COLUMNNAME_CostStandardPOAmt = "CostStandardPOAmt";
|
|
||||||
|
|
||||||
/** Set Std PO Cost Amount Sum.
|
|
||||||
* Standard Cost Purchase Order Amount Sum (internal)
|
|
||||||
*/
|
|
||||||
public void setCostStandardPOAmt (BigDecimal CostStandardPOAmt);
|
|
||||||
|
|
||||||
/** Get Std PO Cost Amount Sum.
|
|
||||||
* Standard Cost Purchase Order Amount Sum (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostStandardPOAmt();
|
|
||||||
|
|
||||||
/** Column name CostStandardPOQty */
|
|
||||||
public static final String COLUMNNAME_CostStandardPOQty = "CostStandardPOQty";
|
|
||||||
|
|
||||||
/** Set Std PO Cost Quantity Sum.
|
|
||||||
* Standard Cost Purchase Order Quantity Sum (internal)
|
|
||||||
*/
|
|
||||||
public void setCostStandardPOQty (BigDecimal CostStandardPOQty);
|
|
||||||
|
|
||||||
/** Get Std PO Cost Quantity Sum.
|
|
||||||
* Standard Cost Purchase Order Quantity Sum (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostStandardPOQty();
|
|
||||||
|
|
||||||
/** Column name Created */
|
|
||||||
public static final String COLUMNNAME_Created = "Created";
|
|
||||||
|
|
||||||
/** Get Created.
|
|
||||||
* Date this record was created
|
|
||||||
*/
|
|
||||||
public Timestamp getCreated();
|
|
||||||
|
|
||||||
/** Column name CreatedBy */
|
|
||||||
public static final String COLUMNNAME_CreatedBy = "CreatedBy";
|
|
||||||
|
|
||||||
/** Get Created By.
|
|
||||||
* User who created this records
|
|
||||||
*/
|
|
||||||
public int getCreatedBy();
|
|
||||||
|
|
||||||
/** Column name CurrentCostPrice */
|
|
||||||
public static final String COLUMNNAME_CurrentCostPrice = "CurrentCostPrice";
|
|
||||||
|
|
||||||
/** Set Current Cost Price.
|
|
||||||
* The currently used cost price
|
|
||||||
*/
|
|
||||||
public void setCurrentCostPrice (BigDecimal CurrentCostPrice);
|
|
||||||
|
|
||||||
/** Get Current Cost Price.
|
|
||||||
* The currently used cost price
|
|
||||||
*/
|
|
||||||
public BigDecimal getCurrentCostPrice();
|
|
||||||
|
|
||||||
/** Column name FutureCostPrice */
|
|
||||||
public static final String COLUMNNAME_FutureCostPrice = "FutureCostPrice";
|
|
||||||
|
|
||||||
/** Set Future Cost Price */
|
|
||||||
public void setFutureCostPrice (BigDecimal FutureCostPrice);
|
|
||||||
|
|
||||||
/** Get Future Cost Price */
|
|
||||||
public BigDecimal getFutureCostPrice();
|
|
||||||
|
|
||||||
/** Column name IsActive */
|
|
||||||
public static final String COLUMNNAME_IsActive = "IsActive";
|
|
||||||
|
|
||||||
/** Set Active.
|
|
||||||
* The record is active in the system
|
|
||||||
*/
|
|
||||||
public void setIsActive (boolean IsActive);
|
|
||||||
|
|
||||||
/** Get Active.
|
|
||||||
* The record is active in the system
|
|
||||||
*/
|
|
||||||
public boolean isActive();
|
|
||||||
|
|
||||||
/** Column name M_Product_ID */
|
|
||||||
public static final String COLUMNNAME_M_Product_ID = "M_Product_ID";
|
|
||||||
|
|
||||||
/** Set Product.
|
|
||||||
* Product, Service, Item
|
|
||||||
*/
|
|
||||||
public void setM_Product_ID (int M_Product_ID);
|
|
||||||
|
|
||||||
/** Get Product.
|
|
||||||
* Product, Service, Item
|
|
||||||
*/
|
|
||||||
public int getM_Product_ID();
|
|
||||||
|
|
||||||
public I_M_Product getM_Product() throws RuntimeException;
|
|
||||||
|
|
||||||
/** Column name PriceLastInv */
|
|
||||||
public static final String COLUMNNAME_PriceLastInv = "PriceLastInv";
|
|
||||||
|
|
||||||
/** Set Last Invoice Price.
|
|
||||||
* Price of the last invoice for the product
|
|
||||||
*/
|
|
||||||
public void setPriceLastInv (BigDecimal PriceLastInv);
|
|
||||||
|
|
||||||
/** Get Last Invoice Price.
|
|
||||||
* Price of the last invoice for the product
|
|
||||||
*/
|
|
||||||
public BigDecimal getPriceLastInv();
|
|
||||||
|
|
||||||
/** Column name PriceLastPO */
|
|
||||||
public static final String COLUMNNAME_PriceLastPO = "PriceLastPO";
|
|
||||||
|
|
||||||
/** Set Last PO Price.
|
|
||||||
* Price of the last purchase order for the product
|
|
||||||
*/
|
|
||||||
public void setPriceLastPO (BigDecimal PriceLastPO);
|
|
||||||
|
|
||||||
/** Get Last PO Price.
|
|
||||||
* Price of the last purchase order for the product
|
|
||||||
*/
|
|
||||||
public BigDecimal getPriceLastPO();
|
|
||||||
|
|
||||||
/** Column name TotalInvAmt */
|
|
||||||
public static final String COLUMNNAME_TotalInvAmt = "TotalInvAmt";
|
|
||||||
|
|
||||||
/** Set Total Invoice Amount.
|
|
||||||
* Cumulative total lifetime invoice amount
|
|
||||||
*/
|
|
||||||
public void setTotalInvAmt (BigDecimal TotalInvAmt);
|
|
||||||
|
|
||||||
/** Get Total Invoice Amount.
|
|
||||||
* Cumulative total lifetime invoice amount
|
|
||||||
*/
|
|
||||||
public BigDecimal getTotalInvAmt();
|
|
||||||
|
|
||||||
/** Column name TotalInvQty */
|
|
||||||
public static final String COLUMNNAME_TotalInvQty = "TotalInvQty";
|
|
||||||
|
|
||||||
/** Set Total Invoice Quantity.
|
|
||||||
* Cumulative total lifetime invoice quantity
|
|
||||||
*/
|
|
||||||
public void setTotalInvQty (BigDecimal TotalInvQty);
|
|
||||||
|
|
||||||
/** Get Total Invoice Quantity.
|
|
||||||
* Cumulative total lifetime invoice quantity
|
|
||||||
*/
|
|
||||||
public BigDecimal getTotalInvQty();
|
|
||||||
|
|
||||||
/** Column name Updated */
|
|
||||||
public static final String COLUMNNAME_Updated = "Updated";
|
|
||||||
|
|
||||||
/** Get Updated.
|
|
||||||
* Date this record was updated
|
|
||||||
*/
|
|
||||||
public Timestamp getUpdated();
|
|
||||||
|
|
||||||
/** Column name UpdatedBy */
|
|
||||||
public static final String COLUMNNAME_UpdatedBy = "UpdatedBy";
|
|
||||||
|
|
||||||
/** Get Updated By.
|
|
||||||
* User who updated this records
|
|
||||||
*/
|
|
||||||
public int getUpdatedBy();
|
|
||||||
}
|
|
|
@ -290,14 +290,6 @@ public class MCost extends X_M_Cost
|
||||||
if (retValue == null || retValue.signum() == 0)
|
if (retValue == null || retValue.signum() == 0)
|
||||||
retValue = getLastPOPrice(product, M_ASI_ID, Org_ID, as.getC_Currency_ID());
|
retValue = getLastPOPrice(product, M_ASI_ID, Org_ID, as.getC_Currency_ID());
|
||||||
}
|
}
|
||||||
else if (MCostElement.COSTINGMETHOD_StandardCosting.equals(costingMethod))
|
|
||||||
{
|
|
||||||
// migrate old costs
|
|
||||||
MProductCosting pc = MProductCosting.get(product.getCtx(), product.getM_Product_ID(),
|
|
||||||
as.getC_AcctSchema_ID(), product.get_TrxName());
|
|
||||||
if (pc != null)
|
|
||||||
retValue = pc.getCurrentCostPrice();
|
|
||||||
}
|
|
||||||
else if (MCostElement.COSTINGMETHOD_UserDefined.equals(costingMethod))
|
else if (MCostElement.COSTINGMETHOD_UserDefined.equals(costingMethod))
|
||||||
;
|
;
|
||||||
else
|
else
|
||||||
|
|
|
@ -689,14 +689,6 @@ public class MProduct extends X_M_Product
|
||||||
insert_Accounting("M_Product_Acct", "M_Product_Category_Acct",
|
insert_Accounting("M_Product_Acct", "M_Product_Category_Acct",
|
||||||
"p.M_Product_Category_ID=" + getM_Product_Category_ID());
|
"p.M_Product_Category_ID=" + getM_Product_Category_ID());
|
||||||
insert_Tree(X_AD_Tree.TREETYPE_Product);
|
insert_Tree(X_AD_Tree.TREETYPE_Product);
|
||||||
//
|
|
||||||
MAcctSchema[] mass = MAcctSchema.getClientAcctSchema(getCtx(), getAD_Client_ID(), get_TrxName());
|
|
||||||
for (int i = 0; i < mass.length; i++)
|
|
||||||
{
|
|
||||||
// Old
|
|
||||||
MProductCosting pcOld = new MProductCosting(this, mass[i].getC_AcctSchema_ID());
|
|
||||||
pcOld.saveEx();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// New Costing
|
// New Costing
|
||||||
|
@ -740,11 +732,7 @@ public class MProduct extends X_M_Product
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// delete costing
|
// delete costing
|
||||||
MProductCosting[] costings = MProductCosting.getOfProduct(getCtx(), get_ID(), get_TrxName());
|
|
||||||
for (int i = 0; i < costings.length; i++)
|
|
||||||
costings[i].delete(true, get_TrxName());
|
|
||||||
|
|
||||||
MCost.delete(this);
|
MCost.delete(this);
|
||||||
|
|
||||||
// [ 1674225 ] Delete Product: Costing deletion error
|
// [ 1674225 ] Delete Product: Costing deletion error
|
||||||
|
|
|
@ -1,133 +0,0 @@
|
||||||
/******************************************************************************
|
|
||||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
|
||||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
|
||||||
* This program is free software; you can redistribute it and/or modify it *
|
|
||||||
* under the terms version 2 of the GNU General Public License as published *
|
|
||||||
* by the Free Software Foundation. This program is distributed in the hope *
|
|
||||||
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
|
|
||||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
|
||||||
* See the GNU General Public License for more details. *
|
|
||||||
* You should have received a copy of the GNU General Public License along *
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc., *
|
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
|
||||||
* For the text or an alternative of this public license, you may reach us *
|
|
||||||
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
|
||||||
* or via info@compiere.org or http://www.compiere.org/license.html *
|
|
||||||
*****************************************************************************/
|
|
||||||
package org.compiere.model;
|
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.compiere.util.Env;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Product Costing Model (old).
|
|
||||||
* deprecated old costing
|
|
||||||
*
|
|
||||||
* @author Jorg Janke
|
|
||||||
* @version $Id: MProductCosting.java,v 1.3 2006/07/30 00:51:05 jjanke Exp $
|
|
||||||
*/
|
|
||||||
public class MProductCosting extends X_M_Product_Costing
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private static final long serialVersionUID = 5563448335633481151L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Costing Of Product
|
|
||||||
* @param ctx context
|
|
||||||
* @param M_Product_ID product
|
|
||||||
* @param trxName trx
|
|
||||||
* @return array of costs
|
|
||||||
*/
|
|
||||||
public static MProductCosting[] getOfProduct (Properties ctx, int M_Product_ID, String trxName)
|
|
||||||
{
|
|
||||||
final String whereClause = "M_Product_ID=?";
|
|
||||||
|
|
||||||
List<MProductCosting> costs =new Query(ctx, I_M_Product_Costing.Table_Name,whereClause, trxName )
|
|
||||||
.setParameters(M_Product_ID)
|
|
||||||
.list();
|
|
||||||
return costs.toArray(new MProductCosting[costs.size()]);
|
|
||||||
} // getOfProduct
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Costing
|
|
||||||
* @param ctx context
|
|
||||||
* @param M_Product_ID product
|
|
||||||
* @param C_AcctSchema_ID as
|
|
||||||
* @param trxName trx
|
|
||||||
* @return first product cosnting
|
|
||||||
*/
|
|
||||||
public static MProductCosting get (Properties ctx, int M_Product_ID,
|
|
||||||
int C_AcctSchema_ID, String trxName)
|
|
||||||
{
|
|
||||||
final String whereClause = "M_Product_ID=? AND C_AcctSchema_ID=?";
|
|
||||||
|
|
||||||
return new Query(ctx, I_M_Product_Costing.Table_Name,whereClause, trxName )
|
|
||||||
.setParameters(M_Product_ID, C_AcctSchema_ID)
|
|
||||||
.firstOnly();
|
|
||||||
} // get
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* Standard Constructor (odl)
|
|
||||||
* @param ctx context
|
|
||||||
* @param ignored (multi key)
|
|
||||||
* @param trxName transaction
|
|
||||||
*/
|
|
||||||
public MProductCosting (Properties ctx, int ignored, String trxName)
|
|
||||||
{
|
|
||||||
super (ctx, ignored, trxName);
|
|
||||||
if (ignored != 0)
|
|
||||||
throw new IllegalArgumentException("Multi-Key");
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// setM_Product_ID (0);
|
|
||||||
// setC_AcctSchema_ID (0);
|
|
||||||
//
|
|
||||||
setCostAverage (Env.ZERO);
|
|
||||||
setCostAverageCumAmt (Env.ZERO);
|
|
||||||
setCostAverageCumQty (Env.ZERO);
|
|
||||||
setCostStandard (Env.ZERO);
|
|
||||||
setCostStandardCumAmt (Env.ZERO);
|
|
||||||
setCostStandardCumQty (Env.ZERO);
|
|
||||||
setCostStandardPOAmt (Env.ZERO);
|
|
||||||
setCostStandardPOQty (Env.ZERO);
|
|
||||||
setCurrentCostPrice (Env.ZERO);
|
|
||||||
setFutureCostPrice (Env.ZERO);
|
|
||||||
setPriceLastInv (Env.ZERO);
|
|
||||||
setPriceLastPO (Env.ZERO);
|
|
||||||
setTotalInvAmt (Env.ZERO);
|
|
||||||
setTotalInvQty (Env.ZERO);
|
|
||||||
}
|
|
||||||
} // MProductCosting
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parent Constructor (old)
|
|
||||||
* @param product parent
|
|
||||||
* @param C_AcctSchema_ID accounting schema
|
|
||||||
*/
|
|
||||||
public MProductCosting (MProduct product, int C_AcctSchema_ID)
|
|
||||||
{
|
|
||||||
super (product.getCtx(), 0, product.get_TrxName());
|
|
||||||
setClientOrg(product);
|
|
||||||
setM_Product_ID (product.getM_Product_ID());
|
|
||||||
setC_AcctSchema_ID (C_AcctSchema_ID);
|
|
||||||
} // MProductCosting
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load Constructor (old)
|
|
||||||
* @param ctx context
|
|
||||||
* @param rs result set
|
|
||||||
* @param trxName transaction
|
|
||||||
*/
|
|
||||||
public MProductCosting (Properties ctx, ResultSet rs, String trxName)
|
|
||||||
{
|
|
||||||
super(ctx, rs, trxName);
|
|
||||||
} // MProductCosting
|
|
||||||
|
|
||||||
} // MProductCosting
|
|
||||||
|
|
|
@ -283,17 +283,6 @@ public class ProductCost
|
||||||
log.fine("No Qty");
|
log.fine("No Qty");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
/** Old Costing
|
|
||||||
MClient client = MClient.get(as.getCtx(), as.getAD_Client_ID());
|
|
||||||
if (!client.isUseBetaFunctions())
|
|
||||||
{
|
|
||||||
BigDecimal itemCost = getProductItemCostOld(as, costingMethod);
|
|
||||||
BigDecimal cost = m_qty.multiply(itemCost);
|
|
||||||
cost = cost.setScale(as.getCostingPrecision(), BigDecimal.ROUND_HALF_UP);
|
|
||||||
log.fine("Qty(" + m_qty + ") * Cost(" + itemCost + ") = " + cost);
|
|
||||||
return cost;
|
|
||||||
}
|
|
||||||
**/
|
|
||||||
|
|
||||||
// No Product
|
// No Product
|
||||||
if (m_product == null)
|
if (m_product == null)
|
||||||
|
@ -312,138 +301,6 @@ public class ProductCost
|
||||||
return cost;
|
return cost;
|
||||||
} // getProductCosts
|
} // getProductCosts
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Product Costs per UOM for Accounting Schema in Accounting Schema Currency.
|
|
||||||
* - if costType defined - cost
|
|
||||||
* - else CurrentCosts
|
|
||||||
* @param as accounting schema
|
|
||||||
* @param costType - if null uses Accounting Schema Costs - see AcctSchema.COSTING_*
|
|
||||||
* @return product costs
|
|
||||||
*/
|
|
||||||
private BigDecimal getProductItemCostOld (MAcctSchema as, String costType)
|
|
||||||
{
|
|
||||||
BigDecimal current = null;
|
|
||||||
BigDecimal cost = null;
|
|
||||||
String cm = as.getCostingMethod();
|
|
||||||
StringBuffer sql = new StringBuffer("SELECT CurrentCostPrice,"); // 1
|
|
||||||
//
|
|
||||||
if ((costType == null && MAcctSchema.COSTINGMETHOD_AveragePO.equals(cm))
|
|
||||||
|| MAcctSchema.COSTINGMETHOD_AveragePO.equals(costType))
|
|
||||||
sql.append("COSTAVERAGE"); // 2
|
|
||||||
// else if (AcctSchema.COSTING_FIFO.equals(cm))
|
|
||||||
// sql.append("COSTFIFO");
|
|
||||||
// else if (AcctSchema.COSTING_LIFO.equals(cm))
|
|
||||||
// sql.append("COSTLIFO");
|
|
||||||
else if ((costType == null && MAcctSchema.COSTINGMETHOD_LastPOPrice.equals(cm))
|
|
||||||
|| MAcctSchema.COSTINGMETHOD_LastPOPrice.equals(costType))
|
|
||||||
sql.append("PRICELASTPO");
|
|
||||||
else // AcctSchema.COSTING_STANDARD
|
|
||||||
sql.append("COSTSTANDARD");
|
|
||||||
sql.append(" FROM M_Product_Costing WHERE M_Product_ID=? AND C_AcctSchema_ID=?");
|
|
||||||
|
|
||||||
PreparedStatement pstmt = null;
|
|
||||||
ResultSet rs = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
pstmt = DB.prepareStatement(sql.toString(), null);
|
|
||||||
pstmt.setInt(1, m_M_Product_ID);
|
|
||||||
pstmt.setInt(2, as.getC_AcctSchema_ID());
|
|
||||||
rs = pstmt.executeQuery();
|
|
||||||
if (rs.next())
|
|
||||||
{
|
|
||||||
current = rs.getBigDecimal(1);
|
|
||||||
cost = rs.getBigDecimal(2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (SQLException e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, sql.toString(), e);
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
DB.close(rs, pstmt);
|
|
||||||
rs = null; pstmt = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return Costs
|
|
||||||
if (costType != null && cost != null && cost.compareTo(Env.ZERO)!=0)
|
|
||||||
{
|
|
||||||
log.fine("Costs=" + cost);
|
|
||||||
return cost;
|
|
||||||
}
|
|
||||||
else if (current != null && current.compareTo(Env.ZERO)!=0)
|
|
||||||
{
|
|
||||||
log.fine("Current=" + current);
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create/Update Cost Record
|
|
||||||
boolean create = (cost == null && current == null);
|
|
||||||
return updateCostsOld (as, create);
|
|
||||||
} // getProductCostOld
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update/Create initial Cost Record.
|
|
||||||
* Check first for Purchase Price List,
|
|
||||||
* then Product Purchase Costs
|
|
||||||
* and then Price List
|
|
||||||
* @param as accounting schema
|
|
||||||
* @param create create record
|
|
||||||
* @return costs
|
|
||||||
*/
|
|
||||||
private BigDecimal updateCostsOld (MAcctSchema as, boolean create)
|
|
||||||
{
|
|
||||||
// Create Zero Record
|
|
||||||
if (create)
|
|
||||||
{
|
|
||||||
StringBuffer sql = new StringBuffer ("INSERT INTO M_Product_Costing "
|
|
||||||
+ "(M_Product_ID,C_AcctSchema_ID,"
|
|
||||||
+ " AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,"
|
|
||||||
+ " CurrentCostPrice,CostStandard,FutureCostPrice,"
|
|
||||||
+ " CostStandardPOQty,CostStandardPOAmt,CostStandardCumQty,CostStandardCumAmt,"
|
|
||||||
+ " CostAverage,CostAverageCumQty,CostAverageCumAmt,"
|
|
||||||
+ " PriceLastPO,PriceLastInv, TotalInvQty,TotalInvAmt) "
|
|
||||||
+ "VALUES (");
|
|
||||||
sql.append(m_M_Product_ID).append(",").append(as.getC_AcctSchema_ID()).append(",")
|
|
||||||
.append(as.getAD_Client_ID()).append(",").append(as.getAD_Org_ID()).append(",")
|
|
||||||
.append("'Y',SysDate,0,SysDate,0, 0,0,0, 0,0,0,0, 0,0,0, 0,0, 0,0)");
|
|
||||||
int no = DB.executeUpdate(sql.toString(), m_trxName);
|
|
||||||
if (no == 1)
|
|
||||||
log.fine("CostingCreated");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to find non ZERO Price
|
|
||||||
String costSource = "PriceList-PO";
|
|
||||||
BigDecimal costs = getPriceList (as, true);
|
|
||||||
if (costs == null || costs.compareTo(Env.ZERO)==0)
|
|
||||||
{
|
|
||||||
costSource = "PO Cost";
|
|
||||||
costs = getPOCost(as);
|
|
||||||
}
|
|
||||||
if (costs == null || costs.compareTo(Env.ZERO)==0)
|
|
||||||
{
|
|
||||||
costSource = "PriceList";
|
|
||||||
costs = getPriceList (as, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// if not found use $1 (to be able to do material transactions)
|
|
||||||
if (costs == null || costs.compareTo(Env.ZERO)==0)
|
|
||||||
{
|
|
||||||
costSource = "Not Found";
|
|
||||||
costs = new BigDecimal("1");
|
|
||||||
}
|
|
||||||
|
|
||||||
// update current costs
|
|
||||||
StringBuffer sql = new StringBuffer ("UPDATE M_Product_Costing ");
|
|
||||||
sql.append("SET CurrentCostPrice=").append(costs)
|
|
||||||
.append(" WHERE M_Product_ID=").append(m_M_Product_ID)
|
|
||||||
.append(" AND C_AcctSchema_ID=").append(as.getC_AcctSchema_ID());
|
|
||||||
int no = DB.executeUpdate(sql.toString(), m_trxName);
|
|
||||||
if (no == 1)
|
|
||||||
log.fine(costSource + " - " + costs);
|
|
||||||
return costs;
|
|
||||||
} // createCosts
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get PO Price from PriceList - and convert it to AcctSchema Currency
|
* Get PO Price from PriceList - and convert it to AcctSchema Currency
|
||||||
* @param as accounting schema
|
* @param as accounting schema
|
||||||
|
|
|
@ -1,421 +0,0 @@
|
||||||
/******************************************************************************
|
|
||||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
|
||||||
* Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. *
|
|
||||||
* This program is free software, you can redistribute it and/or modify it *
|
|
||||||
* under the terms version 2 of the GNU General Public License as published *
|
|
||||||
* by the Free Software Foundation. This program is distributed in the hope *
|
|
||||||
* that it will be useful, but WITHOUT ANY WARRANTY, without even the implied *
|
|
||||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
|
||||||
* See the GNU General Public License for more details. *
|
|
||||||
* You should have received a copy of the GNU General Public License along *
|
|
||||||
* with this program, if not, write to the Free Software Foundation, Inc., *
|
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
|
||||||
* For the text or an alternative of this public license, you may reach us *
|
|
||||||
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
|
||||||
* or via info@compiere.org or http://www.compiere.org/license.html *
|
|
||||||
*****************************************************************************/
|
|
||||||
/** Generated Model - DO NOT CHANGE */
|
|
||||||
package org.compiere.model;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.util.Properties;
|
|
||||||
import org.compiere.util.Env;
|
|
||||||
|
|
||||||
/** Generated Model for M_Product_Costing
|
|
||||||
* @author Adempiere (generated)
|
|
||||||
* @version Release 3.6.0LTS - $Id$ */
|
|
||||||
public class X_M_Product_Costing extends PO implements I_M_Product_Costing, I_Persistent
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private static final long serialVersionUID = 20100614L;
|
|
||||||
|
|
||||||
/** Standard Constructor */
|
|
||||||
public X_M_Product_Costing (Properties ctx, int M_Product_Costing_ID, String trxName)
|
|
||||||
{
|
|
||||||
super (ctx, M_Product_Costing_ID, trxName);
|
|
||||||
/** if (M_Product_Costing_ID == 0)
|
|
||||||
{
|
|
||||||
setC_AcctSchema_ID (0);
|
|
||||||
setCostAverage (Env.ZERO);
|
|
||||||
setCostAverageCumAmt (Env.ZERO);
|
|
||||||
setCostAverageCumQty (Env.ZERO);
|
|
||||||
setCostStandard (Env.ZERO);
|
|
||||||
setCostStandardCumAmt (Env.ZERO);
|
|
||||||
setCostStandardCumQty (Env.ZERO);
|
|
||||||
setCostStandardPOAmt (Env.ZERO);
|
|
||||||
setCostStandardPOQty (Env.ZERO);
|
|
||||||
setCurrentCostPrice (Env.ZERO);
|
|
||||||
setFutureCostPrice (Env.ZERO);
|
|
||||||
setM_Product_ID (0);
|
|
||||||
setPriceLastInv (Env.ZERO);
|
|
||||||
setPriceLastPO (Env.ZERO);
|
|
||||||
setTotalInvAmt (Env.ZERO);
|
|
||||||
setTotalInvQty (Env.ZERO);
|
|
||||||
} */
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Load Constructor */
|
|
||||||
public X_M_Product_Costing (Properties ctx, ResultSet rs, String trxName)
|
|
||||||
{
|
|
||||||
super (ctx, rs, trxName);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** AccessLevel
|
|
||||||
* @return 3 - Client - Org
|
|
||||||
*/
|
|
||||||
protected int get_AccessLevel()
|
|
||||||
{
|
|
||||||
return accessLevel.intValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Load Meta Data */
|
|
||||||
protected POInfo initPO (Properties ctx)
|
|
||||||
{
|
|
||||||
POInfo poi = POInfo.getPOInfo (ctx, Table_ID, get_TrxName());
|
|
||||||
return poi;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
StringBuffer sb = new StringBuffer ("X_M_Product_Costing[")
|
|
||||||
.append(get_ID()).append("]");
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public I_C_AcctSchema getC_AcctSchema() throws RuntimeException
|
|
||||||
{
|
|
||||||
return (I_C_AcctSchema)MTable.get(getCtx(), I_C_AcctSchema.Table_Name)
|
|
||||||
.getPO(getC_AcctSchema_ID(), get_TrxName()); }
|
|
||||||
|
|
||||||
/** Set Accounting Schema.
|
|
||||||
@param C_AcctSchema_ID
|
|
||||||
Rules for accounting
|
|
||||||
*/
|
|
||||||
public void setC_AcctSchema_ID (int C_AcctSchema_ID)
|
|
||||||
{
|
|
||||||
if (C_AcctSchema_ID < 1)
|
|
||||||
set_ValueNoCheck (COLUMNNAME_C_AcctSchema_ID, null);
|
|
||||||
else
|
|
||||||
set_ValueNoCheck (COLUMNNAME_C_AcctSchema_ID, Integer.valueOf(C_AcctSchema_ID));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Accounting Schema.
|
|
||||||
@return Rules for accounting
|
|
||||||
*/
|
|
||||||
public int getC_AcctSchema_ID ()
|
|
||||||
{
|
|
||||||
Integer ii = (Integer)get_Value(COLUMNNAME_C_AcctSchema_ID);
|
|
||||||
if (ii == null)
|
|
||||||
return 0;
|
|
||||||
return ii.intValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Average Cost.
|
|
||||||
@param CostAverage
|
|
||||||
Weighted average costs
|
|
||||||
*/
|
|
||||||
public void setCostAverage (BigDecimal CostAverage)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_CostAverage, CostAverage);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Average Cost.
|
|
||||||
@return Weighted average costs
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostAverage ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_CostAverage);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Average Cost Amount Sum.
|
|
||||||
@param CostAverageCumAmt
|
|
||||||
Cumulative average cost amounts (internal)
|
|
||||||
*/
|
|
||||||
public void setCostAverageCumAmt (BigDecimal CostAverageCumAmt)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_CostAverageCumAmt, CostAverageCumAmt);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Average Cost Amount Sum.
|
|
||||||
@return Cumulative average cost amounts (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostAverageCumAmt ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_CostAverageCumAmt);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Average Cost Quantity Sum.
|
|
||||||
@param CostAverageCumQty
|
|
||||||
Cumulative average cost quantities (internal)
|
|
||||||
*/
|
|
||||||
public void setCostAverageCumQty (BigDecimal CostAverageCumQty)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_CostAverageCumQty, CostAverageCumQty);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Average Cost Quantity Sum.
|
|
||||||
@return Cumulative average cost quantities (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostAverageCumQty ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_CostAverageCumQty);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Standard Cost.
|
|
||||||
@param CostStandard
|
|
||||||
Standard Costs
|
|
||||||
*/
|
|
||||||
public void setCostStandard (BigDecimal CostStandard)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_CostStandard, CostStandard);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Standard Cost.
|
|
||||||
@return Standard Costs
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostStandard ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_CostStandard);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Std Cost Amount Sum.
|
|
||||||
@param CostStandardCumAmt
|
|
||||||
Standard Cost Invoice Amount Sum (internal)
|
|
||||||
*/
|
|
||||||
public void setCostStandardCumAmt (BigDecimal CostStandardCumAmt)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_CostStandardCumAmt, CostStandardCumAmt);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Std Cost Amount Sum.
|
|
||||||
@return Standard Cost Invoice Amount Sum (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostStandardCumAmt ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_CostStandardCumAmt);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Std Cost Quantity Sum.
|
|
||||||
@param CostStandardCumQty
|
|
||||||
Standard Cost Invoice Quantity Sum (internal)
|
|
||||||
*/
|
|
||||||
public void setCostStandardCumQty (BigDecimal CostStandardCumQty)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_CostStandardCumQty, CostStandardCumQty);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Std Cost Quantity Sum.
|
|
||||||
@return Standard Cost Invoice Quantity Sum (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostStandardCumQty ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_CostStandardCumQty);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Std PO Cost Amount Sum.
|
|
||||||
@param CostStandardPOAmt
|
|
||||||
Standard Cost Purchase Order Amount Sum (internal)
|
|
||||||
*/
|
|
||||||
public void setCostStandardPOAmt (BigDecimal CostStandardPOAmt)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_CostStandardPOAmt, CostStandardPOAmt);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Std PO Cost Amount Sum.
|
|
||||||
@return Standard Cost Purchase Order Amount Sum (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostStandardPOAmt ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_CostStandardPOAmt);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Std PO Cost Quantity Sum.
|
|
||||||
@param CostStandardPOQty
|
|
||||||
Standard Cost Purchase Order Quantity Sum (internal)
|
|
||||||
*/
|
|
||||||
public void setCostStandardPOQty (BigDecimal CostStandardPOQty)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_CostStandardPOQty, CostStandardPOQty);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Std PO Cost Quantity Sum.
|
|
||||||
@return Standard Cost Purchase Order Quantity Sum (internal)
|
|
||||||
*/
|
|
||||||
public BigDecimal getCostStandardPOQty ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_CostStandardPOQty);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Current Cost Price.
|
|
||||||
@param CurrentCostPrice
|
|
||||||
The currently used cost price
|
|
||||||
*/
|
|
||||||
public void setCurrentCostPrice (BigDecimal CurrentCostPrice)
|
|
||||||
{
|
|
||||||
set_Value (COLUMNNAME_CurrentCostPrice, CurrentCostPrice);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Current Cost Price.
|
|
||||||
@return The currently used cost price
|
|
||||||
*/
|
|
||||||
public BigDecimal getCurrentCostPrice ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_CurrentCostPrice);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Future Cost Price.
|
|
||||||
@param FutureCostPrice Future Cost Price */
|
|
||||||
public void setFutureCostPrice (BigDecimal FutureCostPrice)
|
|
||||||
{
|
|
||||||
set_Value (COLUMNNAME_FutureCostPrice, FutureCostPrice);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Future Cost Price.
|
|
||||||
@return Future Cost Price */
|
|
||||||
public BigDecimal getFutureCostPrice ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_FutureCostPrice);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
public I_M_Product getM_Product() throws RuntimeException
|
|
||||||
{
|
|
||||||
return (I_M_Product)MTable.get(getCtx(), I_M_Product.Table_Name)
|
|
||||||
.getPO(getM_Product_ID(), get_TrxName()); }
|
|
||||||
|
|
||||||
/** Set Product.
|
|
||||||
@param M_Product_ID
|
|
||||||
Product, Service, Item
|
|
||||||
*/
|
|
||||||
public void setM_Product_ID (int M_Product_ID)
|
|
||||||
{
|
|
||||||
if (M_Product_ID < 1)
|
|
||||||
set_ValueNoCheck (COLUMNNAME_M_Product_ID, null);
|
|
||||||
else
|
|
||||||
set_ValueNoCheck (COLUMNNAME_M_Product_ID, Integer.valueOf(M_Product_ID));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Product.
|
|
||||||
@return Product, Service, Item
|
|
||||||
*/
|
|
||||||
public int getM_Product_ID ()
|
|
||||||
{
|
|
||||||
Integer ii = (Integer)get_Value(COLUMNNAME_M_Product_ID);
|
|
||||||
if (ii == null)
|
|
||||||
return 0;
|
|
||||||
return ii.intValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Last Invoice Price.
|
|
||||||
@param PriceLastInv
|
|
||||||
Price of the last invoice for the product
|
|
||||||
*/
|
|
||||||
public void setPriceLastInv (BigDecimal PriceLastInv)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_PriceLastInv, PriceLastInv);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Last Invoice Price.
|
|
||||||
@return Price of the last invoice for the product
|
|
||||||
*/
|
|
||||||
public BigDecimal getPriceLastInv ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_PriceLastInv);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Last PO Price.
|
|
||||||
@param PriceLastPO
|
|
||||||
Price of the last purchase order for the product
|
|
||||||
*/
|
|
||||||
public void setPriceLastPO (BigDecimal PriceLastPO)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_PriceLastPO, PriceLastPO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Last PO Price.
|
|
||||||
@return Price of the last purchase order for the product
|
|
||||||
*/
|
|
||||||
public BigDecimal getPriceLastPO ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_PriceLastPO);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Total Invoice Amount.
|
|
||||||
@param TotalInvAmt
|
|
||||||
Cumulative total lifetime invoice amount
|
|
||||||
*/
|
|
||||||
public void setTotalInvAmt (BigDecimal TotalInvAmt)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_TotalInvAmt, TotalInvAmt);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Total Invoice Amount.
|
|
||||||
@return Cumulative total lifetime invoice amount
|
|
||||||
*/
|
|
||||||
public BigDecimal getTotalInvAmt ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_TotalInvAmt);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Total Invoice Quantity.
|
|
||||||
@param TotalInvQty
|
|
||||||
Cumulative total lifetime invoice quantity
|
|
||||||
*/
|
|
||||||
public void setTotalInvQty (BigDecimal TotalInvQty)
|
|
||||||
{
|
|
||||||
set_ValueNoCheck (COLUMNNAME_TotalInvQty, TotalInvQty);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Total Invoice Quantity.
|
|
||||||
@return Cumulative total lifetime invoice quantity
|
|
||||||
*/
|
|
||||||
public BigDecimal getTotalInvQty ()
|
|
||||||
{
|
|
||||||
BigDecimal bd = (BigDecimal)get_Value(COLUMNNAME_TotalInvQty);
|
|
||||||
if (bd == null)
|
|
||||||
return Env.ZERO;
|
|
||||||
return bd;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -59,7 +59,7 @@ public class Merge
|
||||||
/** Tables to delete (not update) for M_Product */
|
/** Tables to delete (not update) for M_Product */
|
||||||
public static String[] s_delete_Product = new String[]
|
public static String[] s_delete_Product = new String[]
|
||||||
{"M_Product_PO", "M_Replenish", "T_Replenish",
|
{"M_Product_PO", "M_Replenish", "T_Replenish",
|
||||||
"M_ProductPrice", "M_Product_Costing",
|
"M_ProductPrice",
|
||||||
"M_Cost", // teo_sarca [ 1704554 ]
|
"M_Cost", // teo_sarca [ 1704554 ]
|
||||||
"M_Product_Trl", "M_Product_Acct"}; // M_Storage
|
"M_Product_Trl", "M_Product_Acct"}; // M_Storage
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue