12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- from django.db import models
- from django.utils.translation import gettext_lazy as _
- from userprofile.models import Users
- class InvoiceHeader(models.Model):
- """单位抬头信息表"""
- name = models.CharField(max_length=100, verbose_name="单位名称")
- tax_id = models.BigIntegerField(unique=True, verbose_name="纳税人识别号")
- address = models.CharField(max_length=200,null=True, blank=True, verbose_name="地址")
- bank = models.CharField(max_length=100,null=True, blank=True, verbose_name="开户银行")
- account = models.CharField(max_length=50,null=True, blank=True, verbose_name="银行账号")
- create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
- update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
- is_delete = models.BooleanField(default=False, verbose_name="删除标记")
- class Meta:
- db_table = 'invoice_header'
- verbose_name = '发票抬头信息'
- verbose_name_plural = '发票抬头信息'
- ordering = ['name']
- def __str__(self):
- return f"{self.name} ({self.tax_id})"
- class InvoiceRecord(models.Model):
- """发票申报记录表"""
- header = models.ForeignKey(
- InvoiceHeader, on_delete=models.CASCADE,
- related_name='invoices', verbose_name="单位抬头"
- )
- amount = models.DecimalField(max_digits=12, decimal_places=2, verbose_name="金额")
- date = models.DateField(verbose_name="时间")
- purpose = models.CharField(max_length=100, verbose_name="用途")
- teacher = models.ForeignKey(
- Users, related_name='teacher_invoices', on_delete=models.SET_NULL, null=True, verbose_name="归属老师"
- )
- project = models.CharField(max_length=100, verbose_name="归属项目")
- actual_paid = models.DecimalField(max_digits=12, decimal_places=2, verbose_name="实付金额")
- is_reported = models.BooleanField(default=False, verbose_name="是否申报")
- invoice_attachment = models.FileField(
- upload_to='invoices/', blank=True, null=True, verbose_name="发票附件"
- )
- payment_attachment = models.FileField(
- upload_to='payments/', blank=True, null=True, verbose_name="支付附件"
- )
- class ApprovalStatus(models.TextChoices):
- PENDING = 'P', _('待审批')
- APPROVED = 'A', _('已通过')
- REJECTED = 'R', _('已拒绝')
- status = models.CharField(
- max_length=1, choices=ApprovalStatus.choices,
- default=ApprovalStatus.PENDING, verbose_name="审批状态"
- )
- create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
- update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
- class Meta:
- db_table = 'invoice_record'
- verbose_name = '发票记录'
- verbose_name_plural = '发票记录'
- ordering = ['-date']
- def __str__(self):
- return f"Invoice #{self.id} - {self.header.name}"
|