Yeah, that scenario sounds pretty specific. That's not how most US businesses 
work.

-Adrian

--- On Tue, 5/4/10, Sam Hamilton <[email protected]> wrote:

> From: Sam Hamilton <[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, 8:00 PM
> Hi Scott,
> 
> We will ring a supplier and get a quote for a product,
> agree the terms
> e.g. pay first then they send the goods or 30 days credit
> or pay on
> delivery of goods. Then create a Purchase Order and then
> wire them the
> payment, the goods will then be delivered to our warehouse
> where we
> receive against the PO.
> 
> Sometimes the supplier can send too much or too little
> goods at which
> point either our purchasing department chases them for more
> products or
> we then send an additional wire for the extra cash or we
> get credit from
> the supplier to use against the next order.
> 
> From my understanding of the flow of OFBiz you need to
> create the
> Purchase Order, approve it and then once the goods have
> been received in
> full the Purchase Invoice is generated which then kicks in
> the
> Agreements which you set during the creation of the
> Purchase Invoice and
> finally the Purchase Invoice is shown to the Accounts
> Payable team for
> payment.
> 
> Yes I agree that this seems the wrong way round but this is
> how the
> business is done here and I can't change that - China can
> seem very
> inefficient at times.
> 
> Perhaps a On/Off switch for this code could be made - then
> it suits all
> companies? How best to make this work for everyone?
> 
> Cheers
> Sam
> 
> 
> 
> On 05/05/2010 10:34, Scott Gray wrote:
> > Surely they invoice you beforehand though?
> > 
> > The payment should be created based on that.
> > 
> > Regards
> > Scott
> > 
> > On 5/05/2010, at 2:28 PM, Sam Hamilton wrote:
> > 
> >> Hi Guys,
> >>
> >> Its for suppliers who need the payment of the
> invoice before the goods
> >> will be shipped e.g. they don't give credit.
> >>
> >> Sam
> >>
> >>
> >> On 05/05/2010 10:24, BJ Freeman wrote:
> >>> more for my understanding, I believe an
> invoice for a PO is internal not
> >>> sent to the supplier, if I remember a previous
> thread on the ml.
> >>> and that it is used to reconcile against the
> invoice received from the
> >>> supplier.
> >>> I did something similar.
> >>>
> >>> ========================
> >>>
> >>> BJ Freeman
> >>> http://bjfreeman.elance.com
> >>> Strategic Power Office with Supplier
> Automation <http://www.businessesnetwork.com/automation/viewforum.php?f=93>
> >>> Specialtymarket.com <http://www.specialtymarket.com/>
> >>>
> >>> Systems Integrator-- Glad to Assist
> >>>
> >>> Chat  Y! messenger: bjfr33man
> >>> Linkedin
> >>> <http://www.linkedin.com/profile?viewProfile=&key=1237480&locale=en_US&trk=tab_pro>
> >>>
> >>>
> >>> Scott Gray sent the following on 5/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">
> >>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >>
> > 
> 
> 



Reply via email to