Modelos#

Documentación del modelo de datos para Construbot.

Descripción general#

Los modelos de datos de Construbot están organizados en varias aplicaciones:

  • usuarios: Usuario, Empresa, Cliente, NivelAcceso

  • proyectos: Contrato, Contraparte, Sitio, Estimación, Concepto, Retenciones

  • núcleo: Modelos básicos y utilidades

Arquitectura multiinquilino#

Todos los modelos de negocio incluyen:

class BusinessModel(models.Model):
    company = models.ForeignKey(Company, on_delete=models.CASCADE)
    # ... other fields

Consulte Multi-inquilino para obtener más detalles.

Modelos clave#

Modelos de usuario (aplicación de usuarios)#

Cliente - Cuenta de nivel superior

Empresa - Entidad comercial (inquilino)

Usuario: modelo de usuario personalizado con autenticación de correo electrónico

NivelAcceso - Niveles de permiso (1-6)

Consulte users para obtener una referencia completa.

Modelos de Negocio (aplicación de proyectos)#

Contrato - Contrato/Proyecto (jerárquico usando django-treebeard)

Contraparte - Contraparte (Cliente, Subcontratista, Contratista a destajo)

Sitio - Sitio de construcción

Estimado - Pago de progreso/estimado

Concepto: artículo de línea en el catálogo de contratos

Retenciones - Retenciones/retenciones financieras

Ver proyectos para una referencia completa.

Relaciones modelo#

Customer
└── Company
    ├── User (M2M)
    ├── Contrato
    │   ├── Contraparte (FK)
    │   ├── Sitio (FK)
    │   ├── Estimate (reverse FK)
    │   └── Concept (reverse FK)
    ├── Contraparte
    └── Sitio

Patrones comunes#

Consultas específicas de la empresa:

# Always filter by company
contracts = Contrato.objects.filter(company=request.user.active_company)

Operaciones de árbol:

# Hierarchical contracts
children = contract.get_children()
ancestors = contract.get_ancestors()
descendants = contract.get_descendants()

Único por empresa:

class Meta:
    unique_together = ('company', 'folio')

Ver también#