diff --git a/cg/cg3200.cpp b/cg/cg3200.cpp index 56b178f35..be47ad3a1 100755 --- a/cg/cg3200.cpp +++ b/cg/cg3200.cpp @@ -78,7 +78,8 @@ class TMastrini_application : public TPrintapp int _annomsk,_annoesmsk,_annoes,_annomsksucc,_tipo_mask,_anno_ghost; int _anno_corrente,_anno_precedente,_indbil,_numero_pag; long _sottoc,_numreg,_numgio,_protiva; - bool _stampa_progressivi_si,_competenza,_inizio_stampa,_puoi_stampare,_cambia_mastrino; + bool _stampa_progressivi_si,_competenza,_inizio_stampa,_puoi_stampare; + bool _cambia_mastrino,_gia_stampata_intestazione; char _tmcf,_tipo_contr; TDate _dataregrmov; @@ -772,7 +773,7 @@ void TMastrini_application::saldi_zero() while (!rmov.eof()) { - rmov.read(); + //rmov.read(); char sezione = rmov.curr().get(RMV_SEZIONE)[0]; real importo = rmov.curr().get_real(RMV_IMPORTO); int gruppo = atoi(rmov.get(RMV_GRUPPO)); @@ -780,13 +781,13 @@ void TMastrini_application::saldi_zero() long sottoc = atol(rmov.get(RMV_SOTTOCONTO)); if ((gruppo == _gruppo)&&(conto == _conto)&&(sottoc == _sottoc)) - { + { if (sezione == 'D') saldo_dare += importo; else if (sezione == 'A') saldo_avere += importo; - } - else break; + } + else break; rmov.next(); } rmov.readat(record); @@ -1412,7 +1413,12 @@ bool TMastrini_application::preprocess_page(int file, int counter) _puoi_stampare = TRUE; if (_nummast == 3 || _nummast == 2) - { + { + int cur_row = printer().formlen() - printer().rows_left(); + int diff = printer().formlen() - cur_row; + if (diff <= 13 && diff != 0) + printer().formfeed(); + _rw = crea_intestazione(_rw); calcola_progressivi(); _saldo_progressivi += _saldo_progre_prec; @@ -1440,7 +1446,12 @@ bool TMastrini_application::preprocess_page(int file, int counter) _puoi_stampare = TRUE; if (_nummast == 3 || _nummast == 2) - { + { + int cur_row = printer().formlen() - printer().rows_left(); + int diff = printer().formlen() - cur_row; + if (diff <= 13 && diff != 0) + printer().formfeed(); + _rw = crea_intestazione(_rw); _saldo_progressivi += _saldo_progre_prec; _rw = stampa_progre_riporto(_rw); @@ -1450,7 +1461,16 @@ bool TMastrini_application::preprocess_page(int file, int counter) break; case LF_RMOV: - { + { + //Il flag _gia_stampata_intestazione serve nella stampa in continuo, xche' + //sono costretto a richiamare l'intestazione sia nella preprocess_page (per + //i mastrini con intestazione a meta' pagina), sia nella preprocess_header + //per i mastrini che si trovano a cavallo fra una pagina e quella successiva. + //In quest'ultimo caso infatti quando vado a pagina nuova devo stampare l'intestazione + //ma senza il flag rischio di stamparla due volte. + if (_nummast == 3) + _gia_stampata_intestazione = FALSE; + if (_nummast == 1 || _nummast == 3) _rw = 1; @@ -2248,16 +2268,13 @@ bool TMastrini_application::set_print(int) _anno_corrente = _anno_ghost; _anno_precedente = _anno_corrente - 1; - -// Scelta del formato e del numero di mastrini per pagina 1 o 2 - - //if (nummast == 1) - // crt = formato; - //else - // crt = (formato / 2); - - //printer().formlen(crt); +//Per la stampa in continuo riservo due righe di footer, mentre per le altre no. + if (_nummast == 3) + printer().footerlen(2); + else + printer().footerlen(0); + //Crea il cursore su gruppo, conto e sottoconto del file RMOV reset_files(); //resetta l'albero di stampa @@ -2340,12 +2357,27 @@ void TMastrini_application::preprocess_header() if (_tipostampa == 2) { if ((_totale_saldo != 0) && (_puoi_stampare)) - crea_intestazione(); + crea_intestazione(); } else if (_tipostampa == 1) if (_puoi_stampare) - crea_intestazione(); - } + crea_intestazione(); + } + else + if (_nummast == 3 && !_gia_stampata_intestazione) + { + if (_tipostampa == 3) + crea_intestazione(); + else + if (_tipostampa == 2) + { + if ((_totale_saldo != 0) && (_puoi_stampare)) + crea_intestazione(); + } + else if (_tipostampa == 1) + if (_puoi_stampare) + crea_intestazione(); + } } void TMastrini_application::conto(int gruppo, int conto, bool no_contropartita) @@ -2443,15 +2475,32 @@ void TMastrini_application::crea_intestazione() set_header (1, "@0gDITTA@6g%5ld", _codice_ditta); set_header (1, "@12g%-.45s", (const char*) _ragsoc); - set_header (1, "@59g%-.25s", (const char*) _indulc); - set_header (1, "@86g%-.9s", (const char*) _civulc); + int len = _indulc.len(); + if (len <= 25) + _indulc << " " << _civulc.mid(0,9); + else + { + _indulc = _indulc.mid(0,25); + _indulc << " " << _civulc.mid(0,9); + } + set_header (1, "@59g%s", (const char*) _indulc); + //set_header (1, "@86g%-.9s", (const char*) _civulc); set_header (1, "@97g%-.5s", (const char*) _capulc); set_header (1, "@103g%-.18s", (const char*) _com); set_header (1, "@122g%-.3s", (const char*) _prov); - set_header (3, "@0gSottoconto@12g%d", _gruppo); - set_header (3, "@16g%d", _conto); - set_header (3, "@20g%ld", _sottoc); + if (_nummast == 3) + { + set_header (3, "@0gSottoconto@12g@b%d", _gruppo); + set_header (3, "@16g@b%d", _conto); + set_header (3, "@20g@b%ld", _sottoc); + } + else + { + set_header (3, "@0gSottoconto@12g%d", _gruppo); + set_header (3, "@16g%d", _conto); + set_header (3, "@20g%ld", _sottoc); + } if (_tmcf == 'C') _tipo_mask = 1; @@ -2496,7 +2545,7 @@ void TMastrini_application::crea_intestazione() set_header (8,"Data"); if (_stampanum < 3) set_header (8,"@11gnumero"); - set_header (8,"@23gDocumento@42gCod.Causale@70gDescrizione@112gDare@127gAvere@133gSaldo progress.@152gSaldo movim.@169gPartita@180gIva@184gProtocollo@197gC"); + set_header (8,"@23gDocumento@42gCod.Causale@70gDescrizione@112gDare@127gAvere@135gSaldo progre.@152gSaldo movim.@169gPartita@180gIva@184gProtocollo@197gC"); if (_stampa_mov_prov) set_header(8,"@195gP"); sep1.fill('-'); @@ -2571,7 +2620,10 @@ int TMastrini_application::crea_intestazione(int start_riga) reset_header(); _conta_mastrini++; - + + if (_nummast == 3) + _gia_stampata_intestazione = TRUE; + if (_nummast == 2) if (_cambia_mastrino) { @@ -2586,16 +2638,33 @@ int TMastrini_application::crea_intestazione(int start_riga) set_row (r, "@0gDITTA@6g%5ld", _codice_ditta); set_row (r, "@12g%-45s", (const char*) _ragsoc); - set_row (r, "@59g%-25s", (const char*) _indulc); - set_row (r, "@86g%-9s", (const char*) _civulc); + int len = _indulc.len(); + if (len <= 25) + _indulc << " " << _civulc.mid(0,9); + else + { + _indulc = _indulc.mid(0,25); + _indulc << " " << _civulc.mid(0,9); + } + set_row (r, "@59g%s", (const char*) _indulc); +// set_row (r, "@86g%-9s", (const char*) _civulc); set_row (r, "@97g%-5s", (const char*) _capulc); set_row (r, "@103g%-18s", (const char*) _com); set_row (r, "@122g%-3s", (const char*) _prov); - r += 2; - set_row (r, "@0gSottoconto@12g%d", _gruppo); - set_row (r, "@16g%d", _conto); - set_row (r, "@20g%ld", _sottoc); - + r += 2; + if (_nummast == 3) + { + set_row (r, "@0gSottoconto@12g@b%d", _gruppo); + set_row (r, "@16g@b%d", _conto); + set_row (r, "@20g@b%ld", _sottoc); + } + else + { + set_row (r, "@0gSottoconto@12g%d", _gruppo); + set_row (r, "@16g%d", _conto); + set_row (r, "@20g%ld", _sottoc); + } + if (_tmcf == 'C') _tipo_mask = 1; else if (_tmcf == 'F') @@ -2642,7 +2711,7 @@ int TMastrini_application::crea_intestazione(int start_riga) if (_stampanum < 3) set_row (r,"@11gnumero"); set_row (r,"@23gDocumento@42gCod.Causale@70gDescrizione@112gDare@127gAvere"); - set_row (r++,"@133gSaldo progress.@152gSaldo movim.@169gPartita@180gIva@184gProtocollo@197gC"); + set_row (r++,"@135gSaldo progre.@152gSaldo movim.@169gPartita@180gIva@184gProtocollo@197gC"); if (_stampa_mov_prov) set_row (r-1,"@195gP"); sep1.fill('-'); @@ -3076,7 +3145,10 @@ void TMastrini_application::ricerca_clifo() set_header(3,"@27g%-.30s",(const char*) descrizione_gruppo()); set_header(3,"@59g%-.30s",(const char*) descrizione_conto()); set_header(3, "@91g%-.41s",(const char*) ragsoc); - set_header(4, "Classe@8g%c", _lettivd); + if (_nummast == 3) + set_header(4, "@rClasse@8g@b%c", _lettivd); + else + set_header(4, "Classe@8g%c", _lettivd); set_header(4, "@10g%-8s", (const char*) _numrivd); if (_numivd != 0) set_header(4, "@19g%2d", _numivd); @@ -3092,14 +3164,30 @@ void TMastrini_application::ricerca_clifo() datafine = _data_fine.string(); if (_annomsk == 0) - { - set_header (5, "Periodo@10g%s", (const char*) dataini); - set_header (5, "@22g%s", (const char*) datafine); + { + if (_nummast == 3) + { + set_header (5, "@rPeriodo@10g@b%s", (const char*) dataini); + set_header (5, "@22g@b%s@r", (const char*) datafine); + } + else + { + set_header (5, "Periodo@10g%s", (const char*) dataini); + set_header (5, "@22g%s", (const char*) datafine); + } } else - { - set_header (5, "Comp. da@9g%s", (const char*) dataini); - set_header (5, "@20ga@22g%s", (const char*) datafine); + { + if (_nummast == 3) + { + set_header (5, "@rComp. da@9g@b%s", (const char*) dataini); + set_header (5, "@20g@ra@22g@b%s@r", (const char*) datafine); + } + else + { + set_header (5, "Comp. da@9g%s", (const char*) dataini); + set_header (5, "@20ga@22g%s", (const char*) datafine); + } } set_header (5, "@33gP.I.@37g%-11s",(const char*) paiv); @@ -3193,14 +3281,17 @@ int TMastrini_application::ricerca_clifo(int start) set_row (r,"@27g%-30s",(const char*) descrizione_gruppo()); set_row (r,"@59g%-30s",(const char*) descrizione_conto()); set_row(r++, "@91g%-30s",(const char*) ragsoc); - set_row(r, "Classe@8g%c", _lettivd); + if (_nummast == 3) + set_row(r, "@rClasse@8g@b%c", _lettivd); + else + set_row(r, "Classe@8g%c", _lettivd); set_row(r, "@10g%-8s", (const char*) _numrivd); if (_numivd != 0) set_row(r, "@19g%2d", _numivd); if (descriz2 != "") { set_row(r,"@23g%-50s",(const char*) descriz2); - set_row(r,"@80g%-50s",(const char*) descriz); + set_row(r++,"@80g%-50s",(const char*) descriz); } else set_row(r++,"@23g%-50s",(const char*) descriz); @@ -3209,14 +3300,30 @@ int TMastrini_application::ricerca_clifo(int start) datafine = _data_fine.string(); if (_annomsk == 0) - { - set_row (r, "Periodo@10g%s", (const char*) dataini); - set_row (r, "@22g%s", (const char*) datafine); + { + if (_nummast == 3) + { + set_row (r, "@rPeriodo@10g@b%s", (const char*) dataini); + set_row (r, "@22g%s@r", (const char*) datafine); + } + else + { + set_row (r, "Periodo@10g%s", (const char*) dataini); + set_row (r, "@22g%s", (const char*) datafine); + } } else - { - set_row (r, "Comp. da@9g%s", (const char*) dataini); - set_row (r, "@20ga@22g%s", (const char*) datafine); + { + if (_nummast == 3) + { + set_row (r, "@rComp. da@9g@b%s", (const char*) dataini); + set_row (r, "@20g@ra@22g@b%s@r", (const char*) datafine); + } + else + { + set_row (r, "Comp. da@9g%s", (const char*) dataini); + set_row (r, "@20ga@22g%s", (const char*) datafine); + } } set_row (r, "@33gP.I.@37g%-11s",(const char*) paiv); @@ -3285,7 +3392,10 @@ void TMastrini_application::ricerca_gruppo() set_header(3,"@59g%-.30s",(const char*) descrizione_conto()); set_header(3,"@91g%-.41s",(const char*) descrizione_sottoconto()); - set_header(4, "@0gClasse@12g%c", _lettivd); + if (_nummast == 3) + set_header(4, "@0g@rClasse@12g@b%c", _lettivd); + else + set_header(4, "@0gClasse@12g%c", _lettivd); set_header(4, "@14g%-8s",(const char*) _numrivd); if (_numivd != 0) set_header(4, "@23g%d", _numivd); @@ -3301,14 +3411,30 @@ void TMastrini_application::ricerca_gruppo() datafine = _data_fine.string(); if (_annomsk == 0) - { - set_header (5, "Periodo@12g%s", (const char*) dataini); - set_header (5, "@24g%s", (const char*) datafine); + { + if (_nummast == 3) + { + set_header (5, "@rPeriodo@12g@b%s", (const char*) dataini); + set_header (5, "@24g@b%s@r", (const char*) datafine); + } + else + { + set_header (5, "Periodo@12g%s", (const char*) dataini); + set_header (5, "@24g%s", (const char*) datafine); + } } else - { - set_header (5, "Periodo di competenza@23g%s", (const char*) dataini); - set_header (5, "@35g%s", (const char*) datafine); + { + if (_nummast == 3) + { + set_header (5, "@rPeriodo di competenza@23g@b%s", (const char*) dataini); + set_header (5, "@35g%s@r", (const char*) datafine); + } + else + { + set_header (5, "Periodo di competenza@23g%s", (const char*) dataini); + set_header (5, "@35g%s", (const char*) datafine); + } } } @@ -3341,7 +3467,10 @@ int TMastrini_application::ricerca_gruppo(int start) set_row(r,"@59g%-.30s",(const char*) descrizione_conto()); set_row(r++,"@91g%-.41s",(const char*) descrizione_sottoconto()); - set_row(r, "@0gClasse@12g%c", _lettivd); + if (_nummast == 3) + set_row(r, "@0g@rClasse@12g@b%c", _lettivd); + else + set_row(r, "@0gClasse@12g%c", _lettivd); set_row(r, "@14g%-8s",(const char*) _numrivd); if (_numivd != 0) set_row(r, "@23g%d", _numivd); @@ -3357,14 +3486,30 @@ int TMastrini_application::ricerca_gruppo(int start) datafine = _data_fine.string(); if (_annomsk == 0) - { - set_row (r, "Periodo@12g%s", (const char*) dataini); - set_row (r, "@24g%s", (const char*) datafine); + { + if (_nummast == 3) + { + set_row (r, "@rPeriodo@12g@b%s", (const char*) dataini); + set_row (r, "@24g%s@r", (const char*) datafine); + } + else + { + set_row (r, "Periodo@12g%s", (const char*) dataini); + set_row (r, "@24g%s", (const char*) datafine); + } } else - { - set_row (r, "Periodo di competenza@23g%s", (const char*) dataini); - set_row (r, "@35g%s", (const char*) datafine); + { + if (_nummast == 3) + { + set_row (r, "@rPeriodo di competenza@23g@b%s", (const char*) dataini); + set_row (r, "@35g%s@r", (const char*) datafine); + } + else + { + set_row (r, "Periodo di competenza@23g%s", (const char*) dataini); + set_row (r, "@35g%s", (const char*) datafine); + } } return r; } @@ -3488,6 +3633,8 @@ bool TMastrini_application::user_create() _msk->set_handler (F_CONTOFINE_CLIENTE ,contof_hnd); _msk->set_handler (F_CONTOFINE_FORN ,contof_hnd); + _gia_stampata_intestazione = FALSE; + // _msk->set_handler (F_SOTTOCFINE_CONTO ,sottoc_hnd); // _msk->set_handler (F_SOTTOCFINE_CLIENTE ,sottoc_hnd); // _msk->set_handler (F_SOTTOCFINE_FORN ,sottoc_hnd);