Vývoj podnikového informačného systému (ERP/CRM) 'IS'

Vytvorené: 24. 8. 2025 08:39 Aktualizované: 27. 8. 2025 13:14
Vyriešené
Obsah článku

title: "Vývoj podnikového informačného systému (ERP/CRM) 'IS'"
slug: "is-erp-crm-development-plan"
technologies: ["PHP", "Nette Framework", "Latte", "MySQL", "Phinx", "Symfony Console", "REST API", "PWA", "JavaScript"]
tags: ["erp", "crm", "saas", "nette", "php", "full-stack", "database-first", "multi-tenant", "project-management", "accounting"]
date_solved: "2025-08-21"

Projekt/Téma: Vývoj podnikového informačného systému (ERP/CRM) 'IS'

  1. Cieľ / Problém na vyriešenie: Strategickým cieľom je vývoj komplexného, modulárneho a multi-tenantného podnikového informačného systému (ERP/CRM) od základov. Systém musí pokrývať kľúčové firemné procesy od správy zákazníkov (CRM), cez riadenie dodávateľského reťazca (SCM - Produkty, Sklady, Nákup, Predaj), financie a účtovníctvo, až po ľudské zdroje (HR). Systém je budovaný na "database-first" princípe s robustným REST API pre budúce integrácie, vrátane špecializovaného POS systému.

  2. Použité technológie a nástroje:

    • Backend: PHP, Nette Framework (Application, DI, Forms, Latte, Tracy)
    • Databáza: MySQL, spravovaná cez Phinx (migrácie a seedy)
    • Dátová vrstva: Nette\Database\Explorer
    • API: Vlastné REST API s Nette\Schema pre validáciu
    • Frontend (Admin): Latte, JavaScript
    • Frontend (Plánované): Progresívna Webová Aplikácia (PWA) pre POS a klientsky portál
    • Konzola: Symfony Console pre CLI príkazy (migrácie, importy, správa)
    • Bezpečnosť: Vlastný ACL autorizátor (Nette\Security\Permission), autentifikácia cez API kľúče.
  3. Kľúčové postupy a konfiguračné kroky:

    • Architektúra: Aplikácia je modulárna, postavená na moduloch Admin, Api, Front. Kľúčovým princípom je "database-first", kde je najprv navrhnutá robustná a normalizovaná databázová schéma, a až potom sa implementuje aplikačná logika.
    • Multi-Tenancy: Systém je navrhnutý ako multi-tenantný, kde každá firma (tenant) má svoje dáta striktne oddelené (pomocou tenant_id v kľúčových tabuľkách).
    • Účtovný modul: Implementovaný komplexný systém podvojného účtovníctva vrátane účtovnej osnovy, flexibilných predkontácií (účtovných schém) a automatizovaného účtovania dokladov (faktúry, platby) cez centrálnu AccountingService.
    • Fasády a Služby: Biznis logika je striktne oddelená do fasád (CustomerFacade, InvoiceFacade, atď.), ktoré poskytujú zjednodušené rozhranie nad komplexnejšou logikou v službách (AccountingService, SettingsService).
    • Automatizácia a CLI: Rozsiahle využitie konzolových príkazov pre správu systému, dátové migrácie, importy a exporty, a generovanie API kľúčov.
  4. Výsledné kódy a skripty:

    • Authorizator.php: Centrálna služba pre správu oprávnení, ktorá načíta roly a povolenia z DB a vytvára cachovaný Nette\Security\Permission objekt.
    • AccountingService.php: Srdce účtovného modulu, zodpovedné za transakčne bezpečné vytváranie účtovných zápisov (journal_entries) na základe predkontácií.
    • NumberSequenceFacade.php: Fasáda pre centralizovanú správu a generovanie číselných radov pre všetky typy dokladov.
    • Databázová schéma: Rozsiahla, normalizovaná schéma pokrývajúca všetky kľúčové moduly (viď detailný prehľad v docs/app-schema-current.sql).
  5. Zistené problémy a riešenia (Gotchas):

    • Problém: Neefektívnosť a chybovosť automaticky generovaných "Table" tried pre prístup k DB.
    • Riešenie: Prechod na manuálne vytváranie kľúčových Table tried dediace od spoločnej BaseTable, čo poskytlo väčšiu kontrolu a flexibilitu.
    • Problém: Riziko nekonzistencie dát pri komplexných operáciách (napr. vytváranie objednávky a faktúry).
    • Riešenie: Dôsledné používanie databázových transakcií v rámci metód fasád, aby sa zabezpečila atomicita operácií.
    • Problém: Nutnosť manuálne aktualizovať napevno zakódované hodnoty (napr. typy transakcií, kódy číselných radov) v kóde pri zmene v DB.
    • Riešenie: Identifikácia týchto hodnôt a ich zdokumentovanie. V ďalšom kroku centralizácia týchto hodnôt do system_settings alebo číselníkov.
  6. Finálny výsledok / Záver: Projekt je v pokročilej fáze vývoja s plne implementovanými kľúčovými modulmi ako CRM, SCM, Financie a Účtovníctvo. Systém je postavený na robustných architektonických princípoch, je pripravený na multi-tenantné nasadenie a má jasne definovaný plán pre budúci rozvoj, ktorý zahŕňa pokročilú automatizáciu (párovanie platieb), reporting a vývoj špecializovaných frontend aplikácií (POS, Zákaznícky portál).

Vyriešené: 21. 8. 2025