Files
comun/skills/roa-vfp-frx-report/references/stil-rapoarte.md
2026-09-24 23:07:59 +03:00

50 lines
3.1 KiB
Markdown

# 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).
## Total si subsol de document (Group Footer)
- 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.