mirror of
https://github.com/himool/HimoolERP.git
synced 2024-11-16 04:15:51 +08:00
145 lines
7.4 KiB
Python
145 lines
7.4 KiB
Python
from extensions.models import *
|
|
|
|
|
|
class PaymentOrder(Model):
|
|
"""付款单据"""
|
|
|
|
number = CharField(max_length=32, verbose_name='编号')
|
|
supplier = ForeignKey('data.Supplier', on_delete=PROTECT, related_name='payment_orders', verbose_name='供应商')
|
|
handler = ForeignKey('system.User', on_delete=PROTECT, related_name='payment_orders', verbose_name='经手人')
|
|
handle_time = DateTimeField(verbose_name='处理时间')
|
|
remark = CharField(max_length=256, null=True, blank=True, verbose_name='备注')
|
|
total_amount = AmountField(null=True, verbose_name='总金额')
|
|
discount_amount = AmountField(default=0, verbose_name='优惠金额')
|
|
is_void = BooleanField(default=False, verbose_name='作废状态')
|
|
creator = ForeignKey('system.User', on_delete=PROTECT,
|
|
related_name='created_payment_orders', verbose_name='创建人')
|
|
create_time = DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
|
team = ForeignKey('system.Team', on_delete=CASCADE, related_name='payment_orders')
|
|
|
|
class Meta:
|
|
unique_together = [('number', 'team')]
|
|
|
|
@classmethod
|
|
def get_number(cls, team):
|
|
start_date, end_date = pendulum.now(), pendulum.tomorrow()
|
|
instance = cls.objects.filter(team=team, create_time__gte=start_date, create_time__lt=end_date).last()
|
|
|
|
try:
|
|
result = re.match('^(.*?)([1-9]+)$', instance.number)
|
|
number = result.group(1) + str(int(result.group(2)) + 1)
|
|
except AttributeError:
|
|
number = 'FK' + start_date.format('YYYYMMDD') + '0001'
|
|
|
|
return number
|
|
|
|
|
|
class PaymentAccount(Model):
|
|
"""付款账户"""
|
|
|
|
payment_order = ForeignKey('finance.PaymentOrder', on_delete=CASCADE,
|
|
related_name='payment_accounts', verbose_name='付款单据')
|
|
account = ForeignKey('data.Account', on_delete=PROTECT, related_name='payment_accounts', verbose_name='结算账户')
|
|
payment_amount = AmountField(verbose_name='付款金额')
|
|
is_void = BooleanField(default=False, verbose_name='作废状态')
|
|
team = ForeignKey('system.Team', on_delete=CASCADE, related_name='payment_accounts')
|
|
|
|
class Meta:
|
|
unique_together = [('payment_order', 'account')]
|
|
|
|
|
|
class CollectionOrder(Model):
|
|
"""收款单据"""
|
|
|
|
number = CharField(max_length=32, verbose_name='编号')
|
|
client = ForeignKey('data.Client', on_delete=PROTECT, related_name='collection_orders', verbose_name='客户')
|
|
handler = ForeignKey('system.User', on_delete=PROTECT, related_name='collection_orders', verbose_name='经手人')
|
|
handle_time = DateTimeField(verbose_name='处理时间')
|
|
remark = CharField(max_length=256, null=True, blank=True, verbose_name='备注')
|
|
total_amount = AmountField(null=True, verbose_name='总金额')
|
|
discount_amount = AmountField(default=0, verbose_name='优惠金额')
|
|
collection_amount = AmountField(null=True, verbose_name='实收金额')
|
|
is_void = BooleanField(default=False, verbose_name='作废状态')
|
|
creator = ForeignKey('system.User', on_delete=PROTECT,
|
|
related_name='created_collection_orders', verbose_name='创建人')
|
|
create_time = DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
|
team = ForeignKey('system.Team', on_delete=CASCADE, related_name='collection_orders')
|
|
|
|
class Meta:
|
|
unique_together = [('number', 'team')]
|
|
|
|
|
|
class CollectionAccount(Model):
|
|
"""收款账户"""
|
|
|
|
collection_order = ForeignKey('finance.CollectionOrder', on_delete=CASCADE,
|
|
related_name='collection_accounts', verbose_name='收款单据')
|
|
account = ForeignKey('data.Account', on_delete=PROTECT, related_name='collection_accounts', verbose_name='结算账户')
|
|
collection_amount = AmountField(verbose_name='付款金额')
|
|
is_void = BooleanField(default=False, verbose_name='作废状态')
|
|
team = ForeignKey('system.Team', on_delete=CASCADE, related_name='collection_accounts')
|
|
|
|
class Meta:
|
|
unique_together = [('collection_order', 'account')]
|
|
|
|
|
|
class ChargeOrder(Model):
|
|
"""收支单据"""
|
|
|
|
number = CharField(max_length=32, verbose_name='编号')
|
|
client = ForeignKey('data.Client', on_delete=PROTECT, null=True,
|
|
related_name='charge_orders', verbose_name='客户')
|
|
supplier = ForeignKey('data.Supplier', on_delete=PROTECT, null=True,
|
|
related_name='charge_orders', verbose_name='供应商')
|
|
handler = ForeignKey('system.User', on_delete=PROTECT, related_name='charge_orders', verbose_name='经手人')
|
|
handle_time = DateTimeField(verbose_name='处理时间')
|
|
charge_item = ForeignKey('data.ChargeItem', on_delete=SET_NULL, null=True,
|
|
related_name='charge_orders', verbose_name='收支项目')
|
|
charge_item_name = CharField(max_length=64, verbose_name='收支项目名称')
|
|
account = ForeignKey('data.Account', on_delete=PROTECT, related_name='charge_orders', verbose_name='结算账户')
|
|
charge_amount = AmountField(verbose_name='收支金额')
|
|
remark = CharField(max_length=256, null=True, blank=True, verbose_name='备注')
|
|
is_void = BooleanField(default=False, verbose_name='作废状态')
|
|
creator = ForeignKey('system.User', on_delete=PROTECT,
|
|
related_name='created_charge_orders', verbose_name='创建人')
|
|
create_time = DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
|
team = ForeignKey('system.Team', on_delete=CASCADE, related_name='charge_orders')
|
|
|
|
class Meta:
|
|
unique_together = [('number', 'team')]
|
|
|
|
|
|
class AccountTransferRecord(Model):
|
|
"""结算账户转账记录"""
|
|
|
|
class ServiceChargePayer(TextChoices):
|
|
"""手续费支付方"""
|
|
|
|
TRANSFER_IN = ('transfer_in', '转入方')
|
|
TRANSFER_OUT = ('transfer_out', '转出方')
|
|
|
|
transfer_out_account = ForeignKey('data.Account', on_delete=PROTECT,
|
|
related_name='out_account_transfer_records', verbose_name='转出结算账户')
|
|
transfer_out_time = DateTimeField(verbose_name='转出时间')
|
|
transfer_in_account = ForeignKey('data.Account', on_delete=PROTECT,
|
|
related_name='in_account_transfer_records', verbose_name='转入结算账户')
|
|
transfer_in_time = DateTimeField(verbose_name='转入时间')
|
|
transfer_amount = AmountField(verbose_name='转账金额')
|
|
service_charge_amount = AmountField(verbose_name='手续费金额')
|
|
service_charge_payer = CharField(max_length=32, choices=ServiceChargePayer.choices,
|
|
null=True, verbose_name='手续费支付方')
|
|
handler = ForeignKey('system.User', on_delete=PROTECT, related_name='account_transfer_records', verbose_name='经手人')
|
|
handle_time = DateTimeField(verbose_name='处理时间')
|
|
remark = CharField(max_length=256, null=True, blank=True, verbose_name='备注')
|
|
is_void = BooleanField(default=False, verbose_name='作废状态')
|
|
creator = ForeignKey('system.User', on_delete=PROTECT,
|
|
related_name='created_account_transfer_records', verbose_name='创建人')
|
|
create_time = DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
|
team = ForeignKey('system.Team', on_delete=CASCADE, related_name='account_transfer_records')
|
|
|
|
|
|
__all__ = [
|
|
'PaymentOrder', 'PaymentAccount',
|
|
'CollectionOrder', 'CollectionAccount',
|
|
'ChargeOrder', 'AccountTransferRecord',
|
|
]
|