This looks wrong to me too. You don't know what to pay until the order has been received.
-Adrian --- On Tue, 5/4/10, Scott Gray <[email protected]> wrote: > From: Scott Gray <[email protected]> > Subject: Re: svn commit: r941132 - in /ofbiz/trunk/applications: > accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml > accounting/servicedef/services_payment.xml order/servicedef/secas.xml > To: [email protected] > Date: Tuesday, May 4, 2010, 6:56 PM > Hi Hans, > > Wouldn't you do this when an order is received (i.e. an > invoice created) rather than when the order is placed? > > Typically payment due dates are based on the invoice date > not the order date. > > Regards > Scott > > HotWax Media > http://www.hotwaxmedia.com > > On 5/05/2010, at 1:43 PM, [email protected] > wrote: > > > Author: hansbak > > Date: Wed May 5 01:43:45 2010 > > New Revision: 941132 > > > > URL: http://svn.apache.org/viewvc?rev=941132&view=rev > > Log: > > Create a payment with the status 'not-paid' when a > purchase order is approved setting the payment date > according agreements > > > > Modified: > > > ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml > > > ofbiz/trunk/applications/accounting/servicedef/services_payment.xml > > > ofbiz/trunk/applications/order/servicedef/secas.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=941132&r1=941131&r2=941132&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 5 01:43:45 2010 > > @@ -746,4 +746,72 @@ under the License. > > > <clear-field > field="setPaymentStatusMap"/> > > > </iterate> > > </simple-method> > > -</simple-methods> > > + > > + <simple-method > method-name="createPaymentFromOrder" > short-description="Service auto create Payment from > Order"> > > + <entity-one > value-field="orderHeader" entity-name="OrderHeader"/> > > + <entity-and > list="orderRoleToList" entity-name="OrderRole"> > > + > <field-map field-name="orderId" > from-field="orderHeader.orderId"/> > > + > <field-map field-name="roleTypeId" > value="BILL_FROM_VENDOR"/> > > + </entity-and> > > + <first-from-list > entry="orderRoleTo" list="orderRoleToList"/> > > + <entity-and > list="orderRoleFromList" entity-name="OrderRole"> > > + > <field-map field-name="orderId" > from-field="orderHeader.orderId"/> > > + > <field-map field-name="roleTypeId" > value="BILL_TO_CUSTOMER"/> > > + </entity-and> > > + <first-from-list > entry="orderRoleFrom" list="orderRoleFromList"/> > > + <if-compare > operator="equals" value="PURCHASE_ORDER" > field="orderHeader.orderTypeId"> > > + > <entity-and list="agreementList" entity-name="Agreement" > filter-by-date="true"> > > + > <field-map field-name="partyIdFrom" > from-field="orderRoleFrom.partyId"/> > > + > <field-map field-name="partyIdTo" > from-field="orderRoleTo.partyId"/> > > + > <field-map field-name="agreementTypeId" > value="PURCHASE_AGREEMENT"/> > > + > </entity-and> > > + <set > field="parameters.paymentTypeId" > value="VENDOR_PAYMENT"/> > > + > <else> > > + > <entity-and list="agreementList" > entity-name="Agreement" filter-by-date="true"> > > + > <field-map field-name="partyIdFrom" > from-field="orderRoleFrom.partyId"/> > > + > <field-map field-name="partyIdTo" > from-field="orderRoleTo.partyId"/> > > + > <field-map > field-name="agreementTypeId" value="SALES_AGREEMENT"/> > > + > </entity-and> > > + > <set field="parameters.paymentTypeId" > value="CUSTOMER_PAYMENT"/> > > + > </else> > > + </if-compare> > > + <first-from-list > entry="agreement" list="agreementList"/> > > + <if-not-empty > field="agreement"> > > + > <entity-and list="orderTermList" > entity-name="OrderTerm"> > > + > <field-map field-name="orderId" > from-field="orderHeader.orderId"/> > > + > <field-map field-name="termTypeId" > value="FIN_PAYMENT_TERM"/> > > + > </entity-and> > > + > <first-from-list entry="orderTerm" > list="orderTermList"/> > > + > <if-not-empty field="orderTerm.termDays"> > > + > <set field="days" from-field="orderTerm.termDays" > type="Integer"/> > > + > <now-timestamp field="start"/> > > + > <call-class-method > class-name="org.ofbiz.base.util.UtilDateTime" > method-name="addDaysToTimestamp" > ret-field="parameters.effectiveDate"> > > + > <field field="start" > type="java.sql.Timestamp"/> > > + > <field field="days" type="int"/> > > + > </call-class-method> > > + > </if-not-empty> > > + </if-not-empty> > > + <if-empty > field="parameters.effectiveDate"> > > + > <now-timestamp field="parameters.effectiveDate"/> > > + </if-empty> > > + <set > field="parameters.partyIdFrom" > from-field="orderRoleFrom.partyId"/> > > + <set > field="parameters.partyIdTo" > from-field="orderRoleTo.partyId"/> > > + <set > field="parameters.amount" > from-field="orderHeader.grandTotal"/> > > + <set > field="parameters.currencyUomId" > from-field="orderHeader.currencyUom"/> > > + <set > field="parameters.paymentMethodTypeId" > value="COMPANY_ACCOUNT"/> > > + <set > field="parameters.statusId" value="PMNT_NOT_PAID"/> > > + <set-service-fields > service-name="createPayment" to-map="createPayment" > map="parameters"/> > > + <call-service > service-name="createPayment" > in-map-name="createPayment"> > > + > <result-to-field result-name="paymentId" > field="parameters.paymentId"/> > > + </call-service> > > + <set > field="parameters.orderId" > from-field="orderHeader.orderId"/> > > + <set > field="parameters.maxAmount" > from-field="orderHeader.grandTotal"/> > > + <set-service-fields > service-name="createOrderPaymentPreference" > to-map="newOrderPaymentPreference" map="parameters"/> > > + <call-service > service-name="createOrderPaymentPreference" > in-map-name="newOrderPaymentPreference"> > > + > <result-to-field result-name="orderPaymentPreferenceId" > field="parameters.paymentPreferenceId"/> > > + </call-service> > > + <set-service-fields > service-name="updatePayment" to-map="updatePayment" > map="parameters"/> > > + <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 > > > > Modified: > ofbiz/trunk/applications/accounting/servicedef/services_payment.xml > > URL: > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_payment.xml?rev=941132&r1=941131&r2=941132&view=diff > > > ============================================================================== > > --- > ofbiz/trunk/applications/accounting/servicedef/services_payment.xml > (original) > > +++ > ofbiz/trunk/applications/accounting/servicedef/services_payment.xml > Wed May 5 01:43:45 2010 > > @@ -233,4 +233,11 @@ under the License. > > <attribute > name="statusId" type="String" mode="IN" > optional="false"/> > > <attribute > name="errorMessage" type="String" optional="true" > mode="OUT"/> > > </service> > > + > > + <service > name="createPaymentFromOrder" engine="simple" > > + > location="component://accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml" > invoke="createPaymentFromOrder" auth="true"> > > + <description>create > Payment from Order</description> > > + <attribute > name="orderId" type="String" mode="IN" > optional="false"/> > > + <attribute > name="paymentId" type="String" mode="OUT" > optional="false"/> > > + </service> > > </services> > > > > Modified: > ofbiz/trunk/applications/order/servicedef/secas.xml > > URL: > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=941132&r1=941131&r2=941132&view=diff > > > ============================================================================== > > --- > ofbiz/trunk/applications/order/servicedef/secas.xml > (original) > > +++ > ofbiz/trunk/applications/order/servicedef/secas.xml Wed > May 5 01:43:45 2010 > > @@ -93,6 +93,12 @@ under the License. > > <action > service="resetGrandTotal" mode="sync"/> > > <action > service="sendOrderCompleteNotification" mode="async" > persist="true"/> > > </eca> > > + <eca service="changeOrderStatus" > event="commit" run-on-error="false"> > > + <condition > field-name="orderTypeId" operator="equals" > value="PURCHASE_ORDER"/> > > + <condition > field-name="statusId" operator="equals" > value="ORDER_APPROVED"/> > > + <condition-field > field-name="statusId" operator="not-equals" > to-field-name="oldStatusId"/> > > + <action > service="createPaymentFromOrder" mode="sync" > persist="true"/> > > + </eca> > > > > <!-- DISABLED FOR NOW > > <eca > service="changeOrderStatus" event="commit" > run-on-error="false"> > > > > > >
