from django.db import models from django.contrib.auth.models import User from django.utils import timezone #Base de varias tabelas class Base(models.Model): active = models.BooleanField(default=False) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) created_by = models.ForeignKey(User, related_name='%(class)s_created', on_delete=models.SET_NULL, null=True) updated_by = models.ForeignKey(User, related_name='%(class)s_updated', on_delete=models.SET_NULL, null=True) class Meta: abstract = True # Lista de Profissinal class Professional(models.Model): name = models.CharField(max_length=100, unique=True ) percentage = models.DecimalField(max_digits=3, decimal_places=0) symbol = models.CharField(max_length=2, unique=True) user= models.ForeignKey( User, related_name='ProfessionalUser', on_delete=models.SET_NULL, null=True, blank=True ) class Meta: ordering = ['name'] def __str__(self): return f'{ self.name } { self.symbol }' # Lista de Bancos class BankAccount(models.Model): name = models.CharField(max_length=50) description = models.TextField(null=True, blank=True) class Meta: ordering = ['name'] def __str__(self): return self.name # Lista de serviços class ServiceList(models.Model): name = models.CharField(max_length=50) value = models.DecimalField(max_digits=6, decimal_places=2) description = models.TextField(null=True, blank=True) class Meta: ordering = ['name'] def __str__(self): return self.name # Lista de Produtos class ProductList(models.Model): name = models.CharField(max_length=50) value = models.DecimalField(max_digits=6, decimal_places=2) description = models.TextField(null=True, blank=True) class Meta: ordering = ['name'] def __str__(self): return f'{ self.name } - { self.value }' # Lista de Contas class ChartOfAccount(models.Model): name = models.CharField(max_length=100) debit = models.BooleanField(default=True) firm = models.BooleanField(default=True) notes = models.TextField(null=True, blank=True) class Meta: ordering = ['name'] def __str__(self): return self.name # metodos de pagamentos class PayMethod(models.Model): name = models.CharField(max_length=100) bank = models.ForeignKey( BankAccount, on_delete=models.PROTECT, related_name='PaymentMethodBank', ) percentage = models.DecimalField(max_digits=3, decimal_places=0) description = models.TextField(null=True, blank=True) class Meta: ordering = ['bank','name',] def __str__(self): return f'{ self.bank } - { self.name }'