1
0
forked from erp-dev/erp

fix: added delivery_id and delivery_isnull query param to shipment list api

This commit is contained in:
2026-04-21 23:09:58 +08:00
parent 8b1afc64c5
commit 35e6af1128
6 changed files with 160 additions and 2 deletions

View File

@@ -121,6 +121,8 @@ class ShipmentListCreateView(ListModelMixin, GenericAPIView):
支持过滤参数(可选):
- customer: 客户ID
- status: 状态1=草稿, 2=已发布, 3=已取消, 4=已驳回, 5=已审核)
- delivery_id: 送货单ID仅当传入具体ID时过滤null/空值不触发过滤)
- delivery_isnull: 是否仅查询未绑定/已绑定送货单的出货单true/false
- external_id: 外部订单号(精确匹配)
- shipment_date_from: 出货日期起始YYYY-MM-DD
- shipment_date_to: 出货日期结束YYYY-MM-DD包含整天
@@ -151,6 +153,20 @@ class ShipmentListCreateView(ListModelMixin, GenericAPIView):
if status_val:
qs = qs.filter(status=status_val)
delivery_id = self.request.query_params.get("delivery_id")
if delivery_id is not None:
normalized_delivery_id = delivery_id.strip()
if normalized_delivery_id and normalized_delivery_id.lower() not in {"null", "none"}:
qs = qs.filter(delivery_id=normalized_delivery_id)
delivery_isnull = self.request.query_params.get("delivery_isnull")
if delivery_isnull is not None:
normalized_delivery_isnull = delivery_isnull.strip().lower()
if normalized_delivery_isnull in {"1", "true", "yes"}:
qs = qs.filter(delivery_id__isnull=True)
elif normalized_delivery_isnull in {"0", "false", "no"}:
qs = qs.filter(delivery_id__isnull=False)
external_id = self.request.query_params.get("external_id")
if external_id:
qs = qs.filter(external_id=external_id)
@@ -1009,7 +1025,7 @@ class SalesItemDetailView(GenericAPIView):
emp = getattr(user, "employee", None)
merchant = getattr(emp, "merchant", None) if emp else None
if not merchant:
return SalesItem.objects.none()
return qs.none()
return qs.filter(merchant=merchant)
def get(self, request, pk: int):
@@ -1116,7 +1132,7 @@ class SalesItemRebuildView(GenericAPIView):
emp = getattr(user, "employee", None)
merchant = getattr(emp, "merchant", None) if emp else None
if not merchant:
return SalesItem.objects.none()
return qs.none()
return qs.filter(merchant=merchant)
def post(self, request, pk: int):