marination
3 years ago
2 changed files with 74 additions and 2 deletions
@ -0,0 +1,73 @@ |
|||
### Concept of FIFO Slots |
|||
|
|||
Since we need to know age-wise remaining stock, we maintain all the inward entries as slots. So each time stock comes in, a slot is added for the same. |
|||
|
|||
Eg. For Item A: |
|||
---------------------- |
|||
Date | Qty | Queue |
|||
---------------------- |
|||
1st | +50 | [[50, 1-12-2021]] |
|||
2nd | +20 | [[50, 1-12-2021], [20, 2-12-2021]] |
|||
---------------------- |
|||
|
|||
Now the queue can tell us the total stock and also how old the stock is. |
|||
Here, the balance qty is 70. |
|||
50 qty is (today-the 1st) days old |
|||
20 qty is (today-the 2nd) days old |
|||
|
|||
### Calculation of FIFO Slots |
|||
|
|||
#### Case 1: Outward from sufficient balance qty |
|||
---------------------- |
|||
Date | Qty | Queue |
|||
---------------------- |
|||
1st | +50 | [[50, 1-12-2021]] |
|||
2nd | -20 | [[30, 1-12-2021]] |
|||
2nd | +20 | [[30, 1-12-2021], [20, 2-12-2021]] |
|||
|
|||
Here after the first entry, while issuing 20 qty: |
|||
- **since 20 is lesser than the balance**, **qty_to_pop (20)** is simply consumed from first slot (FIFO consumption) |
|||
- Any inward entry after as usual will get its own slot added to the queue |
|||
|
|||
#### Case 2: Outward from sufficient cumulative (slots) balance qty |
|||
---------------------- |
|||
Date | Qty | Queue |
|||
---------------------- |
|||
1st | +50 | [[50, 1-12-2021]] |
|||
2nd | +20 | [[50, 1-12-2021], [20, 2-12-2021]] |
|||
2nd | -60 | [[10, 2-12-2021]] |
|||
|
|||
- Consumption happens slot wise. First slot 1 is consumed |
|||
- Since **qty_to_pop (60) is greater than slot 1 qty (50)**, the entire slot is consumed and popped |
|||
- Now the queue is [[20, 2-12-2021]], and **qty_to_pop=10** (remaining qty to pop) |
|||
- It then goes ahead to the next slot and consumes 10 from it |
|||
- Now the queue is [[10, 2-12-2021]] |
|||
|
|||
#### Case 3: Outward from insufficient balance qty |
|||
> This case is possible only if **Allow Negative Stock** was enabled at some point/is enabled. |
|||
|
|||
---------------------- |
|||
Date | Qty | Queue |
|||
---------------------- |
|||
1st | +50 | [[50, 1-12-2021]] |
|||
2nd | -60 | [[-10, 1-12-2021]] |
|||
|
|||
- Since **qty_to_pop (60)** is more than the balance in slot 1, the entire slot is consumed and popped |
|||
- Now the queue is **empty**, and **qty_to_pop=10** (remaining qty to pop) |
|||
- Since we still have more to consume, we append the balance since 60 is issued from 50 i.e. -10. |
|||
- We register this negative value, since the stock issue has caused the balance to become negative |
|||
|
|||
Now when stock is inwarded: |
|||
- Instead of adding a slot we check if there are any negative balances. |
|||
- If yes, we keep adding positive stock to it until we make the balance positive. |
|||
- Once the balance is positive, the next inward entry will add a new slot in the queue |
|||
|
|||
Eg: |
|||
---------------------- |
|||
Date | Qty | Queue |
|||
---------------------- |
|||
1st | +50 | [[50, 1-12-2021]] |
|||
2nd | -60 | [[-10, 1-12-2021]] |
|||
3rd | +5 | [[-5, 3-12-2021]] |
|||
4th | +10 | [[5, 4-12-2021]] |
|||
4th | +20 | [[5, 4-12-2021], [20, 4-12-2021]] |
Loading…
Reference in new issue