to accommodate your request this function is now configurable in rev:
943783

On Thu, 2010-05-13 at 10:54 +1200, Scott Gray wrote:
> I don't like the idea of the system taking guesses at creating payment 
> applications.  Why not present something in the UI when a user is entering a 
> payment or invoice that allows them to select an outstanding invoice or 
> payment to apply it to?
> 
> This just seems like it could get messy for companies who process a large 
> number of repeat orders.  If the system guesses wrong then somebody has to 
> manually go through and clean up the mess.
> 
> Regards
> Scott
> 
> HotWax Media
> http://www.hotwaxmedia.com
> 
> On 12/05/2010, at 9:20 PM, hans...@apache.org wrote:
> 
> > 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>
> > 
> > 
> 

-- 
Ofbiz on twitter: http://twitter.com/apache_ofbiz
Myself on twitter: http://twitter.com/hansbak
Antwebsystems.com: Quality services for competitive rates.

Reply via email to