Přeskočit na hlavní obsah

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 entitou
  • getNestedDataValue(): Bezpečné získání hodnoty z vnořeného pole
  • castItemValue(): Převod hodnot položek na správné datové typy
  • isEntityDuplicate(): 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