f0fe5af2e3
git-svn-id: svn://10.65.10.50/trunk@3751 c028cbd2-c16b-5b4b-a496-9718f37d4682
304 lines
7.9 KiB
C++
Executable File
304 lines
7.9 KiB
C++
Executable File
#include <mask.h>
|
|
#include <printapp.h>
|
|
#include <tabutil.h>
|
|
#include <progind.h>
|
|
|
|
#include "ba3.h"
|
|
#include "ba3300.h"
|
|
|
|
class BA3300_application : public TPrintapp
|
|
{
|
|
friend bool codice_handler(TMask_field& field, KEY key);
|
|
|
|
TMask* _msk;
|
|
TTable* _tab; // Tabella dei registri
|
|
TString _cod_reg, _comulc, _ragsoc, _indulc, _civulc, _capulc, _com, _prov, _cofi, _paiv;
|
|
TString80 _descr;
|
|
TProgind *_p;
|
|
long _codice_ditta, _agg;
|
|
long _num_pag, _pag_ini, _pag_fin;
|
|
int _cod_anno;
|
|
bool _inizia_dopo;
|
|
TLocalisamfile* _nditte;
|
|
TLocalisamfile* _anag;
|
|
TLocalisamfile* _unloc;
|
|
TLocalisamfile* _comuni;
|
|
|
|
protected:
|
|
|
|
bool menu (MENU_TAG m) { return TPrintapp::menu(m) ; }
|
|
virtual bool user_destroy();
|
|
virtual bool user_create() ;
|
|
virtual void on_firm_change();
|
|
bool set_print(int);
|
|
|
|
const char* decodifica_reg ();
|
|
|
|
virtual void set_page (int, int);
|
|
virtual print_action postprocess_page (int, int);
|
|
virtual bool preprocess_print(int, int);
|
|
virtual print_action postprocess_print(int, int);
|
|
|
|
public:
|
|
BA3300_application() : _p(NULL) {}
|
|
~BA3300_application() {}
|
|
};
|
|
|
|
print_action BA3300_application::postprocess_page(int, int counter)
|
|
{
|
|
if (counter == _num_pag - 1)
|
|
{
|
|
TString16 dep; dep.format("%04d%-3s", _cod_anno, (const char*)_cod_reg);
|
|
_tab->curr().put("CODTAB", (const char*)dep);
|
|
_tab->read();
|
|
if (_tab->good())
|
|
{
|
|
// _agg = _tab->curr().get_long("I2");
|
|
// _agg = _agg + _num_pag;
|
|
_tab->put("I2", _pag_fin);
|
|
_tab->rewrite();
|
|
}
|
|
return NEXT_PAGE;
|
|
}
|
|
|
|
return REPEAT_PAGE;
|
|
}
|
|
|
|
bool BA3300_application::preprocess_print(int, int)
|
|
{
|
|
_p = new TProgind(_pag_fin - _pag_ini +1, "Preparazione stampa", FALSE, TRUE, 60);
|
|
return TRUE;
|
|
}
|
|
|
|
print_action BA3300_application::postprocess_print(int, int)
|
|
{
|
|
if (_p != NULL)
|
|
{
|
|
delete _p;
|
|
_p = NULL;
|
|
}
|
|
return NEXT_PAGE;
|
|
}
|
|
|
|
void BA3300_application::set_page(int , int counter)
|
|
{
|
|
reset_print();
|
|
_p->addstatus(1);
|
|
|
|
long contatore = _pag_ini + counter;
|
|
|
|
if (_inizia_dopo) contatore--;
|
|
reset_row(1);
|
|
reset_row(2);
|
|
reset_row(3);
|
|
reset_row(4);
|
|
reset_row(5);
|
|
reset_row(6);
|
|
reset_row(7);
|
|
reset_row(8);
|
|
reset_row(9);
|
|
if (counter == 0)
|
|
{
|
|
if (!_inizia_dopo)
|
|
set_row(3, "@120gPag. %ld", contatore);
|
|
int pos = printer().formlen() / 2 - 3;
|
|
set_row (pos++, "@36g%-50s", (const char*) _descr);
|
|
set_row (pos++, "@36g%-50s", (const char*)_ragsoc);
|
|
TString s(_indulc);
|
|
|
|
s << " " << _civulc ;
|
|
set_row (pos++, "@36g%-52s", (const char*) s);
|
|
s = _capulc;
|
|
s << " " << _com << " " << _prov;
|
|
set_row (pos++, "@36g%-62s", (const char*) s);
|
|
set_row (pos++, "@36gCODICE FISCALE %-16s", (const char*)_cofi);
|
|
set_row (pos, "@36gPARTITA I.V.A. %-11s", (const char*)_paiv);
|
|
|
|
}
|
|
else if (counter == _num_pag - 1)
|
|
{
|
|
set_row (1, "@1g%-50s", (const char*) _ragsoc);
|
|
TString s(_indulc);
|
|
|
|
s << " " << _civulc << " " << _capulc << " " << _com << " " << _prov;
|
|
set_row (1, "@62g%-65s", (const char*) s);
|
|
set_row (2, "@1g%-50s", (const char*) _descr);
|
|
set_row (2, "@52gCODICE FISCALE %-16s", (const char*) _cofi);
|
|
set_row (2, "@85gPARTITA I.V.A. %-11s", (const char*) _paiv);
|
|
set_row (2, "@120gPag. %ld", contatore);
|
|
set_row (25, "@50gN. ........ DI REPERTORIO");
|
|
set_row (27, "@50gIL PRESENTE LIBRO DELLA@75g%-50s", (const char*) _ragsoc);
|
|
|
|
s = _indulc;
|
|
s << " " << _civulc;
|
|
set_row (29, "@50g%-52s", (const char*) s);
|
|
s = _capulc;
|
|
s << " " << _com << " " << _prov;
|
|
set_row (31, "@50g%-62s", (const char*) s);
|
|
set_row (33, "@50gCONSTA DI %ld PAGINE UTILI, BOLLATE E NUMERATE", _num_pag - (_inizia_dopo ? 1 : 0));
|
|
set_row (35, "@50gE VIENE OGGI VIDIMATO, il .........");
|
|
}
|
|
else
|
|
{
|
|
set_row (1, "@1g%-50s", (const char*) _ragsoc);
|
|
TString s(_indulc);
|
|
|
|
s << " " << _civulc << " " << _capulc << " " << _com << " " << _prov;
|
|
set_row (1, "@52g%-68s", (const char*) s);
|
|
set_row (2, "@1g%-50s", (const char*) _descr);
|
|
set_row (2, "@52gCODICE FISCALE %-16s", (const char*) _cofi);
|
|
set_row (2, "@85gPARTITA I.V.A. %-11s", (const char*) _paiv);
|
|
set_row (2, "@120gPag. %ld", contatore);
|
|
}
|
|
}
|
|
|
|
void BA3300_application::on_firm_change()
|
|
|
|
{
|
|
TPrintapp::on_firm_change();
|
|
|
|
if (_msk == NULL) return;
|
|
_msk->reset();
|
|
_nditte->setkey(1);
|
|
_codice_ditta = get_firm();
|
|
_nditte->curr().zero();
|
|
_nditte->curr().put(N_CODDITTA,_codice_ditta);
|
|
_nditte->read();
|
|
if (_nditte->bad())
|
|
return;
|
|
|
|
_msk->set(F_CODDITTA, _codice_ditta);
|
|
_ragsoc="SOCIETA' ";
|
|
_ragsoc << _nditte->curr().get(N_RAGSOC);
|
|
const TString16 tipoa =_nditte->curr().get(N_TIPOA);
|
|
const long codanagr =atol(_nditte->curr().get(N_CODANAGR));
|
|
_msk->set(F_RAGSOC,_ragsoc);
|
|
|
|
_unloc->setkey(1);
|
|
_unloc->curr().zero();
|
|
_unloc->curr().put(N_CODDITTA, _codice_ditta);
|
|
_unloc->curr().put(N_CODULC,"1");
|
|
_unloc->read();
|
|
_indulc=_unloc->curr().get(N_INDULC);
|
|
_msk->set(F_INDIRIZZO,_indulc);
|
|
_civulc=_unloc->curr().get(N_CIVULC);
|
|
_msk->set(F_CIV,_civulc);
|
|
_capulc=_unloc->curr().get(N_CAPULC);
|
|
_msk->set(F_CAP,_capulc);
|
|
_comulc=_unloc->curr().get(N_COMULC);
|
|
_msk->set(F_CODCOM,_comulc);
|
|
|
|
_comuni->setkey(1);
|
|
_comuni->curr().zero();
|
|
_comuni->curr().put(N_CODCOM,_comulc);
|
|
_comuni->read();
|
|
_com=_comuni->curr().get(N_COM);
|
|
_msk->set(F_COM,_com);
|
|
_prov=_comuni->curr().get(N_PROV);
|
|
_msk->set(F_PROV,_prov);
|
|
|
|
_anag->setkey(1);
|
|
_anag->curr().zero();
|
|
_anag->curr().put(N_TIPOA,tipoa);
|
|
_anag->curr().put(N_CODANAGR,codanagr);
|
|
_anag->read();
|
|
_cofi=_anag->curr().get(N_COFI);
|
|
_msk->set(F_COFI,_cofi);
|
|
_paiv=_anag->curr().get(N_PAIV);
|
|
_msk->set(F_PAIV,_paiv);
|
|
_msk->set(F_LUNG,66);
|
|
}
|
|
|
|
bool BA3300_application::set_print(int)
|
|
{
|
|
//on_firm_change();
|
|
if (_msk->run() == K_ENTER)
|
|
{
|
|
printer().formlen(_msk->get_int(F_LUNG));
|
|
_cod_reg = _msk->get(F_CODICE);
|
|
_cod_anno = _msk->get_int(F_ANNO);
|
|
_pag_ini = _msk->get_long(F_NPAGINI);
|
|
_pag_fin = _msk->get_long(F_NPAGFI);
|
|
_inizia_dopo = _msk->get_bool(F_PRIMO);
|
|
_num_pag = (_pag_fin - _pag_ini) + 1;
|
|
_ragsoc = _msk->get(F_RAGSOC);
|
|
_indulc= _msk->get(F_INDIRIZZO);
|
|
_civulc= _msk->get(F_CIV);
|
|
_capulc= _msk->get(F_CAP);
|
|
_comulc= _msk->get(F_CODCOM);
|
|
_com= _msk->get(F_COM);
|
|
_prov= _msk->get(F_PROV);
|
|
_paiv = _msk->get(F_PAIV);
|
|
_cofi = _msk->get(F_COFI);
|
|
_descr = decodifica_reg();
|
|
if (_inizia_dopo) _num_pag++;
|
|
enable_print_menu();
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
static bool codice_handler (TMask_field& field, KEY key)
|
|
{
|
|
if (key == K_TAB && field.focusdirty())
|
|
{
|
|
const TEdit_field& e = (const TEdit_field&)field;
|
|
// const TLocalisamfile& t = e.browse()->cursor()->file();
|
|
// const long num = t.get_long("I2");
|
|
field.mask().set(F_NPAGINI, 0L);
|
|
field.mask().set(F_NPAGFI, 0L);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
const char* BA3300_application::decodifica_reg ()
|
|
{
|
|
TString16 dep; dep.format("%04d%-3s", _cod_anno, (const char*)_cod_reg);
|
|
|
|
_tab->curr().put("CODTAB", (const char*)dep);
|
|
_tab->read();
|
|
if (_tab->bad()) _tab->curr().zero();
|
|
return _tab->curr().get ("S0");
|
|
}
|
|
|
|
bool BA3300_application::user_create()
|
|
{
|
|
_msk = NULL;
|
|
if (get_firm() == 0L)
|
|
if (!set_firm()) return FALSE;
|
|
|
|
enable_print_menu();
|
|
_nditte = new TLocalisamfile (LF_NDITTE);
|
|
_unloc = new TLocalisamfile (LF_UNLOC);
|
|
_comuni = new TLocalisamfile (LF_COMUNI);
|
|
_anag = new TLocalisamfile (LF_ANAG);
|
|
_tab = new TTable(TAB_REG);
|
|
|
|
_msk = new TMask ("ba3300a") ;
|
|
_msk->set_handler(F_CODICE, codice_handler);
|
|
|
|
add_cursor (NULL);
|
|
set_auto_ff (TRUE);
|
|
return TRUE;
|
|
}
|
|
|
|
bool BA3300_application::user_destroy() // releasev e arrmask
|
|
{
|
|
delete _msk;
|
|
delete _nditte;
|
|
delete _unloc;
|
|
delete _comuni;
|
|
delete _anag;
|
|
delete _tab;
|
|
if (_p != NULL) delete _p;
|
|
return TRUE;
|
|
}
|
|
|
|
int ba3300(int argc, char* argv[])
|
|
{
|
|
BA3300_application a;
|
|
a.run(argc, argv, "Stampa fogli libro bollato");
|
|
return 0;
|
|
}
|