You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

38 lines
1.6 KiB

from django.db import models
from django.db.models import Q
from finance.models.base import TimestampedModel
class ImportBatch(TimestampedModel):
document_hash = models.CharField(max_length=64)
source_format = models.CharField(max_length=16)
profile = models.CharField(max_length=32)
parser_version = models.CharField(max_length=32, default="1")
encoding = models.CharField(max_length=32)
context = models.JSONField(default=dict)
section_mapping = models.JSONField(default=dict)
summary = models.JSONField(default=dict)
snapshot = models.JSONField(default=dict)
actor_kind = models.CharField(max_length=16)
actor_identifier = models.CharField(max_length=200)
state = models.CharField(max_length=16, default="PREVIEW")
revision = models.PositiveIntegerField(default=1)
result = models.JSONField(default=dict)
class Meta:
constraints = [
models.CheckConstraint(condition=Q(state__in=["PREVIEW", "COMMITTED", "CANCELLED"]), name="import_batch_state"),
models.CheckConstraint(condition=Q(revision__gte=1), name="import_batch_revision"),
]
class ImportItem(TimestampedModel):
batch = models.ForeignKey(ImportBatch, on_delete=models.PROTECT, related_name="items")
locator = models.CharField(max_length=255)
candidate = models.JSONField()
issues = models.JSONField(default=list)
duplicates = models.JSONField(default=dict)
decision = models.JSONField(default=dict)
class Meta:
constraints = [models.UniqueConstraint(fields=["batch", "locator"], name="import_item_locator_unique")]