#include #include #include #include "ba6.h" #include "ba6200.h" class BA6200_application : public TPrintapp { TRelation* _rel; TMask* _msk; TParagraph_string * _descr_comune; int _cur1, _cur2; TString _provcom_msk, _com, _dencom, _provcom, _capcom; TString _codistat, _uffreg; int _uffiidd1, _uffiidd2, _uffiidd3, _uffiva1, _uffiva2, _uffiva3; int _uffconc, _uffcserv, _uffesprov, _uffescom, _terrmon; TDate _data_stampa; protected: virtual bool user_create() ; virtual bool user_destroy(); virtual bool set_print(int m); virtual bool preprocess_page (int,int); public: void crea_intestazione(); void setta_righe_descr(TParagraph_string*); BA6200_application(); }; bool BA6200_application::preprocess_page(int file, int counter) { static bool first = TRUE; reset_print(); if (counter) return TRUE; if (file == LF_COMUNI) { first = TRUE; _provcom = current_cursor()->curr(LF_COMUNI).get(COM_PROVCOM); if ((_provcom == _provcom_msk) || (_provcom_msk == "")) { _com = current_cursor()->curr(LF_COMUNI).get(COM_COM); _dencom = current_cursor()->curr(LF_COMUNI).get(COM_DENCOM); *_descr_comune = (const char*) _dencom; _capcom = current_cursor()->curr(LF_COMUNI).get(COM_CAPCOM); _codistat = current_cursor()->curr(LF_COMUNI).get(COM_CODISTAT); _uffiidd1 = current_cursor()->curr(LF_COMUNI).get_int(COM_UFFIIDD1); _uffiidd2 = current_cursor()->curr(LF_COMUNI).get_int(COM_UFFIIDD2); _uffiidd3 = current_cursor()->curr(LF_COMUNI).get_int(COM_UFFIIDD3); _uffiva1 = current_cursor()->curr(LF_COMUNI).get_int(COM_UFFIVA1); _uffiva2 = current_cursor()->curr(LF_COMUNI).get_int(COM_UFFIVA2); _uffiva3 = current_cursor()->curr(LF_COMUNI).get_int(COM_UFFIVA3); _uffreg = current_cursor()->curr(LF_COMUNI).get(COM_UFFREG); _uffconc = current_cursor()->curr(LF_COMUNI).get_int(COM_UFFCONC); _uffcserv = current_cursor()->curr(LF_COMUNI).get_int(COM_UFFCSERV); _uffesprov = current_cursor()->curr(LF_COMUNI).get_int(COM_UFFESPROV); _uffescom = current_cursor()->curr(LF_COMUNI).get_int(COM_UFFESCOM); _terrmon = current_cursor()->curr(LF_COMUNI).get_int(COM_TERRMON); setta_righe_descr(_descr_comune); set_row (1,"@0g%4s", (const char*) _com); set_row (1,"@33g%5s", (const char*) _provcom); set_row (1,"@39g%5s", (const char*) _capcom); set_row (1,"@46g%6s", (const char*) _codistat); if (_terrmon != 0) set_row (1,"@56g%2s", _terrmon == 1 ? "M" : "PM"); if (_uffiidd1 != 0) set_row (1,"@65g%03d", _uffiidd1); if (_uffiidd2 != 0) set_row (1,"@69g%03d", _uffiidd2); if (_uffiidd3 != 0) set_row (1,"@73g%03d", _uffiidd3); if (_uffiva1 != 0) set_row (1,"@78g%03d", _uffiva1); if (_uffiva2 != 0) set_row (1,"@82g%03d", _uffiva2); if (_uffiva3 != 0) set_row (1,"@86g%03d", _uffiva3); if (_uffreg.not_empty()) set_row (1,"@92g%3s", (const char*) _uffreg); if (_uffconc != 0) set_row (1,"@98g%03d", _uffconc); if (_uffcserv != 0) set_row (1,"@104g%03d", _uffcserv); if (_uffesprov != 0) set_row (1,"@110g%03d", _uffesprov); if (_uffescom != 0) set_row (1,"@114g%03d", _uffescom); return TRUE; } else return FALSE; } return TRUE; } void BA6200_application::setta_righe_descr(TParagraph_string* str) { const char* r; int i = 1; while ((r = str->get()) != NULL) { set_row (i,"@7g%s", r); i++; } } BA6200_application::BA6200_application() { } bool BA6200_application::set_print(int) { KEY tasto; TString statoini,statofine,codiceini,codicefine,denomini,denomfine; tasto = _msk->run(); if (tasto == K_ENTER) { _data_stampa = _msk->get (F_DATA); int scelta = _msk->get_int (F_SCELTA); _provcom_msk = _msk->get (F_PROVCOM); reset_files(); add_file(LF_COMUNI); if (scelta == 1) { statoini = _msk->get(F_STATOINI); codiceini = _msk->get(F_CODICEINI); statofine = _msk->get(F_STATOFINE); codicefine = _msk->get(F_CODICEFINE); select_cursor(_cur1); TLocalisamfile& fl = current_cursor()->file(LF_COMUNI); TRectype da (fl.curr()); TRectype a (fl.curr()); da.zero(); a.zero(); da.put(COM_STATO,statoini); da.put(COM_COM ,codiceini); a.put(COM_STATO,statofine); a.put(COM_COM ,codicefine); current_cursor()->setregion(da, a); } else if (scelta == 2) { denomini = _msk->get(F_NOMEINI); denomfine = _msk->get(F_NOMEFINE); select_cursor(_cur2); TLocalisamfile& fl = current_cursor()->file(LF_COMUNI); TRectype da (fl.curr()); TRectype a (fl.curr()); da.zero(); a.zero(); da.put(COM_DENCOM, denomini); a.put (COM_DENCOM, denomfine); current_cursor()->setregion(da, a); } //set_print_zero(); crea_intestazione(); return TRUE; } else return FALSE; } void BA6200_application::crea_intestazione() { TString sep(132); TString data_stampa; reset_header(); sep.fill('-'); set_header (1, (const char *) sep); sep = ""; sep << FR("Pag. @#"); sep.right_just(132); set_header (2,(const char*) sep); set_header (2, FR("@0gARCHIVIO COMUNI@91gSTUDIO@104gDATA")); data_stampa = _data_stampa.string(); set_header (2,"@109g%10s", (const char*) data_stampa); sep = ""; sep.fill('-'); set_header (3, (const char *) sep); set_header(5, FR("@0gCodice@7gDenominazione@33gProv.@40gCap@45gCd.Istat@54gMont.@60gUff.@67gII.DD.@80gI.V.A.@92gRegi.@98gConc.@104gServ.@110gEsatt.")); set_header (6, FR("@0g------@7g-------------------------@33g-----@39g-----")); set_header (6, FR("@45g--------@54g-----@65g-----------")); set_header (6, FR("@78g------------@92g-----@98g-----@104g-----@110g-------")); } bool BA6200_application::user_create() { open_files(LF_COMUNI, 0); _rel = new TRelation (LF_COMUNI); _cur1 = add_cursor(new TCursor(_rel,"",1)); _cur2 = add_cursor(new TCursor(_rel,"",2)); _descr_comune = new TParagraph_string ("",25); _msk = new TMask("ba6200a"); return TRUE; } bool BA6200_application::user_destroy() { delete _msk; delete _rel; delete _descr_comune; return TRUE; } int ba6200(int argc, char* argv[]) { BA6200_application a; a.run(argc, argv, TR("Stampa Comuni")); return 0; }