|
|
@@ -10,6 +10,7 @@ from sqlalchemy.orm import Session
|
|
|
|
|
|
from app.core.utils import generate_uuid
|
|
|
from app.crud.qc_material import _dec, _fmt_dt, _is_enabled_status, _norm_status
|
|
|
+from app.crud.qc_material_batch_stock_status import normalize_batch_stock_status
|
|
|
from app.models.qc_material import BizQcMaterial, BizQcMaterialStockBatch, BizQcMaterialUsage
|
|
|
|
|
|
|
|
|
@@ -150,6 +151,7 @@ def list_batches(
|
|
|
keyword: Optional[str] = None,
|
|
|
material_id: Optional[str] = None,
|
|
|
status: Optional[str] = None,
|
|
|
+ stock_status: Optional[str] = None,
|
|
|
tenant_no: Optional[str] = None,
|
|
|
user_info=None,
|
|
|
) -> Tuple[List[Dict[str, Any]], int]:
|
|
|
@@ -184,6 +186,11 @@ def list_batches(
|
|
|
st = (status or "").strip()
|
|
|
if st in ("0", "1"):
|
|
|
q0 = q0.filter(BizQcMaterial.status == st)
|
|
|
+ mode = normalize_batch_stock_status(stock_status)
|
|
|
+ if mode == "available":
|
|
|
+ q0 = q0.filter(BizQcMaterialStockBatch.remaining_qty > 0)
|
|
|
+ elif mode == "exhausted":
|
|
|
+ q0 = q0.filter(BizQcMaterialStockBatch.remaining_qty == 0)
|
|
|
if user_info:
|
|
|
from app.core.data_scope import apply_data_scope
|
|
|
|