diff --git a/base/src/org/compiere/acct/Doc.java b/base/src/org/compiere/acct/Doc.java index e54cdb156f..e5f6bb59cd 100644 --- a/base/src/org/compiere/acct/Doc.java +++ b/base/src/org/compiere/acct/Doc.java @@ -350,7 +350,7 @@ public abstract class Doc else if (AD_Table_ID == MHRProcess.Table_ID) doc = new Doc_Payroll (ass, rs, trxName); else if (AD_Table_ID == MPPCostCollector.Table_ID) - doc = new Doc_Cost_Collector (ass, rs, trxName); + doc = new Doc_CostCollector (ass, rs, trxName); if (doc == null) s_log.log(Level.SEVERE, "Unknown AD_Table_ID=" + AD_Table_ID); return doc; diff --git a/base/src/org/compiere/acct/Doc_Cost_Collector.java b/base/src/org/compiere/acct/Doc_CostCollector.java similarity index 55% rename from base/src/org/compiere/acct/Doc_Cost_Collector.java rename to base/src/org/compiere/acct/Doc_CostCollector.java index 4751c73eef..1b68a155ac 100644 --- a/base/src/org/compiere/acct/Doc_Cost_Collector.java +++ b/base/src/org/compiere/acct/Doc_CostCollector.java @@ -18,6 +18,7 @@ package org.compiere.acct; import java.math.BigDecimal; import java.sql.ResultSet; import java.util.ArrayList; +import java.util.Collection; import org.compiere.model.MAccount; import org.compiere.model.MAcctSchema; @@ -42,7 +43,7 @@ import org.eevolution.model.MPPOrderNode; * * @author victor.perez@e-evolution.com http://www.e-evolution.com */ -public class Doc_Cost_Collector extends Doc +public class Doc_CostCollector extends Doc { @@ -52,7 +53,7 @@ public class Doc_Cost_Collector extends Doc * @param rs record * @param trxName trx */ - protected Doc_Cost_Collector (MAcctSchema[] ass, ResultSet rs, String trxName) + protected Doc_CostCollector (MAcctSchema[] ass, ResultSet rs, String trxName) { super(ass, MPPCostCollector.class, rs, DOCTYPE_MOrder, trxName); } //Doc Cost Collector @@ -118,62 +119,28 @@ public class Doc_Cost_Collector extends Doc MAccount credit = m_line.getAccount(ProductCost.ACCTTYPE_P_WorkInProcess, as); BigDecimal cost = Env.ZERO; - //Material - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_Material,m_cc.getMovementQty()); - createLines(MCostElement.COSTELEMENTTYPE_Material, as, fact, product, debit, credit, cost,m_cc.getMovementQty() ); - - //Resource (Labor) - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_Resource,m_cc.getMovementQty()); - createLines(MCostElement.COSTELEMENTTYPE_Resource, as, fact, product, debit, credit, cost,m_cc.getMovementQty()); - - //Burden - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_BurdenMOverhead,m_cc.getMovementQty()); - createLines(MCostElement.COSTELEMENTTYPE_BurdenMOverhead, as, fact, product, debit, credit, cost,m_cc.getMovementQty()); - - //Outsite Processing - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_OutsideProcessing,m_cc.getMovementQty()); - createLines(MCostElement.COSTELEMENTTYPE_OutsideProcessing, as, fact, product, debit, credit, cost, m_cc.getMovementQty()); - - //Overhead Applied - credit = m_line.getAccount(ProductCost.ACCTTYPE_P_Overhead, as); - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_Overhead,m_cc.getMovementQty()); - createLines(MCostElement.COSTELEMENTTYPE_OutsideProcessing, as, fact, product, debit, credit, cost, m_cc.getMovementQty()); + Collection elements = MCostElement.getByCostingMethod(getCtx(), as.getCostingMethod()); + for(MCostElement element : elements) + { + cost = MCost.getCostByCostType(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), + as.getM_CostType_ID() , element.getCostElementType(),m_cc.getMovementQty()); + createLines(element.getCostElementType(), as, fact, product, debit, credit, cost,m_cc.getMovementQty()); + log.info("Account Fact for Cost Element:" + element.getName() + " Cost:" + cost); + } //Account Scrap if(m_cc.getScrappedQty().signum() != 0) { credit = m_line.getAccount(ProductCost.ACCTTYPE_P_WorkInProcess, as); debit = m_line.getAccount(ProductCost.ACCTTYPE_P_Scrap, as); - //Material - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_Material,m_cc.getScrappedQty()); - createLines(MCostElement.COSTELEMENTTYPE_Material, as, fact, product, debit, credit, cost,m_cc.getScrappedQty()); - //Resource (Labor) - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_Resource,m_cc.getScrappedQty()); - createLines(MCostElement.COSTELEMENTTYPE_Resource, as, fact, product, debit, credit, cost, m_cc.getScrappedQty()); - - //Burden - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_BurdenMOverhead,m_cc.getScrappedQty()); - createLines(MCostElement.COSTELEMENTTYPE_BurdenMOverhead, as, fact, product, debit, credit, cost, m_cc.getScrappedQty()); - - //Outsite Processing - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_OutsideProcessing,m_cc.getScrappedQty()); - createLines(MCostElement.COSTELEMENTTYPE_OutsideProcessing, as, fact, product, debit, credit, cost, m_cc.getScrappedQty()); - - //Overhead Applied - credit = m_line.getAccount(ProductCost.ACCTTYPE_P_Overhead, as); - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_Overhead,m_cc.getScrappedQty()); - createLines(MCostElement.COSTELEMENTTYPE_OutsideProcessing, as, fact, product, debit, credit, cost, m_cc.getScrappedQty()); + for(MCostElement element : elements) + { + cost = MCost.getCostByCostType(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), + as.getM_CostType_ID() , element.getCostElementType(),m_cc.getMovementQty()); + createLines(element.getCostElementType(), as, fact, product, debit, credit, cost,m_cc.getMovementQty()); + log.info("Account Fact for Cost Element:" + element.getName() + " Cost:" + cost); + } } } else if (MPPCostCollector.COSTCOLLECTORTYPE_ComponentIssue.equals(m_cc.getCostCollectorType())) @@ -196,33 +163,15 @@ public class Doc_Cost_Collector extends Doc } BigDecimal cost = Env.ZERO; - //Material - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_Material,m_cc.getMovementQty()); - createLines(MCostElement.COSTELEMENTTYPE_Material, as, fact, product, debit, credit, cost, m_cc.getMovementQty()); - - //Resource (Labor) - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_Resource,m_cc.getMovementQty()); - createLines(MCostElement.COSTELEMENTTYPE_Resource, as, fact, product, debit, credit, cost, m_cc.getMovementQty()); - - //Burden - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_BurdenMOverhead,m_cc.getMovementQty()); - createLines(MCostElement.COSTELEMENTTYPE_BurdenMOverhead, as, fact, product, debit, credit, cost, m_cc.getMovementQty()); - - //Outsite Processing - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_OutsideProcessing,m_cc.getMovementQty()); - createLines(MCostElement.COSTELEMENTTYPE_OutsideProcessing, as, fact, product, debit, credit, cost, m_cc.getMovementQty()); - - //Overhead Applied - credit = m_line.getAccount(ProductCost.ACCTTYPE_P_Overhead, as); - cost = MCost.getCostByCostingMethod(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), - MCostElement.COSTINGMETHOD_StandardCosting, MCostElement.COSTELEMENTTYPE_Overhead,m_cc.getMovementQty()); - createLines(MCostElement.COSTELEMENTTYPE_OutsideProcessing, as, fact, product, debit, credit, cost, m_cc.getMovementQty()); - + Collection elements = MCostElement.getByCostingMethod(getCtx(), as.getCostingMethod()); + for(MCostElement element : elements) + { + cost = MCost.getCostByCostType(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(), + as.getM_CostType_ID() , element.getCostElementType(),m_cc.getMovementQty()); + createLines(element.getCostElementType(), as, fact, product, debit, credit, cost,m_cc.getMovementQty()); + log.info("Account Fact for Cost Element:" + element.getName() + " Cost:" + cost); + } } else if (MPPCostCollector.COSTCOLLECTORTYPE_ActivityControl.equals(m_cc.getCostCollectorType())) { diff --git a/base/src/org/compiere/model/MCost.java b/base/src/org/compiere/model/MCost.java index de827d4c82..0fccc699af 100644 --- a/base/src/org/compiere/model/MCost.java +++ b/base/src/org/compiere/model/MCost.java @@ -57,14 +57,14 @@ public class MCost extends X_M_Cost * @param as Account Schema * @param AD_Org_ID Organization ID * @param M_AttributeSetInstance_ID Attribute Set Instance ID - * @param CostingMethod Costing Method + * @param C_CostType_ID TODO * @param CostElementType Cost Element Type * @param Qty Quantity * @return Get the the Total Cost for this Cost Element Type and Costing Method */ - public static BigDecimal getCostByCostingMethod (MProduct product, MAcctSchema as, + public static BigDecimal getCostByCostType (MProduct product, MAcctSchema as, int AD_Org_ID, int M_AttributeSetInstance_ID, - String CostingMethod, String CostElementType, + int C_CostType_ID, String CostElementType, BigDecimal Qty) { //Set the Costing Level @@ -87,7 +87,7 @@ public class MCost extends X_M_Cost + " AND C_AcctSchema_ID=?" + " AND EXISTS ( SELECT 1 FROM M_CostElement ce " + " WHERE ce.M_CostElement_ID=M_Cost.M_CostElement_ID " - + " AND ce.CostingMethod=? AND ce.CostElementType=?)"; + + " AND ce.CostElementType=?)"; costs = new Query(product.getCtx(), MCost.Table_Name, whereClause, product.get_TrxName()) @@ -97,7 +97,8 @@ public class MCost extends X_M_Cost product.getM_Product_ID(), M_AttributeSetInstance_ID, as.getC_AcctSchema_ID(), - CostingMethod, CostElementType}) + CostElementType}) + .setOnlyActiveRecords(true) .list(); for(MCost cost : costs) { @@ -108,18 +109,21 @@ public class MCost extends X_M_Cost } // get /** - * Get MCost for this Cost Element Type and Costing Method + * Get MCost for Cost Type and Cost Element Type * @param product Product * @param as Account Schema * @param AD_Org_ID Organization ID * @param M_AttributeSetInstance_ID Attribute Set Instance ID - * @param CostingMethod Costing Method * @param CostElementType Cost Element Type - * @return Get MCost Collection for this Cost Element Type and Costing Method + * @return Get MCost Collection for Cost Type and Cost Element Type */ - public static Collection getByCostingMethod (MProduct product, MAcctSchema as, - int AD_Org_ID, int M_AttributeSetInstance_ID, - String CostingMethod, String CostElementType) + public static Collection getByCostType ( + MProduct product, + MAcctSchema as, + int M_CostType_ID , + int AD_Org_ID, + int M_AttributeSetInstance_ID , + String CostElementType) { //Set the Costing Level String CostingLevel = product.getCostingLevel(as); @@ -137,19 +141,46 @@ public class MCost extends X_M_Cost + " AND M_Product_ID=?" + " AND M_AttributeSetInstance_ID=?" + " AND C_AcctSchema_ID=?" + + " AND M_CostType_ID=?" + " AND EXISTS ( SELECT 1 FROM M_CostElement ce " - + " WHERE ce.M_CostElement_ID=M_Cost.M_CostElement_ID " - + " AND ce.CostingMethod=? AND ce.CostElementType=?)"; + + " WHERE ce.M_CostElement_ID=M_Cost.M_CostElement_ID "; + + List params = new ArrayList(); + params.add(product.getAD_Client_ID()); + params.add(AD_Org_ID); + params.add(product.getM_Product_ID()); + params.add(M_AttributeSetInstance_ID); + params.add(as.getC_AcctSchema_ID()); + params.add(M_CostType_ID); + if(CostElementType != null) + { + params.add(CostElementType); + whereClause += "AND ce.CostElementType=?"; + } + + whereClause += ")"; - return new Query(product.getCtx(), MCost.Table_Name, whereClause, product.get_TrxName()) - .setParameters(new Object[]{ - product.getAD_Client_ID(), - AD_Org_ID, - product.getM_Product_ID(), - M_AttributeSetInstance_ID, - as.getC_AcctSchema_ID(), - CostingMethod, CostElementType}).list(); + .setParameters(params) + .setOnlyActiveRecords(true) + .list(); + } // get + + /** + * Get MCost for for Cost Type + * @param product Product + * @param as Account Schema + * @param M_CostType_ID Cost Type + * @param AD_Org_ID Organization ID + * @param M_AttributeSetInstance_ID Attribute Set Instance ID + * @param CostElementType Cost Element Type + * @return Get MCost Collection for Cost Type + */ + public static Collection getByCostType (MProduct product, MAcctSchema as, int M_CostType_ID , + int AD_Org_ID, int M_AttributeSetInstance_ID) + { + return getByCostType (product, as, M_CostType_ID, + AD_Org_ID, M_AttributeSetInstance_ID, null); } // get /** @@ -1420,33 +1451,12 @@ public class MCost extends X_M_Cost M_CostType_ID, C_AcctSchema_ID, M_CostElement_ID, M_AttributeSetInstance_ID}; return new Query(ctx, Table_Name, whereClause, null) + .setOnlyActiveRecords(true) .setParameters(params) .first(); } // get - /** - * Get Costs Record for a Cost Type - * @param ctx context - * @param AD_Client_ID client - * @param AD_Org_ID org - * @param M_Product_ID product - * @param M_CostType_ID cost type - * @param C_AcctSchema_ID as - * @param TrxName transaction name - * @return array costs - */ - public static MCost[] getCosts(Properties ctx , int AD_Client_ID, int AD_Org_ID , int M_Product_ID, int M_CostType_ID ,int C_AcctSchema_ID ,String trxName) - { - - String whereClause = "AD_Client_ID = ? AND AD_Org_ID = ? AND M_Product_ID= ? AND C_Acctschema_ID = ? AND M_CostType_ID = ? "; - Query query = MTable.get(ctx, MCost.Table_ID) - .createQuery(whereClause, trxName); - query.setParameters(new Object[]{AD_Client_ID, AD_Org_ID, M_Product_ID, C_AcctSchema_ID, M_CostType_ID}); - List list = query.list(); - MCost[] retValue = new MCost[list.size()]; - list.toArray(retValue); - return retValue; - } + /** * Get Costs Record for a Cost Type @@ -1466,6 +1476,7 @@ public class MCost extends X_M_Cost Query query = MTable.get(ctx, MCost.Table_ID) .createQuery(whereClause, trxName); query.setParameters(new Object[]{AD_Client_ID, AD_Org_ID, M_Product_ID, C_AcctSchema_ID, M_CostType_ID, M_CostElement_ID}); + query.setOnlyActiveRecords(true); List list = query.list(); for (MCost cost : list) { diff --git a/base/src/org/compiere/model/MCostElement.java b/base/src/org/compiere/model/MCostElement.java index 2972020856..4cb4ce9bc2 100644 --- a/base/src/org/compiere/model/MCostElement.java +++ b/base/src/org/compiere/model/MCostElement.java @@ -338,6 +338,7 @@ public class MCostElement extends X_M_CostElement final String whereClause = "CostingMethod=?"; return new Query(ctx, Table_Name, whereClause, null) .setClient_ID() + .setOnlyActiveRecords(true) .setParameters(new Object[]{CostingMethod}) .list(); } diff --git a/base/src/org/compiere/wf/MWFNode.java b/base/src/org/compiere/wf/MWFNode.java index a038e57b7c..5105d13bc9 100644 --- a/base/src/org/compiere/wf/MWFNode.java +++ b/base/src/org/compiere/wf/MWFNode.java @@ -676,7 +676,10 @@ public class MWFNode extends X_AD_WF_Node */ public BigDecimal getCostForCostElementType(String CostElementType, int C_AcctSchema_ID,int M_CostType_ID,int AD_Org_ID,int setuptime, int duration) { - MResource resource = (MResource) getS_Resource(); + MResource resource = MResource.get(getCtx(), getS_Resource_ID()); + if(resource == null) + return Env.ZERO; + //get the rate and convert in second for this cost type element (Resource, Burden) MWorkflow workflow = getWorkflow(); // Validate the CostingLevel diff --git a/base/src/org/eevolution/model/MPPOrder.java b/base/src/org/eevolution/model/MPPOrder.java index 76c6bd7db9..0dde0f8aa0 100644 --- a/base/src/org/eevolution/model/MPPOrder.java +++ b/base/src/org/eevolution/model/MPPOrder.java @@ -31,6 +31,7 @@ import org.adempiere.exceptions.DocTypeNotFoundException; import org.compiere.model.MAcctSchema; import org.compiere.model.MClient; import org.compiere.model.MCost; +import org.compiere.model.MCostElement; import org.compiere.model.MDocType; import org.compiere.model.MProduct; import org.compiere.model.MProject; @@ -561,14 +562,14 @@ public class MPPOrder extends X_PP_Order implements DocAction approveIt(); } - MAcctSchema acctSchema = MClient.get(getCtx(), getAD_Client_ID()).getAcctSchema(); - log.info("Cost_Group_ID" + acctSchema.getM_CostType_ID()); + MAcctSchema as = MClient.get(getCtx(), getAD_Client_ID()).getAcctSchema(); + log.info("Cost_Group_ID" + as.getM_CostType_ID()); // // Create Standard Costs for Order - MCost[] costs = MCost.getCosts(getCtx(), getAD_Client_ID(), getAD_Org_ID(), getM_Product_ID(), - acctSchema.getM_CostType_ID(), acctSchema.get_ID(), - get_TrxName()); + Collection costs = MCost.getByCostType(getM_Product(), as, as.getM_CostType_ID(), + getAD_Org_ID(), getM_AttributeSetInstance_ID()); + for (MCost cost : costs) { MPPOrderCost PP_Order_Cost = new MPPOrderCost(cost, get_ID(), get_TrxName()); @@ -579,9 +580,9 @@ public class MPPOrder extends X_PP_Order implements DocAction // Create Standard Costs for Order BOM Line for (MPPOrderBOMLine line : getLines()) { - costs = MCost.getCosts(getCtx(), getAD_Client_ID(), getAD_Org_ID(), line.getM_Product_ID(), - acctSchema.getM_CostType_ID(), acctSchema.get_ID(), - get_TrxName()); + costs = MCost.getByCostType(line.getM_Product(), as, as.getM_CostType_ID(), + getAD_Org_ID(), getM_AttributeSetInstance_ID()); + for (MCost cost : costs) { MPPOrderCost PP_Order_Cost = new MPPOrderCost(cost, get_ID(), get_TrxName()); diff --git a/base/src/org/eevolution/process/CopyPriceToStandard.java b/base/src/org/eevolution/process/CopyPriceToStandard.java index 41f1408760..ff61d044be 100644 --- a/base/src/org/eevolution/process/CopyPriceToStandard.java +++ b/base/src/org/eevolution/process/CopyPriceToStandard.java @@ -20,6 +20,7 @@ import java.math.BigDecimal; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.Collection; import java.util.Properties; import java.util.logging.Level; @@ -27,6 +28,7 @@ import org.compiere.model.MAcctSchema; import org.compiere.model.MConversionRate; import org.compiere.model.MCost; import org.compiere.model.MCostElement; +import org.compiere.model.MProduct; import org.compiere.process.ProcessInfoParameter; import org.compiere.process.SvrProcess; import org.compiere.util.DB; @@ -100,7 +102,6 @@ public class CopyPriceToStandard extends SvrProcess protected String doIt() throws Exception { - //System.out.println("PARAMETROS : p_C_AcctSchema_ID" + p_C_AcctSchema_ID + "p_PP_Cost_Group_ID" + p_PP_Cost_Group_ID + "p_M_Warehouse_ID" + p_M_Warehouse_ID + "p_S_Resource_ID" + p_S_Resource_ID); BigDecimal price = Env.ZERO; BigDecimal convrate = Env.ZERO; int M_PriceList_ID =0; @@ -108,7 +109,7 @@ public class CopyPriceToStandard extends SvrProcess int M_Product_ID =0; int C_Currency_ID = 0; BigDecimal list = Env.ZERO; - MAcctSchema schema = new MAcctSchema(ctx,p_C_AcctSchema_ID ,null); + MAcctSchema as = new MAcctSchema(ctx,p_C_AcctSchema_ID ,null); StringBuffer sql = new StringBuffer("SELECT M_Product_ID,M_PriceList_Version_ID, PriceStd FROM M_ProductPrice WHERE M_PriceList_Version_ID =" +p_M_PriceList_Version_ID +" AND PriceStd <> 0"); try { @@ -119,34 +120,28 @@ public class CopyPriceToStandard extends SvrProcess // while (rs.next()) { - M_Product_ID = rs.getInt(1); - M_PriceList_Version_ID = rs.getInt(2); - - //System.out.println("M_Product_ID" + product_id + "p_C_AcctSchema_ID" + p_C_AcctSchema_ID + "p_PP_Cost_Group_ID" + p_PP_Cost_Group_ID + "p_M_Warehouse_ID" + p_M_Warehouse_ID + "p_S_Resource_ID" + p_S_Resource_ID); - M_PriceList_ID = DB.getSQLValue(get_TrxName(),"SELECT M_PriceList_ID FROM M_PriceList_Version WHERE M_PriceList_Version_ID = ? " ,M_PriceList_Version_ID ); - C_Currency_ID = DB.getSQLValue(get_TrxName() , "SELECT C_Currency_ID FROM M_PriceList WHERE M_PriceList_ID = ?",M_PriceList_ID); + M_Product_ID = rs.getInt(1); + M_PriceList_Version_ID = rs.getInt(2); + + M_PriceList_ID = DB.getSQLValue(get_TrxName(),"SELECT M_PriceList_ID FROM M_PriceList_Version WHERE M_PriceList_Version_ID = ? " ,M_PriceList_Version_ID ); + C_Currency_ID = DB.getSQLValue(get_TrxName() , "SELECT C_Currency_ID FROM M_PriceList WHERE M_PriceList_ID = ?",M_PriceList_ID); - if (C_Currency_ID!=schema.getC_Currency_ID()) + if (C_Currency_ID!=as.getC_Currency_ID()) { - price = MConversionRate.convert(ctx,rs.getBigDecimal(3),C_Currency_ID,schema.getC_Currency_ID(),getAD_Client_ID(),p_AD_Org_ID); + price = MConversionRate.convert(ctx,rs.getBigDecimal(3),C_Currency_ID,as.getC_Currency_ID(),getAD_Client_ID(),p_AD_Org_ID); } else price = rs.getBigDecimal(3); - - MCost[] costs = MCost.getCosts(getCtx() , getAD_Client_ID(), p_AD_Org_ID , M_Product_ID , p_M_CostType_ID , p_C_AcctSchema_ID , get_TrxName()); - if (costs != null) - { - for (MCost cost : costs) - { - MCostElement element = new MCostElement(getCtx(), p_M_CostElement_ID, get_TrxName()); - if (element.getCostElementType().equals(element.COSTELEMENTTYPE_Material)) - { - cost.setFutureCostPrice(price); - cost.save(); - break; - } - } - } + MProduct product = MProduct.get(getCtx(), M_Product_ID); + Collection costs = MCost.getByCostType(product, as, p_M_CostType_ID, p_AD_Org_ID, 0, MCostElement.COSTELEMENTTYPE_Material); + + for (MCost cost : costs) + { + MCostElement element = new MCostElement(getCtx(), p_M_CostElement_ID, get_TrxName()); + cost.setFutureCostPrice(price); + cost.save(); + break; + } } rs.close(); pstmt.close(); diff --git a/base/src/org/eevolution/process/RollupBillOfMaterial.java b/base/src/org/eevolution/process/RollupBillOfMaterial.java index d193ada199..13ef74c3c5 100644 --- a/base/src/org/eevolution/process/RollupBillOfMaterial.java +++ b/base/src/org/eevolution/process/RollupBillOfMaterial.java @@ -18,6 +18,7 @@ package org.eevolution.process; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.logging.Level; @@ -45,13 +46,15 @@ public class RollupBillOfMaterial extends SvrProcess { /* Organization */ private int p_AD_Org_ID = 0; - /* Account Schema */ + /* Account Schema */ private int p_C_AcctSchema_ID = 0; /* Cost Type */ private int p_M_CostType_ID = 0; - /* Product */ + /* Costing Method */ + private String p_ConstingMethod = MCostElement.COSTINGMETHOD_StandardCosting; + /* Product */ private int p_M_Product_ID = 0; - /* Product Category */ + /* Product Category */ private int p_M_Product_Category_ID = 0; /** @@ -65,12 +68,14 @@ public class RollupBillOfMaterial extends SvrProcess if (para.getParameter() == null) ; - else if (name.equals("AD_Org_ID")) + else if (name.equals(MCostElement.COLUMNNAME_AD_Org_ID)) p_AD_Org_ID = para.getParameterAsInt(); else if (name.equals(MAcctSchema.COLUMNNAME_C_AcctSchema_ID)) p_C_AcctSchema_ID = para.getParameterAsInt(); else if (name.equals(MCostType.COLUMNNAME_M_CostType_ID)) p_M_CostType_ID = para.getParameterAsInt(); + else if (name.equals(MCostElement.COLUMNNAME_CostingMethod)) + p_ConstingMethod=(String)para.getParameter(); else if (name.equals(MProduct.COLUMNNAME_M_Product_ID)) p_M_Product_ID = para.getParameterAsInt(); else if (name.equals(MProduct.COLUMNNAME_M_Product_Category_ID)) @@ -94,72 +99,43 @@ public class RollupBillOfMaterial extends SvrProcess for (MProduct product : getProducts(lowLevel)) { int AD_Org_ID = p_AD_Org_ID; - // Validate the CostingLevel - MAcctSchema as = MAcctSchema.get(getCtx(), p_C_AcctSchema_ID); - if(MAcctSchema.COSTINGLEVEL_Client.equals(product.getCostingLevel(as))) + MPPProductPlanning pp = MPPProductPlanning.find(getCtx(), p_AD_Org_ID, + 0, // M_Warehouse_ID + 0, // S_Resource_ID + product.getM_Product_ID(), + get_TrxName()); + int yield = 100; + int PP_Product_BOM_ID = 0; + if (pp != null) { - AD_Org_ID = 0; + PP_Product_BOM_ID = pp.getPP_Product_BOM_ID(); + + } + if (PP_Product_BOM_ID <= 0) + { + PP_Product_BOM_ID = MPPProductBOM.getBOMSearchKey(product); + } + if (PP_Product_BOM_ID <= 0) + { + continue; } - for (MCost cost : getCosts(product.get_ID(), AD_Org_ID)) - { - log.info("Calculate Lower Cost for :"+ product.getName()); - MCostElement element = cost.getCostElement(); - log.info("Element Cost:"+ element.getName()); - - // check if element cost is of Material Type - if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_Material)) - { - BigDecimal Material = getCurrentCostPriceLL(MCostElement.COSTELEMENTTYPE_Material, product, AD_Org_ID); - log.info("Material Cost Low Level:" + Material); - cost.setCurrentCostPriceLL(Material); - cost.saveEx(); - } - else if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_Resource)) - { - BigDecimal Labor = getCurrentCostPriceLL(MCostElement.COSTELEMENTTYPE_Resource, product, AD_Org_ID); - log.info("Labor Cost Low Level:" + Labor); - cost.setCurrentCostPriceLL(Labor); - cost.saveEx(); - } - else if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_BurdenMOverhead)) - { - BigDecimal Burder = getCurrentCostPriceLL(MCostElement.COSTELEMENTTYPE_BurdenMOverhead, product, AD_Org_ID); - log.info("Burden Cost Low Level:" + Burder); - cost.setCurrentCostPriceLL(Burder); - cost.saveEx(); - } - else if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_Overhead)) - { - BigDecimal Overhead = getCurrentCostPriceLL(MCostElement.COSTELEMENTTYPE_Overhead, product, AD_Org_ID); - log.info("Overhead Cost Low Level:" + Overhead); - cost.setCurrentCostPriceLL(Overhead); - cost.saveEx(); - } - else if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_OutsideProcessing)) - { - BigDecimal Subcontract = getCurrentCostPriceLL(MCostElement.COSTELEMENTTYPE_OutsideProcessing, product, AD_Org_ID); - log.info("Subcontract Cost Low Level:" + Subcontract); - cost.setCurrentCostPriceLL(Subcontract); - cost.saveEx(); - } - else if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_Overhead)) - { - BigDecimal Subcontract = getCurrentCostPriceLL(MCostElement.COSTELEMENTTYPE_Overhead, product, AD_Org_ID); - log.info("Overhead Cost Low Level:" + Subcontract); - cost.setCurrentCostPriceLL(Subcontract); - cost.saveEx(); - } - /* TODO Comment for future implementation - else if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_Distribution)) - { + MPPProductBOM bom = MPPProductBOM.get(getCtx(), PP_Product_BOM_ID); - BigDecimal Distribution = getCurrentCostPriceLL(MCostElement.COSTELEMENTTYPE_Distribution, M_Product_ID, AD_Org_ID); - cost.setCurrentCostPriceLL(Distribution); - cost.saveEx(); - } - */ - } // for each Costs + Collection elements = MCostElement.getByCostingMethod(getCtx(), p_ConstingMethod); + + for (MCostElement element : elements) + { + for (MCost cost : getCosts(product, element.getCostElementType())) + { + log.info("Calculate Lower Cost for :"+ product.getName()); + log.info("Element Cost:"+ element.getName()); + BigDecimal price = getCurrentCostPriceLL(bom, element, pp != null ? pp.getYield() : 100); + log.info(element.getName() + " Cost Low Level:" + price); + cost.setCurrentCostPriceLL(price); + cost.saveEx(); + } // for each Costs + } // for ELements } // for each Products } // for each LLC return "@OK@"; @@ -175,39 +151,20 @@ public class RollupBillOfMaterial extends SvrProcess * @param C_AcctSchema_ID Account Schema * @return CurrentCostPriceLL Sum Current Cost Price Level Low for this Cost Element Type */ - private BigDecimal getCurrentCostPriceLL(String CostElementType, MProduct product, int AD_Org_ID) + private BigDecimal getCurrentCostPriceLL(MPPProductBOM bom, MCostElement element ,int Yield) { - log.info("ElementType: "+CostElementType); + log.info("ElementType: "+ element.getCostElementType()); BigDecimal costPriceLL = Env.ZERO; - MPPProductPlanning pp = MPPProductPlanning.find(getCtx(), AD_Org_ID, - 0, // M_Warehouse_ID - 0, // S_Resource_ID - product.getM_Product_ID(), - get_TrxName()); - int PP_Product_BOM_ID = 0; - if (pp != null) - { - PP_Product_BOM_ID = pp.getPP_Product_BOM_ID(); - } - if (PP_Product_BOM_ID <= 0) - { - PP_Product_BOM_ID = MPPProductBOM.getBOMSearchKey(product); - } - if (PP_Product_BOM_ID <= 0) - { - return Env.ZERO; - } - - MPPProductBOM bom = MPPProductBOM.get(getCtx(), PP_Product_BOM_ID); for (MPPProductBOMLine bomline : bom.getLines()) { + MProduct component = MProduct.get(getCtx(), bomline.getM_Product_ID()); + // get the rate for this resource - for (MCost cost : getCosts(bomline.getM_Product_ID(), AD_Org_ID)) + for (MCost cost : getCosts(component, element.getCostElementType())) { - MCostElement element = cost.getCostElement(); // check if current cost element type is specified cost element type - if (element.getCostElementType().equals(CostElementType)) + if (element.getCostElementType().equals(element.getCostElementType())) { BigDecimal qtyPercentage = bomline.getQtyBatch().divide(Env.ONEHUNDRED, 8, BigDecimal.ROUND_UP); BigDecimal qtyBOM = bomline.getQtyBOM(); @@ -231,27 +188,29 @@ public class RollupBillOfMaterial extends SvrProcess } } // for each cost } // for each BOM line - // - // Try find planning Data for this product and get % Yield to calculate cost - if (pp != null) - { - int yield = pp.getYield(); - if(yield != 0) - { - BigDecimal decimalYield = new BigDecimal(yield / 100); - costPriceLL = costPriceLL.divide(decimalYield, 4 ,BigDecimal.ROUND_HALF_UP); - } - } + + if(Yield != 0) + { + BigDecimal decimalYield = new BigDecimal(Yield / 100); + costPriceLL = costPriceLL.divide(decimalYield, 4 ,BigDecimal.ROUND_HALF_UP); + } + return costPriceLL; } - private MCost[] getCosts(int product_id, int AD_Org_ID) + private Collection getCosts(MProduct product,String CostElementType) { - return MCost.getCosts(getCtx(), getAD_Client_ID(), p_AD_Org_ID, product_id, - p_M_CostType_ID, p_C_AcctSchema_ID , get_TrxName()); + MAcctSchema as = MAcctSchema.get(getCtx(), p_C_AcctSchema_ID); + return MCost.getByCostType( + product, + as, + p_M_CostType_ID, + p_AD_Org_ID, + 0, // ASI + CostElementType); } - private List getProducts(int lowLevel) + private Collection getProducts(int lowLevel) { List params = new ArrayList(); StringBuffer whereClause = new StringBuffer("AD_Client_ID=? AND LowLevel=? AND ProductType=?"); diff --git a/base/src/org/eevolution/process/RollupWorkflow.java b/base/src/org/eevolution/process/RollupWorkflow.java index b83aaf6ec2..df318a0fae 100644 --- a/base/src/org/eevolution/process/RollupWorkflow.java +++ b/base/src/org/eevolution/process/RollupWorkflow.java @@ -19,6 +19,7 @@ package org.eevolution.process; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.logging.Level; @@ -47,52 +48,50 @@ import org.eevolution.model.MPPProductPlanning; public class RollupWorkflow extends SvrProcess { - /* Organization */ - private int p_AD_Org_ID = 0; - /* Account Schema */ - private int p_C_AcctSchema_ID = 0; + /* Organization */ + private int p_AD_Org_ID = 0; + /* Account Schema */ + private int p_C_AcctSchema_ID = 0; /* Cost Type */ - private int p_M_CostType_ID = 0; + private int p_M_CostType_ID = 0; /* Product */ - private int p_M_Product_ID = 0; - /* Product Category */ - private int p_M_Product_Category_ID = 0; + private int p_M_Product_ID = 0; + /* Product Category */ + private int p_M_Product_Category_ID = 0; + /* Costing Method */ + private String p_ConstingMethod = MCostElement.COSTINGMETHOD_StandardCosting; + + private MAcctSchema m_as = null; /** * Prepare - e.g., get Parameters. */ protected void prepare() { - ProcessInfoParameter[] para = getParameter(); - for (int i = 0; i < para.length; i++) + for (ProcessInfoParameter para : getParameter()) { - String name = para[i].getParameterName(); + String name = para.getParameterName(); - if (para[i].getParameter() == null) + if (para.getParameter() == null) ; - else if (name.equals("AD_Org_ID")) - p_AD_Org_ID = para[i].getParameterAsInt(); + else if (name.equals(MCost.COLUMNNAME_AD_Org_ID)) + p_AD_Org_ID = para.getParameterAsInt(); else if (name.equals(MCost.COLUMNNAME_C_AcctSchema_ID)) - p_C_AcctSchema_ID = para[i].getParameterAsInt(); + { + p_C_AcctSchema_ID = para.getParameterAsInt(); + m_as = MAcctSchema.get(getCtx(), p_C_AcctSchema_ID); + } else if (name.equals(MCost.COLUMNNAME_M_CostType_ID)) - p_M_CostType_ID = para[i].getParameterAsInt(); + p_M_CostType_ID = para.getParameterAsInt(); + else if (name.equals(MCostElement.COLUMNNAME_CostingMethod)) + p_ConstingMethod=(String)para.getParameter(); else if (name.equals(MProduct.COLUMNNAME_M_Product_ID)) - p_M_Product_ID = para[i].getParameterAsInt(); + p_M_Product_ID = para.getParameterAsInt(); else if (name.equals(MProduct.COLUMNNAME_M_Product_Category_ID)) - p_M_Product_Category_ID = para[i].getParameterAsInt(); + p_M_Product_Category_ID = para.getParameterAsInt(); else log.log(Level.SEVERE,"prepare - Unknown Parameter: " + name); } - // - if (p_C_AcctSchema_ID <= 0) - { - p_C_AcctSchema_ID = MClient.get(getCtx(), getAD_Client_ID()).getInfo().getC_AcctSchema1_ID(); - } - if (p_M_CostType_ID <= 0) - { - MAcctSchema as = MAcctSchema.get(getCtx(), p_C_AcctSchema_ID); - p_M_CostType_ID = as.getM_CostType_ID(); - } } // prepare /** @@ -123,7 +122,7 @@ public class RollupWorkflow extends SvrProcess params.add(p_M_Product_Category_ID); } - List products = new Query(getCtx(),MProduct.Table_Name, whereClause.toString(), get_TrxName()) + Collection products = new Query(getCtx(),MProduct.Table_Name, whereClause.toString(), get_TrxName()) .setOrderBy(MProduct.COLUMNNAME_LowLevel) .setParameters(params) .list(); @@ -156,24 +155,31 @@ public class RollupWorkflow extends SvrProcess BigDecimal labor = Env.ZERO; BigDecimal burden = Env.ZERO; - MCost[] costs = MCost.getCosts(getCtx(), getAD_Client_ID(), p_AD_Org_ID, product.getM_Product_ID(), p_M_CostType_ID, p_C_AcctSchema_ID , get_TrxName()); - for (MCost cost : costs) + Collection elements = MCostElement.getByCostingMethod(getCtx(), p_ConstingMethod); + for (MCostElement element : elements) { - MCostElement element = cost.getCostElement(); - if(element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_Resource) - || element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_BurdenMOverhead)) + Collection costs = MCost.getByCostType( + product, + m_as, + p_M_CostType_ID, + p_AD_Org_ID, + 0,element.getCostElementType()); // ASI + for (MCost cost : costs) + { + if(MCostElement.COSTELEMENTTYPE_Resource.equals(element.getCostElementType()) + || MCostElement.COSTELEMENTTYPE_BurdenMOverhead.equals(element.getCostElementType())) { for (MWFNode node : nodes) { BigDecimal nodeCost = Env.ZERO; // check if element cost is of type Labor - if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_Resource)) + if (MCostElement.COSTELEMENTTYPE_Resource.equals(element.getCostElementType())) { nodeCost = node.getCostForCostElementType(MCostElement.COSTELEMENTTYPE_Resource ,p_C_AcctSchema_ID, p_M_CostType_ID, p_AD_Org_ID, node.getSetupTime(), node.getDuration()); labor = labor.add(nodeCost); } - else if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_BurdenMOverhead)) + else if (MCostElement.COSTELEMENTTYPE_BurdenMOverhead.equals(element.getCostElementType())) { nodeCost = node.getCostForCostElementType(MCostElement.COSTELEMENTTYPE_BurdenMOverhead ,p_C_AcctSchema_ID, p_M_CostType_ID, p_AD_Org_ID, node.getSetupTime(), node.getDuration()); burden = burden.add(nodeCost); @@ -183,26 +189,29 @@ public class RollupWorkflow extends SvrProcess node.setCost(node.getCost().add(nodeCost)); node.saveEx(); } - } + } // Node // check if element cost is of type Labor - if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_Resource)) + if (MCostElement.COSTELEMENTTYPE_Resource.equals(element.getCostElementType())) { log.info("Product:"+product.getName()+" Labor: " + labor); cost.setCurrentCostPrice(labor); cost.saveEx(); } - else if (element.getCostElementType().equals(MCostElement.COSTELEMENTTYPE_BurdenMOverhead)) + else if (MCostElement.COSTELEMENTTYPE_BurdenMOverhead.equals(element.getCostElementType())) { log.info("Product:"+product.getName()+" Burden: " + burden); cost.setCurrentCostPrice(burden); cost.saveEx(); } } - } + } // MCost + } // Cost Elements workflow.setCost(labor.add(burden)); workflow.saveEx(get_TrxName()); } return "@OK@"; - } + } + + } diff --git a/migration/353a-trunk/oracle/407_BF2530003_CostingMethod.sql b/migration/353a-trunk/oracle/407_BF2530003_CostingMethod.sql new file mode 100644 index 0000000000..3d8036ac31 --- /dev/null +++ b/migration/353a-trunk/oracle/407_BF2530003_CostingMethod.sql @@ -0,0 +1,100 @@ +-- Jan 27, 2009 10:45:13 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para (AD_Client_ID,AD_Element_ID,AD_Org_ID,AD_Process_ID,AD_Process_Para_ID,AD_Reference_ID,AD_Reference_Value_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsCentrallyMaintained,IsMandatory,IsRange,Name,SeqNo,Updated,UpdatedBy) VALUES (0,241,0,53058,53270,17,122,'CostingMethod',TO_DATE('2009-01-27 22:44:49','YYYY-MM-DD HH24:MI:SS'),0,'S','Indicates how Costs will be calculated','EE01',22,'The Costing Method indicates how costs will be calculated (Standard, Average, Lifo, FoFo). The default costing method is defined on accounting schema level and can be optionally overwritten in the product category. The costing method cannot conflict with the Material Movement Policy (defined on Product Category).','Y','Y','Y','N','Costing Method',28,TO_DATE('2009-01-27 22:44:49','YYYY-MM-DD HH24:MI:SS'),0) +; + +-- Jan 27, 2009 10:45:13 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53270 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID) +; + +-- Jan 27, 2009 10:46:44 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=10,Updated=TO_DATE('2009-01-27 22:46:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53103 +; + +-- Jan 27, 2009 10:46:46 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=109,Updated=TO_DATE('2009-01-27 22:46:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53104 +; + +-- Jan 27, 2009 10:46:50 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=10,Updated=TO_DATE('2009-01-27 22:46:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53104 +; + +-- Jan 27, 2009 10:46:53 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=10,Updated=TO_DATE('2009-01-27 22:46:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53106 +; + +-- Jan 27, 2009 10:46:58 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=10,Updated=TO_DATE('2009-01-27 22:46:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53105 +; + +-- Jan 27, 2009 10:47:01 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=10,Updated=TO_DATE('2009-01-27 22:47:01','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53107 +; + +-- Jan 27, 2009 10:47:18 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=30,Updated=TO_DATE('2009-01-27 22:47:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53106 +; + +-- Jan 27, 2009 10:47:22 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=40,Updated=TO_DATE('2009-01-27 22:47:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53270 +; + +-- Jan 27, 2009 10:47:31 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=60,Updated=TO_DATE('2009-01-27 22:47:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53107 +; + +-- Jan 27, 2009 10:50:11 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para (AD_Client_ID,AD_Element_ID,AD_Org_ID,AD_Process_ID,AD_Process_Para_ID,AD_Reference_ID,AD_Reference_Value_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsCentrallyMaintained,IsMandatory,IsRange,Name,SeqNo,Updated,UpdatedBy) VALUES (0,241,0,53062,53271,17,122,'CostingMethod',TO_DATE('2009-01-27 22:50:09','YYYY-MM-DD HH24:MI:SS'),0,'S','Indicates how Costs will be calculated','EE01',22,'The Costing Method indicates how costs will be calculated (Standard, Average, Lifo, FoFo). The default costing method is defined on accounting schema level and can be optionally overwritten in the product category. The costing method cannot conflict with the Material Movement Policy (defined on Product Category).','Y','Y','Y','N','Costing Method',40,TO_DATE('2009-01-27 22:50:09','YYYY-MM-DD HH24:MI:SS'),0) +; + +-- Jan 27, 2009 10:50:11 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53271 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID) +; + +-- Jan 27, 2009 10:52:26 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para (AD_Client_ID,AD_Element_ID,AD_Org_ID,AD_Process_ID,AD_Process_Para_ID,AD_Reference_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsCentrallyMaintained,IsMandatory,IsRange,Name,SeqNo,Updated,UpdatedBy) VALUES (0,2071,0,53159,53272,19,'M_CostType_ID',TO_DATE('2009-01-27 22:52:25','YYYY-MM-DD HH24:MI:SS'),0,'Type of Cost (e.g. Current, Plan, Future)','EE01',10,'You can define multiple cost types. A cost type selected in an Accounting Schema is used for accounting.','Y','Y','Y','N','Cost Type',20,TO_DATE('2009-01-27 22:52:25','YYYY-MM-DD HH24:MI:SS'),0) +; + +-- Jan 27, 2009 10:52:26 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53272 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID) +; + +-- Jan 27, 2009 10:53:48 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para (AD_Client_ID,AD_Element_ID,AD_Org_ID,AD_Process_ID,AD_Process_Para_ID,AD_Reference_ID,AD_Reference_Value_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsCentrallyMaintained,IsMandatory,IsRange,Name,SeqNo,Updated,UpdatedBy) VALUES (0,241,0,53159,53273,17,122,'CostingMethod',TO_DATE('2009-01-27 22:53:47','YYYY-MM-DD HH24:MI:SS'),0,'S','Indicates how Costs will be calculated','EE01',10,'The Costing Method indicates how costs will be calculated (Standard, Average, Lifo, FoFo). The default costing method is defined on accounting schema level and can be optionally overwritten in the product category. The costing method cannot conflict with the Material Movement Policy (defined on Product Category).','Y','Y','Y','N','Costing Method',20,TO_DATE('2009-01-27 22:53:47','YYYY-MM-DD HH24:MI:SS'),0) +; + +-- Jan 27, 2009 10:53:48 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53273 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID) +; + +-- Jan 27, 2009 10:54:05 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=30,Updated=TO_DATE('2009-01-27 22:54:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53272 +; + +-- Jan 27, 2009 10:54:11 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=40,Updated=TO_DATE('2009-01-27 22:54:11','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53273 +; + +-- Jan 27, 2009 10:54:14 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=50,Updated=TO_DATE('2009-01-27 22:54:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53267 +; + diff --git a/migration/353a-trunk/postgresql/407_BF2530003_CostingMethod.sql b/migration/353a-trunk/postgresql/407_BF2530003_CostingMethod.sql new file mode 100644 index 0000000000..3c924441e9 --- /dev/null +++ b/migration/353a-trunk/postgresql/407_BF2530003_CostingMethod.sql @@ -0,0 +1,100 @@ +-- Jan 27, 2009 10:45:13 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para (AD_Client_ID,AD_Element_ID,AD_Org_ID,AD_Process_ID,AD_Process_Para_ID,AD_Reference_ID,AD_Reference_Value_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsCentrallyMaintained,IsMandatory,IsRange,Name,SeqNo,Updated,UpdatedBy) VALUES (0,241,0,53058,53270,17,122,'CostingMethod',TO_TIMESTAMP('2009-01-27 22:44:49','YYYY-MM-DD HH24:MI:SS'),0,'S','Indicates how Costs will be calculated','EE01',22,'The Costing Method indicates how costs will be calculated (Standard, Average, Lifo, FoFo). The default costing method is defined on accounting schema level and can be optionally overwritten in the product category. The costing method cannot conflict with the Material Movement Policy (defined on Product Category).','Y','Y','Y','N','Costing Method',28,TO_TIMESTAMP('2009-01-27 22:44:49','YYYY-MM-DD HH24:MI:SS'),0) +; + +-- Jan 27, 2009 10:45:13 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53270 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID) +; + +-- Jan 27, 2009 10:46:44 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=10,Updated=TO_TIMESTAMP('2009-01-27 22:46:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53103 +; + +-- Jan 27, 2009 10:46:46 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=109,Updated=TO_TIMESTAMP('2009-01-27 22:46:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53104 +; + +-- Jan 27, 2009 10:46:50 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=10,Updated=TO_TIMESTAMP('2009-01-27 22:46:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53104 +; + +-- Jan 27, 2009 10:46:53 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=10,Updated=TO_TIMESTAMP('2009-01-27 22:46:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53106 +; + +-- Jan 27, 2009 10:46:58 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=10,Updated=TO_TIMESTAMP('2009-01-27 22:46:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53105 +; + +-- Jan 27, 2009 10:47:01 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET FieldLength=10,Updated=TO_TIMESTAMP('2009-01-27 22:47:01','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53107 +; + +-- Jan 27, 2009 10:47:18 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=30,Updated=TO_TIMESTAMP('2009-01-27 22:47:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53106 +; + +-- Jan 27, 2009 10:47:22 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=40,Updated=TO_TIMESTAMP('2009-01-27 22:47:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53270 +; + +-- Jan 27, 2009 10:47:31 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=60,Updated=TO_TIMESTAMP('2009-01-27 22:47:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53107 +; + +-- Jan 27, 2009 10:50:11 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para (AD_Client_ID,AD_Element_ID,AD_Org_ID,AD_Process_ID,AD_Process_Para_ID,AD_Reference_ID,AD_Reference_Value_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsCentrallyMaintained,IsMandatory,IsRange,Name,SeqNo,Updated,UpdatedBy) VALUES (0,241,0,53062,53271,17,122,'CostingMethod',TO_TIMESTAMP('2009-01-27 22:50:09','YYYY-MM-DD HH24:MI:SS'),0,'S','Indicates how Costs will be calculated','EE01',22,'The Costing Method indicates how costs will be calculated (Standard, Average, Lifo, FoFo). The default costing method is defined on accounting schema level and can be optionally overwritten in the product category. The costing method cannot conflict with the Material Movement Policy (defined on Product Category).','Y','Y','Y','N','Costing Method',40,TO_TIMESTAMP('2009-01-27 22:50:09','YYYY-MM-DD HH24:MI:SS'),0) +; + +-- Jan 27, 2009 10:50:11 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53271 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID) +; + +-- Jan 27, 2009 10:52:26 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para (AD_Client_ID,AD_Element_ID,AD_Org_ID,AD_Process_ID,AD_Process_Para_ID,AD_Reference_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsCentrallyMaintained,IsMandatory,IsRange,Name,SeqNo,Updated,UpdatedBy) VALUES (0,2071,0,53159,53272,19,'M_CostType_ID',TO_TIMESTAMP('2009-01-27 22:52:25','YYYY-MM-DD HH24:MI:SS'),0,'Type of Cost (e.g. Current, Plan, Future)','EE01',10,'You can define multiple cost types. A cost type selected in an Accounting Schema is used for accounting.','Y','Y','Y','N','Cost Type',20,TO_TIMESTAMP('2009-01-27 22:52:25','YYYY-MM-DD HH24:MI:SS'),0) +; + +-- Jan 27, 2009 10:52:26 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53272 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID) +; + +-- Jan 27, 2009 10:53:48 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para (AD_Client_ID,AD_Element_ID,AD_Org_ID,AD_Process_ID,AD_Process_Para_ID,AD_Reference_ID,AD_Reference_Value_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsCentrallyMaintained,IsMandatory,IsRange,Name,SeqNo,Updated,UpdatedBy) VALUES (0,241,0,53159,53273,17,122,'CostingMethod',TO_TIMESTAMP('2009-01-27 22:53:47','YYYY-MM-DD HH24:MI:SS'),0,'S','Indicates how Costs will be calculated','EE01',10,'The Costing Method indicates how costs will be calculated (Standard, Average, Lifo, FoFo). The default costing method is defined on accounting schema level and can be optionally overwritten in the product category. The costing method cannot conflict with the Material Movement Policy (defined on Product Category).','Y','Y','Y','N','Costing Method',20,TO_TIMESTAMP('2009-01-27 22:53:47','YYYY-MM-DD HH24:MI:SS'),0) +; + +-- Jan 27, 2009 10:53:48 PM ECT +-- Manufacturing Standard Cost +INSERT INTO AD_Process_Para_Trl (AD_Language,AD_Process_Para_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Process_Para_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Process_Para t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Process_Para_ID=53273 AND EXISTS (SELECT * FROM AD_Process_Para_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Process_Para_ID!=t.AD_Process_Para_ID) +; + +-- Jan 27, 2009 10:54:05 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=30,Updated=TO_TIMESTAMP('2009-01-27 22:54:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53272 +; + +-- Jan 27, 2009 10:54:11 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=40,Updated=TO_TIMESTAMP('2009-01-27 22:54:11','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53273 +; + +-- Jan 27, 2009 10:54:14 PM ECT +-- Manufacturing Standard Cost +UPDATE AD_Process_Para SET SeqNo=50,Updated=TO_TIMESTAMP('2009-01-27 22:54:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Process_Para_ID=53267 +; +