Files
2026-09-24 23:07:59 +03:00

3.1 KiB

Stilul rapoartelor ROA (aprobat de Marius pe Rapoarte/pvcasare_mf)

Model de referinta: Rapoarte/pvcasare_mf.fr2 (portret, grupare per document, tabel cu linii). Aplica stilul de la inceput; fiecare punct de mai jos a costat o runda de corectura.

Pagina si fonturi

  • Portret (ORIENTATION=0, A4) daca incape; tabelul pe ~74000 FRU, toate obiectele cu acelasi X max.
  • Firma (goFirma.Antet): Arial 10 bold. Titlul: Arial 12 bold, centrat.
  • Restul (texte, cap de tabel, detaliu, total, comisie): Arial Narrow 10 (bold la capete si total). Subsolul de pagina: Arial Narrow 8.
  • Texte fixe fara diacritice, sentence case ("Numar document", nu "NUMAR DOCUMENT").

Grupare

  • Un document (PV, factura etc.) per grup, cu pagina noua: GH cu EXPR = cheia documentului (ex. ALLTRIM(NVL(nrdoc,'')) + '|' + DTOS(NVL(datadoc,{}))), PAGEBREAK=.T..
  • Continutul per document (numar/data, texte, cap de tabel) sta in Group Header, nu in Page Header; toate obiectele din GH cu SUPRPCOL=3, SUPGROUP=6. Page Header doar firma + titlu.
  • Nr. crt. si totalurile se reseteaza pe grup: variabile de raport (Count / Sum, RESETTOTAL=6), nu precalcul in cursor, nu recno() (totaluri.md).

Ordonare

  • Ordinea o da cursorul, nu raportul: INDEX ON <cheia grupului> + <sortarea din grup> (ex. Alltrim(nrdoc) + '|' + Dtos(datadoc) + denumire). Cheia din INDEX = exact EXPR-ul GH, altfel grupul se rupe in mai multe pagini.
  • Campuri din Oracle: NULL si tipuri reale (nrdoc numeric, datadoc datetime) -> Nvl, Iif(Isnull...), Str(); testeaza cu tipurile reale, nu doar cu cursori sintetici.

Tabel

  • Cap de tabel pe un singur rand, texte scurte ("Amortizare", nu "Amortizarea pana la ..."), centrate (@I), fundal gri (FILL*=200, MODE=0) doar pana la marginea tabelului, linie sub cap.
  • Coloana de text lunga (Denumirea) lata; coloanele numerice cat valoarea maxima cu masca. Text la stanga, numere la dreapta (OFFSET=1), masca get_mask(14,gnpa) peste tot (si la total).
  • Linii verticale in detaliu: OBJTYPE=6, STRETCH=.T., aceleasi HPOS ca in capul de tabel.
  • Campul de text care se poate lungi (Denumirea): STRETCH=.T. (se rupe pe mai multe randuri, nu se trunchiaza).
  • Linie orizontala sub fiecare rand de detaliu, pe toata latimea tabelului, la baza benzii Detail, cu FLOAT=.T. (STRETCH=.F., TOP=.F.) - altfel ramane sus cand randul se lungeste.
  • Tabelul se inchide doar cu linia ultimului rand: fara linie suplimentara la inceputul GF (se dubleaza si iese o linie groasa).
  • Fara spatiu gol intre capul de tabel si primul rand (detaliul incepe imediat sub linia capului).
  • Randul "TOTAL" fara chenar, sub tabel, valorile aliniate sub coloanele lor, aceeasi masca.
  • Comisia: tabel cu perechi "Nume si prenume | Semnatura" alaturate, pe latimea tabelului, un singur rand gol pentru semnaturi (nu 3).

Verificare specifica stilului

  • Test cu o denumire lunga (3-4 randuri): linia orizontala coboara sub rand, verticalele se intind.
  • Doua documente -> doua pagini, nr. crt. reincepe de la 1, totalurile per document.