feat(inventory): add mandatory per-section date pickers, prevent future dates, sync transfer dates, and sort by transaction_date

This commit is contained in:
2026-10-19 15:07:11 +03:30
parent 264c7cc906
commit 42fb314834
8 changed files with 457 additions and 108 deletions
+7 -5
View File
@@ -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)