Flatlogic Bot 4713dc6305 beta
2025-12-16 14:42:48 +00:00

74 lines
2.8 KiB
Python

from django.db import models
class Account(models.Model):
ACCOUNT_TYPE_CHOICES = (
('ASSET', 'Asset'),
('LIABILITY', 'Liability'),
('EQUITY', 'Equity'),
('REVENUE', 'Revenue'),
('EXPENSE', 'Expense'),
)
name = models.CharField(max_length=100)
number = models.CharField(max_length=20, unique=True)
type = models.CharField(max_length=10, choices=ACCOUNT_TYPE_CHOICES)
balance = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
def __str__(self):
return f'{self.number} - {self.name}'
class JournalEntry(models.Model):
date = models.DateField()
description = models.CharField(max_length=255)
def __str__(self):
return f'{self.date} - {self.description}'
class Ledger(models.Model):
journal_entry = models.ForeignKey(JournalEntry, on_delete=models.CASCADE)
account = models.ForeignKey(Account, on_delete=models.CASCADE)
debit = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
credit = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
def __str__(self):
return f'{self.journal_entry} - {self.account}'
class Invoice(models.Model):
customer_name = models.CharField(max_length=255)
invoice_date = models.DateField()
due_date = models.DateField()
total_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
paid = models.BooleanField(default=False)
def __str__(self):
return f'Invoice #{self.id} - {self.customer_name}'
class InvoiceItem(models.Model):
invoice = models.ForeignKey(Invoice, related_name='items', on_delete=models.CASCADE)
description = models.CharField(max_length=255)
quantity = models.PositiveIntegerField(default=1)
unit_price = models.DecimalField(max_digits=15, decimal_places=2)
total = models.DecimalField(max_digits=15, decimal_places=2)
def __str__(self):
return f'{self.description} ({self.quantity} @ {self.unit_price})'
class Bill(models.Model):
vendor_name = models.CharField(max_length=255)
bill_date = models.DateField()
due_date = models.DateField()
total_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
paid = models.BooleanField(default=False)
def __str__(self):
return f'Bill #{self.id} - {self.vendor_name}'
class BillItem(models.Model):
bill = models.ForeignKey(Bill, related_name='items', on_delete=models.CASCADE)
description = models.CharField(max_length=255)
quantity = models.PositiveIntegerField(default=1)
unit_price = models.DecimalField(max_digits=15, decimal_places=2)
total = models.DecimalField(max_digits=15, decimal_places=2)
def __str__(self):
return f'{self.description} ({self.quantity} @ {self.unit_price})'