1
0
forked from erp-dev/erp

feat: added n-to-1 relation between sales_order_item and printing_job model

This commit is contained in:
2025-12-11 18:09:10 +08:00
parent 633031d7cb
commit 1a8c446365
30 changed files with 41736 additions and 40 deletions

View File

@@ -1,6 +1,7 @@
from __future__ import annotations
from decimal import Decimal
from typing import List
from django.db import models
from flower.common import ModelBase
from basic_info import models as basic_info_models
@@ -193,6 +194,11 @@ class PurchaseOrderItem(ModelBase):
def total_amount(self):
return round(self.price * self.real_quantity(), 2)
def split_quantity_of_rolls(self) -> List[int]:
if self.quantity_of_rolls:
return [int(value) for value in self.quantity_of_rolls.split(',') if value.strip()]
return []
class SalesOrderKindEnum(models.IntegerChoices):
"""销售单类型"""
@@ -280,7 +286,7 @@ class SalesOrderItem(ModelBase):
)
printing_job = models.ForeignKey(
'printing.PrintingJob',
on_delete=models.SET_NULL,
on_delete=models.PROTECT,
related_name='sales_order_items',
null=True,
blank=True,
@@ -296,8 +302,7 @@ class SalesOrderItem(ModelBase):
decimal_places=2,
verbose_name='空差百分比',
)
quantity_of_rolls = models.CharField(
max_length=255,
quantity_of_rolls = models.TextField(
null=True,
blank=True,
verbose_name='各条数数量',
@@ -316,6 +321,11 @@ class SalesOrderItem(ModelBase):
verbose_name = '销售单明细'
verbose_name_plural = '销售单明细'
def split_quantity_of_rolls(self) -> List[int]:
if self.quantity_of_rolls:
return [int(value) for value in self.quantity_of_rolls.split(',') if value.strip()]
return []
def real_quantity(self):
return round(self.quantity * (1 - self.empty_diff_percent / 100), 2)
@@ -425,6 +435,11 @@ class PurchaseReturnOrderItem(ModelBase):
verbose_name = '采购退货明细'
verbose_name_plural = '采购退货明细'
def split_quantity_of_rolls(self) -> List[int]:
if self.quantity_of_rolls:
return [int(value) for value in self.quantity_of_rolls.split(',') if value.strip()]
return []
def real_quantity(self):
return round(self.quantity * (1 - self.empty_diff_percent / 100), 2)
@@ -542,6 +557,11 @@ class SalesReturnOrderItem(ModelBase):
def total_amount(self):
return round(self.price * self.real_quantity(), 2)
def split_quantity_of_rolls(self) -> List[int]:
if self.quantity_of_rolls:
return [int(value) for value in self.quantity_of_rolls.split(',') if value.strip()]
return []
class PaymentOrderStatusEnum(models.IntegerChoices):