1. Arhitectura MVC (Model-View-Controller)

Arhitectura MVC este un **model de design software** care separă reprezentarea informațiilor de interacțiunile utilizatorului, organizând aplicația în trei componente interconectate.

1.1. Fluxul de Interacțiune

  1. **Utilizatorul Interacționează cu Vizualizarea (View):** Utilizatorul efectuează o acțiune (apăsarea unui buton).
  2. **Vizualizarea Transmite Solicitarea Către Controller:** Vizualizarea trimite evenimentul către **Controller**.
  3. **Controller-ul Procesează Solicitarea:** Controller-ul apelează metodele necesare din **Model** pentru a prelua sau modifica datele.
  4. **Modelul Gestionează Logica de Business și Datele:** Modelul interacționează cu baza de date, aplică **logica de business** și, după finalizarea operațiunii, notifică.
  5. **Controller-ul Alege Vizualizarea Corectă:** Pe baza rezultatului, Controller-ul decide ce **Vizualizare** trebuie afișată.
  6. **Vizualizarea Afișează Datele:** Vizualizarea folosește datele primite de la Model pentru a genera **interfața de utilizator actualizată** și o afișează.

1.2. Rolul Fiecărei Componente


2. Reguli de Business în Model

Regulile de business sunt logica specifică ce guvernează modul în care datele sunt manipulate și sunt implementate exclusiv în componenta **Model**.

2.1. Exemplu: Reguli de Business


3. Relaționarea Datelor în Baza de Date

Relaționarea datelor conectează tabelele (entitățile) dintr-o bază de date relațională prin intermediul unor câmpuri comune pentru a evita redundanța și a menține integritatea.

3.1. Chei Esențiale

3.2. Tipurile de Relații

3.3. Exemplu de Interogare SQL (JOIN)

Interogare pentru a extrage detalii dintr-o comandă, folosind un tabel de legătură (`Detalii_Comanda`):

SELECT
    C.id_comanda,
    P.nume_produs,
    DC.cantitate
FROM
    Comenzi C
JOIN
    Detalii_Comanda DC ON C.id_comanda = DC.id_comanda
JOIN
    Produse P ON DC.id_produs = P.id_produs
WHERE
    C.id_comanda = 101;

4. Relația Mai Mulți la Mai Mulți (M:N)

Relația **M:N** (Mai Mulți la Mai Mulți) este formulată mai explicit ca:

$$(M \text{ of many}) : (N \text{ of many})$$

Acest tip de relație nu poate fi implementat direct.

4.1. Soluția: Tabela de Legătură (Joncțiune)

Se folosește un al treilea tabel (de exemplu, **`Detalii_Comanda`**), care conține Cheile Externe ale ambelor tabele principale. Acest tabel transformă relația **M:N** în două relații separate de tip **1:M**.


5. MVC aplicat la Software Contabil

Aplicarea MVC pe un software de contabilitate asigură separarea logicii financiare complexe de interfață.

5.1. Exemplu: Înregistrarea unei Facturi de Vânzare

5.2. Exemplu: Generarea Balanței de Verificare

Formulele de calcul folosite de Model sunt:

$$\text{Calcul Rulaj: } Rulaj\_Debit = \sum \text{Sumele Debitate}$$ $$\text{Calcul Rulaj: } Rulaj\_Credit = \sum \text{Sumele Creditare}$$ $$\text{Calcul Sold Final: } Sold\_Final = Sold\_Initial + Rulaj\_Debit - Rulaj\_Credit$$

(Formula Soldului Final este ajustată în funcție de funcția contului: activ sau pasiv).


6. Definiția Jurnalului Contabil

Jurnalul Contabil (Registrul Jurnal) este un document contabil obligatoriu care înregistrează în ordine **cronologică** și **sistematică** **toate operațiunile economice și financiare** ale unei entități pe parcursul unei perioade fiscale. Reprezintă **evidența primară** și sursa de date pentru toate celelalte rapoarte.

6.1. Rolul Jurnalului Contabil

6.2. Structura unei Înregistrări (Articol Contabil)

Fiecare linie din Jurnalul Contabil (numită articol contabil) trebuie să conțină informațiile esențiale pentru a fi validă și completă:

  1. **Data înregistrării** (criteriul cronologic).
  2. **Numărul documentului justificativ** (de exemplu, numărul facturii sau chitanței).
  3. **Scurtă explicație** a naturii operațiunii economice (de exemplu, "Vânzare mărfuri").
  4. **Contul Debitor** și **Contul Creditor** (criteriul sistematic).
  5. **Suma** (valoarea tranzacției, care trebuie să fie egală pe cele două coloane).

În MVC, **Modelul** se asigură că la salvarea oricărei tranzacții (factură, plată, încasare) se generează automat o înregistrare completă și echilibrată în Jurnalul Contabil.

Cuprins