feat(inventory): add mandatory per-section date pickers, prevent future dates, sync transfer dates, and sort by transaction_date
This commit is contained in:
@@ -22,6 +22,7 @@ SHA256 of the sorted canonical specs JSON (or 'default' when empty).
|
||||
import hashlib
|
||||
import json
|
||||
import uuid
|
||||
from datetime import datetime, timezone
|
||||
from decimal import Decimal
|
||||
|
||||
from sqlalchemy import select
|
||||
@@ -175,6 +176,7 @@ async def apply_transaction(
|
||||
t = payload.transaction_type
|
||||
specs = payload.specs or {}
|
||||
specs_hash = canonical_specs_hash(specs)
|
||||
tx_date = payload.transaction_date or datetime.now(timezone.utc)
|
||||
|
||||
# STOCK_COUNT: apply the difference between counted and recorded quantity.
|
||||
if t == "STOCK_COUNT":
|
||||
@@ -197,7 +199,7 @@ async def apply_transaction(
|
||||
recorded_qty=recorded,
|
||||
physical_qty=payload.physical_qty,
|
||||
performed_by=performed_by,
|
||||
transaction_date=payload.transaction_date,
|
||||
transaction_date=tx_date,
|
||||
note=payload.note,
|
||||
)
|
||||
db.add(tx)
|
||||
@@ -238,7 +240,7 @@ async def apply_transaction(
|
||||
quantity=-quantity,
|
||||
transfer_pair_id=pair_id,
|
||||
performed_by=performed_by,
|
||||
transaction_date=payload.transaction_date,
|
||||
transaction_date=tx_date,
|
||||
note=payload.note,
|
||||
)
|
||||
db.add(out_tx)
|
||||
@@ -256,7 +258,7 @@ async def apply_transaction(
|
||||
quantity=quantity,
|
||||
transfer_pair_id=pair_id,
|
||||
performed_by=performed_by,
|
||||
transaction_date=payload.transaction_date,
|
||||
transaction_date=tx_date,
|
||||
note=payload.note,
|
||||
)
|
||||
db.add(in_tx)
|
||||
@@ -291,7 +293,7 @@ async def apply_transaction(
|
||||
quantity=quantity,
|
||||
performed_by=performed_by,
|
||||
delivered_to=payload.delivered_to,
|
||||
transaction_date=payload.transaction_date,
|
||||
transaction_date=tx_date,
|
||||
note=payload.note,
|
||||
)
|
||||
db.add(tx)
|
||||
@@ -321,7 +323,7 @@ async def apply_transaction(
|
||||
quantity=-quantity,
|
||||
performed_by=performed_by,
|
||||
delivered_to=payload.delivered_to,
|
||||
transaction_date=payload.transaction_date,
|
||||
transaction_date=tx_date,
|
||||
note=payload.note,
|
||||
)
|
||||
db.add(tx)
|
||||
|
||||
Reference in New Issue
Block a user