Ir para conteúdo principal

production.invoices

A documentação a seguir descreve a tabela <code>production.invoices</code>, um componente essencial da Veterinary Practice Data Platform. Esta tabela ...

A documentação a seguir descreve a

production.invoices tabela, um componente essencial da Veterinary Practice Data Platform. Esta tabela fornece acesso direto aos dados de faturas padronizados, testados e enriquecidos, ajudando-o a acelerar a análise e o reporte financeiro.

Referência detalhada das colunas

Identificadores principais

Coluna

Tipo

Descrição

Exemplos

Lógica de negócio

provet_id

STRING

O seu identificador único da prática

"pcus_1"

Chave de isolamento do tenant — filtre sempre por isto para obter desempenho

invoice_id

BIGINT

Identificador único da fatura dentro da prática

12345, 67890

Gerado pelo sistema, imutável após a criação

invoice_number

STRING

Número de fatura do negócio exibido aos clientes

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

Formato: {department_id}-{date}-{sequence}. NULL até a fatura estar finalizada (status=3)

Classificação da fatura

Coluna

Tipo

Descrição

Exemplos

Lógica de negócio

invoice_type

STRING

Categoria da fatura 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

Referência relacionada da consulta

98765, NULL

Liga-se ao registo da consulta. NULL para vendas ao balcão e notas de crédito

invoice_status

STRING

Estado atual da fatura

"pending", "paid", "cancelled"

Mapeamento: 0=Rascunho, 1=Enviado, 2=Aberto, 3=Finalizado, 4=Faturação, 99=Anulado. Nota: "pending"/"paid"/"cancelled" são termos de negócio simplificados

Informações financeiras

Coluna

Tipo

Descrição

Exemplos

Lógica de negócio

total_incl_vat

DECIMAL

Montante total incluindo IVA/imposto

125.50, 89.99

Montante final faturável incluindo todos os impostos

total_excl_vat

DECIMAL

Montante total excluindo IVA/imposto

100.40, 74.99

Valor base antes dos cálculos de imposto

amount_due

DECIMAL

Saldo em aberto remanescente

125.50, 0.00, 25.00

Reduz à medida que são aplicados pagamentos. 0.00 = totalmente pago

currency_code

STRING

Código de moeda ISO 4217

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

Mapeado automaticamente a partir do país da clínica

currency_name

STRING

Nome completo da moeda

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

Descrição da moeda legível

Informações do cliente e do veterinário

Coluna

Tipo

Descrição

Exemplos

Lógica de negócio

client_name

STRING

Nome do cliente/pagador

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

A partir do campo payer_name nos dados de origem

supervising_veterinarian_name

STRING

Nome completo do veterinário supervisor

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

Lógica: `first_name

Detalhes do método de pagamento

Coluna

Tipo

Descrição

Exemplos

Lógica de negócio

payment_method_type

STRING

Categoria de pagamento padronizada

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

Lógica de categorização automática: Card flag → "Card", palavras-chave Cash/Check → "Cash or Check", CareCredit/Scratchpay → "Financing", etc.

payment_method_name

STRING

Nome original do método de pagamento

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

Nome bruto do sistema de gestão da prática

payment_method_name_standardized

STRING

Nome padronizado do pagamento

"Visa", "Cash", "CareCredit"

Lógica de padronização: correspondência de padrões (p.ex., '%visa%' → 'Visa', '%mastercard%' → 'Mastercard')

Informações da clínica e da localização

Coluna

Tipo

Descrição

Exemplos

Lógica de negócio

department_id

BIGINT

Identificador do departamento/clínica

1001, 2005

Liga-se a localizações específicas da clínica

department_name

STRING

Nome do departamento/clínica

"Main Street Veterinary", "Emergency Clinic Downtown"

Nome comercial para a localização

department_timezone

STRING

Identificador de fuso horário IANA

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

Usado para conversões de hora local

Campos de data (datas do negócio)

Coluna

Tipo

Descrição

Exemplos

Lógica de negócio

created_date

DATE

Data de criação da fatura

2024-09-15, 2024-08-22

Parte da data do carimbo de data/hora de criação

invoice_date

DATE

Data oficial da fatura

2024-09-15, 2024-08-22

Data do negócio exibida na fatura

invoice_due_date

DATE

Data de vencimento do pagamento

2024-10-15, 2024-09-22

Quando se espera o pagamento

invoice_paid_date

DATE

Data em que o pagamento foi recebido

2024-09-20, NULL

NULL para faturas não pagas

Carimbos de data/hora UTC (horas do sistema)

Coluna

Tipo

Descrição

Exemplos

Lógica de negócio

created_ts_utc

TIMESTAMP

Carimbo de data/hora de criação (UTC)

2024-09-15 14:30:25.123

Hora de criação do sistema em UTC

invoice_date_ts_utc

TIMESTAMP

Carimbo de data/hora da fatura (UTC)

2024-09-15 12:00:00.000

Data da fatura convertida para UTC

invoice_due_date_ts_utc

TIMESTAMP

Carimbo de data/hora de vencimento (UTC)

2024-10-15 23:59:59.000

Data de vencimento convertida para UTC

invoice_paid_date_ts_utc

TIMESTAMP

Carimbo de data/hora do pagamento (UTC)

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

Hora de recebimento do pagamento em UTC

Carimbos de data/hora locais (fuso horário do departamento)

Coluna

Tipo

Descrição

Exemplos

Lógica de negócio

created_ts_local

TIMESTAMP

Carimbo de data/hora de criação (local)

2024-09-15 10:30:25.123

invoice_date_ts_local

TIMESTAMP

Carimbo de data/hora da fatura (local)

2024-09-15 08:00:00.000

invoice_due_date_ts_local

TIMESTAMP

Carimbo de data/hora de vencimento (local)

2024-10-15 19:59:59.000

invoice_paid_date_ts_local

TIMESTAMP

Carimbo de data/hora do pagamento (local)

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

Padrões comuns de consulta

Análise de receita

-- Receita mensal por método de pagamentoSELECT     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;

Contas a receber em aberto

-- Análise de envelhecimento (aging) de faturas não pagasSELECT     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;

Desempenho do veterinário

-- Principais veterinários com base na receita 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 de utilização importantes

Gestão de múltiplas moedas

Inclua sempre currency_code ao agregar dados financeiros entre departamentos:

-- CORRECT: Group by currencySELECT currency_code, SUM(total_incl_vat) as revenueFROM production.invoices GROUP BY currency_code;-- INCORRECT: Mixing currenciesSELECT SUM(total_incl_vat) as revenue  -- Pode misturar EUR + USD + GBPFROM production.invoices;

Boas práticas de fuso horário

  • Use os campos *_ts_local para reporte do negócio e interfaces do utilizador

  • Use os campos *_ts_utc para integração do sistema e processamento de dados

  • Considere sempre o fuso horário do departamento ao interpretar carimbos de data/hora locais

Isto respondeu à sua pergunta?