forked from erp-dev/erp
feat: payment order and receipt order
This commit is contained in:
@@ -316,3 +316,107 @@ class SalesOrderItem(ModelBase):
|
||||
|
||||
def total_amount(self):
|
||||
return round(self.price * self.real_quantity(), 2)
|
||||
|
||||
|
||||
class PaymentOrderStatusEnum(models.IntegerChoices):
|
||||
PENDING = 1, '审批中'
|
||||
APPROVED = 2, '审批通过'
|
||||
CANCELLED = 3, '作废'
|
||||
|
||||
|
||||
class PaymentOrder(OrderDirectionMixin, OrderCounterpartyMixin, ModelBase):
|
||||
id = models.BigAutoField(primary_key=True)
|
||||
merchant = models.ForeignKey(
|
||||
basic_info_models.Merchant,
|
||||
on_delete=models.PROTECT,
|
||||
related_name='payment_orders',
|
||||
verbose_name='所属商户',
|
||||
)
|
||||
supplier = models.ForeignKey(
|
||||
basic_info_models.Supplier,
|
||||
on_delete=models.PROTECT,
|
||||
related_name='payment_orders',
|
||||
verbose_name='供应商',
|
||||
)
|
||||
payment_date = models.DateField(verbose_name='付款日期')
|
||||
amount = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='金额')
|
||||
operator = models.ForeignKey(
|
||||
basic_info_models.Employee,
|
||||
on_delete=models.PROTECT,
|
||||
related_name='payment_orders',
|
||||
verbose_name='经办人',
|
||||
)
|
||||
status = models.IntegerField(
|
||||
choices=PaymentOrderStatusEnum.choices,
|
||||
default=PaymentOrderStatusEnum.PENDING,
|
||||
verbose_name='状态',
|
||||
)
|
||||
remarks = models.TextField(blank=True, null=True, verbose_name='备注')
|
||||
|
||||
class Meta:
|
||||
verbose_name = '付款单'
|
||||
verbose_name_plural = '付款单'
|
||||
|
||||
def __str__(self):
|
||||
return f'付款单 {self.id} - {self.supplier.name}'
|
||||
|
||||
def get_total_amount(self) -> Decimal:
|
||||
return self.amount
|
||||
|
||||
def get_direction(self) -> int:
|
||||
return -1
|
||||
|
||||
def get_counterparty_field_name(self) -> str:
|
||||
return 'supplier'
|
||||
|
||||
|
||||
class ReceiptOrderStatusEnum(models.IntegerChoices):
|
||||
PENDING = 1, '审批中'
|
||||
APPROVED = 2, '审批通过'
|
||||
CANCELLED = 3, '作废'
|
||||
|
||||
|
||||
class ReceiptOrder(OrderDirectionMixin, OrderCounterpartyMixin, ModelBase):
|
||||
id = models.BigAutoField(primary_key=True)
|
||||
merchant = models.ForeignKey(
|
||||
basic_info_models.Merchant,
|
||||
on_delete=models.PROTECT,
|
||||
related_name='receipt_orders',
|
||||
verbose_name='所属商户',
|
||||
)
|
||||
customer = models.ForeignKey(
|
||||
basic_info_models.Customer,
|
||||
on_delete=models.PROTECT,
|
||||
related_name='receipt_orders',
|
||||
verbose_name='客户',
|
||||
)
|
||||
receipt_date = models.DateField(verbose_name='收款日期')
|
||||
amount = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='金额')
|
||||
operator = models.ForeignKey(
|
||||
basic_info_models.Employee,
|
||||
on_delete=models.PROTECT,
|
||||
related_name='receipt_orders',
|
||||
verbose_name='经办人',
|
||||
)
|
||||
status = models.IntegerField(
|
||||
choices=ReceiptOrderStatusEnum.choices,
|
||||
default=ReceiptOrderStatusEnum.PENDING,
|
||||
verbose_name='状态',
|
||||
)
|
||||
remarks = models.TextField(blank=True, null=True, verbose_name='备注')
|
||||
|
||||
class Meta:
|
||||
verbose_name = '收款单'
|
||||
verbose_name_plural = '收款单'
|
||||
|
||||
def __str__(self):
|
||||
return f'收款单 {self.id} - {self.customer.name}'
|
||||
|
||||
def get_total_amount(self) -> Decimal:
|
||||
return self.amount
|
||||
|
||||
def get_direction(self) -> int:
|
||||
return -1
|
||||
|
||||
def get_counterparty_field_name(self) -> str:
|
||||
return 'customer'
|
||||
|
||||
Reference in New Issue
Block a user