增加采购订单part1
This commit is contained in:
parent
c82ef89054
commit
c8c6945a38
|
@ -0,0 +1,20 @@
|
|||
# Generated by Django 3.2.9 on 2022-01-27 07:47
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('pum', '0004_puorder_puorderitem'),
|
||||
('inm', '0028_alter_fifoitem_files'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='fifo',
|
||||
name='pu_order',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='pum.puorder', verbose_name='关联采购订单'),
|
||||
),
|
||||
]
|
|
@ -79,7 +79,8 @@ class FIFO(CommonADModel):
|
|||
User, verbose_name='审核人', on_delete=models.CASCADE, null=True, blank=True)
|
||||
inout_date = models.DateField('出入库日期', null=True, blank=True)
|
||||
remark = models.CharField('备注', max_length=1000, default='')
|
||||
pu_order = models.ForeignKey(PuOrder, verbose_name='关联采购订单', null=True, blank=True)
|
||||
pu_order = models.ForeignKey(PuOrder, verbose_name='关联采购订单',
|
||||
null=True, blank=True, on_delete=models.CASCADE)
|
||||
|
||||
|
||||
class FIFOItem(BaseModel):
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
# Generated by Django 3.2.9 on 2022-01-27 07:47
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('mtm', '0044_subproduction_need_combtest'),
|
||||
('pum', '0003_remove_vendor_material'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='PuOrder',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('number', models.CharField(max_length=100, unique=True, verbose_name='订单编号')),
|
||||
('is_audited', models.BooleanField(default=False, verbose_name='是否审核')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='puorder_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='puorder_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||
('vendor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pum.vendor', verbose_name='供应商')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '采购订单',
|
||||
'verbose_name_plural': '采购订单',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PuOrderItem',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('count', models.PositiveIntegerField(default=0, verbose_name='所需数量')),
|
||||
('delivered_count', models.PositiveIntegerField(default=0, verbose_name='已到货数量')),
|
||||
('delivery_date', models.DateField(verbose_name='截止到货日期')),
|
||||
('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mtm.material', verbose_name='采购材料')),
|
||||
('pu_order', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='item_pu_order', to='pum.puorder', verbose_name='关联采购订单')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -31,12 +31,18 @@ class PuOrder(CommonAModel):
|
|||
"""
|
||||
number = models.CharField('订单编号', max_length=100, unique=True)
|
||||
vendor = models.ForeignKey(Vendor, verbose_name='供应商', on_delete=models.CASCADE)
|
||||
is_audited = models.BooleanField('是否审核', default=False)
|
||||
class Meta:
|
||||
verbose_name = '采购订单'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
class PuOrderItem(CommonAModel):
|
||||
class PuOrderItem(BaseModel):
|
||||
"""
|
||||
采购订单具体项目
|
||||
采购具体项目
|
||||
"""
|
||||
pass
|
||||
material = models.ForeignKey(Material, verbose_name='采购材料', on_delete=models.CASCADE)
|
||||
count = models.PositiveIntegerField('所需数量', default=0)
|
||||
delivered_count = models.PositiveIntegerField('已到货数量', default=0)
|
||||
delivery_date = models.DateField('截止到货日期')
|
||||
pu_order = models.ForeignKey(PuOrder, verbose_name='关联采购订单',
|
||||
on_delete=models.CASCADE, null=True, blank=True, related_name='item_pu_order')
|
|
@ -1,9 +1,31 @@
|
|||
from rest_framework.serializers import ModelSerializer
|
||||
|
||||
from .models import Vendor
|
||||
from apps.mtm.serializers import MaterialSimpleSerializer
|
||||
from .models import PuOrder, PuOrderItem, Vendor
|
||||
|
||||
|
||||
class VendorSerializer(ModelSerializer):
|
||||
class Meta:
|
||||
model = Vendor
|
||||
fields = '__all__'
|
||||
|
||||
class VendorSimpleSerializer(ModelSerializer):
|
||||
class Meta:
|
||||
model = Vendor
|
||||
fields = ['id', 'name']
|
||||
|
||||
class PuOrderItemSerializer(ModelSerializer):
|
||||
material_ = MaterialSimpleSerializer(source='material', read_only=True)
|
||||
class Meta:
|
||||
model = PuOrderItem
|
||||
fields = '__all__'
|
||||
|
||||
class PuOrderSerializer(ModelSerializer):
|
||||
vendor_ = VendorSimpleSerializer(source='vendor', read_only=True)
|
||||
items = PuOrderItemSerializer(source='item_pu_order', many=True, read_only=True)
|
||||
class Meta:
|
||||
model = PuOrder
|
||||
fields = '__all__'
|
||||
|
||||
class PuOrderCreateUpdateSerializer(ModelSerializer):
|
||||
class Meta:
|
||||
fields = ['number', 'vendor']
|
|
@ -1,8 +1,10 @@
|
|||
|
||||
from django.shortcuts import render
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
|
||||
from apps.pum.models import Vendor
|
||||
from apps.pum.serializers import VendorSerializer
|
||||
from rest_framework.mixins import CreateModelMixin, DestroyModelMixin
|
||||
from rest_framework.viewsets import GenericViewSet
|
||||
from apps.pum.models import PuOrder, Vendor
|
||||
from apps.pum.serializers import PuOrderCreateUpdateSerializer, PuOrderSerializer, VendorSerializer
|
||||
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
||||
|
||||
|
||||
|
@ -19,3 +21,27 @@ class VendorViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
|||
filterset_fields = []
|
||||
ordering_fields = ['create_time']
|
||||
ordering = ['-create_time']
|
||||
|
||||
|
||||
class PuOrderViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||
"""
|
||||
采购订单-增删改查
|
||||
"""
|
||||
perms_map = {'get': '*', 'post': '*',
|
||||
'put': '*', 'delete': '*'}
|
||||
queryset = PuOrder.objects.select_related('vendor').\
|
||||
prefetch_related('item_pu_order').all()
|
||||
serializer_class = PuOrderSerializer
|
||||
search_fields = ['number', 'vendor__name']
|
||||
filterset_fields = ['vendor']
|
||||
ordering = ['-create_time']
|
||||
|
||||
def get_serializer_class(self):
|
||||
if self.action in ['create', 'update']:
|
||||
return PuOrderCreateUpdateSerializer
|
||||
return super().get_serializer_class()
|
||||
|
||||
|
||||
|
||||
class PuOrderItemViewSet(CreateModelMixin, DestroyModelMixin, GenericViewSet):
|
||||
pass
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.9 on 2022-01-27 07:47
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('sam', '0011_order_need_mtest'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='order',
|
||||
name='delivery_date',
|
||||
field=models.DateField(verbose_name='截止交货日期'),
|
||||
),
|
||||
]
|
Loading…
Reference in New Issue