Ir al contenido principal

production.invoices

La documentación siguiente describe la tabla <code>production.invoices</code>, un componente clave de la Plataforma de Datos de la Gestión de Consultas Veterinarias. Esta tabla...

La documentación siguiente describe la

production.invoices, una pieza clave de la Plataforma de Datos de la Gestión de Consultas Veterinarias. Esta tabla proporciona acceso directo a datos de facturación estandarizados, verificados y enriquecidos, lo que le ayuda a acelerar los análisis y los informes financieros.

Referencia detallada de columnas

Identificadores principales

Columna

Tipo

Descripción

Ejemplos

Lógica de negocio

provet_id

STRING

Su identificador único de consulta

"pcus_1"

Clave de aislamiento del tenant: utilícela siempre para el rendimiento

invoice_id

BIGINT

Identificador único de la factura dentro de la consulta

12345, 67890

Generado por el sistema: inmutable una vez creado

invoice_number

STRING

Número de factura comercial que se muestra a los clientes

"1001-2024-00123", "DEPT2-240915-456"

Formato: {department_id}-{date}-{sequence}. NULL hasta que la factura esté finalizada (status=3)

Clasificación de facturas

Columna

Tipo

Descripción

Ejemplos

Lógica de negocio

invoice_type

STRING

Categoría de factura derivada

"consultation", "countersale", "credit_note"

Lógica:CASE WHEN countersale=1 THEN 'Countersale' WHEN credit_note=0 THEN 'Consultation' WHEN credit_note=1 THEN 'Credit Note' ELSE 'Unknown' END

consultation_id

BIGINT

Referencia de consulta relacionada

98765, NULL

Enlaces al registro de consulta. NULL para Venta de mostrador y Factura Rectificativa

invoice_status

STRING

Estado actual de la factura

"pending", "paid", "cancelled"

Mapeo: 0=Borrador, 1=Enviado, 2=Abierto, 3=Finalizado, 4=Facturación, 99=Anulado. Nota: "pending"/"paid"/"cancelled" son términos simplificados de negocio

Información financiera

Columna

Tipo

Descripción

Ejemplos

Lógica de negocio

total_incl_vat

DECIMAL

Importe total con IVA/impuesto

125.50, 89.99

Importe total facturable que incluye todos los impuestos

total_excl_vat

DECIMAL

Importe total sin IVA/impuesto

100.40, 74.99

Importe base antes de los cálculos de impuestos

amount_due

DECIMAL

Saldo pendiente restante

125.50, 0.00, 25.00

Se reduce a medida que se aplican los pagos. 0.00 = totalmente pagado

currency_code

STRING

Código de Moneda ISO 4217

"EUR", "USD", "GBP", "CAD"

Mapeo automático a partir del país del departamento

currency_name

STRING

Nombre completo de la moneda

"Euro", "US Dollar", "British Pound Sterling"

Descripción de moneda legible para humanos

Información de Cliente y Veterinario

Columna

Tipo

Descripción

Ejemplos

Lógica de negocio

client_name

STRING

Nombre de Cliente/pagador

"John Smith", "Pet Insurance Co", "Sarah Johnson"

Desde el campo payer_name en los datos de origen

supervising_veterinarian_name

STRING

Nombre completo del veterinario supervisor

"Dra. Emily Watson", "Michael Chen DVM", NULL

Lógica: `first_name

Detalles del método de pago

Columna

Tipo

Descripción

Ejemplos

Lógica de negocio

payment_method_type

STRING

Categoría de pago estandarizada

"Card", "Cash or Check", "Digital Wallet", "Financing"

Lógica de categorización automática: indicador Card → "Card", palabras clave Cash/Check → "Cash or Check", CareCredit/Scratchpay → "Financing", etc.

payment_method_name

STRING

Nombre original del método de pago

"Visa Credit Card", "Cash", "CareCredit"

Nombre sin procesar del sistema de gestión de consultas

payment_method_name_standardized

STRING

Nombre estandarizado del método de pago

"Visa", "Cash", "CareCredit"

Lógica de estandarización: coincidencia de patrones (p. ej., '%visa%' → 'Visa', '%mastercard%' → 'Mastercard')

Información de departamento y ubicación

Columna

Tipo

Descripción

Ejemplos

Lógica de negocio

department_id

BIGINT

Identificador de departamento/consulta

1001, 2005

Enlaces a una ubicación concreta de la clínica

department_name

STRING

Nombre de departamento/clínica

"Main Street Veterinary", "Emergency Clinic Downtown"

Nombre comercial para la ubicación

department_timezone

STRING

Identificador de zona horaria IANA

"America/New_York", "Europe/London", "Australia/Sydney"

Se usa para conversiones de hora locales

Campos de fecha (fechas de negocio)

Columna

Tipo

Descripción

Ejemplos

Lógica de negocio

created_date

DATE

Fecha de creación de la factura

2024-09-15, 2024-08-22

Parte de fecha del timestamp de creación

invoice_date

DATE

Fecha oficial de la factura

2024-09-15, 2024-08-22

Fecha de negocio mostrada en la factura

invoice_due_date

DATE

Fecha de vencimiento del pago

2024-10-15, 2024-09-22

Cuando se espera el pago

invoice_paid_date

DATE

Fecha en la que se recibió el pago

2024-09-20, NULL

NULL para facturas impagadas

Timestamps UTC (horas del sistema)

Columna

Tipo

Descripción

Ejemplos

Lógica de negocio

created_ts_utc

TIMESTAMP

Timestamp de creación (UTC)

2024-09-15 14:30:25.123

Hora de creación del sistema en UTC

invoice_date_ts_utc

TIMESTAMP

Timestamp de la factura (UTC)

2024-09-15 12:00:00.000

Fecha de la factura convertida a UTC

invoice_due_date_ts_utc

TIMESTAMP

Timestamp de vencimiento (UTC)

2024-10-15 23:59:59.000

Fecha de vencimiento convertida a UTC

invoice_paid_date_ts_utc

TIMESTAMP

Timestamp de pago (UTC)

2024-09-20 16:45:30.456, NULL

Hora de recepción del pago en UTC

Timestamps locales (zona horaria del departamento)

Columna

Tipo

Descripción

Ejemplos

Lógica de negocio

created_ts_local

TIMESTAMP

Timestamp de creación (local)

2024-09-15 10:30:25.123

invoice_date_ts_local

TIMESTAMP

Timestamp de la factura (local)

2024-09-15 08:00:00.000

invoice_due_date_ts_local

TIMESTAMP

Timestamp de vencimiento (local)

2024-10-15 19:59:59.000

invoice_paid_date_ts_local

TIMESTAMP

Timestamp de pago (local)

2024-09-20 12:45:30.456, NULL

Patrones de consulta habituales

Análisis de ingresos

-- Ingresos mensuales por método de pagoSELECT     DATE_TRUNC('month', invoice_date) as month,    payment_method_type,    COUNT(*) as invoice_count,    SUM(total_incl_vat) as revenue,    currency_codeFROM production.invoices WHERE provet_id = 'your_practice_id'    AND invoice_status IN ('paid', 'finalized')    AND invoice_date >= '2024-01-01'GROUP BY 1, 2, 5ORDER BY 1 DESC, 4 DESC;

Cobros pendientes

-- Análisis de antigüedad de facturas impagadasSELECT     CASE         WHEN DATEDIFF(CURRENT_DATE(), invoice_due_date) <= 0 THEN 'Current'        WHEN DATEDIFF(CURRENT_DATE(), invoice_due_date) <= 30 THEN '1-30 days'        WHEN DATEDIFF(CURRENT_DATE(), invoice_due_date) <= 60 THEN '31-60 days'        ELSE 'Over 60 days'    END as aging_bucket,    COUNT(*) as invoice_count,    SUM(amount_due) as total_outstanding,    currency_codeFROM production.invoicesWHERE provet_id = 'your_practice_id'    AND amount_due > 0GROUP BY 1, 4ORDER BY 1;

Rendimiento del veterinario

-- Veterinarios con mejores resultados por ingresos de consultaSELECT     supervising_veterinarian_name,    COUNT(DISTINCT invoice_id) as consultations,    SUM(total_incl_vat) as total_revenue,    AVG(total_incl_vat) as avg_consultation_value,    currency_codeFROM production.invoicesWHERE provet_id = 'your_practice_id'    AND invoice_type = 'consultation'    AND supervising_veterinarian_name IS NOT NULL    AND invoice_date >= DATE_SUB(CURRENT_DATE(), 30)GROUP BY 1, 5ORDER BY 3 DESC;

Notas importantes de uso

Gestión de varias monedas

Incluya siempre currency_code al agregar datos financieros entre departamentos:

-- CORRECTO: Agrupar por monedaSELECT currency_code, SUM(total_incl_vat) as revenueFROM production.invoices GROUP BY currency_code;-- INCORRECTO: Mezclar monedasSELECT SUM(total_incl_vat) as revenue  -- Puede mezclar EUR + USD + GBPFROM production.invoices;

Buenas prácticas de zona horaria

  • Use campos *_ts_local para informes de negocio y para interfaces de usuario

  • Use campos *_ts_utc para integración del sistema y procesamiento de datos

  • Considere siempre la zona horaria del departamento al interpretar timestamps locales

¿Ha quedado contestada tu pregunta?