Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
    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')