is_mtestok 默认为空

This commit is contained in:
caoqianming 2021-12-07 08:43:28 +08:00
parent ac4063d97e
commit cf1759c744
5 changed files with 81 additions and 12 deletions

View File

@ -0,0 +1,19 @@
# Generated by Django 3.2.9 on 2021-12-07 00:42
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('inm', '0020_iproduct_is_saled'),
]
operations = [
migrations.AddField(
model_name='fifoitemproduct',
name='iproduct',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='inm.iproduct', verbose_name='关联库存产品'),
),
]

View File

@ -84,15 +84,6 @@ class FIFOItem(BaseModel):
fifo = models.ForeignKey(FIFO, verbose_name='关联出入库', on_delete=models.CASCADE)
subproduction_plan = models.ForeignKey(SubProductionPlan, verbose_name='关联子生产计划', on_delete=models.CASCADE, null=True, blank=True)
class FIFOItemProduct(BaseModel):
"""
出入库产品
"""
fifoitem = models.ForeignKey(FIFOItem, verbose_name='关联出入库具体产品', on_delete=models.CASCADE)
wproduct = models.ForeignKey('wpm.wproduct', on_delete=models.CASCADE, verbose_name='关联的动态产品', db_constraint=False, null=True, blank=True)
number = models.CharField('物品编号', max_length=50)
material = models.ForeignKey(Material, verbose_name='物料类型', on_delete=models.CASCADE)
class IProduct(BaseModel):
"""
具体产品条目
@ -104,4 +95,16 @@ class IProduct(BaseModel):
wproduct = models.ForeignKey('wpm.wproduct', on_delete=models.CASCADE, verbose_name='关联的动态产品', db_constraint=False, null=True, blank=True)
is_saled = models.BooleanField('是否售出', default=False)
class FIFOItemProduct(BaseModel):
"""
出入库产品
"""
fifoitem = models.ForeignKey(FIFOItem, verbose_name='关联出入库具体产品', on_delete=models.CASCADE)
wproduct = models.ForeignKey('wpm.wproduct', on_delete=models.CASCADE, verbose_name='关联的动态产品', db_constraint=False, null=True, blank=True)
number = models.CharField('物品编号', max_length=50)
material = models.ForeignKey(Material, verbose_name='物料类型', on_delete=models.CASCADE)
iproduct = models.ForeignKey(IProduct, verbose_name='关联库存产品', null=True, blank=True, on_delete=models.SET_NULL)

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.9 on 2021-12-07 00:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sam', '0008_alter_saleproduct_number'),
]
operations = [
migrations.AlterField(
model_name='saleproduct',
name='is_mtestok',
field=models.BooleanField(blank=True, null=True, verbose_name='是否军检合格'),
),
]

View File

@ -90,7 +90,7 @@ class SaleProduct(BaseModel):
number = models.CharField('物品编号', max_length=50)
iproduct = models.ForeignKey('inm.iproduct', verbose_name='关联库存产品', on_delete=models.CASCADE, related_name='sale_iproduct')
is_mtested = models.BooleanField('是否军检', default=False)
is_mtestok = models.BooleanField('是否军检合格', default=True)
is_mtestok = models.BooleanField('是否军检合格', null=True, blank=True)
remark = models.TextField('备注', null=True, blank=True)
class Meta:

View File

@ -1,7 +1,9 @@
from django.db import transaction
from django.db.models.aggregates import Count
from rest_framework import exceptions, serializers
from rest_framework.mixins import CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin
from apps.inm.models import FIFO
from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct
from apps.inm.signals import update_inm
from apps.sam.serializers import ContractCreateUpdateSerializer, ContractSerializer, CustomerCreateUpdateSerializer, CustomerSerializer, OrderCreateUpdateSerializer, OrderSerializer, SaleCreateSerializer, SaleListSerializer, SaleProductCreateSerializer, SaleProductListSerializer, SaleProductMtestSerializer
from apps.sam.models import Contract, Customer, Order, Sale, SaleProduct
from rest_framework.viewsets import GenericViewSet, ModelViewSet
@ -75,7 +77,7 @@ class OrderViewSet(CreateUpdateCustomMixin, ModelViewSet):
return Response(serializer.data)
class SaleViewSet(CreateUpdateCustomMixin, ListModelMixin, RetrieveModelMixin, CreateModelMixin, GenericViewSet):
class SaleViewSet(CreateUpdateCustomMixin, ListModelMixin, RetrieveModelMixin, CreateModelMixin, DestroyModelMixin, GenericViewSet):
"""
销售记录
"""
@ -136,7 +138,34 @@ class SaleViewSet(CreateUpdateCustomMixin, ListModelMixin, RetrieveModelMixin, C
pass
else:
raise exceptions.APIException('存在未军检产品')
# 创建出库条目
ips = IProduct.objects.filter(sale_iproduct__sale=obj)
items = ips.values('warehouse', 'material', 'batch').annotate(total=Count('id'))
for i in items:
fifoitem = FIFOItem()
fifoitem.is_tested = True
fifoitem.is_testok = True
fifoitem.warehouse = i['warehouse']
fifoitem.material = i['material']
fifoitem.count = i['total']
fifoitem.batch = i['batch']
fifoitem.fifo = fifo
fifoitem.save()
items_p = ips.filter(warehouse=i['warehouse'], batch=i['batch'])
ips = []
for i in items_p:
# 创建入库明细半成品
ip = {}
ip['fifoitem'] = fifoitem
ip['number'] = i.number
ip['material'] = i.material
ip['iproduct'] = i
ips.append(FIFOItemProduct(**ip))
FIFOItemProduct.objects.bulk_create(ips)
# 更新库存
update_inm(fifo)
# 更新成品库情况
ips.update(is_saled=True)
return Response()
class SaleProductViewSet(ListModelMixin, DestroyModelMixin, CreateModelMixin, GenericViewSet):