Financial Truth Model (Modelul de adevăr financiar)
Sursa unică de adevăr pentru ce înseamnă fiecare număr financiar din TSync
Intelligence. Fiecare indicator expus de stratul Intelligence
prin tsync_finance() are exact o definiție aici, astfel încât toate modulele
avansate (Dynamic Valuation, FX Exposure, KPI) calculează pe aceeași bază, iar
rezultatele sunt reproductibile și auditabile.
Scop. Documentul definește metodologia. Faza 1 livrează definițiile de bază de mai jos (implementate în
Tsync_finance_service). Elementele marcate [Faza 2] sunt definite formal aici, dar calculul complet este amânat.
0. Convenții
- Moneda de bază —
tsync_fx()->base()(baza contabilă, ex.RON), din opțiuneatsync_acc_base_currency. Toate agregatele sunt exprimate în bază. - Curs contabil —
tsync_fx()->rate(CUR, data): cursulCUR→bază la o dată, dinTsync_currency. Regula datei cursului: România folosește cursul BNR din ziua lucrătoare precedentă; Moldova folosește cursul din aceeași zi. Moneda de bază are cursul1.0prin definiție. - Conversie — întotdeauna prin bază:
convert(sumă, din, în) = sumă × rate(din) ÷ rate(în). - Rotunjire — agregatele monetare la 2 zecimale; costurile unitare și valorile din snapshot păstrează 4 zecimale intern.
- Versionare — fiecare rând de metrică are
calc_version+calculated_at(incrementat la fiecare recalcul), deci o valoare învechită este detectabilă. O schimbare a unei definiții de aici = incrementare a versiunii de metodologie (§8).
1. Valorizarea stocului
$$\text{ValoareStoc} = \sum_{\text{rânduri stoc}} (,qty \times avg_cost,)$$
- Sursă:
tsync_stock— coloana canonică de stocqty(niciodatăqty_on_hand), cost unitaravg_cost. - Metodă de cost: AVCO (medie ponderată mobilă) —
avg_costeste menținut de calea de postare din depozit la fiecare recepție. tsync_finance()->getInventoryValue(). Deja în bază.
2. Creanțe
$$\text{Creanțe} = \sum_{\text{facturi client deschise}} (,total - \text{încasări},)$$
- Deschisă = status factură ∈ {
neplătită(1),parțial(3),restantă(4) }. Plătită (2) și anulată (5) sunt excluse. tsync_finance()->getReceivables(). Facturi non-bază: vezi §6.
3. Datorii (furnizori)
$$\text{Datorii} = \sum_{\text{facturi furnizor deschise}} (,total - \text{plăți},)$$
- Deschisă = status factură furnizor ∉ { plătită, anulată }.
tsync_finance()->getPayables().
4. Sold de numerar (proxy de cash operațional)
$$\text{Cash} = \sum \text{încasări clienți} - \sum \text{plăți furnizori} - \sum \text{cheltuieli}$$
- Un proxy bazat pe mișcări, nu un sold bancar reconciliat. Reconcilierea bancară / închiderea de perioadă reală este [Faza 2].
tsync_finance()->getCashBalance().
5. Expunere valutară
$$\text{Expunere} = \sum_{\substack{\text{creanțe deschise}\ \text{cur} \neq \text{bază}}} \text{valoareBază(suma deschisă)}$$
- Valoarea în bază a creanțelor deschise, în monedă non-bază — suma expusă la
mișcări FX.
tsync_finance()->getCurrencyExposure(). - Indicator de bază: măsoară expunerea, nu câștigul/pierderea realizat(ă).
6. Metodologia câștig / pierdere din FX [calcul Faza 2]
Formal: pentru un element în valută înregistrat la cursul $r_0$ la data $d_0$ și evaluat/decontat la cursul $r_1$ la data $d_1$,
$$\text{Câștig/pierdere FX} = \text{sumă}_{\text{cur}} \times (r_1 - r_0)$$
- Nerealizat (elemente deschise): $r_1$ = cursul la data raportării.
- Realizat (la decontare): $r_1$ = cursul la data decontării.
- Regula: veniturile/cheltuielile și activele/datoriile se înregistrează la cursul istoric ($r_0$) la recunoaștere; reevaluarea folosește cursul curent ($r_1$); diferența este câștigul/pierderea din FX. Faza 1 înregistrează expunerea (§5) și cursurile (§0); linia de câștig/pierdere contabilizată e Faza 2.
7. Profit operațional
Bază Faza 1 — tsync_finance()->getOperationalProfit($zile):
$$\text{ProfitOp}{\text{bază}} = \text{venituri}{\text{fereastră}} - \text{cheltuieli}_{\text{fereastră}}$$
[Faza 2] profit operațional real — formal:
$$\text{ProfitOp} = \text{venituri} - \text{COGS} - \text{cheltuieli de exploatare} \pm \text{câștig/pierdere FX} - \text{angajamente/amânări}$$
unde COGS se ia din AVCO la momentul vânzării (nu costul de la sfârșit de perioadă), câștigul/pierderea FX conform §6, iar angajamentele/amânările după data recunoașterii. Costul operațional = COGS + cheltuieli de exploatare (exclude finanțarea și impozitul). Baza omite intenționat COGS, FX și angajamentele — nu o trata ca profit auditat.
8. Versionarea metodologiei & reproductibilitate
- Fiecare metrică stochează
calc_version(nr. recalculări) și este produsă sub o versiune de metodologie (versiunea acestui document). O schimbare a oricărei formule de aici incrementează versiunea de metodologie; snapshot-urile rețin metodologia în vigoare, deci o cifră istorică poate fi reprodusă din aceleași date. - Contract de reproductibilitate: același set de date + aceeași versiune de metodologie trebuie să producă aceleași numere (baza pentru modul audit/research).
9. Foaie de parcurs Faza 2 (încă neobligatorie)
Profit operațional bazat pe COGS, câștig/pierdere FX contabilizat, reconciliere bancară / închidere de perioadă, angajamente/amânări, consolidare multi-company și scenarii de reevaluare curs istoric vs curs curent.
Implementat de application/libraries/Tsync_finance_service.php (bază) și
Tsync_fx_service.php (cursuri). Validat de tests/sim/intelligence_finance_snapshot_sim.php
și tests/fx_service_test.php.