from django.db import models from flower.common import ModelBase from basic_info import models as basic_models class PrintingOrder(ModelBase): """PrintingOrder model representing a printing order.""" customer = models.ForeignKey( basic_models.Customer, on_delete=models.PROTECT, related_name='printing_orders', verbose_name='客户', ) fabric = models.CharField(max_length=100, verbose_name='面料') width = models.CharField(max_length=100, verbose_name='幅宽') is_urgent = models.BooleanField(default=False, verbose_name='紧急') area = models.CharField(max_length=100, null=True, blank=True, verbose_name='地区') address = models.CharField(max_length=200, null=True, blank=True, verbose_name='地址') fabric_source = models.CharField(max_length=100, null=True, blank=True, verbose_name='布料来源') is_fabric_received = models.BooleanField(default=False, verbose_name='布料是否已收') craft = models.CharField(max_length=100, null=True, blank=True, verbose_name='工艺') description = models.TextField(blank=True, null=True, verbose_name='订单描述') outgoing_date = models.DateField(null=True, blank=True, verbose_name='出货日期') curve = models.CharField(max_length=100, blank=True, null=True, verbose_name='曲线') new_curve = models.CharField(max_length=100, blank=True, null=True, verbose_name='新加曲线') position = models.TextField(blank=True, null=True, verbose_name='位置') printing_warn = models.TextField(blank=True, null=True, verbose_name='打印注意事项') rolling_warn = models.TextField(blank=True, null=True, verbose_name='滚筒注意事项') production_warn = models.TextField(blank=True, null=True, verbose_name='生产注意事项') is_invalid = models.BooleanField(default=False, verbose_name='是否作废') def __str__(self): return self.human_id class Meta: verbose_name = '印染订单' verbose_name_plural = '印染订单' permissions = [ ('can_invalidate_printingorder', '可以作废印染订单'), ('can_activate_printingorder', '可以恢复印染订单'), ] @property def human_id(self) -> str: return f"{self.created_at.year}{self.created_at.month:02d}{self.created_at.day:02d}{self.id:06d}" class PrintingJob(ModelBase): """PrintingJob model representing a printing job associated with an order.""" printing_order = models.ForeignKey( PrintingOrder, on_delete=models.CASCADE, related_name='printing_jobs', verbose_name='主订单', ) product = models.ForeignKey( basic_models.Product, on_delete=models.PROTECT, related_name='printing_jobs', verbose_name='产品', ) quantity = models.PositiveIntegerField(verbose_name='数量') unit = models.CharField(max_length=50, verbose_name='单位') size = models.CharField(max_length=100, verbose_name='一段尺寸') pieces = models.PositiveIntegerField(verbose_name='件数') description = models.TextField(blank=True, verbose_name='备注') def __str__(self): return self.printing_order.human_id class Meta: verbose_name = '印染款式明细' verbose_name_plural = '印染款式明细'