|
|
@@ -609,6 +609,59 @@ class BoundBatchViewSet(viewsets.ModelViewSet):
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
+ def batchinout(self, request, *args, **kwargs):
|
|
|
+ from container.models import ContainerDetailModel, ContainerListModel
|
|
|
+ from decimal import Decimal
|
|
|
+
|
|
|
+ batch_number = request.data.get('batch_number')
|
|
|
+ batch_in_qty = request.data.get('batch_in_qty')
|
|
|
+
|
|
|
+ if not batch_number:
|
|
|
+ return Response({"code": 200,"message": "批次号不能为空","data": "批次进出库数目:{batch_in_qty}"}, status=200)
|
|
|
+
|
|
|
+ try:
|
|
|
+ batch_obj = BoundBatchModel.objects.get(bound_number=batch_number, is_delete=False)
|
|
|
+ except BoundBatchModel.DoesNotExist:
|
|
|
+ return Response({"code": 200,"message": "批次号不存在","data": "批次进出库数目:{batch_in_qty}"}, status=200)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if batch_in_qty:
|
|
|
+
|
|
|
+ # 获取或创建虚拟容器
|
|
|
+ virtual_container, created = ContainerListModel.objects.get_or_create(
|
|
|
+ container_code=1
|
|
|
+
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+ # 使用 update_or_create 避免并发问题
|
|
|
+ virtual_container_detail = ContainerDetailModel.objects.create(
|
|
|
+ month=timezone.now().strftime('%Y%m'),
|
|
|
+ container= virtual_container,
|
|
|
+ batch= batch_obj,
|
|
|
+ goods_class= 1, # 成品
|
|
|
+ goods_code= batch_obj.goods_code,
|
|
|
+ goods_desc= batch_obj.goods_desc,
|
|
|
+ goods_qty= Decimal(batch_in_qty),
|
|
|
+ goods_out_qty= Decimal(0),
|
|
|
+ goods_weight= batch_obj.goods_weight,
|
|
|
+ status= 2, # 在库
|
|
|
+ creater= "system",
|
|
|
+ create_time= timezone.now(),
|
|
|
+ update_time= timezone.now(),
|
|
|
+ is_delete= False )
|
|
|
+
|
|
|
+ virtual_container_detail.save()
|
|
|
+
|
|
|
+ virtual_container_detail.goods_out_qty = batch_in_qty
|
|
|
+ virtual_container_detail.save()
|
|
|
+
|
|
|
+
|
|
|
+ return Response({"code": 200,"message": "操作成功","data": "批次进出库数目:{batch_in_qty}"}, status=200)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
# 入库明细类视图
|
|
|
class BoundDetailViewSet(viewsets.ModelViewSet):
|
|
|
"""
|