diff --git a/at/at6600.cpp b/at/at6600.cpp index c5326284b..3c4c6cdd4 100755 --- a/at/at6600.cpp +++ b/at/at6600.cpp @@ -22,7 +22,8 @@ class TStampaNonDom : public TPrintapp TAssoc_array _catnondon; TParagraph_string _cognome_nome, _dencom; TDate _data_stampa; - TString16 _codsez, _codsot; + TString16 _codsez, _codsot, _codcom; + TString16 _tipostampa; protected: virtual bool user_create(); @@ -35,6 +36,7 @@ public: void crea_intestazione(); void filtra_sezioni(); void header_sezione(const TString16 codsez, const TString16 codsot); + void header_comune(const TString16 codcom); TMask& app_mask() { return *_msk; } TStampaNonDom() : _data_stampa(TODAY), _cognome_nome("",25), _dencom("",50) {} @@ -64,6 +66,8 @@ void TStampaNonDom::filtra_sezioni() void TStampaNonDom::set_page(int file, int cnt) { set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(2,"@0g@S", FLD(LF_SOGGETTI,SOG_CODSEZ)); + set_row(2,"@3g@S", FLD(LF_SOGGETTI,SOG_CODSOT)); set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@12g#a", &_cognome_nome); set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); @@ -130,6 +134,20 @@ void TStampaNonDom::header_sezione(const TString16 codsez, const TString16 codso return; } +void TStampaNonDom::header_comune(const TString16 codcom) +{ + const TString80 dencom = current_cursor()->curr(LF_COMUNI).get(COM_DENCOM); + TString intestazione(132); + intestazione = "Comune: "; + intestazione << codcom; + intestazione << " "; + intestazione << dencom; + intestazione.center_just(); + set_header(1,"@0g%s", (const char*) intestazione); + return; +} + + bool TStampaNonDom::preprocess_page(int file, int counter) { TRectype& recsog = current_cursor()->curr(); @@ -153,17 +171,32 @@ bool TStampaNonDom::preprocess_page(int file, int counter) localita << current_cursor()->curr(LF_COMUNI).get(COM_DENCOM); localita.trim(); _dencom = localita; - // salto pagina se cambio sezione - const TString16 codsez = recsog.get(SOG_CODSEZ); - const TString16 codsot = recsog.get(SOG_CODSOT); - if ((_codsez!=codsez)||(_codsot!=codsot)) + // salto pagina se cambio sezione o comune + if (_tipostampa == "01") { - if (_codsez != "**") - printer().formfeed(); - _codsez = codsez; - _codsot = codsot; - header_sezione(codsez, codsot); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); + if ((_codsez!=codsez)||(_codsot!=codsot)) + { + if (_codsez != "**") + printer().formfeed(); + _codsez = codsez; + _codsot = codsot; + header_sezione(codsez, codsot); + } } + else + { + const TString16 codcom = recsog.get(SOG_DOM_CODCOM); + if (_codcom!=codcom) + { + if (_codcom != "**") + printer().formfeed(); + _codcom = codcom; + header_comune(codcom); + } + } + if (printer().rows_left()<3) printer().formfeed(); return TRUE; @@ -177,6 +210,13 @@ bool TStampaNonDom::set_print(int m) { _codsez = "**"; _codsot = "**"; + _codcom = "****"; + _tipostampa = _msk->get(F_TIPOSTAMPA); + TString80 chiave = ""; + if (_tipostampa == "01") + chiave = "90->CODSEZ|90->CODSOT|90->COGNOME|90->NOME"; + else + chiave = "90->DOM_CODCOM|90->COGNOME|90->NOME"; reset_files(); add_file(LF_SOGGETTI); filtra_sezioni(); @@ -219,6 +259,7 @@ bool TStampaNonDom::set_print(int m) if (catnses.not_empty() && catnses.ok()) _catnondon.add((const char*) catnses); current_cursor()->set_filterfunction (filter_func_nondom,TRUE); + ((TSorted_cursor*)current_cursor())->change_order(chiave); reset_print(); crea_intestazione(); return TRUE; @@ -253,7 +294,7 @@ bool TStampaNonDom::user_create() _rel->add("LCP", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCP); _rel->add(LF_COMUNI, "COM==DOM_CODCOM"); _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT"); - add_cursor(new TCursor(_rel, "", 3)); + add_cursor(new TSorted_cursor(_rel,"","",3)); _msk = new TMask("at6600a"); return TRUE; } diff --git a/at/at6600a.h b/at/at6600a.h index cb78a9e50..9a807179c 100755 --- a/at/at6600a.h +++ b/at/at6600a.h @@ -35,3 +35,5 @@ #define F_D_CATN5 310 #define F_CATN6 311 #define F_D_CATN6 312 + +#define F_TIPOSTAMPA 401 diff --git a/at/at6600a.uml b/at/at6600a.uml index 89d0f75a1..492ad03e2 100755 --- a/at/at6600a.uml +++ b/at/at6600a.uml @@ -14,7 +14,7 @@ END END -PAGE "Soggetti non domiciliati nel comune di sezione" -1 -1 78 20 +PAGE "Soggetti non domiciliati nel comune di sez." -1 -1 78 20 GROUPBOX DLG_NULL 77 4 BEGIN @@ -383,5 +383,13 @@ BEGIN FLAGS "D" END +RADIOBUTTON F_TIPOSTAMPA 50 +BEGIN + PROMPT 2 14 "Stampa suddivisa per " + ITEM "01|Sezione/Sottogruppo" + ITEM "02|Comune di domicilio" + FLAG "Z" +END + ENDPAGE ENDMASK