campo-sirio/m770/771310.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

379 lines
9.9 KiB
C++
Executable File

// 771310.cpp - Modello 770 - Gestione quadro ST (ex-quadro L)
#include <execp.h>
#include <mask.h>
#include <relapp.h>
#include "771310.h"
#include "774100.h"
#include "774200.h"
#include "77lib.h"
#include "scperc.h"
#include "rver.h"
#include "rpag.h"
#include "quadrol.h"
class M71310_application : public TRelation_application
{
TRelation* _rel;
TMask* _msk;
TGenera* _app;
TConfig* _cnf;
int _anno;
bool _registra;
TRiporti _rip;
protected:
virtual bool user_create();
virtual bool user_destroy();
virtual TRelation* get_relation() const { return _rel; }
virtual TMask* get_mask(int mode) { return _msk; }
virtual bool changing_mask(int mode) {return FALSE; }
virtual void init_query_mode(TMask&);
virtual void init_modify_mode(TMask&);
virtual void init_insert_mode(TMask&);
virtual void on_config_change();
virtual int rewrite(const TMask& m);
virtual int write(const TMask& m);
virtual bool remove();
void build_note(const TMask& m);
void set_field_note(TMask& m);
bool changed_anno_dic(TMask& m);
real arrotonda(const TMask& m);
static bool generazione (TMask_field& f, KEY k);
static bool genera_para (TMask_field& f, KEY k);
static bool tipo (TMask_field& f, KEY k);
static bool luogo (TMask_field& f, KEY k);
static bool auto_premi (TMask_field& f, KEY k);
static bool mese (TMask_field& f, KEY k);
static bool anno (TMask_field& f, KEY k);
static bool cod_tributo (TMask_field& f, KEY k);
static bool codditta_hnd(TMask_field& f, KEY k);
static bool artbil_hnd(TMask_field& f, KEY k);
public:
M71310_application() {}
};
M71310_application& app() { return (M71310_application&) main_app(); }
bool M71310_application::generazione(TMask_field& f , KEY k)
{
if (k == K_SPACE)
{
app()._app->set(get_firm_770(), app()._cnf);
app()._registra = TRUE;
}
return TRUE;
}
bool M71310_application::genera_para(TMask_field& f , KEY k)
{
if (k == K_SPACE)
{
TString appname("776mod -4 d");
TExternal_app a(appname);
a.run();
f.mask().set_focus();
}
return TRUE;
}
bool M71310_application::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 M71310_application::mese(TMask_field& f , KEY k)
{
// is_running() serve per fare il controllo solo quando la maschera sta andando
// In questo modo tutti i K_TAB che ricevono i campi durante la costruzione della maschera
// vengono ignorati.
// Il K_TAB mi fa scattare il controllo quando lascio il campo
// Il K_ENTER mi serve per fare i controlli quando uso uno dei tasti della bottoniera
if (k == K_TAB || k == K_ENTER)
{
int mese = f.mask().get_int(F_QLMESEPAG);
if (mese == 0)
return f.error_box("Il mese di pagamento deve essere indicato obbligatoriamente");
}
return TRUE;
}
bool M71310_application::anno(TMask_field& f , KEY k)
{
// is_running() serve per fare il controllo solo quando la maschera sta andando
// In questo modo tutti i K_TAB che ricevono i campi durante la costruzione della maschera
// vengono ignorati.
// Il K_TAB mi fa scattare il controllo quando lascio il campo
// Il K_ENTER mi serve per fare i controlli quando uso uno dei tasti della bottoniera
if ((k == K_TAB && f.mask().is_running()) || k == K_ENTER)
{
int anno = f.mask().get_int(F_QLANNOPAG);
if (anno == 0)
return f.error_box("L'anno di pagamento deve essere indicato obbligatoriamente");
}
return TRUE;
}
bool M71310_application::cod_tributo(TMask_field& f , KEY k)
{
// is_running() serve per fare il controllo solo quando la maschera sta andando
// In questo modo tutti i K_TAB che ricevono i campi durante la costruzione della maschera
// vengono ignorati.
// Il K_TAB mi fa scattare il controllo quando lascio il campo
// Il K_ENTER mi serve per fare i controlli quando uso uno dei tasti della bottoniera
if ((k == K_TAB && f.mask().is_running()) || k == K_ENTER)
{
int tributo = f.mask().get_int(F_QLCODTRIB);
if (tributo == 0)
return f.error_box("Il codice tributo deve essere indicato obbligatoriamente");
}
return TRUE;
}
// "auto-premimento"
// Sia da F_ABI che da F_NUMERO
bool M71310_application::auto_premi(TMask_field& f, KEY k)
{
if (k == K_CTRL+K_TAB && f.mask().is_running())
{
f.set_dirty();
return TRUE;
}
// if (k == K_TAB && f.mask().is_running())
// f.mask().stop_run(K_AUTO_ENTER);
return TRUE;
}
bool M71310_application::tipo(TMask_field& f , KEY k)
{
if (k == K_SPACE)
{
TMask& m = f.mask();
TString16 tipo = m.get(F_QLTIPOVERS);
TString16 luogo = m.get(F_QLLUOVERS);
if (tipo.not_empty() && luogo.not_empty())
if (tipo == "D" && luogo == "T")
{
m.reset(-G_DISTINTA_TESORERIA);
m.disable(-G_DISTINTA_TESORERIA);
}
else
m.enable(-G_DISTINTA_TESORERIA);
}
return TRUE;
}
bool M71310_application::luogo(TMask_field& f , KEY k)
{
if (k == K_SPACE)
{
TMask& m = f.mask();
TString16 tipo = m.get(F_QLTIPOVERS);
TString16 luogo = m.get(F_QLLUOVERS);
if (tipo.not_empty())
if (tipo == "D" && luogo == "T")
{
m.reset(-G_DISTINTA_TESORERIA);
m.disable(-G_DISTINTA_TESORERIA);
}
else
m.enable(-G_DISTINTA_TESORERIA);
}
return TRUE;
}
// Tenta di mandare il focus al campo visibile invece che a quello
// nascosto
bool M71310_application::artbil_hnd(TMask_field& f , KEY k)
{
if (k == K_TAB)
{
TMask& m = f.mask();
const char tipo = m.get(F_QLTIPOVERS)[0];
const char luogo = m.get(F_QLLUOVERS)[0];
// Determina chi ha il focus in questo momento
TMask_field& fld = m.focus_field();
// Se il focus e' sull'ultimo campo prima di F_ABI
if (fld.dlg() == F_ARTBIL)
{
// WINDOW win;
// Determina chi ce lo dovrebbe avere dopo..
if (tipo == 'B')
{
TMask_field& fabi = m.field(F_ABI);
fabi.set_focus();
// win = m.field(F_ABI).win();
// m.set_focus_win(win, TRUE);
}
}
}
return TRUE;
}
void M71310_application::on_config_change()
{
TConfig conf(CONFIG_STUDIO);
_anno = (int) conf.get_long(ANNO_SEL);
}
// Determina se l'utente ha cambiato l'anno di dichiarazione
// impostato. Se si' non bisogna toccarlo
bool M71310_application::changed_anno_dic(TMask& m)
{
const int anno_corr = m.get_int(F_ANNODIC);
return anno_corr ? anno_corr != _anno : FALSE;
}
void M71310_application::init_insert_mode(TMask& m)
{
if (!changed_anno_dic(m))
m.set(F_ANNODIC, _anno);
m.disable(F_ANNODIC);
m.disable(F_GENERA);
}
void M71310_application::init_query_mode(TMask& m)
{
if (!changed_anno_dic(m))
m.set(F_ANNODIC, _anno);
m.enable(F_ANNODIC);
m.enable (F_GENERA);
}
void M71310_application::init_modify_mode(TMask& m)
{
if (!changed_anno_dic(m))
m.set(F_ANNODIC, _anno);
m.disable(F_ANNODIC);
set_field_note(m);
m.disable(F_GENERA);
}
void M71310_application::set_field_note(TMask& m)
{
const TString& note = _rel->lfile().get(QUL_QLNOTE);
for (int i = note.len()-1; i >= 0; i--) if (note[i] > ' ')
{
const short dlg = F_NOTEA + int(note[i] - 'A');
m.set(dlg, "X");
}
}
void M71310_application::build_note(const TMask& m)
{
int index = 0;
TString note; note.spaces(20);
for (short dlg = F_NOTEA; dlg <= F_NOTEZ; dlg++) if (m.id2pos(dlg) > 0)
{
if (!m.get(dlg).blank())
{
char letter = 'A' + dlg - F_NOTEA;
note[index] = letter;
}
index++;
}
_rel->lfile().put(QUL_QLNOTE, note);
}
// Arrotonda l'importo versato
real M71310_application::arrotonda(const TMask& m)
{
real rImpVers = m.get_real(F_QLRITVEREC);
real rImpArr = round_770(rImpVers);
return rImpArr;
}
int M71310_application::rewrite(const TMask& m)
{
_registra = TRUE;
build_note(m);
m.autosave(*_rel);
const real rImpVersArr = arrotonda(m);
_rel->lfile().put(QUL_QLRITVER, rImpVersArr);
return _rel->rewrite();
}
int M71310_application::write(const TMask& m)
{
_registra = TRUE;
build_note(m);
m.autosave(*_rel);
const real rImpVersArr = arrotonda(m);
_rel->lfile().put(QUL_QLRITVER, rImpVersArr);
return _rel->write();
}
bool M71310_application::remove()
{
_registra = TRUE;
return TRelation_application::remove();
}
bool M71310_application::user_create()
{
_cnf = new TConfig(CONFIG_STUDIO);
_rel = new TRelation (LF_QUAL);
_msk = new TMask("771310a");
_app = new TGenera('d');
_registra = FALSE;
set_search_field(F_QLANNOPAG);
_msk->set_handler(F_GENERA, generazione);
_msk->set_handler(F_PARAMETRI, genera_para);
_msk->set_handler(F_CODDITTA, codditta_hnd);
_msk->set_handler(F_QLTIPOVERS, tipo);
_msk->set_handler(F_QLLUOVERS,luogo);
_msk->set_handler(F_QLMESEPAG, mese);
_msk->set_handler(F_QLANNOPAG, anno);
_msk->set_handler(F_QLCODTRIB, cod_tributo);
_msk->set_handler(F_QLNUMERO, auto_premi);
_msk->set_handler(F_CCQUIETANZA, auto_premi);
_msk->set_handler(F_NPROG, auto_premi);
_msk->set_handler(F_ARTBIL, artbil_hnd);
return TRUE;
}
bool M71310_application::user_destroy()
{
if (_registra)
_rip.set("L");
delete _msk;
delete _rel;
delete _cnf;
delete _app;
return TRUE;
}
int m71310(int argc, char* argv[])
{
M71310_application a;
a.run(argc, argv, "Riepilogo ST");
return 0;
}