From 54b473bf48224fe0f2fcc8a1d770d0caf608aeb1 Mon Sep 17 00:00:00 2001 From: ale Date: Thu, 10 Oct 1996 12:05:58 +0000 Subject: [PATCH] Correzione errori git-svn-id: svn://10.65.10.50/trunk@3747 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- m770/772.cpp | 58 +- m770/77qaall.h | 8 +- m770/77qc.frm | 47 +- m770/77qd.frm | 40 +- m770/77qd1.frm | 17 +- m770/77stba.cpp | 2910 +++++++++++++++++++++++------------------------ m770/77stba.h | 630 +++++----- m770/77stq.cpp | 187 +-- m770/77stq.h | 565 ++++----- m770/77stqc.cpp | 674 +++++------ m770/77stqc.h | 78 +- m770/anadip.h | 118 +- m770/base.h | 208 ++-- m770/caus77.h | 10 +- m770/pe1.h | 36 +- m770/rpag.h | 46 +- 16 files changed, 2844 insertions(+), 2788 deletions(-) diff --git a/m770/772.cpp b/m770/772.cpp index 67f012651..18df47252 100755 --- a/m770/772.cpp +++ b/m770/772.cpp @@ -1,29 +1,29 @@ -#include -#include -#include "770.h" -#include "772.h" - -#define usage "Error - usage : %s -{0|1|2|3}" - -int main(int argc,char** argv) -{ - const int n = (argc > 1) ? atoi(argv[1]+1) : -1; - - switch (n) - { - case 0: - m72100(argc,argv); break; - case 1: - m72200(argc,argv); break; - case 2: - m72300(argc,argv); break; - case 3: - m72400(argc,argv); break; - case 4: - stampa_quadro(argc,argv); break; - default: - error_box(usage, argv[0]) ; - } - return 0; -} - +#include +#include +#include "770.h" +#include "772.h" + +#define usage "Error - usage : %s -{0|1|2|3}" + +int main(int argc,char** argv) +{ + const int n = (argc > 1) ? atoi(argv[1]+1) : -1; + + switch (n) + { + case 0: + m72100(argc,argv); break; + case 1: + m72200(argc,argv); break; + case 2: + m72300(argc,argv); break; + case 3: + m72400(argc,argv); break; + case 4: + stampa_quadro(argc,argv); break; + default: + error_box(usage, argv[0]) ; + } + return 0; +} + diff --git a/m770/77qaall.h b/m770/77qaall.h index 56fa2e45f..0970b6082 100755 --- a/m770/77qaall.h +++ b/m770/77qaall.h @@ -1,5 +1,5 @@ -// 77qaall.h -#define QA_ANNO_ALL 101 -#define QA_NUM_ALL 102 -#define QA2_NUM_ALL 103 +// 77qaall.h +#define QA_ANNO_ALL 101 +#define QA_NUM_ALL 102 +#define QA2_NUM_ALL 103 #define QA2_ANNO_ALL 104 \ No newline at end of file diff --git a/m770/77qc.frm b/m770/77qc.frm index 58c22b52f..b1509b8c7 100755 --- a/m770/77qc.frm +++ b/m770/77qc.frm @@ -8,7 +8,7 @@ JOIN 13 TO 6 ALIAS 213 INTO COM=COMRF(COMRES) JOIN 6 TO 61 ALIAS 216 INTO TIPOA=TIPOA CODANAGR=CODANAGR JOIN 8 TO 216@ ALIAS 218 INTO CODANAGR=CODANAGR JOIN 13 TO 218@ ALIAS 313 INTO COM=COMNASC -JOIN 13 TO 216@ ALIAS 413 INTO COM=COMRES +JOIN 13 TO 216@ ALIAS 413 INTO STATO=STATORES COM=COMRES JOIN %STA TO 216@ ALIAS 24 INTO CODTAB=STATORES END @@ -50,14 +50,14 @@ END STRINGA 1 BEGIN KEY "CODICE FISCALE" - PROMPT 3 10 "" + PROMPT 3 9 "" FIELD 116@->COFI END STRINGA 2 BEGIN KEY "RAGIONE SOCIALE" - PROMPT 39 10 "" + PROMPT 39 9 "" FIELD 116@->RAGSOC GROUP 2 END @@ -65,7 +65,7 @@ END STRINGA 3 BEGIN KEY "COGNOME" - PROMPT 39 10 "" + PROMPT 39 9 "" FIELD 116@->RAGSOC[1,30] GROUP 1 END @@ -73,7 +73,7 @@ END STRINGA 4 BEGIN KEY "NOME" - PROMPT 17 12 "" + PROMPT 17 11 "" FIELD 116@->RAGSOC[31,50] GROUP 1 END @@ -81,7 +81,7 @@ END STRINGA 5 BEGIN KEY "SESSO" - PROMPT 59 12 "" + PROMPT 59 11 "" FIELD 118@->SESSO GROUP 1 END @@ -89,7 +89,7 @@ END STRINGA 6 BEGIN KEY "DATA DI NASCITA" - PROMPT 63 12 "" + PROMPT 67 11 "" FIELD 118@->DATANASC GROUP 1 END @@ -97,7 +97,7 @@ END STRINGA 7 BEGIN KEY "COMUNE DI NASCITA" - PROMPT 83 12 "" + PROMPT 83 11 "" FIELD 113@->DENCOM GROUP 1 END @@ -105,7 +105,7 @@ END STRINGA 8 BEGIN KEY "PROV. DI NASCITA" - PROMPT 125 12 "" + PROMPT 125 11 "" FIELD 113@->PROVCOM GROUP 1 END @@ -113,21 +113,21 @@ END STRINGA 10 BEGIN KEY "COMUNE DI RES.FISCALE" - PROMPT 17 14 "" + PROMPT 17 13 "" FIELD 213@->DENCOM END STRINGA 11 BEGIN KEY "PROV DI RES.FISCALE" - PROMPT 59 14 "" + PROMPT 59 13 "" FIELD 213@->PROVCOM END STRINGA 12 BEGIN KEY "VIA di RES." - PROMPT 67 14 "" + PROMPT 67 13 "" FIELD 116@->INDRF FIELD 116@->INDRES FLAGS "H" @@ -137,7 +137,7 @@ END STRINGA 15 BEGIN KEY "NUM. CIVICO di RES." - PROMPT 103 14 "" + PROMPT 103 13 "" FIELD 116@->CIVRF FIELD 116@->CIVRES FLAGS "H" @@ -147,13 +147,13 @@ END STRINGA 17 BEGIN KEY "VIA + NUM CIV. DI RES." - PROMPT 67 14 "" + PROMPT 67 13 "" END STRINGA 16 BEGIN KEY "CAP" - PROMPT 124 14 "" + PROMPT 124 13 "" FIELD 116@->CAPRF FIELD 116@->CAPRES END @@ -161,13 +161,13 @@ END STRINGA 13 BEGIN KEY "CODICE FISCALE DICHIARANTE" - PROMPT 105 17 "" + PROMPT 105 16 "" END NUMBER 14 BEGIN KEY "NUM. FOGLIO" - PROMPT 125 20 "" + PROMPT 125 19 "" END END @@ -329,7 +329,7 @@ BEGIN PROMPT 91 5 "" PICTURE "###.###.###^^^" MESSAGE ADD,FL->17 - FIELD 61->IMPONIBILE +// FIELD 61->IMPONIBILE END NUMBER 18 @@ -338,7 +338,7 @@ BEGIN PROMPT 105 5 "" PICTURE "###.###.###^^^" MESSAGE ADD,FL->18 - FIELD 61->RITENUTE +// FIELD 61->RITENUTE END NUMBER 19 @@ -347,7 +347,7 @@ BEGIN PROMPT 120 5 "" PICTURE "###.###.###^^^" MESSAGE ADD,FL->19 - FIELD 61->NETTO +// FIELD 61->NETTO END END @@ -395,5 +395,12 @@ BEGIN PROMPT 120 1 "" PICTURE "###.###.###^^^" END + +STRINGA 2 +BEGIN + KEY "FIRMA" + PROMPT 83 5 "" + FIELD 116@->RAGSOC +END END diff --git a/m770/77qd.frm b/m770/77qd.frm index 1fda0c3f1..92a87b0bc 100755 --- a/m770/77qd.frm +++ b/m770/77qd.frm @@ -8,8 +8,8 @@ JOIN 13 TO 6 ALIAS 213 INTO COM=COMRF(COMRES) JOIN 6 TO 62 ALIAS 216 INTO TIPOA=TIPOA CODANAGR=CODANAGR JOIN 8 TO 216@ ALIAS 218 INTO CODANAGR=CODANAGR JOIN 13 TO 218@ ALIAS 313 INTO COM=COMNASC -JOIN 13 TO 216@ ALIAS 413 INTO COM=COMRES -JOIN 13 TO 216@ ALIAS 513 INTO COM=COMRF(COMRES) +JOIN 13 TO 216@ ALIAS 413 INTO STATO=STATORES COM=COMRES +JOIN 13 TO 216@ ALIAS 513 INTO STATO=""(STATORES) COM=COMRF(COMRES) JOIN %STA TO 216@ ALIAS 24 INTO CODTAB=STATORES END @@ -37,7 +37,7 @@ BEGIN FI 131 END -SECTION HEADER FIRST 19 +SECTION HEADER FIRST 20 LISTA 9 BEGIN @@ -348,14 +348,14 @@ END STRING 15 BEGIN KEY "DESCR. CAUSALE" - PROMPT 11 7 "" - FIELD 14@->S0[1,20] + PROMPT 12 7 "" + FIELD 14@->S2 END NUMBER 16 BEGIN KEY "TOTALE" - PROMPT 42 7 "" + PROMPT 26 7 "" // FIELD 62->TOTALE PICTURE "###.###.###^^^" MESSAGE ADD,FL->16 @@ -364,7 +364,7 @@ END NUMBER 17 BEGIN KEY "SOMME NON SOGGETTE A RITENUTA" - PROMPT 61 7 "" + PROMPT 47 7 "" // FIELD 62->SOMME PICTURE "###.###.###^^^" MESSAGE ADD,FL->17 @@ -373,7 +373,7 @@ END NUMBER 18 BEGIN KEY "IMPONIBILE" - PROMPT 82 7 "" + PROMPT 67 7 "" // FIELD 62->IMPONIBILE PICTURE "###.###.###^^^" MESSAGE ADD,FL->18 @@ -382,7 +382,7 @@ END STRING 19 BEGIN KEY "ALIQUOTA" - PROMPT 93 7 "" + PROMPT 84 7 "" FIELD 62->PERC PICTURE "###@@" END @@ -390,7 +390,7 @@ END NUMBER 20 BEGIN KEY "IMPORTO" - PROMPT 106 7 "" + PROMPT 100 7 "" // FIELD 62->IMPORTO PICTURE "###.###.###^^^" MESSAGE ADD,FL->20 @@ -399,7 +399,7 @@ END NUMBER 21 BEGIN KEY "NETTO" - PROMPT 126 7 "" + PROMPT 120 7 "" // FIELD 62->NETTO PICTURE "###.###.###^^^" MESSAGE ADD,FL->21 @@ -407,33 +407,33 @@ END END -SECTION FOOTER LAST 1 +SECTION FOOTER LAST 5 NUMBER 16 BEGIN KEY "TOTALE TOTALE" - PROMPT 36 1 "" + PROMPT 26 1 "" PICTURE "###.###.###^^^" END NUMBER 17 BEGIN KEY "TOTALE SOMME NON SOGGETTE" - PROMPT 55 1 "" + PROMPT 47 1 "" PICTURE "###.###.###^^^" END NUMBER 18 BEGIN KEY "TOTALE IMPONIBILE" - PROMPT 75 1 "" + PROMPT 67 1 "" PICTURE "###.###.###^^^" END NUMBER 20 BEGIN KEY "TOTALE IMPORTO" - PROMPT 101 1 "" + PROMPT 100 1 "" PICTURE "###.###.###^^^" END @@ -444,4 +444,12 @@ BEGIN PICTURE "###.###.###^^^" END +STRINGA 2 +BEGIN + KEY "FIRMA" + PROMPT 83 5 "" + FIELD 116@->RAGSOC + GROUP 2 +END + END diff --git a/m770/77qd1.frm b/m770/77qd1.frm index ecfdea6db..6e069ff1b 100755 --- a/m770/77qd1.frm +++ b/m770/77qd1.frm @@ -8,8 +8,8 @@ JOIN 13 TO 6 ALIAS 213 INTO COM=COMRF(COMRES) JOIN 6 TO 63 ALIAS 216 INTO TIPOA=TIPOA CODANAGR=CODANAGR JOIN 8 TO 216@ ALIAS 218 INTO CODANAGR=CODANAGR JOIN 13 TO 218@ ALIAS 313 INTO COM=COMNASC -JOIN 13 TO 216@ ALIAS 413 INTO COM=COMRES -JOIN 13 TO 216@ ALIAS 513 INTO COM=COMRF(COMRES) +JOIN 13 TO 216@ ALIAS 413 INTO STATO=STATORES COM=COMRES +JOIN 13 TO 216@ ALIAS 513 INTO STATO=""(STATORES) COM=COMRF(COMRES) JOIN %STA TO 216@ ALIAS 24 INTO CODTAB=STATORES END @@ -170,6 +170,8 @@ BEGIN PROMPT 125 22 "" END +END + STRINGA 21 BEGIN KEY "Ritenuta d'acconto" @@ -181,9 +183,6 @@ BEGIN KEY "Ritenuta d'imposta" PROMPT 110 22 "" END - -END - SECTION BODY ODD 6 LISTA 100 @@ -456,4 +455,12 @@ BEGIN PICTURE "###.###.###^^^" END +STRINGA 2 +BEGIN + KEY "FIRMA" + PROMPT 83 5 "" + FIELD 116@->RAGSOC + GROUP 2 +END + END diff --git a/m770/77stba.cpp b/m770/77stba.cpp index 9eeabc2c3..0f08ce48b 100755 --- a/m770/77stba.cpp +++ b/m770/77stba.cpp @@ -1,1455 +1,1455 @@ -// Stampa base -#include "77stba.h" -const int _RIGHE_N = 6; -const int _RIGHE_R = 2; -const int _RIGHE_P = 4; -const int _RIGHE_Q = 4; -const int _RIGHE_S = 4; -const int _RIGHE_T = 4; -const int _RIGHE_NA = 8; -const int _RIGHE_RA = 4; -const int _RIGHE_PA = 10; -const int _RIGHE_QA = 4; -const int _RIGHE_SA = 6; -const int _RIGHE_TA = 4; - -int TBase1::dic_form_len() const -{ - if (curr_page()==PRIMA && _PaginaPosizionamento) - return BASE_FORMLEN-HEADER_PRIMA_NOPOS; - else - return BASE_FORMLEN; -} - -int TBase1::prima_riga(PaginaQuadro p) const -{ - if (p==PRIMA && _PaginaPosizionamento) - return 11; - else - return 11+HEADER_PRIMA_NOPOS; -} - -TBase1::TBase1(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) -{ - r = new TRelation(LF_SOCI); - r->add(LF_ANAG, "TIPOA=TIPOASOC|CODANAGR=CODANAGRSO"); - r->add(LF_ANAGFIS, "CODANAGR=CODANAGR",1, LF_ANAG); - r->add(LF_COMUNI, "COM=COMNASC",1,LF_ANAGFIS); - c = new TCursor(r); - _bAllegSoci=FALSE; -} - -TBase1::~TBase1() -{ - delete r; - delete c; -} - -void TBase1::stampa_corpo(TPrinter& pr) -{ - TPrint_section& body = section('B', first_page); - body.reset(); - body.update(); - const int body_righe = body.height(); - for (int i = 0; i < body_righe; i++) - { - pr.print(body.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); -} - -// accetta solo quelli con qualifica=A,B o C -bool bFiltraSoci(const TRelation* rel) -{ - TString sQual(3); - sQual = rel->lfile().get("RICQUAL"); - return sQual=="A" || sQual=="B" || sQual=="C"; -} - -long TBase1::iContaSoci() -{ - TString filtro(20); - filtro.format("CODDITTA=%d",_codditta); - c->setfilter(filtro); - c->set_filterfunction(bFiltraSoci); - (*c)=0L; - return c->items(); -} - -const int _INIZIO_SOCI=53; -void TBase1::stampa_soci(TPrinter& pr) -{ - TPrint_section& fut = section('F', first_page); - fut.reset(); - jump_to_line(pr,_INIZIO_SOCI); - const long iSoci = iContaSoci(); - if (iSoci > 11) - { - _bAllegSoci=TRUE; - TPrintrow& rg=fut.row(0); - rg.put("VEDERE ALLEGATO", 25); - pr.print(rg); - _RigaCorr++; - if (usa_progind()) progind()->addstatus(1); - } - else - { - int i=0; - TString sRagsoc,sSesso,sComuneNa,sProvNa,sDataNa,sCodFis,sCodQua; - for ((*c)=0L; c->pos() < c->items(); ++(*c)) - { - TString sNome,sCognome; - TPrintrow& rg=fut.row(i++); - sCodQua=c->file().get("RICQUAL"); - sRagsoc=c->file(LF_ANAG).get("RAGSOC"); - sCodFis=c->file(LF_ANAG).get("COFI"); - sDataNa=c->file(LF_ANAGFIS).get("DATANASC"); - sSesso=c->file(LF_ANAGFIS).get("SESSO"); - sComuneNa=c->file(LF_COMUNI).get("DENCOM"); - sComuneNa.cut(28); - sProvNa=c->file(LF_COMUNI).get("PROVCOM"); - fut.field(0).set(sRagsoc); - sCognome=sRagsoc.left(30); - sCognome.trim(); - sNome=sRagsoc.mid(30,0); - sNome.trim(); - sRagsoc = sCognome; - sRagsoc << " " << sNome; - rg.put(sRagsoc,fut.field(0).x()-1); - fut.field(1).set(sSesso); - rg.put(sSesso,fut.field(1).x()-1); - fut.field(2).set(sComuneNa); - rg.put(sComuneNa,fut.field(2).x()-1); - fut.field(3).set(sProvNa); - rg.put(sProvNa,fut.field(3).x()-1); - fut.field(4).set(sDataNa); - rg.put(sDataNa,fut.field(4).x()-1); - fut.field(5).set(sCodFis); - rg.put(sCodFis,fut.field(5).x()-1); - fut.field(6).set(sCodQua); - rg.put(sCodQua,fut.field(6).x()-1); - pr.print(rg); - _RigaCorr++; - if (usa_progind()) progind()->addstatus(1); - } - } -} - -bool TBase1::print(const long codditta, const long NumFis, const long NumNoFis) -{ - TCursor* cur = cursor(); - TPrinter& pr = printer(); - _codditta=codditta; - - if (!InitPrint(codditta)) - return FALSE; - pr.formlen(BASE_FORMLEN); - - (*cur)=0L; - if (_modulaser) - { - ClearFlagModulaser(); - TPrintrow r; - if (!_GiaMessoStartDoc) - put_modulaser(r, STARTDOC); - put_modulaser(r, STARTDITTA); - put_modulaser(r, STARTPAGE, 1); - pr.print(r); - _RigaCorr++; - } - jump_to_line(pr, prima_riga(PRIMA)); - stampa_corpo(pr); - stampa_soci(pr); - next_page(pr); - close_print(); - return TRUE; -} - -void TBase2::stampa_corpo(TPrinter& pr) -{ - TPrint_section& body = section('B', even_page); - body.reset(); - body.update(); - const int body_righe = body.height(); - for (int i = 0; i < body_righe; i++) - { - pr.print(body.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); -} - -bool TBase2::print(const long codditta, const long NumFis, const long NumNoFis) -{ - TCursor* cur = cursor(); - TPrinter& pr = printer(); - _codditta=codditta; - filtra(codditta); - _RigaCorr=0; - (*cur)=0L; - jump_to_line(pr, prima_riga(PRIMA)); - stampa_corpo(pr); - next_page(pr); - close_print(); - return TRUE; -} - -long TBase3::filtra(const long codditta) -{ - TString filtr(24); - _codditta=codditta; - filtr.format("(CODDITTA==%ld)&&(QLAP==%d)", codditta, anno_770()); - cursor()->setfilter(filtr, TRUE); - const long items = cursor()->items(); - return items; -} - -void TBase3::stampa_testata(TPrinter& pr) -{ - TPrint_section& hh = section('H', first_page); - hh.reset(); - hh.update(); - const int hhr = hh.height(); - for (int i = 0; i < hhr; i++) - { - pr.print(hh.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); -} - -int TBase3::stampa_L(TPrinter& pr,const int iChiaveL) -{ - long codit=0L; - TPrint_section& body = section('B', odd_page); - body.reset(); - - TCursor& cur = *cursor(); -// Le chiavi nel file e nel .ini sono saggiamente scambiate - if (iChiaveL==2) - cur.setkey(1); - else - cur.setkey(2); - -// filtra(_codditta); - - bool finito=FALSE; - int righe=0; - while (!finito) - { - body.update(); - const int body_righe = body.height(); - for (int i = 0; i < body_righe; i++) - { - TPrintrow& rr=body.row(i); - pr.print(rr); - rr.reset(); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); - righe++; - ++cur; - codit=cur.file().get_long("CODDITTA"); - bool buono=codit==_codditta; -// Guarda se e' necessario stampare l'aggiuntivo - _bAggiuntivoL = buono && righe>14; - finito=righe>14 || codit!=_codditta; - } - return righe; -} - -void TBase3::stampa_totali_L(TPrinter& pr) -{ -// La sezione f last contiene solo due totali aggiornati con add nel form - TPrint_section& hh = section('F', last_page); -// hh.reset(); - hh.update(); - const int hhr = hh.height(); - for (int i = 0; i < hhr; i++) - { - pr.print(hh.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); -} - -bool TBase3::print(const long codditta, const long NumFis, const long NumNoFis) -{ - _bAggiuntivoL=TRUE; - TCursor* cur = cursor(); - TPrinter& pr = printer(); - _codditta=codditta; - filtra(codditta); - _RigaCorr=0; - (*cur)=0L; - jump_to_line(pr, prima_riga(PRIMA)); -// Stampa i codici concessione e tesoreria - stampa_testata(pr); -// Legge dai par.studio l'ordinamento da usare per L - TConfig conf(CONFIG_STUDIO); - const int iChiaveL = (int)conf.get_long("FlStQl", "77"); - const int righe_stampate=stampa_L(pr,iChiaveL); -// Se la stampa prosegue i totali vanno sull'aggiuntivo NON qui - if (!_bAggiuntivoL) - { - jump_to_line(pr,_RIGA_TOTALI_L); - stampa_totali_L(pr); - } - next_page(pr); - close_print(); - return TRUE; -} - -const char* TRigaN::sMeseRif() const -{ - __dep16=""; - __dep16 << _MeseRif; - return __dep16; -} - -const char* TRigaN::sAnnoRif() const -{ - __dep16=""; - __dep16 << _AnnoRif; - return __dep16; -} - -// Ordina le righe N per periodo di riferimento -int TRigaN::compare(const TSortable& s) const -{ - const TRigaN& rec = (const TRigaN&)s; - const int da = _AnnoRif - rec._AnnoRif; - const int dm = _MeseRif - rec._MeseRif; - if (da==0) - return dm; - else - return da; -} - -TRigaN::TRigaN(const TLocalisamfile& qn) -{ - _pos = qn.recno(); - - const TRectype& rec = qn.curr(); - - _MeseRif = rec.get_int("MESERIF"); - _AnnoRif = rec.get_int("ANNORIF"); -// Nel quadro R si chiama diversamente @!#@!!! - if (qn.num() == LF_QUAN) - _ImpRimb = rec.get_real("IMPOSTA"); - else - _ImpRimb = rec.get_real("IMPRIMB"); - _CompAss = rec.get_real("COMPENSI"); -} - -int TRigheNR::fill(const long codditta,TLocalisamfile& qnr) -{ - long ditta=0L; - _data.destroy(); -// Si posiziona sul primo della ditta corrente - qnr.zero(); - qnr.put("CODDITTA",codditta); - qnr.read()==NOERR; - ditta=qnr.get_long("CODDITTA"); - if (ditta!=codditta) return 0; - -// Legge tutti quelli della ditta corrente - for (; !qnr.eof(); qnr.next()) - { - ditta=qnr.get_long("CODDITTA"); - if (ditta!=codditta) break; - - TRigaN* n = new TRigaN(qnr); - if (n->pos() >= 0) - _data.add(n); - else - delete n; - } - _data.sort(); - const int i = _data.items(); - return i; -} - -const char* TRigaQT::sMesePag() const -{ - __dep16=""; - __dep16 << _MesePag; - return __dep16; -} - -const char* TRigaQT::sAnnoPag() const -{ - __dep16=""; - __dep16 << _AnnoPag; - return __dep16; -} - -// Ordina le righe N per periodo di riferimento -int TRigaQT::compare(const TSortable& s) const -{ - const TRigaQT& rec = (const TRigaQT&)s; - const int da = _AnnoPag - rec._AnnoPag; - const int dm = _MesePag - rec._MesePag; - if (da==0) - return dm; - else - return da; -} - -TRigaQT::TRigaQT(const TLocalisamfile& qt) -{ - const TRectype& rec = qt.curr(); - - _MesePag = rec.get_int("MESEPAG"); - _AnnoPag = rec.get_int("ANNOPAG"); - _ContVers = rec.get_real("CONTVERS"); - _ContRimb = rec.get_real("CONTRIMB"); - _Interessi=rec.get_real("INTERESSI"); - _sCodReg=rec.get("CODREG"); -} - -int TRigheQT::fill(const long codditta,TLocalisamfile& qt) -{ - long ditta=0L; -// Si posiziona sul primo della ditta corrente - _data.destroy(); - qt.zero(); - qt.put("CODDITTA",codditta); - qt.read()==NOERR; - ditta=qt.get_long("CODDITTA"); - if (ditta!=codditta) return 0; - -// Legge tutti quelli della ditta corrente - for (; !qt.eof(); qt.next()) - { - ditta=qt.get_long("CODDITTA"); - if (ditta!=codditta) break; - - TRigaQT* n = new TRigaQT(qt); - if (n->pos() >= 0) - _data.add(n); - else - delete n; - } - _data.sort(); - const int i = _data.items(); - return i; -} - -// Ordina le righe N per periodo di riferimento -int TRigaPS::compare(const TSortable& s) const -{ - const TRigaPS& rec = (const TRigaPS&)s; - TDate dtDataS = rec.dDataVers(); - const int month=_dDv.month(); - const int year=_dDv.year(); - const int da = year - dtDataS.year(); - const int dm = month - dtDataS.month(); - if (da==0) - return dm; - else - return da; - - return _dDvpos() >= 0) - _data.add(n); - else - delete n; - } - _data.sort(); - const int i = _data.items(); - return i; -} - -int TBase4::calcola_firma() -{ - TPrint_section& totali = section('F', first_page); - TForm_item& signature = totali.find_field(_IdFirma); - const int y = signature.y(); - TString spazi(50); spazi.fill(' '); - TString cognome = signature.get(); - if (cognome.len() > 30 && cognome[29] == ' ') - { - TString nome = cognome.mid(30, -1); - cognome.cut(30); cognome.trim(); - cognome << ' ' << nome; - signature.set(cognome); - - totali.row(y-1).put(spazi, signature.x()-1); - totali.row(y-1).put(cognome, signature.x()-1); - } - return y; -} - -void TBase4::stampa_testata(TPrinter& pr) -{ - TPrint_section& hh = section('H', first_page); - hh.reset(); - hh.update(); - const int hhr = hh.height(); - for (int i = 0; i < hhr; i++) - { - pr.print(hh.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); -} - -void TBase4::fill_riga_QT(TPrint_section& sec,const int num) -{ - TString sVal; - int start=1,end=6; - for (int i = start; i <= end; i++) - { - TForm_item& fi = sec.find_field(i); - if (num < _righeQT.items()) - { - const TRigaQT& rN = _righeQT[num]; - if (i==start) - sVal=rN.sMesePag(); - else if (i==start+1) - sVal=rN.sAnnoPag(); - else if (i==start+2) - sVal=rN.ContVers(fi.picture()); - else if (i==start+3) - sVal=rN.ContRimb(fi.picture()); - else if (i==start+4) - sVal=rN.Interessi(fi.picture()); - else if (i==start+5) - sVal=rN.CodReg(); - } - else - sVal=""; - fi.set(sVal); - TPrintrow& row=sec.row(0); - row.put(sVal,fi.x()-1); - } -} - -void TBase4::stampa_Q(TPrinter& pr) -{ - TPrint_section& body = section('F', even_page); - body.reset(); - TLocalisamfile qp(LF_QUAQ); - _righeQT.fill(_codditta,qp); - _bAggQ = _righeQT.items() > _RIGHE_Q; - - int riga=0; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { -// Stampa la parte sinistra (primi 4 campi) - fill_riga_QT(body,riga); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - riga++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_Q-1; - } -// Salta due righe alla fine - stampa_righe_vuote(pr,2); -} - -void TBase4::stampa_T(TPrinter& pr) -{ - TPrint_section& body = section('F', odd_page); - body.reset(); - TLocalisamfile qp(LF_QUAT); - _righeQT.fill(_codditta,qp); - _bAggT = _righeQT.items() > _RIGHE_T; - - int riga=0; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { -// Stampa la parte sinistra (primi 4 campi) - fill_riga_QT(body,riga); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - riga++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_T-1; - } -} - -void TBase4::fill_riga_PS(TPrint_section& sec,const int num) -{ - TString sVal,sDep; - int start=1,end=8; - for (int i = start; i <= end; i++) - { - TForm_item& fi = sec.find_field(i); - if (num < _righePS.items()) - { - const TRigaPS& rN = _righePS[num]; - if (i==start) - sVal=rN.sImposta(fi.picture()); - else if (i==start+1) - sVal=rN.sIntDip(fi.picture()); - else if (i==start+2) - sVal=rN.sIntDat(fi.picture()); - else if (i==start+3) - sVal=rN.sTipoVers(); - else if (i==start+4) - sVal=rN.sCodTrib(); - else if (i==start+5) - { - sDep=rN.sDataVers(); - sVal.picture(fi.picture(),sDep); - } - else if (i==start+6) - sVal=rN.sSerie(); - else if (i==start+7) - sVal=rN.sNumero(); - } - else - sVal=""; - fi.set(sVal); - TPrintrow& row=sec.row(0); - row.put(sVal,fi.x()-1); - } -} - -void TBase4::stampa_P(TPrinter& pr) -{ - TPrint_section& body = section('H', even_page); - body.reset(); - TLocalisamfile qp(LF_QUAP); - _righePS.fill(_codditta,qp); - const int items=_righePS.items(); - _bAggP = items > _RIGHE_P; - - int riga=0; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { -// Stampa la parte sinistra (primi 4 campi) - fill_riga_PS(body,riga); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - riga++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_P-1; - } -// Salta due righe alla fine - stampa_righe_vuote(pr,2); -} - -void TBase4::stampa_S(TPrinter& pr) -{ - TPrint_section& body = section('H', even_page); - body.reset(); - TLocalisamfile qp(LF_QUAS); - _righePS.fill(_codditta,qp); - _bAggS = _righePS.items() > _RIGHE_S; - - int riga=0; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { -// Stampa la parte sinistra (primi 4 campi) - fill_riga_PS(body,riga); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - riga++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_S-1; - } -// Salta due righe alla fine - stampa_righe_vuote(pr,2); -} - -void TBase4::stampa_R(TPrinter& pr) -{ - TPrint_section& body = section('B', even_page); - body.reset(); - TLocalisamfile qr(LF_QUAR); - _righeNR.fill(_codditta,qr); - const int items=_righeNR.items(); -// se iRigheNR > 2 => bisogna stampare anche l'allegato - _bAggR = items > _RIGHE_R; - fill_riga_NR(body,0,0); - fill_riga_NR(body,1,1); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); -// Salta due righe alla fine - stampa_righe_vuote(pr,2); -} - -void TBase4::fill_riga_NR(TPrint_section& sec,const int num, const int side) -{ - TString sVal; - int start,end; - if (side==0) - { - start=1; - end=5; - } - else - { - start=5; - end=9; - } - for (int i = start; i < end; i++) - { - TForm_item& fi = sec.find_field(i); - if (num < _righeNR.items()) - { - const TRigaN& rN = _righeNR[num]; - if (i==start) - sVal=rN.sMeseRif(); - else if (i==start+1) - sVal=rN.sAnnoRif(); - else if (i==start+2) - sVal=rN.ImpRimb(fi.picture()); - else if (i==start+3) - sVal=rN.CompAss(fi.picture()); - } - else - sVal=""; - fi.set(sVal); - TPrintrow& row=sec.row(0); - row.put(sVal,fi.x()-1); - } -} - -void TBase4::stampa_righe_vuote(TPrinter& pr,const int righe) -{ - TPrintrow rr; - for (int i=0; iaddstatus(1); - } -} - -void TBase4::stampa_N(TPrinter& pr) -{ - TPrint_section& body = section('B', odd_page); - body.reset(); - TLocalisamfile qn(LF_QUAN); - _righeNR.fill(_codditta,qn); -// se iRigheN > 6 => bisogna stampare anche l'allegato - _bAggN = _righeNR.items() > _RIGHE_N; - - int num=0; - int riga=0; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { -// Stampa la parte sinistra (primi 4 campi) - fill_riga_NR(body,num,0); - num+=3; - fill_riga_NR(body,num,1); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - riga++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - num-=2; - FinitaSezione=riga>2; - } -// Salta due righe alla fine - stampa_righe_vuote(pr,2); -} - -void TBase4::stampa_fine(TPrinter& pr) -{ - TPrint_section& sec = section('F', first_page); - const int hhr = sec.height(); - sec.reset(); - sec.update(); - const int lasty = calcola_firma(); - for (int i = 0; i < hhr; i++) - { - pr.print(sec.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); -} - -bool TBase4::print(const long codditta, const long NumFis, const long NumNoFis) -{ - _bAggN=_bAggP=_bAggR=_bAggQ=_bAggS=_bAggT=FALSE; - TCursor* cur = cursor(); - TPrinter& pr = printer(); - _codditta=codditta; - filtra(codditta); - _RigaCorr=0; - (*cur)=0L; - jump_to_line(pr, prima_riga(PRIMA)); -// Stampa da M1 a M6 - stampa_testata(pr); - stampa_N(pr); - stampa_P(pr); - stampa_Q(pr); - stampa_R(pr); - stampa_S(pr); - stampa_T(pr); - stampa_fine(pr); - next_page(pr); - close_print(); - return TRUE; -} - -bool TStampaBase::user_create() -{ - _fBase1 = new TBase1("77base1", "Base"); - _fBase2 = new TBase2("77base2", "Base"); - _fBase3 = new TBase3("77base3", "Base"); - _fBase4 = new TBase4("77base4", "Base"); -// Adesso bisogna chiamare set_cursor per impostare il cursore dentro -// al form. Sarebbe meglio fare in modo che il form usi sempre il cursore -// letto dal .frm, senza bisogno di passarglielo dall'applicazione - _fBase1->set_cursor(_fBase1->TForm::cursor()); - _fBase2->set_cursor(_fBase2->TForm::cursor()); - _fBase3->set_cursor(_fBase3->TForm::cursor()); - _fBase4->set_cursor(_fBase4->TForm::cursor()); - return TRUE; -} - -bool TStampaBase::user_destroy() -{ - delete _fBase1; - delete _fBase2; - delete _fBase3; - delete _fBase4; - return TRUE; -} - -bool TStampaBase::print_quadro(const int OffsetDitta, const bool modulaser) -{ - int start=0, last=0; - -// Setta formlen prima di printer.open per avere la lunghezza giusta nel caso di -// stampa a video - printer().formlen(BASE_FORMLEN); - bool ok = printer().open(); - - _fBase1->set_modulaser(modulaser); - _fBase2->set_modulaser(modulaser); - _fBase3->set_modulaser(modulaser); - _fBase4->set_modulaser(modulaser); - -// Dice se deve eseguire il posizionamento del foglio. -// Se stampa piu' ditte va eseguito solo sulla prima -// Occhio a non spostarlo nel ciclo. - _fBase1->set_posiziona(TRUE); - - if (OffsetDitta >= 0) - { - start = OffsetDitta; - last = OffsetDitta; - } - else - last = ditte().items() - 1; - - for (int i = start; i <= last; i++) - { - TString CoFiDic(20); - TToken_string riga(ditte()[i]); - const long codditta = atol(riga.get(0)); - const TipoDitta tipo = (TipoDitta)riga.get_int(1); - const long fis = riga.get_long(2); - const long nofis = riga.get_long(3); - const bool LastFis = (bool)riga.get_int(4); - const bool LastNoFis = (bool)riga.get_int(5); - -// I gruppi dich-estinti hanno totali comuni -// Si presume che nell'array vengano messi nell'ordine dich-estinti - if (tipo == normale || tipo == dichiarante) - _fBase1->azzera_totali(); - - if (tipo == estinto) - CoFiDic = riga.get(6); - -// Dice al form che tipo di ditta si stampa - _fBase1->set_tipo_ditta(tipo); - -// Numera i fogli a partire da 1 per ogni ditta normale e da 1 e di seguito negli estinti -// per i sogg. dichiaranti - if (tipo == normale || tipo == dichiarante) - _fBase1->set_num_foglio(1); - -// Se la ditta e' estinta dice al form il cod.fis. del dichiarante - if (tipo == estinto) - _fBase1->set_cofi_dic(CoFiDic); - -// Dice al form che e' l'ultima ditta - if (i == last) - _fBase1->set_last_ditta(TRUE); - - _fBase1->print(codditta, fis, nofis); - _fBase2->print(codditta, fis, nofis); - _fBase3->print(codditta, fis, nofis); - _fBase4->print(codditta, fis, nofis); - } - printer().close(); - return ok; -} - -int TQuadroL::prima_riga(PaginaQuadro p) const -{ - if (p==PRIMA) - { - if (_PaginaPosizionamento) - return 8; - else - return 8+HEADER_PRIMA_NOPOS; - } - else - return 4; -} - - -long TQuadroL::filtra(const long codditta) -{ - TString filtr(24); - _codditta=codditta; - filtr.format("(CODDITTA==%ld)&&(QLAP==%d)", codditta,anno_770()); - cursor()->setfilter(filtr, TRUE); - const long items = cursor()->items(); - return items; -} - - -void TQuadroL::stampa_testata(TPrinter& pr) -{ - TPrint_section& hh = section('H', first_page); - hh.reset(); - hh.update(); - const int hhr = hh.height(); - for (int i = 0; i < hhr; i++) - { - pr.print(hh.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); -} - -bool TQuadroL::stampa_L(TPrinter& pr,const long lStartRec,const int iRecL) -{ - long codit=0L; - bool eof=FALSE; - TPrint_section& body = section('B', odd_page); - body.reset(); - TCursor& cur = *cursor(); - if (lStartRec > cur.items()) - return TRUE; - else - cur=lStartRec; - bool finito=FALSE; - int righe=0; - - while (!finito) - { - body.update(); - const int body_righe = body.height(); - for (int i = 0; i < body_righe; i++) - { - TPrintrow& rr=body.row(i); - pr.print(rr); - rr.reset(); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); - righe++; - ++cur; - eof=cur.pos()==cur.items()-1; - finito = (righe==iRecL-1) || eof; - } - return eof; -} - -void TQuadroL::stampa_totali_L(TPrinter& pr) -{ -// La sezione f last contiene solo due totali aggiornati con add nel form - TPrint_section& hh = section('F', last_page); -// hh.reset(); - hh.update(); - const int hhr = hh.height(); - for (int i = 0; i < hhr; i++) - { - pr.print(hh.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); -} - -const int _START_AGG_L=17; -const int _REC_PRIMA_AGG_L=12; -const int _REC_SECONDA_AGG_L=14; -const int _RIGA_TOTALI_AGG_L=60; - -bool TQuadroL::print(const long codditta, const long NumFis, const long NumNoFis) -{ - TCursor* cur = cursor(); - TPrinter& pr = printer(); - if (!InitPrint(codditta)) - return FALSE; - -// Legge dai par.studio l'ordinamento da usare per L - TConfig conf(CONFIG_STUDIO); - const int iChiaveL = (int)conf.get_long("FlStQl", "77"); - if (iChiaveL==2) - cur->setkey(1); - else - cur->setkey(2); - - int lOffsetL=_START_AGG_L; - bool finito=FALSE; - while (!finito) - { - jump_to_line(pr, prima_riga(PRIMA)); - stampa_testata(pr); - finito=stampa_L(pr,lOffsetL,_REC_PRIMA_AGG_L); - next_page(pr); - if (!finito) - { - lOffsetL+=_REC_PRIMA_AGG_L; - jump_to_line(pr, prima_riga(SECONDA)); - finito=stampa_L(pr,lOffsetL,_REC_SECONDA_AGG_L); - } - if (finito) - { - jump_to_line(pr,_RIGA_TOTALI_AGG_L); - stampa_totali_L(pr); - } - next_page(pr); - } - close_print(); - return TRUE; -} - -bool TStampaQuadroAggL::user_create() -{ - _form = new TQuadroL("77QL", quadro()); - _form->set_cursor(_form->TForm::cursor()); -// init anche di _cur nell'applicazione - _cur = _form->cursor(); - return TRUE; -} - -bool TStampaQuadroAggL::user_destroy() -{ - delete _form; - return TRUE; -} - -void TQuadroN::stampa_fine(TPrinter& pr) -{ - TPrint_section& sec = section('F', first_page); - const int hhr = sec.height(); - sec.reset(); - sec.update(); - const int lasty = calcola_firma(); - for (int i = 0; i < hhr; i++) - { - pr.print(sec.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); -} - -void TQuadroN::stampa_testata(TPrinter& pr) -{ - TPrint_section& hh = section('H', first_page); - hh.reset(); - hh.update(); - const int hhr = hh.height(); - for (int i = 0; i < hhr; i++) - { - pr.print(hh.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); -} - -int TQuadroN::prima_riga(PaginaQuadro p) const -{ - if (_PaginaPosizionamento) - return 8; - else - return 8+HEADER_PRIMA_NOPOS; -} - -/*void TBase4::fill_riga_QT(TPrint_section& sec,const int num) -{ - TString sVal; - int start=1,end=6; - for (int i = start; i <= end; i++) - { - TForm_item& fi = sec.find_field(i); - if (num < _righeQT.items()) - { - const TRigaQT& rN = _righeQT[num]; - if (i==start) - sVal=rN.sMesePag(); - else if (i==start+1) - sVal=rN.sAnnoPag(); - else if (i==start+2) - sVal=rN.ContVers(fi.picture()); - else if (i==start+3) - sVal=rN.ContRimb(fi.picture()); - else if (i==start+4) - sVal=rN.Interessi(fi.picture()); - else if (i==start+5) - sVal=rN.CodReg(); - } - else - sVal=""; - fi.set(sVal); - TPrintrow& row=sec.row(0); - row.put(sVal,fi.x()-1); - } -} */ - -/* -void TBase4::fill_riga_PS(TPrint_section& sec,const int num) -{ - TString sVal; - int start=1,end=8; - for (int i = start; i <= end; i++) - { - TForm_item& fi = sec.find_field(i); - if (num < _righePS.items()) - { - const TRigaPS& rN = _righePS[num]; - if (i==start) - sVal=rN.sImposta(fi.picture()); - else if (i==start+1) - sVal=rN.sIntDip(fi.picture()); - else if (i==start+2) - sVal=rN.sIntDat(fi.picture()); - else if (i==start+3) - sVal=rN.sTipoVers(); - else if (i==start+4) - sVal=rN.sCodTrib(); - else if (i==start+5) - sVal=rN.sDataVers(); - else if (i==start+6) - sVal=rN.sSerie(); - else if (i==start+7) - sVal=rN.sNumero(); - } - else - sVal=""; - fi.set(sVal); - TPrintrow& row=sec.row(0); - row.put(sVal,fi.x()-1); - } -} */ - -void TQuadroN::stampa_N(TPrinter& pr) -{ - TPrint_section& body = section('B', odd_page); - body.reset(); - TLocalisamfile qn(LF_QUAN); - _righeNR.fill(_codditta,qn); -// Nell'aggiuntivo parto dal record n.7 - int num=6; - int riga=0; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { -// Stampa la parte sinistra (primi 4 campi) - fill_riga_NR(body,num,0); - num+=3; - fill_riga_NR(body,num,1); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - riga++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - num-=2; - FinitaSezione=riga>4; - } -} - -void TQuadroN::stampa_P(TPrinter& pr) -{ - TPrint_section& body = section('H', even_page); - body.reset(); - TLocalisamfile qp(LF_QUAP); - _righePS.fill(_codditta,qp); - const int items=_righePS.items(); -// Parte da rec.n.5 - int riga=4; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { -// Stampa la parte sinistra (primi 4 campi) - fill_riga_PS(body,riga); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - riga++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_PA-1; - } -} - -void TQuadroN::stampa_Q(TPrinter& pr) -{ - TPrint_section& body = section('F', even_page); - body.reset(); - TLocalisamfile qp(LF_QUAQ); - _righeQT.fill(_codditta,qp); -// parte da rec.n.5 - int riga=4; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { -// Stampa la parte sinistra (primi 4 campi) - fill_riga_QT(body,riga); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - riga++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_QA-1; - } -// Salta due righe alla fine - stampa_righe_vuote(pr,2); -} - -void TQuadroN::stampa_R(TPrinter& pr) -{ - TPrint_section& body = section('B', even_page); - body.reset(); - TLocalisamfile qr(LF_QUAR); - _righeNR.fill(_codditta,qr); - const int items=_righeNR.items(); - int RecNum=2; - int RigheStampate=0; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { - fill_riga_NR(body,RecNum,0); - RecNum+=3; - fill_riga_NR(body,RecNum,1); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - RigheStampate++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - RecNum-=2; - FinitaSezione=RigheStampate>_RIGHE_RA-1; - } -} - -void TQuadroN::stampa_S(TPrinter& pr) -{ - TPrint_section& body = section('H', even_page); - body.reset(); - TLocalisamfile qp(LF_QUAS); - _righePS.fill(_codditta,qp); - - int riga=4; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { -// Stampa la parte sinistra (primi 4 campi) - fill_riga_PS(body,riga); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - riga++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_SA-1; - } -} - -void TQuadroN::stampa_T(TPrinter& pr) -{ - TPrint_section& body = section('F', odd_page); - body.reset(); - TLocalisamfile qp(LF_QUAT); - _righeQT.fill(_codditta,qp); - int riga=4; - bool FinitaSezione=FALSE; - while (!FinitaSezione) - { -// Stampa la parte sinistra (primi 4 campi) - fill_riga_QT(body,riga); - TPrintrow& rr=body.row(0); - pr.print(rr); - rr.reset(); - riga++; - _RigaCorr++; - if (usa_progind()) - progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_TA-1; - } -} - -/* -void TBase4::fill_riga_NR(TPrint_section& sec,const int num, const int side) -{ - TString sVal; - int start,end; - if (side==0) - { - start=0; - end=4; - } - else - { - start=4; - end=8; - } - for (int i = start; i < end; i++) - { - TForm_item& fi = sec.field(i); - if (num < _righeNR.items()) - { - const TRigaN& rN = _righeNR[num]; - if (i==start) - sVal=rN.sMeseRif(); - else if (i==start+1) - sVal=rN.sAnnoRif(); - else if (i==start+2) - sVal=rN.ImpRimb(fi.picture()); - else if (i==start+3) - sVal=rN.CompAss(fi.picture()); - } - else - sVal=""; - fi.set(sVal); - TPrintrow& row=sec.row(0); - row.put(sVal,fi.x()-1); - } -} */ - -bool TQuadroN::print(const long codditta, const long NumFis, const long NumNoFis) -{ - TCursor* cur = cursor(); - TPrinter& pr = printer(); - _codditta=codditta; - if (!InitPrint(codditta)) - return FALSE; - pr.formlen(TDicForm::dic_form_len()); - _RigaCorr=0; - (*cur)=0L; - bool done=FALSE; - while (!done) - { - jump_to_line(pr, prima_riga(PRIMA)); - int skip=HEADER_PRIMA_NOPOS; - stampa_testata(pr); - jump_to_line(pr, _PaginaPosizionamento ? 20-skip : 20); - stampa_N(pr); - jump_to_line(pr, _PaginaPosizionamento ? 26-skip : 26); - stampa_P(pr); - jump_to_line(pr, _PaginaPosizionamento ? 38-skip : 38); - stampa_Q(pr); - jump_to_line(pr, _PaginaPosizionamento ? 44-skip : 44); - stampa_R(pr); - jump_to_line(pr, _PaginaPosizionamento ? 48-skip : 48); - stampa_S(pr); - jump_to_line(pr, _PaginaPosizionamento ? 56-skip : 56); - stampa_T(pr); - jump_to_line(pr, _PaginaPosizionamento ? 63-skip : 63); - stampa_fine(pr); - _PaginaPosizionamento=FALSE; - next_page(pr); - pr.formlen(TDicForm::dic_form_len()); - ++(*cur); - done = cur->pos() >= cur->items()-1; - } - close_print(); - return TRUE; -} - -bool TStampaQuadroAggN::user_create() -{ - _form = new TQuadroN("77QN", quadro()); - _form->set_cursor(_form->TForm::cursor()); - _cur = _form->cursor(); - return TRUE; -} - -bool TStampaQuadroAggN::user_destroy() -{ - delete _form; - return TRUE; -} - +// Stampa base +#include "77stba.h" +const int _RIGHE_N = 6; +const int _RIGHE_R = 2; +const int _RIGHE_P = 4; +const int _RIGHE_Q = 4; +const int _RIGHE_S = 4; +const int _RIGHE_T = 4; +const int _RIGHE_NA = 8; +const int _RIGHE_RA = 4; +const int _RIGHE_PA = 10; +const int _RIGHE_QA = 4; +const int _RIGHE_SA = 6; +const int _RIGHE_TA = 4; + +int TBase1::dic_form_len() const +{ + if (curr_page()==PRIMA && _PaginaPosizionamento) + return BASE_FORMLEN-HEADER_PRIMA_NOPOS; + else + return BASE_FORMLEN; +} + +int TBase1::prima_riga(PaginaQuadro p) const +{ + if (p==PRIMA && _PaginaPosizionamento) + return 11; + else + return 11+HEADER_PRIMA_NOPOS; +} + +TBase1::TBase1(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) +{ + r = new TRelation(LF_SOCI); + r->add(LF_ANAG, "TIPOA=TIPOASOC|CODANAGR=CODANAGRSO"); + r->add(LF_ANAGFIS, "CODANAGR=CODANAGR",1, LF_ANAG); + r->add(LF_COMUNI, "COM=COMNASC",1,LF_ANAGFIS); + c = new TCursor(r); + _bAllegSoci=FALSE; +} + +TBase1::~TBase1() +{ + delete r; + delete c; +} + +void TBase1::stampa_corpo(TPrinter& pr) +{ + TPrint_section& body = section('B', first_page); + body.reset(); + body.update(); + const int body_righe = body.height(); + for (int i = 0; i < body_righe; i++) + { + pr.print(body.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +// accetta solo quelli con qualifica=A,B o C +bool bFiltraSoci(const TRelation* rel) +{ + TString sQual(3); + sQual = rel->lfile().get("RICQUAL"); + return sQual=="A" || sQual=="B" || sQual=="C"; +} + +long TBase1::iContaSoci() +{ + TString filtro(20); + filtro.format("CODDITTA=%d",_codditta); + c->setfilter(filtro); + c->set_filterfunction(bFiltraSoci); + (*c)=0L; + return c->items(); +} + +const int _INIZIO_SOCI=53; +void TBase1::stampa_soci(TPrinter& pr) +{ + TPrint_section& fut = section('F', first_page); + fut.reset(); + jump_to_line(pr,_INIZIO_SOCI); + const long iSoci = iContaSoci(); + if (iSoci > 11) + { + _bAllegSoci=TRUE; + TPrintrow& rg=fut.row(0); + rg.put("VEDERE ALLEGATO", 25); + pr.print(rg); + _RigaCorr++; + if (usa_progind()) progind()->addstatus(1); + } + else + { + int i=0; + TString sRagsoc,sSesso,sComuneNa,sProvNa,sDataNa,sCodFis,sCodQua; + for ((*c)=0L; c->pos() < c->items(); ++(*c)) + { + TString sNome,sCognome; + TPrintrow& rg=fut.row(i++); + sCodQua=c->file().get("RICQUAL"); + sRagsoc=c->file(LF_ANAG).get("RAGSOC"); + sCodFis=c->file(LF_ANAG).get("COFI"); + sDataNa=c->file(LF_ANAGFIS).get("DATANASC"); + sSesso=c->file(LF_ANAGFIS).get("SESSO"); + sComuneNa=c->file(LF_COMUNI).get("DENCOM"); + sComuneNa.cut(28); + sProvNa=c->file(LF_COMUNI).get("PROVCOM"); + fut.field(0).set(sRagsoc); + sCognome=sRagsoc.left(30); + sCognome.trim(); + sNome=sRagsoc.mid(30,0); + sNome.trim(); + sRagsoc = sCognome; + sRagsoc << " " << sNome; + rg.put(sRagsoc,fut.field(0).x()-1); + fut.field(1).set(sSesso); + rg.put(sSesso,fut.field(1).x()-1); + fut.field(2).set(sComuneNa); + rg.put(sComuneNa,fut.field(2).x()-1); + fut.field(3).set(sProvNa); + rg.put(sProvNa,fut.field(3).x()-1); + fut.field(4).set(sDataNa); + rg.put(sDataNa,fut.field(4).x()-1); + fut.field(5).set(sCodFis); + rg.put(sCodFis,fut.field(5).x()-1); + fut.field(6).set(sCodQua); + rg.put(sCodQua,fut.field(6).x()-1); + pr.print(rg); + _RigaCorr++; + if (usa_progind()) progind()->addstatus(1); + } + } +} + +bool TBase1::print(const long codditta, const long NumFis, const long NumNoFis) +{ + TCursor* cur = cursor(); + TPrinter& pr = printer(); + _codditta=codditta; + + if (!InitPrint(codditta)) + return FALSE; + pr.formlen(BASE_FORMLEN); + + (*cur)=0L; + if (_modulaser) + { + ClearFlagModulaser(); + TPrintrow r; + if (!_GiaMessoStartDoc) + put_modulaser(r, STARTDOC); + put_modulaser(r, STARTDITTA); + put_modulaser(r, STARTPAGE, 1); + pr.print(r); + _RigaCorr++; + } + jump_to_line(pr, prima_riga(PRIMA)); + stampa_corpo(pr); + stampa_soci(pr); + next_page(pr); + close_print(); + return TRUE; +} + +void TBase2::stampa_corpo(TPrinter& pr) +{ + TPrint_section& body = section('B', even_page); + body.reset(); + body.update(); + const int body_righe = body.height(); + for (int i = 0; i < body_righe; i++) + { + pr.print(body.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +bool TBase2::print(const long codditta, const long NumFis, const long NumNoFis) +{ + TCursor* cur = cursor(); + TPrinter& pr = printer(); + _codditta=codditta; + filtra(codditta); + _RigaCorr=0; + (*cur)=0L; + jump_to_line(pr, prima_riga(PRIMA)); + stampa_corpo(pr); + next_page(pr); + close_print(); + return TRUE; +} + +long TBase3::filtra(const long codditta) +{ + TString filtr(24); + _codditta=codditta; + filtr.format("(CODDITTA==%ld)&&(QLAP==%d)", codditta, anno_770()); + cursor()->setfilter(filtr, TRUE); + const long items = cursor()->items(); + return items; +} + +void TBase3::stampa_testata(TPrinter& pr) +{ + TPrint_section& hh = section('H', first_page); + hh.reset(); + hh.update(); + const int hhr = hh.height(); + for (int i = 0; i < hhr; i++) + { + pr.print(hh.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +int TBase3::stampa_L(TPrinter& pr,const int iChiaveL) +{ + long codit=0L; + TPrint_section& body = section('B', odd_page); + body.reset(); + + TCursor& cur = *cursor(); +// Le chiavi nel file e nel .ini sono saggiamente scambiate + if (iChiaveL==2) + cur.setkey(1); + else + cur.setkey(2); + +// filtra(_codditta); + + bool finito=FALSE; + int righe=0; + while (!finito) + { + body.update(); + const int body_righe = body.height(); + for (int i = 0; i < body_righe; i++) + { + TPrintrow& rr=body.row(i); + pr.print(rr); + rr.reset(); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); + righe++; + ++cur; + codit=cur.file().get_long("CODDITTA"); + bool buono=codit==_codditta; +// Guarda se e' necessario stampare l'aggiuntivo + _bAggiuntivoL = buono && righe>14; + finito=righe>14 || codit!=_codditta; + } + return righe; +} + +void TBase3::stampa_totali_L(TPrinter& pr) +{ +// La sezione f last contiene solo due totali aggiornati con add nel form + TPrint_section& hh = section('F', last_page); +// hh.reset(); + hh.update(); + const int hhr = hh.height(); + for (int i = 0; i < hhr; i++) + { + pr.print(hh.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +bool TBase3::print(const long codditta, const long NumFis, const long NumNoFis) +{ + _bAggiuntivoL=TRUE; + TCursor* cur = cursor(); + TPrinter& pr = printer(); + _codditta=codditta; + filtra(codditta); + _RigaCorr=0; + (*cur)=0L; + jump_to_line(pr, prima_riga(PRIMA)); +// Stampa i codici concessione e tesoreria + stampa_testata(pr); +// Legge dai par.studio l'ordinamento da usare per L + TConfig conf(CONFIG_STUDIO); + const int iChiaveL = (int)conf.get_long("FlStQl", "77"); + const int righe_stampate=stampa_L(pr,iChiaveL); +// Se la stampa prosegue i totali vanno sull'aggiuntivo NON qui + if (!_bAggiuntivoL) + { + jump_to_line(pr,_RIGA_TOTALI_L); + stampa_totali_L(pr); + } + next_page(pr); + close_print(); + return TRUE; +} + +const char* TRigaN::sMeseRif() const +{ + __dep16=""; + __dep16 << _MeseRif; + return __dep16; +} + +const char* TRigaN::sAnnoRif() const +{ + __dep16=""; + __dep16 << _AnnoRif; + return __dep16; +} + +// Ordina le righe N per periodo di riferimento +int TRigaN::compare(const TSortable& s) const +{ + const TRigaN& rec = (const TRigaN&)s; + const int da = _AnnoRif - rec._AnnoRif; + const int dm = _MeseRif - rec._MeseRif; + if (da==0) + return dm; + else + return da; +} + +TRigaN::TRigaN(const TLocalisamfile& qn) +{ + _pos = qn.recno(); + + const TRectype& rec = qn.curr(); + + _MeseRif = rec.get_int("MESERIF"); + _AnnoRif = rec.get_int("ANNORIF"); +// Nel quadro R si chiama diversamente @!#@!!! + if (qn.num() == LF_QUAN) + _ImpRimb = rec.get_real("IMPOSTA"); + else + _ImpRimb = rec.get_real("IMPRIMB"); + _CompAss = rec.get_real("COMPENSI"); +} + +int TRigheNR::fill(const long codditta,TLocalisamfile& qnr) +{ + long ditta=0L; + _data.destroy(); +// Si posiziona sul primo della ditta corrente + qnr.zero(); + qnr.put("CODDITTA",codditta); + qnr.read()==NOERR; + ditta=qnr.get_long("CODDITTA"); + if (ditta!=codditta) return 0; + +// Legge tutti quelli della ditta corrente + for (; !qnr.eof(); qnr.next()) + { + ditta=qnr.get_long("CODDITTA"); + if (ditta!=codditta) break; + + TRigaN* n = new TRigaN(qnr); + if (n->pos() >= 0) + _data.add(n); + else + delete n; + } + _data.sort(); + const int i = _data.items(); + return i; +} + +const char* TRigaQT::sMesePag() const +{ + __dep16=""; + __dep16 << _MesePag; + return __dep16; +} + +const char* TRigaQT::sAnnoPag() const +{ + __dep16=""; + __dep16 << _AnnoPag; + return __dep16; +} + +// Ordina le righe N per periodo di riferimento +int TRigaQT::compare(const TSortable& s) const +{ + const TRigaQT& rec = (const TRigaQT&)s; + const int da = _AnnoPag - rec._AnnoPag; + const int dm = _MesePag - rec._MesePag; + if (da==0) + return dm; + else + return da; +} + +TRigaQT::TRigaQT(const TLocalisamfile& qt) +{ + const TRectype& rec = qt.curr(); + + _MesePag = rec.get_int("MESEPAG"); + _AnnoPag = rec.get_int("ANNOPAG"); + _ContVers = rec.get_real("CONTVERS"); + _ContRimb = rec.get_real("CONTRIMB"); + _Interessi=rec.get_real("INTERESSI"); + _sCodReg=rec.get("CODREG"); +} + +int TRigheQT::fill(const long codditta,TLocalisamfile& qt) +{ + long ditta=0L; +// Si posiziona sul primo della ditta corrente + _data.destroy(); + qt.zero(); + qt.put("CODDITTA",codditta); + qt.read()==NOERR; + ditta=qt.get_long("CODDITTA"); + if (ditta!=codditta) return 0; + +// Legge tutti quelli della ditta corrente + for (; !qt.eof(); qt.next()) + { + ditta=qt.get_long("CODDITTA"); + if (ditta!=codditta) break; + + TRigaQT* n = new TRigaQT(qt); + if (n->pos() >= 0) + _data.add(n); + else + delete n; + } + _data.sort(); + const int i = _data.items(); + return i; +} + +// Ordina le righe N per periodo di riferimento +int TRigaPS::compare(const TSortable& s) const +{ + const TRigaPS& rec = (const TRigaPS&)s; + TDate dtDataS = rec.dDataVers(); + const int month=_dDv.month(); + const int year=_dDv.year(); + const int da = year - dtDataS.year(); + const int dm = month - dtDataS.month(); + if (da==0) + return dm; + else + return da; + + return _dDvpos() >= 0) + _data.add(n); + else + delete n; + } + _data.sort(); + const int i = _data.items(); + return i; +} + +int TBase4::calcola_firma() +{ + TPrint_section& totali = section('F', first_page); + TForm_item& signature = totali.find_field(_IdFirma); + const int y = signature.y(); + TString spazi(50); spazi.fill(' '); + TString cognome = signature.get(); + if (cognome.len() > 30 && cognome[29] == ' ') + { + TString nome = cognome.mid(30, -1); + cognome.cut(30); cognome.trim(); + cognome << ' ' << nome; + signature.set(cognome); + + totali.row(y-1).put(spazi, signature.x()-1); + totali.row(y-1).put(cognome, signature.x()-1); + } + return y; +} + +void TBase4::stampa_testata(TPrinter& pr) +{ + TPrint_section& hh = section('H', first_page); + hh.reset(); + hh.update(); + const int hhr = hh.height(); + for (int i = 0; i < hhr; i++) + { + pr.print(hh.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +void TBase4::fill_riga_QT(TPrint_section& sec,const int num) +{ + TString sVal; + int start=1,end=6; + for (int i = start; i <= end; i++) + { + TForm_item& fi = sec.find_field(i); + if (num < _righeQT.items()) + { + const TRigaQT& rN = _righeQT[num]; + if (i==start) + sVal=rN.sMesePag(); + else if (i==start+1) + sVal=rN.sAnnoPag(); + else if (i==start+2) + sVal=rN.ContVers(fi.picture()); + else if (i==start+3) + sVal=rN.ContRimb(fi.picture()); + else if (i==start+4) + sVal=rN.Interessi(fi.picture()); + else if (i==start+5) + sVal=rN.CodReg(); + } + else + sVal=""; + fi.set(sVal); + TPrintrow& row=sec.row(0); + row.put(sVal,fi.x()-1); + } +} + +void TBase4::stampa_Q(TPrinter& pr) +{ + TPrint_section& body = section('F', even_page); + body.reset(); + TLocalisamfile qp(LF_QUAQ); + _righeQT.fill(_codditta,qp); + _bAggQ = _righeQT.items() > _RIGHE_Q; + + int riga=0; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { +// Stampa la parte sinistra (primi 4 campi) + fill_riga_QT(body,riga); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + riga++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + FinitaSezione=riga>_RIGHE_Q-1; + } +// Salta due righe alla fine + stampa_righe_vuote(pr,2); +} + +void TBase4::stampa_T(TPrinter& pr) +{ + TPrint_section& body = section('F', odd_page); + body.reset(); + TLocalisamfile qp(LF_QUAT); + _righeQT.fill(_codditta,qp); + _bAggT = _righeQT.items() > _RIGHE_T; + + int riga=0; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { +// Stampa la parte sinistra (primi 4 campi) + fill_riga_QT(body,riga); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + riga++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + FinitaSezione=riga>_RIGHE_T-1; + } +} + +void TBase4::fill_riga_PS(TPrint_section& sec,const int num) +{ + TString sVal,sDep; + int start=1,end=8; + for (int i = start; i <= end; i++) + { + TForm_item& fi = sec.find_field(i); + if (num < _righePS.items()) + { + const TRigaPS& rN = _righePS[num]; + if (i==start) + sVal=rN.sImposta(fi.picture()); + else if (i==start+1) + sVal=rN.sIntDip(fi.picture()); + else if (i==start+2) + sVal=rN.sIntDat(fi.picture()); + else if (i==start+3) + sVal=rN.sTipoVers(); + else if (i==start+4) + sVal=rN.sCodTrib(); + else if (i==start+5) + { + sDep=rN.sDataVers(); + sVal.picture(fi.picture(),sDep); + } + else if (i==start+6) + sVal=rN.sSerie(); + else if (i==start+7) + sVal=rN.sNumero(); + } + else + sVal=""; + fi.set(sVal); + TPrintrow& row=sec.row(0); + row.put(sVal,fi.x()-1); + } +} + +void TBase4::stampa_P(TPrinter& pr) +{ + TPrint_section& body = section('H', even_page); + body.reset(); + TLocalisamfile qp(LF_QUAP); + _righePS.fill(_codditta,qp); + const int items=_righePS.items(); + _bAggP = items > _RIGHE_P; + + int riga=0; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { +// Stampa la parte sinistra (primi 4 campi) + fill_riga_PS(body,riga); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + riga++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + FinitaSezione=riga>_RIGHE_P-1; + } +// Salta due righe alla fine + stampa_righe_vuote(pr,2); +} + +void TBase4::stampa_S(TPrinter& pr) +{ + TPrint_section& body = section('H', even_page); + body.reset(); + TLocalisamfile qp(LF_QUAS); + _righePS.fill(_codditta,qp); + _bAggS = _righePS.items() > _RIGHE_S; + + int riga=0; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { +// Stampa la parte sinistra (primi 4 campi) + fill_riga_PS(body,riga); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + riga++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + FinitaSezione=riga>_RIGHE_S-1; + } +// Salta due righe alla fine + stampa_righe_vuote(pr,2); +} + +void TBase4::stampa_R(TPrinter& pr) +{ + TPrint_section& body = section('B', even_page); + body.reset(); + TLocalisamfile qr(LF_QUAR); + _righeNR.fill(_codditta,qr); + const int items=_righeNR.items(); +// se iRigheNR > 2 => bisogna stampare anche l'allegato + _bAggR = items > _RIGHE_R; + fill_riga_NR(body,0,0); + fill_riga_NR(body,1,1); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); +// Salta due righe alla fine + stampa_righe_vuote(pr,2); +} + +void TBase4::fill_riga_NR(TPrint_section& sec,const int num, const int side) +{ + TString sVal; + int start,end; + if (side==0) + { + start=1; + end=5; + } + else + { + start=5; + end=9; + } + for (int i = start; i < end; i++) + { + TForm_item& fi = sec.find_field(i); + if (num < _righeNR.items()) + { + const TRigaN& rN = _righeNR[num]; + if (i==start) + sVal=rN.sMeseRif(); + else if (i==start+1) + sVal=rN.sAnnoRif(); + else if (i==start+2) + sVal=rN.ImpRimb(fi.picture()); + else if (i==start+3) + sVal=rN.CompAss(fi.picture()); + } + else + sVal=""; + fi.set(sVal); + TPrintrow& row=sec.row(0); + row.put(sVal,fi.x()-1); + } +} + +void TBase4::stampa_righe_vuote(TPrinter& pr,const int righe) +{ + TPrintrow rr; + for (int i=0; iaddstatus(1); + } +} + +void TBase4::stampa_N(TPrinter& pr) +{ + TPrint_section& body = section('B', odd_page); + body.reset(); + TLocalisamfile qn(LF_QUAN); + _righeNR.fill(_codditta,qn); +// se iRigheN > 6 => bisogna stampare anche l'allegato + _bAggN = _righeNR.items() > _RIGHE_N; + + int num=0; + int riga=0; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { +// Stampa la parte sinistra (primi 4 campi) + fill_riga_NR(body,num,0); + num+=3; + fill_riga_NR(body,num,1); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + riga++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + num-=2; + FinitaSezione=riga>2; + } +// Salta due righe alla fine + stampa_righe_vuote(pr,2); +} + +void TBase4::stampa_fine(TPrinter& pr) +{ + TPrint_section& sec = section('F', first_page); + const int hhr = sec.height(); + sec.reset(); + sec.update(); + const int lasty = calcola_firma(); + for (int i = 0; i < hhr; i++) + { + pr.print(sec.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +bool TBase4::print(const long codditta, const long NumFis, const long NumNoFis) +{ + _bAggN=_bAggP=_bAggR=_bAggQ=_bAggS=_bAggT=FALSE; + TCursor* cur = cursor(); + TPrinter& pr = printer(); + _codditta=codditta; + filtra(codditta); + _RigaCorr=0; + (*cur)=0L; + jump_to_line(pr, prima_riga(PRIMA)); +// Stampa da M1 a M6 + stampa_testata(pr); + stampa_N(pr); + stampa_P(pr); + stampa_Q(pr); + stampa_R(pr); + stampa_S(pr); + stampa_T(pr); + stampa_fine(pr); + next_page(pr); + close_print(); + return TRUE; +} + +bool TStampaBase::user_create() +{ + _fBase1 = new TBase1("77base1", "Base"); + _fBase2 = new TBase2("77base2", "Base"); + _fBase3 = new TBase3("77base3", "Base"); + _fBase4 = new TBase4("77base4", "Base"); +// Adesso bisogna chiamare set_cursor per impostare il cursore dentro +// al form. Sarebbe meglio fare in modo che il form usi sempre il cursore +// letto dal .frm, senza bisogno di passarglielo dall'applicazione + _fBase1->set_cursor(_fBase1->TForm::cursor()); + _fBase2->set_cursor(_fBase2->TForm::cursor()); + _fBase3->set_cursor(_fBase3->TForm::cursor()); + _fBase4->set_cursor(_fBase4->TForm::cursor()); + return TRUE; +} + +bool TStampaBase::user_destroy() +{ + delete _fBase1; + delete _fBase2; + delete _fBase3; + delete _fBase4; + return TRUE; +} + +bool TStampaBase::print_quadro(const int OffsetDitta, const bool modulaser) +{ + int start=0, last=0; + +// Setta formlen prima di printer.open per avere la lunghezza giusta nel caso di +// stampa a video + printer().formlen(BASE_FORMLEN); + bool ok = printer().open(); + + _fBase1->set_modulaser(modulaser); + _fBase2->set_modulaser(modulaser); + _fBase3->set_modulaser(modulaser); + _fBase4->set_modulaser(modulaser); + +// Dice se deve eseguire il posizionamento del foglio. +// Se stampa piu' ditte va eseguito solo sulla prima +// Occhio a non spostarlo nel ciclo. + _fBase1->set_posiziona(TRUE); + + if (OffsetDitta >= 0) + { + start = OffsetDitta; + last = OffsetDitta; + } + else + last = ditte().items() - 1; + + for (int i = start; i <= last; i++) + { + TString CoFiDic(20); + TToken_string riga(ditte()[i]); + const long codditta = atol(riga.get(0)); + const TipoDitta tipo = (TipoDitta)riga.get_int(1); + const long fis = riga.get_long(2); + const long nofis = riga.get_long(3); + const bool LastFis = (bool)riga.get_int(4); + const bool LastNoFis = (bool)riga.get_int(5); + +// I gruppi dich-estinti hanno totali comuni +// Si presume che nell'array vengano messi nell'ordine dich-estinti + if (tipo == normale || tipo == dichiarante) + _fBase1->azzera_totali(); + + if (tipo == estinto) + CoFiDic = riga.get(6); + +// Dice al form che tipo di ditta si stampa + _fBase1->set_tipo_ditta(tipo); + +// Numera i fogli a partire da 1 per ogni ditta normale e da 1 e di seguito negli estinti +// per i sogg. dichiaranti + if (tipo == normale || tipo == dichiarante) + _fBase1->set_num_foglio(1); + +// Se la ditta e' estinta dice al form il cod.fis. del dichiarante + if (tipo == estinto) + _fBase1->set_cofi_dic(CoFiDic); + +// Dice al form che e' l'ultima ditta + if (i == last) + _fBase1->set_last_ditta(TRUE); + + _fBase1->print(codditta, fis, nofis); + _fBase2->print(codditta, fis, nofis); + _fBase3->print(codditta, fis, nofis); + _fBase4->print(codditta, fis, nofis); + } + printer().close(); + return ok; +} + +int TQuadroL::prima_riga(PaginaQuadro p) const +{ + if (p==PRIMA) + { + if (_PaginaPosizionamento) + return 8; + else + return 8+HEADER_PRIMA_NOPOS; + } + else + return 4; +} + + +long TQuadroL::filtra(const long codditta) +{ + TString filtr(24); + _codditta=codditta; + filtr.format("(CODDITTA==%ld)&&(QLAP==%d)", codditta,anno_770()); + cursor()->setfilter(filtr, TRUE); + const long items = cursor()->items(); + return items; +} + + +void TQuadroL::stampa_testata(TPrinter& pr) +{ + TPrint_section& hh = section('H', first_page); + hh.reset(); + hh.update(); + const int hhr = hh.height(); + for (int i = 0; i < hhr; i++) + { + pr.print(hh.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +bool TQuadroL::stampa_L(TPrinter& pr,const long lStartRec,const int iRecL) +{ + long codit=0L; + bool eof=FALSE; + TPrint_section& body = section('B', odd_page); + body.reset(); + TCursor& cur = *cursor(); + if (lStartRec > cur.items()) + return TRUE; + else + cur=lStartRec; + bool finito=FALSE; + int righe=0; + + while (!finito) + { + body.update(); + const int body_righe = body.height(); + for (int i = 0; i < body_righe; i++) + { + TPrintrow& rr=body.row(i); + pr.print(rr); + rr.reset(); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); + righe++; + ++cur; + eof=cur.pos()==cur.items()-1; + finito = (righe==iRecL-1) || eof; + } + return eof; +} + +void TQuadroL::stampa_totali_L(TPrinter& pr) +{ +// La sezione f last contiene solo due totali aggiornati con add nel form + TPrint_section& hh = section('F', last_page); +// hh.reset(); + hh.update(); + const int hhr = hh.height(); + for (int i = 0; i < hhr; i++) + { + pr.print(hh.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +const int _START_AGG_L=17; +const int _REC_PRIMA_AGG_L=12; +const int _REC_SECONDA_AGG_L=14; +const int _RIGA_TOTALI_AGG_L=60; + +bool TQuadroL::print(const long codditta, const long NumFis, const long NumNoFis) +{ + TCursor* cur = cursor(); + TPrinter& pr = printer(); + if (!InitPrint(codditta)) + return FALSE; + +// Legge dai par.studio l'ordinamento da usare per L + TConfig conf(CONFIG_STUDIO); + const int iChiaveL = (int)conf.get_long("FlStQl", "77"); + if (iChiaveL==2) + cur->setkey(1); + else + cur->setkey(2); + + int lOffsetL=_START_AGG_L; + bool finito=FALSE; + while (!finito) + { + jump_to_line(pr, prima_riga(PRIMA)); + stampa_testata(pr); + finito=stampa_L(pr,lOffsetL,_REC_PRIMA_AGG_L); + next_page(pr); + if (!finito) + { + lOffsetL+=_REC_PRIMA_AGG_L; + jump_to_line(pr, prima_riga(SECONDA)); + finito=stampa_L(pr,lOffsetL,_REC_SECONDA_AGG_L); + } + if (finito) + { + jump_to_line(pr,_RIGA_TOTALI_AGG_L); + stampa_totali_L(pr); + } + next_page(pr); + } + close_print(); + return TRUE; +} + +bool TStampaQuadroAggL::user_create() +{ + _form = new TQuadroL("77QL", quadro()); + _form->set_cursor(_form->TForm::cursor()); +// init anche di _cur nell'applicazione + _cur = _form->cursor(); + return TRUE; +} + +bool TStampaQuadroAggL::user_destroy() +{ + delete _form; + return TRUE; +} + +void TQuadroN::stampa_fine(TPrinter& pr) +{ + TPrint_section& sec = section('F', first_page); + const int hhr = sec.height(); + sec.reset(); + sec.update(); + const int lasty = calcola_firma(); + for (int i = 0; i < hhr; i++) + { + pr.print(sec.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +void TQuadroN::stampa_testata(TPrinter& pr) +{ + TPrint_section& hh = section('H', first_page); + hh.reset(); + hh.update(); + const int hhr = hh.height(); + for (int i = 0; i < hhr; i++) + { + pr.print(hh.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +int TQuadroN::prima_riga(PaginaQuadro p) const +{ + if (_PaginaPosizionamento) + return 8; + else + return 8+HEADER_PRIMA_NOPOS; +} + +/*void TBase4::fill_riga_QT(TPrint_section& sec,const int num) +{ + TString sVal; + int start=1,end=6; + for (int i = start; i <= end; i++) + { + TForm_item& fi = sec.find_field(i); + if (num < _righeQT.items()) + { + const TRigaQT& rN = _righeQT[num]; + if (i==start) + sVal=rN.sMesePag(); + else if (i==start+1) + sVal=rN.sAnnoPag(); + else if (i==start+2) + sVal=rN.ContVers(fi.picture()); + else if (i==start+3) + sVal=rN.ContRimb(fi.picture()); + else if (i==start+4) + sVal=rN.Interessi(fi.picture()); + else if (i==start+5) + sVal=rN.CodReg(); + } + else + sVal=""; + fi.set(sVal); + TPrintrow& row=sec.row(0); + row.put(sVal,fi.x()-1); + } +} */ + +/* +void TBase4::fill_riga_PS(TPrint_section& sec,const int num) +{ + TString sVal; + int start=1,end=8; + for (int i = start; i <= end; i++) + { + TForm_item& fi = sec.find_field(i); + if (num < _righePS.items()) + { + const TRigaPS& rN = _righePS[num]; + if (i==start) + sVal=rN.sImposta(fi.picture()); + else if (i==start+1) + sVal=rN.sIntDip(fi.picture()); + else if (i==start+2) + sVal=rN.sIntDat(fi.picture()); + else if (i==start+3) + sVal=rN.sTipoVers(); + else if (i==start+4) + sVal=rN.sCodTrib(); + else if (i==start+5) + sVal=rN.sDataVers(); + else if (i==start+6) + sVal=rN.sSerie(); + else if (i==start+7) + sVal=rN.sNumero(); + } + else + sVal=""; + fi.set(sVal); + TPrintrow& row=sec.row(0); + row.put(sVal,fi.x()-1); + } +} */ + +void TQuadroN::stampa_N(TPrinter& pr) +{ + TPrint_section& body = section('B', odd_page); + body.reset(); + TLocalisamfile qn(LF_QUAN); + _righeNR.fill(_codditta,qn); +// Nell'aggiuntivo parto dal record n.7 + int num=6; + int riga=0; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { +// Stampa la parte sinistra (primi 4 campi) + fill_riga_NR(body,num,0); + num+=3; + fill_riga_NR(body,num,1); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + riga++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + num-=2; + FinitaSezione=riga>4; + } +} + +void TQuadroN::stampa_P(TPrinter& pr) +{ + TPrint_section& body = section('H', even_page); + body.reset(); + TLocalisamfile qp(LF_QUAP); + _righePS.fill(_codditta,qp); + const int items=_righePS.items(); +// Parte da rec.n.5 + int riga=4; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { +// Stampa la parte sinistra (primi 4 campi) + fill_riga_PS(body,riga); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + riga++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + FinitaSezione=riga>_RIGHE_PA-1; + } +} + +void TQuadroN::stampa_Q(TPrinter& pr) +{ + TPrint_section& body = section('F', even_page); + body.reset(); + TLocalisamfile qp(LF_QUAQ); + _righeQT.fill(_codditta,qp); +// parte da rec.n.5 + int riga=4; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { +// Stampa la parte sinistra (primi 4 campi) + fill_riga_QT(body,riga); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + riga++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + FinitaSezione=riga>_RIGHE_QA-1; + } +// Salta due righe alla fine + stampa_righe_vuote(pr,2); +} + +void TQuadroN::stampa_R(TPrinter& pr) +{ + TPrint_section& body = section('B', even_page); + body.reset(); + TLocalisamfile qr(LF_QUAR); + _righeNR.fill(_codditta,qr); + const int items=_righeNR.items(); + int RecNum=2; + int RigheStampate=0; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { + fill_riga_NR(body,RecNum,0); + RecNum+=3; + fill_riga_NR(body,RecNum,1); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + RigheStampate++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + RecNum-=2; + FinitaSezione=RigheStampate>_RIGHE_RA-1; + } +} + +void TQuadroN::stampa_S(TPrinter& pr) +{ + TPrint_section& body = section('H', even_page); + body.reset(); + TLocalisamfile qp(LF_QUAS); + _righePS.fill(_codditta,qp); + + int riga=4; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { +// Stampa la parte sinistra (primi 4 campi) + fill_riga_PS(body,riga); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + riga++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + FinitaSezione=riga>_RIGHE_SA-1; + } +} + +void TQuadroN::stampa_T(TPrinter& pr) +{ + TPrint_section& body = section('F', odd_page); + body.reset(); + TLocalisamfile qp(LF_QUAT); + _righeQT.fill(_codditta,qp); + int riga=4; + bool FinitaSezione=FALSE; + while (!FinitaSezione) + { +// Stampa la parte sinistra (primi 4 campi) + fill_riga_QT(body,riga); + TPrintrow& rr=body.row(0); + pr.print(rr); + rr.reset(); + riga++; + _RigaCorr++; + if (usa_progind()) + progind()->addstatus(1); + FinitaSezione=riga>_RIGHE_TA-1; + } +} + +/* +void TBase4::fill_riga_NR(TPrint_section& sec,const int num, const int side) +{ + TString sVal; + int start,end; + if (side==0) + { + start=0; + end=4; + } + else + { + start=4; + end=8; + } + for (int i = start; i < end; i++) + { + TForm_item& fi = sec.field(i); + if (num < _righeNR.items()) + { + const TRigaN& rN = _righeNR[num]; + if (i==start) + sVal=rN.sMeseRif(); + else if (i==start+1) + sVal=rN.sAnnoRif(); + else if (i==start+2) + sVal=rN.ImpRimb(fi.picture()); + else if (i==start+3) + sVal=rN.CompAss(fi.picture()); + } + else + sVal=""; + fi.set(sVal); + TPrintrow& row=sec.row(0); + row.put(sVal,fi.x()-1); + } +} */ + +bool TQuadroN::print(const long codditta, const long NumFis, const long NumNoFis) +{ + TCursor* cur = cursor(); + TPrinter& pr = printer(); + _codditta=codditta; + if (!InitPrint(codditta)) + return FALSE; + pr.formlen(TDicForm::dic_form_len()); + _RigaCorr=0; + (*cur)=0L; + bool done=FALSE; + while (!done) + { + jump_to_line(pr, prima_riga(PRIMA)); + int skip=HEADER_PRIMA_NOPOS; + stampa_testata(pr); + jump_to_line(pr, _PaginaPosizionamento ? 20-skip : 20); + stampa_N(pr); + jump_to_line(pr, _PaginaPosizionamento ? 26-skip : 26); + stampa_P(pr); + jump_to_line(pr, _PaginaPosizionamento ? 38-skip : 38); + stampa_Q(pr); + jump_to_line(pr, _PaginaPosizionamento ? 44-skip : 44); + stampa_R(pr); + jump_to_line(pr, _PaginaPosizionamento ? 48-skip : 48); + stampa_S(pr); + jump_to_line(pr, _PaginaPosizionamento ? 56-skip : 56); + stampa_T(pr); + jump_to_line(pr, _PaginaPosizionamento ? 63-skip : 63); + stampa_fine(pr); + _PaginaPosizionamento=FALSE; + next_page(pr); + pr.formlen(TDicForm::dic_form_len()); + ++(*cur); + done = cur->pos() >= cur->items()-1; + } + close_print(); + return TRUE; +} + +bool TStampaQuadroAggN::user_create() +{ + _form = new TQuadroN("77QN", quadro()); + _form->set_cursor(_form->TForm::cursor()); + _cur = _form->cursor(); + return TRUE; +} + +bool TStampaQuadroAggN::user_destroy() +{ + delete _form; + return TRUE; +} + diff --git a/m770/77stba.h b/m770/77stba.h index 41b20b8f7..28b586860 100755 --- a/m770/77stba.h +++ b/m770/77stba.h @@ -1,315 +1,315 @@ -#ifndef _77STBA_H -#define _77STBA_H - -#include "77stq.h" - -HIDDEN const int BASE_FORMLEN = 73; -HIDDEN const int BASE_PAGINE = 4; - -class TBase1 : public TDicForm -{ - private: - long _codditta; - TRelation* r; // usate per contare i soci - TCursor* c; - bool _bAllegSoci; - long iContaSoci(); - protected: - void stampa_corpo(TPrinter& pr); - void stampa_soci(TPrinter& pr); - bool bAllegSoci() const { return _bAllegSoci; } - virtual int dic_form_len() const; - virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } - virtual void stampa_totali(TPrinter& pr) {} - virtual void aggiorna_totali(const char tipo) {} - virtual void set_body(TPrinter& pr, const char tipo) {} - virtual int prima_riga(PaginaQuadro p) const; - public: - virtual bool print(const long codditta, const long NumFis, const long NumNoFis); - TBase1(const char* sNomeForm, const char* quadro); - virtual ~TBase1(); -}; - -class TBase2 : public TDicForm -{ - private: - long _codditta; - protected: - void stampa_corpo(TPrinter& pr); - virtual int dic_form_len() const { return BASE_FORMLEN; } - virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } - virtual void set_body(TPrinter& pr, const char tipo) {} - virtual int prima_riga(PaginaQuadro p) const { return 4;} - public: - virtual bool print(const long codditta, const long NumFis, const long NumNoFis); - TBase2(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {} - virtual ~TBase2() {} -}; - -class TBase3 : public TDicForm -{ - private: - bool _bAggiuntivoL; // se necessario stampare aggiuntivo L - protected: - void stampa_testata(TPrinter& pr); - void stampa_totali_L(TPrinter& pr); - bool aggiuntivoL() const { return _bAggiuntivoL; } - int stampa_L(TPrinter& pr,const int iChiaveL); - virtual int dic_form_len() const { return BASE_FORMLEN; } - virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } - virtual void set_body(TPrinter& pr, const char tipo) {} - virtual int prima_riga(PaginaQuadro p) const { return 4;} - virtual long filtra(const long codditta); - public: - virtual bool print(const long codditta, const long NumFis, const long NumNoFis); - TBase3(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {} - virtual ~TBase3() {} -}; - -const int _RIGA_TOTALI_L = 65; - -class TRigaN : public TSortable -{ - TRecnotype _pos; - int _MeseRif,_AnnoRif; // periodo di riferimento - real _ImpRimb,_CompAss; // importi - -public: - virtual int compare(const TSortable& s) const; - TRecnotype pos() const { return _pos; } - - const char* sMeseRif() const; - const char* sAnnoRif() const; - const int iMeseRif() const { return _MeseRif; } - const int iAnnoRif() const { return _AnnoRif; } - const char* ImpRimb(const char* pic) const { return _ImpRimb.string(pic); } - const char* CompAss(const char* pic) const { return _CompAss.string(pic); } - TRigaN(const TLocalisamfile& qn); - virtual ~TRigaN() { } -}; - -class TRigheNR : public TObject -{ - TArray _data; - - protected: - const TRigaN& rigaN(int i) const { return (const TRigaN&)_data[i]; } - - public: - const TRigaN& operator[](int i) const { return rigaN(i); } - - int fill(const long codditta,TLocalisamfile& qnr); - int items() const { return _data.items(); } - void destroy() { _data.destroy(); } - TRigheNR() { } - virtual ~TRigheNR() { } -}; - -class TRigaQT : public TSortable -{ - int _MesePag,_AnnoPag; // periodo di riferimento - real _ContVers,_ContRimb,_Interessi; // importi - TString _sCodReg; - TRecnotype _pos; -public: - virtual int compare(const TSortable& s) const; - TRecnotype pos() const { return _pos; } - const char* sMesePag() const; - const char* sAnnoPag() const; - const int iMesePag() const { return _MesePag; } - const int iAnnoPag() const { return _AnnoPag; } - const char* ContVers(const char* pic) const { return _ContVers.string(pic); } - const char* ContRimb(const char* pic) const { return _ContRimb.string(pic); } - const char* Interessi(const char* pic) const { return _Interessi.string(pic); } - const char* CodReg() const { return (const char*)_sCodReg; } - TRigaQT(const TLocalisamfile& qt); - virtual ~TRigaQT() { } -}; - -class TRigheQT : public TObject -{ - TArray _data; - - protected: - const TRigaQT& rigaQT(int i) const { return (const TRigaQT&)_data[i]; } - - public: - const TRigaQT& operator[](int i) const { return rigaQT(i); } - void destroy() { _data.destroy(); } - int fill(const long codditta,TLocalisamfile& qt); - int items() const { return _data.items(); } - - TRigheQT() {} - virtual ~TRigheQT() {} -}; - -class TRigaPS : public TSortable -{ - TDate _dDv; // data vers. - real _rImp,_rIntDip,_rIntDat; // importi - TString _sTipoV,_sCodTrib,_sSerie,_sNumero; - TRecnotype _pos; - public: - virtual int compare(const TSortable& s) const; - TRecnotype pos() const { return _pos; } - TDate dDataVers() const { return _dDv; } - const char* sDataVers() const { return _dDv.string(); } - const char* sImposta() const; - const char* sIntDip() const; - const char* sIntDat() const; - const char* sImposta(const char* pic) const { return _rImp.string(pic); } - const char* sIntDip(const char* pic) const { return _rIntDip.string(pic); } - const char* sIntDat(const char* pic) const { return _rIntDat.string(pic); } - const char* sTipoVers() const { return (const char*)_sTipoV; } - const char* sCodTrib() const { return (const char*)_sCodTrib; } - const char* sSerie() const { return (const char*)_sSerie; } - const char* sNumero() const { return (const char*)_sNumero; } - TRigaPS(const TLocalisamfile& qt); - virtual ~TRigaPS() { } -}; - -class TRighePS : public TObject -{ - TArray _data; - - protected: - const TRigaPS& rigaPS(int i) const { return (const TRigaPS&)_data[i]; } - - public: - const TRigaPS& operator[](int i) const { return rigaPS(i); } - int fill(const long codditta,TLocalisamfile& ps); - void destroy() { _data.destroy(); } - int items() const { return _data.items(); } - TRighePS() {} - virtual ~TRighePS() {} -}; - -class TBase4 : public TDicForm -{ - private: - long _codditta; - bool _bAggN,_bAggP,_bAggR,_bAggQ,_bAggS,_bAggT; - protected: - int _IdFirma; - TRigheNR _righeNR; // array dei record N e R - TRigheQT _righeQT; - TRighePS _righePS; - void stampa_righe_vuote(TPrinter& pr,const int righe); - void fill_riga_QT(TPrint_section& sec,const int num); - void fill_riga_PS(TPrint_section& sec,const int num); - void fill_riga_NR(TPrint_section& sec,const int num, const int side); - void stampa_testata(TPrinter& pr); - void stampa_fine(TPrinter& pr); - void stampa_N(TPrinter& pr); - void stampa_P(TPrinter& pr); - void stampa_Q(TPrinter& pr); - void stampa_R(TPrinter& pr); - void stampa_S(TPrinter& pr); - void stampa_T(TPrinter& pr); - virtual int dic_form_len() const { return BASE_FORMLEN; } - virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } - virtual void set_body(TPrinter& pr, const char tipo) {} - virtual int prima_riga(PaginaQuadro p) const { return 4;} - int calcola_firma(); - public: - virtual bool print(const long codditta, const long NumFis, const long NumNoFis); - TBase4(const char* sNomeForm, const char* quadro) : _IdFirma(824), TDicForm(sNomeForm, quadro) {} - virtual ~TBase4() {} -}; - -const int _FIELD_L = 740; - -class TStampaBase : public TStampaQuadro -{ - private: - TBase1* _fBase1; - TBase2* _fBase2; - TBase3* _fBase3; - TBase4* _fBase4; - TRelation* _rel; - protected: - virtual bool user_create(); - virtual bool user_destroy(); - virtual bool conta_tipi_per() const { return FALSE; } - virtual TDicForm* get_form() const { return _fBase1; } - virtual TCursor* get_cursor() const { return NULL; } - virtual bool print_quadro(const int OffsetDitta, const bool modulaser); - public: - TStampaBase(char livel) : TStampaQuadro("Base", livel) { } -}; - -/////////////////////////////////////////////////////////////////////////////////////////// -// -// Quadro L aggiuntivo -// -/////////////////////////////////////////////////////////////////////////////////////////// -class TQuadroL : public TDicForm -{ - private: - long _codditta; - real _rRitEff, _rRitVer; - protected: - void stampa_testata(TPrinter& pr); - void stampa_totali_L(TPrinter& pr); - bool stampa_L(TPrinter& pr,const long lStartRec,const int iRecL); - virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } - virtual void set_body(TPrinter& pr, const char tipo) {} - virtual int prima_riga(PaginaQuadro p) const; - virtual long filtra(const long codditta); - void CalcolaTotalePrecedenti(TCursor* cur, const int _START_AGG_L); - public: - virtual bool print(const long codditta, const long NumFis, const long NumNoFis); - TQuadroL(const char* sNomeForm, const char* quadro) : _rRitEff(ZERO),_rRitVer(ZERO),TDicForm(sNomeForm, quadro) {} - virtual ~TQuadroL() {} -}; - -class TStampaQuadroAggL : public TStampaQuadro -{ - TQuadroL* _form; - TCursor* _cur; - protected: - virtual bool user_create(); - virtual bool user_destroy(); - virtual TDicForm* get_form() const { return _form; } - virtual TCursor* get_cursor() const { return _cur; } - virtual bool conta_tipi_per() const { return FALSE; } - public: - TStampaQuadroAggL(const char* quadro, char liv):TStampaQuadro(quadro, liv) {} - virtual ~TStampaQuadroAggL() { } -}; - -class TQuadroN : public TBase4 -{ - long _codditta; - public: - void stampa_fine(TPrinter& pr); - void stampa_N(TPrinter& pr); - void stampa_P(TPrinter& pr); - void stampa_Q(TPrinter& pr); - void stampa_R(TPrinter& pr); - void stampa_S(TPrinter& pr); - void stampa_T(TPrinter& pr); - void stampa_testata(TPrinter& pr); - virtual int prima_riga(PaginaQuadro p) const; - virtual bool print(const long codditta, const long NumFis, const long NumNoFis); - TQuadroN(const char* sNomeForm, const char* quadro) : TBase4(sNomeForm, quadro) { _IdFirma=2; } - virtual ~TQuadroN() {} -}; - -class TStampaQuadroAggN : public TStampaQuadro -{ - TQuadroN* _form; - TCursor* _cur; - protected: - virtual bool user_create(); - virtual bool user_destroy(); - virtual TDicForm* get_form() const { return _form; } - virtual TCursor* get_cursor() const { return _cur; } - virtual bool conta_tipi_per() const { return FALSE; } - public: - TStampaQuadroAggN(const char* quadro, char liv):TStampaQuadro(quadro, liv) {} - virtual ~TStampaQuadroAggN() { } -}; - - -#endif +#ifndef _77STBA_H +#define _77STBA_H + +#include "77stq.h" + +HIDDEN const int BASE_FORMLEN = 73; +HIDDEN const int BASE_PAGINE = 4; + +class TBase1 : public TDicForm +{ + private: + long _codditta; + TRelation* r; // usate per contare i soci + TCursor* c; + bool _bAllegSoci; + long iContaSoci(); + protected: + void stampa_corpo(TPrinter& pr); + void stampa_soci(TPrinter& pr); + bool bAllegSoci() const { return _bAllegSoci; } + virtual int dic_form_len() const; + virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } + virtual void stampa_totali(TPrinter& pr) {} + virtual void aggiorna_totali(const char tipo) {} + virtual void set_body(TPrinter& pr, const char tipo) {} + virtual int prima_riga(PaginaQuadro p) const; + public: + virtual bool print(const long codditta, const long NumFis, const long NumNoFis); + TBase1(const char* sNomeForm, const char* quadro); + virtual ~TBase1(); +}; + +class TBase2 : public TDicForm +{ + private: + long _codditta; + protected: + void stampa_corpo(TPrinter& pr); + virtual int dic_form_len() const { return BASE_FORMLEN; } + virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } + virtual void set_body(TPrinter& pr, const char tipo) {} + virtual int prima_riga(PaginaQuadro p) const { return 4;} + public: + virtual bool print(const long codditta, const long NumFis, const long NumNoFis); + TBase2(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {} + virtual ~TBase2() {} +}; + +class TBase3 : public TDicForm +{ + private: + bool _bAggiuntivoL; // se necessario stampare aggiuntivo L + protected: + void stampa_testata(TPrinter& pr); + void stampa_totali_L(TPrinter& pr); + bool aggiuntivoL() const { return _bAggiuntivoL; } + int stampa_L(TPrinter& pr,const int iChiaveL); + virtual int dic_form_len() const { return BASE_FORMLEN; } + virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } + virtual void set_body(TPrinter& pr, const char tipo) {} + virtual int prima_riga(PaginaQuadro p) const { return 4;} + virtual long filtra(const long codditta); + public: + virtual bool print(const long codditta, const long NumFis, const long NumNoFis); + TBase3(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {} + virtual ~TBase3() {} +}; + +const int _RIGA_TOTALI_L = 65; + +class TRigaN : public TSortable +{ + TRecnotype _pos; + int _MeseRif,_AnnoRif; // periodo di riferimento + real _ImpRimb,_CompAss; // importi + +public: + virtual int compare(const TSortable& s) const; + TRecnotype pos() const { return _pos; } + + const char* sMeseRif() const; + const char* sAnnoRif() const; + const int iMeseRif() const { return _MeseRif; } + const int iAnnoRif() const { return _AnnoRif; } + const char* ImpRimb(const char* pic) const { return _ImpRimb.string(pic); } + const char* CompAss(const char* pic) const { return _CompAss.string(pic); } + TRigaN(const TLocalisamfile& qn); + virtual ~TRigaN() { } +}; + +class TRigheNR : public TObject +{ + TArray _data; + + protected: + const TRigaN& rigaN(int i) const { return (const TRigaN&)_data[i]; } + + public: + const TRigaN& operator[](int i) const { return rigaN(i); } + + int fill(const long codditta,TLocalisamfile& qnr); + int items() const { return _data.items(); } + void destroy() { _data.destroy(); } + TRigheNR() { } + virtual ~TRigheNR() { } +}; + +class TRigaQT : public TSortable +{ + int _MesePag,_AnnoPag; // periodo di riferimento + real _ContVers,_ContRimb,_Interessi; // importi + TString _sCodReg; + TRecnotype _pos; +public: + virtual int compare(const TSortable& s) const; + TRecnotype pos() const { return _pos; } + const char* sMesePag() const; + const char* sAnnoPag() const; + const int iMesePag() const { return _MesePag; } + const int iAnnoPag() const { return _AnnoPag; } + const char* ContVers(const char* pic) const { return _ContVers.string(pic); } + const char* ContRimb(const char* pic) const { return _ContRimb.string(pic); } + const char* Interessi(const char* pic) const { return _Interessi.string(pic); } + const char* CodReg() const { return (const char*)_sCodReg; } + TRigaQT(const TLocalisamfile& qt); + virtual ~TRigaQT() { } +}; + +class TRigheQT : public TObject +{ + TArray _data; + + protected: + const TRigaQT& rigaQT(int i) const { return (const TRigaQT&)_data[i]; } + + public: + const TRigaQT& operator[](int i) const { return rigaQT(i); } + void destroy() { _data.destroy(); } + int fill(const long codditta,TLocalisamfile& qt); + int items() const { return _data.items(); } + + TRigheQT() {} + virtual ~TRigheQT() {} +}; + +class TRigaPS : public TSortable +{ + TDate _dDv; // data vers. + real _rImp,_rIntDip,_rIntDat; // importi + TString _sTipoV,_sCodTrib,_sSerie,_sNumero; + TRecnotype _pos; + public: + virtual int compare(const TSortable& s) const; + TRecnotype pos() const { return _pos; } + TDate dDataVers() const { return _dDv; } + const char* sDataVers() const { return _dDv.string(); } + const char* sImposta() const; + const char* sIntDip() const; + const char* sIntDat() const; + const char* sImposta(const char* pic) const { return _rImp.string(pic); } + const char* sIntDip(const char* pic) const { return _rIntDip.string(pic); } + const char* sIntDat(const char* pic) const { return _rIntDat.string(pic); } + const char* sTipoVers() const { return (const char*)_sTipoV; } + const char* sCodTrib() const { return (const char*)_sCodTrib; } + const char* sSerie() const { return (const char*)_sSerie; } + const char* sNumero() const { return (const char*)_sNumero; } + TRigaPS(const TLocalisamfile& qt); + virtual ~TRigaPS() { } +}; + +class TRighePS : public TObject +{ + TArray _data; + + protected: + const TRigaPS& rigaPS(int i) const { return (const TRigaPS&)_data[i]; } + + public: + const TRigaPS& operator[](int i) const { return rigaPS(i); } + int fill(const long codditta,TLocalisamfile& ps); + void destroy() { _data.destroy(); } + int items() const { return _data.items(); } + TRighePS() {} + virtual ~TRighePS() {} +}; + +class TBase4 : public TDicForm +{ + private: + long _codditta; + bool _bAggN,_bAggP,_bAggR,_bAggQ,_bAggS,_bAggT; + protected: + int _IdFirma; + TRigheNR _righeNR; // array dei record N e R + TRigheQT _righeQT; + TRighePS _righePS; + void stampa_righe_vuote(TPrinter& pr,const int righe); + void fill_riga_QT(TPrint_section& sec,const int num); + void fill_riga_PS(TPrint_section& sec,const int num); + void fill_riga_NR(TPrint_section& sec,const int num, const int side); + void stampa_testata(TPrinter& pr); + void stampa_fine(TPrinter& pr); + void stampa_N(TPrinter& pr); + void stampa_P(TPrinter& pr); + void stampa_Q(TPrinter& pr); + void stampa_R(TPrinter& pr); + void stampa_S(TPrinter& pr); + void stampa_T(TPrinter& pr); + virtual int dic_form_len() const { return BASE_FORMLEN; } + virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } + virtual void set_body(TPrinter& pr, const char tipo) {} + virtual int prima_riga(PaginaQuadro p) const { return 4;} + int calcola_firma(); + public: + virtual bool print(const long codditta, const long NumFis, const long NumNoFis); + TBase4(const char* sNomeForm, const char* quadro) : _IdFirma(824), TDicForm(sNomeForm, quadro) {} + virtual ~TBase4() {} +}; + +const int _FIELD_L = 740; + +class TStampaBase : public TStampaQuadro +{ + private: + TBase1* _fBase1; + TBase2* _fBase2; + TBase3* _fBase3; + TBase4* _fBase4; + TRelation* _rel; + protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool conta_tipi_per() const { return FALSE; } + virtual TDicForm* get_form() const { return _fBase1; } + virtual TCursor* get_cursor() const { return NULL; } + virtual bool print_quadro(const int OffsetDitta, const bool modulaser); + public: + TStampaBase(char livel) : TStampaQuadro("Base", livel) { } +}; + +/////////////////////////////////////////////////////////////////////////////////////////// +// +// Quadro L aggiuntivo +// +/////////////////////////////////////////////////////////////////////////////////////////// +class TQuadroL : public TDicForm +{ + private: + long _codditta; + real _rRitEff, _rRitVer; + protected: + void stampa_testata(TPrinter& pr); + void stampa_totali_L(TPrinter& pr); + bool stampa_L(TPrinter& pr,const long lStartRec,const int iRecL); + virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } + virtual void set_body(TPrinter& pr, const char tipo) {} + virtual int prima_riga(PaginaQuadro p) const; + virtual long filtra(const long codditta); + void CalcolaTotalePrecedenti(TCursor* cur, const int _START_AGG_L); + public: + virtual bool print(const long codditta, const long NumFis, const long NumNoFis); + TQuadroL(const char* sNomeForm, const char* quadro) : _rRitEff(ZERO),_rRitVer(ZERO),TDicForm(sNomeForm, quadro) {} + virtual ~TQuadroL() {} +}; + +class TStampaQuadroAggL : public TStampaQuadro +{ + TQuadroL* _form; + TCursor* _cur; + protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual TDicForm* get_form() const { return _form; } + virtual TCursor* get_cursor() const { return _cur; } + virtual bool conta_tipi_per() const { return FALSE; } + public: + TStampaQuadroAggL(const char* quadro, char liv):TStampaQuadro(quadro, liv) {} + virtual ~TStampaQuadroAggL() { } +}; + +class TQuadroN : public TBase4 +{ + long _codditta; + public: + void stampa_fine(TPrinter& pr); + void stampa_N(TPrinter& pr); + void stampa_P(TPrinter& pr); + void stampa_Q(TPrinter& pr); + void stampa_R(TPrinter& pr); + void stampa_S(TPrinter& pr); + void stampa_T(TPrinter& pr); + void stampa_testata(TPrinter& pr); + virtual int prima_riga(PaginaQuadro p) const; + virtual bool print(const long codditta, const long NumFis, const long NumNoFis); + TQuadroN(const char* sNomeForm, const char* quadro) : TBase4(sNomeForm, quadro) { _IdFirma=2; } + virtual ~TQuadroN() {} +}; + +class TStampaQuadroAggN : public TStampaQuadro +{ + TQuadroN* _form; + TCursor* _cur; + protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual TDicForm* get_form() const { return _form; } + virtual TCursor* get_cursor() const { return _cur; } + virtual bool conta_tipi_per() const { return FALSE; } + public: + TStampaQuadroAggN(const char* quadro, char liv):TStampaQuadro(quadro, liv) {} + virtual ~TStampaQuadroAggN() { } +}; + + +#endif diff --git a/m770/77stq.cpp b/m770/77stq.cpp index 998af5af7..823e89fdd 100755 --- a/m770/77stq.cpp +++ b/m770/77stq.cpp @@ -50,6 +50,11 @@ void TDicForm::set_cofi_dic(const char* cofi) _codditta_dic = sogg_estinto(_codditta); } +/*TCursor& TDicForm::cur() +{ + return *_cur; +} */ + void TDicForm::set_cursor(TCursor* cur) { CHECK(cur, "NULL cursor in TDicForm"); @@ -589,7 +594,7 @@ void TDicForm::jump_to_line(TPrinter& pr, const int lin) void TDicForm::stampa_totali(TPrinter& pr) { TPrint_section& totali = section('F', last_page); - totali.update(); + totali.update(); for (int i = 0; i < totali.items(); i++) { pr.print(totali.row(i)); @@ -675,6 +680,32 @@ void TDicForm::set_body(TPrinter& pr, const char tipo) progind()->addstatus(1); } +void TDicForm::firma_dichiarante() +{ + TPrint_section& footer = section('F', last_page); + TForm_item& firma = footer.find_field(FIRMADIC); + + if (_PaginaCorrente == PRIMA) + firma.hide(); + if (_PaginaCorrente == QUARTA) + { + firma.show(); + const int y = firma.y()-1; + + TString cognome = firma.get(); + if (cognome.len() > 30 && cognome[29] == ' ') + { + TString nome = cognome.mid(30, -1); + cognome.cut(30); cognome.trim(); + cognome << ' ' << nome; + firma.set(cognome); + + footer.row(y).reset(); + footer.row(y).put(cognome, firma.x()-1); + } + } +// footer.update(); +} void TDicForm::posiziona() { @@ -702,7 +733,7 @@ class TQuadroG : public TDicForm void stampa_prospetti3_4(TPrinter& pr); protected: - virtual bool ultima_pagina() const { return _PaginaCorrente==SECONDA; } + virtual bool ultima_pagina() const { return _PaginaCorrente==SECONDA; } virtual void inc_curr_page(); virtual void next_page(TPrinter& pr); virtual void stampa_totali(TPrinter& pr) {} @@ -1699,7 +1730,7 @@ public: bool controlla_percentuale(TCursor* cur, const real& perc_p); void set_body(TPrinter& pr, const char tipo); void setta_importi(TPrint_section& body); - void leggi_importi(); + void leggi_importi(); TQuadroD(const char* form, const char* quadro) : TDicForm(form, quadro) {} virtual ~TQuadroD() {} @@ -1843,7 +1874,7 @@ bool TQuadroD::print(const long codditta, const long NumFis, const long NumNoFis _CtrFisStampati = _CtrNoFisStampati = 0; _finite_fis = _finite_nofis = FALSE; - _GiaStampatiFis = _GiaStampatiNoFis = FALSE; + _GiaStampatiFis = _GiaStampatiNoFis = FALSE; _EndPrintDitta = FALSE; // Vero se stampato l'ultimo record bool LastRecord = FALSE; // Vero se letto l'ultimo record bool stampa = TRUE; @@ -1859,10 +1890,11 @@ bool TQuadroD::print(const long codditta, const long NumFis, const long NumNoFis { for (int pagina=1; pagina <= QD_PAGINE; pagina++, next_page(pr)) { - pr.formlen(QD_FORMLEN); - +// pr.formlen(QD_FORMLEN); + firma_dichiarante(); if (_PaginaCorrente == PRIMA) - { + { + pr.formlen(dic_form_len()); if (_modulaser) ClearFlagModulaser(); bool testata = TRUE; @@ -1872,7 +1904,11 @@ bool TQuadroD::print(const long codditta, const long NumFis, const long NumNoFis // Stampa intestazione, solo sul primo foglio. if (testata) { - (*cur) = PtrFis >= 0L ? PtrFis : 0L; + (*cur) = PtrFis >= 0L ? PtrFis : 0L; + if (_PaginaPosizionamento) + fill_page(pr, 9); + else + fill_page(pr, 12); stampa_testata(pr); testata = FALSE; } @@ -1943,7 +1979,7 @@ bool TQuadroD::print(const long codditta, const long NumFis, const long NumNoFis { // Reset del flag di pagina con posiz. if (_posiziona && _PaginaPosizionamento) _PaginaPosizionamento = FALSE; - + pr.formlen(dic_form_len()); bool testata = TRUE; for (int righe=0; righe < QD_RIGHE_SECONDA; righe++) { @@ -1991,7 +2027,8 @@ bool TQuadroD::print(const long codditta, const long NumFis, const long NumNoFis if (_PaginaCorrente == TERZA) { - bool testata = TRUE; + pr.formlen(dic_form_len()); + bool testata = TRUE; for (int righe=0; righe < QD_RIGHE_TERZA; righe++) { stampa = TRUE; @@ -2040,8 +2077,8 @@ bool TQuadroD::print(const long codditta, const long NumFis, const long NumNoFis if (_PaginaCorrente == QUARTA) { + pr.formlen(dic_form_len()); azzera_totali(); - bool testata = TRUE; for (int righe=0; righe < QD_RIGHE_QUARTA; righe++) { @@ -2115,7 +2152,8 @@ bool TQuadroD::print(const long codditta, const long NumFis, const long NumNoFis } } } - PtrNoFis = cur->pos(); + PtrNoFis = cur->pos(); + firma_dichiarante(); } } // for pagina.. } // while !_EndPrintDitta @@ -2223,14 +2261,14 @@ bool TQuadroD1::controlla_percentuale(TCursor* cur, const real& perc_p) void TQuadroD1::leggi_importi() { - TRectype& cur = cursor()->curr(); + TCursor* cur = cursor(); - _totale = cur.get_real(QD1_TOTALE); - _quotapro = cur.get_real(QD1_QUOTAPRO); - _speseant = cur.get_real(QD1_SPESEANT); - _imponibile = cur.get_real(QD1_IMPONIBILE); - _importo = cur.get_real(QD1_IMPORTO); - _netto = cur.get_real(QD1_NETTO); + _totale = cur->curr().get_real(QD1_TOTALE); + _quotapro = cur->curr().get_real(QD1_QUOTAPRO); + _speseant = cur->curr().get_real(QD1_SPESEANT); + _imponibile = cur->curr().get_real(QD1_IMPONIBILE); + _importo = cur->curr().get_real(QD1_IMPORTO); + _netto = cur->curr().get_real(QD1_NETTO); } void TQuadroD1::setta_importi(TPrint_section& body) @@ -2314,9 +2352,8 @@ void TQuadroD1::next_page(TPrinter& pr) bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFis) { bool StabilitaInesistenzaNoFis = FALSE; - bool StabilitaInesistenzaFis = FALSE; + bool StabilitaInesistenzaFis = FALSE; bool StampatoRitenutaImposta = FALSE; - long CtrFis = NumFis; long CtrNoFis = NumNoFis; long PtrFis = -1L, PtrNoFis=-1L; @@ -2328,7 +2365,7 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi _EndPrintDitta = FALSE; // Vero se stampato l'ultimo record bool LastRecord = FALSE; // Vero se letto l'ultimo record bool stampa = TRUE; - + _PaginaCorrente = PRIMA; if (!InitPrint(codditta)) @@ -2340,17 +2377,19 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi { for (int pagina=1; pagina <= QD_PAGINE; pagina++, next_page(pr)) { - pr.formlen(dic_form_len()); - +// pr.formlen(QD_FORMLEN); + firma_dichiarante(); if (_PaginaCorrente == PRIMA) { + pr.formlen(dic_form_len()); if (_modulaser) ClearFlagModulaser(); + bool testata = TRUE; for (int righe=0; righe < QD1_RIGHE_PRIMA; righe++) { stampa = TRUE; // Stampa intestazione, solo sul primo foglio. - if (righe == 0) + if (testata) { (*cur) = PtrFis >= 0L ? PtrFis : 0L; @@ -2370,6 +2409,7 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi head.find_field(22).set(""); } stampa_testata(pr); + testata = FALSE; } if (_finite_fis || StabilitaInesistenzaFis) @@ -2404,21 +2444,19 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi (*cur) = PtrFis; const char tipo = cur->curr().get(QD1_TIPOA)[0]; - if (tipo == 'F') - { - const bool rit_imp = !cur->curr(-14).get_bool("B0"); - if (righe > 0 && rit_imp && !StampatoRitenutaImposta) - break; - + if (tipo != 'F') + break; + else + { + const bool rit_acc = cur->curr(-14).get_bool("B0"); + if (righe > 0 && !rit_acc && !StampatoRitenutaImposta) break; CtrFis--; if (CtrFis == 0L) _finite_fis = TRUE; real perc_p = cur->curr().get_real(QD1_PERC); stampa = controlla_percentuale(cur,perc_p); if (stampa) - { set_body(pr, 'F'); - } else { leggi_importi(); @@ -2434,8 +2472,6 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi LastRecord = cur->pos() >= _Items-1; } } - else - break; } // for righe.. PtrFis = cur->pos(); } @@ -2445,6 +2481,7 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi // Reset del flag di pagina con posiz. if (_posiziona && _PaginaPosizionamento) _PaginaPosizionamento = FALSE; + pr.formlen(dic_form_len()); bool testata = TRUE; for (int righe=0; righe < QD1_RIGHE_SECONDA; righe++) { @@ -2461,21 +2498,20 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi (*cur) = PtrFis; const char tipo = cur->curr().get(QD1_TIPOA)[0]; - if (tipo == 'F') + if (tipo != 'F') + break; + else { - const bool rit_imp = !cur->curr(-14).get_bool("B0"); - if (rit_imp && !StampatoRitenutaImposta) - break; - + const bool rit_acc = cur->curr(-14).get_bool("B0"); + if (!rit_acc && !StampatoRitenutaImposta) break; + CtrFis--; if (CtrFis == 0L) _finite_fis = TRUE; real perc_p = cur->curr().get_real(QD1_PERC); stampa = controlla_percentuale(cur,perc_p); if (stampa) - { set_body(pr, 'F'); - } else { leggi_importi(); @@ -2490,8 +2526,6 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi LastRecord = cur->pos() >= _Items-1; } } - else - break; } PtrFis = cur->pos(); } @@ -2499,6 +2533,7 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi if (_PaginaCorrente == TERZA) { bool testata = TRUE; + pr.formlen(dic_form_len()); for (int righe=0; righe < QD1_RIGHE_TERZA; righe++) { stampa = TRUE; @@ -2515,20 +2550,20 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi (*cur) = PtrFis; const char tipo = cur->curr().get(QD1_TIPOA)[0]; - if (tipo == 'F') + if (tipo != 'F') + break; + else { - const bool rit_imp = !cur->curr(-14).get_bool("B0"); - if (rit_imp && !StampatoRitenutaImposta) - break; + const bool rit_acc = cur->curr(-14).get_bool("B0"); + if (!rit_acc && !StampatoRitenutaImposta) break; + CtrFis--; if (CtrFis == 0L) _finite_fis = TRUE; real perc_p = cur->curr().get_real(QD1_PERC); stampa = controlla_percentuale(cur,perc_p); if (stampa) - { set_body(pr, 'F'); - } else { leggi_importi(); @@ -2544,14 +2579,13 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi LastRecord = cur->pos() >= _Items-1; } } - else - break; } PtrFis = cur->pos(); } if (_PaginaCorrente == QUARTA) { + pr.formlen(dic_form_len()); azzera_totali(); bool testata = TRUE; @@ -2628,6 +2662,7 @@ bool TQuadroD1::print(const long codditta, const long NumFis, const long NumNoFi } } PtrNoFis = cur->pos(); + firma_dichiarante(); } } // for pagina.. } // while !_EndPrintDitta @@ -2662,7 +2697,7 @@ bool TStampaQuadroD1::user_create() _form = new TQuadroD1("77QD1", quadro()); TString sortkey(80); - sortkey.format("CODDITTA|TIPOA|14@->B0-|216@->RAGSOC|CODANAGR|CODCAUS|PERC"); + sortkey.format("CODDITTA|TIPOA|216@->RAGSOC|CODANAGR|CODCAUS|PERC", LF_QUAD1, LF_QUAD1); _cur = new TSorted_cursor(_form->TForm::relation(), sortkey); return TRUE; @@ -3203,7 +3238,7 @@ class TQuadroF : public TDicForm void azzera_contatori(); void aggiorna_totali(char tipoprosp, TRectype& r); void stampa_totali(char tipoprosp, TPrinter& pr); - virtual bool ultima_pagina() const { return _PaginaCorrente==SECONDA; } + virtual bool ultima_pagina() const { return _PaginaCorrente==SECONDA; } public: virtual bool print(const long codditta, const long numfis=0L, const long numnofis=0L); @@ -3769,9 +3804,9 @@ bool get_alleg_730(const long codditta) base.put("CODDITTA",(long)codditta); if (base.read()==NOERR) { - const long allegA=base.get_long("N730ALLA"); - const long allegA2=base.get_long("N730ALLA2"); - return allegA || allegA2; + const long allegA=base.get_long("N730ALLA"); + const long allegA2=base.get_long("N730ALLA2"); + return allegA || allegA2; } else return FALSE; @@ -3800,29 +3835,29 @@ bool TBusta::print(const long codditta, const long, const long) all730.set(bAlleg730 ? "X" : ""); TPrinter& pr=printer(); - TPrint_section& body = section('B', odd_page); - const int body_righe = body.height(); + TPrint_section& body = section('B', odd_page); + const int body_righe = body.height(); TCursor* cur=cursor(); - bool finito=FALSE; + bool finito=FALSE; (*cur)=0L; pr.formlen(BUSTA_CON_POSIZ); if (!_PaginaPosizionamento) jump_to_line(pr,prima_riga(PRIMA)); - while (!finito) - { - body.reset(); - body.update(); - for (int i=0; i < body_righe; i++) - { - pr.print(body.row(i)); - _RigaCorr++; - } - if (usa_progind()) - progind()->addstatus(1); - ++(*cur); - finito= cur->pos() >= cur->items()-1; + while (!finito) + { + body.reset(); + body.update(); + for (int i=0; i < body_righe; i++) + { + pr.print(body.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); + ++(*cur); + finito= cur->pos() >= cur->items()-1; pr.formlen(BUSTA_SENZA_POSIZ); - _PaginaPosizionamento=FALSE; + _PaginaPosizionamento=FALSE; } // TForm::print(0); } @@ -3978,10 +4013,6 @@ int stampa_quadro(int argc, char* argv[]) { app = new TStampaQuadroAggL(quadro, livello); } - else if (quadro == "N") - { - app = new TStampaQuadroAggN(quadro, livello); - } if (app != NULL) { diff --git a/m770/77stq.h b/m770/77stq.h index e887d096d..f944f5d7e 100755 --- a/m770/77stq.h +++ b/m770/77stq.h @@ -1,281 +1,284 @@ -#ifndef __77STQ_H -#define __77STQ_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include "base.h" -#include -#include -#include -#include "quadroc.h" -#include "quadrod.h" -#include "quadrod1.h" -#include "quadrogd.h" -#include "quadrif.h" -#include "77stqd.h" -#include "77lib.h" - -// Righe da saltare nelle prime pag. dei moduli successivi al primo (che' son -// senza le righe del posizionamento...) -HIDDEN int HEADER_PRIMA_NOPOS = 3; - -// Chincaglieria che serve per posiziona() -typedef long HWND; -HIDDEN const int MAX_LEN = 300; -extern "C" { - BOOLEAN PrintLineNow( char *pData, word cbBytes, HWND hInst ); -}; - - -HIDDEN TString16 __dep16; -HIDDEN TString80 __dep80; - -// Vega-Key di Modulaser -HIDDEN const char* VK_STARTDOC = "&MA796&0&1"; -HIDDEN const char* VK_ENDDOC = "!0"; -typedef enum { STARTDOC, STARTDITTA, STARTPAGE, ENDDOC } ModulaserKey; - -// Campi form -#define TOT_TOTALE 1 -#define TOT_SNSRIT 2 -#define TOT_IMPON 3 -#define TOT_IMPOR 4 -#define TOT_NETTO 5 - -#define D_TOTALE 16 -#define D_SNSRIT 17 -#define D_IMPONIBILE 18 -#define D_IMPORTO 20 -#define D_NETTO 21 - -#define D1_TOTALE 12 -#define D1_QUOTAPRO 13 -#define D1_SPESEANT 14 -#define D1_IMPONIBILE 15 -#define D1_IMPORTO 17 -#define D1_NETTO 18 - -#define C_TOTALE 14 -#define C_CONTSSN 15 -#define C_SOMME 16 -#define C_IMPONIBILE 17 -#define C_RITENUTE 18 -#define C_NETTO 19 - -#define H_COFI_DIC 13 -#define H_NUM_FOGLIO 14 -#define QD_STATO_ESTERO 12 - -// Quadro D -HIDDEN const int QD_FORMLEN = 72; -HIDDEN const int POS_DITTA = 120; // Colonna del codice ditta a pie' di modulo -HIDDEN const int QD_PAGINE = 4; -HIDDEN const int QD_RIGHE_PRIMA = 4; -HIDDEN const int QD_RIGHE_SECONDA = 7; -HIDDEN const int QD_RIGHE_TERZA = 7; -HIDDEN const int QD_RIGHE_QUARTA = 7; -HIDDEN const int QD1_RIGHE_PRIMA = 6; -HIDDEN const int QD1_RIGHE_SECONDA = 9; -HIDDEN const int QD1_RIGHE_TERZA = 9; -HIDDEN const int QD1_RIGHE_QUARTA = 8; - -HIDDEN const int HEADER_SECONDA = 8; -HIDDEN const int HEADER_TERZA = 8; // Sarebbero 9 col righello... -HIDDEN const int HEADER_QUARTA = 13; // 15 col righello... - -HIDDEN const int HEADER_D1_SECONDA = 8; -HIDDEN const int HEADER_D1_TERZA = 8; -HIDDEN const int HEADER_D1_QUARTA = 14; - -typedef enum { PRIMA=1, SECONDA, TERZA, QUARTA } PaginaQuadro; -typedef enum { fisiche, nofisiche } TipoPagina; - -const char* get_ragsoc_anagr(char tipo, long codanagr); - -class TDicForm : public TForm -{ - private: - real _f_tot_totale, _f_tot_snsrit, _f_tot_impon, _f_tot_impor, _f_tot_netto; - real _nf_tot_totale, _nf_tot_snsrit, _nf_tot_impon, _nf_tot_impor, _nf_tot_netto; - - TCursor* _cur; - - protected: - long _Items; // numero di record che hanno passato il filtro - PaginaQuadro _PaginaCorrente; - - void set_curr_page(PaginaQuadro pagina) { _PaginaCorrente = pagina; } - virtual int dic_form_len() const; - virtual void inc_curr_page(); - virtual void next_page(TPrinter& pr); - bool _modulaser; // se stampa per modulaser - bool _posiziona; - TipoDitta _tipo_ditta; // tipo ditta: normale, estinto, dichiarante - int _num_foglio; // numero foglio - TString _cofi_dic; // cod.fis. dichiarante - bool _can_print_tot_fis, _can_print_tot_nofis; - bool _finite_fis, _finite_nofis, _LastDitta, _EndPrintDitta; - bool _GiaStampatiFis, _GiaStampatiNoFis, _PaginaPosizionamento; - bool _GiaPosizionato, _GiaMessoStartDoc, _GiaMessoStartPage[QD_PAGINE]; // flag per modulaser - int _CtrNoFisStampati, _CtrFisStampati; // contatori p.f. e p.g. stampate - long _codditta, _codditta_dic; // cod.ditta e cod.ditta dichiarante - int _RigaCorr; // contatore riga corrente - TString16 _quadro; // codice quadro in stampa - - void stampa_testata(TPrinter& pr); - virtual bool ultima_pagina() const { return _PaginaCorrente==QUARTA; } - virtual void stampa_totali(TPrinter& pr); -// virtual void aggiorna_totali(const char tipo); - virtual void set_body(TPrinter& pr, const char tipo); - void StampaPagina(PaginaQuadro PaginaCorrente, const bool StampaTotali, const long Fis, const long NoFis); - void posiziona(); - void fill_page(TPrinter& pr, const int righe); - void jump_to_line(TPrinter& pr, const int riga); - const char* BuildModulaserStartPage(); - void put_modulaser(TPrintrow& row, ModulaserKey key, int page=0); - void ClearFlagModulaser(); - bool PaginaPosizionamento() const; - virtual bool InitPrint(const long codditta); - - public: - virtual TCursor* cursor() const { return _cur; } - virtual TRelation* relation() const { return _cur->relation(); } - - virtual long filtra(const long codditta); - - TProgind* _prog; // progind usata in print() - - long codditta() const { return _codditta; } - void set_codditta(const long ditta) { _codditta = ditta; } - void set_posiziona(const bool posiz) { _GiaPosizionato = FALSE; } - void can_print_tot_fis(const bool canpr) { _can_print_tot_fis = canpr; } - void can_print_tot_nofis(const bool canpr) { _can_print_tot_nofis = canpr; } - void set_last_ditta(const bool last) { _LastDitta = last; } - bool last_ditta() const { return _LastDitta; } - bool EndJob() const { return _LastDitta && _EndPrintDitta; } - bool ultima_fis(); - bool ultima_nofis(); - TString& cofi_dic() { return _cofi_dic; } - void set_cofi_dic(const char* cofi); - TipoDitta tipo_ditta() const { return _tipo_ditta; } - void set_tipo_ditta(TipoDitta tipo) { _tipo_ditta = tipo; } - bool modulaser() const { return _modulaser; } - void set_modulaser(const bool modul) { _modulaser = modul; } - void set_num_foglio(const int foglio) { _num_foglio = foglio; } - int num_foglio() const { return _num_foglio; } - virtual void azzera_totali(); - PaginaQuadro curr_page() const { return _PaginaCorrente; } -// TCursor& cur(); - - void set_progind(TProgind* prog) { _prog = prog; } - TProgind* progind() { return _prog; } - bool usa_progind() const { return _prog != NULL; } - - virtual void set_cursor(TCursor* cur); - virtual void close_print(); - virtual bool print(const long codditta, const long NumFis, const long NumNoFis); - virtual int prima_riga(PaginaQuadro p) const; - const TString& quadro() const { return _quadro; } - - TDicForm(const char* form, const char* quadro); - virtual ~TDicForm() {} -}; - -//////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////// -// -// TStDicArray -// -// Array delle ditte da stampare. Contiene una riga per ogni ditta che si vuole stampare -// Il formato della riga e': -// codditta|estinti|numfis|numnofis|ultimafis|ultimanofis -// -///////////////////////////////////////////////////////////////////////////////////////////// - -class TStDicArray : public TObject -{ - private: - TString_array _store; - - public: - TToken_string& operator[](int i) const; - int curr_index() const { return _store.last(); } - void set(const int index, const TipoDitta tipo=normale, const int num_fis=0, const int num_nofis=0, - bool ultima_con_fis=FALSE, bool ultima_con_nofis=FALSE, const char* cofidic=NULL); - void set_tipo(const int index, const TipoDitta tipo); - void set_ultima_con_fis(const int index, const bool ultima_fis); - void set_ultima_con_nofis(const int index, const bool ultima_nofis); - void set_flag_tipi(const int index, const bool ultima_fis, const bool ultima_nofis); - void set_ctr_tipi(const int index, const int num_fis, const int num_nofis); - void add(const long codditta, const TipoDitta tipo=normale, const int num_fis=0, const int num_nofis=0, - bool ultima_con_fis=FALSE, bool ultima_con_nofis=FALSE, const char* cofidic=NULL); - int items() const { return _store.items(); } - void destroy() { _store.destroy(); } -}; - -///////////////////////////////////////////////////////////////////////////////////////////// -// -// STAMPA QUADRO -// -///////////////////////////////////////////////////////////////////////////////////////////// - -class TStampaQuadro : public TApplication -{ - TMask* _m; // Maschera di stampa - - TConfig* _cnf; // Configurazione - TString16 _section; // Paragrafo del config - long _codditta; - int _anno_dic; - - TString _quadro; - char _livello; // "S" studio, "D" singola ditta - TString _title; - - TStDicArray _ditte; - -protected: // TApplication - virtual bool menu(MENU_TAG); - virtual void on_config_change(); - - virtual bool create(); - virtual bool destroy(); - -protected: - virtual bool user_create() pure; - virtual bool user_destroy() pure; - - virtual TDicForm* get_form() const pure; - virtual TCursor* get_cursor() const pure; - - virtual const char* mask_name() const; - virtual const char* form_name() const; - - virtual bool conta_tipi_per() const { return TRUE; } - void fill_estinti(const long CodDic); - const TStDicArray& ditte() const { return _ditte; } - - virtual bool print_quadro(const int OffsetDitta, const bool modulaser); - virtual void print(const bool modulaser); - - bool singola_ditta() const { return _livello == 'D'; } - const TString& quadro() const { return _quadro; } - - void set_taitol(const char* t) { _title = t; } - - TStampaQuadro(const char* quad, char liv); - -public: - const TString& taitol() const { return _title; } - - virtual ~TStampaQuadro() { } -}; - -#endif +#ifndef __77STQ_H +#define __77STQ_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include "base.h" +#include +#include +#include +#include "quadroc.h" +#include "quadrod.h" +#include "quadrod1.h" +#include "quadrogd.h" +#include "quadrif.h" +#include "77stqd.h" +#include "77lib.h" + +// Righe da saltare nelle prime pag. dei moduli successivi al primo (che' son +// senza le righe del posizionamento...) +HIDDEN int HEADER_PRIMA_NOPOS = 3; + +// Chincaglieria che serve per posiziona() +typedef long HWND; +HIDDEN const int MAX_LEN = 300; +extern "C" { + BOOLEAN PrintLineNow( char *pData, word cbBytes, HWND hInst ); +}; + + +HIDDEN TString16 __dep16; +HIDDEN TString80 __dep80; + +// Vega-Key di Modulaser +HIDDEN const char* VK_STARTDOC = "&MA796&0&1"; +HIDDEN const char* VK_ENDDOC = "!0"; +typedef enum { STARTDOC, STARTDITTA, STARTPAGE, ENDDOC } ModulaserKey; + +// Campi form +#define FIRMADIC 2 // Per usare la funzione firma_dichiarante() ricordarsi di definire + // nel footer il blocco dellla firma con id = 2 +#define TOT_TOTALE 1 +#define TOT_SNSRIT 2 +#define TOT_IMPON 3 +#define TOT_IMPOR 4 +#define TOT_NETTO 5 + +#define D_TOTALE 16 +#define D_SNSRIT 17 +#define D_IMPONIBILE 18 +#define D_IMPORTO 20 +#define D_NETTO 21 + +#define D1_TOTALE 12 +#define D1_QUOTAPRO 13 +#define D1_SPESEANT 14 +#define D1_IMPONIBILE 15 +#define D1_IMPORTO 17 +#define D1_NETTO 18 + +#define C_TOTALE 14 +#define C_CONTSSN 15 +#define C_SOMME 16 +#define C_IMPONIBILE 17 +#define C_RITENUTE 18 +#define C_NETTO 19 + +#define H_COFI_DIC 13 +#define H_NUM_FOGLIO 14 +#define QD_STATO_ESTERO 12 + +// Quadro D +HIDDEN const int QD_FORMLEN = 72; +HIDDEN const int POS_DITTA = 120; // Colonna del codice ditta a pie' di modulo +HIDDEN const int QD_PAGINE = 4; +HIDDEN const int QD_RIGHE_PRIMA = 4; +HIDDEN const int QD_RIGHE_SECONDA = 7; +HIDDEN const int QD_RIGHE_TERZA = 7; +HIDDEN const int QD_RIGHE_QUARTA = 7; +HIDDEN const int QD1_RIGHE_PRIMA = 6; +HIDDEN const int QD1_RIGHE_SECONDA = 9; +HIDDEN const int QD1_RIGHE_TERZA = 9; +HIDDEN const int QD1_RIGHE_QUARTA = 8; + +HIDDEN const int HEADER_SECONDA = 8; +HIDDEN const int HEADER_TERZA = 8; // Sarebbero 9 col righello... +HIDDEN const int HEADER_QUARTA = 13; // 15 col righello... + +HIDDEN const int HEADER_D1_SECONDA = 8; +HIDDEN const int HEADER_D1_TERZA = 8; +HIDDEN const int HEADER_D1_QUARTA = 14; + +typedef enum { PRIMA=1, SECONDA, TERZA, QUARTA } PaginaQuadro; +typedef enum { fisiche, nofisiche } TipoPagina; + +const char* get_ragsoc_anagr(char tipo, long codanagr); + +class TDicForm : public TForm +{ + private: + real _f_tot_totale, _f_tot_snsrit, _f_tot_impon, _f_tot_impor, _f_tot_netto; + real _nf_tot_totale, _nf_tot_snsrit, _nf_tot_impon, _nf_tot_impor, _nf_tot_netto; + + TCursor* _cur; + + protected: + long _Items; // numero di record che hanno passato il filtro + PaginaQuadro _PaginaCorrente; + + void set_curr_page(PaginaQuadro pagina) { _PaginaCorrente = pagina; } + virtual int dic_form_len() const; + virtual void inc_curr_page(); + virtual void next_page(TPrinter& pr); + bool _modulaser; // se stampa per modulaser + bool _posiziona; + TipoDitta _tipo_ditta; // tipo ditta: normale, estinto, dichiarante + int _num_foglio; // numero foglio + TString _cofi_dic; // cod.fis. dichiarante + bool _can_print_tot_fis, _can_print_tot_nofis; + bool _finite_fis, _finite_nofis, _LastDitta, _EndPrintDitta; + bool _GiaStampatiFis, _GiaStampatiNoFis, _PaginaPosizionamento; + bool _GiaPosizionato, _GiaMessoStartDoc, _GiaMessoStartPage[QD_PAGINE]; // flag per modulaser + int _CtrNoFisStampati, _CtrFisStampati; // contatori p.f. e p.g. stampate + long _codditta, _codditta_dic; // cod.ditta e cod.ditta dichiarante + int _RigaCorr; // contatore riga corrente + TString16 _quadro; // codice quadro in stampa + + void stampa_testata(TPrinter& pr); + virtual bool ultima_pagina() const { return _PaginaCorrente==QUARTA; } + virtual void stampa_totali(TPrinter& pr); +// virtual void aggiorna_totali(const char tipo); + virtual void set_body(TPrinter& pr, const char tipo); + void StampaPagina(PaginaQuadro PaginaCorrente, const bool StampaTotali, const long Fis, const long NoFis); + void posiziona(); + void fill_page(TPrinter& pr, const int righe); + void jump_to_line(TPrinter& pr, const int riga); + const char* BuildModulaserStartPage(); + void put_modulaser(TPrintrow& row, ModulaserKey key, int page=0); + void ClearFlagModulaser(); + bool PaginaPosizionamento() const; + virtual bool InitPrint(const long codditta); + + public: + virtual TCursor* cursor() const { return _cur; } + virtual TRelation* relation() const { return _cur->relation(); } + + virtual long filtra(const long codditta); + + TProgind* _prog; // progind usata in print() + + long codditta() const { return _codditta; } + void set_codditta(const long ditta) { _codditta = ditta; } + void set_posiziona(const bool posiz) { _GiaPosizionato = FALSE; } + void can_print_tot_fis(const bool canpr) { _can_print_tot_fis = canpr; } + void can_print_tot_nofis(const bool canpr) { _can_print_tot_nofis = canpr; } + void set_last_ditta(const bool last) { _LastDitta = last; } + bool last_ditta() const { return _LastDitta; } + bool EndJob() const { return _LastDitta && _EndPrintDitta; } + bool ultima_fis(); + bool ultima_nofis(); + TString& cofi_dic() { return _cofi_dic; } + void set_cofi_dic(const char* cofi); + TipoDitta tipo_ditta() const { return _tipo_ditta; } + void set_tipo_ditta(TipoDitta tipo) { _tipo_ditta = tipo; } + bool modulaser() const { return _modulaser; } + void set_modulaser(const bool modul) { _modulaser = modul; } + void set_num_foglio(const int foglio) { _num_foglio = foglio; } + int num_foglio() const { return _num_foglio; } + virtual void azzera_totali(); + void firma_dichiarante(); + PaginaQuadro curr_page() const { return _PaginaCorrente; } +// TCursor& cur(); + + void set_progind(TProgind* prog) { _prog = prog; } + TProgind* progind() { return _prog; } + bool usa_progind() const { return _prog != NULL; } + + virtual void set_cursor(TCursor* cur); + virtual void close_print(); + virtual bool print(const long codditta, const long NumFis, const long NumNoFis); + virtual int prima_riga(PaginaQuadro p) const; + const TString& quadro() const { return _quadro; } + + TDicForm(const char* form, const char* quadro); + virtual ~TDicForm() {} +}; + +//////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////// +// +// TStDicArray +// +// Array delle ditte da stampare. Contiene una riga per ogni ditta che si vuole stampare +// Il formato della riga e': +// codditta|estinti|numfis|numnofis|ultimafis|ultimanofis +// +///////////////////////////////////////////////////////////////////////////////////////////// + +class TStDicArray : public TObject +{ + private: + TString_array _store; + + public: + TToken_string& operator[](int i) const; + int curr_index() const { return _store.last(); } + void set(const int index, const TipoDitta tipo=normale, const int num_fis=0, const int num_nofis=0, + bool ultima_con_fis=FALSE, bool ultima_con_nofis=FALSE, const char* cofidic=NULL); + void set_tipo(const int index, const TipoDitta tipo); + void set_ultima_con_fis(const int index, const bool ultima_fis); + void set_ultima_con_nofis(const int index, const bool ultima_nofis); + void set_flag_tipi(const int index, const bool ultima_fis, const bool ultima_nofis); + void set_ctr_tipi(const int index, const int num_fis, const int num_nofis); + void add(const long codditta, const TipoDitta tipo=normale, const int num_fis=0, const int num_nofis=0, + bool ultima_con_fis=FALSE, bool ultima_con_nofis=FALSE, const char* cofidic=NULL); + int items() const { return _store.items(); } + void destroy() { _store.destroy(); } +}; + +///////////////////////////////////////////////////////////////////////////////////////////// +// +// STAMPA QUADRO +// +///////////////////////////////////////////////////////////////////////////////////////////// + +class TStampaQuadro : public TApplication +{ + TMask* _m; // Maschera di stampa + + TConfig* _cnf; // Configurazione + TString16 _section; // Paragrafo del config + long _codditta; + int _anno_dic; + + TString _quadro; + char _livello; // "S" studio, "D" singola ditta + TString _title; + + TStDicArray _ditte; + +protected: // TApplication + virtual bool menu(MENU_TAG); + virtual void on_config_change(); + + virtual bool create(); + virtual bool destroy(); + +protected: + virtual bool user_create() pure; + virtual bool user_destroy() pure; + + virtual TDicForm* get_form() const pure; + virtual TCursor* get_cursor() const pure; + + virtual const char* mask_name() const; + virtual const char* form_name() const; + + virtual bool conta_tipi_per() const { return TRUE; } + void fill_estinti(const long CodDic); + const TStDicArray& ditte() const { return _ditte; } + + virtual bool print_quadro(const int OffsetDitta, const bool modulaser); + virtual void print(const bool modulaser); + + bool singola_ditta() const { return _livello == 'D'; } + const TString& quadro() const { return _quadro; } + + void set_taitol(const char* t) { _title = t; } + + TStampaQuadro(const char* quad, char liv); + +public: + const TString& taitol() const { return _title; } + + virtual ~TStampaQuadro() { } +}; + +#endif diff --git a/m770/77stqc.cpp b/m770/77stqc.cpp index 558c99ed8..86fabc0af 100755 --- a/m770/77stqc.cpp +++ b/m770/77stqc.cpp @@ -1,337 +1,337 @@ -/////////////////////////////////////////////////////////// -// Quadro 770/C -/////////////////////////////////////////////////////////// - -#include "77stqc.h" - -///////////////////////////////////////////////////////////////////////////////// -// Quadro C -///////////////////////////////////////////////////////////////////////////////// - -bool TQuadroC::controlla_percentuale(TCursor& cur, const real& perc_p) -{ - bool stampa = TRUE; - - long ditta_p = cur.curr().get_long(QUC_CODDITTA); - char tipo_p = cur.curr().get_char(QUC_TIPOA); - long codana_p = cur.curr().get_long(QUC_CODANAGR); - TString codcaus_p = cur.curr().get (QUC_CODCAUS); - TString ragsoc_p = get_ragsoc_anagr(tipo_p,codana_p); - - if (perc_p == ZERO) - { - ++(cur); - long ditta = cur.curr().get_long(QUC_CODDITTA); - char tipo = cur.curr().get_char(QUC_TIPOA); - long codana = cur.curr().get_long(QUC_CODANAGR); - TString codcaus = cur.curr().get (QUC_CODCAUS); - TString ragsoc = get_ragsoc_anagr(tipo,codana); - real perc = cur.curr().get_real(QUC_PERC); - - if (ditta == ditta_p && tipo == tipo_p && ragsoc == ragsoc_p - && codana == codana_p && codcaus == codcaus_p) - { - if (perc != ZERO) - { - stampa = FALSE; - _devo_sommare = TRUE; - } - else - stampa = FALSE; - } - --(cur); - } - else - if (perc_p != ZERO) - { - ++(cur); - long ditta = cur.curr().get_long(QUC_CODDITTA); - char tipo = cur.curr().get_char(QUC_TIPOA); - long codana = cur.curr().get_long(QUC_CODANAGR); - TString codcaus = cur.curr().get (QUC_CODCAUS); - TString ragsoc = get_ragsoc_anagr(tipo,codana); - real perc = cur.curr().get_real(QUC_PERC); - - if (ditta == ditta_p && tipo == tipo_p && ragsoc == ragsoc_p && - codana == codana_p && codcaus == codcaus_p && perc_p == perc) - stampa = FALSE; - else - _devo_sommare = TRUE; - - --(cur); - } - - return stampa; -} - -void TQuadroC::leggi_importi() -{ - TCursor* cur = cursor(); - - _totale += cur->curr().get_real(QUC_TOTALE); - _contssn += cur->curr().get_real(QUC_CONTSSN); - _somme += cur->curr().get_real(QUC_SOMME); - _imponibile += cur->curr().get_real(QUC_IMPONIBILE); - _ritenute += cur->curr().get_real(QUC_RITENUTE); - _netto += cur->curr().get_real(QUC_NETTO); -} - -void TQuadroC::setta_importi(TPrint_section& body) -{ - TCursor* cur = cursor(); - - real totale = cur->curr().get_real(QUC_TOTALE); - real contssn = cur->curr().get_real(QUC_CONTSSN); - real somme = cur->curr().get_real(QUC_SOMME); - real imponibile = cur->curr().get_real(QUC_IMPONIBILE); - real ritenute = cur->curr().get_real(QUC_RITENUTE); - real netto = cur->curr().get_real(QUC_NETTO); - - if (_devo_sommare) - { - totale += _totale; - contssn += _contssn; - somme += _somme; - imponibile += _imponibile; - ritenute += _ritenute; - netto += _netto; - _devo_sommare = FALSE; - _totale = ZERO; - _contssn = ZERO; - _somme = ZERO; - _imponibile = ZERO; - _ritenute = ZERO; - _netto = ZERO; - } - - TForm_item& ftotale = body.find_field(C_TOTALE); - TForm_item& fcontssn = body.find_field(C_CONTSSN); - TForm_item& fsomme = body.find_field(C_SOMME); - TForm_item& fimponibile = body.find_field(C_IMPONIBILE); - TForm_item& fritenute = body.find_field(C_RITENUTE); - TForm_item& fnetto = body.find_field(C_NETTO); - - TString stotale (totale.string()); - TString scontssn (contssn.string()); - TString ssomme (somme.string()); - TString simponibile(imponibile.string()); - TString sritenute (ritenute.string()); - TString snetto (netto.string()); -// Setta i campi - ftotale.set(stotale); - fcontssn.set(scontssn); - fsomme.set(ssomme); - fimponibile.set(simponibile); - fritenute.set(sritenute); - fnetto.set(snetto); -} - -void TQuadroC::stampa_corpo(TPrinter& pr) -{ - TPrint_section& body = section('B', odd_page); - const int body_righe = body.height(); - body.reset(); -// body.update(); - setta_importi(body); - body.update(); -// const int body_righe = body.height(); - for (int i=0; i < body_righe; i++) - { - pr.print(body.row(i)); - _RigaCorr++; - } - body.reset(); - if (usa_progind()) - progind()->addstatus(1); -} - -int TQuadroC::elementi_pagina(PaginaQuadro p) const -{ - const int n[4] = { 6, 10, 10, 9 }; - return n[p-PRIMA]; -} - -int TQuadroC::prima_riga(PaginaQuadro p) const -{ -// old return p == PRIMA ? 27 : 8; -// nik1 return p == PRIMA ? 26 : 7; - return p == PRIMA ? 27 : 9; -} - -bool TQuadroC::print(const long codditta, const long NumFis, const long NumNoFis) -{ - TCursor& cur = *cursor(); - TPrinter& pr = printer(); - bool stampa = TRUE; - - if (!InitPrint(codditta)) - return FALSE; - -// pr.formlen(QA_FORMLEN); - - int elementi = 0; // Numero di elementi stampati in questa pagina - int ele_bis = 0; - bool stampato_ultimo = FALSE; - bool stampati_totali = FALSE; - - int pos = 0; - TDipendenti indice; - if (quadro() == "A" || quadro() == "B") - { - const int i = indice.fill(cur); - if (i > 0) - { - if (usa_progind()) - progind()->addstatus(cur.items()-i); // Segna come elaborati tutti gli ignorati - - cur = indice[0].pos(); - } - else - return FALSE; - } - else - cur = 0; - - while (!stampati_totali) - { - bool stampa = TRUE; - bool stampero_ultimo = stampato_ultimo == FALSE; - if (stampero_ultimo) - { - if (indice.items() > 0) // Usa indice alternativo - stampero_ultimo &= pos == indice.items()-1; - else // Usa indice del cursore - stampero_ultimo &= cur.pos() == cur.items()-1; - } - - _EndPrintDitta=stampato_ultimo; - switch(_PaginaCorrente) - { - case PRIMA: - pr.formlen(dic_form_len()); - - if (_modulaser) - ClearFlagModulaser(); - - if (ele_bis == 0) - { - stampa_testata(pr); - jump_to_line(pr, prima_riga(PRIMA)); - } - - if (!stampato_ultimo) - { - real perc_p = cur.curr().get_real(QUC_PERC); - stampa = controlla_percentuale(cur,perc_p); - if (stampa) - stampa_corpo(pr); - else - { - leggi_importi(); - elementi--; - } - stampato_ultimo = stampero_ultimo; - } - - elementi++; - ele_bis++; - if (elementi >= elementi_pagina(PRIMA)) - { - next_page(pr); - elementi = 0; - ele_bis = 0; - } - break; - _PaginaPosizionamento=FALSE; - case SECONDA: - case TERZA: - pr.formlen(dic_form_len()); - if (!stampato_ultimo) - { - if (ele_bis == 0) - jump_to_line(pr, prima_riga(_PaginaCorrente)); - - real perc_p = cur.curr().get_real(QUC_PERC); - stampa = controlla_percentuale(cur,perc_p); - if (stampa) - stampa_corpo(pr); - else - { - leggi_importi(); - elementi--; - } - stampato_ultimo = stampero_ultimo; - } - elementi++; - ele_bis++; - if (elementi >= elementi_pagina(_PaginaCorrente)) - { - next_page(pr); - elementi = 0; - ele_bis = 0; - } - break; - case QUARTA: - pr.formlen(dic_form_len()); - if (!stampato_ultimo) - { - if (ele_bis == 0) - jump_to_line(pr, prima_riga(QUARTA)); - - real perc_p = cur.curr().get_real(QUC_PERC); - stampa = controlla_percentuale(cur,perc_p); - if (stampa) - stampa_corpo(pr); - else - { - leggi_importi(); - elementi--; - } - stampato_ultimo = stampero_ultimo; - } - - elementi++; - ele_bis++; - - if (elementi >= elementi_pagina(QUARTA)) - { - if (stampato_ultimo) - { - jump_to_line(pr, riga_totali(QUARTA)); - stampa_totali(pr); - stampati_totali = TRUE; - } - next_page(pr); - elementi = 0; - ele_bis = 0; - } - break; - default: - CHECK(0, "Invalid Quadro A page"); - break; - } - - if (!stampato_ultimo) - { - if (indice.items() > 0) - cur = indice[++pos].pos(); - else - ++cur; - } - } - - close_print(); - - return TRUE; -} - -bool TStampaQuadroC::user_create() -{ - _form = new TQuadroC("77QC", quadro()); - - TString sortkey(80); - sortkey.format("CODDITTA|TIPOA|216@->RAGSOC|CODANAGR|CODCAUS|PERC", LF_QUAC, LF_QUAC); - _cur = new TSorted_cursor(_form->TForm::relation(), sortkey); - - return TRUE; -} +/////////////////////////////////////////////////////////// +// Quadro 770/C +/////////////////////////////////////////////////////////// + +#include "77stqc.h" + +///////////////////////////////////////////////////////////////////////////////// +// Quadro C +///////////////////////////////////////////////////////////////////////////////// + +bool TQuadroC::controlla_percentuale(TCursor& cur, const real& perc_p) +{ + bool stampa = TRUE; + + long ditta_p = cur.curr().get_long(QUC_CODDITTA); + char tipo_p = cur.curr().get_char(QUC_TIPOA); + long codana_p = cur.curr().get_long(QUC_CODANAGR); + TString codcaus_p = cur.curr().get (QUC_CODCAUS); + TString ragsoc_p = get_ragsoc_anagr(tipo_p,codana_p); + + if (perc_p == ZERO) + { + ++(cur); + long ditta = cur.curr().get_long(QUC_CODDITTA); + char tipo = cur.curr().get_char(QUC_TIPOA); + long codana = cur.curr().get_long(QUC_CODANAGR); + TString codcaus = cur.curr().get (QUC_CODCAUS); + TString ragsoc = get_ragsoc_anagr(tipo,codana); + real perc = cur.curr().get_real(QUC_PERC); + + if (ditta == ditta_p && tipo == tipo_p && ragsoc == ragsoc_p + && codana == codana_p && codcaus == codcaus_p) + { + if (perc != ZERO) + { + stampa = FALSE; + _devo_sommare = TRUE; + } + else + stampa = FALSE; + } + --(cur); + } + else + if (perc_p != ZERO) + { + ++(cur); + long ditta = cur.curr().get_long(QUC_CODDITTA); + char tipo = cur.curr().get_char(QUC_TIPOA); + long codana = cur.curr().get_long(QUC_CODANAGR); + TString codcaus = cur.curr().get (QUC_CODCAUS); + TString ragsoc = get_ragsoc_anagr(tipo,codana); + real perc = cur.curr().get_real(QUC_PERC); + + if (ditta == ditta_p && tipo == tipo_p && ragsoc == ragsoc_p && + codana == codana_p && codcaus == codcaus_p && perc_p == perc) + stampa = FALSE; + else + _devo_sommare = TRUE; + + --(cur); + } + + return stampa; +} + +void TQuadroC::leggi_importi() +{ + TCursor* cur = cursor(); + + _totale += cur->curr().get_real(QUC_TOTALE); + _contssn += cur->curr().get_real(QUC_CONTSSN); + _somme += cur->curr().get_real(QUC_SOMME); + _imponibile += cur->curr().get_real(QUC_IMPONIBILE); + _ritenute += cur->curr().get_real(QUC_RITENUTE); + _netto += cur->curr().get_real(QUC_NETTO); +} + +void TQuadroC::setta_importi(TPrint_section& body) +{ + TCursor* cur = cursor(); + + real totale = cur->curr().get_real(QUC_TOTALE); + real contssn = cur->curr().get_real(QUC_CONTSSN); + real somme = cur->curr().get_real(QUC_SOMME); + real imponibile = cur->curr().get_real(QUC_IMPONIBILE); + real ritenute = cur->curr().get_real(QUC_RITENUTE); + real netto = cur->curr().get_real(QUC_NETTO); + + if (_devo_sommare) + { + totale += _totale; + contssn += _contssn; + somme += _somme; + imponibile += _imponibile; + ritenute += _ritenute; + netto += _netto; + _devo_sommare = FALSE; + _totale = ZERO; + _contssn = ZERO; + _somme = ZERO; + _imponibile = ZERO; + _ritenute = ZERO; + _netto = ZERO; + } + + TForm_item& ftotale = body.find_field(C_TOTALE); + TForm_item& fcontssn = body.find_field(C_CONTSSN); + TForm_item& fsomme = body.find_field(C_SOMME); + TForm_item& fimponibile = body.find_field(C_IMPONIBILE); + TForm_item& fritenute = body.find_field(C_RITENUTE); + TForm_item& fnetto = body.find_field(C_NETTO); + + TString stotale (totale.string()); + TString scontssn (contssn.string()); + TString ssomme (somme.string()); + TString simponibile(imponibile.string()); + TString sritenute (ritenute.string()); + TString snetto (netto.string()); +// Setta i campi + ftotale.set(stotale); + fcontssn.set(scontssn); + fsomme.set(ssomme); + fimponibile.set(simponibile); + fritenute.set(sritenute); + fnetto.set(snetto); +} + +void TQuadroC::stampa_corpo(TPrinter& pr) +{ + TPrint_section& body = section('B', odd_page); + const int body_righe = body.height(); + body.reset(); +// body.update(); + setta_importi(body); + body.update(); +// const int body_righe = body.height(); + for (int i=0; i < body_righe; i++) + { + pr.print(body.row(i)); + _RigaCorr++; + } + body.reset(); + if (usa_progind()) + progind()->addstatus(1); +} + +int TQuadroC::elementi_pagina(PaginaQuadro p) const +{ + const int n[4] = { 6, 10, 10, 9 }; + return n[p-PRIMA]; +} + +int TQuadroC::prima_riga(PaginaQuadro p) const +{ +// old return p == PRIMA ? 27 : 8; +// nik1 return p == PRIMA ? 26 : 7; + return p == PRIMA ? 26 : 8; +} + +bool TQuadroC::print(const long codditta, const long NumFis, const long NumNoFis) +{ + TCursor& cur = *cursor(); + TPrinter& pr = printer(); + bool stampa = TRUE; + + if (!InitPrint(codditta)) + return FALSE; + +// pr.formlen(QA_FORMLEN); + + int elementi = 0; // Numero di elementi stampati in questa pagina + int ele_bis = 0; + bool stampato_ultimo = FALSE; + bool stampati_totali = FALSE; + + int pos = 0; + TDipendenti indice; + if (quadro() == "A" || quadro() == "B") + { + const int i = indice.fill(cur); + if (i > 0) + { + if (usa_progind()) + progind()->addstatus(cur.items()-i); // Segna come elaborati tutti gli ignorati + + cur = indice[0].pos(); + } + else + return FALSE; + } + else + cur = 0; + + while (!stampati_totali) + { + bool stampa = TRUE; + bool stampero_ultimo = stampato_ultimo == FALSE; + if (stampero_ultimo) + { + if (indice.items() > 0) // Usa indice alternativo + stampero_ultimo &= pos == indice.items()-1; + else // Usa indice del cursore + stampero_ultimo &= cur.pos() == cur.items()-1; + } + + _EndPrintDitta=stampato_ultimo; + switch(_PaginaCorrente) + { + case PRIMA: + pr.formlen(dic_form_len()); + + if (_modulaser) + ClearFlagModulaser(); + + if (ele_bis == 0) + { + stampa_testata(pr); + jump_to_line(pr, prima_riga(PRIMA)); + } + + if (!stampato_ultimo) + { + real perc_p = cur.curr().get_real(QUC_PERC); + stampa = controlla_percentuale(cur,perc_p); + if (stampa) + stampa_corpo(pr); + else + { + leggi_importi(); + elementi--; + } + stampato_ultimo = stampero_ultimo; + } + + elementi++; + ele_bis++; + if (elementi >= elementi_pagina(PRIMA)) + { + next_page(pr); + elementi = 0; + ele_bis = 0; + } + break; + _PaginaPosizionamento=FALSE; + case SECONDA: + case TERZA: + pr.formlen(dic_form_len()); + if (!stampato_ultimo) + { + if (ele_bis == 0) + jump_to_line(pr, prima_riga(_PaginaCorrente)); + + real perc_p = cur.curr().get_real(QUC_PERC); + stampa = controlla_percentuale(cur,perc_p); + if (stampa) + stampa_corpo(pr); + else + { + leggi_importi(); + elementi--; + } + stampato_ultimo = stampero_ultimo; + } + elementi++; + ele_bis++; + if (elementi >= elementi_pagina(_PaginaCorrente)) + { + next_page(pr); + elementi = 0; + ele_bis = 0; + } + break; + case QUARTA: + pr.formlen(dic_form_len()); + if (!stampato_ultimo) + { + if (ele_bis == 0) + jump_to_line(pr, prima_riga(QUARTA)); + + real perc_p = cur.curr().get_real(QUC_PERC); + stampa = controlla_percentuale(cur,perc_p); + if (stampa) + stampa_corpo(pr); + else + { + leggi_importi(); + elementi--; + } + stampato_ultimo = stampero_ultimo; + } + + elementi++; + ele_bis++; + + if (elementi >= elementi_pagina(QUARTA)) + { + if (stampato_ultimo) + { + jump_to_line(pr, riga_totali(QUARTA)); + stampa_totali(pr); + stampati_totali = TRUE; + } + next_page(pr); + elementi = 0; + ele_bis = 0; + } + break; + default: + CHECK(0, "Invalid Quadro A page"); + break; + } + + if (!stampato_ultimo) + { + if (indice.items() > 0) + cur = indice[++pos].pos(); + else + ++cur; + } + } + + close_print(); + + return TRUE; +} + +bool TStampaQuadroC::user_create() +{ + _form = new TQuadroC("77QC", quadro()); + + TString sortkey(80); + sortkey.format("CODDITTA|TIPOA|216@->RAGSOC|CODANAGR|CODCAUS|PERC", LF_QUAC, LF_QUAC); + _cur = new TSorted_cursor(_form->TForm::relation(), sortkey); + + return TRUE; +} diff --git a/m770/77stqc.h b/m770/77stqc.h index 1fe0d31ff..9252b2766 100755 --- a/m770/77stqc.h +++ b/m770/77stqc.h @@ -1,39 +1,39 @@ -#ifndef __77STQC_H -#define __77STQC_H - -#include "77stq.h" -#include "77stqab.h" - -class TQuadroC : public TQuadroA -{ - enum { QA_FORMLEN = 72 }; - - real _totale, _contssn, _somme, _imponibile, _ritenute, _netto; - bool _devo_sommare; - -protected: - virtual int elementi_pagina(PaginaQuadro p) const; - virtual int prima_riga(PaginaQuadro p) const; - virtual bool print(const long codditta, const long NumFis, const long NumNoFis); - -public: - bool controlla_percentuale(TCursor& cur, const real& perc_p); - void stampa_corpo(TPrinter& pr); - void setta_importi(TPrint_section& body); - void leggi_importi(); - - TQuadroC(const char* form, const char* quadro) : TQuadroA(form, quadro) { } - virtual ~TQuadroC() { } -}; - -class TStampaQuadroC : public TStampaQuadroA -{ -protected: - virtual bool user_create(); - -public: - TStampaQuadroC(const char* quadro, char livel) : TStampaQuadroA(quadro, livel) { } - virtual ~TStampaQuadroC() { } -}; - -#endif +#ifndef __77STQC_H +#define __77STQC_H + +#include "77stq.h" +#include "77stqab.h" + +class TQuadroC : public TQuadroA +{ + enum { QA_FORMLEN = 72 }; + + real _totale, _contssn, _somme, _imponibile, _ritenute, _netto; + bool _devo_sommare; + +protected: + virtual int elementi_pagina(PaginaQuadro p) const; + virtual int prima_riga(PaginaQuadro p) const; + virtual bool print(const long codditta, const long NumFis, const long NumNoFis); + +public: + bool controlla_percentuale(TCursor& cur, const real& perc_p); + void stampa_corpo(TPrinter& pr); + void setta_importi(TPrint_section& body); + void leggi_importi(); + + TQuadroC(const char* form, const char* quadro) : TQuadroA(form, quadro) { } + virtual ~TQuadroC() { } +}; + +class TStampaQuadroC : public TStampaQuadroA +{ +protected: + virtual bool user_create(); + +public: + TStampaQuadroC(const char* quadro, char livel) : TStampaQuadroA(quadro, livel) { } + virtual ~TStampaQuadroC() { } +}; + +#endif diff --git a/m770/anadip.h b/m770/anadip.h index 10163f8b9..40eb79669 100755 --- a/m770/anadip.h +++ b/m770/anadip.h @@ -1,59 +1,59 @@ -#ifndef _ANADIP_H -#define _ANADIP_H - -// Campi maschera manutenzione anagrafica dipendenti -#define ADF_CODDITTA 181 -#define F_RAGSOCIALE 102 -#define ADF_DIP_CODDIP 103 -#define F_DIP_CODFI 104 -#define F_DIP_COGNOME 105 -#define F_DIP_NOME 106 -#define F_DIP_SESSO 107 -#define F_DIP_DATANA 108 -#define F_DIP_COMUNENA 109 -#define F_DIP_PROVNA 110 -#define F_DIP_COMUNERE 111 -#define F_DIP_PROVRE 112 -#define F_DIP_INDRE 113 -#define F_DIP_QUALIFICA 114 -#define F_DIP_STATOCIV 115 -#define F_DIP_EREDE 116 -#define F_DIP_CODEREDE0 117 -#define F_DIP_CODEREDE1 118 -#define F_DIP_CODEREDE2 119 -#define F_DIP_CODEREDE3 120 -#define F_DIP_CODEREDE4 121 -#define F_DIP_CODEREDE5 122 -#define F_DIP_CODEREDE6 123 -#define F_DIP_CODEREDE7 124 -#define F_DIP_CODEREDE8 125 -#define F_DIP_CODEREDE9 126 -#define F_DIP_COGNEREDE0 127 -#define F_DIP_COGNEREDE1 128 -#define F_DIP_COGNEREDE2 129 -#define F_DIP_COGNEREDE3 130 -#define F_DIP_COGNEREDE4 131 -#define F_DIP_COGNEREDE5 132 -#define F_DIP_COGNEREDE6 133 -#define F_DIP_COGNEREDE7 134 -#define F_DIP_COGNEREDE8 135 -#define F_DIP_COGNEREDE9 136 -#define F_DIP_NOMEREDE0 137 -#define F_DIP_NOMEREDE1 138 -#define F_DIP_NOMEREDE2 139 -#define F_DIP_NOMEREDE3 140 -#define F_DIP_NOMEREDE4 141 -#define F_DIP_NOMEREDE5 142 -#define F_DIP_NOMEREDE6 143 -#define F_DIP_NOMEREDE7 144 -#define F_DIP_NOMEREDE8 145 -#define F_DIP_NOMEREDE9 146 - -// Aggiunte 96 -#define ADF_CODDIPDEC 147 -#define ADF_ASSFIS 148 -#define ADF_COMNASC 149 -#define ADF_COMRES 150 -#define ADF_CODCOMNASC 151 - -#endif +#ifndef _ANADIP_H +#define _ANADIP_H + +// Campi maschera manutenzione anagrafica dipendenti +#define ADF_CODDITTA 181 +#define F_RAGSOCIALE 102 +#define ADF_DIP_CODDIP 103 +#define F_DIP_CODFI 104 +#define F_DIP_COGNOME 105 +#define F_DIP_NOME 106 +#define F_DIP_SESSO 107 +#define F_DIP_DATANA 108 +#define F_DIP_COMUNENA 109 +#define F_DIP_PROVNA 110 +#define F_DIP_COMUNERE 111 +#define F_DIP_PROVRE 112 +#define F_DIP_INDRE 113 +#define F_DIP_QUALIFICA 114 +#define F_DIP_STATOCIV 115 +#define F_DIP_EREDE 116 +#define F_DIP_CODEREDE0 117 +#define F_DIP_CODEREDE1 118 +#define F_DIP_CODEREDE2 119 +#define F_DIP_CODEREDE3 120 +#define F_DIP_CODEREDE4 121 +#define F_DIP_CODEREDE5 122 +#define F_DIP_CODEREDE6 123 +#define F_DIP_CODEREDE7 124 +#define F_DIP_CODEREDE8 125 +#define F_DIP_CODEREDE9 126 +#define F_DIP_COGNEREDE0 127 +#define F_DIP_COGNEREDE1 128 +#define F_DIP_COGNEREDE2 129 +#define F_DIP_COGNEREDE3 130 +#define F_DIP_COGNEREDE4 131 +#define F_DIP_COGNEREDE5 132 +#define F_DIP_COGNEREDE6 133 +#define F_DIP_COGNEREDE7 134 +#define F_DIP_COGNEREDE8 135 +#define F_DIP_COGNEREDE9 136 +#define F_DIP_NOMEREDE0 137 +#define F_DIP_NOMEREDE1 138 +#define F_DIP_NOMEREDE2 139 +#define F_DIP_NOMEREDE3 140 +#define F_DIP_NOMEREDE4 141 +#define F_DIP_NOMEREDE5 142 +#define F_DIP_NOMEREDE6 143 +#define F_DIP_NOMEREDE7 144 +#define F_DIP_NOMEREDE8 145 +#define F_DIP_NOMEREDE9 146 + +// Aggiunte 96 +#define ADF_CODDIPDEC 147 +#define ADF_ASSFIS 148 +#define ADF_COMNASC 149 +#define ADF_COMRES 150 +#define ADF_CODCOMNASC 151 + +#endif diff --git a/m770/base.h b/m770/base.h index 9d1a1ab5c..3384aeac2 100755 --- a/m770/base.h +++ b/m770/base.h @@ -1,104 +1,104 @@ -// Mod.770 - Archivio BASE - -#define BSE_CODDITTA "CODDITTA" -#define BSE_CODDIC "CODDIC" -#define BSE_TIPOQUA "TIPOQUA" -#define BSE_CODDATLAV "CODDATLAV" -#define BSE_ANNODIC "ANNODIC" -#define BSE_ER92C93 "ER92C93" -#define BSE_ER93C94 "ER93C94" -#define BSE_NATTVER "NATTVER" -#define BSE_EVNATTEC "EVNATTEC" -#define BSE_CODCAAF "CODCAAF" -#define BSE_CODPRO "CODPRO" -#define BSE_N73093ALL "N73093ALL" -#define BSE_SERIE "SERIE" -#define BSE_DATAVERS "DATAVERS" -#define BSE_NUMERO "NUMERO" -#define BSE_A0NFCOM "A0NFCOM" -#define BSE_A0NLDIP "A0NLDIP" -#define BSE_A0COBB "A0COBB" -#define BSE_A0CNET "A0CNET" -#define BSE_A0EPREV "A0EPREV" -#define BSE_A0IITRA "A0IITRA" -#define BSE_A0CTER "A0CTER" -#define BSE_A0TIMP "A0TIMP" -#define BSE_A0ILOR "A0ILOR" -#define BSE_A0TDET "A0TDET" -#define BSE_A0RTER "A0RTER" -#define BSE_A0RDAT "A0RDAT" -#define BSE_A0ERIT "A0ERIT" -#define BSE_A0CARR "A0CARR" -#define BSE_A0AARR "A0AARR" -#define BSE_A0DARR "A0DARR" -#define BSE_A0RARR "A0RARR" -#define BSE_A0RITSI "A0RITSI" -#define BSE_A0CINPS "A0CINPS" -#define BSE_A0RITOPEVA "A0RITOPEVA" -#define BSE_A0RITOPESA "A0RITOPESA" -#define BSE_A0CIIAUT "A0CIIAUT" -#define BSE_A0NADLAV "A0NADLAV" -#define BSE_A0NACAAF "A0NACAAF" -#define BSE_A0CRIMPRAS "A0CRIMPRAS" -#define BSE_A3NFCOM "A3NFCOM" -#define BSE_A3NUMPER "A3NUMPER" -#define BSE_A3REPT10 "A3REPT10" -#define BSE_A3REPT12 "A3REPT12" -#define BSE_B0NFCOM "B0NFCOM" -#define BSE_B0NLDIP "B0NLDIP" -#define BSE_B0TFR93 "B0TFR93" -#define BSE_B0AI "B0AI" -#define BSE_B0COLAV "B0COLAV" -#define BSE_B0TFR7492 "B0TFR7492" -#define BSE_B0AI7492 "B0AI7492" -#define BSE_B0RITSI "B0RITSI" -#define BSE_B0IMP "B0IMP" -#define BSE_B0TIMP "B0TIMP" -#define BSE_B0ROP "B0ROP" -#define BSE_B0AIINPS "B0AIINPS" -#define BSE_B0ROPESA "B0ROPESA" -#define BSE_B0CIIAUT "B0CIIAUT" -#define BSE_B1NFCOM "B1NFCOM" -#define BSE_B1NPER "B1NPER" -#define BSE_B1TIND "B1TIND" -#define BSE_B1TIRM "B1TIRM" -#define BSE_B1TICOM "B1TICOM" -#define BSE_C0NFCOM "C0NFCOM" -#define BSE_C0NLASS "C0NLASS" -#define BSE_C0ACTOT "C0ACTOT" -#define BSE_C0SNSRIT "C0SNSRIT" -#define BSE_C0ROPE "C0ROPE" -#define BSE_C0CIIAUT "C0CIIAUT" -#define BSE_D0NFCOM "D0NFCOM" -#define BSE_D0NLAUT "D0NLAUT" -#define BSE_D0ACTOT "D0ACTOT" -#define BSE_D0SNSRIT "D0SNSRIT" -#define BSE_D0ROPE "D0ROPE" -#define BSE_D0CIIAUT "D0CIIAUT" -#define BSE_D1NFCOM "D1NFCOM" -#define BSE_D1NPER "D1NPER" -#define BSE_D1TACOR "D1TACOR" -#define BSE_D1SNSRIT "D1SNSRIT" -#define BSE_D1ROPE "D1ROPE" -#define BSE_QCOMP "QCOMP" -#define BSE_QSUPPINV "QSUPPINV" -#define BSE_NSUPPM "NSUPPM" -#define BSE_LUOVERS "LUOVERS" -#define BSE_TIPOVERS "TIPOVERS" -#define BSE_RSS "RSS" -#define BSE_FLART4 "FLART4" -#define BSE_QSUPPRIC "QSUPPRIC" -#define BSE_DITTACAAF "DITTACAAF" -#define BSE_C0CONTSSN "C0CONTSSN" - -#define I8_1 "B0NFCOM" -#define I8_2 "B0NLDIP" -#define I8_3 "B0TFR93" -#define I8_4 "B0AI" -#define I8_5 "B0COLAV" -#define I8_6 "B0TFR7492" -#define I9_7 "B0AI7492" -#define I9_8 "B0IMP" -#define I9_9 "B0TIMP" -#define I9_10 "B0ROP" - +// Mod.770 - Archivio BASE + +#define BSE_CODDITTA "CODDITTA" +#define BSE_CODDIC "CODDIC" +#define BSE_TIPOQUA "TIPOQUA" +#define BSE_CODDATLAV "CODDATLAV" +#define BSE_ANNODIC "ANNODIC" +#define BSE_ER92C93 "ER92C93" +#define BSE_ER93C94 "ER93C94" +#define BSE_NATTVER "NATTVER" +#define BSE_EVNATTEC "EVNATTEC" +#define BSE_CODCAAF "CODCAAF" +#define BSE_CODPRO "CODPRO" +#define BSE_N73093ALL "N73093ALL" +#define BSE_SERIE "SERIE" +#define BSE_DATAVERS "DATAVERS" +#define BSE_NUMERO "NUMERO" +#define BSE_A0NFCOM "A0NFCOM" +#define BSE_A0NLDIP "A0NLDIP" +#define BSE_A0COBB "A0COBB" +#define BSE_A0CNET "A0CNET" +#define BSE_A0EPREV "A0EPREV" +#define BSE_A0IITRA "A0IITRA" +#define BSE_A0CTER "A0CTER" +#define BSE_A0TIMP "A0TIMP" +#define BSE_A0ILOR "A0ILOR" +#define BSE_A0TDET "A0TDET" +#define BSE_A0RTER "A0RTER" +#define BSE_A0RDAT "A0RDAT" +#define BSE_A0ERIT "A0ERIT" +#define BSE_A0CARR "A0CARR" +#define BSE_A0AARR "A0AARR" +#define BSE_A0DARR "A0DARR" +#define BSE_A0RARR "A0RARR" +#define BSE_A0RITSI "A0RITSI" +#define BSE_A0CINPS "A0CINPS" +#define BSE_A0RITOPEVA "A0RITOPEVA" +#define BSE_A0RITOPESA "A0RITOPESA" +#define BSE_A0CIIAUT "A0CIIAUT" +#define BSE_A0NADLAV "A0NADLAV" +#define BSE_A0NACAAF "A0NACAAF" +#define BSE_A0CRIMPRAS "A0CRIMPRAS" +#define BSE_A3NFCOM "A3NFCOM" +#define BSE_A3NUMPER "A3NUMPER" +#define BSE_A3REPT10 "A3REPT10" +#define BSE_A3REPT12 "A3REPT12" +#define BSE_B0NFCOM "B0NFCOM" +#define BSE_B0NLDIP "B0NLDIP" +#define BSE_B0TFR93 "B0TFR93" +#define BSE_B0AI "B0AI" +#define BSE_B0COLAV "B0COLAV" +#define BSE_B0TFR7492 "B0TFR7492" +#define BSE_B0AI7492 "B0AI7492" +#define BSE_B0RITSI "B0RITSI" +#define BSE_B0IMP "B0IMP" +#define BSE_B0TIMP "B0TIMP" +#define BSE_B0ROP "B0ROP" +#define BSE_B0AIINPS "B0AIINPS" +#define BSE_B0ROPESA "B0ROPESA" +#define BSE_B0CIIAUT "B0CIIAUT" +#define BSE_B1NFCOM "B1NFCOM" +#define BSE_B1NPER "B1NPER" +#define BSE_B1TIND "B1TIND" +#define BSE_B1TIRM "B1TIRM" +#define BSE_B1TICOM "B1TICOM" +#define BSE_C0NFCOM "C0NFCOM" +#define BSE_C0NLASS "C0NLASS" +#define BSE_C0ACTOT "C0ACTOT" +#define BSE_C0SNSRIT "C0SNSRIT" +#define BSE_C0ROPE "C0ROPE" +#define BSE_C0CIIAUT "C0CIIAUT" +#define BSE_D0NFCOM "D0NFCOM" +#define BSE_D0NLAUT "D0NLAUT" +#define BSE_D0ACTOT "D0ACTOT" +#define BSE_D0SNSRIT "D0SNSRIT" +#define BSE_D0ROPE "D0ROPE" +#define BSE_D0CIIAUT "D0CIIAUT" +#define BSE_D1NFCOM "D1NFCOM" +#define BSE_D1NPER "D1NPER" +#define BSE_D1TACOR "D1TACOR" +#define BSE_D1SNSRIT "D1SNSRIT" +#define BSE_D1ROPE "D1ROPE" +#define BSE_QCOMP "QCOMP" +#define BSE_QSUPPINV "QSUPPINV" +#define BSE_NSUPPM "NSUPPM" +#define BSE_LUOVERS "LUOVERS" +#define BSE_TIPOVERS "TIPOVERS" +#define BSE_RSS "RSS" +#define BSE_FLART4 "FLART4" +#define BSE_QSUPPRIC "QSUPPRIC" +#define BSE_DITTACAAF "DITTACAAF" +#define BSE_C0CONTSSN "C0CONTSSN" + +#define I8_1 "B0NFCOM" +#define I8_2 "B0NLDIP" +#define I8_3 "B0TFR93" +#define I8_4 "B0AI" +#define I8_5 "B0COLAV" +#define I8_6 "B0TFR7492" +#define I9_7 "B0AI7492" +#define I9_8 "B0IMP" +#define I9_9 "B0TIMP" +#define I9_10 "B0ROP" + diff --git a/m770/caus77.h b/m770/caus77.h index 99b633a62..f5e8504f9 100755 --- a/m770/caus77.h +++ b/m770/caus77.h @@ -1,5 +1,5 @@ -// caus77.h - campi tabella causali -#define bCONTRIBUTO_INPS "B4" -#define bCODICE_QUADRO "S1" -#define bSOMME_ASSOG_RAC "B0" -#define rPERC_RAC "R0" +// caus77.h - campi tabella causali +#define bCONTRIBUTO_INPS "B4" +#define bCODICE_QUADRO "S1" +#define bSOMME_ASSOG_RAC "B0" +#define rPERC_RAC "R0" diff --git a/m770/pe1.h b/m770/pe1.h index 259bcc53d..0ec7d6cd8 100755 --- a/m770/pe1.h +++ b/m770/pe1.h @@ -1,18 +1,18 @@ -#ifndef _PE1_H -#define _PE1_H - -//771230m.uml (prospetto E1) -#define PE1F_CODCAUS 113 -#define PE1F_IMPONIBILE 119 -#define PE1F_RITENUTA 160 -#define PE1F_COMPENSO 161 -#define PE1F_CODCAUS2 162 -#define F_CODANAGR2 170 -#define F_RAGSOC2 171 -#define PE1F_HPERC 172 -#define PE1F_CODDITTA 181 -#define PE1F_DESCRCAUS 184 -#define PE1F_RAGDITTA 185 - -#endif - +#ifndef _PE1_H +#define _PE1_H + +//771230m.uml (prospetto E1) +#define PE1F_CODCAUS 113 +#define PE1F_IMPONIBILE 119 +#define PE1F_RITENUTA 160 +#define PE1F_COMPENSO 161 +#define PE1F_CODCAUS2 162 +#define F_CODANAGR2 170 +#define F_RAGSOC2 171 +#define PE1F_HPERC 172 +#define PE1F_CODDITTA 181 +#define PE1F_DESCRCAUS 184 +#define PE1F_RAGDITTA 185 + +#endif + diff --git a/m770/rpag.h b/m770/rpag.h index 74b457dd2..5381be5dd 100755 --- a/m770/rpag.h +++ b/m770/rpag.h @@ -1,23 +1,23 @@ -// Mod.770 - Scheda percipienti - Righe Pagamenti - -#ifndef __RPAG_H -#define __RPAG_H - -#define PAG_CODDITTA "CODDITTA" -#define PAG_TIPOA "TIPOA" -#define PAG_CODANAGR "CODANAGR" -#define PAG_NPROG "NPROG" -#define PAG_NRIGA "NRIGA" -#define PAG_DATAPAG "DATAPAG" -#define PAG_IMPONIBILE "IMPONIBILE" -#define PAG_PERC "PERC" -#define PAG_RITENUTA "RITENUTA" -#define PAG_COMPENSO "COMPENSO" -#define PAG_NETTO "NETTO" -#define PAG_NUMVERS "NUMVERS" -#define PAG_NUMPAG "NUMPAG" -#define PAG_SPESA "SPESA" -#define PAG_INPSPERC "CTSSNPERC" -#define PAG_INPSCOMP "CTSSNCOMP" - -#endif +// Mod.770 - Scheda percipienti - Righe Pagamenti + +#ifndef __RPAG_H +#define __RPAG_H + +#define PAG_CODDITTA "CODDITTA" +#define PAG_TIPOA "TIPOA" +#define PAG_CODANAGR "CODANAGR" +#define PAG_NPROG "NPROG" +#define PAG_NRIGA "NRIGA" +#define PAG_DATAPAG "DATAPAG" +#define PAG_IMPONIBILE "IMPONIBILE" +#define PAG_PERC "PERC" +#define PAG_RITENUTA "RITENUTA" +#define PAG_COMPENSO "COMPENSO" +#define PAG_NETTO "NETTO" +#define PAG_NUMVERS "NUMVERS" +#define PAG_NUMPAG "NUMPAG" +#define PAG_SPESA "SPESA" +#define PAG_INPSPERC "CTSSNPERC" +#define PAG_INPSCOMP "CTSSNCOMP" + +#endif