sync SVN r18202
This commit is contained in:
49
skills/roa-vfp-frx-report/references/stil-rapoarte.md
Normal file
49
skills/roa-vfp-frx-report/references/stil-rapoarte.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user