Author: ashish
Date: Sat Dec 15 14:33:47 2007 New Revision: 604522 URL: http://svn.apache.org/viewvc?rev=604522&view=rev Log: Applied patch from JIRA Issue # OFBIZ-1483 with Minor Changes. Thanks to Alok Agnihotri for your patch . I initialized the "amountFromOrder" to "0". Also we are thankful to Pranay Pandey,Mridul Pathak,Pankaj Savita,Vikas Mayur & others for helping Alok for finishing this work. 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=604522&r1=604521&r2=604522&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 Sat Dec 15 14:33:47 2007 @@ -1410,4 +1410,114 @@ <field-to-result field-name="acctgTransId" result-name="acctgTransId"/> </if-compare> </simple-method> + + <!-- Service for the automatic creation of accounting transaction for Purchase Invoice --> + <simple-method method-name="createAcctgTransForPurchaseInvoice" short-description="Create an accounting transaction for a purchase invoice"> + <!-- 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}]"/> + <set field="totalAmountFromInvoice" type="BigDecimal" value="0"/> + <set field="amountFromOrder" type="BigDecimal" value="0"/> + + <entity-one entity-name="Invoice" value-name="invoice"/> + <if-compare field-name="invoice.invoiceTypeId" operator="equals" value="PURCHASE_INVOICE"> + <get-related value-name="invoice" relation-name="InvoiceItem" list-name="invoiceItems"/> + <iterate list-name="invoiceItems" entry-name="invoiceItem"> + <if-empty field-name="invoiceItem.quantity"> + <set field="invoiceItem.quantity" value="1"/> + </if-empty> + <calculate field-name="amountFromInvoice" type="BigDecimal" decimal-scale="${ledgerDecimals}" rounding-mode="${roundingMode}"> + <calcop operator="multiply"> + <calcop operator="get" field-name="invoiceItem.quantity"/> + <calcop operator="get" field-name="invoiceItem.amount"/> + </calcop> + </calculate> + <calculate field-name="totalAmountFromInvoice" type="BigDecimal" decimal-scale="${ledgerDecimals}" rounding-mode="${roundingMode}"> + <calcop operator="add"> + <calcop operator="get" field-name="totalAmountFromInvoice"/> + <calcop operator="get" field-name="amountFromInvoice"/> + </calcop> + </calculate> + <get-related value-name="invoiceItem" relation-name="OrderItemBilling" list-name="orderItemBillings"/> + <iterate list-name="orderItemBillings" entry-name="orderItemBilling"> + <get-related-one value-name="orderItemBilling" relation-name="OrderItem" to-value-name="orderItem"/> + <calculate field-name="amountFromOrder" type="BigDecimal" decimal-scale="${ledgerDecimals}" rounding-mode="${roundingMode}"> + <calcop field-name="amountFromOrder" operator="add"> + <calcop operator="multiply"> + <calcop operator="get" field-name="orderItemBilling.quantity"/> + <calcop operator="get" field-name="orderItem.unitPrice"/> + </calcop> + </calcop> + </calculate> + </iterate> + <!-- Debit --> + <if> + <condition> + <and> + <if-compare-field field-name="amountFromInvoice" operator="not-equals" to-field-name="amountFromOrder"/> + <if-compare field-name="amountFromOrder" operator="greater" value="0" type="BigDecimal"/> + </and> + </condition> + <then> + <make-value entity-name="AcctgTransEntry" value-name="debitEntry"/> + <set field="debitEntry.debitCreditFlag" value="D"/> + <set field="debitEntry.organizationPartyId" from-field="invoice.partyId"/> + <set field="debitEntry.partyId" from-field="invoice.partyIdFrom"/> + <set field="debitEntry.roleTypeId" value="BILL_FROM_VENDOR"/> + <set field="debitEntry.productId" from-field="invoiceItem.productId"/> + <set field="debitEntry.glAccountTypeId" value="PURCHASE_PRICE_VAR"/> + <calculate field-name="origAmount" type="BigDecimal" decimal-scale="${ledgerDecimals}" rounding-mode="${roundingMode}"> + <calcop operator="subtract"> + <calcop operator="get" field-name="amountFromInvoice"/> + <calcop operator="get" field-name="amountFromOrder"/> + </calcop> + </calculate> + <set field="debitEntry.origAmount" from-field="origAmount"/> + <set field="debitEntry.origCurrencyUomId" from-field="invoice.currencyUomId"/> + <set field="acctgTransEntries[]" from-field="debitEntry" type="Object"/> + </then> + </if> + <make-value entity-name="AcctgTransEntry" value-name="debitEntry"/> + <set field="debitEntry.debitCreditFlag" value="D"/> + <set field="debitEntry.organizationPartyId" from-field="invoice.partyId"/> + <set field="debitEntry.partyId" from-field="invoice.partyIdFrom"/> + <set field="debitEntry.roleTypeId" value="BILL_FROM_VENDOR"/> + <set field="debitEntry.productId" from-field="invoiceItem.productId"/> + <set field="debitEntry.glAccountTypeId" from-field="invoiceItem.invoiceItemTypeId"/> + <set field="debitEntry.glAccountId" from-field="invoiceItem.overrideGlAccountId"/> + <if-compare field-name="amountFromOrder" operator="greater" value="0" type="BigDecimal"> + <set field="origAmount" from-field="amountFromOrder"/> + <else> + <set field="origAmount" from-field="amountFromInvoice"/> + </else> + </if-compare> + <set field="debitEntry.origAmount" from-field="origAmount"/> + <set field="debitEntry.origCurrencyUomId" from-field="invoice.currencyUomId"/> + <set field="acctgTransEntries[]" from-field="debitEntry" type="Object"/> + </iterate> + </if-compare> + <!-- Credit --> + <make-value entity-name="AcctgTransEntry" value-name="creditEntry"/> + <set field="creditEntry.debitCreditFlag" value="C"/> + <set field="creditEntry.organizationPartyId" from-field="invoice.partyId"/> + <set field="creditEntry.glAccountTypeId" value="ACCOUNTS_PAYABLE"/> + <set field="creditEntry.origAmount" from-field="totalAmountFromInvoice"/> + <set field="creditEntry.origCurrencyUomId" from-field="invoice.currencyUomId"/> + <set field="creditEntry.partyId" from-field="invoice.partyIdFrom"/> + <set field="creditEntry.roleTypeId" value="BILL_FROM_VENDOR"/> + <set field="acctgTransEntries[]" from-field="creditEntry" type="Object"/> + + <!-- Set header fields (AcctgTrans) --> + <set field="createAcctgTransAndEntriesInMap.glFiscalTypeId" value="ACTUAL"/> + <set field="createAcctgTransAndEntriesInMap.acctgTransTypeId" value="PURCHASE_INVOICE"/> + <set field="createAcctgTransAndEntriesInMap.partyId" from-field="invoice.partyIdFrom"/> + <set field="createAcctgTransAndEntriesInMap.roleTypeId" value="BILL_FROM_VENDOR"/> + <set field="createAcctgTransAndEntriesInMap.acctgTransEntries" from-field="acctgTransEntries"/> + <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=604522&r1=604521&r2=604522&view=diff ============================================================================== --- ofbiz/trunk/applications/accounting/servicedef/secas_ledger.xml (original) +++ ofbiz/trunk/applications/accounting/servicedef/secas_ledger.xml Sat Dec 15 14:33:47 2007 @@ -89,4 +89,14 @@ <condition field-name="oldStatusId" operator="not-equals" value="PMNT_RECEIVED"/> <action service="createAcctgTransAndEntriesForIncomingPayment" mode="sync"/> </eca> + + <!-- attemp to create AcctgTrans for Purchase Invoice --> + <eca service="setInvoiceStatus" event="commit"> + <condition field-name="invoiceId" operator="is-not-empty"/> + <condition field-name="statusId" operator="equals" value="INVOICE_READY"/> + <condition field-name="oldStatusId" operator="not-equals" value="INVOICE_READY"/> + <condition field-name="oldStatusId" operator="not-equals" value="INVOICE_PAID"/> + <action service="createAcctgTransForPurchaseInvoice" 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=604522&r1=604521&r2=604522&view=diff ============================================================================== --- ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml (original) +++ ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml Sat Dec 15 14:33:47 2007 @@ -432,4 +432,12 @@ <attribute name="acctgTransId" type="String" mode="OUT" optional="true"/> </service> + <!-- An automatic GL Posting for Purchase Invoice--> + <service name="createAcctgTransForPurchaseInvoice" engine="simple" auth="true" + location="org/ofbiz/accounting/ledger/GeneralLedgerServices.xml" invoke="createAcctgTransForPurchaseInvoice"> + <description>Create an accounting transaction for a purchase invoice</description> + <attribute name="invoiceId" type="String" mode="IN" optional="false"/> + <attribute name="acctgTransId" type="String" mode="OUT" optional="true"/> + </service> + </services> |
Free forum by Nabble | Edit this page |