from django.db import models from decimal import Decimal class flowModel(models.Model): document_date = models.DateField(verbose_name='Document Date', null=True, blank=True) document_number = models.CharField(max_length=20, verbose_name='Document Number', null=True, blank=True) document_type = models.CharField(max_length=20, verbose_name='Document Type', null=True, blank=True) business_type = models.CharField(max_length=20, verbose_name='Business Type', null=True, blank=True) iout_type = models.CharField(max_length=255, verbose_name='IOUT Type', null=True, blank=True) department = models.CharField(max_length=255, verbose_name='Department', null=True, blank=True) warehouse_code = models.CharField(max_length=20, verbose_name='Warehouse Code', null=True, blank=True) warehouse_name = models.CharField(max_length=255, verbose_name='Warehouse Name', null=True, blank=True) goods_code = models.CharField(max_length=255, verbose_name='Goods Code', null=True, blank=True) goods_desc = models.CharField(max_length=255, verbose_name='Goods Description', null=True, blank=True) goods_std = models.CharField(max_length=255, verbose_name='Goods Standard', null=True, blank=True) goods_batch = models.CharField(max_length=255, verbose_name='Goods Batch', null=True, blank=True) in_batch = models.CharField(max_length=255, verbose_name='In Batch', null=True, blank=True) out_batch = models.CharField(max_length=255, verbose_name='Out Batch', null=True, blank=True) goods_unit = models.CharField(max_length=255,default = '件', verbose_name="Goods Unit", null=True, blank=True) goods_in = models.DecimalField(max_digits=10, decimal_places=3, default=Decimal('0'), verbose_name="Goods In",null=True, blank=True) goods_out = models.DecimalField(max_digits=10, decimal_places=3, default=Decimal('0'), verbose_name="Goods Out",null=True, blank=True) goods_notes = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Notes",null=True, blank=True) creator = models.CharField(max_length=255, verbose_name='Creator', null=True, blank=True) class Meta: db_table = 'flowlist' verbose_name = 'Flow List' verbose_name_plural = "Flow List" ordering = ['id'] constraints = [ models.UniqueConstraint( fields=[ 'document_date', 'document_number', 'document_type', 'business_type', 'iout_type', 'department', 'warehouse_code', 'warehouse_name', 'goods_code', 'goods_desc', 'goods_std', 'goods_batch', 'in_batch', 'out_batch', 'goods_in', 'goods_out', 'goods_notes', 'creator' ], name='unique_all_fields' ) ] class GoodsSummaryModel(models.Model): """货品变动汇总模型(按goods_code聚合)""" goods_code = models.CharField(max_length=50, verbose_name='货品编码', primary_key=True) goods_desc = models.CharField(max_length=100, verbose_name='货品描述') total_in = models.DecimalField( max_digits=15, decimal_places=3, default=Decimal('0'), verbose_name='总入库量' ) total_out = models.DecimalField( max_digits=15, decimal_places=3, default=Decimal('0'), verbose_name='总出库量' ) net_change = models.DecimalField( max_digits=15, decimal_places=3, default=Decimal('0'), verbose_name='净变化量' ) last_updated = models.DateTimeField(auto_now=True, verbose_name='最后更新时间') class Meta: db_table = 'goods_summary' verbose_name = '货品汇总' verbose_name_plural = "货品汇总" def __str__(self): return f"{self.goods_code} | 入库:{self.total_in} 出库:{self.total_out}"