Files
Horux_back/docs/MODELS.md
consultoria-as 61320b44d8 Initial commit: Horux Backend API
- API REST para gestion de facturas electronicas mexicanas (CFDI)
- Laravel 9 con autenticacion OAuth 2.0 (Passport)
- Integracion con Syntage, Clerk y Facturama
- 30 modelos Eloquent, 39 controladores
- Documentacion completa en /docs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 07:44:29 +00:00

10 KiB

Modelos y Base de Datos - Horux Backend

Documentacion de los modelos Eloquent y estructura de la base de datos.

Diagrama de Relaciones

┌─────────────┐       ┌─────────────┐       ┌─────────────┐
│    User     │◄─────►│     Rfc     │◄─────►│   Invoice   │
└─────────────┘  M:N  └─────────────┘  1:N  └─────────────┘
      │                      │                     │
      │ 1:N                  │ 1:N                 │ 1:N
      ▼                      ▼                     ▼
┌─────────────────┐   ┌─────────────┐      ┌─────────────┐
│LinkedSocialAcct │   │  Taxpayer   │      │ InvoiceLine │
└─────────────────┘   └─────────────┘      └─────────────┘
                            │
                            │ M:N
                            ▼
                     ┌─────────────┐      ┌─────────────────┐
                     │  TaxRegime  │      │ InvoicePayment  │
                     └─────────────┘      └─────────────────┘

Modelos Principales

User

Usuario del sistema.

Tabla: users

Campo Tipo Descripcion
id bigint ID primario
name string Nombre del usuario
email string Correo electronico
email_verified_at timestamp Fecha verificacion
password string Contrasena hasheada
remember_token string Token de sesion
created_at timestamp Fecha creacion
updated_at timestamp Fecha actualizacion

Relaciones:

  • rfcs() - BelongsToMany con Rfc
  • linkedSocialAccounts() - HasMany con LinkedSocialAccount

Rfc

RFC (Registro Federal de Contribuyentes) asociado a usuarios.

Tabla: rfcs

Campo Tipo Descripcion
id bigint ID primario
rfc string(13) RFC del contribuyente
razon_social string Razon social
created_at timestamp Fecha creacion
updated_at timestamp Fecha actualizacion

Relaciones:

  • users() - BelongsToMany con User
  • invoices() - HasMany con Invoice
  • taxpayers() - HasMany con Taxpayer

Invoice

Factura electronica (CFDI).

Tabla: invoices

Campo Tipo Descripcion
id bigint ID primario
uuid string(36) UUID unico del CFDI
serie string Serie de la factura
folio string Folio de la factura
fecha datetime Fecha de emision
subtotal decimal(18,2) Subtotal
descuento decimal(18,2) Descuento aplicado
total decimal(18,2) Total de la factura
moneda string(3) Codigo de moneda
tipo_cambio decimal(10,4) Tipo de cambio
emisor_rfc string(13) RFC del emisor
emisor_nombre string Nombre del emisor
receptor_rfc string(13) RFC del receptor
receptor_nombre string Nombre del receptor
tipo_comprobante string(1) Tipo (I, E, T, N, P)
metodo_pago string(3) Metodo de pago
forma_pago string(2) Forma de pago
uso_cfdi string(4) Uso del CFDI
iva_trasladado decimal(18,2) IVA trasladado
iva_retenido decimal(18,2) IVA retenido
isr_retenido decimal(18,2) ISR retenido
rfc_id bigint FK a rfcs
conciliado boolean Estado de conciliacion
created_at timestamp Fecha creacion
updated_at timestamp Fecha actualizacion

Relaciones:

  • rfc() - BelongsTo con Rfc
  • lines() - HasMany con InvoiceLine
  • payments() - HasMany con InvoicePayment
  • invoiceType() - BelongsTo con InvoiceType
  • conciliations() - HasMany con Conciliation

InvoiceLine

Linea/concepto de una factura.

Tabla: invoice_lines

Campo Tipo Descripcion
id bigint ID primario
invoice_id bigint FK a invoices
clave_prod_serv string(8) Codigo SAT producto/servicio
clave_unidad string(6) Codigo SAT unidad
descripcion text Descripcion del concepto
cantidad decimal(18,6) Cantidad
valor_unitario decimal(18,6) Valor unitario
importe decimal(18,2) Importe
descuento decimal(18,2) Descuento
created_at timestamp Fecha creacion
updated_at timestamp Fecha actualizacion

Relaciones:

  • invoice() - BelongsTo con Invoice
  • prodServCode() - BelongsTo con ProdServCode
  • unitCode() - BelongsTo con UnitCode

InvoicePayment

Pago de factura (complemento de pago PPD).

Tabla: invoice_payments

Campo Tipo Descripcion
id bigint ID primario
invoice_id bigint FK a invoice (CFDI de pago)
doc_relacionado_uuid string(36) UUID factura pagada
fecha_pago datetime Fecha del pago
monto decimal(18,2) Monto pagado
num_parcialidad integer Numero de parcialidad
imp_saldo_ant decimal(18,2) Saldo anterior
imp_pagado decimal(18,2) Importe pagado
imp_saldo_insoluto decimal(18,2) Saldo insoluto
created_at timestamp Fecha creacion
updated_at timestamp Fecha actualizacion

Relaciones:

  • invoice() - BelongsTo con Invoice

Taxpayer

Informacion del contribuyente.

Tabla: taxpayers

Campo Tipo Descripcion
id bigint ID primario
rfc_id bigint FK a rfcs
nombre string Nombre o razon social
tipo_persona string Fisica o Moral
situacion string Situacion fiscal
fecha_inicio_operaciones date Inicio de operaciones
created_at timestamp Fecha creacion
updated_at timestamp Fecha actualizacion

Relaciones:

  • rfc() - BelongsTo con Rfc
  • taxRegimes() - BelongsToMany con TaxRegime
  • economicActivities() - BelongsToMany con EconomicActivity
  • risks() - BelongsToMany con Risk

LinkedSocialAccount

Cuenta social vinculada al usuario.

Tabla: linked_social_accounts

Campo Tipo Descripcion
id bigint ID primario
user_id bigint FK a users
provider string Proveedor (clerk, google, etc)
provider_id string ID en el proveedor
created_at timestamp Fecha creacion
updated_at timestamp Fecha actualizacion

Relaciones:

  • user() - BelongsTo con User

Modelos de Catalogos

InvoiceType

Tipos de comprobante fiscal.

Codigo Nombre
I Ingreso
E Egreso
T Traslado
N Nomina
P Pago

PaymentMethod

Metodos de pago.

Codigo Nombre
PUE Pago en una sola exhibicion
PPD Pago en parcialidades o diferido

PaymentType

Formas de pago (30+ tipos).

Codigo Nombre
01 Efectivo
02 Cheque nominativo
03 Transferencia electronica
04 Tarjeta de credito
... ...

Currency

Monedas.

Codigo Nombre
MXN Peso Mexicano
USD Dolar Americano
EUR Euro
... ...

TaxRegime

Regimenes fiscales.

Codigo Nombre
601 General de Ley Personas Morales
603 Personas Morales con Fines no Lucrativos
605 Sueldos y Salarios
606 Arrendamiento
612 Personas Fisicas con Actividades Empresariales
621 Incorporacion Fiscal
626 Regimen Simplificado de Confianza
... ...

Tax

Impuestos.

Codigo Nombre
001 ISR
002 IVA
003 IEPS

TaxRate

Tasas de impuestos.

Impuesto Tasa
IVA 0.16 (16%)
IVA 0.08 (8% frontera)
IVA 0.00 (0%)
ISR Variable
IEPS Variable

Status

Estados de factura.

Codigo Nombre
1 Vigente
0 Cancelado

CancellationType

Tipos de cancelacion.

Codigo Nombre
01 Con relacion
02 Sin relacion

EconomicActivity

Actividades economicas.


Industry

Industrias/sectores.


Risk

Riesgos fiscales.


Dimension

Dimensiones de empresa.


Modelos de Codigos SAT

ProdServCode

Catalogo de productos y servicios SAT.

Campo Tipo Descripcion
id bigint ID primario
code string(8) Codigo SAT
description string Descripcion

UnitCode

Catalogo de unidades SAT.

Campo Tipo Descripcion
id bigint ID primario
code string(6) Codigo SAT
name string Nombre de la unidad

PostalCode

Codigos postales.


Modelos Financieros

SalesRevenue

Ingresos por ventas.


Expenditure

Egresos/gastos.


Conciliation

Conciliaciones de facturas.

Campo Tipo Descripcion
id bigint ID primario
invoice_id bigint FK a invoices
fecha_conciliacion datetime Fecha de conciliacion
usuario_id bigint Usuario que concilio
created_at timestamp Fecha creacion
updated_at timestamp Fecha actualizacion

Modelos Auxiliares

ManagerOTP

Gestion de One-Time Passwords.


InvoiceRequest

Solicitudes de facturas.


Usage

Usos de CFDI.


Role

Roles de usuario.


Migraciones

El proyecto incluye 41 migraciones que crean toda la estructura de base de datos. Para ejecutarlas:

# Ejecutar todas las migraciones
php artisan migrate

# Revertir migraciones
php artisan migrate:rollback

# Refrescar base de datos (elimina y recrea)
php artisan migrate:fresh

# Ver estado de migraciones
php artisan migrate:status

Seeders

# Ejecutar todos los seeders
php artisan db:seed

# Ejecutar seeder especifico
php artisan db:seed --class=InvoiceTypeSeeder

Dump de Base de Datos

El archivo horux360bd.sql contiene un dump completo de la base de datos para importar:

mysql -u usuario -p horux360bd < horux360bd.sql