1996-09-19 10:09:03 +00:00
|
|
|
#include <config.h>
|
|
|
|
#include <printer.h>
|
|
|
|
#include <relapp.h>
|
|
|
|
|
|
|
|
#include "batbreg.h"
|
|
|
|
#include "tabreg.h"
|
1996-10-08 13:26:54 +00:00
|
|
|
#include "ba5200a.h"
|
1996-09-19 10:09:03 +00:00
|
|
|
|
|
|
|
#define REG_JOURNAL 5
|
|
|
|
|
|
|
|
class TRegister_app : public TRelation_application
|
|
|
|
{
|
|
|
|
TMask *_msk;
|
|
|
|
TRelation *_rel;
|
|
|
|
long _oldditta;
|
|
|
|
int _oldanno;
|
|
|
|
bool _exist_journal;
|
|
|
|
bool _stampa_intest;
|
|
|
|
|
|
|
|
protected: // TRelation_application
|
|
|
|
virtual TMask* get_mask(int) { return _msk;}
|
|
|
|
virtual TRelation* get_relation() const { return _rel;}
|
|
|
|
virtual bool changing_mask(int) { return FALSE; }
|
|
|
|
virtual bool user_create() ;
|
|
|
|
virtual bool user_destroy();
|
|
|
|
virtual void init_insert_mode(TMask& m) ;
|
|
|
|
virtual void init_modify_mode(TMask& m);
|
|
|
|
virtual int rewrite(const TMask& m);
|
|
|
|
|
1996-10-08 13:26:54 +00:00
|
|
|
static bool codsp_handler(TMask_field& f, KEY k);
|
|
|
|
|
1996-09-19 10:09:03 +00:00
|
|
|
public:
|
|
|
|
bool exist_journal() {return _exist_journal;}
|
|
|
|
|
|
|
|
TRegister_app() : _exist_journal(FALSE), _stampa_intest(FALSE) {}
|
|
|
|
virtual ~TRegister_app() {}
|
|
|
|
};
|
|
|
|
|
|
|
|
HIDDEN inline TRegister_app& app() { return (TRegister_app&) main_app();}
|
|
|
|
|
|
|
|
void TRegister_app::init_insert_mode(TMask& m)
|
|
|
|
{
|
|
|
|
const long ditta = get_firm();
|
|
|
|
const int anno = atoi(m.get(F_ANNO));
|
|
|
|
|
|
|
|
m.set(F_STAMPA_INTESTAZIONE, _stampa_intest ? "X" : "");
|
|
|
|
|
|
|
|
if (ditta != _oldditta || anno != _oldanno)
|
|
|
|
{
|
|
|
|
_oldditta = ditta;
|
|
|
|
_oldanno = anno;
|
|
|
|
|
|
|
|
TLocalisamfile tabreg(LF_TABREG);
|
|
|
|
|
|
|
|
tabreg.zero();
|
|
|
|
tabreg.put(DITTA, ditta);
|
|
|
|
tabreg.put(ANNO, anno);
|
|
|
|
|
|
|
|
TRectype to(tabreg.curr());
|
|
|
|
_exist_journal = FALSE;
|
|
|
|
|
|
|
|
for (tabreg.read(_isgteq); !_exist_journal && tabreg.good() && tabreg.curr() <= to; tabreg.next())
|
|
|
|
_exist_journal = (tabreg.get_long(TIPO) == REG_JOURNAL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TRegister_app::init_modify_mode(TMask& m)
|
|
|
|
{
|
|
|
|
TRelation_application::init_modify_mode(m);
|
|
|
|
TString16 config;
|
|
|
|
config.format("REG%05ld", m.get_long(F_CODDITTA));
|
|
|
|
config << m.get(F_CODICE);
|
|
|
|
TConfig ini(CONFIG_STAMPE, config);
|
|
|
|
const int what = ini.get_int("Type", NULL, -1, -1);
|
|
|
|
m.set(F_CONFIG, what >= 0 ? "X" : "");
|
|
|
|
m.enable(F_CONFIG, what >= 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
HIDDEN bool tiporeg_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if ((k == K_TAB || k == K_ENTER) && app().exist_journal() &&
|
|
|
|
(atoi(f.get()) == REG_JOURNAL)
|
|
|
|
)
|
2002-12-20 17:08:30 +00:00
|
|
|
return f.error_box(TR("Non e' possibile avere due registri giornale nello stesso anno"));
|
1996-09-19 10:09:03 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
HIDDEN bool printer_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_SPACE)
|
|
|
|
{
|
|
|
|
TMask& m = f.mask();
|
|
|
|
if (!m.query_mode())
|
|
|
|
{
|
|
|
|
TString16 config;
|
|
|
|
config.format("REG%05ld", m.get_long(F_CODDITTA));
|
|
|
|
config << m.get(F_CODICE);
|
|
|
|
|
|
|
|
if (config.len() > 8) // REG+ANNO+CODICE di tre caratteri
|
|
|
|
{
|
|
|
|
TPrinter& p = printer();
|
|
|
|
p.set_printtype(normprinter); // Force configuration update
|
|
|
|
p.read_configuration(config);
|
|
|
|
if (p.set())
|
|
|
|
{
|
|
|
|
m.enable(F_CONFIG);
|
|
|
|
m.set(F_CONFIG, "X");
|
|
|
|
}
|
|
|
|
p.read_configuration();
|
|
|
|
}
|
|
|
|
else
|
2002-12-20 17:08:30 +00:00
|
|
|
return f.error_box(TR("Nessun registro selezionato"));
|
1996-09-19 10:09:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TRegister_app::user_create()
|
|
|
|
{
|
|
|
|
_msk = new TMask("ba5200a");
|
|
|
|
_rel = new TRelation(LF_TABREG);
|
|
|
|
|
|
|
|
_msk->set_handler(F_TIPO, tiporeg_handler);
|
|
|
|
_msk->set_handler(F_PRINTER, printer_handler);
|
1996-10-08 13:26:54 +00:00
|
|
|
_msk->set_handler(F_CODSPEC, codsp_handler);
|
1996-09-19 10:09:03 +00:00
|
|
|
|
|
|
|
TConfig st(CONFIG_STUDIO, "cg");
|
|
|
|
_stampa_intest = st.get_bool("StiReg");
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TRegister_app::user_destroy()
|
|
|
|
{
|
|
|
|
delete _msk ;
|
|
|
|
delete _rel ;
|
|
|
|
return TRUE ;
|
|
|
|
}
|
|
|
|
|
|
|
|
int TRegister_app::rewrite(const TMask& m)
|
|
|
|
{
|
|
|
|
if (!m.get_bool(F_CONFIG))
|
|
|
|
{
|
|
|
|
TString16 config;
|
|
|
|
config.format("REG%05ld", m.get_long(F_CODDITTA));
|
|
|
|
config << m.get(F_CODICE);
|
|
|
|
TConfig ini(CONFIG_STAMPE, config);
|
|
|
|
const int what = ini.get_int("Type", NULL, -1, -1);
|
|
|
|
if (what >= 0)
|
|
|
|
ini.set("Type", -1);
|
|
|
|
}
|
|
|
|
|
|
|
|
return TRelation_application::rewrite(m);
|
|
|
|
}
|
|
|
|
|
1996-10-08 13:26:54 +00:00
|
|
|
bool TRegister_app::codsp_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
TMask & m = f.mask();
|
|
|
|
if (f.to_check(k) || !m.is_running())
|
|
|
|
{
|
|
|
|
TString16 codsp(f.get());
|
|
|
|
const int len = codsp.len();
|
|
|
|
if (len == 1 || len == 3)
|
|
|
|
{
|
|
|
|
codsp.insert(" ");
|
|
|
|
f.set(codsp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1996-09-19 10:09:03 +00:00
|
|
|
int ba5200(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
TRegister_app a ;
|
2002-12-20 17:08:30 +00:00
|
|
|
a.run(argc, argv, TR("Gestione registri"));
|
1996-09-19 10:09:03 +00:00
|
|
|
return 0;
|
|
|
|
}
|