diff --git a/apps/sam/migrations/0002_auto_20230921_1018.py b/apps/sam/migrations/0002_auto_20230921_1018.py new file mode 100644 index 00000000..d465c849 --- /dev/null +++ b/apps/sam/migrations/0002_auto_20230921_1018.py @@ -0,0 +1,33 @@ +# Generated by Django 3.2.12 on 2023-09-21 02:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sam', '0001_initial'), + ] + + operations = [ + migrations.RenameField( + model_name='orderitem', + old_name='count_deliverd', + new_name='delivered_count', + ), + migrations.RenameField( + model_name='orderitem', + old_name='product', + new_name='material', + ), + migrations.AddField( + model_name='order', + name='submit_time', + field=models.DateTimeField(blank=True, null=True, verbose_name='提交时间'), + ), + migrations.AlterField( + model_name='order', + name='state', + field=models.PositiveSmallIntegerField(choices=[(10, '创建中'), (20, '已提交'), (30, '已排产'), (40, '已交付')], default=10, help_text="((10, '创建中'), (20, '已提交'), (30, '已排产'), (40, '已交付'))", verbose_name='订单状态'), + ), + ] diff --git a/apps/sam/models.py b/apps/sam/models.py index 5a1ebf35..01fa97a4 100644 --- a/apps/sam/models.py +++ b/apps/sam/models.py @@ -71,8 +71,8 @@ class OrderItem(BaseModel): 订单明细 """ order = models.ForeignKey(Order, verbose_name='关联订单', on_delete=models.CASCADE) - product = models.ForeignKey(Material, verbose_name='所需产品', on_delete=models.CASCADE) + material = models.ForeignKey(Material, verbose_name='所需产品', on_delete=models.CASCADE) count = models.PositiveIntegerField('所需数量', default=1) - count_deliverd = models.PositiveIntegerField('已交货数量', default=0) + delivered_count = models.PositiveIntegerField('已交货数量', default=0) \ No newline at end of file diff --git a/apps/sam/serializers.py b/apps/sam/serializers.py index 30953f51..716d9c5e 100644 --- a/apps/sam/serializers.py +++ b/apps/sam/serializers.py @@ -39,12 +39,12 @@ class OrderSerializer(CustomModelSerializer): return super().update(instance, validated_data) class OrderItemSerializer(CustomModelSerializer): - product_ = MaterialSerializer(source='product', read_only=True) + material_ = MaterialSerializer(source='material', read_only=True) order_ = OrderSerializer(source='order', read_only=True) class Meta: model = OrderItem fields = '__all__' - read_only_fields = EXCLUDE_FIELDS_BASE + ['count_deliverd'] + read_only_fields = EXCLUDE_FIELDS_BASE + ['delivered_count'] def validate(self, attrs): order = attrs['order'] @@ -54,8 +54,8 @@ class OrderItemSerializer(CustomModelSerializer): def create(self, validated_data): order = validated_data['order'] - product = validated_data['product'] - if OrderItem.objects.filter(order=order, product=product).exists(): + material = validated_data['material'] + if OrderItem.objects.filter(order=order, material=material).exists(): raise ValidationError('该产品已选择!') return super().create(validated_data) diff --git a/apps/sam/services.py b/apps/sam/services.py new file mode 100644 index 00000000..7625e6d4 --- /dev/null +++ b/apps/sam/services.py @@ -0,0 +1,14 @@ +from apps.sam.models import Order, OrderItem +from rest_framework.exceptions import ValidationError +from django.db.models import F +from apps.inm.models import MIO, MIOItem + +class SamService: + + def mio_saleout(mio: MIO): + """ + 销售出库成功后的操作 + """ + order = mio.order + for i in MIOItem.objects.filter(mio=mio): + orderitem = OrderItem.objects.get(order=order, product=i.material) \ No newline at end of file diff --git a/apps/sam/views.py b/apps/sam/views.py index bbfb8090..f0c61081 100644 --- a/apps/sam/views.py +++ b/apps/sam/views.py @@ -36,7 +36,7 @@ class ContractViewSet(CustomModelViewSet): 合同信息 """ - querset = Contract.objects.all() + queryset = Contract.objects.all() serializer_class = ContractSerializer select_related_fields = ['customer'] search_fields = ['name', 'number'] @@ -85,8 +85,8 @@ class OrderItemViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, Cust """ queryset = OrderItem.objects.all() serializer_class = OrderItemSerializer - select_related_fields = ['order', 'product'] - filterset_fields = ['order', 'product'] + select_related_fields = ['order', 'material'] + filterset_fields = ['order', 'material'] ordering = ['create_time']