Author: apatel
Date: Mon Dec 3 18:01:04 2007 New Revision: 600769 URL: http://svn.apache.org/viewvc?rev=600769&view=rev Log: Implement an automatic GL posting service triggered when the ownerPartyId of an inventory item is changed Thanks Rishi Solanki for providing implementation And also our thanks to Vikas Mayur, Ashish Vijaywargiya, Mridul Pathak, Pankaj Savita and others for managing and helping the team implementing these services. Modified: ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml ofbiz/trunk/applications/accounting/servicedef/secas_ledger.xml ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml Modified: ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml?rev=600769&r1=600768&r2=600769&view=diff ============================================================================== --- ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml (original) +++ ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml Mon Dec 3 18:01:04 2007 @@ -797,5 +797,76 @@ <field-to-result field-name="acctgTransId" result-name="acctgTransId"/> </simple-method> + <!-- AcctgTrans For Inventory Item Owner Change Service --> + <simple-method method-name="createAcctgTransForInventoryItemOwnerChange" short-description="Create an accounting transactions for Inventory Item Owner Change (D: INVENTORY_ACCOUNT(old Owner) INVENTORY_ACCOUNT(new Owner), C: INVENTORY_XFER_IN(oldOwner) INVENTORY_XFER_OUT(new Owner))"> + <!-- retrieve ledger rounding properties --> + <property-to-field resource="arithmetic" property="ledger.decimals" field-name="ledgerDecimals"/> + <property-to-field resource="arithmetic" property="ledger.rounding" field-name="roundingMode"/> + <log level="info" message="Using ledger decimals [${ledgerDecimals}] and rounding [${roundingMode}]"/> + + <entity-one entity-name="InventoryItem" value-name="inventoryItem"/> + + <!-- TODO: handle serialized inventory --> + <if-not-empty field-name="inventoryItem.quantityOnHandTotal"> + <calculate field-name="origAmount" type="BigDecimal" decimal-scale="${ledgerDecimals}" rounding-mode="${roundingMode}"> + <calcop operator="multiply"> + <calcop operator="get" field-name="inventoryItem.quantityOnHandTotal"/> + <calcop operator="get" field-name="inventoryItem.unitCost"/> + </calcop> + </calculate> + </if-not-empty> + <!-- prepare the doble posting (D/C) entries (AcctgTransEntry) for old OwnerPartyId --> + <!-- Credit --> + <make-value entity-name="AcctgTransEntry" value-name="oldPartyCreditEntry"/> + <set field="oldPartyCreditEntry.debitCreditFlag" value="C"/> + <set field="oldPartyCreditEntry.glAccountTypeId" value="INVENTORY_XFER_IN"/> + <set field="oldPartyCreditEntry.productId" from-field="inventoryItem.productId"/> + <set field="oldPartyCreditEntry.origAmount" from-field="origAmount"/> + <set field="oldPartyCreditEntry.origCurrencyUomId" from-field="inventoryItem.currencyUomId"/> + <set field="oldPartyCreditEntry.organizationPartyId" from-field="parameters.oldOwnerPartyId"/> + + <!-- Debit --> + <make-value entity-name="AcctgTransEntry" value-name="oldPartyDebitEntry"/> + <set field="oldPartyDebitEntry.debitCreditFlag" value="D"/> + <set field="oldPartyDebitEntry.productId" from-field="inventoryItem.productId"/> + <set field="oldPartyDebitEntry.origAmount" from-field="origAmount"/> + <set field="oldPartyDebitEntry.origCurrencyUomId" from-field="inventoryItem.currencyUomId"/> + <set field="oldPartyDebitEntry.organizationPartyId" from-field="parameters.oldOwnerPartyId"/> + <set field="oldPartyDebitEntry.glAccountTypeId" value="INVENTORY_ACCOUNT"/> + <!-- prepare the doble posting (D/C) entries (AcctgTransEntry) for New ownerPartyId --> + <!-- Credit --> + <make-value entity-name="AcctgTransEntry" value-name="newPartyCreditEntry"/> + <set field="newPartyCreditEntry.debitCreditFlag" value="C"/> + <set field="newPartyCreditEntry.glAccountTypeId" value="INVENTORY_XFER_IN"/> + <set field="newPartyCreditEntry.productId" from-field="inventoryItem.productId"/> + <set field="newPartyCreditEntry.origAmount" from-field="origAmount"/> + <set field="newPartyCreditEntry.origCurrencyUomId" from-field="inventoryItem.currencyUomId"/> + <set field="newPartyCreditEntry.organizationPartyId" from-field="inventoryItem.ownerPartyId"/> + + <!-- Debit --> + <make-value entity-name="AcctgTransEntry" value-name="newPartyDebitEntry"/> + <set field="newPartyDebitEntry.debitCreditFlag" value="D"/> + <set field="newPartyDebitEntry.productId" from-field="inventoryItem.productId"/> + <set field="newPartyDebitEntry.origAmount" from-field="origAmount"/> + <set field="newPartyDebitEntry.origCurrencyUomId" from-field="inventoryItem.currencyUomId"/> + <set field="newPartyDebitEntry.organizationPartyId" from-field="inventoryItem.ownerPartyId"/> + <set field="newPartyDebitEntry.glAccountTypeId" value="INVENTORY_ACCOUNT"/> + + <set field="acctgTransEntries[]" from-field="oldPartyCreditEntry" type="Object"/> + <set field="acctgTransEntries[]" from-field="oldPartyDebitEntry" type="Object"/> + <set field="acctgTransEntries[]" from-field="newPartyCreditEntry" type="Object"/> + <set field="acctgTransEntries[]" from-field="newPartyDebitEntry" type="Object"/> + + <!-- Set header fields (AcctgTrans) --> + + <set field="createAcctgTransAndEntriesInMap.acctgTransTypeId" value="INVENTORY"/> + <set field="createAcctgTransAndEntriesInMap.acctgTransEntries" from-field="acctgTransEntries"/> + <set field="createAcctgTransAndEntriesInMap.inventoryItemId" from-field="parameters.inventoryItemId"/> + <set field="createAcctgTransAndEntriesInMap.glFiscalTypeId" value="ACTUAL"/> + <call-service service-name="createAcctgTransAndEntries" in-map-name="createAcctgTransAndEntriesInMap"> + <result-to-field result-name="acctgTransId"/> + </call-service> + <field-to-result field-name="acctgTransId" result-name="acctgTransId"/> + </simple-method> </simple-methods> Modified: ofbiz/trunk/applications/accounting/servicedef/secas_ledger.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/secas_ledger.xml?rev=600769&r1=600768&r2=600769&view=diff ============================================================================== --- ofbiz/trunk/applications/accounting/servicedef/secas_ledger.xml (original) +++ ofbiz/trunk/applications/accounting/servicedef/secas_ledger.xml Mon Dec 3 18:01:04 2007 @@ -55,4 +55,10 @@ <action service="createAcctgTransForWorkEffortCost" mode="sync"/> </eca> + <eca service="updateInventoryItem" event="commit"> + <condition field-name="ownerPartyId" operator="is-not-empty"/> + <condition-field field-name="ownerPartyId" operator="not-equals" to-field-name="oldOwnerPartyId"/> + <action service="createAcctgTransForInventoryItemOwnerChange" mode="sync"/> + </eca> + </service-eca> Modified: ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml?rev=600769&r1=600768&r2=600769&view=diff ============================================================================== --- ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml (original) +++ ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml Mon Dec 3 18:01:04 2007 @@ -402,4 +402,13 @@ <attribute name="acctgTransId" type="String" mode="OUT" optional="true"/> </service> + <!-- AcctgTrans For Inventory Item Owner Change Services --> + <service name="createAcctgTransForInventoryItemOwnerChange" engine="simple" auth="true" + location="org/ofbiz/accounting/ledger/GeneralLedgerServices.xml" invoke="createAcctgTransForInventoryItemOwnerChange"> + <description>Create an accounting transactions for Inventory Item Owner Change (D: INVENTORY_ACCOUNT(old Owner) INVENTORY_ACCOUNT(new Owner), C: INVENTORY_XFER_IN(oldOwner) INVENTORY_XFER_OUT(new Owner))</description> + <attribute name="inventoryItemId" type="String" mode="IN" optional="false"/> + <attribute name="oldOwnerPartyId" type="String" mode="IN" optional="false"/> + <attribute name="acctgTransId" type="String" mode="OUT" optional="true"/> + </service> + </services> |
Free forum by Nabble | Edit this page |