Följande dokumentation beskriver
production.invoices-tabellen, en nyckelkomponent i Veterinary Practice Data Platform. Tabellen ger direkt åtkomst till standardiserad, testad och berikad fakturadata, så att du kan påskynda analys och ekonomisk rapportering.
Detaljerad kolumnreferens
Kärnidentifierare
Kolumn | Typ | Beskrivning | Exempel | Affärslogik |
provet_id | STRING | Din unika identifierare för verksamheten | "pcus_1" | Nyckel för tenant-isolering – filtrera alltid på detta för prestanda |
invoice_id | BIGINT | Unik fakturaidentifierare inom verksamheten | 12345, 67890 | Systemgenererad och oföränderlig när den väl skapats |
invoice_number | STRING | Fakturans nummer som visas för kunder | "1001-2024-00123", "DEPT2-240915-456" | Format: {department_id}-{date}-{sequence}. NULL tills fakturan är fastställd (status=3) |
Fakturaklassificering
Kolumn | Typ | Beskrivning | Exempel | Affärslogik |
invoice_type | STRING | Härledd fakturatyp/kategori | "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 | Referens till relaterad konsultation | 98765, NULL | Länkar till konsultationspost. NULL för kassaförsäljning och kreditfakturor |
invoice_status | STRING | Aktuellt statusläge för fakturan | "pending", "paid", "cancelled" | Mapping: 0=Utkast, 1=Skickat, 2=Öppen, 3=Fastställd, 4=Fakturering, 99=Ogiltig. Obs: "pending"/"paid"/"cancelled" är förenklade affärstermer |
Finansiell information
Kolumn | Typ | Beskrivning | Exempel | Affärslogik |
total_incl_vat | DECIMAL | Totalt belopp inklusive moms/skatt | 125.50, 89.99 | Slutligt fakturerbart belopp inklusive alla skatter |
total_excl_vat | DECIMAL | Totalt belopp exklusive moms/skatt | 100.40, 74.99 | Underlag innan beräkning av skatt |
amount_due | DECIMAL | Kvarstående balans | 125.50, 0.00, 25.00 | Minskar när betalningar läggs på. 0.00 = fullt betald |
currency_code | STRING | ISO 4217-kod för valuta | "EUR", "USD", "GBP", "CAD" | Automatiskt mappad från avdelningens land |
currency_name | STRING | Fullständigt namn på valutan | "Euro", "US Dollar", "British Pound Sterling" | Valutabeskrivning läsbar för människor |
Kund- och veterinärinformation
Kolumn | Typ | Beskrivning | Exempel | Affärslogik |
client_name | STRING | Kund/betalande parts namn | "John Smith", "Pet Insurance Co", "Sarah Johnson" | Från payer_name-fältet i källdata |
supervising_veterinarian_name | STRING | Fullständigt namn på övervakande veterinär | "Dr. Emily Watson", "Michael Chen DVM", NULL | Logik: `first_name |
Detaljer för betalningsmetod
Kolumn | Typ | Beskrivning | Exempel | Affärslogik |
payment_method_type | STRING | Standardiserad betalningskategori | "Card", "Cash or Check", "Digital Wallet", "Financing" | Automatisk kategorisering: Card-flagga → "Card", Cash/Check-nyckelord → "Cash or Check", CareCredit/Scratchpay → "Financing", osv. |
payment_method_name | STRING | Ursprungligt namn på betalningsmetod | "Visa Credit Card", "Cash", "CareCredit" | Rått namn från verksamhetssystemet |
payment_method_name_standardized | STRING | Standardiserat namn på betalningsmetod | "Visa", "Cash", "CareCredit" | Standardiseringslogik: mönstermatchning (t.ex. '%visa%' → 'Visa', '%mastercard%' → 'Mastercard') |
Avdelnings- och platsinformation
Kolumn | Typ | Beskrivning | Exempel | Affärslogik |
department_id | BIGINT | Avdelnings-/klinikidentifierare | 1001, 2005 | Länkar till specifik klinikplats |
department_name | STRING | Avdelnings-/kliniknamn | "Main Street Veterinary", "Emergency Clinic Downtown" | Verksamhetsnamn för platsen |
department_timezone | STRING | IANA-tidszonsidentifierare | "America/New_York", "Europe/London", "Australia/Sydney" | Används för konverteringar till lokal tid |
Datumfält (affärsdatum)
Kolumn | Typ | Beskrivning | Exempel | Affärslogik |
created_date | DATE | Datum för skapande av faktura | 2024-09-15, 2024-08-22 | Datumdel av skapande-tidsstämpel |
invoice_date | DATE | Officiellt fakturadatum | 2024-09-15, 2024-08-22 | Affärsdatum som visas på fakturan |
invoice_due_date | DATE | Förfallodatum för betalning | 2024-10-15, 2024-09-22 | När betalning förväntas |
invoice_paid_date | DATE | Datum när betalning togs emot | 2024-09-20, NULL | NULL för obetalda fakturor |
UTC-tidsstämplar (systemtider)
Kolumn | Typ | Beskrivning | Exempel | Affärslogik |
created_ts_utc | TIMESTAMP | Tidsstämpel för skapande (UTC) | 2024-09-15 14:30:25.123 | Systemets skapandetid i UTC |
invoice_date_ts_utc | TIMESTAMP | Tidsstämpel för faktura (UTC) | 2024-09-15 12:00:00.000 | Fakturadatum konverterat till UTC |
invoice_due_date_ts_utc | TIMESTAMP | Tidsstämpel för förfall (UTC) | 2024-10-15 23:59:59.000 | Förfallodatum konverterat till UTC |
invoice_paid_date_ts_utc | TIMESTAMP | Tidsstämpel för betalning (UTC) | 2024-09-20 16:45:30.456, NULL | Tid då betalning togs emot i UTC |
Lokala tidsstämplar (avdelningens tidszon)
Kolumn | Typ | Beskrivning | Exempel | Affärslogik |
created_ts_local | TIMESTAMP | Tidsstämpel för skapande (lokalt) | 2024-09-15 10:30:25.123 | |
invoice_date_ts_local | TIMESTAMP | Tidsstämpel för faktura (lokalt) | 2024-09-15 08:00:00.000 | |
invoice_due_date_ts_local | TIMESTAMP | Tidsstämpel för förfall (lokalt) | 2024-10-15 19:59:59.000 | |
invoice_paid_date_ts_local | TIMESTAMP | Tidsstämpel för betalning (lokalt) | 2024-09-20 12:45:30.456, NULL |
Vanliga frågemönster
Intäktsanalys
-- 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;Utestående fordringar
-- 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;
Veterinärprestation
-- 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;
Viktiga anmärkningar om användning
Hantering av flera valutor
Inkludera alltid currency_code när du aggregerar finansiella data över avdelningar:
-- 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;
Bästa praxis för tidszoner
Använd fälten *_ts_local för affärsrapportering och användargränssnitt
Använd fälten *_ts_utc för systemintegration och datahantering
Tänk alltid på avdelningens tidszon när du tolkar lokala tidsstämplar
