You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ha...@apache.org on 2013/06/21 07:44:16 UTC

svn commit: r1495294 - in /ofbiz/trunk/applications/accounting: script/org/ofbiz/accounting/invoice/InvoiceServices.xml script/org/ofbiz/accounting/payment/PaymentServices.xml servicedef/services_invoice.xml

Author: hansbak
Date: Fri Jun 21 05:44:15 2013
New Revision: 1495294

URL: http://svn.apache.org/r1495294
Log:
make automatic application also working with foreign invoices and payments

Modified:
    ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml
    ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml
    ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml

Modified: ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml?rev=1495294&r1=1495293&r2=1495294&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml (original)
+++ ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml Fri Jun 21 05:44:15 2013
@@ -997,4 +997,30 @@ under the License.
         <call-service service-name="updateSimpleTextContent" in-map-name="updateSimpleText"/>
     </simple-method>
     
+    <simple-method method-name="isInvoiceForeign" short-description="check if a invoice is in a foreign currency related to the accounting company.">
+        <entity-one value-field="invoice" entity-name="InvoiceAndType">
+            <field-map field-name="invoiceId" from-field="parameters.invoiceId"/>
+        </entity-one>
+        <if-empty field="invoice">
+            <log level="error" message="Invoice not found"/>
+            <return/>
+        </if-empty>
+        <if-compare field="invoice.parentTypeId" operator="equals" value="PURCHASE_INVOICE">
+            <set field="pref.organizationPartyId" from-field="invoice.partyIdFrom"/>
+        </if-compare>          
+        <if-compare field="invoice.parentTypeId" operator="equals" value="SALES_INVOICE">
+            <set field="pref.organizationPartyId" from-field="invoice.partyId"/>
+        </if-compare>          
+        <call-service service-name="getPartyAccountingPreferences" in-map-name="pref">
+            <result-to-field result-name="prefResult"/>
+        </call-service>
+        <if-compare-field to-field="prefResult.partyAccountingPreference.baseCurrencyUomId" operator="equals" field="invoice.currencyUomId">
+            <set field="isForeign" value="false" type="Boolean"/>
+            <else>
+                <set field="isForeign" value="true" type="Boolean"/>
+            </else>
+        </if-compare-field>
+        <field-to-result field="isForeign"/>
+    </simple-method>
+       
 </simple-methods>

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=1495294&r1=1495293&r2=1495294&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 Fri Jun 21 05:44:15 2013
@@ -1016,15 +1016,36 @@ under the License.
                 <call-class-method method-name="getInvoiceTotal" class-name="org.ofbiz.accounting.invoice.InvoiceWorker" ret-field="invoiceTotal">
                     <field field="invoice" type="GenericValue"/>
                 </call-class-method>
-                <entity-condition list="payments" entity-name="Payment">
-                    <condition-list combine="and">
-                        <condition-expr field-name="statusId" value="PMNT_CONFIRMED" operator="not-equals"/>
-                        <condition-expr field-name="partyIdFrom" from-field="invoice.partyId" operator="equals"/>
-                        <condition-expr field-name="partyIdTo" from-field="invoice.partyIdFrom" operator="equals"/>
-                        <condition-expr field-name="amount" from-field="invoiceTotal" operator="equals"/>
-                    </condition-list>
-                    <order-by field-name="effectiveDate"/>
-                </entity-condition>
+                
+                <set field="checkInvoice.invoiceId" from="invoice.invoiceId"/>
+                <call-service service-name="isInvoiceForeign" in-map-name="checkInvoice">
+                    <result-to-field result-name="isForeign"/>
+                </call-service>
+                <if-compare operator="equals" value="true" field="isForeign">
+                    <entity-condition list="payments" entity-name="Payment">
+                        <condition-list combine="and">
+                            <condition-expr field-name="statusId" value="PMNT_CONFIRMED" operator="not-equals"/>
+                            <condition-expr field-name="partyIdFrom" from-field="invoice.partyId" operator="equals"/>
+                            <condition-expr field-name="partyIdTo" from-field="invoice.partyIdFrom" operator="equals"/>
+                            <condition-expr field-name="actualCurrencyAmount" from-field="invoiceTotal" operator="equals"/>
+                            <condition-expr field-name="actualCurrencyUomId" from-field="invoice.currencyUomId" operator="equals"/>
+                        </condition-list>
+                        <order-by field-name="effectiveDate"/>
+                    </entity-condition>
+                    <else>
+                        <entity-condition list="payments" entity-name="Payment">
+                            <condition-list combine="and">
+                                <condition-expr field-name="statusId" value="PMNT_CONFIRMED" operator="not-equals"/>
+                                <condition-expr field-name="partyIdFrom" from-field="invoice.partyId" operator="equals"/>
+                                <condition-expr field-name="partyIdTo" from-field="invoice.partyIdFrom" operator="equals"/>
+                                <condition-expr field-name="amount" from-field="invoiceTotal" operator="equals"/>
+                                <condition-expr field-name="currencyUomId" from-field="invoice.currencyUomId" operator="equals"/>
+                            </condition-list>
+                            <order-by field-name="effectiveDate"/>
+                        </entity-condition>
+                    </else>
+                </if-compare>
+
                 <if-not-empty field="payments">
                     <!-- check if already applied -->
                     <entity-and list="paymentAppls" entity-name="PaymentApplication">
@@ -1042,6 +1063,7 @@ under the License.
         <if-not-empty field="parameters.paymentId">
             <entity-one value-field="payment" entity-name="Payment"/>
             <if-not-empty field="payment">
+                        
                 <entity-condition list="invoices" entity-name="Invoice">
                     <condition-list combine="and">
                         <condition-expr field-name="statusId" value="INVOICE_READY" operator="not-equals"/>
@@ -1057,9 +1079,25 @@ under the License.
                     <call-class-method method-name="getInvoiceTotal" class-name="org.ofbiz.accounting.invoice.InvoiceWorker" ret-field="invoiceTotal">
                         <field field="invoice" type="GenericValue"/>
                     </call-class-method>
-                    <if-compare-field operator="equals" field="invoiceTotal" to-field="payment.amount">
-                        <set field="invoiceId" from-field="invoice.invoiceId"/>
-                    </if-compare-field>                
+
+                    <set field="checkInvoice.invoiceId" from="invoice.invoiceId"/>
+                    <call-service service-name="isInvoiceForeign" in-map-name="checkInvoice">
+                        <result-to-field result-name="isForeign"/>
+                    </call-service>                    
+                    <if-compare operator="equals" value="true" field="isForeign">
+                        <if-compare-field operator="equals" field="invoiceTotal" to-field="payment.actualCurrencyAmount">
+                            <if-compare-field operator="equals" field="invoice.currencyUomId" to-field="payment.actualCurrencyUomId">
+                                <set field="invoiceId" from-field="invoice.invoiceId"/>
+                            </if-compare-field>                
+                        </if-compare-field>                
+                        <else>
+                            <if-compare-field operator="equals" field="invoiceTotal" to-field="payment.amount">
+                                <if-compare-field operator="equals" field="invoice.currencyUomId" to-field="payment.currencyUomId">
+                                    <set field="invoiceId" from-field="invoice.invoiceId"/>
+                                </if-compare-field>                
+                            </if-compare-field>                
+                        </else>
+                    </if-compare>
                 </iterate>
                 <if-not-empty field="invoiceId">
                     <entity-and list="paymentAppls" entity-name="PaymentApplication">

Modified: ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml?rev=1495294&r1=1495293&r2=1495294&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml (original)
+++ ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml Fri Jun 21 05:44:15 2013
@@ -425,5 +425,11 @@ under the License.
         <attribute name="textDataResourceId" type="String" mode="IN" optional="true"/>
         <attribute name="text" type="String" mode="IN" optional="true" allow-html="safe"/>
     </service>
+    <service name="isInvoiceForeign" engine="simple"
+        location="component://accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml" invoke="isInvoiceForeign" auth="true">
+        <description>check if a invoice is in a foreign currency related to the accounting company.</description>
+        <attribute name="invoiceId" type="String" mode="IN" optional="false"/>
+        <attribute name="isForeign" type="Boolean" mode="OUT" optional="false"/>
+    </service>
     
 </services>



Re: svn commit: r1495294 - in /ofbiz/trunk/applications/accounting: script/org/ofbiz/accounting/invoice/InvoiceServices.xml script/org/ofbiz/accounting/payment/PaymentServices.xml servicedef/services_invoice.xml

Posted by Adrian Crum <ad...@sandglass-software.com>.
I checked the DMRB, and it shows the bill to party ID and bill from 
party ID specified in the INVOICE entity, so the current implementation 
is correct. It wasn't clear to me what those roles were in the OFBiz 
model because the field names are ambiguous.

-Adrian

On 6/23/2013 5:05 AM, Hans Bakker wrote:
> Hi Adrian,
>
> Thank you for your interest in the changes i am currently implementing 
> in the accounting system. Your name change is a fine suggestion and is 
> already implementedin revision 1495791. Your suggestion of the 
> invoiceroles I not really understand. I may be wrong but currently 
> invoiceroles are not used in the accounting process, that is why i did 
> not check them. partyId and partIdFrom are the only fields involved 
> here as far as I can see.
>
> If I am wrong, can you explain the invpoiceRoles in the accounting 
> process and where they are used?
>
> Regards,
> Hans
>
> On 06/21/2013 02:09 PM, Adrian Crum wrote:
>> If the service is meant to "check if a invoice is in a foreign 
>> currency related to the accounting company", then it might be best to 
>> rename it to "isInvoiceForeignCurrency".
>>
>> Also, wouldn't it be better to check the InvoiceRole entity? Those 
>> party ID fields are ambiguous.
>>
>> -Adrian
>>
>> On 6/21/2013 6:44 AM, hansbak@apache.org wrote:
>>> Author: hansbak
>>> Date: Fri Jun 21 05:44:15 2013
>>> New Revision: 1495294
>>>
>>> URL: http://svn.apache.org/r1495294
>>> Log:
>>> make automatic application also working with foreign invoices and 
>>> payments
>>>
>>> Modified:
>>> ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml 
>>>
>>> ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml 
>>>
>>> ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
>>>
>>> Modified: 
>>> ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml
>>> URL: 
>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml?rev=1495294&r1=1495293&r2=1495294&view=diff
>>> ============================================================================== 
>>>
>>> --- 
>>> ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml 
>>> (original)
>>> +++ 
>>> ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml 
>>> Fri Jun 21 05:44:15 2013
>>> @@ -997,4 +997,30 @@ under the License.
>>>           <call-service service-name="updateSimpleTextContent" 
>>> in-map-name="updateSimpleText"/>
>>>       </simple-method>
>>>       +    <simple-method method-name="isInvoiceForeign" 
>>> short-description="check if a invoice is in a foreign currency 
>>> related to the accounting company.">
>>> +        <entity-one value-field="invoice" 
>>> entity-name="InvoiceAndType">
>>> +            <field-map field-name="invoiceId" 
>>> from-field="parameters.invoiceId"/>
>>> +        </entity-one>
>>> +        <if-empty field="invoice">
>>> +            <log level="error" message="Invoice not found"/>
>>> +            <return/>
>>> +        </if-empty>
>>> +        <if-compare field="invoice.parentTypeId" operator="equals" 
>>> value="PURCHASE_INVOICE">
>>> +            <set field="pref.organizationPartyId" 
>>> from-field="invoice.partyIdFrom"/>
>>> +        </if-compare>
>>> +        <if-compare field="invoice.parentTypeId" operator="equals" 
>>> value="SALES_INVOICE">
>>> +            <set field="pref.organizationPartyId" 
>>> from-field="invoice.partyId"/>
>>> +        </if-compare>
>>> +        <call-service service-name="getPartyAccountingPreferences" 
>>> in-map-name="pref">
>>> +            <result-to-field result-name="prefResult"/>
>>> +        </call-service>
>>> +        <if-compare-field 
>>> to-field="prefResult.partyAccountingPreference.baseCurrencyUomId" 
>>> operator="equals" field="invoice.currencyUomId">
>>> +            <set field="isForeign" value="false" type="Boolean"/>
>>> +            <else>
>>> +                <set field="isForeign" value="true" type="Boolean"/>
>>> +            </else>
>>> +        </if-compare-field>
>>> +        <field-to-result field="isForeign"/>
>>> +    </simple-method>
>>> +
>>>   </simple-methods>
>>>
>>> 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=1495294&r1=1495293&r2=1495294&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 
>>> Fri Jun 21 05:44:15 2013
>>> @@ -1016,15 +1016,36 @@ under the License.
>>>                   <call-class-method method-name="getInvoiceTotal" 
>>> class-name="org.ofbiz.accounting.invoice.InvoiceWorker" 
>>> ret-field="invoiceTotal">
>>>                       <field field="invoice" type="GenericValue"/>
>>>                   </call-class-method>
>>> -                <entity-condition list="payments" 
>>> entity-name="Payment">
>>> -                    <condition-list combine="and">
>>> -                        <condition-expr field-name="statusId" 
>>> value="PMNT_CONFIRMED" operator="not-equals"/>
>>> -                        <condition-expr field-name="partyIdFrom" 
>>> from-field="invoice.partyId" operator="equals"/>
>>> -                        <condition-expr field-name="partyIdTo" 
>>> from-field="invoice.partyIdFrom" operator="equals"/>
>>> -                        <condition-expr field-name="amount" 
>>> from-field="invoiceTotal" operator="equals"/>
>>> -                    </condition-list>
>>> -                    <order-by field-name="effectiveDate"/>
>>> -                </entity-condition>
>>> +
>>> +                <set field="checkInvoice.invoiceId" 
>>> from="invoice.invoiceId"/>
>>> +                <call-service service-name="isInvoiceForeign" 
>>> in-map-name="checkInvoice">
>>> +                    <result-to-field result-name="isForeign"/>
>>> +                </call-service>
>>> +                <if-compare operator="equals" value="true" 
>>> field="isForeign">
>>> +                    <entity-condition list="payments" 
>>> entity-name="Payment">
>>> +                        <condition-list combine="and">
>>> +                            <condition-expr field-name="statusId" 
>>> value="PMNT_CONFIRMED" operator="not-equals"/>
>>> +                            <condition-expr 
>>> field-name="partyIdFrom" from-field="invoice.partyId" 
>>> operator="equals"/>
>>> +                            <condition-expr field-name="partyIdTo" 
>>> from-field="invoice.partyIdFrom" operator="equals"/>
>>> +                            <condition-expr 
>>> field-name="actualCurrencyAmount" from-field="invoiceTotal" 
>>> operator="equals"/>
>>> +                            <condition-expr 
>>> field-name="actualCurrencyUomId" from-field="invoice.currencyUomId" 
>>> operator="equals"/>
>>> +                        </condition-list>
>>> +                        <order-by field-name="effectiveDate"/>
>>> +                    </entity-condition>
>>> +                    <else>
>>> +                        <entity-condition list="payments" 
>>> entity-name="Payment">
>>> +                            <condition-list combine="and">
>>> +                                <condition-expr 
>>> field-name="statusId" value="PMNT_CONFIRMED" operator="not-equals"/>
>>> +                                <condition-expr 
>>> field-name="partyIdFrom" from-field="invoice.partyId" 
>>> operator="equals"/>
>>> +                                <condition-expr 
>>> field-name="partyIdTo" from-field="invoice.partyIdFrom" 
>>> operator="equals"/>
>>> +                                <condition-expr field-name="amount" 
>>> from-field="invoiceTotal" operator="equals"/>
>>> +                                <condition-expr 
>>> field-name="currencyUomId" from-field="invoice.currencyUomId" 
>>> operator="equals"/>
>>> +                            </condition-list>
>>> +                            <order-by field-name="effectiveDate"/>
>>> +                        </entity-condition>
>>> +                    </else>
>>> +                </if-compare>
>>> +
>>>                   <if-not-empty field="payments">
>>>                       <!-- check if already applied -->
>>>                       <entity-and list="paymentAppls" 
>>> entity-name="PaymentApplication">
>>> @@ -1042,6 +1063,7 @@ under the License.
>>>           <if-not-empty field="parameters.paymentId">
>>>               <entity-one value-field="payment" entity-name="Payment"/>
>>>               <if-not-empty field="payment">
>>> +
>>>                   <entity-condition list="invoices" 
>>> entity-name="Invoice">
>>>                       <condition-list combine="and">
>>>                           <condition-expr field-name="statusId" 
>>> value="INVOICE_READY" operator="not-equals"/>
>>> @@ -1057,9 +1079,25 @@ under the License.
>>>                       <call-class-method 
>>> method-name="getInvoiceTotal" 
>>> class-name="org.ofbiz.accounting.invoice.InvoiceWorker" 
>>> ret-field="invoiceTotal">
>>>                           <field field="invoice" type="GenericValue"/>
>>>                       </call-class-method>
>>> -                    <if-compare-field operator="equals" 
>>> field="invoiceTotal" to-field="payment.amount">
>>> -                        <set field="invoiceId" 
>>> from-field="invoice.invoiceId"/>
>>> -                    </if-compare-field>
>>> +
>>> +                    <set field="checkInvoice.invoiceId" 
>>> from="invoice.invoiceId"/>
>>> +                    <call-service service-name="isInvoiceForeign" 
>>> in-map-name="checkInvoice">
>>> +                        <result-to-field result-name="isForeign"/>
>>> +                    </call-service>
>>> +                    <if-compare operator="equals" value="true" 
>>> field="isForeign">
>>> +                        <if-compare-field operator="equals" 
>>> field="invoiceTotal" to-field="payment.actualCurrencyAmount">
>>> +                            <if-compare-field operator="equals" 
>>> field="invoice.currencyUomId" to-field="payment.actualCurrencyUomId">
>>> +                                <set field="invoiceId" 
>>> from-field="invoice.invoiceId"/>
>>> +                            </if-compare-field>
>>> +                        </if-compare-field>
>>> +                        <else>
>>> +                            <if-compare-field operator="equals" 
>>> field="invoiceTotal" to-field="payment.amount">
>>> +                                <if-compare-field operator="equals" 
>>> field="invoice.currencyUomId" to-field="payment.currencyUomId">
>>> +                                    <set field="invoiceId" 
>>> from-field="invoice.invoiceId"/>
>>> +                                </if-compare-field>
>>> +                            </if-compare-field>
>>> +                        </else>
>>> +                    </if-compare>
>>>                   </iterate>
>>>                   <if-not-empty field="invoiceId">
>>>                       <entity-and list="paymentAppls" 
>>> entity-name="PaymentApplication">
>>>
>>> Modified: 
>>> ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
>>> URL: 
>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml?rev=1495294&r1=1495293&r2=1495294&view=diff
>>> ============================================================================== 
>>>
>>> --- 
>>> ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml 
>>> (original)
>>> +++ 
>>> ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml 
>>> Fri Jun 21 05:44:15 2013
>>> @@ -425,5 +425,11 @@ under the License.
>>>           <attribute name="textDataResourceId" type="String" 
>>> mode="IN" optional="true"/>
>>>           <attribute name="text" type="String" mode="IN" 
>>> optional="true" allow-html="safe"/>
>>>       </service>
>>> +    <service name="isInvoiceForeign" engine="simple"
>>> + 
>>> location="component://accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml" 
>>> invoke="isInvoiceForeign" auth="true">
>>> +        <description>check if a invoice is in a foreign currency 
>>> related to the accounting company.</description>
>>> +        <attribute name="invoiceId" type="String" mode="IN" 
>>> optional="false"/>
>>> +        <attribute name="isForeign" type="Boolean" mode="OUT" 
>>> optional="false"/>
>>> +    </service>
>>>         </services>
>>>
>>>
>>
>


Re: svn commit: r1495294 - in /ofbiz/trunk/applications/accounting: script/org/ofbiz/accounting/invoice/InvoiceServices.xml script/org/ofbiz/accounting/payment/PaymentServices.xml servicedef/services_invoice.xml

Posted by Hans Bakker <ma...@antwebsystems.com>.
Hi Adrian,

Thank you for your interest in the changes i am currently implementing 
in the accounting system. Your name change is a fine suggestion and is 
already implementedin revision 1495791. Your suggestion of the 
invoiceroles I not really understand. I may be wrong but currently 
invoiceroles are not used in the accounting process, that is why i did 
not check them. partyId and partIdFrom are the only fields involved here 
as far as I can see.

If I am wrong, can you explain the invpoiceRoles in the accounting 
process and where they are used?

Regards,
Hans

On 06/21/2013 02:09 PM, Adrian Crum wrote:
> If the service is meant to "check if a invoice is in a foreign 
> currency related to the accounting company", then it might be best to 
> rename it to "isInvoiceForeignCurrency".
>
> Also, wouldn't it be better to check the InvoiceRole entity? Those 
> party ID fields are ambiguous.
>
> -Adrian
>
> On 6/21/2013 6:44 AM, hansbak@apache.org wrote:
>> Author: hansbak
>> Date: Fri Jun 21 05:44:15 2013
>> New Revision: 1495294
>>
>> URL: http://svn.apache.org/r1495294
>> Log:
>> make automatic application also working with foreign invoices and 
>> payments
>>
>> Modified:
>> ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml
>> ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml
>> ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
>>
>> Modified: 
>> ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml
>> URL: 
>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml?rev=1495294&r1=1495293&r2=1495294&view=diff
>> ============================================================================== 
>>
>> --- 
>> ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml 
>> (original)
>> +++ 
>> ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml 
>> Fri Jun 21 05:44:15 2013
>> @@ -997,4 +997,30 @@ under the License.
>>           <call-service service-name="updateSimpleTextContent" 
>> in-map-name="updateSimpleText"/>
>>       </simple-method>
>>       +    <simple-method method-name="isInvoiceForeign" 
>> short-description="check if a invoice is in a foreign currency 
>> related to the accounting company.">
>> +        <entity-one value-field="invoice" entity-name="InvoiceAndType">
>> +            <field-map field-name="invoiceId" 
>> from-field="parameters.invoiceId"/>
>> +        </entity-one>
>> +        <if-empty field="invoice">
>> +            <log level="error" message="Invoice not found"/>
>> +            <return/>
>> +        </if-empty>
>> +        <if-compare field="invoice.parentTypeId" operator="equals" 
>> value="PURCHASE_INVOICE">
>> +            <set field="pref.organizationPartyId" 
>> from-field="invoice.partyIdFrom"/>
>> +        </if-compare>
>> +        <if-compare field="invoice.parentTypeId" operator="equals" 
>> value="SALES_INVOICE">
>> +            <set field="pref.organizationPartyId" 
>> from-field="invoice.partyId"/>
>> +        </if-compare>
>> +        <call-service service-name="getPartyAccountingPreferences" 
>> in-map-name="pref">
>> +            <result-to-field result-name="prefResult"/>
>> +        </call-service>
>> +        <if-compare-field 
>> to-field="prefResult.partyAccountingPreference.baseCurrencyUomId" 
>> operator="equals" field="invoice.currencyUomId">
>> +            <set field="isForeign" value="false" type="Boolean"/>
>> +            <else>
>> +                <set field="isForeign" value="true" type="Boolean"/>
>> +            </else>
>> +        </if-compare-field>
>> +        <field-to-result field="isForeign"/>
>> +    </simple-method>
>> +
>>   </simple-methods>
>>
>> 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=1495294&r1=1495293&r2=1495294&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 
>> Fri Jun 21 05:44:15 2013
>> @@ -1016,15 +1016,36 @@ under the License.
>>                   <call-class-method method-name="getInvoiceTotal" 
>> class-name="org.ofbiz.accounting.invoice.InvoiceWorker" 
>> ret-field="invoiceTotal">
>>                       <field field="invoice" type="GenericValue"/>
>>                   </call-class-method>
>> -                <entity-condition list="payments" 
>> entity-name="Payment">
>> -                    <condition-list combine="and">
>> -                        <condition-expr field-name="statusId" 
>> value="PMNT_CONFIRMED" operator="not-equals"/>
>> -                        <condition-expr field-name="partyIdFrom" 
>> from-field="invoice.partyId" operator="equals"/>
>> -                        <condition-expr field-name="partyIdTo" 
>> from-field="invoice.partyIdFrom" operator="equals"/>
>> -                        <condition-expr field-name="amount" 
>> from-field="invoiceTotal" operator="equals"/>
>> -                    </condition-list>
>> -                    <order-by field-name="effectiveDate"/>
>> -                </entity-condition>
>> +
>> +                <set field="checkInvoice.invoiceId" 
>> from="invoice.invoiceId"/>
>> +                <call-service service-name="isInvoiceForeign" 
>> in-map-name="checkInvoice">
>> +                    <result-to-field result-name="isForeign"/>
>> +                </call-service>
>> +                <if-compare operator="equals" value="true" 
>> field="isForeign">
>> +                    <entity-condition list="payments" 
>> entity-name="Payment">
>> +                        <condition-list combine="and">
>> +                            <condition-expr field-name="statusId" 
>> value="PMNT_CONFIRMED" operator="not-equals"/>
>> +                            <condition-expr field-name="partyIdFrom" 
>> from-field="invoice.partyId" operator="equals"/>
>> +                            <condition-expr field-name="partyIdTo" 
>> from-field="invoice.partyIdFrom" operator="equals"/>
>> +                            <condition-expr 
>> field-name="actualCurrencyAmount" from-field="invoiceTotal" 
>> operator="equals"/>
>> +                            <condition-expr 
>> field-name="actualCurrencyUomId" from-field="invoice.currencyUomId" 
>> operator="equals"/>
>> +                        </condition-list>
>> +                        <order-by field-name="effectiveDate"/>
>> +                    </entity-condition>
>> +                    <else>
>> +                        <entity-condition list="payments" 
>> entity-name="Payment">
>> +                            <condition-list combine="and">
>> +                                <condition-expr 
>> field-name="statusId" value="PMNT_CONFIRMED" operator="not-equals"/>
>> +                                <condition-expr 
>> field-name="partyIdFrom" from-field="invoice.partyId" 
>> operator="equals"/>
>> +                                <condition-expr 
>> field-name="partyIdTo" from-field="invoice.partyIdFrom" 
>> operator="equals"/>
>> +                                <condition-expr field-name="amount" 
>> from-field="invoiceTotal" operator="equals"/>
>> +                                <condition-expr 
>> field-name="currencyUomId" from-field="invoice.currencyUomId" 
>> operator="equals"/>
>> +                            </condition-list>
>> +                            <order-by field-name="effectiveDate"/>
>> +                        </entity-condition>
>> +                    </else>
>> +                </if-compare>
>> +
>>                   <if-not-empty field="payments">
>>                       <!-- check if already applied -->
>>                       <entity-and list="paymentAppls" 
>> entity-name="PaymentApplication">
>> @@ -1042,6 +1063,7 @@ under the License.
>>           <if-not-empty field="parameters.paymentId">
>>               <entity-one value-field="payment" entity-name="Payment"/>
>>               <if-not-empty field="payment">
>> +
>>                   <entity-condition list="invoices" 
>> entity-name="Invoice">
>>                       <condition-list combine="and">
>>                           <condition-expr field-name="statusId" 
>> value="INVOICE_READY" operator="not-equals"/>
>> @@ -1057,9 +1079,25 @@ under the License.
>>                       <call-class-method 
>> method-name="getInvoiceTotal" 
>> class-name="org.ofbiz.accounting.invoice.InvoiceWorker" 
>> ret-field="invoiceTotal">
>>                           <field field="invoice" type="GenericValue"/>
>>                       </call-class-method>
>> -                    <if-compare-field operator="equals" 
>> field="invoiceTotal" to-field="payment.amount">
>> -                        <set field="invoiceId" 
>> from-field="invoice.invoiceId"/>
>> -                    </if-compare-field>
>> +
>> +                    <set field="checkInvoice.invoiceId" 
>> from="invoice.invoiceId"/>
>> +                    <call-service service-name="isInvoiceForeign" 
>> in-map-name="checkInvoice">
>> +                        <result-to-field result-name="isForeign"/>
>> +                    </call-service>
>> +                    <if-compare operator="equals" value="true" 
>> field="isForeign">
>> +                        <if-compare-field operator="equals" 
>> field="invoiceTotal" to-field="payment.actualCurrencyAmount">
>> +                            <if-compare-field operator="equals" 
>> field="invoice.currencyUomId" to-field="payment.actualCurrencyUomId">
>> +                                <set field="invoiceId" 
>> from-field="invoice.invoiceId"/>
>> +                            </if-compare-field>
>> +                        </if-compare-field>
>> +                        <else>
>> +                            <if-compare-field operator="equals" 
>> field="invoiceTotal" to-field="payment.amount">
>> +                                <if-compare-field operator="equals" 
>> field="invoice.currencyUomId" to-field="payment.currencyUomId">
>> +                                    <set field="invoiceId" 
>> from-field="invoice.invoiceId"/>
>> +                                </if-compare-field>
>> +                            </if-compare-field>
>> +                        </else>
>> +                    </if-compare>
>>                   </iterate>
>>                   <if-not-empty field="invoiceId">
>>                       <entity-and list="paymentAppls" 
>> entity-name="PaymentApplication">
>>
>> Modified: 
>> ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
>> URL: 
>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml?rev=1495294&r1=1495293&r2=1495294&view=diff
>> ============================================================================== 
>>
>> --- 
>> ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml 
>> (original)
>> +++ 
>> ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml 
>> Fri Jun 21 05:44:15 2013
>> @@ -425,5 +425,11 @@ under the License.
>>           <attribute name="textDataResourceId" type="String" 
>> mode="IN" optional="true"/>
>>           <attribute name="text" type="String" mode="IN" 
>> optional="true" allow-html="safe"/>
>>       </service>
>> +    <service name="isInvoiceForeign" engine="simple"
>> + 
>> location="component://accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml" 
>> invoke="isInvoiceForeign" auth="true">
>> +        <description>check if a invoice is in a foreign currency 
>> related to the accounting company.</description>
>> +        <attribute name="invoiceId" type="String" mode="IN" 
>> optional="false"/>
>> +        <attribute name="isForeign" type="Boolean" mode="OUT" 
>> optional="false"/>
>> +    </service>
>>         </services>
>>
>>
>


Re: svn commit: r1495294 - in /ofbiz/trunk/applications/accounting: script/org/ofbiz/accounting/invoice/InvoiceServices.xml script/org/ofbiz/accounting/payment/PaymentServices.xml servicedef/services_invoice.xml

Posted by Adrian Crum <ad...@sandglass-software.com>.
If the service is meant to "check if a invoice is in a foreign currency 
related to the accounting company", then it might be best to rename it 
to "isInvoiceForeignCurrency".

Also, wouldn't it be better to check the InvoiceRole entity? Those party 
ID fields are ambiguous.

-Adrian

On 6/21/2013 6:44 AM, hansbak@apache.org wrote:
> Author: hansbak
> Date: Fri Jun 21 05:44:15 2013
> New Revision: 1495294
>
> URL: http://svn.apache.org/r1495294
> Log:
> make automatic application also working with foreign invoices and payments
>
> Modified:
>      ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml
>      ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml
>      ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
>
> Modified: ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml?rev=1495294&r1=1495293&r2=1495294&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml (original)
> +++ ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml Fri Jun 21 05:44:15 2013
> @@ -997,4 +997,30 @@ under the License.
>           <call-service service-name="updateSimpleTextContent" in-map-name="updateSimpleText"/>
>       </simple-method>
>       
> +    <simple-method method-name="isInvoiceForeign" short-description="check if a invoice is in a foreign currency related to the accounting company.">
> +        <entity-one value-field="invoice" entity-name="InvoiceAndType">
> +            <field-map field-name="invoiceId" from-field="parameters.invoiceId"/>
> +        </entity-one>
> +        <if-empty field="invoice">
> +            <log level="error" message="Invoice not found"/>
> +            <return/>
> +        </if-empty>
> +        <if-compare field="invoice.parentTypeId" operator="equals" value="PURCHASE_INVOICE">
> +            <set field="pref.organizationPartyId" from-field="invoice.partyIdFrom"/>
> +        </if-compare>
> +        <if-compare field="invoice.parentTypeId" operator="equals" value="SALES_INVOICE">
> +            <set field="pref.organizationPartyId" from-field="invoice.partyId"/>
> +        </if-compare>
> +        <call-service service-name="getPartyAccountingPreferences" in-map-name="pref">
> +            <result-to-field result-name="prefResult"/>
> +        </call-service>
> +        <if-compare-field to-field="prefResult.partyAccountingPreference.baseCurrencyUomId" operator="equals" field="invoice.currencyUomId">
> +            <set field="isForeign" value="false" type="Boolean"/>
> +            <else>
> +                <set field="isForeign" value="true" type="Boolean"/>
> +            </else>
> +        </if-compare-field>
> +        <field-to-result field="isForeign"/>
> +    </simple-method>
> +
>   </simple-methods>
>
> 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=1495294&r1=1495293&r2=1495294&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 Fri Jun 21 05:44:15 2013
> @@ -1016,15 +1016,36 @@ under the License.
>                   <call-class-method method-name="getInvoiceTotal" class-name="org.ofbiz.accounting.invoice.InvoiceWorker" ret-field="invoiceTotal">
>                       <field field="invoice" type="GenericValue"/>
>                   </call-class-method>
> -                <entity-condition list="payments" entity-name="Payment">
> -                    <condition-list combine="and">
> -                        <condition-expr field-name="statusId" value="PMNT_CONFIRMED" operator="not-equals"/>
> -                        <condition-expr field-name="partyIdFrom" from-field="invoice.partyId" operator="equals"/>
> -                        <condition-expr field-name="partyIdTo" from-field="invoice.partyIdFrom" operator="equals"/>
> -                        <condition-expr field-name="amount" from-field="invoiceTotal" operator="equals"/>
> -                    </condition-list>
> -                    <order-by field-name="effectiveDate"/>
> -                </entity-condition>
> +
> +                <set field="checkInvoice.invoiceId" from="invoice.invoiceId"/>
> +                <call-service service-name="isInvoiceForeign" in-map-name="checkInvoice">
> +                    <result-to-field result-name="isForeign"/>
> +                </call-service>
> +                <if-compare operator="equals" value="true" field="isForeign">
> +                    <entity-condition list="payments" entity-name="Payment">
> +                        <condition-list combine="and">
> +                            <condition-expr field-name="statusId" value="PMNT_CONFIRMED" operator="not-equals"/>
> +                            <condition-expr field-name="partyIdFrom" from-field="invoice.partyId" operator="equals"/>
> +                            <condition-expr field-name="partyIdTo" from-field="invoice.partyIdFrom" operator="equals"/>
> +                            <condition-expr field-name="actualCurrencyAmount" from-field="invoiceTotal" operator="equals"/>
> +                            <condition-expr field-name="actualCurrencyUomId" from-field="invoice.currencyUomId" operator="equals"/>
> +                        </condition-list>
> +                        <order-by field-name="effectiveDate"/>
> +                    </entity-condition>
> +                    <else>
> +                        <entity-condition list="payments" entity-name="Payment">
> +                            <condition-list combine="and">
> +                                <condition-expr field-name="statusId" value="PMNT_CONFIRMED" operator="not-equals"/>
> +                                <condition-expr field-name="partyIdFrom" from-field="invoice.partyId" operator="equals"/>
> +                                <condition-expr field-name="partyIdTo" from-field="invoice.partyIdFrom" operator="equals"/>
> +                                <condition-expr field-name="amount" from-field="invoiceTotal" operator="equals"/>
> +                                <condition-expr field-name="currencyUomId" from-field="invoice.currencyUomId" operator="equals"/>
> +                            </condition-list>
> +                            <order-by field-name="effectiveDate"/>
> +                        </entity-condition>
> +                    </else>
> +                </if-compare>
> +
>                   <if-not-empty field="payments">
>                       <!-- check if already applied -->
>                       <entity-and list="paymentAppls" entity-name="PaymentApplication">
> @@ -1042,6 +1063,7 @@ under the License.
>           <if-not-empty field="parameters.paymentId">
>               <entity-one value-field="payment" entity-name="Payment"/>
>               <if-not-empty field="payment">
> +
>                   <entity-condition list="invoices" entity-name="Invoice">
>                       <condition-list combine="and">
>                           <condition-expr field-name="statusId" value="INVOICE_READY" operator="not-equals"/>
> @@ -1057,9 +1079,25 @@ under the License.
>                       <call-class-method method-name="getInvoiceTotal" class-name="org.ofbiz.accounting.invoice.InvoiceWorker" ret-field="invoiceTotal">
>                           <field field="invoice" type="GenericValue"/>
>                       </call-class-method>
> -                    <if-compare-field operator="equals" field="invoiceTotal" to-field="payment.amount">
> -                        <set field="invoiceId" from-field="invoice.invoiceId"/>
> -                    </if-compare-field>
> +
> +                    <set field="checkInvoice.invoiceId" from="invoice.invoiceId"/>
> +                    <call-service service-name="isInvoiceForeign" in-map-name="checkInvoice">
> +                        <result-to-field result-name="isForeign"/>
> +                    </call-service>
> +                    <if-compare operator="equals" value="true" field="isForeign">
> +                        <if-compare-field operator="equals" field="invoiceTotal" to-field="payment.actualCurrencyAmount">
> +                            <if-compare-field operator="equals" field="invoice.currencyUomId" to-field="payment.actualCurrencyUomId">
> +                                <set field="invoiceId" from-field="invoice.invoiceId"/>
> +                            </if-compare-field>
> +                        </if-compare-field>
> +                        <else>
> +                            <if-compare-field operator="equals" field="invoiceTotal" to-field="payment.amount">
> +                                <if-compare-field operator="equals" field="invoice.currencyUomId" to-field="payment.currencyUomId">
> +                                    <set field="invoiceId" from-field="invoice.invoiceId"/>
> +                                </if-compare-field>
> +                            </if-compare-field>
> +                        </else>
> +                    </if-compare>
>                   </iterate>
>                   <if-not-empty field="invoiceId">
>                       <entity-and list="paymentAppls" entity-name="PaymentApplication">
>
> Modified: ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml?rev=1495294&r1=1495293&r2=1495294&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml (original)
> +++ ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml Fri Jun 21 05:44:15 2013
> @@ -425,5 +425,11 @@ under the License.
>           <attribute name="textDataResourceId" type="String" mode="IN" optional="true"/>
>           <attribute name="text" type="String" mode="IN" optional="true" allow-html="safe"/>
>       </service>
> +    <service name="isInvoiceForeign" engine="simple"
> +        location="component://accounting/script/org/ofbiz/accounting/invoice/InvoiceServices.xml" invoke="isInvoiceForeign" auth="true">
> +        <description>check if a invoice is in a foreign currency related to the accounting company.</description>
> +        <attribute name="invoiceId" type="String" mode="IN" optional="false"/>
> +        <attribute name="isForeign" type="Boolean" mode="OUT" optional="false"/>
> +    </service>
>       
>   </services>
>
>