campo-sirio/ba/ba6200.cpp

265 lines
6.7 KiB
C++
Raw Normal View History

#include <mask.h>
#include <printapp.h>
#include <comuni.h>
#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;
}