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>


Reply via email to