campo-sirio/m770/771290.cpp
alex 96f33c01ee Patch level : 4.0 979
Files correlati     : ve6.exe
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.1 patch 979


git-svn-id: svn://10.65.10.50/trunk@15623 c028cbd2-c16b-5b4b-a496-9718f37d4682
2007-09-17 15:33:04 +00:00

325 lines
7.3 KiB
C++
Executable File

// 771290.cpp - Quadro H
#include <execp.h>
#include <relapp.h>
#include <tabutil.h>
#include "771290.h"
#include "771295.h"
#include "77lib.h"
#include "774200.h"
#include <nditte.h>
class TQuadro_H_app : public TRelation_application
{
TRelation * _rel;
TMask * _msk;
TRiporti _rip;
int _mode; // Modo maschera corrente
long _codditta;
int _anno;
TString _ente;
bool _registra;
protected:
virtual bool user_create();
virtual bool user_destroy();
virtual int rewrite(const TMask& m);
virtual int write (const TMask& m);
virtual bool remove();
virtual TRelation* get_relation() const { return _rel; }
virtual TMask* get_mask(int mode);
virtual bool changing_mask(int mode) {return FALSE; }
// void init_mask(TMask&);
virtual void init_query_mode(TMask&);
virtual void init_modify_mode(TMask&);
virtual void init_insert_mode(TMask&);
virtual void init_query_insert_mode(TMask&);
virtual void on_config_change();
public:
bool almeno_un_dettaglio(TMask&);
void refresh(TMask& m);
static bool generazione (TMask_field& f , KEY k);
static bool dettaglio (TMask_field& f , KEY k);
static bool desc_ente (TMask_field& f , KEY k);
static bool codditta_hnd(TMask_field& f , KEY k);
TQuadro_H_app() {}
};
HIDDEN TQuadro_H_app& app() { return (TQuadro_H_app&) main_app(); }
bool TQuadro_H_app::codditta_hnd(TMask_field& f, KEY k)
{
if (k == K_TAB && !(f.mask().is_running()) )
{
TString16 codditta; codditta << get_firm_770();
if (codditta != "0")
{
f.set(codditta);
f.check();
}
}
return TRUE;
}
void TQuadro_H_app::refresh(TMask& m)
{
TEdit_field& datore = _msk->efield(F_DAT);
TEdit_field& lavora = _msk->efield(F_LAV);
//datore.check();
//lavora.check();
datore.autoload(*_rel);
lavora.autoload(*_rel);
if (almeno_un_dettaglio(m))
m.enable (F_BTG_GENERA);
else
m.disable(F_BTG_GENERA);
m.enable (F_BTG_DETTAGLIO);
}
bool TQuadro_H_app::generazione(TMask_field& f , KEY k)
{
if (k == K_SPACE)
{
TString appname = "775 -1";
TToken_string body;
body.add(app()._codditta);
body.add(app()._anno);
body.add(app()._ente);
TMessage msg (appname,"",(const char*) body);
TMailbox mb;
mb.send(msg);
TLocalisamfile& quaH = app().get_relation()->lfile();
quaH.setkey(1);
quaH.zero();
quaH.put("CODDITTA", app()._codditta);
quaH.put("H1ANNO", app()._anno);
quaH.put("H1ENTE", app()._ente);
quaH.read(_isequal,_unlock);
TExternal_app a(appname);
a.run();
quaH.read(_iscurr,_lock);
f.mask().set_focus();
app().refresh(f.mask());
}
return TRUE;
}
bool TQuadro_H_app::dettaglio(TMask_field& f , KEY k)
{
if (k == K_SPACE)
{
TString appname = "771mod -4";
TToken_string body;
body << F_DATAVERS << "|";
body << F_ANNO << "=" << f.mask().get(F_H1ANNO) << "|";
body << F_CODDITTA << "=" << f.mask().get(F_CODDITTA) << "|";
body << F_ENTE << "=" << f.mask().get(F_ENTE);
TMessage msg (appname,MSG_FS,(const char*) body);
TMailbox mb;
mb.send(msg);
TLocalisamfile& quaH = app().get_relation()->lfile();
quaH.setkey(1);
quaH.zero();
quaH.put("CODDITTA", app()._codditta);
quaH.put("H1ANNO", app()._anno);
quaH.put("H1ENTE", app()._ente);
quaH.read(_isequal,_unlock);
TExternal_app a(appname);
a.run();
quaH.read(_iscurr,_lock);
f.mask().set_focus();
app().refresh(f.mask());
}
return TRUE;
}
bool TQuadro_H_app::desc_ente(TMask_field& f, KEY k)
{
if (k == K_TAB && f.to_check(k) && f.mask().is_running())
{
TTable ente ("%ENT");
TString descrizione;
TString codice = f.get();
ente.zero();
ente.put("CODTAB", codice);
if (ente.read() == NOERR)
{
descrizione = ente.get("S0");
f.mask().set(F_DESCENTE, descrizione);
}
else
{
descrizione = "";
f.mask().set(F_DESCENTE, descrizione);
return f.warning_box("Valore non presente in tabella Enti previdenziali");
}
}
return TRUE;
}
void TQuadro_H_app::on_config_change()
{
TConfig conf(CONFIG_STUDIO);
_anno = (int) conf.get_long(ANNO_SEL);
}
TMask* TQuadro_H_app::get_mask(int mode)
{
return _msk;
}
bool TQuadro_H_app::almeno_un_dettaglio(TMask& m)
{
TLocalisamfile dett (LF_DETH);
dett.setkey(1);
dett.zero();
dett.put("CODDITTA", _codditta);
dett.put("ANNO", _anno);
dett.put("ENTE", _ente);
for (dett.read();!dett.eof();dett.next())
{
long codditta = dett.get_long("CODDITTA");
int anno = dett.get_int ("ANNO");
TString ente = dett.get ("ENTE");
if (_codditta == codditta && _anno == anno && _ente == ente)
return TRUE;
}
return FALSE;
}
void TQuadro_H_app::init_insert_mode(TMask& m)
{
m.show(F_ENTE);
m.hide(F_ENTEBIS);
m.disable(F_BTG_GENERA);
m.disable(F_BTG_DETTAGLIO);
}
void TQuadro_H_app::init_query_mode(TMask& m)
{
on_config_change();
m.set(F_H1ANNO, _anno);
// m.field(F_H1ANNO).set_dirty(FALSE);
m.disable(F_BTG_GENERA);
m.disable(F_BTG_DETTAGLIO);
m.show(F_ENTE);
m.hide(F_ENTEBIS);
}
void TQuadro_H_app::init_query_insert_mode(TMask& m)
{
m.set(F_H1ANNO, _anno);
m.hide(F_ENTE);
m.show(F_ENTEBIS);
m.disable(F_BTG_GENERA);
m.disable(F_BTG_DETTAGLIO);
}
void TQuadro_H_app::init_modify_mode(TMask& m)
{
_codditta = m.get_long(F_CODDITTA);
_anno = m.get_int (F_H1ANNO);
_ente = m.get (F_ENTE);
if (almeno_un_dettaglio(m))
m.enable (F_BTG_GENERA);
else
m.disable(F_BTG_GENERA);
m.enable (F_BTG_DETTAGLIO);
m.show(F_ENTE);
m.hide(F_ENTEBIS);
}
int TQuadro_H_app::rewrite(const TMask& m)
{
m.autosave(*_rel);
_registra = TRUE;
return _rel->rewrite();
}
int TQuadro_H_app::write(const TMask& m)
{
m.autosave(*_rel);
_registra = TRUE;
return _rel->write();
}
bool TQuadro_H_app::remove()
{
_registra = TRUE;
return TRelation_application::remove();
}
bool TQuadro_H_app::user_create()
{
_rel = new TRelation (LF_QUAH);
_msk = new TMask("771290a");
set_search_field(F_H1ANNO);
_msk->set_handler (F_CODDITTA, codditta_hnd);
_msk->set_handler (F_BTG_GENERA, generazione);
_msk->set_handler (F_BTG_DETTAGLIO, dettaglio);
_msk->set_handler (F_ENTE, desc_ente);
_msk->set_handler (F_ENTEBIS, desc_ente);
_registra = FALSE;
return TRUE;
}
bool TQuadro_H_app::user_destroy()
{
if (_registra)
// 20.12.95 l'anno deve essere quello dei parametri
// _rip.set("H",_anno);
_rip.set("H");
delete _msk;
delete _rel;
return TRUE;
}
int m71290(int argc, char* argv[])
{
TQuadro_H_app a;
a.run(argc, argv, "Quadro H");
return 0;
}