details:   https://code.openbravo.com/erp/devel/pi/rev/1b7a3f58c091
changeset: 23953:1b7a3f58c091
user:      RM packaging bot <staff.rm <at> openbravo.com>
date:      Tue Jul 01 16:37:03 2014 +0000
summary:   CI: update AD_MODULE to version 23943

details:   https://code.openbravo.com/erp/devel/pi/rev/d84acc99f234
changeset: 23954:d84acc99f234
user:      RM packaging bot <staff.rm <at> openbravo.com>
date:      Tue Jul 01 16:54:00 2014 +0000
summary:   CI: merge back from main

diffstat:

 
modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml
                   |   86 +++++-
 modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml  
                                         |    2 +-
 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                |    4 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
                   |  137 ++++++++-
 
modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-addPayment.js
                          |   18 +-
 modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE.xml       
                                         |    2 +-
 
modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                     |    2 +-
 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE.xml
                                       |    2 +-
 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                            |    8 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/formitem/ob-formitem-fk-filter.js
 |    4 -
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-grid.js
                        |    4 -
 
modules/org.openbravo.client.htmlwidget/src-db/database/sourcedata/AD_MODULE.xml
                                        |    2 +-
 
modules/org.openbravo.client.htmlwidget/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                             |    2 +-
 modules/org.openbravo.client.kernel/src-db/database/sourcedata/AD_MODULE.xml   
                                         |    2 +-
 
modules/org.openbravo.client.kernel/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                 |    6 +-
 
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/FKComboUIDefinition.java
                  |   22 +-
 modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_MODULE.xml     
                                         |    2 +-
 
modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                   |    4 +-
 
modules/org.openbravo.client.querylist/src-db/database/sourcedata/AD_MODULE.xml 
                                        |    2 +-
 
modules/org.openbravo.client.querylist/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                              |    2 +-
 modules/org.openbravo.client.widgets/src-db/database/sourcedata/AD_MODULE.xml  
                                         |    2 +-
 
modules/org.openbravo.client.widgets/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                |    2 +-
 
modules/org.openbravo.financial.paymentreport/src-db/database/sourcedata/AD_MODULE.xml
                                  |    2 +-
 
modules/org.openbravo.financial.paymentreport/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                       |    2 +-
 
modules/org.openbravo.reports.ordersawaitingdelivery/src-db/database/sourcedata/AD_MODULE.xml
                           |    2 +-
 
modules/org.openbravo.reports.ordersawaitingdelivery/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                |    2 +-
 
modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_MODULE.xml
                                       |    2 +-
 
modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                            |   10 +-
 
modules/org.openbravo.service.integration.google/src-db/database/sourcedata/AD_MODULE.xml
                               |    2 +-
 
modules/org.openbravo.service.integration.google/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                    |    4 +-
 
modules/org.openbravo.service.integration.openid/src-db/database/sourcedata/AD_MODULE.xml
                               |    2 +-
 
modules/org.openbravo.service.integration.openid/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                    |    2 +-
 modules/org.openbravo.service.json/src-db/database/sourcedata/AD_MODULE.xml    
                                         |    2 +-
 
modules/org.openbravo.service.json/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                  |    2 +-
 
modules/org.openbravo.service.json/src/org/openbravo/service/json/DefaultJsonDataService.java
                           |   22 -
 
modules/org.openbravo.service.json/src/org/openbravo/service/json/JsonConstants.java
                                    |    1 -
 
modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_MODULE.xml
                                   |    2 +-
 
modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                        |   12 +-
 
modules/org.openbravo.userinterface.skin.250to300Comp/src-db/database/sourcedata/AD_MODULE.xml
                          |    2 +-
 
modules/org.openbravo.userinterface.skin.250to300Comp/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
               |    2 +-
 
modules/org.openbravo.userinterface.smartclient/src-db/database/sourcedata/AD_MODULE.xml
                                |    2 +-
 
modules/org.openbravo.userinterface.smartclient/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                     |    6 +-
 
modules/org.openbravo.userinterface.smartclient/web/org.openbravo.userinterface.smartclient/js/ob-smartclient.js
        |   30 --
 modules/org.openbravo.v3.datasets/src-db/database/sourcedata/AD_MODULE.xml     
                                         |    2 +-
 
modules/org.openbravo.v3.datasets/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                   |    6 +-
 modules/org.openbravo.v3.framework/src-db/database/sourcedata/AD_MODULE.xml    
                                         |    2 +-
 
modules/org.openbravo.v3.framework/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                  |   24 +-
 modules/org.openbravo.v3/src-db/database/sourcedata/AD_MODULE.xml              
                                         |    2 +-
 modules/org.openbravo.v3/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml   
                                         |   18 +-
 src-db/database/model/functions/MA_PRODUCTION_COST.xml                         
                                         |    1 +
 src-db/database/model/tables/C_BPARTNER.xml                                    
                                         |   11 +
 src-db/database/sourcedata/AD_COLUMN.xml                                       
                                         |   74 ++++-
 src-db/database/sourcedata/AD_ELEMENT.xml                                      
                                         |   54 +++-
 src-db/database/sourcedata/AD_FIELD.xml                                        
                                         |  102 ++++++-
 src-db/database/sourcedata/AD_MESSAGE.xml                                      
                                         |   12 +
 src-db/database/sourcedata/AD_MODULE.xml                                       
                                         |    2 +-
 src-db/database/sourcedata/AD_REFERENCE.xml                                    
                                         |   12 +
 src-db/database/sourcedata/OBUIAPP_PARAMETER.xml                               
                                         |  118 +++++++
 src-db/database/sourcedata/OBUIAPP_PROCESS.xml                                 
                                         |   19 +
 src-db/database/sourcedata/OBUISEL_SELECTOR.xml                                
                                         |   16 +
 
src-util/modulescript/build/classes/org/openbravo/modulescript/InitializeBPCurrency.class
                               |    0 
 
src-util/modulescript/build/classes/org/openbravo/modulescript/InitializeBPCurrencyData.class
                           |    0 
 src-util/modulescript/src/org/openbravo/modulescript/InitializeBPCurrency.java 
                                         |   44 ++
 
src-util/modulescript/src/org/openbravo/modulescript/InitializeBPCurrency_data.xsql
                                     |   70 ++++
 src/org/openbravo/common/actionhandler/SetNewBPCurrency.java                   
                                         |  150 ++++++++++
 src/org/openbravo/common/datasource/ReturnToVendorPickAndEditDataSource.java   
                                         |    3 +-
 src/org/openbravo/erpCommon/ad_forms/DocLineProduction_data.xsql               
                                         |    3 +-
 src/org/openbravo/erpCommon/ad_forms/GenerateShipmentsmanual.java              
                                         |   13 +-
 src/org/openbravo/erpCommon/ad_process/ApplyModules.html                       
                                         |    2 +-
 src/org/openbravo/erpCommon/security/Login.html                                
                                         |    2 +-
 src/org/openbravo/erpCommon/security/Login_F1.html                             
                                         |    2 +-
 src/org/openbravo/event/BusinessPartnerEventHandler.java                       
                                         |   69 ++++
 web/js/utils.js                                                                
                                         |    6 +-
 73 files changed, 1066 insertions(+), 203 deletions(-)

diffs (truncated from 2518 to 300 lines):

diff -r 7993ccdd440a -r d84acc99f234 
modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml
     Tue Jul 01 11:09:46 2014 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml
     Tue Jul 01 16:54:00 2014 +0000
@@ -32,6 +32,7 @@
 V_OutstandingAmount NUMBER;
 V_DueAmount NUMBER;
 V_DayStillDue NUMBER;
+v_ConvertedAmount NUMBER;
 
 v_Client_ID VARCHAR2(32);
 v_Org_ID VARCHAR2(32);
@@ -43,6 +44,7 @@
 v_PaymentTerm C_INVOICE.C_PaymentTerm_ID%TYPE;
 v_PaymentRule C_INVOICE.PaymentRule%TYPE;
 v_Currency_ID VARCHAR2(32);
+v_bpCurrency_id VARCHAR2(32);
 v_BPartner_ID VARCHAR2(32);
 v_DateInvoiced DATE;
 v_TotalLines NUMBER;
@@ -136,6 +138,20 @@
     v_creditmultiplier := -1;
   END IF;
 
+  --Gets the business partner's currency
+  SELECT BP_Currency_ID
+  INTO v_bpCurrency_id
+  from C_BPartner
+  WHERE C_BPartner_ID = v_BPartner_ID;
+  
+  IF (v_bpCurrency_id is null) THEN
+    v_bpCurrency_id:= v_Currency_ID;
+
+    update c_bpartner
+    set BP_Currency_ID = v_bpCurrency_id
+    where c_bpartner_id =v_BPartner_ID;
+  END IF;
+
   -- complete invoice
   IF (p_docaction = 'CO') THEN
     -- Checking Payment Method ID is available
@@ -595,8 +611,29 @@
       WHERE C_INVOICE_ID = P_RECORD_ID;
 
       -- Updating SO_CREDITUSED when Invoices are being processed
+      if(v_bpCurrency_id <> v_Currency_id) THEN
+        SELECT COUNT(*)
+        INTO v_Count
+        FROM C_Conversion_Rate_Document
+        WHERE C_Invoice_ID = P_RECORD_ID
+        AND C_Currency_ID = v_Currency_id
+        AND C_Currency_Id_To = v_bpCurrency_id;
+
+        IF v_Count >0 THEN
+          SELECT RATE*COALESCE(V_OutstandingAmount, 0) * v_creditmultiplier
+          INTO v_ConvertedAmount
+          FROM C_Conversion_Rate_Document
+          WHERE C_Invoice_ID = P_RECORD_ID
+          AND C_Currency_ID = v_Currency_id
+          AND C_Currency_Id_To = v_bpCurrency_id;        
+        ELSE
+          v_ConvertedAmount := 
C_Currency_Convert((COALESCE(V_OutstandingAmount, 0) * v_creditmultiplier), 
v_Currency_id, v_bpCurrency_id, v_DateInvoiced,'S', v_Client_ID, v_Org_ID);
+        END IF;
+      else
+        v_ConvertedAmount := COALESCE(V_OutstandingAmount, 0) * 
v_creditmultiplier;
+      end if;
       UPDATE C_BPARTNER
-      SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) + 
(COALESCE(V_OutstandingAmount, 0) * v_creditmultiplier)
+      SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) + v_ConvertedAmount
       WHERE C_BPARTNER_ID = v_BPartner_ID;
 
       -- Automatic creation of payment and financial transaction
@@ -923,8 +960,29 @@
                 WHERE C_INVOICE_ID = P_RECORD_ID
                   AND TOTALPAID = GRANDTOTAL;
                 -- Updating SO_CREDITUSED when PAYMENT OCCUR and is not set in 
RPAE status
+                if (v_bpCurrency_id <> v_Currency_id) then
+                  SELECT COUNT(*)
+                  INTO v_Count
+                  FROM C_Conversion_Rate_Document
+                  WHERE C_Invoice_ID = P_RECORD_ID
+                  AND C_Currency_ID = v_Currency_id
+                  AND C_Currency_Id_To = v_bpCurrency_id;
+
+                  IF v_Count >0 THEN
+                    SELECT RATE*(COALESCE(cur_paymentschedule.OUTSTANDINGAMT, 
0) * v_creditmultiplier)
+                    INTO v_ConvertedAmount
+                    FROM C_Conversion_Rate_Document
+                    WHERE C_Invoice_ID = P_RECORD_ID
+                    AND C_Currency_ID = v_Currency_id
+                    AND C_Currency_Id_To = v_bpCurrency_id;
+                  ELSE
+                    v_ConvertedAmount := 
C_Currency_Convert((COALESCE(cur_paymentschedule.OUTSTANDINGAMT, 0) * 
v_creditmultiplier), v_Currency_id, v_bpCurrency_id, v_DateInvoiced,'S', 
v_Client_ID, v_Org_ID);
+                  END IF;  
+                else
+                  v_ConvertedAmount := 
(COALESCE(cur_paymentschedule.OUTSTANDINGAMT, 0) * v_creditmultiplier);
+                end if;
                 UPDATE C_BPARTNER
-                SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) - 
(COALESCE(cur_paymentschedule.OUTSTANDINGAMT, 0) * v_creditmultiplier)
+                SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) - 
v_ConvertedAmount
                 WHERE C_BPARTNER_ID = v_BPartner_ID;
               END IF;
             END LOOP;
@@ -1023,8 +1081,30 @@
       INTO v_PaidAmount, v_PaymentPlanExpectedTotal
       FROM FIN_PAYMENT_SCHEDULE
       WHERE FIN_PAYMENT_SCHEDULE.C_INVOICE_ID = p_record_id ;
+
+      if v_bpCurrency_id <> v_Currency_id then
+        SELECT COUNT(*)
+        INTO v_Count
+        FROM C_Conversion_Rate_Document
+        WHERE C_Invoice_ID = P_RECORD_ID
+        AND C_Currency_ID = v_Currency_id
+        AND C_Currency_Id_To = v_bpCurrency_id;
+
+        IF v_Count >0 THEN
+          SELECT RATE*((v_PaymentPlanExpectedTotal - v_PaidAmount) * 
v_creditmultiplier)
+          INTO v_ConvertedAmount
+          FROM C_Conversion_Rate_Document
+          WHERE C_Invoice_ID = P_RECORD_ID
+          AND C_Currency_ID = v_Currency_id
+          AND C_Currency_Id_To = v_bpCurrency_id;
+        ELSE
+          v_ConvertedAmount := C_Currency_Convert(((v_PaymentPlanExpectedTotal 
- v_PaidAmount) * v_creditmultiplier), v_Currency_id, v_bpCurrency_id, 
v_DateInvoiced,'S', v_Client_ID, v_Org_ID);
+        END IF;  
+      else
+        v_ConvertedAmount := ((v_PaymentPlanExpectedTotal - v_PaidAmount) * 
v_creditmultiplier);
+      END IF;
       UPDATE C_BPARTNER
-         SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) - 
((v_PaymentPlanExpectedTotal - v_PaidAmount) * v_creditmultiplier)
+         SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) - v_convertedAmount
       WHERE C_BPARTNER_ID = v_BPartner_ID;
     END;
 
diff -r 7993ccdd440a -r d84acc99f234 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml 
    Tue Jul 01 11:09:46 2014 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml 
    Tue Jul 01 16:54:00 2014 +0000
@@ -6,7 +6,7 @@
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <NAME><![CDATA[Advanced Payables and 
Receivables Mngmt]]></NAME>
-<!--A918E3331C404B889D69AA9BFAFB23AC-->  
<VERSION><![CDATA[3.0.23940]]></VERSION>
+<!--A918E3331C404B889D69AA9BFAFB23AC-->  
<VERSION><![CDATA[3.0.23943]]></VERSION>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <DESCRIPTION><![CDATA[Managing your 
finances with an ERP does not have to be difficult. Enjoy a radically improved 
user experience that combines the power of an enterprise grade financial 
application with the simplicity and ease of a web 2.0 personal accounting 
service.]]></DESCRIPTION>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <HELP><![CDATA[Advanced Payables and 
Receivables Management simplifies and automates the business processes around 
the management of financial accounts, from the receipt and issue of payment, to 
the reconciliation of those events with bank statements.
 If you would like to help shape this module you are welcome to take part in 
the forum discussions or register feature requests or issues in the 
corresponding (Forum and Bug Tracking) sections in the Advanced Payables and 
Receivable project in the OB Forge.]]></HELP>
diff -r 7993ccdd440a -r d84acc99f234 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
  Tue Jul 01 11:09:46 2014 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
  Tue Jul 01 16:54:00 2014 +0000
@@ -7,7 +7,7 @@
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[5EB4F15C80684ACA904756BDC12ADBE5]]></AD_DEPENDENT_MODULE_ID>
-<!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<STARTVERSION><![CDATA[2.1.23940]]></STARTVERSION>
+<!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<STARTVERSION><![CDATA[2.1.23943]]></STARTVERSION>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <DEPENDANT_MODULE_NAME><![CDATA[User 
Interface Selector]]></DEPENDANT_MODULE_NAME>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
@@ -21,7 +21,7 @@
 <!--B97FC854C6DD41E692161585645A900F-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--B97FC854C6DD41E692161585645A900F-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
 <!--B97FC854C6DD41E692161585645A900F-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[0]]></AD_DEPENDENT_MODULE_ID>
-<!--B97FC854C6DD41E692161585645A900F-->  
<STARTVERSION><![CDATA[3.0.23940]]></STARTVERSION>
+<!--B97FC854C6DD41E692161585645A900F-->  
<STARTVERSION><![CDATA[3.0.23943]]></STARTVERSION>
 <!--B97FC854C6DD41E692161585645A900F-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--B97FC854C6DD41E692161585645A900F-->  
<DEPENDANT_MODULE_NAME><![CDATA[core]]></DEPENDANT_MODULE_NAME>
 <!--B97FC854C6DD41E692161585645A900F-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
diff -r 7993ccdd440a -r d84acc99f234 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
     Tue Jul 01 11:09:46 2014 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
     Tue Jul 01 16:54:00 2014 +0000
@@ -19,7 +19,9 @@
 package org.openbravo.advpaymentmngt.process;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -34,6 +36,7 @@
 import org.openbravo.base.exception.OBException;
 import org.openbravo.base.provider.OBProvider;
 import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.client.kernel.RequestContext;
 import org.openbravo.dal.core.DalUtil;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBCriteria;
@@ -44,7 +47,9 @@
 import org.openbravo.erpCommon.utility.OBMessageUtils;
 import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.model.common.businesspartner.BusinessPartner;
+import org.openbravo.model.common.currency.ConversionRate;
 import org.openbravo.model.common.currency.ConversionRateDoc;
+import org.openbravo.model.common.currency.Currency;
 import org.openbravo.model.common.enterprise.Organization;
 import org.openbravo.model.common.invoice.Invoice;
 import 
org.openbravo.model.financialmgmt.accounting.FIN_FinancialAccountAccounting;
@@ -57,7 +62,6 @@
 import org.openbravo.model.financialmgmt.payment.FIN_Payment_Credit;
 import org.openbravo.model.financialmgmt.payment.FinAccPaymentMethod;
 import org.openbravo.model.financialmgmt.payment.PaymentExecutionProcess;
-import org.openbravo.model.pricing.pricelist.PriceList;
 import org.openbravo.scheduling.ProcessBundle;
 import org.openbravo.service.db.DalConnectionProvider;
 
@@ -302,17 +306,19 @@
               OBDal.getInstance().rollbackAndClose();
               return;
             }
-            PriceList priceList = payment.isReceipt() ? 
businessPartner.getPriceList()
-                : businessPartner.getPurchasePricelist();
-            if (!payment.getCurrency().getId()
-                .equals(priceList != null ? priceList.getCurrency().getId() : 
"")) {
+            String currency = null;
+            if (businessPartner.getCurrency() == null) {
+              currency = payment.getCurrency().getId();
+              businessPartner.setCurrency(payment.getCurrency());
+            } else {
+              currency = businessPartner.getCurrency().getId();
+            }
+            if (!payment.getCurrency().getId().equals(currency)) {
               msg.setType("Error");
               msg.setTitle(Utility.messageBD(conProvider, "Error", language));
               msg.setMessage(String.format(
                   Utility.parseTranslation(conProvider, vars, language, 
"@APRM_CreditCurrency@"),
-                  priceList != null ? priceList.getCurrency().getISOCode() : 
Utility
-                      .parseTranslation(conProvider, vars, language,
-                          "@APRM_CreditNoPricelistCurrency@")));
+                  businessPartner.getCurrency().getISOCode()));
               bundle.setResult(msg);
               OBDal.getInstance().rollbackAndClose();
               return;
@@ -402,10 +408,44 @@
                         .getInvoice().getBusinessPartner();
 
                     // Payments update credit opposite to invoices
+                    BigDecimal paidAmount = BigDecimal.ZERO;
+                    Invoice invoiceForConversion = paymentScheduleDetail
+                        .getInvoicePaymentSchedule() != null ? 
paymentScheduleDetail
+                        .getInvoicePaymentSchedule().getInvoice() : null;
+                    paidAmount = BigDecimal.ZERO;
+                    String fromCurrency = payment.getCurrency().getId();
+                    String toCurrency = businessPartner.getCurrency().getId();
+                    if (!fromCurrency.equals(toCurrency)) {
+                      BigDecimal exchangeRate = BigDecimal.ZERO;
+                      // check at invoice document level
+                      List<ConversionRateDoc> conversionRateDocumentForInvoice 
= getConversionRateDocumentForInvoice(
+                          invoiceForConversion, isReceipt);
+                      if (conversionRateDocumentForInvoice.size() > 0) {
+                        exchangeRate = 
conversionRateDocumentForInvoice.get(0).getRate();
+                      } else {
+                        // global
+                        exchangeRate = 
getConversionRate(payment.getOrganization().getId(),
+                            fromCurrency, toCurrency,
+                            invoiceForConversion != null ? 
invoiceForConversion.getInvoiceDate()
+                                : payment.getPaymentDate());
+                      }
+                      if (exchangeRate == BigDecimal.ZERO) {
+                        msg.setType("Error");
+                        msg.setTitle(Utility.messageBD(conProvider, "Error", 
language));
+                        msg.setMessage(Utility.parseTranslation(conProvider, 
vars, language,
+                            "@NoCurrencyConversion@"));
+                        bundle.setResult(msg);
+                        OBDal.getInstance().rollbackAndClose();
+                        return;
+                      }
+                      paidAmount = amount.multiply(exchangeRate);
+                    } else {
+                      paidAmount = amount;
+                    }
                     if (isReceipt) {
-                      decreaseCustomerCredit(businessPartner, amount);
+                      decreaseCustomerCredit(businessPartner, paidAmount);
                     } else {
-                      increaseCustomerCredit(businessPartner, amount);
+                      increaseCustomerCredit(businessPartner, paidAmount);
                     }
                     FIN_AddPayment.updatePaymentScheduleAmounts(paymentDetail,
                         paymentScheduleDetail.getInvoicePaymentSchedule(),
@@ -727,6 +767,9 @@
           BusinessPartner businessPartner = payment.getBusinessPartner();
           // When credit is used (consumed) we compensate so_creditused as 
this amount is already
           // included in the payment details. Credit consumed should not 
affect to so_creditused
+          BigDecimal paidAmount = BigDecimal.ZERO;
+          String fromCurrency = payment.getCurrency().getId();
+          String toCurrency = businessPartner.getCurrency().getId();
           if (payment.getGeneratedCredit().compareTo(BigDecimal.ZERO) == 0
               && payment.getUsedCredit().compareTo(BigDecimal.ZERO) != 0) {
             if (isReceipt) {
@@ -790,10 +833,43 @@
                     // BP SO_CreditUsed
                     businessPartner = 
paymentScheduleDetail.getInvoicePaymentSchedule()
                         .getInvoice().getBusinessPartner();
+                    Invoice invoiceForConversion = paymentScheduleDetail
+                        .getInvoicePaymentSchedule() != null ? 
paymentScheduleDetail
+                        .getInvoicePaymentSchedule().getInvoice() : null;
+                    paidAmount = BigDecimal.ZERO;
+                    fromCurrency = payment.getCurrency().getId();
+                    toCurrency = businessPartner.getCurrency().getId();

------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to