Author: hansbak
Date: Wed May 12 09:20:44 2010
New Revision: 943417
URL: http://svn.apache.org/viewvc?rev=943417&view=rev
Log:
if an invoice is approved or a payment is set to sent or received this service
will try to find a matching payment/invoice and when found create the payment
application
Modified:
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml
ofbiz/trunk/applications/accounting/servicedef/secas_invoice.xml
ofbiz/trunk/applications/accounting/servicedef/secas_payment.xml
ofbiz/trunk/applications/accounting/servicedef/services_payment.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=943417&r1=943416&r2=943417&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
Wed May 12 09:20:44 2010
@@ -814,4 +814,79 @@ under the License.
<call-service service-name="updatePayment"
in-map-name="updatePayment"/>
<field-to-result field="parameters.paymentId" result-name="paymentId"/>
</simple-method>
-</simple-methods>
\ No newline at end of file
+
+ <simple-method method-name="createMatchingPaymentApplication"
short-description="Create a payment application if either the invoice of
payment could be found">
+ <if-not-empty field="parameters.invoiceId">
+ <entity-one value-field="invoice" entity-name="Invoice"/>
+ <if-not-empty field="invoice">
+ <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>
+ <if-not-empty field="payments">
+ <!-- check if already applied -->
+ <entity-and list="paymentAppls"
entity-name="PaymentApplication">
+ <field-map field-name="paymentId"
from-field="payments[0].paymentId"/>
+ </entity-and>
+ <if-empty field="paymentAppls">
+ <set field="createAppl.paymentId"
from-field="payments[0].paymentId"/>
+ <set field="createAppl.invoiceId"
from-field="parameters.invoiceId"/>
+ <set field="createAppl.amountApplied"
from-field="invoiceTotal"/>
+ </if-empty>
+ </if-not-empty>
+ </if-not-empty>
+ </if-not-empty>
+
+ <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"/>
+ <condition-expr field-name="statusId"
value="INVOICE_PAID" operator="not-equals"/>
+ <condition-expr field-name="statusId"
value="INVOICE_CANCELLED" operator="not-equals"/>
+ <condition-expr field-name="statusId"
value="INVOICE_WRITEOFF" operator="not-equals"/>
+ <condition-expr field-name="partyIdFrom"
from-field="payment.partyIdTo"/>
+ <condition-expr field-name="partyId"
from-field="payment.partyIdFrom"/>
+ </condition-list>
+ <order-by field-name="invoiceDate"/>
+ </entity-condition>
+ <iterate entry="invoice" list="invoices">
+ <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>
+ </iterate>
+ <if-not-empty field="invoiceId">
+ <entity-and list="paymentAppls"
entity-name="PaymentApplication">
+ <field-map field-name="invoiceId"
from-field="invoiceId"/>
+ </entity-and>
+ <if-empty field="paymentAppls">
+ <set field="createAppl.paymentId"
from-field="parameters.paymentId"/>
+ <set field="createAppl.invoiceId"
from-field="invoiceId"/>
+ <set field="createAppl.amountApplied"
from-field="payment.amount"/>
+ </if-empty>
+ </if-not-empty>
+ </if-not-empty>
+ </if-not-empty>
+
+
+ <if-not-empty field="createAppl.paymentId">
+ <if-not-empty field="createAppl.invoiceId">
+ <call-service service-name="createPaymentApplication"
in-map-name="createAppl"/>
+ <set field="successMessage" value="also application created"/>
+ </if-not-empty>
+ </if-not-empty>
+ </simple-method>
+
+</simple-methods>
Modified: ofbiz/trunk/applications/accounting/servicedef/secas_invoice.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/secas_invoice.xml?rev=943417&r1=943416&r2=943417&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/secas_invoice.xml (original)
+++ ofbiz/trunk/applications/accounting/servicedef/secas_invoice.xml Wed May 12
09:20:44 2010
@@ -31,4 +31,11 @@ under the License.
<condition field-name="invoiceTypeId" operator="equals"
value="COMMISSION_INVOICE"/>
<action service="removeInvoiceItemAssocOnCancelInvoice" mode="sync"/>
</eca>
+
+ <eca service="setInvoiceStatus" event="commit">
+ <condition operator="equals" field-name="statusId"
value="INVOICE_APPROVED"/>
+ <condition operator="not-equals" field-name="oldStatusId"
value="INVOICE_APPROVED"/>
+ <action service="createMatchingPaymentApplication" mode="sync"/>
+ </eca>
+
</service-eca>
Modified: ofbiz/trunk/applications/accounting/servicedef/secas_payment.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/secas_payment.xml?rev=943417&r1=943416&r2=943417&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/secas_payment.xml (original)
+++ ofbiz/trunk/applications/accounting/servicedef/secas_payment.xml Wed May 12
09:20:44 2010
@@ -67,4 +67,17 @@ under the License.
<condition field-name="statusId" operator="equals"
value="FINACT_TRNS_CANCELED"/>
<action service="setFinAccountTransStatus" mode="sync"/>
</eca>
+
+ <eca service="setPaymentStatus" event="commit">
+ <condition operator="equals" field-name="statusId"
value="PMNT_RECEIVED"/>
+ <condition operator="not-equals" field-name="oldStatusId"
value="PMNT_RECEIVED"/>
+ <action service="createMatchingPaymentApplication" mode="sync"/>
+ </eca>
+
+ <eca service="setPaymentStatus" event="commit">
+ <condition operator="equals" field-name="statusId" value="PMNT_SENT"/>
+ <condition operator="not-equals" field-name="oldStatusId"
value="PMNT_SENT"/>
+ <action service="createMatchingPaymentApplication" mode="sync"/>
+ </eca>
+
</service-eca>
Modified: ofbiz/trunk/applications/accounting/servicedef/services_payment.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_payment.xml?rev=943417&r1=943416&r2=943417&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/services_payment.xml
(original)
+++ ofbiz/trunk/applications/accounting/servicedef/services_payment.xml Wed May
12 09:20:44 2010
@@ -240,4 +240,11 @@ under the License.
<attribute name="orderId" type="String" mode="IN" optional="false"/>
<attribute name="paymentId" type="String" mode="OUT" optional="false"/>
</service>
+
+ <service name="createMatchingPaymentApplication" engine="simple"
+
location="component://accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml"
invoke="createMatchingPaymentApplication" auth="true">
+ <description>Create a payment application if either the invoice of
payment could be found</description>
+ <attribute name="paymentId" type="String" mode="IN" optional="true"/>
+ <attribute name="invoiceId" type="String" mode="IN" optional="true"/>
+ </service>
</services>