[jira] Created: (OFBIZ-1483) Implement an automatic GL posting service for purchase invoices

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

[jira] Created: (OFBIZ-1483) Implement an automatic GL posting service for purchase invoices

Nicolas Malin (Jira)
Implement an automatic GL posting service for purchase invoices
---------------------------------------------------------------

                 Key: OFBIZ-1483
                 URL: https://issues.apache.org/jira/browse/OFBIZ-1483
             Project: OFBiz
          Issue Type: Sub-task
          Components: accounting
    Affects Versions: SVN trunk
            Reporter: Jacopo Cappellato


Name of the service: "createAcctgTransForPurchaseInvoice" or similar
Service definition:
    <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>

The eca rule will be:

<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>

This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
a) acctgTransTypeId="PURCHASE_INVOICE"
b) partyId = invoice.partyIdFrom
c) roleTypeId = "BILL_FROM_VENDOR"
d) invoiceId = invoice.invoiceId
e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
e1) one element for each of the InvoiceItems; here is the content of each of these elements:
-- debitCreditFlag = D
-- organizationPartyId = invoice.partyId
-- partyId = invoice.partyIdFrom
-- roleTypeId = "BILL_FROM_VENDOR"
-- productId = invoiceItem.productId
-- glAccountTypeId = invoiceItem.invoiceItemTypeId
-- glAccountId = invoiceItem.overrideGlAccountId
TODO: work in progress
-- origAmount = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
-- origCurrencyUomId = invoice.currencyUomId
f) one element for the invoice total (the sum of all the items' amount*quantity):
-- debitCreditFlag = C
-- organizationPartyId = invoice.partyId
-- glAccountTypeId = ACCOUNTS_PAYABLE
-- origAmount = the sum of all the items' amount*quantity
-- origCurrencyUomId = invoice.currencyUomId
-- partyId = invoice.partyIdFrom
-- roleTypeId = "BILL_FROM_VENDOR"

Some more details about the logic:

1) get the Invoice record
2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
4) call the createAcctgTransAndEntries service

Add information on the wiki page: http://docs.ofbiz.org/x/Qw0

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Assigned: (OFBIZ-1483) Implement an automatic GL posting service for purchase invoices

Nicolas Malin (Jira)

     [ https://issues.apache.org/jira/browse/OFBIZ-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jacopo Cappellato reassigned OFBIZ-1483:
----------------------------------------

    Assignee: Jacopo Cappellato

> Implement an automatic GL posting service for purchase invoices
> ---------------------------------------------------------------
>
>                 Key: OFBIZ-1483
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-1483
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: accounting
>    Affects Versions: SVN trunk
>            Reporter: Jacopo Cappellato
>            Assignee: Jacopo Cappellato
>
> Name of the service: "createAcctgTransForPurchaseInvoice" or similar
> Service definition:
>     <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>
> The eca rule will be:
> <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>
> This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
> a) acctgTransTypeId="PURCHASE_INVOICE"
> b) partyId = invoice.partyIdFrom
> c) roleTypeId = "BILL_FROM_VENDOR"
> d) invoiceId = invoice.invoiceId
> e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
> e1) one element for each of the InvoiceItems; here is the content of each of these elements:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = invoiceItem.invoiceItemTypeId
> -- glAccountId = invoiceItem.overrideGlAccountId
> TODO: work in progress
> -- origAmount = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
> -- origCurrencyUomId = invoice.currencyUomId
> f) one element for the invoice total (the sum of all the items' amount*quantity):
> -- debitCreditFlag = C
> -- organizationPartyId = invoice.partyId
> -- glAccountTypeId = ACCOUNTS_PAYABLE
> -- origAmount = the sum of all the items' amount*quantity
> -- origCurrencyUomId = invoice.currencyUomId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> Some more details about the logic:
> 1) get the Invoice record
> 2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
> 3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
> 4) call the createAcctgTransAndEntries service
> Add information on the wiki page: http://docs.ofbiz.org/x/Qw0

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Updated: (OFBIZ-1483) Implement an automatic GL posting service for purchase invoices

Nicolas Malin (Jira)
In reply to this post by Nicolas Malin (Jira)

     [ https://issues.apache.org/jira/browse/OFBIZ-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jacopo Cappellato updated OFBIZ-1483:
-------------------------------------

       Assignee:     (was: Jacopo Cappellato)
    Description:
Name of the service: "createAcctgTransForPurchaseInvoice" or similar
Service definition:
    <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>

The eca rule will be:

<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>

This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
a) acctgTransTypeId="PURCHASE_INVOICE"
b) partyId = invoice.partyIdFrom
c) roleTypeId = "BILL_FROM_VENDOR"
d) invoiceId = invoice.invoiceId
e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
e1) for each element of the InvoiceItems:
e1.1) compute the value amountFromInvoice = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
e1.2)  get the list of OrderItemBilling records associated to the item and iterate over them, getting the OrderItem associated and computing the following amount: OrderItemBilling.quantity * OrderItem.unitPrice; compute the sum of all the values in the iteration (amountFromOrder);

e1.3) if (amountFromInvoice != amountFromOrder and amountFromOrder > 0) then prepare an AcctgTransEntry with the following values:
-- debitCreditFlag = D
-- organizationPartyId = invoice.partyId
-- partyId = invoice.partyIdFrom
-- roleTypeId = "BILL_FROM_VENDOR"
-- productId = invoiceItem.productId
-- glAccountTypeId = PURCHASE_PRICE_VAR
-- origAmount = amountFromInvoice - amountFromOrder
-- origCurrencyUomId = invoice.currencyUomId

e1.4) prepare an AcctgTransEntry with the following values:
-- debitCreditFlag = D
-- organizationPartyId = invoice.partyId
-- partyId = invoice.partyIdFrom
-- roleTypeId = "BILL_FROM_VENDOR"
-- productId = invoiceItem.productId
-- glAccountTypeId = invoiceItem.invoiceItemTypeId
-- glAccountId = invoiceItem.overrideGlAccountId
-- origAmount = if (amountFromOrder > 0) then amountFromOrder else amountFromInvoice
-- origCurrencyUomId = invoice.currencyUomId

f) one element for the invoice total (the sum of all the items' amount*quantity):
-- debitCreditFlag = C
-- organizationPartyId = invoice.partyId
-- glAccountTypeId = ACCOUNTS_PAYABLE
-- origAmount = the sum of all the items' amountFromInvoice
-- origCurrencyUomId = invoice.currencyUomId
-- partyId = invoice.partyIdFrom
-- roleTypeId = "BILL_FROM_VENDOR"

Some more details about the logic:

1) get the Invoice record
2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
4) call the createAcctgTransAndEntries service

Add information on the wiki page: http://docs.ofbiz.org/x/Qw0

  was:
Name of the service: "createAcctgTransForPurchaseInvoice" or similar
Service definition:
    <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>

The eca rule will be:

<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>

This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
a) acctgTransTypeId="PURCHASE_INVOICE"
b) partyId = invoice.partyIdFrom
c) roleTypeId = "BILL_FROM_VENDOR"
d) invoiceId = invoice.invoiceId
e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
e1) one element for each of the InvoiceItems; here is the content of each of these elements:
-- debitCreditFlag = D
-- organizationPartyId = invoice.partyId
-- partyId = invoice.partyIdFrom
-- roleTypeId = "BILL_FROM_VENDOR"
-- productId = invoiceItem.productId
-- glAccountTypeId = invoiceItem.invoiceItemTypeId
-- glAccountId = invoiceItem.overrideGlAccountId
TODO: work in progress
-- origAmount = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
-- origCurrencyUomId = invoice.currencyUomId
f) one element for the invoice total (the sum of all the items' amount*quantity):
-- debitCreditFlag = C
-- organizationPartyId = invoice.partyId
-- glAccountTypeId = ACCOUNTS_PAYABLE
-- origAmount = the sum of all the items' amount*quantity
-- origCurrencyUomId = invoice.currencyUomId
-- partyId = invoice.partyIdFrom
-- roleTypeId = "BILL_FROM_VENDOR"

Some more details about the logic:

1) get the Invoice record
2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
4) call the createAcctgTransAndEntries service

Add information on the wiki page: http://docs.ofbiz.org/x/Qw0


> Implement an automatic GL posting service for purchase invoices
> ---------------------------------------------------------------
>
>                 Key: OFBIZ-1483
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-1483
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: accounting
>    Affects Versions: SVN trunk
>            Reporter: Jacopo Cappellato
>
> Name of the service: "createAcctgTransForPurchaseInvoice" or similar
> Service definition:
>     <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>
> The eca rule will be:
> <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>
> This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
> a) acctgTransTypeId="PURCHASE_INVOICE"
> b) partyId = invoice.partyIdFrom
> c) roleTypeId = "BILL_FROM_VENDOR"
> d) invoiceId = invoice.invoiceId
> e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
> e1) for each element of the InvoiceItems:
> e1.1) compute the value amountFromInvoice = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
> e1.2)  get the list of OrderItemBilling records associated to the item and iterate over them, getting the OrderItem associated and computing the following amount: OrderItemBilling.quantity * OrderItem.unitPrice; compute the sum of all the values in the iteration (amountFromOrder);
> e1.3) if (amountFromInvoice != amountFromOrder and amountFromOrder > 0) then prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = PURCHASE_PRICE_VAR
> -- origAmount = amountFromInvoice - amountFromOrder
> -- origCurrencyUomId = invoice.currencyUomId
> e1.4) prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = invoiceItem.invoiceItemTypeId
> -- glAccountId = invoiceItem.overrideGlAccountId
> -- origAmount = if (amountFromOrder > 0) then amountFromOrder else amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> f) one element for the invoice total (the sum of all the items' amount*quantity):
> -- debitCreditFlag = C
> -- organizationPartyId = invoice.partyId
> -- glAccountTypeId = ACCOUNTS_PAYABLE
> -- origAmount = the sum of all the items' amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> Some more details about the logic:
> 1) get the Invoice record
> 2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
> 3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
> 4) call the createAcctgTransAndEntries service
> Add information on the wiki page: http://docs.ofbiz.org/x/Qw0

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (OFBIZ-1483) Implement an automatic GL posting service for purchase invoices

Nicolas Malin (Jira)
In reply to this post by Nicolas Malin (Jira)

    [ https://issues.apache.org/jira/browse/OFBIZ-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12549316 ]

Mridul Pathak commented on OFBIZ-1483:
--------------------------------------

Jacopo, Anil
    I am taking up this issue.  Alok will work on this under my supervision and submit the patch.

> Implement an automatic GL posting service for purchase invoices
> ---------------------------------------------------------------
>
>                 Key: OFBIZ-1483
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-1483
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: accounting
>    Affects Versions: SVN trunk
>            Reporter: Jacopo Cappellato
>
> Name of the service: "createAcctgTransForPurchaseInvoice" or similar
> Service definition:
>     <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>
> The eca rule will be:
> <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>
> This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
> a) acctgTransTypeId="PURCHASE_INVOICE"
> b) partyId = invoice.partyIdFrom
> c) roleTypeId = "BILL_FROM_VENDOR"
> d) invoiceId = invoice.invoiceId
> e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
> e1) for each element of the InvoiceItems:
> e1.1) compute the value amountFromInvoice = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
> e1.2)  get the list of OrderItemBilling records associated to the item and iterate over them, getting the OrderItem associated and computing the following amount: OrderItemBilling.quantity * OrderItem.unitPrice; compute the sum of all the values in the iteration (amountFromOrder);
> e1.3) if (amountFromInvoice != amountFromOrder and amountFromOrder > 0) then prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = PURCHASE_PRICE_VAR
> -- origAmount = amountFromInvoice - amountFromOrder
> -- origCurrencyUomId = invoice.currencyUomId
> e1.4) prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = invoiceItem.invoiceItemTypeId
> -- glAccountId = invoiceItem.overrideGlAccountId
> -- origAmount = if (amountFromOrder > 0) then amountFromOrder else amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> f) one element for the invoice total (the sum of all the items' amount*quantity):
> -- debitCreditFlag = C
> -- organizationPartyId = invoice.partyId
> -- glAccountTypeId = ACCOUNTS_PAYABLE
> -- origAmount = the sum of all the items' amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> Some more details about the logic:
> 1) get the Invoice record
> 2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
> 3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
> 4) call the createAcctgTransAndEntries service
> Add information on the wiki page: http://docs.ofbiz.org/x/Qw0

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Assigned: (OFBIZ-1483) Implement an automatic GL posting service for purchase invoices

Nicolas Malin (Jira)
In reply to this post by Nicolas Malin (Jira)

     [ https://issues.apache.org/jira/browse/OFBIZ-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Anil K Patel reassigned OFBIZ-1483:
-----------------------------------

    Assignee: Anil K Patel

> Implement an automatic GL posting service for purchase invoices
> ---------------------------------------------------------------
>
>                 Key: OFBIZ-1483
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-1483
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: accounting
>    Affects Versions: SVN trunk
>            Reporter: Jacopo Cappellato
>            Assignee: Anil K Patel
>
> Name of the service: "createAcctgTransForPurchaseInvoice" or similar
> Service definition:
>     <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>
> The eca rule will be:
> <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>
> This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
> a) acctgTransTypeId="PURCHASE_INVOICE"
> b) partyId = invoice.partyIdFrom
> c) roleTypeId = "BILL_FROM_VENDOR"
> d) invoiceId = invoice.invoiceId
> e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
> e1) for each element of the InvoiceItems:
> e1.1) compute the value amountFromInvoice = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
> e1.2)  get the list of OrderItemBilling records associated to the item and iterate over them, getting the OrderItem associated and computing the following amount: OrderItemBilling.quantity * OrderItem.unitPrice; compute the sum of all the values in the iteration (amountFromOrder);
> e1.3) if (amountFromInvoice != amountFromOrder and amountFromOrder > 0) then prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = PURCHASE_PRICE_VAR
> -- origAmount = amountFromInvoice - amountFromOrder
> -- origCurrencyUomId = invoice.currencyUomId
> e1.4) prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = invoiceItem.invoiceItemTypeId
> -- glAccountId = invoiceItem.overrideGlAccountId
> -- origAmount = if (amountFromOrder > 0) then amountFromOrder else amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> f) one element for the invoice total (the sum of all the items' amount*quantity):
> -- debitCreditFlag = C
> -- organizationPartyId = invoice.partyId
> -- glAccountTypeId = ACCOUNTS_PAYABLE
> -- origAmount = the sum of all the items' amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> Some more details about the logic:
> 1) get the Invoice record
> 2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
> 3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
> 4) call the createAcctgTransAndEntries service
> Add information on the wiki page: http://docs.ofbiz.org/x/Qw0

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Updated: (OFBIZ-1483) Implement an automatic GL posting service for purchase invoices

Nicolas Malin (Jira)
In reply to this post by Nicolas Malin (Jira)

     [ https://issues.apache.org/jira/browse/OFBIZ-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alok Agnihotri updated OFBIZ-1483:
----------------------------------

    Attachment: GL_Purchase_Invoice.patch

Here is the patch for, automatic GL posting service for purchase invoices.
Thanks to Mridul Pathak, Vikas Mayur & Pankaj Savita for helping me in implementing this service.

> Implement an automatic GL posting service for purchase invoices
> ---------------------------------------------------------------
>
>                 Key: OFBIZ-1483
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-1483
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: accounting
>    Affects Versions: SVN trunk
>            Reporter: Jacopo Cappellato
>            Assignee: Anil K Patel
>         Attachments: GL_Purchase_Invoice.patch
>
>
> Name of the service: "createAcctgTransForPurchaseInvoice" or similar
> Service definition:
>     <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>
> The eca rule will be:
> <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>
> This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
> a) acctgTransTypeId="PURCHASE_INVOICE"
> b) partyId = invoice.partyIdFrom
> c) roleTypeId = "BILL_FROM_VENDOR"
> d) invoiceId = invoice.invoiceId
> e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
> e1) for each element of the InvoiceItems:
> e1.1) compute the value amountFromInvoice = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
> e1.2)  get the list of OrderItemBilling records associated to the item and iterate over them, getting the OrderItem associated and computing the following amount: OrderItemBilling.quantity * OrderItem.unitPrice; compute the sum of all the values in the iteration (amountFromOrder);
> e1.3) if (amountFromInvoice != amountFromOrder and amountFromOrder > 0) then prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = PURCHASE_PRICE_VAR
> -- origAmount = amountFromInvoice - amountFromOrder
> -- origCurrencyUomId = invoice.currencyUomId
> e1.4) prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = invoiceItem.invoiceItemTypeId
> -- glAccountId = invoiceItem.overrideGlAccountId
> -- origAmount = if (amountFromOrder > 0) then amountFromOrder else amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> f) one element for the invoice total (the sum of all the items' amount*quantity):
> -- debitCreditFlag = C
> -- organizationPartyId = invoice.partyId
> -- glAccountTypeId = ACCOUNTS_PAYABLE
> -- origAmount = the sum of all the items' amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> Some more details about the logic:
> 1) get the Invoice record
> 2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
> 3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
> 4) call the createAcctgTransAndEntries service
> Add information on the wiki page: http://docs.ofbiz.org/x/Qw0

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Updated: (OFBIZ-1483) Implement an automatic GL posting service for purchase invoices

Nicolas Malin (Jira)
In reply to this post by Nicolas Malin (Jira)

     [ https://issues.apache.org/jira/browse/OFBIZ-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Pranay Pandey updated OFBIZ-1483:
---------------------------------

    Attachment: GL_Purchase_Invoice.patch

Here i am submitting the updated patch for this issue.


> Implement an automatic GL posting service for purchase invoices
> ---------------------------------------------------------------
>
>                 Key: OFBIZ-1483
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-1483
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: accounting
>    Affects Versions: SVN trunk
>            Reporter: Jacopo Cappellato
>            Assignee: Anil K Patel
>         Attachments: GL_Purchase_Invoice.patch, GL_Purchase_Invoice.patch
>
>
> Name of the service: "createAcctgTransForPurchaseInvoice" or similar
> Service definition:
>     <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>
> The eca rule will be:
> <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>
> This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
> a) acctgTransTypeId="PURCHASE_INVOICE"
> b) partyId = invoice.partyIdFrom
> c) roleTypeId = "BILL_FROM_VENDOR"
> d) invoiceId = invoice.invoiceId
> e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
> e1) for each element of the InvoiceItems:
> e1.1) compute the value amountFromInvoice = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
> e1.2)  get the list of OrderItemBilling records associated to the item and iterate over them, getting the OrderItem associated and computing the following amount: OrderItemBilling.quantity * OrderItem.unitPrice; compute the sum of all the values in the iteration (amountFromOrder);
> e1.3) if (amountFromInvoice != amountFromOrder and amountFromOrder > 0) then prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = PURCHASE_PRICE_VAR
> -- origAmount = amountFromInvoice - amountFromOrder
> -- origCurrencyUomId = invoice.currencyUomId
> e1.4) prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = invoiceItem.invoiceItemTypeId
> -- glAccountId = invoiceItem.overrideGlAccountId
> -- origAmount = if (amountFromOrder > 0) then amountFromOrder else amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> f) one element for the invoice total (the sum of all the items' amount*quantity):
> -- debitCreditFlag = C
> -- organizationPartyId = invoice.partyId
> -- glAccountTypeId = ACCOUNTS_PAYABLE
> -- origAmount = the sum of all the items' amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> Some more details about the logic:
> 1) get the Invoice record
> 2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
> 3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
> 4) call the createAcctgTransAndEntries service
> Add information on the wiki page: http://docs.ofbiz.org/x/Qw0

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Updated: (OFBIZ-1483) Implement an automatic GL posting service for purchase invoices

Nicolas Malin (Jira)
In reply to this post by Nicolas Malin (Jira)

     [ https://issues.apache.org/jira/browse/OFBIZ-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alok Agnihotri updated OFBIZ-1483:
----------------------------------

    Attachment: GL_Purchase_Invoice.patch

Here is the Updated Patch for jira-issue-1483

> Implement an automatic GL posting service for purchase invoices
> ---------------------------------------------------------------
>
>                 Key: OFBIZ-1483
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-1483
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: accounting
>    Affects Versions: SVN trunk
>            Reporter: Jacopo Cappellato
>            Assignee: Anil K Patel
>         Attachments: GL_Purchase_Invoice.patch, GL_Purchase_Invoice.patch, GL_Purchase_Invoice.patch
>
>
> Name of the service: "createAcctgTransForPurchaseInvoice" or similar
> Service definition:
>     <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>
> The eca rule will be:
> <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>
> This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
> a) acctgTransTypeId="PURCHASE_INVOICE"
> b) partyId = invoice.partyIdFrom
> c) roleTypeId = "BILL_FROM_VENDOR"
> d) invoiceId = invoice.invoiceId
> e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
> e1) for each element of the InvoiceItems:
> e1.1) compute the value amountFromInvoice = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
> e1.2)  get the list of OrderItemBilling records associated to the item and iterate over them, getting the OrderItem associated and computing the following amount: OrderItemBilling.quantity * OrderItem.unitPrice; compute the sum of all the values in the iteration (amountFromOrder);
> e1.3) if (amountFromInvoice != amountFromOrder and amountFromOrder > 0) then prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = PURCHASE_PRICE_VAR
> -- origAmount = amountFromInvoice - amountFromOrder
> -- origCurrencyUomId = invoice.currencyUomId
> e1.4) prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = invoiceItem.invoiceItemTypeId
> -- glAccountId = invoiceItem.overrideGlAccountId
> -- origAmount = if (amountFromOrder > 0) then amountFromOrder else amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> f) one element for the invoice total (the sum of all the items' amount*quantity):
> -- debitCreditFlag = C
> -- organizationPartyId = invoice.partyId
> -- glAccountTypeId = ACCOUNTS_PAYABLE
> -- origAmount = the sum of all the items' amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> Some more details about the logic:
> 1) get the Invoice record
> 2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
> 3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
> 4) call the createAcctgTransAndEntries service
> Add information on the wiki page: http://docs.ofbiz.org/x/Qw0

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Closed: (OFBIZ-1483) Implement an automatic GL posting service for purchase invoices

Nicolas Malin (Jira)
In reply to this post by Nicolas Malin (Jira)

     [ https://issues.apache.org/jira/browse/OFBIZ-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ashish Vijaywargiya closed OFBIZ-1483.
--------------------------------------

    Resolution: Fixed

Thanks Alok Agnihotri for your valuable patch.
Your patch is in rev # 604522

--
Ashish Vijaywargiya

> Implement an automatic GL posting service for purchase invoices
> ---------------------------------------------------------------
>
>                 Key: OFBIZ-1483
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-1483
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: accounting
>    Affects Versions: SVN trunk
>            Reporter: Jacopo Cappellato
>            Assignee: Anil K Patel
>         Attachments: GL_Purchase_Invoice.patch, GL_Purchase_Invoice.patch, GL_Purchase_Invoice.patch
>
>
> Name of the service: "createAcctgTransForPurchaseInvoice" or similar
> Service definition:
>     <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>
> The eca rule will be:
> <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>
> This is the general description: this service will call the createAcctgTransAndEntries with the following input parameters:
> a) acctgTransTypeId="PURCHASE_INVOICE"
> b) partyId = invoice.partyIdFrom
> c) roleTypeId = "BILL_FROM_VENDOR"
> d) invoiceId = invoice.invoiceId
> e) acctgTransEntries: a list composed by the following AcctgTransEntry elements:
> e1) for each element of the InvoiceItems:
> e1.1) compute the value amountFromInvoice = invoiceItem.quantity * invoiceItem.amount (NOTE: if quantity is not set, then default to 1)
> e1.2)  get the list of OrderItemBilling records associated to the item and iterate over them, getting the OrderItem associated and computing the following amount: OrderItemBilling.quantity * OrderItem.unitPrice; compute the sum of all the values in the iteration (amountFromOrder);
> e1.3) if (amountFromInvoice != amountFromOrder and amountFromOrder > 0) then prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = PURCHASE_PRICE_VAR
> -- origAmount = amountFromInvoice - amountFromOrder
> -- origCurrencyUomId = invoice.currencyUomId
> e1.4) prepare an AcctgTransEntry with the following values:
> -- debitCreditFlag = D
> -- organizationPartyId = invoice.partyId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> -- productId = invoiceItem.productId
> -- glAccountTypeId = invoiceItem.invoiceItemTypeId
> -- glAccountId = invoiceItem.overrideGlAccountId
> -- origAmount = if (amountFromOrder > 0) then amountFromOrder else amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> f) one element for the invoice total (the sum of all the items' amount*quantity):
> -- debitCreditFlag = C
> -- organizationPartyId = invoice.partyId
> -- glAccountTypeId = ACCOUNTS_PAYABLE
> -- origAmount = the sum of all the items' amountFromInvoice
> -- origCurrencyUomId = invoice.currencyUomId
> -- partyId = invoice.partyIdFrom
> -- roleTypeId = "BILL_FROM_VENDOR"
> Some more details about the logic:
> 1) get the Invoice record
> 2) if Invoice.invoiceTypeId != PURCHASE_INVOICE return
> 3) get the InvoiceItems and iterate over them to create the entries (e) and compute the total for the entry for the total (f)
> 4) call the createAcctgTransAndEntries service
> Add information on the wiki page: http://docs.ofbiz.org/x/Qw0

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.