campo-sirio/ba/ba3300.cpp
guy fdae1a4bdb ba0.cpp Aggiunta gestione programmi protetti da password
ba2100b.uml  Modificata maschera scelta profili
ba2100f.uml  Abilitato campo testo fisso nei campi
ba2200.cpp   Controllato meglio il cambio disco da parte dell'utente
ba2400.cpp   Aggiornato uso della funzione TForm::validate
ba3100.cpp   Corretta gestione annullamento configurazione stampa registri
ba3300.cpp   Aggiunta chiamata on_firm_change della classe madre
prassi.mnu   Aggiunto flag di protezione da password ad alcuni programmi


git-svn-id: svn://10.65.10.50/trunk@1612 c028cbd2-c16b-5b4b-a496-9718f37d4682
1995-07-19 09:42:25 +00:00

290 lines
7.6 KiB
C++
Executable File

#include <mask.h>
#include <printapp.h>
#include <relation.h>
#include <tabutil.h>
#include <progind.h>
#include <utility.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);
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;
}
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 .........");
if (_p != NULL)
{
delete _p;
_p = NULL;
}
}
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();
_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();
_p = new TProgind(_pag_fin - _pag_ini +1, "Preparazione stampa", FALSE, TRUE, 60);
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()
{
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;
}