def patch(self, request, *args, **kwargs): instance = Product.objects.get(pk=kwargs['pk']) self.log(user=request.user, action="제품수정", obj=instance, extra=model_to_dict(instance)) self.partial_update(request, *args, **kwargs) Product.getLossProductPercent(instance.master_id) productAdmin = ProductAdmin.objects.filter(product_id=instance).filter( releaseType='생성').first() productAdmin.amount = request.data['amount'] productAdmin.count = request.data['count'] productAdmin.save() return Response(status=status.HTTP_200_OK)
def delete(self, request, *args, **kwargs) -> Response: instance: Product = Product.objects.get(pk=kwargs['pk']) self.log(user=request.user, action="제품삭제", obj=instance, extra=model_to_dict(instance)) if instance.type == "미출고품사용": origin_instance = Product.objects.filter(ymd=instance.ymd).filter( code=instance.code).filter(type="제품생산").first() ProductAdmin.objects.filter(product_id=origin_instance).filter( releaseType="미출고품사용").delete() self.destroy(request, *args, **kwargs) else: self.destroy(request, *args, **kwargs) Product.getLossProductPercent(instance.master_id) return Response(status=status.HTTP_200_OK)
def post(self, request): global product, main form0 = MainForm(request.POST) form1 = StepOneForm(request.POST) form2 = StepTwoForm(request.POST) form3 = StepThreeForm(request.POST) formset = StepFourFormSet(request.POST) if form0.is_valid(): main = form0.save() self.log( user=request.user, action="제품생산", obj=main, extra=model_to_dict(main) ) if form1.is_valid(): stepOneProductEgg = [[key, value] for key, value in form1.cleaned_data.items()] memo = [stepOneProductEgg[i][1] for i in range(2, len(stepOneProductEgg), 3)] # 메모만 가져오기 validStepOne = ProductEgg.makeVaildinfo(stepOneProductEgg, memo) ProductEgg.insertInfo(main, validStepOne) ProductEgg.getLossOpenEggPercent(main) if form2.is_valid(): stepTwoProductEgg = [[key, value] for key, value in form2.cleaned_data.items()] memo = [stepTwoProductEgg[i][1] for i in range(1, len(stepTwoProductEgg), 2)] validStepTwo = ProductEgg.makeVaildinfo(stepTwoProductEgg, memo) ProductEgg.insertInfo(main, validStepTwo) if form3.is_valid(): stepThreeProductEgg = [[key, value] for key, value in form3.cleaned_data.items()] memo = [stepThreeProductEgg[i][1] for i in range(1, len(stepThreeProductEgg), 2)] validStepThree = ProductEgg.makeVaildinfo(stepThreeProductEgg, memo) ProductEgg.insertInfo(main, validStepThree) if formset.is_valid(): for form in formset: code = form.cleaned_data.get('product', None) amount = form.cleaned_data.get('amount', None) amount_kg = form.cleaned_data.get('amount_kg', None) count = form.cleaned_data.get('count', None) memo = form.cleaned_data.get('memo', None) KCFRESH_LOCATION_CODE: str = '00301' location = Location.objects.get(code=KCFRESH_LOCATION_CODE) # kcfresh 본사 if code and count > 0: productCode = ProductCode.objects.get(code=code) productExist = Product.objects.filter(code=code).filter(ymd=main.ymd).first() if not productExist: product = Product.objects.create( master_id=main, ymd=main.ymd, code=code, codeName=productCode.codeName, productCode=productCode, amount=amount, amount_kg=amount_kg, count=count, memo=memo ) productAdmin = ProductAdmin.objects.create( product_id=product, amount=amount, count=count, ymd=main.ymd, location=location, ) product.save() productAdmin.save() else: productExist.amount += Decimal(amount) productExist.count += count productExistAdmin = ProductAdmin.objects.filter(releaseType='생성') \ .filter(product_id=productExist).first() productExistAdmin.amount += Decimal(amount) productExistAdmin.count += count productExist.save() productExistAdmin.save() for packing in AutoPacking.objects.filter(productCode=productCode): packing_product = productExist if productExist else product packing_count = int(count) // int(packing.count) Packing.objects.create( ymd=main.ymd, type='생산', code=packing.packingCode.code, codeName=packing.packingCode.codeName, count=-packing_count, packingCode=packing.packingCode, productCode=packing_product, autoRelease='자동출고', ) Product.getLossProductPercent(main) return redirect('productList')