campo-sirio/m770/771233.cpp
villa 57c332a0d4 Repository m770
git-svn-id: svn://10.65.10.50/trunk@2996 c028cbd2-c16b-5b4b-a496-9718f37d4682
1996-06-17 08:46:44 +00:00

195 lines
4.5 KiB
C++
Executable File

// 771233.cpp - distinta quadro G
#include "771232.h"
#include "quadrogd.h"
#include "77qgd.h"
#define LF_QUAGD 101 // lffiles.h
inline TDistintaQuadroG& app() { return (TDistintaQuadroG&) main_app(); }
TDistintaQuadroG::TDistintaQuadroG(): _rel(NULL), _mode(0)
{
_title = "Distinta quadro G";
_quadro = "GD";
_file = LF_QUAGD;
}
// Ricerca e output dell'ultimo nprog del percipiente scelto
bool TDistintaQuadroG::setta_nprog(TMask_field& f)
{
long nprog = 0L;
const char tipoa = f.mask().get(F_TIPOA)[0];
const long codanagr = atol(f.get());
const long codditta = get_firm_770();
TLocalisamfile quagd(app()._file);
quagd.zero();
quagd.put(QGD_CODDITTA, codditta);
quagd.put(QGD_TIPOA, tipoa);
quagd.put(QGD_CODANAGR, codanagr);
TRectype rec(quagd.curr());
quagd.read();
if (quagd.curr() > rec)
{
f.mask().set(F_NPROG, nprog+1);
return TRUE;
}
for ( ; !quagd.eof(); quagd.next())
{
if (quagd.curr() > rec) break;
nprog = quagd.get_long("NPROG");
}
f.mask().set(F_NPROG, nprog+1);
return TRUE;
}
bool TDistintaQuadroG::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;
}
bool TDistintaQuadroG::codanagr_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
{
TString16 dummy(f.get());
if (dummy.not_empty())
setta_nprog(f);
}
return TRUE;
}
// Passa al modo inserimento/modifica.
bool TDistintaQuadroG::nprog_handler(TMask_field& f, KEY key)
{
if (!f.mask().is_running()) return TRUE;
if (key == K_TAB)
{
const int nprog = atoi(f.get());
if (nprog==0) return TRUE;
// entra in modo modifica (se il record che ha chiave specificata esiste gia') oppure
// inserimento (se trova che non esiste)
f.mask().stop_run(K_AUTO_ENTER);
}
return TRUE;
}
bool TDistintaQuadroG::scrivi_dati_per(TRectype& rec)
{
TLocalisamfile dati_per(LF_PERC);
const long codditta = rec.get_long("CODDITTA");
char tipoa = rec.get_char("TIPOA");
const long codanagr = rec.get_long("CODANAGR");
dati_per.zero();
dati_per.put("CODDITTA", codditta);
dati_per.put("TIPOA", tipoa);
dati_per.put("CODANAGR", codanagr);
const bool preesistente = (dati_per.read() == NOERR);
if (!preesistente)
{
dati_per.zero();
dati_per.put("CODDITTA", codditta);
dati_per.put("TIPOA", tipoa);
dati_per.put("CODANAGR", codanagr);
dati_per.write();
}
return preesistente;
}
int TDistintaQuadroG::rewrite(const TMask& m)
{
m.autosave(_rel);
const int err = _rel->rewrite();
scrivi_dati_per(_rel->curr());
_registra = TRUE;
return err;
}
int TDistintaQuadroG::write(const TMask& m)
{
m.autosave(_rel);
const int err = _rel->write();
scrivi_dati_per(_rel->curr());
_registra = TRUE;
return err;
}
bool TDistintaQuadroG::remove()
{
_registra = TRUE;
return TRelation_application::remove();
}
bool TDistintaQuadroG::user_create()
{
_msk = new TMask("77qgda");
_msk->set_handler(F_CODDITTA, codditta_hnd);
_msk->set_handler(F_NPROG, nprog_handler);
_msk->set_handler(F_CODANAGRCOM, codanagr_handler);
_msk->set_handler(F_CODANAGRPERC, codanagr_handler);
_rel = new TRelation(LF_QUAGD);
set_search_field(F_CODANAGRPERC);
_registra = FALSE;
return TRUE;
}
bool TDistintaQuadroG::user_destroy()
{
delete _msk;
delete _rel;
if (_registra)
_rip.set(_quadro);
return TRUE;
}
void TDistintaQuadroG::on_config_change()
{
TConfig conf(CONFIG_STUDIO);
_anno_dic = (int)conf.get_long(ANNO_SEL, NULL);
}
void TDistintaQuadroG::init_query_mode(TMask& m)
{
m.set(F_ANNODIC, _anno_dic);
// forza il ricalcolo dell'ultimo numero disponibile
TString16 dummy(m.get(F_NPROG));
if (dummy.not_empty())
setta_nprog(m.field(F_NPROG));
m.send_key(K_SHIFT+K_CTRL+'h', -1); // nasconde (hide) group 1 - Scelta ANAGR
m.send_key(K_SHIFT+K_CTRL+'s', -2); // abilita (show) group 2 - Ricerca su DATI PERC
}
void TDistintaQuadroG::init_query_insert_mode(TMask& m)
{
m.set(F_ANNODIC, _anno_dic);
m.send_key(K_SHIFT+K_CTRL+'h', -2); // group 2 Nasconde ricerca su PERC
m.send_key(K_SHIFT+K_CTRL+'s', -1); // group 1 Ricerca su ANAGR
}