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> |
Free forum by Nabble | Edit this page |