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'
-
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.
-
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\Schemapre 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.
-
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_idv 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.
- Architektúra: Aplikácia je modulárna, postavená na moduloch
-
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\Permissionobjekt.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).
-
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_settingsalebo číselníkov.
-
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).