f565fc1dc8
Files correlati : Quelli delle patch 1.7 Ricompilazione Demo : [ ] Commento : Riportata la versione 1.7 A.G.A. e Partners alla patch 530 git-svn-id: svn://10.65.10.50/trunk@11331 c028cbd2-c16b-5b4b-a496-9718f37d4682
409 lines
9.8 KiB
C++
Executable File
409 lines
9.8 KiB
C++
Executable File
#include <execp.h>
|
||
#include <golem.h>
|
||
#include <mailbox.h>
|
||
#include <prefix.h>
|
||
#include <recarray.h>
|
||
#include <relapp.h>
|
||
#include <tabutil.h>
|
||
#include <modaut.h>
|
||
#include <defmask.h>
|
||
|
||
#include "ba4.h"
|
||
#include "ba4300.h"
|
||
|
||
#define FLD_UL1_CODDITTA 133
|
||
#define FLD_UL1_CODDITTA_NDITTE_RAGSOC 100
|
||
#define FLD_AT1_CODDITTA 102
|
||
#define FLD_AT1_CODATTH 199
|
||
#define FLD_AT1_PROGD_NDITTE_RAGSOC 105
|
||
#define FLD_SC1_CODDITTA 143
|
||
#define FLD_SC1_CODANAGRSOH 147
|
||
#define FLD_SC1_CODDITTA_NDITTE_RAGSOC 144
|
||
#define FLD_UL1_CODULC 125
|
||
#define F_CODDITTA 142
|
||
#define F_ANNO 132
|
||
|
||
const char* CODDITTA = "CODDITTA";
|
||
const char* CODATTPREV = "CODATTPREV";
|
||
const char* TIPOA = "TIPOA";
|
||
const char* CODANAGR = "CODANAGR";
|
||
|
||
const char* CODATT = "CODATT";
|
||
|
||
const char* COMRF = "COMRF";
|
||
const char* INDRF = "INDRF";
|
||
const char* CIVRF = "CIVRF";
|
||
const char* CAPRF = "CAPRF";
|
||
const char* COMRES = "COMRES";
|
||
const char* INDRES = "INDRES";
|
||
const char* CIVRES = "CIVRES";
|
||
const char* CAPRES = "CAPRES";
|
||
|
||
const char* CODULC = "CODULC";
|
||
const char* COMULC = "COMULC";
|
||
const char* INDULC = "INDULC";
|
||
const char* CIVULC = "CIVULC";
|
||
const char* CAPULC = "CAPULC";
|
||
const char* COMCCIAA = "COMCCIAA";
|
||
const char* COMTRIB = "COMTRIB";
|
||
|
||
#define TABATT "%ais"
|
||
#define CODTAB "CODTAB"
|
||
#define S0 "S0"
|
||
#define DESCR "DESCR"
|
||
|
||
class TDitte_application : public TRelation_application
|
||
{
|
||
TMask* _msk;
|
||
TRelation *_rel;
|
||
TString16 _oldattprev;
|
||
|
||
protected:
|
||
bool user_create() ;
|
||
bool user_destroy() ;
|
||
virtual TMask* get_mask(int) { return _msk;}
|
||
virtual bool changing_mask(int) { return FALSE;}
|
||
virtual void init_query_mode(TMask& m) ;
|
||
virtual void init_insert_mode(TMask& m) ;
|
||
void enable_reg(TMask& m) ;
|
||
virtual void init_modify_mode(TMask& m) ;
|
||
virtual bool protected_record(TRectype& rec) { return prefix().exist(rec.get_long("CODDITTA")); }
|
||
void set_att_prev(const TMask& m);
|
||
|
||
// static bool fax_handler(TMask_field& f, KEY k);
|
||
static bool email_handler(TMask_field& f, KEY k);
|
||
|
||
public:
|
||
TDitte_application();
|
||
virtual TRelation* get_relation() const { return _rel;}
|
||
virtual int rewrite(const TMask& m);
|
||
virtual int write(const TMask& m);
|
||
virtual bool remove();
|
||
virtual ~TDitte_application() {}
|
||
};
|
||
|
||
bool ba4300_handler(TMask& m, KEY k)
|
||
|
||
{
|
||
TDitte_application& app = (TDitte_application&)main_app();
|
||
|
||
if (k == (K_SHIFT+K_F12) && m.mode() == MODE_MOD)
|
||
{
|
||
m.enable(FLD_GD1_TIPOA);
|
||
m.enable(FLD_GD1_CODANAGR);
|
||
m.enable(FLD_GD1_CODANAGR_ANAGR_RAGSOC);
|
||
return TRUE;
|
||
}
|
||
|
||
if (k == (K_SHIFT+K_F7) && m.mode() == MODE_MOD)
|
||
{
|
||
m.enable(FLD_GD1_VALUTA);
|
||
return TRUE;
|
||
}
|
||
if (k != K_F5 && k != K_F6 && k != K_F7 && k != K_F8 && k != K_F3)
|
||
return TRUE;
|
||
if (m.mode() == MODE_MOD || m.mode() == MODE_INS)
|
||
{
|
||
if (m.mode() == MODE_INS)
|
||
{
|
||
if (!m.check_fields()) return FALSE;
|
||
if (app.write(m) != NOERR) return TRUE;
|
||
m.stop_run(K_ESC);
|
||
}
|
||
TString appname;
|
||
int fld = 0, fld1 = 0, fldbrowse = 0;
|
||
|
||
if (k == K_F5)
|
||
{
|
||
appname = "ba4 -3";
|
||
fld = FLD_UL1_CODDITTA;
|
||
fld1 = FLD_UL1_CODDITTA_NDITTE_RAGSOC;
|
||
fldbrowse = FLD_UL1_CODULC;
|
||
}
|
||
if (k == K_F6)
|
||
{
|
||
appname = "ba4 -4";
|
||
fld = FLD_AT1_CODDITTA;
|
||
fld1 = FLD_AT1_PROGD_NDITTE_RAGSOC;
|
||
fldbrowse = FLD_AT1_CODATTH;
|
||
}
|
||
if (k == K_F7)
|
||
{
|
||
appname = "ba4 -5";
|
||
fld = FLD_SC1_CODDITTA;
|
||
fld1 = FLD_SC1_CODDITTA_NDITTE_RAGSOC;
|
||
fldbrowse = FLD_SC1_CODANAGRSOH;
|
||
}
|
||
if (k == K_F8) { appname = "ba3 -0 reg"; fld = 0;fldbrowse = 0;}
|
||
if (k == K_F3) { appname = "ba5 -1"; fld = F_CODDITTA;fldbrowse = F_ANNO;}
|
||
if (appname.not_empty())
|
||
{
|
||
TString body(16);
|
||
|
||
if (fldbrowse)
|
||
body << fldbrowse << "|";
|
||
if (fld)
|
||
body << fld << "=" << m.get(FLD_GD1_CODDITTA) ;
|
||
if (fld1)
|
||
body << "|" << fld1 << "=" ;
|
||
if (fldbrowse || fld)
|
||
{
|
||
TMessage msg(appname, MSG_FS, body);
|
||
|
||
TMailbox mb;
|
||
mb.send(msg);
|
||
}
|
||
TExternal_app a(appname);
|
||
const long oldditta = main_app().get_firm();
|
||
if (k == K_F8) main_app().set_firm(m.get_long(FLD_GD1_CODDITTA));
|
||
a.run();
|
||
if (k == K_F8) main_app().set_firm(oldditta);
|
||
m.set_focus();
|
||
return FALSE;
|
||
}
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
TDitte_application::TDitte_application() : _cespiti(FALSE)
|
||
|
||
{}
|
||
|
||
bool TDitte_application::email_handler(TMask_field& f, KEY k)
|
||
{
|
||
if (k == K_SPACE)
|
||
{
|
||
const TMask& m = f.mask();
|
||
TToken_string key;
|
||
key.add(m.get(FLD_GD1_TIPOA));
|
||
key.add(m.get(FLD_GD1_CODANAGR));
|
||
const TRectype& anag = cache().get(LF_ANAG, key);
|
||
TMail_message msg(anag.get("MAIL"));
|
||
msg.send();
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
bool TDitte_application::user_create() // initvar e arrmask
|
||
{
|
||
open_files(LF_NDITTE, LF_ANAG, LF_UNLOC, LF_ATTIV, LF_TABCOM, 0);
|
||
_rel = new TRelation(LF_NDITTE);
|
||
|
||
_cespiti = has_module(CEAUT);
|
||
|
||
_msk = new TMask("ba4300a") ;
|
||
_msk->set_handler(ba4300_handler);
|
||
_msk->set_handler(DLG_EMAIL, email_handler);
|
||
|
||
|
||
set_search_field(FLD_GD1_CODDITTA);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
bool TDitte_application::user_destroy() // releasev e arrmask
|
||
{
|
||
delete _msk;
|
||
delete _rel;
|
||
return TRUE;
|
||
}
|
||
|
||
void TDitte_application::set_att_prev(const TMask& m)
|
||
{
|
||
const TString16 attprev(m.get(FLD_GD1_CODATTPREV));
|
||
|
||
if (_oldattprev == attprev)
|
||
return;
|
||
|
||
TRectype& ditte=_rel->curr();
|
||
TString codditta(ditte.get(CODDITTA)) ;
|
||
TLocalisamfile attiv(LF_ATTIV);
|
||
|
||
if (_oldattprev.not_empty())
|
||
{
|
||
|
||
attiv.put(CODDITTA, codditta) ;
|
||
attiv.put(CODATT, _oldattprev);
|
||
if (attiv.read(_isequal, _lock) == NOERR)
|
||
{
|
||
attiv.put("ATTPREV", bool(FALSE));
|
||
if (attiv.rewrite() != NOERR)
|
||
error_box(FR("Non posso aggiornare l'attivita' prevalente precedente : errore n. %d"), attiv.status());
|
||
}
|
||
}
|
||
attiv.zero() ;
|
||
attiv.put(CODDITTA, codditta) ;
|
||
attiv.put(CODATT, attprev) ;
|
||
|
||
const bool itwas = attiv.read(_isequal, _lock) == NOERR;
|
||
if (!itwas)
|
||
{
|
||
attiv.zero() ;
|
||
attiv.put(CODDITTA, codditta) ;
|
||
attiv.put(CODATT, attprev) ;
|
||
|
||
const TRectype& tabatt = cache().get(TABATT, ditte.get(CODATTPREV));
|
||
attiv.put(DESCR, tabatt.get(S0)) ;
|
||
}
|
||
attiv.put("ATTPREV", bool(TRUE)) ;
|
||
if (itwas)
|
||
{
|
||
if (attiv.rewrite() != NOERR)
|
||
error_box(FR("Impossibile aggiornare l'attivita' prevalente : errore n. %d"), attiv.status());
|
||
}
|
||
else
|
||
{
|
||
if (attiv.write() != NOERR)
|
||
error_box(FR("Impossibile creare l'attivita' prevalente : errore n. %d"), attiv.status());
|
||
}
|
||
}
|
||
|
||
int TDitte_application::write(const TMask& m)
|
||
{
|
||
const int err = TRelation_application::write(m);
|
||
|
||
if (err == NOERR)
|
||
{
|
||
set_att_prev(m);
|
||
|
||
TLocalisamfile anag(LF_ANAG);
|
||
const TRectype& ditte = _rel->curr();
|
||
|
||
anag.zero() ;
|
||
anag.put(TIPOA, ditte.get(TIPOA));
|
||
anag.put(CODANAGR, ditte.get(CODANAGR));
|
||
if (anag.read() == NOERR)
|
||
{
|
||
TLocalisamfile unloc(LF_UNLOC);
|
||
unloc.put(CODDITTA, ditte.get(CODDITTA)) ;
|
||
unloc.put(CODULC, 1);
|
||
unloc.put(COMULC, anag.get(COMRES));
|
||
unloc.put(INDULC, anag.get(INDRES));
|
||
unloc.put(CIVULC, anag.get(CIVRES));
|
||
unloc.put(CAPULC, anag.get(CAPRES));
|
||
unloc.put(COMCCIAA, anag.get(COMRES));
|
||
unloc.put(COMTRIB, anag.get(COMRES));
|
||
unloc.write();
|
||
}
|
||
}
|
||
return err;
|
||
}
|
||
|
||
int TDitte_application::rewrite(const TMask& m)
|
||
{
|
||
const int err = TRelation_application::rewrite(m);
|
||
if (err == NOERR)
|
||
set_att_prev(m);
|
||
return err;
|
||
}
|
||
|
||
bool TDitte_application::remove()
|
||
{
|
||
// Removes all activities
|
||
const long firm = _msk->get_long(FLD_GD1_CODDITTA);
|
||
TLocalisamfile attiv(LF_ATTIV);
|
||
TRecfield att_firm(attiv.curr(),"CODDITTA");
|
||
|
||
att_firm = firm;
|
||
for (attiv.read(_isgteq); attiv.good() && firm == (long)att_firm; attiv.next())
|
||
attiv.remove();
|
||
// Removes firm
|
||
return TRelation_application::remove();
|
||
}
|
||
|
||
void TDitte_application::init_query_mode(TMask& m)
|
||
{
|
||
if (filtered())
|
||
{
|
||
m.show(FLD_GD1_CODDITTAH);
|
||
m.show(FLD_GD1_RAGSOCH);
|
||
m.hide(FLD_GD1_CODDITTA);
|
||
m.hide(FLD_GD1_RAGSOC);
|
||
}
|
||
else
|
||
{
|
||
m.show(FLD_GD1_CODDITTA);
|
||
m.show(FLD_GD1_RAGSOC);
|
||
m.hide(FLD_GD1_CODDITTAH);
|
||
m.hide(FLD_GD1_RAGSOCH);
|
||
}
|
||
init_insert_mode(m);
|
||
}
|
||
|
||
void TDitte_application::init_insert_mode(TMask& m)
|
||
{
|
||
if (!filtered())
|
||
{
|
||
m.enable(FLD_GD1_TIPOA);
|
||
m.enable(FLD_GD1_CODANAGR);
|
||
m.enable(FLD_GD1_CODANAGR_ANAGR_RAGSOC);
|
||
m.show(FLD_GD1_CODDITTA);
|
||
m.show(FLD_GD1_RAGSOC);
|
||
m.hide(FLD_GD1_CODDITTAH);
|
||
m.hide(FLD_GD1_RAGSOCH);
|
||
}
|
||
else
|
||
{
|
||
m.show(FLD_GD1_CODDITTAH);
|
||
m.show(FLD_GD1_RAGSOCH);
|
||
m.hide(FLD_GD1_CODDITTA);
|
||
m.hide(FLD_GD1_RAGSOC);
|
||
}
|
||
m.disable(DLG_ATT);
|
||
m.disable(DLG_ULC);
|
||
m.disable(DLG_SOC);
|
||
m.disable(DLG_REG);
|
||
_oldattprev = "";
|
||
|
||
// La valuta si decide gi<67> in creazione: la valuta della prima ditta memorizzata
|
||
TEdit_field& val = m.efield(FLD_GD1_VALUTA);
|
||
TLocalisamfile& ditte = get_relation()->lfile();
|
||
if (ditte.first() == NOERR)
|
||
{
|
||
val.set(ditte.get("VALUTA"));
|
||
val.disable();
|
||
}
|
||
else
|
||
val.enable();
|
||
}
|
||
|
||
void TDitte_application::enable_reg(TMask& m)
|
||
{
|
||
const long codditta = m.get_long(FLD_GD1_CODDITTA);
|
||
m.enable(DLG_REG, prefix().exist(codditta));
|
||
}
|
||
|
||
void TDitte_application::init_modify_mode(TMask& m)
|
||
{
|
||
m.disable(FLD_GD1_TIPOA);
|
||
m.disable(FLD_GD1_CODANAGR);
|
||
m.disable(FLD_GD1_CODANAGR_ANAGR_RAGSOC);
|
||
m.disable(FLD_GD1_VALUTA); // La valuta si decide solo in creazione
|
||
if (filtered())
|
||
{
|
||
m.show(FLD_GD1_CODDITTAH);
|
||
m.show(FLD_GD1_RAGSOCH);
|
||
m.hide(FLD_GD1_RAGSOC);
|
||
m.hide(FLD_GD1_CODDITTA);
|
||
}
|
||
else
|
||
{
|
||
m.show(FLD_GD1_CODDITTA);
|
||
m.show(FLD_GD1_RAGSOC);
|
||
m.hide(FLD_GD1_CODDITTAH);
|
||
m.hide(FLD_GD1_RAGSOCH);
|
||
}
|
||
m.enable(DLG_ATT);
|
||
m.enable(DLG_ULC);
|
||
m.enable(DLG_SOC);
|
||
enable_reg(m);
|
||
_oldattprev = m.get(FLD_GD1_CODATTPREV);
|
||
}
|
||
|
||
int ba4300(int argc, char* argv[])
|
||
{
|
||
TDitte_application a ;
|
||
a.run(argc, argv, TR("Anagrafica Ditte"));
|
||
return 0;
|
||
} |