diff --git a/m770/77base1.frm b/m770/77base1.frm index 465c96a87..bf1d36c4c 100755 --- a/m770/77base1.frm +++ b/m770/77base1.frm @@ -5,7 +5,8 @@ JOIN 6 TO 9 ALIAS 116 INTO TIPOA=TIPOA CODANAGR=CODANAGR JOIN 7 TO 9 INTO CODANAGR=CODANAGR JOIN 8 TO 6 ALIAS 118 INTO CODANAGR=CODANAGR JOIN 13 TO 8 ALIAS 113 INTO COM=COMNASC -JOIN 13 TO 6 ALIAS 213 INTO COM=COMRF(COMRES) +JOIN 13 TO 6 ALIAS 213 INTO COM=COMRF +JOIN 13 TO 6 ALIAS 613 INTO COM=COMRES JOIN 6 TO 36 ALIAS 216 INTO TIPOA=="F" CODANAGR==RAPPR JOIN 8 TO 216@ ALIAS 218 INTO CODANAGR==CODANAGR JOIN 13 TO 218@ ALIAS 313 INTO COM==COMNASC @@ -318,7 +319,7 @@ STRING 30 BEGIN KEY "COMUNE SEDE LEGALE " PROMPT 41 15 "" - FIELD 213@->DENCOM + FIELD 613@->DENCOM GROUP 2 END @@ -326,7 +327,7 @@ STRING 31 BEGIN KEY "PROV. SEDE LEGALE" PROMPT 122 15 "" - FIELD 213@->PROVCOM + FIELD 613@->PROVCOM GROUP 2 END @@ -706,7 +707,8 @@ END STRINGA 79 BEGIN KEY "LUOGO CONSERVAZIONE S.C. - COM" - PROMPT 25 39 "" + PROMPT 25 39 "" + FIELD 613@->DENCOM FIELD 513@->DENCOM END @@ -714,6 +716,7 @@ STRINGA 80 BEGIN KEY "LUOGO CONSERVAZIONE S.C. - PROV" PROMPT 92 39 "" + FIELD 613@->PROVCOM FIELD 513@->PROVCOM END diff --git a/m770/77base3.frm b/m770/77base3.frm index 8081067a5..dd555f27a 100755 --- a/m770/77base3.frm +++ b/m770/77base3.frm @@ -123,10 +123,14 @@ BEGIN FIELD 42->QLLV END -STRINGA 8 +LISTA 8 BEGIN KEY "Tipo Vers." - PROMPT 34 3 "" + PROMPT 36 3 "" + ITEM " | " + ITEM "B|B" MESSAGE SHOW,13|HIDE,14 + ITEM "C|C" MESSAGE SHOW,14|HIDE,13 + ITEM "D|D" MESSAGE SHOW,14|HIDE,13 FIELD 42->QLTV END @@ -166,6 +170,14 @@ BEGIN FIELD 42->QLNUMERO[1,5] END +STRINGA 14 +BEGIN + KEY "NUMERO COMPLETO" + PROMPT 99 3 "" + FIELD 42->QLNUMERO + FLAGS "H" +END + END SECTION FOOTER LAST 2 diff --git a/m770/77qg.frm b/m770/77qg.frm index 2e14b74f0..443092119 100755 --- a/m770/77qg.frm +++ b/m770/77qg.frm @@ -421,7 +421,7 @@ END NUMBER 54 BEGIN KEY "TOT.UT.NATURA" - PROMPT 120 46 "" + PROMPT 120 45 "" FIELD 70->P2VALT PICTURE "###.###.###^^^" END diff --git a/m770/77ql.frm b/m770/77ql.frm index 60c27b6a2..afa1740cd 100755 --- a/m770/77ql.frm +++ b/m770/77ql.frm @@ -227,10 +227,14 @@ BEGIN FIELD 42->QLLV END -STRINGA 8 +LISTA 8 BEGIN KEY "Tipo Vers." PROMPT 36 3 "" + ITEM " | " + ITEM "B|B" MESSAGE SHOW,13|HIDE,14 + ITEM "C|C" MESSAGE SHOW,14|HIDE,13 + ITEM "D|D" MESSAGE SHOW,14|HIDE,13 FIELD 42->QLTV END @@ -265,14 +269,22 @@ END STRINGA 13 BEGIN - KEY "NUMERO" + KEY "NUMERO SENZA Prog.Versamento" PROMPT 99 3 "" - FIELD 42->QLNUMERO[1,5] + FIELD 42->QLNUMERO[1,5] +END + +STRINGA 14 +BEGIN + KEY "NUMERO COMPLETO" + PROMPT 99 3 "" + FIELD 42->QLNUMERO + FLAGS "H" END END -SECTION FOOTER LAST 2 +SECTION FOOTER LAST 6 NUMERO 1 BEGIN @@ -288,16 +300,18 @@ BEGIN PICTURE "###.###.###.###^^^" END -STRINGA 3 +DATE 3 BEGIN KEY "DATA" PROMPT 50 5 "" + FLAGS "A" END STRINGA 4 BEGIN KEY "FIRMA" PROMPT 120 5 "" + FIELD 106@->RAGSOC END END diff --git a/m770/77qn.frm b/m770/77qn.frm index b4c081d4f..c0175351c 100755 --- a/m770/77qn.frm +++ b/m770/77qn.frm @@ -149,21 +149,18 @@ NUMERO 1 BEGIN KEY "MeseRif" PROMPT 25 1 "" - FIELD 72->MESERIF END NUMERO 2 BEGIN KEY "AnnoRif" PROMPT 28 1 "" - FIELD 72->ANNORIF END NUMERO 3 BEGIN KEY "imp. rimb" PROMPT 37 1 "" - FIELD 72->IMPOSTA PICTURE "###.###.###.###^^^" END @@ -171,7 +168,6 @@ NUMERO 4 BEGIN KEY "Compensi" PROMPT 58 1 "" - FIELD 72->COMPENSI PICTURE "###.###.###.###^^^" END @@ -179,21 +175,18 @@ NUMERO 5 BEGIN KEY "MeseRif" PROMPT 83 1 "" - FIELD 72->MESERIF END NUMERO 6 BEGIN KEY "AnnoRif" PROMPT 86 1 "" - FIELD 72->ANNORIF END NUMERO 7 BEGIN KEY "imp. rimb" PROMPT 96 1 "" - FIELD 72->IMPOSTA PICTURE "###.###.###.###^^^" END @@ -201,7 +194,6 @@ NUMERO 8 BEGIN KEY "Compensi" PROMPT 116 1 "" - FIELD 72->COMPENSI PICTURE "###.###.###.###^^^" END @@ -213,21 +205,18 @@ NUMERO 1 BEGIN KEY "R - MeseRif" PROMPT 25 1 "" - FIELD 75->MESERIF END NUMERO 2 BEGIN KEY "R - AnnoRif" PROMPT 28 1 "" - FIELD 75->ANNORIF END NUMERO 3 BEGIN KEY "R - imp. rimb" PROMPT 37 1 "" - FIELD 75->IMPRIMB PICTURE "###.###.###.###^^^" END @@ -235,7 +224,6 @@ NUMERO 4 BEGIN KEY "R - Compensi" PROMPT 58 1 "" - FIELD 75->COMPENSI PICTURE "###.###.###.###^^^" END @@ -243,21 +231,18 @@ NUMERO 5 BEGIN KEY "R - MeseRif" PROMPT 83 1 "" - FIELD 75->MESERIF END NUMERO 6 BEGIN KEY "R - AnnoRif" PROMPT 86 1 "" - FIELD 75->ANNORIF END NUMERO 7 BEGIN KEY "R - imp. rimb" PROMPT 96 1 "" - FIELD 75->IMPRIMB PICTURE "###.###.###.###^^^" END @@ -265,7 +250,6 @@ NUMERO 8 BEGIN KEY "R - Compensi" PROMPT 116 1 "" - FIELD 75->COMPENSI PICTURE "###.###.###.###^^^" END @@ -333,21 +317,18 @@ NUMERO 1 BEGIN KEY "Q Mese paga" PROMPT 25 1 "" - FIELD 74->MESEPAG END NUMERO 2 BEGIN KEY "Q Anno paga" PROMPT 28 1 "" - FIELD 74->ANNOPAG END NUMERO 3 BEGIN KEY "Q Contr.versato" PROMPT 46 1 "" - FIELD 74->CONTVERS PICTURE "###.###.###.###^^^" END @@ -355,7 +336,6 @@ NUMERO 4 BEGIN KEY "Q Contr.rimborsati" PROMPT 75 1 "" - FIELD 74->CONTRIMB PICTURE "###.###.###.###^^^" END @@ -363,7 +343,6 @@ NUMERO 5 BEGIN KEY "Q Interes.e/o soprattasse" PROMPT 104 1 "" - FIELD 74->INTERESSI PICTURE "###.###.###.###^^^" END @@ -371,7 +350,6 @@ STRINGA 6 BEGIN KEY "Q Cod.Reg" PROMPT 126 1 "" - FIELD 74->CODREG END END @@ -382,21 +360,18 @@ NUMERO 1 BEGIN KEY "T Mese paga" PROMPT 25 1 "" - FIELD 77->MESEPAG END NUMERO 2 BEGIN KEY "T Anno paga" PROMPT 28 1 "" - FIELD 77->ANNOPAG END NUMERO 3 BEGIN KEY "T Contr.versato" PROMPT 46 1 "" - FIELD 77->CONTVERS PICTURE "###.###.###.###^^^" END @@ -404,7 +379,6 @@ NUMERO 4 BEGIN KEY "T Contr.rimborsati" PROMPT 75 1 "" - FIELD 77->CONTRIMB PICTURE "###.###.###.###^^^" END @@ -412,7 +386,6 @@ NUMERO 5 BEGIN KEY "T Interes.e/o soprattasse" PROMPT 104 1 "" - FIELD 77->INTERESSI PICTURE "###.###.###.###^^^" END @@ -420,7 +393,6 @@ STRINGA 6 BEGIN KEY "T Cod.Reg" PROMPT 126 1 "" - FIELD 77->CODREG END END diff --git a/m770/77stba.cpp b/m770/77stba.cpp index 3303326f2..9eb60a525 100755 --- a/m770/77stba.cpp +++ b/m770/77stba.cpp @@ -53,13 +53,21 @@ void TBase1::compatta_depositario() const int y = signature.y(); TString spazi(50); spazi.fill(' '); TString cognome = signature.get(); + +// Se codanagrds = codanagr dichiarante non stampare ragsoc. + TCursor* cur = cursor(); + const long codanagr=cur->file(LF_NDITTE).get_long("CODANAGR"); + const long codanagrds=cur->file(10).get_long("CODANGRDS"); + bool noRagsoc=codanagr==codanagrds; if (cognome.len() > 30 && cognome[29] == ' ') { TString nome = cognome.mid(30, -1); cognome.cut(30); cognome.trim(); - cognome << ' ' << nome; + cognome << " " << nome; signature.set(cognome); - } + } + if (noRagsoc) + cognome=""; totali.row(y-1).put(spazi, signature.x()-1); totali.row(y-1).put(cognome, signature.x()-1); } @@ -80,12 +88,17 @@ void TBase1::stampa_corpo(TPrinter& pr) progind()->addstatus(1); } -// accetta solo quelli con qualifica=A,B o C +// accetta solo quelli con qualifica=A,B o C, ATTUALI E FISICI bool bFiltraSoci(const TRelation* rel) { - TString sQual(3); + TString sQual(3); + TString sTipo; + sTipo = rel->lfile().get("TIPOASOC"); sQual = rel->lfile().get("RICQUAL"); - return sQual=="A" || sQual=="B" || sQual=="C"; + TString dep; + dep = rel->lfile().get("ATTPREC"); + const bool bAttuale = dep == "A"; + return sTipo=="F" && bAttuale && (sQual=="A" || sQual=="B" || sQual=="C"); } long TBase1::iContaSoci() @@ -98,12 +111,13 @@ long TBase1::iContaSoci() 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 int _initium_sociorum = _PaginaPosizionamento ? 53 : 53+HEADER_PRIMA_NOPOS; + if (_RigaCorr < _initium_sociorum) + jump_to_line(pr,_initium_sociorum); const long iSoci = iContaSoci(); if (iSoci > 11) { @@ -130,8 +144,6 @@ void TBase1::stampa_soci(TPrinter& pr) sComuneNa=c->file(LF_COMUNI).get("DENCOM"); sComuneNa.cut(28); sProvNa=c->file(LF_COMUNI).get("PROVCOM"); -// fut.field(0).set(sRagsoc); - sRagsoc=fut.field(0).get(); if (sRagsoc.len() > 30 && sRagsoc[30] != ' ') { sCognome=sRagsoc.left(30); @@ -166,7 +178,7 @@ 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); @@ -550,16 +562,18 @@ void TBase4::stampa_testata(TPrinter& pr) progind()->addstatus(1); } -void TBase4::fill_riga_QT(TPrint_section& sec,const int num) +void TBase4::fill_riga_QT(TPrint_section& sec,const int num,const char quadro) { TString sVal; - int start=1,end=6; + int start=1,end=6; + const int items = quadro=='Q' ? _righeQ.items() : _righeT.items(); for (int i = start; i <= end; i++) { TForm_item& fi = sec.find_field(i); - if (num < _righeQT.items()) +// if (num < _righeQT.items()) + if (num < items) { - const TRigaQT& rN = _righeQT[num]; + const TRigaQT& rN = quadro=='Q' ? _righeQ[num] : _righeT[num]; if (i==start) sVal=rN.sMesePag(); else if (i==start+1) @@ -586,16 +600,16 @@ void TBase4::stampa_Q(TPrinter& pr) TPrint_section& body = section('F', even_page); body.reset(); TLocalisamfile qp(LF_QUAQ); - _righeQT.fill(_codditta,qp); - if (_righeQT.items()==0) return; - _bAggQ = _righeQT.items() > _RIGHE_Q; + _righeQ.fill(_codditta,qp); + if (_righeQ.items()==0) return; + _bAggQ = _righeQ.items() > _RIGHE_Q; int riga=0; bool FinitaSezione=FALSE; while (!FinitaSezione) { // Stampa la parte sinistra (primi 4 campi) - fill_riga_QT(body,riga); + fill_riga_QT(body,riga,'Q'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -605,8 +619,6 @@ void TBase4::stampa_Q(TPrinter& pr) progind()->addstatus(1); FinitaSezione=riga>_RIGHE_Q-1; } -// Salta due righe alla fine - stampa_righe_vuote(pr,2); } void TBase4::stampa_T(TPrinter& pr) @@ -614,16 +626,16 @@ void TBase4::stampa_T(TPrinter& pr) TPrint_section& body = section('F', odd_page); body.reset(); TLocalisamfile qp(LF_QUAT); - _righeQT.fill(_codditta,qp); - if (_righeQT.items()==0) return; - _bAggT = _righeQT.items() > _RIGHE_T; + _righeT.fill(_codditta,qp); + if (_righeT.items()==0) return; + _bAggT = _righeT.items() > _RIGHE_T; int riga=0; bool FinitaSezione=FALSE; while (!FinitaSezione) { // Stampa la parte sinistra (primi 4 campi) - fill_riga_QT(body,riga); + fill_riga_QT(body,riga,'T'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -635,16 +647,17 @@ void TBase4::stampa_T(TPrinter& pr) } } -void TBase4::fill_riga_PS(TPrint_section& sec,const int num) +void TBase4::fill_riga_PS(TPrint_section& sec,const int num,const char quadro) { TString sVal,sDep; int start=1,end=8; + const int items = quadro=='P' ? _righeP.items() : _righeS.items(); for (int i = start; i <= end; i++) { TForm_item& fi = sec.find_field(i); - if (num < _righePS.items()) + if (num < items) { - const TRigaPS& rN = _righePS[num]; + const TRigaPS& rN = quadro=='P' ? _righeP[num] : _righeS[num]; if (i==start) sVal=rN.sImposta(fi.picture()); else if (i==start+1) @@ -678,9 +691,9 @@ void TBase4::stampa_P(TPrinter& pr) TPrint_section& body = section('H', even_page); body.reset(); TLocalisamfile qp(LF_QUAP); - _righePS.fill(_codditta,qp); - if (_righePS.items()==0) return; - const int items=_righePS.items(); + _righeP.fill(_codditta,qp); + if (_righeP.items()==0) return; + const int items=_righeP.items(); _bAggP = items > _RIGHE_P; int riga=0; @@ -688,7 +701,7 @@ void TBase4::stampa_P(TPrinter& pr) while (!FinitaSezione) { // Stampa la parte sinistra (primi 4 campi) - fill_riga_PS(body,riga); + fill_riga_PS(body,riga,'P'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -698,8 +711,6 @@ void TBase4::stampa_P(TPrinter& pr) progind()->addstatus(1); FinitaSezione=riga>_RIGHE_P-1; } -// Salta due righe alla fine - stampa_righe_vuote(pr,2); } void TBase4::stampa_S(TPrinter& pr) @@ -707,16 +718,16 @@ void TBase4::stampa_S(TPrinter& pr) TPrint_section& body = section('H', even_page); body.reset(); TLocalisamfile qp(LF_QUAS); - _righePS.fill(_codditta,qp); - if (_righePS.items()==0) return; - _bAggS = _righePS.items() > _RIGHE_S; + _righeS.fill(_codditta,qp); + if (_righeS.items()==0) return; + _bAggS = _righeS.items() > _RIGHE_S; int riga=0; bool FinitaSezione=FALSE; while (!FinitaSezione) { // Stampa la parte sinistra (primi 4 campi) - fill_riga_PS(body,riga); + fill_riga_PS(body,riga,'S'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -735,24 +746,22 @@ void TBase4::stampa_R(TPrinter& pr) TPrint_section& body = section('B', even_page); body.reset(); TLocalisamfile qr(LF_QUAR); - _righeNR.fill(_codditta,qr); - if (_righeNR.items()==0) return; - const int items=_righeNR.items(); + _righeR.fill(_codditta,qr); + if (_righeR.items()==0) return; + const int items=_righeR.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); + fill_riga_NR(body,0,0,'R'); + fill_riga_NR(body,1,1,'R'); 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) +void TBase4::fill_riga_NR(TPrint_section& sec,const int num, const int side,const char quadro) { TString sVal; int start,end; @@ -766,12 +775,13 @@ void TBase4::fill_riga_NR(TPrint_section& sec,const int num, const int side) start=5; end=9; } + const int items = quadro=='N' ? _righeN.items() : _righeR.items(); for (int i = start; i < end; i++) { TForm_item& fi = sec.find_field(i); - if (num < _righeNR.items()) + if (num < items) { - const TRigaN& rN = _righeNR[num]; + const TRigaN& rN = quadro=='N' ? _righeN[num] : _righeR[num]; if (i==start) sVal=rN.sMeseRif(); else if (i==start+1) @@ -807,10 +817,10 @@ void TBase4::stampa_N(TPrinter& pr) TPrint_section& body = section('B', odd_page); body.reset(); TLocalisamfile qn(LF_QUAN); - _righeNR.fill(_codditta,qn); - if (_righeNR.items()==0) return; + _righeN.fill(_codditta,qn); + if (_righeN.items()==0) return; // se iRigheN > 6 => bisogna stampare anche l'allegato - _bAggN = _righeNR.items() > _RIGHE_N; + _bAggN = _righeN.items() > _RIGHE_N; int num=0; int riga=0; @@ -818,9 +828,9 @@ void TBase4::stampa_N(TPrinter& pr) while (!FinitaSezione) { // Stampa la parte sinistra (primi 4 campi) - fill_riga_NR(body,num,0); + fill_riga_NR(body,num,0,'N'); num+=3; - fill_riga_NR(body,num,1); + fill_riga_NR(body,num,1,'N'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -831,8 +841,6 @@ void TBase4::stampa_N(TPrinter& pr) num-=2; FinitaSezione=riga>2; } -// Salta due righe alla fine - stampa_righe_vuote(pr,2); } void TBase4::stampa_fine(TPrinter& pr) @@ -863,12 +871,18 @@ bool TBase4::print(const long codditta, const long NumFis, const long NumNoFis) 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_N(pr); + jump_to_line(pr,16); + stampa_P(pr); + jump_to_line(pr,22); + stampa_Q(pr); + jump_to_line(pr,28); + stampa_R(pr); + jump_to_line(pr,31); + stampa_S(pr); + jump_to_line(pr,37); stampa_T(pr); + jump_to_line(pr,41); stampa_fine(pr); next_page(pr); close_print(); @@ -996,7 +1010,7 @@ long TQuadroL::filtra(const long codditta) { TString filtr(24); _codditta=codditta; - filtr.format("(CODDITTA==%ld)&&(QLAP==%d)", codditta,anno_770()); + filtr.format("(CODDITTA==%ld)&&(QLAP==%d)", _codditta,anno_770()); cursor()->setfilter(filtr, TRUE); const long items = cursor()->items(); return items; @@ -1058,12 +1072,40 @@ bool TQuadroL::stampa_L(TPrinter& pr,const long lStartRec,const int iRecL) return eof; } +int TQuadroL::calcola_firma() +{ + TPrint_section& totali = section('F', last_page); + TForm_item& signature = totali.find_field(4); + 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 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(); + hh.update(); + TForm_item& totEff = hh.find_field(1); + TForm_item& totVer = hh.find_field(2); + real rTotEff(totEff.get()); + real rTotVer(totVer.get()); + rTotEff += _rTotEff; + rTotVer += _rTotVer; + totEff.set(_rTotEff.string()); + totVer.set(_rTotVer.string()); + const int lasty = calcola_firma(); const int hhr = hh.height(); for (int i = 0; i < hhr; i++) { @@ -1079,6 +1121,17 @@ const int _REC_PRIMA_AGG_L=12; const int _REC_SECONDA_AGG_L=14; const int _RIGA_TOTALI_AGG_L=60; +void TQuadroL::calcola_totali_precedenti() +{ + TCursor* cur = cursor(); + _rTotEff = _rTotVer = ZERO; + for ((*cur)=0L; cur->pos() < _START_AGG_L-1; ++(*cur) ) + { + _rTotEff += cur->curr().get_real("QLRITEFF"); + _rTotVer += cur->curr().get_real("QLRITVER"); + } +} + bool TQuadroL::print(const long codditta, const long NumFis, const long NumNoFis) { TCursor* cur = cursor(); @@ -1090,7 +1143,9 @@ bool TQuadroL::print(const long codditta, const long NumFis, const long NumNoFis // Non stampare se non ci sono record if (cur->items() < _START_AGG_L-1) return FALSE; - + + calcola_totali_precedenti(); + // Legge dai par.studio l'ordinamento da usare per L TConfig conf(CONFIG_STUDIO); const int iChiaveL = (int)conf.get_long("FlStQl", "77"); @@ -1100,7 +1155,9 @@ bool TQuadroL::print(const long codditta, const long NumFis, const long NumNoFis cur->setkey(2); pr.formlen(dic_form_len()); - int lOffsetL=_START_AGG_L; +// int lOffsetL=_START_AGG_L; + int lOffsetL=15; + (*cur)=lOffsetL; bool finito=FALSE; while (!finito) { @@ -1254,22 +1311,23 @@ void TBase4::fill_riga_PS(TPrint_section& sec,const int num) } } */ -void TQuadroN::stampa_N(TPrinter& pr) +int TQuadroN::stampa_N(TPrinter& pr,const int ptrN) { 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; +// int num=6; + int num=ptrN; + int riga=0; + int LastUsed=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); + fill_riga_NR(body,num,0,'N'); + num+=3; + LastUsed=num; + fill_riga_NR(body,num,1,'N'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -1278,24 +1336,24 @@ void TQuadroN::stampa_N(TPrinter& pr) if (usa_progind()) progind()->addstatus(1); num-=2; - FinitaSezione=riga>4; - } + FinitaSezione=riga>3; + } + return LastUsed; } -void TQuadroN::stampa_P(TPrinter& pr) +int TQuadroN::stampa_P(TPrinter& pr,const int ptrP) { TPrint_section& body = section('H', even_page); body.reset(); -// TLocalisamfile qp(LF_QUAP); -// _righePS.fill(_codditta,qp); - const int items=_righePS.items(); + const int items=_righeP.items(); // Parte da rec.n.5 - int riga=4; +// int riga=4; + int riga=ptrP; bool FinitaSezione=FALSE; while (!FinitaSezione) { // Stampa la parte sinistra (primi 4 campi) - fill_riga_PS(body,riga); + fill_riga_PS(body,riga,'P'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -1303,23 +1361,23 @@ void TQuadroN::stampa_P(TPrinter& pr) _RigaCorr++; if (usa_progind()) progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_PA-1; + FinitaSezione=riga-ptrP>9; } -} + return riga; +} -void TQuadroN::stampa_Q(TPrinter& pr) +int TQuadroN::stampa_Q(TPrinter& pr,const int ptrQ) { 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; +// int riga=4; + int riga=ptrQ; bool FinitaSezione=FALSE; while (!FinitaSezione) { // Stampa la parte sinistra (primi 4 campi) - fill_riga_QT(body,riga); + fill_riga_QT(body,riga,'Q'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -1327,27 +1385,27 @@ void TQuadroN::stampa_Q(TPrinter& pr) _RigaCorr++; if (usa_progind()) progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_QA-1; + FinitaSezione=riga-ptrQ>3; } -// Salta due righe alla fine - stampa_righe_vuote(pr,2); + return riga; } -void TQuadroN::stampa_R(TPrinter& pr) +int TQuadroN::stampa_R(TPrinter& pr,const int ptrR) { 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; + const int items=_righeR.items(); +// int RecNum=2; + int RecNum=ptrR; int RigheStampate=0; + int LastUsed=0; bool FinitaSezione=FALSE; while (!FinitaSezione) { - fill_riga_NR(body,RecNum,0); - RecNum+=3; - fill_riga_NR(body,RecNum,1); + fill_riga_NR(body,RecNum,0,'R'); + RecNum+=3; + LastUsed=RecNum; + fill_riga_NR(body,RecNum,1,'R'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -1356,23 +1414,22 @@ void TQuadroN::stampa_R(TPrinter& pr) if (usa_progind()) progind()->addstatus(1); RecNum-=2; - FinitaSezione=RigheStampate>_RIGHE_RA-1; + FinitaSezione=RigheStampate>1; } + return LastUsed; } -void TQuadroN::stampa_S(TPrinter& pr) +int TQuadroN::stampa_S(TPrinter& pr,const int ptrS) { TPrint_section& body = section('H', even_page); body.reset(); -// TLocalisamfile qp(LF_QUAS); -// _righePS.fill(_codditta,qp); - - int riga=4; +// int riga=4; + int riga=ptrS; bool FinitaSezione=FALSE; while (!FinitaSezione) { // Stampa la parte sinistra (primi 4 campi) - fill_riga_PS(body,riga); + fill_riga_PS(body,riga,'S'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -1380,22 +1437,22 @@ void TQuadroN::stampa_S(TPrinter& pr) _RigaCorr++; if (usa_progind()) progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_SA-1; + FinitaSezione=riga-ptrS>5; } + return riga; } -void TQuadroN::stampa_T(TPrinter& pr) +int TQuadroN::stampa_T(TPrinter& pr,const int ptrT) { TPrint_section& body = section('F', odd_page); body.reset(); -// TLocalisamfile qp(LF_QUAT); -// _righeQT.fill(_codditta,qp); - int riga=4; +// int riga=4; + int riga=ptrT; bool FinitaSezione=FALSE; while (!FinitaSezione) { // Stampa la parte sinistra (primi 4 campi) - fill_riga_QT(body,riga); + fill_riga_QT(body,riga,'T'); TPrintrow& rr=body.row(0); pr.print(rr); rr.reset(); @@ -1403,8 +1460,9 @@ void TQuadroN::stampa_T(TPrinter& pr) _RigaCorr++; if (usa_progind()) progind()->addstatus(1); - FinitaSezione=riga>_RIGHE_TA-1; - } + FinitaSezione=riga-ptrT>3; + } + return riga; } /* @@ -1455,24 +1513,25 @@ bool TQuadroN::print(const long codditta, const long NumFis, const long NumNoFis return FALSE; TLocalisamfile qn(LF_QUAN); - _righeNR.fill(_codditta,qn); - bool stampoN=_righeNR.items() > 6; + _righeN.fill(_codditta,qn); + bool stampoN=_righeN.items() > 6; TLocalisamfile qp(LF_QUAP); - _righePS.fill(_codditta,qp); - bool stampoP=_righePS.items() > 4; + _righeP.fill(_codditta,qp); + bool stampoP=_righeP.items() > 4; TLocalisamfile qq(LF_QUAQ); - _righeQT.fill(_codditta,qq); - bool stampoQ=_righeQT.items() > 4; + _righeQ.fill(_codditta,qq); + bool stampoQ=_righeQ.items() > 4; TLocalisamfile qr(LF_QUAR); - _righeNR.fill(_codditta,qr); - bool stampoR=_righeNR.items() > 2; + _righeR.fill(_codditta,qr); + bool stampoR=_righeR.items() > 2; TLocalisamfile qs(LF_QUAS); - _righePS.fill(_codditta,qs); - bool stampoS=_righePS.items() > 4; + _righeS.fill(_codditta,qs); + bool stampoS=_righeS.items() > 4; TLocalisamfile qt(LF_QUAT); - _righeQT.fill(_codditta,qt); - bool stampoT=_righeQT.items() > 4; + _righeT.fill(_codditta,qt); + bool stampoT=_righeT.items() > 4; + int ptrN=6,ptrP=4,ptrQ=4,ptrR=2,ptrS=4,ptrT=4; // Se non c'e' niente da stampare esce if (!stampoN && !stampoP && !stampoQ && !stampoR && !stampoS && !stampoT) @@ -1481,6 +1540,7 @@ bool TQuadroN::print(const long codditta, const long NumFis, const long NumNoFis pr.formlen(TDicForm::dic_form_len()); _RigaCorr=0; (*cur)=0L; + bool done=FALSE; while (!done) { @@ -1488,24 +1548,29 @@ bool TQuadroN::print(const long codditta, const long NumFis, const long NumNoFis int skip=HEADER_PRIMA_NOPOS; stampa_testata(pr); jump_to_line(pr, _PaginaPosizionamento ? 20-skip : 20); - stampa_N(pr); + ptrN=stampa_N(pr,ptrN); jump_to_line(pr, _PaginaPosizionamento ? 26-skip : 26); - stampa_P(pr); + ptrP=stampa_P(pr,ptrP); jump_to_line(pr, _PaginaPosizionamento ? 38-skip : 38); - stampa_Q(pr); + ptrQ=stampa_Q(pr,ptrQ); jump_to_line(pr, _PaginaPosizionamento ? 44-skip : 44); - stampa_R(pr); + ptrR=stampa_R(pr,ptrR); jump_to_line(pr, _PaginaPosizionamento ? 48-skip : 48); - stampa_S(pr); + ptrS=stampa_S(pr,ptrS); jump_to_line(pr, _PaginaPosizionamento ? 56-skip : 56); - stampa_T(pr); + ptrT=stampa_T(pr,ptrT); 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; + bool FinitoN = ptrN == _righeN.items(); + bool FinitoP = ptrP == _righeP.items(); + bool FinitoQ = ptrQ == _righeQ.items(); + bool FinitoR = ptrR == _righeR.items(); + bool FinitoS = ptrS == _righeS.items(); + bool FinitoT = ptrT == _righeT.items(); + done = FinitoN && FinitoP && FinitoQ && FinitoR && FinitoS && FinitoT; } close_print(); return TRUE; diff --git a/m770/77stba.h b/m770/77stba.h index b8b89a5ec..2cd10a47d 100755 --- a/m770/77stba.h +++ b/m770/77stba.h @@ -194,13 +194,16 @@ class TBase4 : public TDicForm bool _bAggN,_bAggP,_bAggR,_bAggQ,_bAggS,_bAggT; protected: int _IdFirma; - TRigheNR _righeNR; // array dei record N e R - TRigheQT _righeQT; - TRighePS _righePS; + TRigheNR _righeR; // array dei record N e R + TRigheNR _righeN; + TRigheQT _righeQ; + TRigheQT _righeT; + TRighePS _righeP; + TRighePS _righeS; 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 fill_riga_QT(TPrint_section& sec,const int num,const char quadro); + void fill_riga_PS(TPrint_section& sec,const int num,const char quadro); + void fill_riga_NR(TPrint_section& sec,const int num, const int side,const char quadro); void stampa_testata(TPrinter& pr); void stampa_fine(TPrinter& pr); void stampa_N(TPrinter& pr); @@ -250,8 +253,9 @@ class TQuadroL : public TDicForm { private: long _codditta; - real _rRitEff, _rRitVer; + real _rTotEff, _rTotVer; int _num_foglio; + void calcola_totali_precedenti(); protected: void stampa_testata(TPrinter& pr); void stampa_totali_L(TPrinter& pr); @@ -260,10 +264,10 @@ class TQuadroL : public TDicForm 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); + int calcola_firma(); 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) {_num_foglio=0;} + TQuadroL(const char* sNomeForm, const char* quadro) : _rTotEff(ZERO),_rTotVer(ZERO),TDicForm(sNomeForm, quadro) {_num_foglio=0;} virtual ~TQuadroL() {} }; @@ -288,12 +292,12 @@ class TQuadroN : public TBase4 int _num_foglio; 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); + int stampa_N(TPrinter& pr,const int ptr); + int stampa_P(TPrinter& pr,const int ptr); + int stampa_Q(TPrinter& pr,const int ptr); + int stampa_R(TPrinter& pr,const int ptr); + int stampa_S(TPrinter& pr,const int ptr); + int stampa_T(TPrinter& pr,const int ptr); void stampa_testata(TPrinter& pr); virtual int prima_riga(PaginaQuadro p) const; virtual void next_page(TPrinter& pr) { fill_page(pr, -1); }