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
