领料bug

This commit is contained in:
caoqianming 2021-11-16 09:51:32 +08:00
parent f1102656c7
commit 73a475c4ea
2 changed files with 62 additions and 62 deletions

View File

@ -48,20 +48,20 @@ class PickSerializer(serializers.Serializer):
i['is_testok'] = True # 默认检测合格 i['is_testok'] = True # 默认检测合格
i['subproduction_plan'] = sp i['subproduction_plan'] = sp
FIFOItem.objects.create(**i) FIFOItem.objects.create(**i)
# 更新车间物料 # 更新车间物料
wm, _ = WMaterial.objects.get_or_create(material=i['material'], batch=i['batch'], \ wm, _ = WMaterial.objects.get_or_create(material=i['material'], batch=i['batch'], \
subproduction_plan=sp,defaults={ subproduction_plan=sp,defaults={
'material':i['material'], 'material':i['material'],
'batch':i['batch'], 'batch':i['batch'],
'subproduction_plan':sp, 'subproduction_plan':sp,
'count':0 'count':0
}) })
wm.count = wm.count + i['count'] wm.count = wm.count + i['count']
wm.save() wm.save()
# 更新子计划物料情况 # 更新子计划物料情况
spp = SubProductionProgress.objects.get(material=i['material'], subproduction_plan=sp, type=1) spp = SubProductionProgress.objects.get(material=i['material'], subproduction_plan=sp, type=1)
spp.count_pick = spp.count_pick + i['count'] spp.count_pick = spp.count_pick + i['count']
spp.save() spp.save()
sp.is_picked=True sp.is_picked=True
sp.state = 3 #生产中 sp.state = 3 #生产中
sp.state_date_real = timezone.now() #实际开工日期 sp.state_date_real = timezone.now() #实际开工日期

View File

@ -34,8 +34,8 @@ class WPlanViewSet(ListModelMixin, GenericViewSet):
search_fields = [] search_fields = []
serializer_class = SubProductionPlanListSerializer serializer_class = SubProductionPlanListSerializer
filterset_fields = ['production_plan', 'process', 'state', 'main_product', 'workshop'] filterset_fields = ['production_plan', 'process', 'state', 'main_product', 'workshop']
ordering_fields = ['process__number'] ordering_fields = []
ordering = ['process__number'] ordering = ['-id']
@action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=WplanPutInSerializer) @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=WplanPutInSerializer)
@transaction.atomic @transaction.atomic
@ -125,52 +125,52 @@ class WMaterialViewSet(CreateUpdateModelAMixin, ListModelMixin, GenericViewSet):
serializer= WproductPutInSerializer(data=request.data) serializer= WproductPutInSerializer(data=request.data)
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
vdata = serializer.data vdata = serializer.data
subplan = self.get_object() wproduct = self.get_object()
material = subplan.main_product if wproduct.act_state != WProduct.WPR_ACT_STATE_OK:
batch = subplan.production_plan.number raise exceptions.APIException('半成品不可入库')
wproducts = WProduct.objects.filter(subproduction_plan=subplan, material = wproduct.m_state
act_state=WProduct.WPR_ACT_STATE_OK, m_state=material, is_deleted=False) batch = wproduct.production_plan.number
if wproducts.exists(): # 创建入库记录
# 创建入库记录 remark = vdata.get('remark', '')
remark = vdata.get('remark', '') fifo = FIFO.objects.create(type=FIFO.FIFO_TYPE_DO_IN,
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)
is_audited=True, auditor=request.user, inout_date=timezone.now(), create_by=request.user, remark=remark) # 创建入库明细
# 创建入库明细 fifoitem = FIFOItem()
fifoitem = FIFOItem() fifoitem.is_tested = True
fifoitem.is_tested = True fifoitem.is_testok = True
fifoitem.is_testok = True fifoitem.warehouse = vdata['warehouse']
fifoitem.warehouse = vdata['warehouse'] fifoitem.material = material
fifoitem.material = material fifoitem.count = 1 # 单个半成品入库
fifoitem.count = wproducts.count() fifoitem.batch = batch
fifoitem.batch = batch fifoitem.fifo = fifo
fifoitem.fifo = fifo fifoitem.subproduction_plan = wproduct.subproduction_plan
fifoitem.subproduction_plan = subplan fifoitem.save()
fifoitem.save() # 创建入库明细半成品
# 创建入库明细半成品 ips = []
ips = [] for i in [wproduct]:
for i in wproducts: ip = {}
ip = {} ip['fifoitem'] = fifoitem
ip['fifoitem'] = fifoitem ip['wproduct'] = i
ip['wproduct'] = i ip['number'] = i.number
ip['number'] = i.number ip['material'] = material
ip['material'] = material ips.append(FIFOItemProduct(**ip))
ips.append(FIFOItemProduct(**ip)) FIFOItemProduct.objects.bulk_create(ips)
FIFOItemProduct.objects.bulk_create(ips) # 创建IProduct
# 创建IProduct ips2 = []
ips2 = [] for i in [wproduct]:
for i in wproducts: ip = {}
ip = {} ip['warehouse'] = vdata['warehouse']
ip['warehouse'] = vdata['warehouse'] ip['batch'] = batch
ip['batch'] = batch ip['wproduct'] = i
ip['wproduct'] = i ip['number'] = i.number
ip['number'] = i.number ip['material'] = material
ip['material'] = material ips2.append(IProduct(**ip))
ips2.append(IProduct(**ip)) IProduct.objects.bulk_create(ips2)
IProduct.objects.bulk_create(ips2) # 更新库存并修改半成品进行状态
# 更新库存并修改半成品进行状态 update_inm(fifo)
update_inm(fifo) wproduct.act_state=WProduct.WPR_ACT_STATE_INM
wproducts.update(act_sate=WProduct.WPR_ACT_STATE_INM, warehouse=vdata['warehouse']) wproduct.warehouse=vdata['warehouse']
wproduct.save()
return Response() return Response()
class WProductViewSet(ListModelMixin, GenericViewSet): class WProductViewSet(ListModelMixin, GenericViewSet):