Procesní flow parsování faktur
Tento dokument popisuje detailní postup zpracování faktury od přijetí dat po uložení do systému.
Hlavní kroky zpracování
- Inicializace: Vytvoření instance příslušného providera (např.
SupplierInvoiceProvider) - Zpracování entity: Volání metody
process(), která: - Vytvoří nebo načte entitu faktury
- Nastaví základní údaje faktury
- Zpracuje dodavatele
- Zpracuje položky faktury
- Uloží výsledky
- Uložení záznamu: Označení záznamu jako zpracovaného a uložení do databáze
Zpracování dodavatele
- Extrakce IČO a DIČ z dat faktury
- Vyhledání existujícího účtu podle IČO
- Pokud účet neexistuje, vytvoření nového s údaji z faktury
- Propojení faktury s účtem
Zpracování položek faktury
- Načtení seznamu položek ze zdrojových dat
- Pro každou položku:
- Vytvoření DTO objektu (
InvoiceLikeItemDto) - Mapování zdrojových dat na DTO
- Validace povinných polí
- Přidání do výsledného seznamu
- Uložení seznamu položek do entity faktury
Technické informace
Sekvence volání metod
process()
-> getOrCreateEntity()
-> setInvoiceData()
-> updateMainInvoiceFields()
-> updateSellerInformation()
-> prepareAccountData()
-> updateBuyerInformation()
-> updateInvoiceItemLists()
-> createInvoiceItemDto()
-> isValidInvoiceItemDto()
-> record->markAsParsed()
-> entityManager->saveEntity()
Důležité metody
setEntityFields(): Generická metoda pro mapování polí mezi zdrojem a entitougetNestedDataValue(): Bezpečné získání hodnoty z vnořeného polecastItemValue(): Převod hodnot položek na správné datové typyisEntityDuplicate(): Kontrola duplicity entity na základě unikátních polí
Zpracování měn
Modul automaticky zpracovává měnové údaje:
- Detekuje měnu faktury
- Aplikuje měnu na všechny peněžní částky
- Zajišťuje konzistentní formátování čísel