details: https://code.openbravo.com/erp/devel/pi/rev/dc211cf0ad60 changeset: 19066:dc211cf0ad60 user: David Miguelez <david.miguelez <at> openbravo.com> date: Thu Dec 13 19:54:36 2012 +0100 summary: Fixes Issue 22574. Adds option to use Purchase Order Price when Posting Goods Receipt and Matched Invoices.
details: https://code.openbravo.com/erp/devel/pi/rev/699855034d6c changeset: 19067:699855034d6c user: Sandra Huguet <sandra.huguet <at> openbravo.com> date: Tue Dec 18 13:12:55 2012 +0100 summary: Related to issue 22574 Add help and description diffstat: src-db/database/model/tables/M_PRODUCT.xml | 4 + src-db/database/sourcedata/AD_COLUMN.xml | 36 ++++ src-db/database/sourcedata/AD_ELEMENT.xml | 14 + src-db/database/sourcedata/AD_FIELD.xml | 29 ++++ src-db/database/sourcedata/AD_MESSAGE.xml | 22 +++ src/org/openbravo/erpCommon/ad_forms/AcctServer.java | 8 + src/org/openbravo/erpCommon/ad_forms/DocInOut.java | 130 +++++++++++------ src/org/openbravo/erpCommon/ad_forms/DocMatchInv.java | 83 ++++++++--- 8 files changed, 258 insertions(+), 68 deletions(-) diffs (truncated from 466 to 300 lines): diff -r a9024a3c712c -r 699855034d6c src-db/database/model/tables/M_PRODUCT.xml --- a/src-db/database/model/tables/M_PRODUCT.xml Tue Dec 18 10:57:34 2012 +0100 +++ b/src-db/database/model/tables/M_PRODUCT.xml Tue Dec 18 13:12:55 2012 +0100 @@ -317,6 +317,10 @@ <default/> <onCreateDefault/> </column> + <column name="BOOKUSINGPOPRICE" primaryKey="false" required="true" type="CHAR" size="1" autoIncrement="false"> + <default><![CDATA[N]]></default> + <onCreateDefault/> + </column> <foreign-key foreignTable="AD_ORG" name="AD_ORG_MPRODUCT"> <reference local="AD_ORG_ID" foreign="AD_ORG_ID"/> </foreign-key> diff -r a9024a3c712c -r 699855034d6c src-db/database/sourcedata/AD_COLUMN.xml --- a/src-db/database/sourcedata/AD_COLUMN.xml Tue Dec 18 10:57:34 2012 +0100 +++ b/src-db/database/sourcedata/AD_COLUMN.xml Tue Dec 18 13:12:55 2012 +0100 @@ -228636,6 +228636,42 @@ <!--398019882EF04B089E5AEB86B314DD73--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE> <!--398019882EF04B089E5AEB86B314DD73--></AD_COLUMN> +<!--39E68AB00DEA43D1B68302BE844FEE81--><AD_COLUMN> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <AD_COLUMN_ID><![CDATA[39E68AB00DEA43D1B68302BE844FEE81]]></AD_COLUMN_ID> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <NAME><![CDATA[Book Using Purchase Order Price]]></NAME> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <DESCRIPTION><![CDATA[When checked, the Purchase Order posting will use the Purchase Order Price instead of the Product Cost.]]></DESCRIPTION> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <HELP><![CDATA[When checked, the Purchase Order posting will use the Purchase Order Price instead of the Product Cost.]]></HELP> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <COLUMNNAME><![CDATA[Bookusingpoprice]]></COLUMNNAME> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <AD_TABLE_ID><![CDATA[208]]></AD_TABLE_ID> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <AD_REFERENCE_ID><![CDATA[20]]></AD_REFERENCE_ID> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <FIELDLENGTH><![CDATA[1]]></FIELDLENGTH> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <DEFAULTVALUE><![CDATA[N]]></DEFAULTVALUE> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISKEY><![CDATA[N]]></ISKEY> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISPARENT><![CDATA[N]]></ISPARENT> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISUPDATEABLE><![CDATA[Y]]></ISUPDATEABLE> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <SEQNO><![CDATA[410]]></SEQNO> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <AD_ELEMENT_ID><![CDATA[B815FE8CA7B84995B966CFAFBB88AC45]]></AD_ELEMENT_ID> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <POSITION><![CDATA[80]]></POSITION> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION> +<!--39E68AB00DEA43D1B68302BE844FEE81--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE> +<!--39E68AB00DEA43D1B68302BE844FEE81--></AD_COLUMN> + <!--3A16C1B9091E405CAC360CA606716C33--><AD_COLUMN> <!--3A16C1B9091E405CAC360CA606716C33--> <AD_COLUMN_ID><![CDATA[3A16C1B9091E405CAC360CA606716C33]]></AD_COLUMN_ID> <!--3A16C1B9091E405CAC360CA606716C33--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> diff -r a9024a3c712c -r 699855034d6c src-db/database/sourcedata/AD_ELEMENT.xml --- a/src-db/database/sourcedata/AD_ELEMENT.xml Tue Dec 18 10:57:34 2012 +0100 +++ b/src-db/database/sourcedata/AD_ELEMENT.xml Tue Dec 18 13:12:55 2012 +0100 @@ -29013,6 +29013,20 @@ <!--B80DC62676AE85DEE040007F01002BCA--> <ISGLOSSARY><![CDATA[N]]></ISGLOSSARY> <!--B80DC62676AE85DEE040007F01002BCA--></AD_ELEMENT> +<!--B815FE8CA7B84995B966CFAFBB88AC45--><AD_ELEMENT> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <AD_ELEMENT_ID><![CDATA[B815FE8CA7B84995B966CFAFBB88AC45]]></AD_ELEMENT_ID> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <COLUMNNAME><![CDATA[Bookusingpoprice]]></COLUMNNAME> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <NAME><![CDATA[Book Using Purchase Order Price]]></NAME> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <PRINTNAME><![CDATA[Book Using Purchase Order Price]]></PRINTNAME> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <DESCRIPTION><![CDATA[When checked, the Purchase Order posting will use the Purchase Order Price instead of the Product Cost.]]></DESCRIPTION> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <HELP><![CDATA[When checked, the Purchase Order posting will use the Purchase Order Price instead of the Product Cost.]]></HELP> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> +<!--B815FE8CA7B84995B966CFAFBB88AC45--> <ISGLOSSARY><![CDATA[N]]></ISGLOSSARY> +<!--B815FE8CA7B84995B966CFAFBB88AC45--></AD_ELEMENT> + <!--B8DC6189A12B1226E040007F010036E2--><AD_ELEMENT> <!--B8DC6189A12B1226E040007F010036E2--> <AD_ELEMENT_ID><![CDATA[B8DC6189A12B1226E040007F010036E2]]></AD_ELEMENT_ID> <!--B8DC6189A12B1226E040007F010036E2--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> diff -r a9024a3c712c -r 699855034d6c src-db/database/sourcedata/AD_FIELD.xml --- a/src-db/database/sourcedata/AD_FIELD.xml Tue Dec 18 10:57:34 2012 +0100 +++ b/src-db/database/sourcedata/AD_FIELD.xml Tue Dec 18 13:12:55 2012 +0100 @@ -220719,6 +220719,35 @@ <!--8A0E856B0373450FB230F403FD3C1324--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY> <!--8A0E856B0373450FB230F403FD3C1324--></AD_FIELD> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--><AD_FIELD> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <AD_FIELD_ID><![CDATA[8A12CED215EA47E7B7EFEDDBF401CB38]]></AD_FIELD_ID> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <NAME><![CDATA[Book Using Purchase Order Price]]></NAME> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <DESCRIPTION><![CDATA[When checked, the Purchase Order posting will use the Purchase Order Price instead of the Product Cost.]]></DESCRIPTION> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <HELP><![CDATA[When checked, the Purchase Order posting will use the Purchase Order Price instead of the Product Cost.]]></HELP> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <AD_TAB_ID><![CDATA[180]]></AD_TAB_ID> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <AD_COLUMN_ID><![CDATA[39E68AB00DEA43D1B68302BE844FEE81]]></AD_COLUMN_ID> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <DISPLAYLOGIC><![CDATA[@ProductType@='E' & @issold@='N' & @isStocked@='N']]></DISPLAYLOGIC> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <DISPLAYLENGTH><![CDATA[1]]></DISPLAYLENGTH> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <ISREADONLY><![CDATA[N]]></ISREADONLY> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <SEQNO><![CDATA[687]]></SEQNO> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <SHOWINRELATION><![CDATA[N]]></SHOWINRELATION> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY> +<!--8A12CED215EA47E7B7EFEDDBF401CB38--></AD_FIELD> + <!--8A15A9AFEE7E4E0199B0E91292049B44--><AD_FIELD> <!--8A15A9AFEE7E4E0199B0E91292049B44--> <AD_FIELD_ID><![CDATA[8A15A9AFEE7E4E0199B0E91292049B44]]></AD_FIELD_ID> <!--8A15A9AFEE7E4E0199B0E91292049B44--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> diff -r a9024a3c712c -r 699855034d6c src-db/database/sourcedata/AD_MESSAGE.xml --- a/src-db/database/sourcedata/AD_MESSAGE.xml Tue Dec 18 10:57:34 2012 +0100 +++ b/src-db/database/sourcedata/AD_MESSAGE.xml Tue Dec 18 13:12:55 2012 +0100 @@ -14640,6 +14640,17 @@ <!--07E963D65B7F47BE81150448C5019E0D--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> <!--07E963D65B7F47BE81150448C5019E0D--></AD_MESSAGE> +<!--090396763E4C41C99BEFF7BB82D03A41--><AD_MESSAGE> +<!--090396763E4C41C99BEFF7BB82D03A41--> <AD_MESSAGE_ID><![CDATA[090396763E4C41C99BEFF7BB82D03A41]]></AD_MESSAGE_ID> +<!--090396763E4C41C99BEFF7BB82D03A41--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> +<!--090396763E4C41C99BEFF7BB82D03A41--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> +<!--090396763E4C41C99BEFF7BB82D03A41--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> +<!--090396763E4C41C99BEFF7BB82D03A41--> <VALUE><![CDATA[GoodsReceiptTransactionWithNoPO]]></VALUE> +<!--090396763E4C41C99BEFF7BB82D03A41--> <MSGTEXT><![CDATA[There is not a related Purchase Order Line for the Goods Receipt Line.]]></MSGTEXT> +<!--090396763E4C41C99BEFF7BB82D03A41--> <MSGTYPE><![CDATA[E]]></MSGTYPE> +<!--090396763E4C41C99BEFF7BB82D03A41--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> +<!--090396763E4C41C99BEFF7BB82D03A41--></AD_MESSAGE> + <!--0A04D7BA3A1D466A82B15AE10CFFE252--><AD_MESSAGE> <!--0A04D7BA3A1D466A82B15AE10CFFE252--> <AD_MESSAGE_ID><![CDATA[0A04D7BA3A1D466A82B15AE10CFFE252]]></AD_MESSAGE_ID> <!--0A04D7BA3A1D466A82B15AE10CFFE252--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> @@ -20591,6 +20602,17 @@ <!--CE2380BA90DB49B682AF5B333EA8BFE9--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> <!--CE2380BA90DB49B682AF5B333EA8BFE9--></AD_MESSAGE> +<!--CEF696AFAED34A0A916D825BEA97C2B5--><AD_MESSAGE> +<!--CEF696AFAED34A0A916D825BEA97C2B5--> <AD_MESSAGE_ID><![CDATA[CEF696AFAED34A0A916D825BEA97C2B5]]></AD_MESSAGE_ID> +<!--CEF696AFAED34A0A916D825BEA97C2B5--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> +<!--CEF696AFAED34A0A916D825BEA97C2B5--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> +<!--CEF696AFAED34A0A916D825BEA97C2B5--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> +<!--CEF696AFAED34A0A916D825BEA97C2B5--> <VALUE><![CDATA[GoodsReceiptTransactionWithNoPOWichProduct]]></VALUE> +<!--CEF696AFAED34A0A916D825BEA97C2B5--> <MSGTEXT><![CDATA[There is not a related Purchase Order Line for the Product @product@ in Line @line@]]></MSGTEXT> +<!--CEF696AFAED34A0A916D825BEA97C2B5--> <MSGTYPE><![CDATA[E]]></MSGTYPE> +<!--CEF696AFAED34A0A916D825BEA97C2B5--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> +<!--CEF696AFAED34A0A916D825BEA97C2B5--></AD_MESSAGE> + <!--CF72BCDFFF044C1D8007B907D8B64DF3--><AD_MESSAGE> <!--CF72BCDFFF044C1D8007B907D8B64DF3--> <AD_MESSAGE_ID><![CDATA[CF72BCDFFF044C1D8007B907D8B64DF3]]></AD_MESSAGE_ID> <!--CF72BCDFFF044C1D8007B907D8B64DF3--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> diff -r a9024a3c712c -r 699855034d6c src/org/openbravo/erpCommon/ad_forms/AcctServer.java --- a/src/org/openbravo/erpCommon/ad_forms/AcctServer.java Tue Dec 18 10:57:34 2012 +0100 +++ b/src/org/openbravo/erpCommon/ad_forms/AcctServer.java Tue Dec 18 13:12:55 2012 +0100 @@ -176,6 +176,8 @@ /** Document Status */ public static final String STATUS_NotCalculatedCost = "NC"; /** Document Status */ + public static final String STATUS_NoRelatedPO = "NO"; + /** Document Status */ public static final String STATUS_DocumentLocked = "L"; /** Document Status */ public static final String STATUS_DocumentDisabled = "D"; @@ -2015,6 +2017,12 @@ parameters.put("Account", Utility.parseTranslation(conn, vars, vars.getLanguage(), parameters.get("Account"))); } + } else if (strStatus.equals(STATUS_NoRelatedPO)) { + if (parameters.isEmpty()) { + strTitle = "@GoodsReceiptTransactionWithNoPO@"; + } else { + strTitle = "@GoodsReceiptTransactionWithNoPOWichProduct@"; + } } else if (strStatus.equals(STATUS_DocumentDisabled)) { strTitle = "@DocumentDisabled@"; messageResult.setType("Warning"); diff -r a9024a3c712c -r 699855034d6c src/org/openbravo/erpCommon/ad_forms/DocInOut.java --- a/src/org/openbravo/erpCommon/ad_forms/DocInOut.java Tue Dec 18 10:57:34 2012 +0100 +++ b/src/org/openbravo/erpCommon/ad_forms/DocInOut.java Tue Dec 18 13:12:55 2012 +0100 @@ -42,6 +42,7 @@ import org.openbravo.model.ad.system.Client; import org.openbravo.model.common.currency.Currency; import org.openbravo.model.common.enterprise.Organization; +import org.openbravo.model.common.order.OrderLine; import org.openbravo.model.common.plm.Product; import org.openbravo.model.materialmgmt.transaction.MaterialTransaction; import org.openbravo.model.materialmgmt.transaction.ShipmentInOut; @@ -309,34 +310,57 @@ costCurrency = line.transaction.getCurrency(); } C_Currency_ID = costCurrency.getId(); - if (CostingStatus.getInstance().isMigrated() && line.transaction != null - && !line.transaction.isCostCalculated()) { - Map<String, String> parameters = getNotCalculatedCostParameters(line.transaction); - setMessageResult(conn, STATUS_NotCalculatedCost, "error", parameters); - throw new IllegalStateException(); - } else if (CostingStatus.getInstance().isMigrated() && line.transaction == null) { - // Check default cost existence - HashMap<CostDimension, BaseOBObject> costDimensions = CostingUtils.getEmptyDimensions(); - costDimensions.put(CostDimension.Warehouse, line.getWarehouse()); - if (!CostingUtils.hasStandardCostDefinition(product, legalEntity, dateAcct, - costDimensions)) { + String costs = "0"; + String strCosts = "0"; + if (product.isBookUsingPurchaseOrderPrice()) { + // If the Product is checked as book using PO Price, the Price of the Purchase Order will + // be used to create the FactAcct Line + ShipmentInOutLine inOutLine = OBDal.getInstance().get(ShipmentInOutLine.class, + line.m_TrxLine_ID); + OrderLine ol = inOutLine.getSalesOrderLine(); + if (ol == null) { + Map<String, String> parameters = new HashMap<String, String>(); + parameters.put("product", inOutLine.getProduct().getIdentifier()); + parameters.put("line", inOutLine.getLineNo().toString()); + setMessageResult(conn, STATUS_NoRelatedPO, "error", parameters); + throw new IllegalStateException(); + } + costs = ol.getUnitPrice().multiply(inOutLine.getMovementQuantity()).toString(); + BigDecimal b_Costs = new BigDecimal(costs).setScale(new Integer(strScale), + RoundingMode.HALF_UP); + strCosts = b_Costs.toString(); + } else { + // If the Product is not checked as book using PO Price, the Cost of the + // Transaction will be used to create the FactAcct Line + if (CostingStatus.getInstance().isMigrated() && line.transaction != null + && !line.transaction.isCostCalculated()) { + Map<String, String> parameters = getNotCalculatedCostParameters(line.transaction); + setMessageResult(conn, STATUS_NotCalculatedCost, "error", parameters); + throw new IllegalStateException(); + } else if (CostingStatus.getInstance().isMigrated() && line.transaction == null) { + // Check default cost existence + HashMap<CostDimension, BaseOBObject> costDimensions = CostingUtils.getEmptyDimensions(); + costDimensions.put(CostDimension.Warehouse, line.getWarehouse()); + if (!CostingUtils.hasStandardCostDefinition(product, legalEntity, dateAcct, + costDimensions)) { + Map<String, String> parameters = getInvalidCostParameters(product.getIdentifier(), + DateAcct); + setMessageResult(conn, STATUS_InvalidCost, "error", parameters); + throw new IllegalStateException(); + } + } + costs = line.getProductCosts(DateAcct, as, conn, con); + BigDecimal b_Costs = new BigDecimal(costs).setScale(new Integer(strScale), + RoundingMode.HALF_UP); + strCosts = b_Costs.toString(); + if (b_Costs.compareTo(BigDecimal.ZERO) == 0 && !CostingStatus.getInstance().isMigrated() + && DocInOutData.existsCost(conn, DateAcct, line.m_M_Product_ID).equals("0")) { Map<String, String> parameters = getInvalidCostParameters(product.getIdentifier(), DateAcct); setMessageResult(conn, STATUS_InvalidCost, "error", parameters); throw new IllegalStateException(); } } - String costs = line.getProductCosts(DateAcct, as, conn, con); - BigDecimal b_Costs = new BigDecimal(costs).setScale(new Integer(strScale), - RoundingMode.HALF_UP); - String strCosts = b_Costs.toString(); - if (b_Costs.compareTo(BigDecimal.ZERO) == 0 && !CostingStatus.getInstance().isMigrated() - && DocInOutData.existsCost(conn, DateAcct, line.m_M_Product_ID).equals("0")) { - Map<String, String> parameters = getInvalidCostParameters(product.getIdentifier(), - DateAcct); - setMessageResult(conn, STATUS_InvalidCost, "error", parameters); - throw new IllegalStateException(); - } Account notInvoicedReceiptsAccount = getAccount(AcctServer.ACCTTYPE_NotInvoicedReceipts, as, conn); if (notInvoicedReceiptsAccount == null) { @@ -470,29 +494,47 @@ trx = inOutLine.getMaterialMgmtMaterialTransactionList().get(0); trxCost = trx.getTransactionCost(); } else { - // Not stocked item type product. Check standard cost existence. - Organization legalEntity = OBContext.getOBContext() - .getOrganizationStructureProvider(AD_Client_ID) - .getLegalEntity(inOut.getOrganization()); - HashMap<CostDimension, BaseOBObject> costDimensions = CostingUtils - .getEmptyDimensions(); - if (inOutLine.getStorageBin() == null) { - costDimensions.put(CostDimension.Warehouse, inOutLine.getShipmentReceipt() - .getWarehouse()); + if (inOutLine.getProduct().isBookUsingPurchaseOrderPrice()) { + // Not stocked item type product. + // If the Product is checked as book using Purchase Order Price, the Price of the PO + // will be used to create the FactAcct Line, therefore a related PO must exist + OrderLine ol = inOutLine.getSalesOrderLine(); + if (ol == null) { + Map<String, String> parameters = new HashMap<String, String>(); + parameters.put("product", inOutLine.getProduct().getIdentifier()); + parameters.put("line", inOutLine.getLineNo().toString()); ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d _______________________________________________ Openbravo-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openbravo-commits
