Închiderea lunii

Înainte de raportarea tranzacțiilor unei luni, calcularea stocurilor și a mișcărilor de mărfuri, verifică dacă toate joburile Goods Issue s-au încheiat cu succes sau dacă toate documentele de vânzare au generat ieșirile de marfă. Pentru aceasta, rulează BOM Goods Issue (Sales -> Production) STEP 1 (job). Dacă toate joburile aferente închiderilor zilnice s-au finalizat corect, … Citește mai mult

Suprascrierea serviciilor

ERP Core folosește modelul repository și IServiceProvider pentru implementarea logicii de business. Pentru a modifica funcționalitatea de bază a sistemului, poți suprascrie metodele virtuale și instala clasa derivată ca serviciu în extensia ta. Instalatorul automat de servicii instalează mai întâi clasele marcate cu InstallAsServiceAttribute, apoi clasele care implementează interfața IInstallAsService. Repository-urile de bază implementează IInstallAsService … Citește mai mult

Configurarea entităților

Configurațiile principale pentru accesul la date vor folosi sintaxa ORM (indexuri, structura entităților etc.). Opțiunile de afișare vor fi păstrate într-un tabel al bazei de date, pentru a permite utilizatorului să configureze: validarea: expresii regulate, câmpuri obligatorii/opționale, mesaje de eroare și nivel de eroare/avertizare/informare afișarea: etichete, vizibilitate, mod de afișare, locație, tip, acces doar pentru … Citește mai mult

Tipuri de câmpuri

Câmpurile entităților ar trebui să se încadreze în una dintre următoarele categorii: id (de regulă indexabil) tipuri primitive (int, string, decimal) listă de valori primitive altă entitate deținută exclusiv de părinte (exemplu: unitatea de măsură) listă de alte entități deținute (exemplu: informații de contact) altă entitate comună mai multor părinți (exemplu: tipul persoanei) listă de … Citește mai mult

Extensii ale modelelor

Extinderea modelelor Extensiile ar trebui folosite doar pentru implementări specifice unui client, care nu justifică includerea în modelele standard de business. Fiecare model ar trebui să aibă o proprietate numită extension. Extensia implementează modelul de bază. ORM va crea în baza de date un tabel cu același nume, urmat de Extension, dacă extensia conține și … Citește mai mult

Memoria cache

Unele câmpuri și entități pot fi marcate pentru păstrare în cache. Aceste entități vor fi reîmprospătate când sunt modificate. De exemplu, este emis un eveniment de actualizare pentru un entityType cu un anumit id. Dacă memoria cache conține acel tip de entitate, înregistrarea cu id-ul respectiv este eliminată și va fi încărcată din nou la … Citește mai mult

Entitatea de bază

Entitatea de bază Clasa de bază a entităților va avea următoarele câmpuri obligatorii: id (întotdeauna cheie primară) deleted (indicator de ștergere logică) extension (câmpuri personalizate cerute de implementare)

Jurnale de activitate

1.1.1. Tabelul jurnalului Toate tranzacțiile ar trebui să genereze evenimente, iar acestea să fie păstrate într-un depozit de evenimente. Tranzacțiile, precum apelurile API și ORM, pot fi păstrate într-o bază de date NoSQL și analizate în cazul unei erori sau al coruperii datelor. În caz de eroare, ar trebui să existe posibilitatea modificării și repetării … Citește mai mult

Blocarea entităților

Când un utilizator editează o entitate, se adaugă o înregistrare într-un tabel de blocări. Ceilalți utilizatori nu o pot edita până când primul utilizator o eliberează. Tabelul de blocări trebuie să poată fi modificat ușor în cazul unei întreruperi de comunicație, pentru a elibera entitățile blocate de operații eșuate. Dacă un utilizator pierde conexiunea sau … Citește mai mult

Serviciul de stocare

1.1. Serviciul de stocare Acest serviciu stochează fișiere pe FTP, local și în alte locații. Informațiile despre fișierele stocate sunt păstrate într-un tabel al bazei de date, dedicat documentelor. Dosarele ar trebui denumite după tipurile de entități cărora le aparțin documentele. Serviciul ar trebui să poată arhiva documentele la descărcare.