This is great analysis and documentation, thank you Paul.

I agree and propose that:
1) for consistency, we implement the change you suggest (i.e. manage
accountingQuantity far all COGS methods, COGS_INV_COST and COGS_AVG_COST
that are currently not covered)
2) we add the documentation you have provided to our Wiki

Regards,

Jacopo

On Sat, Jan 7, 2017 at 4:05 AM, Paul Foxworthy <p...@cohsoft.com.au> wrote:

> Hi all,
>
> I believe the treatment of accounting quantity for inventory items is
> flawed. I'd like anyone with knowledge of this to review the following and
> see if I have misunderstood anything. If I do understand correctly, I'll
> create some Jira tickets in due course.
>
> 1. Why accounting quantity?
> ------------------------------------------
>
> When inventory is received or shipped, there's an accounting transaction
> that debits the inventory on hand value and credits Cost of Goods Sold
> (COGS).
>
> There's more than one way of deciding what value is added to COGS.
>
> First and most obvious is the actual cost of the inventory item. But
> companies may prefer other strategies. OFBiz has the option of three
> others: average cost, first-in-first-out or last-in-first-out. There's a
> nice survey of *why* you might choose one of these at
> http://www.dummies.com/business/operations-management/choosing-an-
> accounting-method-for-the-cost-of-goods-sold-expense/,
> http://www.dummies.com/business/accounting/the-fifo-
> method-for-cost-of-goods-sold/, http://www.dummies.com/
> business/accounting/the-lifo-method-for-cost-of-goods-sold/
>
> Note that if you choose anything other than inventory item cost, the money
> amount transferred to the COGS account may be *different* to the cost price
> of the inventory items being shipped. When you choose FIFO or LIFO, the
> amount may have originated from a different inventory item, received at a
> different time.
>
> 2. Current situation in OFBiz
> ------------------------------------------
>
> The cogsMethodId field in the PartyAcctgPreference entity is a enum with
> four possible values:COGS_INV_COST, COGS_AVG_COST,  COGS_FIFO, COGS_LIFO..
>
> The accountingQuantity field in the InventoryItem entity and
> accountingQuantityDiff in the InventoryItemDetail entity track the quantity
> of an item still "live" for the purpose of inventory valuation and COGS.
>
> In the service createAcctgTransForShipmentReceipt implemented
> in /applications/accounting/minilang/ledger/GeneralLedgerServices.xml
> (http://svn.apache.org/viewvc/ofbiz/trunk/applications/
> accounting/minilang/ledger/GeneralLedgerServices.xml?view=markup#l1306)
>
> the accountingQuantity is always set to the same value as the quantity
> received (i.e. the same as the quantityOnHand) for a newly received
> inventory item regardless of the COGS method.
>
> When items are shipped, the service
> createAcctgTransForSalesShipmentIssuance will only reduce the accounting
> quantity if the COGS method is FIFO or LIFO (http://svn.apache.org/viewvc/
> ofbiz/trunk/applications/accounting/minilang/ledger/
> GeneralLedgerServices.xml?view=markup#l1127). I can't find anywhere else
> where the accounting quantity is reduced.
>
> With FIFO, when an item is shipped, inventory items for the product with a
> non-zero accounting quantity are found sorted from earliest to latest
> received. The quantity of the item shipped must be decremented from the
> accounting quantities, starting with the earliest. Similarly, with LIFO,
> items are sorted from latest to earliest, and the latest item or items are
> decremented.
>
> In other words, if you have chosen a COGS method of COGS_INV_COST or
> COGS_AVG_COST, the accounting quantity is meaningless and in OFBiz as of
> now, should be ignored.
>
> And yet, the Inventory Valuation report uses accounting quantity,
> regardless of the the COGS method (http://svn.apache.org/viewvc/
> ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.
> xml?view=markup#l535). In other words, the Inventory Valuation report is
> broken for COGS methods of COGS_INV_COST or COGS_AVG_COST.
>
> 3. What should happen
> ----------------------------------
>
> I would argue that the Inventory Valuation report, and anybody else who
> cares, should always be able to trust the accounting quantity. For
> COGS_INV_COST and COGS_AVG_COST, maintaining the accounting quantity is
> simple - it should just match the quantity on hand. I would argue it should
> still be there, so the Inventory Valuation report works for COGS_INV_COST.
>
> No matter what the COGS method, the total accounting quantity should always
> be equal to the total QOH, regardless of the COGS method.
>
> In addition, the Inventory Valuation report needs to be redesigned for the
> average cost method. If you've chosen the average cost method, there is no
> point in listing different inventory items. All inventory items will have
> the same average cost, so I don't see the point in listing them
> individually. Rather, lines in the report should just have the product and
> the average cost.
>
> Jira tickets https://issues.apache.org/jira/browse/OFBIZ-5314 and
> https://issues.apache.org/jira/browse/OFBIZ-5283 have some relevance to
> this problem.
>
> Cheers
>
> Paul Foxworthy
>
> --
> Coherent Software Australia Pty Ltd
> PO Box 2773
> Cheltenham Vic 3192
> Australia
>
> Phone: +61 3 9585 6788 <+61%203%209585%206788>
> Web: http://www.coherentsoftware.com.au/
> Email: i...@coherentsoftware.com.au
>

Reply via email to