Kosztorys inwentaryzacji „pierwsze weszło-pierwsze wyszło” (FIFO)
Oto ciekawy artykuł, który okazał się przydatny w moim projekcie:
Speed Phreakery: Problem z zapasami zapasów FIFO SQL:
Tabela zapasów, której używamy do śledzenia ruchów zapasów w naszym wyimaginowanym magazynie magazynowym. Nasz magazyn jest początkowo pusty, a następnie magazyn przechodzi do magazynu w wyniku zakupu zapasów (tranCode = „IN”) lub z powodu kolejnego zwrotu (tranCode = „RET”), a zapasy wycofują się z magazynu, gdy jest sprzedawany (tranCode = „OUT”). Każdy typ tempa jest określony przez ID artykułu. Każdy ruch magazynu w magazynie lub poza nim, spowodowany zakupem, sprzedażą lub zwrotem danej pozycji, powoduje dodanie wiersza do tabeli akcji, jednoznacznie identyfikowanej przez wartość w kolumnie tożsamości StockID i opisującej liczbę elementy zostały dodane lub usunięte, cena zakupów, data transakcji i tak dalej.
Chociaż używam tego w moim bieżącym projekcie, utknąłem na tym, jak uzyskać cenę za każdą transakcję „OUT”. Muszę mieć tę wartość, aby ustalić, ile obciążę moich klientów.
Najpierw dodaj 5 sztuk jabłek (po 10,00 $) do magazynu, w sumie 50,00 USD
Dodaj 3 jabłka (po 20,00 $) do łącznej liczby 8 jabłek, za łączną cenę 110,00 $
Następnie wyjmij 6 przedmiotów (po 5 $ 10,00 i 1 20,00 $) łącznie 70 $
Po transakcji pozostawi 2 jabłka po 20 USD każda, w sumie 40 USD
Here's my current table
Item transaction code qty price
apple IN 5 10.00
apple IN 3 20.00
apple OUT 6
Manual computation for the OUT transaction price (FIFO)
QTY price total price
5 10.00 50.00
1 20.00 20.00
TOTAL:6 70.00
Output of the script:
Item CurrentItems CurrentValue
apple 2 40.00
What I need:
Item transaction code qty price CurrentItems CurrentValue
apple IN 5 10.00 5 50.00
apple IN 3 20.00 8 110.00
apple OUT 6 2 40.00
This too will be OK
Item transaction code qty price CurrentItems
apple IN 5 10.00 0
apple IN 3 20.00 0
apple OUT 6 70
Opublikowany skrypt, który wygrał konkurs, był bardzo przydatny, mam nadzieję, że ktoś może mi pomóc w uzyskaniu ceny za transakcję „OUT”