details: https://code.openbravo.com/erp/devel/pi/rev/8d73d0c271d5 changeset: 27890:8d73d0c271d5 user: David Miguelez <david.miguelez <at> openbravo.com> date: Mon Nov 16 13:45:51 2015 +0100 summary: Backed out changeset f96d16904892
diffstat: src-db/database/sourcedata/AD_FIELD.xml | 3 +- src/org/openbravo/costing/CostAdjustmentProcess.java | 31 +- src/org/openbravo/costing/CostAdjustmentUtils.java | 97 +-- src/org/openbravo/costing/CostingAlgorithmAdjustmentImp.java | 5 +- src/org/openbravo/costing/CostingServer.java | 132 ++-- src/org/openbravo/costing/CostingUtils.java | 38 - src/org/openbravo/costing/StandardAlgorithm.java | 36 +- src/org/openbravo/costing/StandardCostAdjustment.java | 328 ++++------ 8 files changed, 267 insertions(+), 403 deletions(-) diffs (truncated from 955 to 300 lines): diff -r c229892e1b36 -r 8d73d0c271d5 src-db/database/sourcedata/AD_FIELD.xml --- a/src-db/database/sourcedata/AD_FIELD.xml Mon Nov 16 13:43:53 2015 +0100 +++ b/src-db/database/sourcedata/AD_FIELD.xml Mon Nov 16 13:45:51 2015 +0100 @@ -239716,7 +239716,7 @@ <!--7EA7829A9B8442B28AA7D433ABE8B1B9--> <AD_COLUMN_ID><![CDATA[0DCB49039F4541E8907BAE1588D7385F]]></AD_COLUMN_ID> <!--7EA7829A9B8442B28AA7D433ABE8B1B9--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD> <!--7EA7829A9B8442B28AA7D433ABE8B1B9--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED> -<!--7EA7829A9B8442B28AA7D433ABE8B1B9--> <DISPLAYLOGIC><![CDATA[@Backdatedtrxsfixed@='N' & @isvalidated@='Y']]></DISPLAYLOGIC> +<!--7EA7829A9B8442B28AA7D433ABE8B1B9--> <DISPLAYLOGIC><![CDATA[@Backdatedtrxsfixed@='N' & @isvalidated@='Y' & @M_Costing_Algorithm_ID@!'6A39D8B46CD94FE682D48758D3B7726B']]></DISPLAYLOGIC> <!--7EA7829A9B8442B28AA7D433ABE8B1B9--> <DISPLAYLENGTH><![CDATA[1]]></DISPLAYLENGTH> <!--7EA7829A9B8442B28AA7D433ABE8B1B9--> <ISREADONLY><![CDATA[N]]></ISREADONLY> <!--7EA7829A9B8442B28AA7D433ABE8B1B9--> <SEQNO><![CDATA[60]]></SEQNO> @@ -306505,6 +306505,7 @@ <!--FAA9ED0D2AEA444F83D09DF2FE479785--> <AD_COLUMN_ID><![CDATA[480CC1DA0E0F432CACE9360D07842B65]]></AD_COLUMN_ID> <!--FAA9ED0D2AEA444F83D09DF2FE479785--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD> <!--FAA9ED0D2AEA444F83D09DF2FE479785--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED> +<!--FAA9ED0D2AEA444F83D09DF2FE479785--> <DISPLAYLOGIC><![CDATA[@M_Costing_Algorithm_ID@!'6A39D8B46CD94FE682D48758D3B7726B']]></DISPLAYLOGIC> <!--FAA9ED0D2AEA444F83D09DF2FE479785--> <DISPLAYLENGTH><![CDATA[1]]></DISPLAYLENGTH> <!--FAA9ED0D2AEA444F83D09DF2FE479785--> <ISREADONLY><![CDATA[N]]></ISREADONLY> <!--FAA9ED0D2AEA444F83D09DF2FE479785--> <SEQNO><![CDATA[50]]></SEQNO> diff -r c229892e1b36 -r 8d73d0c271d5 src/org/openbravo/costing/CostAdjustmentProcess.java --- a/src/org/openbravo/costing/CostAdjustmentProcess.java Mon Nov 16 13:43:53 2015 +0100 +++ b/src/org/openbravo/costing/CostAdjustmentProcess.java Mon Nov 16 13:45:51 2015 +0100 @@ -41,15 +41,12 @@ import org.openbravo.dal.core.OBContext; import org.openbravo.dal.service.OBCriteria; import org.openbravo.dal.service.OBDal; -import org.openbravo.dal.service.OBQuery; import org.openbravo.erpCommon.utility.OBMessageUtils; import org.openbravo.financial.FinancialUtils; import org.openbravo.model.financialmgmt.calendar.Period; import org.openbravo.model.materialmgmt.cost.CostAdjustment; import org.openbravo.model.materialmgmt.cost.CostAdjustmentLine; import org.openbravo.model.materialmgmt.cost.TransactionCost; -import org.openbravo.model.materialmgmt.transaction.InventoryCount; -import org.openbravo.model.materialmgmt.transaction.InventoryCountLine; import org.openbravo.model.materialmgmt.transaction.MaterialTransaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -145,24 +142,18 @@ } private void checkPermanentelyAdjustedTrx(String strCostAdjId) throws OBException { - StringBuffer where = new StringBuffer(); - where.append(" as cal"); - where.append(" join cal." + CostAdjustmentLine.PROPERTY_COSTADJUSTMENT + " as ca"); - where.append(" join cal." + CostAdjustmentLine.PROPERTY_INVENTORYTRANSACTION + " as trx"); - where.append(" left join trx." + MaterialTransaction.PROPERTY_PHYSICALINVENTORYLINE + " as il"); - where.append(" left join il." + InventoryCountLine.PROPERTY_PHYSINVENTORY + " as i"); - where.append(" where ca." + CostAdjustment.PROPERTY_ID + " = :strCostAdjId"); - where.append(" and coalesce(i." + InventoryCount.PROPERTY_INVENTORYTYPE + ", 'N') <> 'O'"); - where.append(" and trx." + MaterialTransaction.PROPERTY_ISCOSTPERMANENT + " = true"); - where.append(" and cal." + CostAdjustmentLine.PROPERTY_ADJUSTMENTAMOUNT + " <> 0"); - where.append(" and cal." + CostAdjustmentLine.PROPERTY_UNITCOST + " = true"); - where.append(" order by cal." + CostAdjustmentLine.PROPERTY_LINENO); + OBCriteria<CostAdjustmentLine> critLines = OBDal.getInstance().createCriteria( + CostAdjustmentLine.class); + critLines.createAlias(CostAdjustmentLine.PROPERTY_INVENTORYTRANSACTION, "trx"); + critLines.createAlias(CostAdjustmentLine.PROPERTY_COSTADJUSTMENT, "ca"); + critLines.add(Restrictions.eq("ca.id", strCostAdjId)); + critLines.add(Restrictions.eq("trx." + MaterialTransaction.PROPERTY_ISCOSTPERMANENT, + Boolean.TRUE)); + critLines.add(Restrictions.ne(CostAdjustmentLine.PROPERTY_ADJUSTMENTAMOUNT, BigDecimal.ZERO)); + critLines.add(Restrictions.eq(CostAdjustmentLine.PROPERTY_UNITCOST, Boolean.TRUE)); + critLines.addOrder(Order.asc(CostAdjustmentLine.PROPERTY_LINENO)); - OBQuery<CostAdjustmentLine> qry = OBDal.getInstance().createQuery(CostAdjustmentLine.class, - where.toString()); - qry.setNamedParameter("strCostAdjId", strCostAdjId); - - ScrollableResults lines = qry.scroll(ScrollMode.FORWARD_ONLY); + ScrollableResults lines = critLines.scroll(ScrollMode.FORWARD_ONLY); long count = 1L; try { String strLines = ""; diff -r c229892e1b36 -r 8d73d0c271d5 src/org/openbravo/costing/CostAdjustmentUtils.java --- a/src/org/openbravo/costing/CostAdjustmentUtils.java Mon Nov 16 13:43:53 2015 +0100 +++ b/src/org/openbravo/costing/CostAdjustmentUtils.java Mon Nov 16 13:45:51 2015 +0100 @@ -11,7 +11,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2014-2015 Openbravo SLU + * All portions are Copyright (C) 2014 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************* @@ -49,8 +49,6 @@ import org.openbravo.model.materialmgmt.cost.CostAdjustmentLine; import org.openbravo.model.materialmgmt.cost.CostingRule; import org.openbravo.model.materialmgmt.cost.TransactionCost; -import org.openbravo.model.materialmgmt.transaction.InventoryCount; -import org.openbravo.model.materialmgmt.transaction.InventoryCountLine; import org.openbravo.model.materialmgmt.transaction.MaterialTransaction; import org.openbravo.model.materialmgmt.transaction.ShipmentInOut; import org.openbravo.model.materialmgmt.transaction.ShipmentInOutLine; @@ -251,15 +249,16 @@ Set<String> orgs = OBContext.getOBContext().getOrganizationStructureProvider() .getChildTree(org.getId(), true); + StringBuffer select = new StringBuffer(); StringBuffer subSelect = new StringBuffer(); - subSelect.append(" select min(case when coalesce(i." + InventoryCount.PROPERTY_INVENTORYTYPE - + ", 'N') <> 'N' then trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " else trx." - + MaterialTransaction.PROPERTY_TRANSACTIONPROCESSDATE + " end)"); + select + .append(" select sum(trx." + MaterialTransaction.PROPERTY_MOVEMENTQUANTITY + ") as stock"); + select.append(" from " + MaterialTransaction.ENTITY_NAME + " as trx"); + select.append(" join trx." + MaterialTransaction.PROPERTY_STORAGEBIN + " as locator"); + select.append(" where trx." + MaterialTransaction.PROPERTY_PRODUCT + ".id = :product"); + subSelect.append("select min(trx." + MaterialTransaction.PROPERTY_TRANSACTIONPROCESSDATE + ")"); subSelect.append(" from " + MaterialTransaction.ENTITY_NAME + " as trx"); subSelect.append(" join trx." + MaterialTransaction.PROPERTY_STORAGEBIN + " as locator"); - subSelect.append(" left join trx." + MaterialTransaction.PROPERTY_PHYSICALINVENTORYLINE - + " as il"); - subSelect.append(" left join il." + InventoryCountLine.PROPERTY_PHYSINVENTORY + " as i"); subSelect.append(" where trx." + MaterialTransaction.PROPERTY_PRODUCT + ".id = :product"); subSelect.append(" and trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " > :date"); // Include only transactions that have its cost calculated @@ -276,34 +275,22 @@ trxsubQry.setParameter("warehouse", costDimensions.get(CostDimension.Warehouse).getId()); } trxsubQry.setParameterList("orgs", orgs); - Object trxprocessDate = trxsubQry.uniqueResult(); - - StringBuffer select = new StringBuffer(); - select - .append(" select sum(trx." + MaterialTransaction.PROPERTY_MOVEMENTQUANTITY + ") as stock"); - select.append(" from " + MaterialTransaction.ENTITY_NAME + " as trx"); - select.append(" join trx." + MaterialTransaction.PROPERTY_STORAGEBIN + " as locator"); - Date backdatedTrxFrom = null; if (backdatedTransactionsFixed) { CostingRule costRule = CostingUtils.getCostDimensionRule(org, date); backdatedTrxFrom = CostingUtils.getCostingRuleFixBackdatedFrom(costRule); } + Object trxprocessDate = trxsubQry.uniqueResult(); if (trxprocessDate != null && (!backdatedTransactionsFixed || ((Date) trxprocessDate).before(backdatedTrxFrom))) { date = (Date) trxprocessDate; - select.append(" left join trx." + MaterialTransaction.PROPERTY_PHYSICALINVENTORYLINE - + " as il"); - select.append(" left join il." + InventoryCountLine.PROPERTY_PHYSINVENTORY + " as i"); - select.append(" where case when coalesce(i." + InventoryCount.PROPERTY_INVENTORYTYPE - + ", 'N') <> 'N' then trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " else trx." - + MaterialTransaction.PROPERTY_TRANSACTIONPROCESSDATE + " end < :date"); + select.append(" and trx." + MaterialTransaction.PROPERTY_TRANSACTIONPROCESSDATE + + " < :date"); } else { - select.append(" where trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " <= :date"); + select.append(" and trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " <= :date"); } - select.append(" and trx." + MaterialTransaction.PROPERTY_PRODUCT + ".id = :product"); // Include only transactions that have its cost calculated select.append(" and trx." + MaterialTransaction.PROPERTY_ISCOSTCALCULATED + " = true"); if (costDimensions.get(CostDimension.Warehouse) != null) { @@ -471,15 +458,29 @@ costDimensions = CostingUtils.getEmptyDimensions(); } + StringBuffer select = new StringBuffer(); StringBuffer subSelect = new StringBuffer(); - subSelect.append(" select min(case when coalesce(i." + InventoryCount.PROPERTY_INVENTORYTYPE - + ", 'N') <> 'N' then trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " else trx." - + MaterialTransaction.PROPERTY_TRANSACTIONPROCESSDATE + " end)"); + select.append(" select sum(case"); + select.append(" when trx." + MaterialTransaction.PROPERTY_MOVEMENTQUANTITY + + " < 0 then -tc." + TransactionCost.PROPERTY_COST); + select.append(" else tc." + TransactionCost.PROPERTY_COST + " end ) as cost"); + select.append(" , tc." + TransactionCost.PROPERTY_CURRENCY + ".id as currency"); + select.append(" , coalesce(sr." + ShipmentInOut.PROPERTY_ACCOUNTINGDATE + ", trx." + + MaterialTransaction.PROPERTY_MOVEMENTDATE + ") as mdate"); + select.append(" , sum(trx." + MaterialTransaction.PROPERTY_MOVEMENTQUANTITY + ") as stock"); + + select.append(" from " + TransactionCost.ENTITY_NAME + " as tc"); + select.append(" join tc." + TransactionCost.PROPERTY_INVENTORYTRANSACTION + " as trx"); + select.append(" join trx." + MaterialTransaction.PROPERTY_STORAGEBIN + " as locator"); + select.append(" left join trx." + MaterialTransaction.PROPERTY_GOODSSHIPMENTLINE + " as line"); + select.append(" left join line." + ShipmentInOutLine.PROPERTY_SHIPMENTRECEIPT + " as sr"); + + select.append(" where trx." + MaterialTransaction.PROPERTY_PRODUCT + " = :product"); + // Include only transactions that have its cost calculated + select.append(" and trx." + MaterialTransaction.PROPERTY_ISCOSTCALCULATED + " = true"); + subSelect.append("select min(trx." + MaterialTransaction.PROPERTY_TRANSACTIONPROCESSDATE + ")"); subSelect.append(" from " + MaterialTransaction.ENTITY_NAME + " as trx"); subSelect.append(" join trx." + MaterialTransaction.PROPERTY_STORAGEBIN + " as locator"); - subSelect.append(" left join trx." + MaterialTransaction.PROPERTY_PHYSICALINVENTORYLINE - + " as il"); - subSelect.append(" left join il." + InventoryCountLine.PROPERTY_PHYSINVENTORY + " as i"); subSelect.append(" where trx." + MaterialTransaction.PROPERTY_PRODUCT + ".id = :product"); subSelect.append(" and trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " > :date"); // Include only transactions that have its cost calculated @@ -496,47 +497,21 @@ trxsubQry.setParameter("warehouse", costDimensions.get(CostDimension.Warehouse).getId()); } trxsubQry.setParameterList("orgs", orgs); - Object trxprocessDate = trxsubQry.uniqueResult(); - - StringBuffer select = new StringBuffer(); - select.append(" select sum(case"); - select.append(" when trx." + MaterialTransaction.PROPERTY_MOVEMENTQUANTITY - + " < 0 then -tc." + TransactionCost.PROPERTY_COST); - select.append(" else tc." + TransactionCost.PROPERTY_COST + " end ) as cost"); - select.append(" , tc." + TransactionCost.PROPERTY_CURRENCY + ".id as currency"); - select.append(" , coalesce(sr." + ShipmentInOut.PROPERTY_ACCOUNTINGDATE + ", trx." - + MaterialTransaction.PROPERTY_MOVEMENTDATE + ") as mdate"); - select.append(" , sum(trx." + MaterialTransaction.PROPERTY_MOVEMENTQUANTITY + ") as stock"); - - select.append(" from " + TransactionCost.ENTITY_NAME + " as tc"); - select.append(" join tc." + TransactionCost.PROPERTY_INVENTORYTRANSACTION + " as trx"); - select.append(" join trx." + MaterialTransaction.PROPERTY_STORAGEBIN + " as locator"); - select.append(" left join trx." + MaterialTransaction.PROPERTY_GOODSSHIPMENTLINE + " as line"); - select.append(" left join line." + ShipmentInOutLine.PROPERTY_SHIPMENTRECEIPT + " as sr"); - Date backdatedTrxFrom = null; if (backdatedTransactionsFixed) { CostingRule costRule = CostingUtils.getCostDimensionRule(org, date); backdatedTrxFrom = CostingUtils.getCostingRuleFixBackdatedFrom(costRule); } + Object trxprocessDate = trxsubQry.uniqueResult(); if (trxprocessDate != null && (!backdatedTransactionsFixed || ((Date) trxprocessDate).before(backdatedTrxFrom))) { date = (Date) trxprocessDate; - select.append(" left join trx." + MaterialTransaction.PROPERTY_PHYSICALINVENTORYLINE - + " as il"); - select.append(" left join il." + InventoryCountLine.PROPERTY_PHYSINVENTORY + " as i"); - select.append(" where case when coalesce(i." + InventoryCount.PROPERTY_INVENTORYTYPE - + ", 'N') <> 'N' then trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " else trx." - + MaterialTransaction.PROPERTY_TRANSACTIONPROCESSDATE + " end < :date"); + select.append(" and trx." + MaterialTransaction.PROPERTY_TRANSACTIONPROCESSDATE + + " < :date"); } else { - select.append(" where trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " <= :date"); + select.append(" and trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " <= :date"); } - - select.append(" and trx." + MaterialTransaction.PROPERTY_PRODUCT + " = :product"); - // Include only transactions that have its cost calculated - select.append(" and trx." + MaterialTransaction.PROPERTY_ISCOSTCALCULATED + " = true"); - if (costDimensions.get(CostDimension.Warehouse) != null) { select.append(" and locator." + Locator.PROPERTY_WAREHOUSE + ".id = :warehouse"); } diff -r c229892e1b36 -r 8d73d0c271d5 src/org/openbravo/costing/CostingAlgorithmAdjustmentImp.java --- a/src/org/openbravo/costing/CostingAlgorithmAdjustmentImp.java Mon Nov 16 13:43:53 2015 +0100 +++ b/src/org/openbravo/costing/CostingAlgorithmAdjustmentImp.java Mon Nov 16 13:45:51 2015 +0100 @@ -139,9 +139,8 @@ costAdjLine = getCostAdjLine(); } - // Backdated transactions are inserted with a null adjustment amount, in case we are not - // adjusting a Inventory Amount Update transaction. - if (costAdjLine.isBackdatedTrx() && costAdjLine.getAdjustmentAmount() == null) { + // Backdated transactions are inserted with a null adjustment amount. + if (costAdjLine.isBackdatedTrx()) { calculateBackdatedTrxAdjustment(costAdjLine); } diff -r c229892e1b36 -r 8d73d0c271d5 src/org/openbravo/costing/CostingServer.java --- a/src/org/openbravo/costing/CostingServer.java Mon Nov 16 13:43:53 2015 +0100 +++ b/src/org/openbravo/costing/CostingServer.java Mon Nov 16 13:45:51 2015 +0100 @@ -231,40 +231,9 @@ } } - // With Standard Algorithm, only BDT are checked + // With Standard Algorithm, no cost adjustment is needed if (StringUtils.equals(transaction.getCostingAlgorithm().getJavaClassName(), "org.openbravo.costing.StandardAlgorithm")) { - - if (transaction.getMovementDate().after( - CostingUtils.getCostingRuleStartingDate(getCostingRule())) - && CostAdjustmentUtils.isNeededBackdatedCostAdjustment(transaction, getCostingRule() - .isWarehouseDimension(), CostingUtils.getCostingRuleStartingDate(getCostingRule()))) { - - // Case transaction backdated (modifying the stock in the past) - if (trxType != TrxType.InventoryClosing && trxType != TrxType.InventoryOpening - && getCostingRule().isBackdatedTransactionsFixed()) { - // BDT = Backdated transaction - createAdjustment("BDT", BigDecimal.ZERO); - } - - // Case Inventory Amount Update backdated (modifying the cost in the past) - if (trxType == TrxType.InventoryOpening) { - OBDal.getInstance().refresh(transaction.getPhysicalInventoryLine().getPhysInventory()); - if (transaction.getPhysicalInventoryLine().getPhysInventory() - .getInventoryAmountUpdateLineInventoriesInitInventoryList().size() > 0 - && CostingUtils.isLastOpeningTransaction(transaction, getCostingRule() - .isWarehouseDimension())) { - // BDT = Backdated transaction - createAdjustment("BDT", BigDecimal.ZERO); - } - } - } - - // update trxCost after cost adjustments - transaction = OBDal.getInstance().get(MaterialTransaction.class, transaction.getId()); ------------------------------------------------------------------------------ Presto, an open source distributed SQL query engine for big data, initially developed by Facebook, enables you to easily query your data on Hadoop in a more interactive manner. Teradata is also now providing full enterprise support for Presto. Download a free open source copy now. http://pubads.g.doubleclick.net/gampad/clk?id=250295911&iu=/4140 _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits