You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ha...@apache.org on 2013/06/19 07:53:21 UTC
svn commit: r1494464 - in /ofbiz/trunk/applications: accounting/config/
accounting/script/org/ofbiz/accounting/payment/ accounting/servicedef/
order/entitydef/ order/servicedef/
Author: hansbak
Date: Wed Jun 19 05:53:20 2013
New Revision: 1494464
URL: http://svn.apache.org/r1494464
Log:
when a sales order is completed and no payment is created, this will create a payment in the 'not paid' status which can be disabled in the accounting properties file, when it is a order in foreign currency it will use the same exchange rate as when will be used for the related invoice
Modified:
ofbiz/trunk/applications/accounting/config/AccountingConfig.properties
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml
ofbiz/trunk/applications/accounting/servicedef/services_payment.xml
ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
ofbiz/trunk/applications/order/servicedef/secas.xml
Modified: ofbiz/trunk/applications/accounting/config/AccountingConfig.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/config/AccountingConfig.properties?rev=1494464&r1=1494463&r2=1494464&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/config/AccountingConfig.properties (original)
+++ ofbiz/trunk/applications/accounting/config/AccountingConfig.properties Wed Jun 19 05:53:20 2013
@@ -37,5 +37,8 @@ accounting.payment.application.autocreat
# create a 'not-paid' payment record if the purchase order is approved
accounting.payment.purchaseorder.autocreate=Y
+# create a 'not-paid' payment record if the sales order is completed and no payment exist yet.
+accounting.payment.salesorder.autocreate=Y
+
# create invoice per shipment = Y Invoice per order = N
create.invoice.per.shipment=Y
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=1494464&r1=1494463&r2=1494464&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 Jun 19 05:53:20 2013
@@ -870,15 +870,38 @@ under the License.
</iterate>
</simple-method>
- <simple-method method-name="createPaymentFromOrder" short-description="Service auto create Payment from Order">
-
- <property-to-field resource="AccountingConfig" property="accounting.payment.purchaseorder.autocreate" field="autoCreate" default="Y"/>
- <if-compare operator="not-equals" value="Y" field="autoCreate">
- <log level="info" message="payment not created from approved order because config is not set to Y (AccountingConfig.properties)"/>
- <return/>
- </if-compare>
-
+ <simple-method method-name="createPaymentFromOrder" short-description="Service auto create Payment from Order when payment does exist yet and not diabled by accountingconfig">
+
<entity-one value-field="orderHeader" entity-name="OrderHeader"/>
+
+ <if-compare operator="equals" value="PURCHASE_ORDER" field="orderHeader.orderTypeId">
+ <property-to-field resource="AccountingConfig" property="accounting.payment.purchaseorder.autocreate" field="purchaseAutoCreate" default="Y"/>
+ <if-compare operator="not-equals" value="Y" field="purchaseAutoCreate">
+ <log level="info" message="payment not created from approved order because config (accounting.payment.purchaseorder.autocreate) is not set to Y (AccountingConfig.properties)"/>
+ <return/>
+ </if-compare>
+ </if-compare>
+
+ <if-compare operator="equals" value="SALES_ORDER" field="orderHeader.orderTypeId">
+ <property-to-field resource="AccountingConfig" property="accounting.payment.salesorder.autocreate" field="salesAutoCreate" default="Y"/>
+ <if-compare operator="not-equals" value="Y" field="salesAutoCreate">
+ <log level="info" message="payment not created from approved order because config (accounting.payment.salesorder.autocreate) is not set to Y (AccountingConfig.properties)"/>
+ <return/>
+ </if-compare>
+ </if-compare>
+ <!-- check if orderPaymentPreference with payment already exist, if yes do not re-create -->
+ <entity-condition entity-name="OrderPaymentPrefAndPayment" list="orderPaymentPrefAndPayments">
+ <condition-list combine="and">
+ <condition-expr field-name="orderId" operator="equals" from-field="orderHeader.orderId"/>
+ <condition-expr field-name="statusId" operator="not-equals" value="PAYMENT_CANCELLED"/>
+ </condition-list>
+ </entity-condition>
+
+ <if-not-empty field="orderPaymentPrefAndPayments">
+ <log level="info" message="Payment not created for order ${orderHeader.orderId}, at least a single payment already exists"/>
+ <return/>
+ </if-not-empty>
+
<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"/>
@@ -927,7 +950,7 @@ under the License.
<now-timestamp field="parameters.effectiveDate"/>
</if-empty>
- <!-- check currency and when required convert-->
+ <!-- check currency and when required use invoice currency rate or convert when invoice not available -->
<set field="partyAccountingPreferencesMap.organizationPartyId" from-field="organizationPartyId"/>
<call-service service-name="getPartyAccountingPreferences" in-map-name="partyAccountingPreferencesMap">
<result-to-field result-name="partyAccountingPreference" field="partyAcctgPreference"/>
@@ -936,6 +959,16 @@ under the License.
<set field="parameters.currencyUomId" from-field="orderHeader.currencyUom"/>
<set field="parameters.amount" from-field="orderHeader.grandTotal"/>
<else>
+ <!-- get conversion rate from related invoice when exists -->
+ <entity-and list="invoices" entity-name="OrderItemBillingAndInvoiceAndItem">
+ <field-map field-name="orderId" from-field="orderId"/>
+ </entity-and>
+ <if-not-empty field="invoices">
+ <entity-one entity-name="Invoice" value-field="invoice">
+ <field-map field-name="invoiceId" from-field="invoices[0].invoiceId"/>
+ </entity-one>
+ <set field="convertUomInMap.asOfDate" from-field="invoice.invoiceDate"/>
+ </if-not-empty>
<set field="convertUomInMap.originalValue" from-field="orderHeader.grandTotal"/>
<set field="convertUomInMap.uomId" from-field="orderHeader.currencyUom"/>
<set field="convertUomInMap.uomIdTo" from-field="partyAcctgPreference.baseCurrencyUomId"/>
@@ -945,7 +978,6 @@ under the License.
<set field="parameters.actualCurrencyAmount" from-field="orderHeader.grandTotal"/>
<set field="parameters.actualCurrencyUomId" from-field="orderHeader.currencyUom"/>
<set field="parameters.currencyUomId" from-field="partyAcctgPreference.baseCurrencyUomId"/>
- <set field="parameters.actualCurrencyUomId" from-field="orderHeader.currencyUom"/>
</else>
</if-compare-field>
@@ -959,6 +991,7 @@ under the License.
</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"/>
Modified: ofbiz/trunk/applications/accounting/servicedef/services_payment.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_payment.xml?rev=1494464&r1=1494463&r2=1494464&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/services_payment.xml (original)
+++ ofbiz/trunk/applications/accounting/servicedef/services_payment.xml Wed Jun 19 05:53:20 2013
@@ -236,9 +236,12 @@ under the License.
<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>
+ <description>Create Payment from Order when payment does exist yet and not disabled by accountingconfig</description>
<attribute name="orderId" type="String" mode="IN" optional="false"/>
<attribute name="paymentId" type="String" mode="OUT" optional="true"/>
+ <attribute name="paymentMethodId" type="String" mode="IN" optional="true"/>
+ <attribute name="paymentRefNum" type="String" mode="IN" optional="true"/>
+ <attribute name="comments" type="String" mode="IN" optional="true"/>
</service>
<service name="createMatchingPaymentApplication" engine="simple"
Modified: ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml?rev=1494464&r1=1494463&r2=1494464&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml (original)
+++ ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml Wed Jun 19 05:53:20 2013
@@ -138,6 +138,25 @@ under the License.
<key-map field-name="orderPaymentPreferenceId"/>
</relation>
</view-entity>
+ <view-entity entity-name="OrderPaymentPrefAndPayment"
+ package-name="org.ofbiz.order.order"
+ never-cache="true"
+ title="Payment Preference and Payment View Entity">
+ <member-entity entity-alias="PF" entity-name="OrderPaymentPreference"/>
+ <member-entity entity-alias="PMT" entity-name="Payment"/>
+ <alias entity-alias="PF" name="orderPaymentPreferenceId"/>
+ <alias entity-alias="PF" name="orderId"/>
+ <alias entity-alias="PF" name="statusId"/>
+ <alias entity-alias="PMT" name="paymentId"/>
+ <alias entity-alias="PMT" name="paymentTypeId"/>
+ <alias entity-alias="PMT" name="amount"/>
+ <view-link entity-alias="PF" rel-entity-alias="PMT">
+ <key-map field-name="orderPaymentPreferenceId" rel-field-name="paymentPreferenceId"/>
+ </view-link>
+ <relation type="one-nofk" rel-entity-name="OrderHeader">
+ <key-map field-name="orderId"/>
+ </relation>
+ </view-entity>
<view-entity entity-name="OrderHeaderAndRoleSummary"
package-name="org.ofbiz.order.order"
never-cache="true"
Modified: ofbiz/trunk/applications/order/servicedef/secas.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=1494464&r1=1494463&r2=1494464&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/servicedef/secas.xml (original)
+++ ofbiz/trunk/applications/order/servicedef/secas.xml Wed Jun 19 05:53:20 2013
@@ -96,6 +96,8 @@ under the License.
<action service="sendOrderCompleteNotification" mode="async" persist="true"/>
<action service="createReturnItemForRental" mode="sync"/>
</eca>
+
+ <!-- create payment from purchase order when approved (can be disabled by accountingConfig)-->
<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"/>
@@ -103,6 +105,14 @@ under the License.
<action service="createPaymentFromOrder" mode="sync" persist="true"/>
</eca>
+ <!-- create payment from sales order when completed and not created yet (can be disabled by accountingConfig) -->
+ <eca service="changeOrderStatus" event="commit" run-on-error="false">
+ <condition field-name="orderTypeId" operator="equals" value="SALES_ORDER"/>
+ <condition field-name="statusId" operator="equals" value="ORDER_COMPLETED"/>
+ <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">
<condition field-name="statusId" operator="equals" value="ORDER_PROCESSING"/>