Den følgende dokumentation beskriver
production.invoices-tabellen, som er en central del af Veterinary Practice Data Platform. Tabellen giver direkte adgang til standardiserede, testede og berigede fakturadata, så du kan fremskynde analyser og økonomisk rapportering.
Detaljeret kolonne-oversigt
Grundlæggende identifikatorer
Kolonne | Type | Beskrivelse | Eksempler | Forretningslogik |
provet_id | STRING | Din unikke identifikator for praksis | "pcus_1" | Tenant-isoleringsnøgle - filtrér altid på denne for ydeevne |
invoice_id | BIGINT | Unik fakturaidentifikator inden for praksis | 12345, 67890 | Systemgenereret og uforanderlig, når den er oprettet |
invoice_number | STRING | Fakturanummer i forretningen, som vises til klienter | "1001-2024-00123", "DEPT2-240915-456" | Format: {department_id}-{date}-{sequence}. NULL, indtil fakturaen er afsluttet (status=3) |
Klassifikation af faktura
Kolonne | Type | Beskrivelse | Eksempler | Forretningslogik |
invoice_type | STRING | Afledt fakturakategori | "consultation", "countersale", "credit_note" | Logik: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 | Relateret konsultationsreference | 98765, NULL | Link til konsultationspost. NULL for kontantsalg og kreditnotaer |
invoice_status | STRING | Nuværende faktura-tilstand | "pending", "paid", "cancelled" | Mapping: 0=Kladde, 1=Sendt, 2=Åben, 3=Afsluttet, 4=Fakturakladde, 99=Annulleret. Bemærk: "pending"/"paid"/"cancelled" er forenklede forretningsbegreber |
Finansielle oplysninger
Kolonne | Type | Beskrivelse | Eksempler | Forretningslogik |
total_incl_vat | DECIMAL | Total beløb inklusive Moms/skat | 125.50, 89.99 | Endelig fakturerbart beløb inklusive alle skatter |
total_excl_vat | DECIMAL | Total beløb eksklusive Moms/skat | 100.40, 74.99 | Grundbeløb før moms-/skatberegninger |
amount_due | DECIMAL | Udestående Saldo, der er tilbage | 125.50, 0.00, 25.00 | Falder, efterhånden som betalinger bliver anvendt. 0.00 = fuldt betalt |
currency_code | STRING | ISO 4217-valutakode | "EUR", "USD", "GBP", "CAD" | Kortlagt automatisk ud fra afdelingens land |
currency_name | STRING | Fuldt navn på valutaen | "Euro", "US Dollar", "British Pound Sterling" | Valutabeskrivelse i et menneskeligt læsbart format |
Oplysninger om klient & dyrlæge
Kolonne | Type | Beskrivelse | Eksempler | Forretningslogik |
client_name | STRING | Navn på klient/betaler | "John Smith", "Pet Insurance Co", "Sarah Johnson" | Fra feltet payer_name i kildedata |
supervising_veterinarian_name | STRING | Fuld navn på tilsynsførende dyrlæge | "Dr. Emily Watson", "Michael Chen DVM", NULL | Logik: `first_name |
Detaljer om betalingsmetode
Kolonne | Type | Beskrivelse | Eksempler | Forretningslogik |
payment_method_type | STRING | Standardiseret betalingskategori | "Card", "Cash or Check", "Digital Wallet", "Financing" | Automatisk kategoriseringslogik: Card-flag → "Card", Cash/Check-nøgleord → "Cash or Check", CareCredit/Scratchpay → "Financing" osv. |
payment_method_name | STRING | Oprindeligt navn på betalingsmetode | "Visa Credit Card", "Cash", "CareCredit" | Råt navn fra journalsystemet |
payment_method_name_standardized | STRING | Standardiseret betalingsnavn | "Visa", "Cash", "CareCredit" | Standardiseringslogik: Mønstermatchning (fx '%visa%' → 'Visa', '%mastercard%' → 'Mastercard') |
Afdeling & lokationsoplysninger
Kolonne | Type | Beskrivelse | Eksempler | Forretningslogik |
department_id | BIGINT | Identifikator for afdeling/klinik | 1001, 2005 | Links til specifik kliniklokation |
department_name | STRING | Afdelings-/kliniknavn | "Main Street Veterinary", "Emergency Clinic Downtown" | Forretningsnavn for lokationen |
department_timezone | STRING | IANA-tidszoneidentifikator | "America/New_York", "Europe/London", "Australia/Sydney" | Bruges til lokale tidskonverteringer |
Dato-felter (forretningsdatoer)
Kolonne | Type | Beskrivelse | Eksempler | Forretningslogik |
created_date | DATE | Fakturakreationsdato | 2024-09-15, 2024-08-22 | Datodelen af oprettelsestidspunktet |
invoice_date | DATE | Officiel fakturadato | 2024-09-15, 2024-08-22 | Forretningsdatoen vist på fakturaen |
invoice_due_date | DATE | Forfaldsdato for betaling | 2024-10-15, 2024-09-22 | Hvornår der forventes betaling |
invoice_paid_date | DATE | Datoen hvor betalingen blev modtaget | 2024-09-20, NULL | NULL for ubetalte fakturaer |
UTC-tidsstempler (systemtider)
Kolonne | Type | Beskrivelse | Eksempler | Forretningslogik |
created_ts_utc | TIMESTAMP | Oprettelsestidsstempel (UTC) | 2024-09-15 14:30:25.123 | Systemets oprettelsestid i UTC |
invoice_date_ts_utc | TIMESTAMP | Tidsstempel for faktura (UTC) | 2024-09-15 12:00:00.000 | Fakturadato konverteret til UTC |
invoice_due_date_ts_utc | TIMESTAMP | Forfaldstidsstempel (UTC) | 2024-10-15 23:59:59.000 | Forfaldsdato konverteret til UTC |
invoice_paid_date_ts_utc | TIMESTAMP | Betalingstidsstempel (UTC) | 2024-09-20 16:45:30.456, NULL | Tidspunkt for modtagelse af betaling i UTC |
Lokale tidsstempler (afdelingens tidszone)
Kolonne | Type | Beskrivelse | Eksempler | Forretningslogik |
created_ts_local | TIMESTAMP | Oprettelsestidsstempel (lokalt) | 2024-09-15 10:30:25.123 | |
invoice_date_ts_local | TIMESTAMP | Tidsstempel for faktura (lokalt) | 2024-09-15 08:00:00.000 | |
invoice_due_date_ts_local | TIMESTAMP | Forfaldstidsstempel (lokalt) | 2024-10-15 19:59:59.000 | |
invoice_paid_date_ts_local | TIMESTAMP | Betalingstidsstempel (lokalt) | 2024-09-20 12:45:30.456, NULL |
Typiske forespørgselsmønstre
Analyse af omsætning
-- Monthly revenue by payment methodSELECT 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;Udestående tilgodehavender
-- Aging analysis of unpaid invoicesSELECT 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;
Præstation for dyrlæger
-- Top performing veterinarians by consultation revenueSELECT 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;
Vigtige anvendelsesnoter
Håndtering af flere valutaer
Medtag altid currency_code, når du aggregerer finansielle data på tværs af afdelinger:
-- 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 -- May mix EUR + USD + GBPFROM production.invoices;
Bedste praksis for tidszoner
Brug felterne *_ts_local til forretningsrapportering og brugergrænseflader
Brug felterne *_ts_utc til systemintegration og databehandling
Overvej altid afdelingens tidszone, når du fortolker lokale tidsstempler
