3.1 KiB
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, nurecno()(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 = exactEXPR-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), mascaget_mask(14,gnpa)peste tot (si la total). - Linii verticale in detaliu:
OBJTYPE=6,STRETCH=.T., aceleasiHPOSca 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.