领料bug
This commit is contained in:
parent
5904ab1475
commit
fe5108f616
|
@ -17,7 +17,7 @@ class PickDetailSerializer(serializers.Serializer):
|
|||
material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label="物料ID")
|
||||
batch = serializers.CharField(label='物料批次', allow_blank=True)
|
||||
warehouse = serializers.PrimaryKeyRelatedField(queryset=WareHouse.objects.all(), label="仓库ID")
|
||||
pick_count = serializers.IntegerField(label="领料数量")
|
||||
pick_count = serializers.IntegerField(label="领料数量", required=False)
|
||||
|
||||
class PickSerializer(serializers.Serializer):
|
||||
subproduction_plan=serializers.PrimaryKeyRelatedField(queryset=SubProductionPlan.objects.all(), label="子计划ID")
|
||||
|
@ -43,7 +43,7 @@ class PickSerializer(serializers.Serializer):
|
|||
for i in picks:
|
||||
# 更新出库详情
|
||||
i['fifo'] = fifo
|
||||
i['count'] = i.pop('pick_count')
|
||||
i['count'] = i.pop('pick_count', 0)
|
||||
i['is_testok'] = True # 默认检测合格
|
||||
i['subproduction_plan'] = sp
|
||||
FIFOItem.objects.create(**i)
|
||||
|
@ -195,7 +195,10 @@ class WproductPutInSerializer(serializers.Serializer):
|
|||
class WplanPutInSerializer(serializers.Serializer):
|
||||
warehouse = serializers.PrimaryKeyRelatedField(queryset=WareHouse.objects.all(), label="仓库ID")
|
||||
remark = serializers.CharField(label="入库备注", required =False)
|
||||
|
||||
|
||||
class WproductPutInSerializer(serializers.Serializer):
|
||||
warehouse = serializers.PrimaryKeyRelatedField(queryset=WareHouse.objects.all(), label="仓库ID")
|
||||
remark = serializers.CharField(label="入库备注", required =False)
|
||||
|
||||
|
||||
|
|
@ -17,7 +17,7 @@ from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
|||
from rest_framework.decorators import action
|
||||
from apps.wpm.models import WMaterial, WProduct, Operation, OperationMaterial, OperationRecord, OperationRecordItem
|
||||
|
||||
from apps.wpm.serializers import OperationDetailSerializer, OperationListSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestRecordCreateSerializer
|
||||
from apps.wpm.serializers import OperationDetailSerializer, OperationListSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestRecordCreateSerializer, WproductPutInSerializer
|
||||
from rest_framework.response import Response
|
||||
from django.db import transaction
|
||||
from rest_framework import exceptions, serializers
|
||||
|
@ -116,6 +116,62 @@ class WMaterialViewSet(CreateUpdateModelAMixin, ListModelMixin, GenericViewSet):
|
|||
serializer.save()
|
||||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=WproductPutInSerializer)
|
||||
@transaction.atomic
|
||||
def putin(self, request, pk=None):
|
||||
"""
|
||||
半成品入库
|
||||
"""
|
||||
serializer= WproductPutInSerializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
vdata = serializer.data
|
||||
subplan = self.get_object()
|
||||
material = subplan.main_product
|
||||
batch = subplan.production_plan.number
|
||||
wproducts = WProduct.objects.filter(subproduction_plan=subplan,
|
||||
act_state=WProduct.WPR_ACT_STATE_OK, m_state=material, is_deleted=False)
|
||||
if wproducts.exists():
|
||||
# 创建入库记录
|
||||
remark = vdata.get('remark', '')
|
||||
fifo = FIFO.objects.create(type=FIFO.FIFO_TYPE_DO_IN,
|
||||
is_audited=True, auditor=request.user, inout_date=timezone.now(), create_by=request.user, remark=remark)
|
||||
# 创建入库明细
|
||||
fifoitem = FIFOItem()
|
||||
fifoitem.is_tested = True
|
||||
fifoitem.is_testok = True
|
||||
fifoitem.warehouse = vdata['warehouse']
|
||||
fifoitem.material = material
|
||||
fifoitem.count = wproducts.count()
|
||||
fifoitem.batch = batch
|
||||
fifoitem.fifo = fifo
|
||||
fifoitem.subproduction_plan = subplan
|
||||
fifoitem.save()
|
||||
# 创建入库明细半成品
|
||||
ips = []
|
||||
for i in wproducts:
|
||||
ip = {}
|
||||
ip['fifoitem'] = fifoitem
|
||||
ip['wproduct'] = i
|
||||
ip['number'] = i.number
|
||||
ip['material'] = material
|
||||
ips.append(FIFOItemProduct(**ip))
|
||||
FIFOItemProduct.objects.bulk_create(ips)
|
||||
# 创建IProduct
|
||||
ips2 = []
|
||||
for i in wproducts:
|
||||
ip = {}
|
||||
ip['warehouse'] = vdata['warehouse']
|
||||
ip['batch'] = batch
|
||||
ip['wproduct'] = i
|
||||
ip['number'] = i.number
|
||||
ip['material'] = material
|
||||
ips2.append(IProduct(**ip))
|
||||
IProduct.objects.bulk_create(ips2)
|
||||
# 更新库存并修改半成品进行状态
|
||||
update_inm(fifo)
|
||||
wproducts.update(act_sate=WProduct.WPR_ACT_STATE_INM, warehouse=vdata['warehouse'])
|
||||
|
||||
return Response()
|
||||
|
||||
class WProductViewSet(ListModelMixin, GenericViewSet):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue