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

Reply via email to