docs: runda 6 - cercetari, propuneri si conventia mediului Oracle
Cercetarile si propunerile rundelor 4-6 pe editarea facturii emise. Starea rundei 6 si ce s-a stabilit intra in progres.md. Nou: docs/conventii_mediu_oracle.md - pe dev/test se lucreaza numai cu ROA_CENTRAL si schemele CONTAFIN_ORACLE si MARIUSM_AUTO; schema ACN nu se foloseste. Scripturile de pachet sunt necalificate, deci schema tinta o decide sirul de conectare, nu fisierul. roafacturare.pj2 regenerat de git_sync. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013gYCNE26G1G7UoGu2ju7aS
This commit is contained in:
@@ -180,6 +180,21 @@ table.doc td.k{white-space:nowrap; font-family:ui-monospace,"Cascadia Mono",Cons
|
||||
|
||||
ul.tight, ol.tight{margin:8px 0 0; padding-left:20px}
|
||||
ul.tight li, ol.tight li{margin:0 0 8px; color:var(--ink-2); font-size:13.5px}
|
||||
|
||||
/* ---------- v9: banda de totaluri + randul de trei sectiuni (varianta D, decizia 57/64) ---------- */
|
||||
.totband{display:flex; align-items:center; gap:22px; flex-wrap:wrap; padding:8px 12px; border-top:1px solid var(--line); background:var(--card)}
|
||||
.tb-item{display:flex; align-items:baseline; gap:7px}
|
||||
.tb-item .tb-lbl{font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); font-weight:600}
|
||||
.tb-item b{font-variant-numeric:tabular-nums; font-weight:600; font-size:13px}
|
||||
.tb-disc{gap:9px}
|
||||
.tb-disc .inp{width:56px}
|
||||
.tb-grand{margin-left:auto; display:flex; align-items:baseline; gap:10px}
|
||||
.tb-grand .tb-lbl{font-size:11px}
|
||||
.tb-grand b{font-size:17px; font-weight:700; color:var(--accent)}
|
||||
.tb-reason{flex:1 1 200px; min-width:150px}
|
||||
.tb-reason .inp{flex:1 1 auto; min-width:0; font-style:italic}
|
||||
.duo{display:flex; gap:12px; align-items:flex-start}
|
||||
.duo > .panel{flex:1 1 0; min-width:0}
|
||||
</style>
|
||||
|
||||
<svg width="0" height="0" style="position:absolute" aria-hidden="true">
|
||||
@@ -196,7 +211,7 @@ ul.tight li, ol.tight li{margin:0 0 8px; color:var(--ink-2); font-size:13.5px}
|
||||
|
||||
<div class="wrap">
|
||||
|
||||
<p class="eyebrow">ROAFACTURARE · todos.txt punctul 13 · mockup, versiunea 8 (runda 11)</p>
|
||||
<p class="eyebrow">ROAFACTURARE · todos.txt punctul 13 · mockup, versiunea 9 (runda 17)</p>
|
||||
<h1>Un singur formular de facturare</h1>
|
||||
<p class="lede">
|
||||
Datele documentului si articolele in aceeasi fereastra, fara incarcarea prealabila a tuturor
|
||||
@@ -207,13 +222,17 @@ ul.tight li, ol.tight li{margin:0 0 8px; color:var(--ink-2); font-size:13.5px}
|
||||
Mockup, nu implementare. Campurile, etichetele si coloanele sunt cele reale, verificate pe cod la
|
||||
09.08.2026 — rapoartele sunt in <code>docs\cercetare\</code>.
|
||||
Plan: <code>docs\plan_13_unificare_formular_facturare.md</code>
|
||||
Asezarea e varianta D (decizia 57, runda 15), cu motivul discountului in banda de totaluri
|
||||
(decizia 66, runda 17).
|
||||
</p>
|
||||
|
||||
<h2><span class="n">1</span>Formularul</h2>
|
||||
<p class="sub">
|
||||
Deschis pe o factura in lei, emisa pe baza de comanda. Antetul e blocat — butonul din bara lui
|
||||
arata creionul. La introducerea unui document nou arata identic, cu antetul deschis si campurile
|
||||
goale.
|
||||
arata creionul. Asezarea e varianta D: antetul strans pe doua randuri, fara panou separat de
|
||||
discount, banda de totaluri lipita de grid pe toata latimea — cu procentul si motivul discountului
|
||||
chiar in ea — si randul de jos cu doua sectiuni colapsabile, incasare si alte date. La introducerea
|
||||
unui document nou arata identic, cu antetul deschis si campurile goale.
|
||||
</p>
|
||||
|
||||
<div class="app">
|
||||
@@ -233,16 +252,14 @@ ul.tight li, ol.tight li{margin:0 0 8px; color:var(--ink-2); font-size:13.5px}
|
||||
</span>
|
||||
</div>
|
||||
<div class="pb">
|
||||
<div class="grp">
|
||||
<p class="gl">Documentul</p>
|
||||
<div class="row">
|
||||
<div class="f w-md"><label>Tip document</label><div class="inp ro"><span class="combo">FACTURA</span></div></div>
|
||||
<div class="f w-sm"><label>Serie</label><div class="inp ro">FF</div></div>
|
||||
<div class="f w-sm"><label>Numar</label><div class="inp num ro">1 244</div></div>
|
||||
<div class="f w-sm"><label>Data doc.</label><div class="inp ro">07.08.2026</div></div>
|
||||
<div class="f w-sm"><label>Scadenta</label><div class="inp ro">06.09.2026</div></div>
|
||||
</div>
|
||||
<div class="grp">
|
||||
<p class="gl">Client si sursa</p>
|
||||
<div class="row">
|
||||
<div class="f w-fill"><label>Nume client</label><div class="inp ro">SC EXEMPLU DISTRIBUTIE SRL <span class="find">F4</span></div></div>
|
||||
<div class="f w-md"><label>Cod fiscal</label><div class="inp ro">RO12345678 <span class="find">ANAF</span></div></div>
|
||||
<div class="f w-md"><label>Sold curent</label><div class="inp num ro">14 820,00</div></div>
|
||||
@@ -250,9 +267,6 @@ ul.tight li, ol.tight li{margin:0 0 8px; color:var(--ink-2); font-size:13.5px}
|
||||
<div class="f w-lg"><label>Gestiune sursa</label><div class="inp ro"><span class="combo">DEPOZIT CENTRAL</span></div></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="disclosure">▸ Incasare <span class="hint">alocare/dezalocare — comutator propriu</span></div>
|
||||
<div class="disclosure">▸ Alte date — analitice, delegat si transport, adresa de facturare, text aditional
|
||||
<span class="callout">2</span><span class="hint">nimic completat peste implicit</span></div>
|
||||
</section>
|
||||
|
||||
<section class="panel">
|
||||
@@ -312,26 +326,40 @@ ul.tight li, ol.tight li{margin:0 0 8px; color:var(--ink-2); font-size:13.5px}
|
||||
<span class="gb key">Ins — linie noua</span><span class="gb key">Del — sterge</span>
|
||||
<span class="gb key">F4 — cauta</span><span class="gb key">Ctrl+N / Ctrl+D</span>
|
||||
</div>
|
||||
<div class="totband">
|
||||
<div class="tb-item"><span class="tb-lbl">Baza</span><b>4 696,00</b></div>
|
||||
<div class="tb-item"><span class="tb-lbl">Discount articole</span><b>84,00</b></div>
|
||||
<div class="tb-item tb-disc"><span class="tb-lbl">Discount document</span><span class="callout">4</span>
|
||||
<span class="inp num">0,00 %</span><b>0,00</b>
|
||||
<span class="check tiny"><span class="box on">✓</span> evidentiat pe factura</span>
|
||||
</div>
|
||||
<div class="tb-item tb-reason"><span class="tb-lbl">Motiv</span><span class="callout">5</span>
|
||||
<span class="inp ro">motivul discountului…</span>
|
||||
</div>
|
||||
<div class="tb-item"><span class="tb-lbl">TVA</span><b>986,16</b></div>
|
||||
<div class="tb-grand"><span class="tb-lbl">Total factura</span><b>5 682,16 lei</b></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="foot">
|
||||
<div class="duo">
|
||||
<section class="panel">
|
||||
<div class="ph">Discount pe document <span class="callout">4</span></div>
|
||||
<div class="pb">
|
||||
<div class="row">
|
||||
<div class="f w-xs"><label>Procent</label><div class="inp num">0,00</div></div>
|
||||
<div class="f w-md"><label>Suma (lei)</label><div class="inp num ro">0,00</div></div>
|
||||
</div>
|
||||
<div class="row"><span class="check"><span class="box on">✓</span> Se pune in evidenta discount-ul pe articole in notele contabile si pe factura</span></div>
|
||||
<div class="ph">▸ Incasare
|
||||
<span class="right"><span class="stlbl">NUMERAR · 5 570,55 lei</span></span>
|
||||
</div>
|
||||
</section>
|
||||
<section class="panel">
|
||||
<div class="ph">Totaluri</div>
|
||||
<div class="ph">▾ Alte date <span class="callout">2</span></div>
|
||||
<div class="pb">
|
||||
<div class="tot"><span>Total baza</span><b>4 696,00</b></div>
|
||||
<div class="tot"><span>Discount articole</span><b>84,00</b></div>
|
||||
<div class="tot"><span>TVA</span><b>986,16</b></div>
|
||||
<div class="tot grand"><span>Total factura</span><b>5 682,16 lei</b></div>
|
||||
<div class="row">
|
||||
<div class="f w-sm"><label>Venit/Chelt.</label><div class="inp ro">701</div></div>
|
||||
<div class="f w-sm"><label>Sectie</label><div class="inp ro">—</div></div>
|
||||
<div class="f w-sm"><label>Responsabil</label><div class="inp ro">—</div></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="f w-sm"><label>Delegat</label><div class="inp ro">IONESCU V.</div></div>
|
||||
<div class="f w-sm"><label>Masina</label><div class="inp ro">B 123 XYZ</div></div>
|
||||
<div class="f w-fill"><label>Adresa facturare</label><div class="inp ro">ca a clientului</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
@@ -346,18 +374,33 @@ ul.tight li, ol.tight li{margin:0 0 8px; color:var(--ink-2); font-size:13.5px}
|
||||
scadenta. Fara valuta si fara data de curs — factura e in lei si niciun articol nu are pret in
|
||||
valuta (sectiunea 4). <b>Cat anume deschide</b>, si de ce nu chiar tot in prima etapa:
|
||||
sectiunea 2.</p></div></div>
|
||||
<div class="leg"><span class="callout">2</span><div><h4>Restul, pliat — doua comutatoare</h4>
|
||||
<p>Analiticele, delegatul/transportul, adresa de facturare si textul aditional sub un comutator;
|
||||
<b>incasarea</b> sub altul, separat (decizia 41) — e singura cu efecte laterale reale
|
||||
(alocare/dezalocare de numere) si singura blocata pe document deja emis (decizia 25), deci garda
|
||||
de non-alocare la toggle se scrie si se testeaza intr-un singur loc. Pe un document <b>deja
|
||||
emis</b>, analiticele se vad dar nu se editeaza de aici — sectiunea 2.</p></div></div>
|
||||
<div class="leg"><span class="callout">2</span><div><h4>Randul de jos, doua sectiuni</h4>
|
||||
<p>Incasarea si alte date (analitice, delegat/transport, adresa de facturare, text aditional)
|
||||
stau colapsate, una langa alta, nu una sub alta (decizia 57). Sunt independente — se poate tine
|
||||
deschisa doar una — iar randul inchis arata rezumatul continutului, nu doar titlul: cand
|
||||
incasarea e completata arata suma si modalitatea, cand nu e nimic completat rezumatul spune asta.
|
||||
Campurile din interior stau pe orizontala, doua randuri fiecare. <b>A treia sectiune, pentru
|
||||
motivul discountului, a fost incercata si respinsa</b> — motivul sta langa discount, in banda de
|
||||
totaluri (decizia 66 rastoarna decizia 64).
|
||||
<b>Incasarea ramane cea deosebita</b> (decizia 41): e singura cu efecte laterale reale —
|
||||
alocare/dezalocare de numere — deci garda de non-alocare la deschidere se scrie si se testeaza
|
||||
intr-un singur loc, si e singura blocata pe un document deja emis (decizia 25). Tot pe document
|
||||
emis, analiticele se vad dar nu se editeaza de aici — sectiunea 2.</p></div></div>
|
||||
<div class="leg"><span class="callout">3</span><div><h4>Un singur buton de adaugare</h4>
|
||||
<p><i>Adauga articole</i> deschide un meniu cu optiunile potrivite sursei — sectiunea 3.
|
||||
Dispare gridul de sus cu toate articolele din toate politicile.</p></div></div>
|
||||
<div class="leg"><span class="callout">4</span><div><h4>Discount, procent si valoare</h4>
|
||||
<p>Amandoua exista deja azi, dar intr-un dialog separat pe fiecare articol. Aici sunt doua
|
||||
coloane in grid; tastezi in oricare, cealalta se calculeaza — sectiunea 5.</p></div></div>
|
||||
<div class="leg"><span class="callout">4</span><div><h4>Banda de totaluri, lipita de grid</h4>
|
||||
<p>Baza, discount articole, discount document si TVA, desfacute pe un singur rand, cu totalul
|
||||
mare singur la dreapta (decizia 57). Discountul de document se editeaza pe loc, procentul langa
|
||||
suma; bifa „se pune in evidenta…" de pe panoul care disparea s-a mutat aici, discret. Repartizarea
|
||||
pe cote de TVA e automata si proportionala (decizia 59) — nu se cere nimic utilizatorului.</p></div></div>
|
||||
<div class="leg"><span class="callout">5</span><div><h4>Motivul discountului, langa discount</h4>
|
||||
<p>Singura bucata din reparatia discountului de document care cere UI nou (decizia 61): text
|
||||
optional, ajunge in <code>AllowanceChargeReason</code> din eFactura (<code>ReasonCode</code>
|
||||
ramane <code>95</code>). Sta <b>in banda de totaluri, imediat dupa suma pe care o explica</b>
|
||||
(decizia 66) — nu ca sectiune separata jos, cum se stabilise la decizia 64. Ia latimea ramasa
|
||||
intre discount si TVA; <b>e activ doar cand discountul de document nu e zero</b> — un motiv fara
|
||||
discount n-are ce explica.</p></div></div>
|
||||
</div>
|
||||
|
||||
<h2><span class="n">2</span>Modificarea antetului, fara sa treci prin articole</h2>
|
||||
@@ -704,6 +747,13 @@ ul.tight li, ol.tight li{margin:0 0 8px; color:var(--ink-2); font-size:13.5px}
|
||||
daca e transmis in eFactura si SAF-T. Daca nu apare pe hartie, documentul tiparit nu explica
|
||||
totalul.
|
||||
</p>
|
||||
<p class="meta">
|
||||
<span class="pill have">decis</span> <b>Discountul de DOCUMENT (nu cel de linie, de mai sus) se
|
||||
repartizeaza proportional pe cote de TVA, nu pe cota maxima cum face codul de azi (decizia 59).</b>
|
||||
E automat, nu cere nimic de la operator. In banda de totaluri (sectiunea 1) se vede o singura suma;
|
||||
pe factura tiparita, cu cote mixte, pot aparea mai multe randuri „Discount X % Factura", cate unul
|
||||
per cota.
|
||||
</p>
|
||||
|
||||
<h2><span class="n">6</span>De unde se intra in formular</h2>
|
||||
<p class="sub">
|
||||
@@ -794,9 +844,27 @@ ul.tight li, ol.tight li{margin:0 0 8px; color:var(--ink-2); font-size:13.5px}
|
||||
filtreaza <code>STERS = 0</code>, deci trebuie citita inainte de stergere.</li>
|
||||
<li><span class="pill check">de verificat</span>
|
||||
<b>Stergerea si reemiterea in aceeasi tranzactie</b>, fara commit intre ele.</li>
|
||||
<li><span class="pill check">de verificat</span>
|
||||
<b>Pretul nu se re-deriva</b> la reemitere, pe ramurile unde serverul il recalculeaza din
|
||||
documentul sursa.</li>
|
||||
<li><span class="pill have">decis</span>
|
||||
<b>La reemitere se scriu valorile din formular, nu se reciteste sursa (decizia 54).</b> Intrebarea
|
||||
nu mai e ce garda punem peste re-derivare — e daca re-derivarea chiar se produce; raspunsul lui
|
||||
Marius: nu trebuie sa se produca. Fara avertizare si fara confirmare, a fost respinsa explicit.</li>
|
||||
<li><span class="pill have">decis</span>
|
||||
<b>Atasamentul PDF al documentului vechi se sterge la reemitere, nu se remigreaza (decizia 53).</b>
|
||||
Documentul reemis porneste curat; PDF-ul se regenereaza la prima listare.</li>
|
||||
<li><span class="pill have">decis</span>
|
||||
<b>Facturile de marfa in custodie (tipurile 48 si 49) sunt editabile prin #13 (decizia 60).</b>
|
||||
Cu restrictia pastrata: pe ele nu se pot adauga articole gestionabile
|
||||
(<code>IN_STOC <> 0</code>).</li>
|
||||
<li><span class="pill have">decis</span>
|
||||
<b>Singura restrictie de modificare e ca documentul sa nu fi fost trimis in eFactura (decizia
|
||||
62).</b> Fara nicio conditie de data, fara retroactivitate.</li>
|
||||
<li><span class="pill have">decis</span>
|
||||
<b>Auditul (data + utilizator pentru adaugare, modificare si stergere) se afiseaza in gridul din
|
||||
<code>frm_facturi</code>, nu in formularul unificat (deciziile 63 si 65).</b> Formularul nu capata
|
||||
niciun control nou din cerinta de audit.</li>
|
||||
<li><span class="pill have">decis</span>
|
||||
<b><code>do_modifica</code> de pe <code>frm_facturi</code> ramane activ pentru multi-selectie
|
||||
(decizia 52).</b> Formularul unificat preia doar cazul cu un singur document.</li>
|
||||
<li><span class="pill check">de verificat</span>
|
||||
<b>Descarcarea de gestiune pe proforma</b>, pe partea Oracle.</li>
|
||||
<li><span class="pill check">de verificat</span>
|
||||
|
||||
Reference in New Issue
Block a user