PHPNetteSymfony ConsolePhpSpreadsheetFlysystemSMTP

EDI Mover

CLI nástroj pro automatizovanou transformaci EDI/XML přepravních dokladů do strukturovaných Excel reportů s emailovou distribucí

Architektura EDI Mover — XML zpracování a XLSX výstup

Zadání

Logistická firma pravidelně přijímá přepravní doklady ve formátu IFTMIN (XML) — standardizovaném EDI formátu pro mezinárodní přepravu. Tyto soubory obsahují hierarchická data o zásilkách, objednávkách, balících a sledovacích číslech.

Zpracování těchto souborů bylo dosud manuální — operátoři museli ručně procházet XML struktury, kopírovat relevantní data do tabulek a distribuovat je emailem dalším oddělením. Při desítkách souborů denně šlo o časově náročný a chybový proces.

Řešení

Vyvinuli jsme EDI Mover — CLI aplikaci v PHP, která celý workflow automatizuje. Aplikace stahuje XML soubory ze SFTP serveru (nebo lokálního filesystému), parsuje je pomocí DOMDocument a XPath dotazů, transformuje data do strukturovaných Excel reportů a odesílá je emailem příslušným příjemcům.

Celý proces běží jako jednorázový příkaz, který lze snadno zautomatizovat přes cron job nebo plánovač úloh.

Klíčové funkce

XML Parsing (DOMDocument + XPath)

Vstupní XML soubory ve formátu IFTMIN mají komplexní hierarchickou strukturu: batch → shipment → order header → order lines → packages → handling units. Mover extrahuje relevantní data pomocí XPath dotazů a mapuje je na ploché tabulkové struktury.

Excel generování (PhpSpreadsheet)

Pro každý XML soubor se generuje formátovaný XLSX report s více listy:

  • Přehled LP — souhrn všech sledovacích čísel (Label/Pallet numbers)
  • Shipment N — detail každé zásilky s hlavičkou, řádky objednávky a informacemi o balících

Výstup obsahuje formátování (tučné hlavičky, barevné pozadí, automatické šířky sloupců) pro snadné čtení.

Emailová distribuce (SMTP)

Vygenerované XLSX soubory se automaticky odesílají jako přílohy emailu na specifikované adresy. Příkaz podporuje více příjemců přes opakovaný parametr --email.

Volitelné mazání zdrojů

Po úspěšném zpracování lze zdrojové XML soubory automaticky smazat parametrem --delete-after, čímž se zamezí opakovanému zpracování.