Understanding the Inventory Give-Back Loop

This guide explains the inventory give-back loop within the COGS process. It is intended for advanced users.

The “inventory give-back loop” is the part of the aACE COGS engine that accounts for returns and reuse of your line item codes (LICs). Note: To understand this guide, you should be familiar with aACE functionality for inventory lot, usage, and transaction records.

As an example of a return, suppose we receive ten units of boxes. aACE creates an inventory lot record to track that product. Then we ship ten units to a customer. But the customer returns two. The COGS engine will “give back” two units to that inventory lot. This makes two units available for another order. 

This example would be reflected in the system as:

  • 10 units received from supplier — Inventory Lot created — Lot: 10 units
  • 10 units shipped to customer — Inventory Usage created (+10 units) — Lot: 0 units
  • 2 units received back from customer — Inventory Usage created (-2 units) — Lot: 2 units

Give-Back Limits for Inventory Lots

An inventory lot's Used balance of Current Inventory is the largest number of units that can be given back to that lot. In this screenshot, we could receive up to 30 units back into this inventory lot: 

However, a product return might include more units than can be associated with a single inventory lot. In these situations, aACE handles the units in one of two ways:

  • If other inventory lots for that LIC are available, aACE uses those lots for the additional inventory usage quantity.
    Note: For returns, additional inventory lots are always selected using LIFO logic, even if your accounting preferences specify FIFO. This is because FIFO logic for returns would mean that the cost of the first inventory lot would be used in perpetuity, even though those costs would be increasingly irrelevant over time. Read more about selecting the inventory management method.
  • If no other inventory lots for that LIC are available, then the inventory give-back loop iterates. aACE first allocates as much negative usage as possible to the lot. Then it allocates a corresponding amount of positive usage. Then it repeats.

Example of the Inventory Give-Back Loop

The give-back loop is used to resolve unallocated inventory usage, as shown in this example:

For LIC TBLT-STYG, a shipment of 50 units was sent to a customer, followed by a return shipment of 50. Both shipments generated inventory usage entries:

TBLT-STYG only has one inventory lot in the system, which has a Lot Quantity of ten. All ten units have been allocated to previous inventory usage records from previous shipments. So the inventory lot is currently Closed. Because the Lot Quantity is ten and the Current Quantity is zero, this lot's current give-back limit is ten (i.e. the lot's quantity Used). 

Before the COGS reconciliation process begins, the lot's inventory balance is at zero: 0 current inventory (inventory lot) + 50 unallocated quantity (positive usage) - 50 unallocated quantity (negative usage) = 0.

First Allocation Loop

When the COGS Reconciliation process runs, aACE recognizes that there are no lots with available inventory. So the unallocated positive usage (i.e. the shipment to the customer) remains at 50; however, the negative usage (i.e. the product return) can give back 10 units to that lot, reducing the negative unallocated quantity to -40.

At this point, the inventory lot is open again and 'contains' 10 units.

Second Allocation Loop

Because there was a change in the usage quantities, aACE loops through the allocation process again.

The COGS engine can allocate 10 units of positive usage to the inventory lot, decreasing the unallocated positive usage to 40. This also reduces the inventory lot to zero again, preparing the way for 10 more negative usage records to be allocated, leaving -30.

This leaves the inventory lot with 10 units again, identical to the screenshot shown previously.

Third Allocation Loop

The process loops again, reducing both the positive and negative unallocated usage by 10 (i.e. +30/-20) as the inventory lot is depleted, then replenished again.

Fourth Allocation Loop

The process loops again, reducing unallocated usage to +20/-10 as the inventory lot is depleted and replenished.

Fifth Allocation Loop

With this loop, the unallocated usage quantities are reduced  +10/0. When the inventory lot is replenished this time, the negative inventory usage quantity reaches zero. So aACE closes that usage record.

Final Allocation

The remaining 10 units of positive unallocated usage are allocated to the lot, reducing that quantity to zero and closing that inventory usage record also.

This step also leaves the inventory lot record at zero units again, so it is closed.

After the COGS reconciliation process ends, the inventory balance is again at zero: 0 current inventory (inventory lot) + 0 unallocated quantity (positive usage) - 0 unallocated quantity (negative usage) = 0. 

At the inventory lot detail view, we can review the quantities that were processed. Even though the lot can only receive 10 units (i.e. its give-back limit), the Inventory COGS section shows -50/+50 for the usage quantities that were processed. This is because the give-back loop processed those 10 units ~five times.