Jacques,

thanks for your review, however this is a provisional purchase payment which will surely be manually adjusted when the real payment comes in. Not specifying a date means it will take the latest available conversion which is fine.

Regards,
Hans

On 06/04/2013 03:31 AM, Jacques Le Roux wrote:
While reviewning this commit I stumbled upon similar calls to convertUom service

<call-service service-name="convertUom" in-map-name="convertUomInMap">

I noticed this TODO for others

<!-- TODO: set the optional asOfDate input parameter -->

Should not the change below address the same concern, at least with a TODO for 
now?

The idea is otherwise the convertUom takes will always use <now-timestamp /> 
(as fallback, when asOfDate is missing).
But in some case we would want to use the currencies rates conversion of the 
time the order was done, which is not necessary the time the order is paid.

Jacques


From: <[email protected]>
Author: hansbak
Date: Sun Jun  2 09:57:32 2013
New Revision: 1488656

URL: http://svn.apache.org/r1488656
Log:
create payment in home currency when order was in foreign currency

Modified:
    
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml

Modified: 
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml?rev=1488656&r1=1488655&r2=1488656&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml
 (original)
+++ 
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml
 Sun Jun  2 09:57:32 2013
@@ -896,6 +896,7 @@ under the License.
                 <field-map field-name="agreementTypeId" 
value="PURCHASE_AGREEMENT"/>
             </entity-and>
             <set field="parameters.paymentTypeId" value="VENDOR_PAYMENT"/>
+            <set field="organizationPartyId" 
from-field="orderRoleFrom.partyId"/>
             <else>
                <entity-and list="agreementList" entity-name="Agreement" 
filter-by-date="true">
                     <field-map field-name="partyIdFrom" 
from-field="orderRoleFrom.partyId"/>
@@ -903,6 +904,7 @@ under the License.
                     <field-map field-name="agreementTypeId" 
value="SALES_AGREEMENT"/>
                 </entity-and>
                 <set field="parameters.paymentTypeId" 
value="CUSTOMER_PAYMENT"/>
+                <set field="organizationPartyId" 
from-field="orderRoleTo.partyId"/>
             </else>
         </if-compare>
         <first-from-list entry="agreement" list="agreementList"/>
@@ -924,10 +926,31 @@ under the License.
         <if-empty field="parameters.effectiveDate">
             <now-timestamp field="parameters.effectiveDate"/>
         </if-empty>
+
+        <!-- check currency and when required convert-->
+        <set field="partyAccountingPreferencesMap.organizationPartyId" 
from-field="organizationPartyId"/>
+        <call-service service-name="getPartyAccountingPreferences" 
in-map-name="partyAccountingPreferencesMap">
+             <result-to-field result-name="partyAccountingPreference" 
field="partyAcctgPreference"/>
+        </call-service>
+        <if-compare-field to-field="partyAcctgPreference.baseCurrencyUomId" 
operator="equals" field="orderHeader.currencyUom">
+            <set field="parameters.currencyUomId" 
from-field="orderHeader.currencyUom"/>
+            <set field="parameters.amount" 
from-field="orderHeader.grandTotal"/>
+            <else>
+                <set field="convertUomInMap.originalValue" 
from-field="orderHeader.grandTotal"/>
+                <set field="convertUomInMap.uomId" 
from-field="orderHeader.currencyUom"/>
+                <set field="convertUomInMap.uomIdTo" 
from-field="partyAcctgPreference.baseCurrencyUomId"/>
+                <call-service service-name="convertUom" 
in-map-name="convertUomInMap">
+                    <result-to-field result-name="convertedValue" 
field="parameters.amount"/>
+                </call-service>
+                <set field="parameters.actualCurrencyAmount" 
from-field="orderHeader.grandTotal"/>
+                <set field="parameters.actualCurrencyUomId" 
from-field="orderHeader.currencyUom"/>
+                <set field="parameters.currencyUomId" 
from-field="partyAcctgPreference.baseCurrencyUomId"/>
+                <set field="parameters.actualCurrencyUomId" 
from-field="orderHeader.currencyUom"/>
+            </else>
+        </if-compare-field>
+
         <set field="parameters.partyIdFrom" 
from-field="orderRoleFrom.partyId"/>
         <set field="parameters.partyIdTo" from-field="orderRoleTo.partyId"/>
-        <set field="parameters.amount" from-field="orderHeader.grandTotal"/>
-        <set field="parameters.currencyUomId" 
from-field="orderHeader.currencyUom"/>
         <set field="parameters.paymentMethodTypeId" value="COMPANY_ACCOUNT"/>
         <set field="parameters.statusId" value="PMNT_NOT_PAID"/>
         <set-service-fields service-name="createPayment" to-map="createPayment" 
map="parameters"/>



Reply via email to