cb6165f09b
2475 2521 2493 2494 2559 2558 2556 2495 2487 2491 2470 2461 2568 2492 2587 2457 2458 2459 2460 2574 2582 2525 2526 2524 2523 2522 2531 2530 2529 2528 2527 2534 2533 2536 2537 2538 2510 2515 2585 2539 2570 2555 2584 2503 2500 2499 2543 2547 2569 2472 ???? git-svn-id: svn://10.65.10.50/trunk@702 c028cbd2-c16b-5b4b-a496-9718f37d4682
381 lines
8.9 KiB
C++
Executable File
381 lines
8.9 KiB
C++
Executable File
#include <execp.h>
|
|
#include <files.h>
|
|
#include <mailbox.h>
|
|
#include <prefix.h>
|
|
#include <relapp.h>
|
|
#include <tabutil.h>
|
|
#include <utility.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_CODDITTAH 198
|
|
#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
|
|
|
|
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;
|
|
TLocalisamfile* _anag;
|
|
TLocalisamfile* _unloc;
|
|
TLocalisamfile* _attiv;
|
|
TLocalisamfile* _tabcom;
|
|
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) ;
|
|
void set_att_prev(const TMask& m);
|
|
|
|
public:
|
|
TDitte_application();
|
|
virtual TRelation* get_relation() const { return _rel;}
|
|
virtual int rewrite(const TMask& m);
|
|
virtual int write(const TMask& m);
|
|
virtual ~TDitte_application() {}
|
|
};
|
|
|
|
bool ba4300_handler(TMask& m, KEY k)
|
|
|
|
{
|
|
if (k != K_F5 && k != K_F6 && k != K_F7 && k != K_F8)
|
|
return TRUE;
|
|
if (m.mode() == MODE_MOD || m.mode() == MODE_INS)
|
|
{
|
|
TDitte_application& app = (TDitte_application&)main_app();
|
|
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_CODDITTAH;
|
|
}
|
|
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 (appname.not_empty())
|
|
{
|
|
TString body(16);
|
|
TLocalisamfile& d = app.get_relation()->lfile();
|
|
|
|
#if XVT_OS == XVT_OS_WIN
|
|
if (k != K_F8) appname.insert("a", 3);
|
|
#endif
|
|
if (fldbrowse)
|
|
body << fldbrowse << "|";
|
|
if (fld)
|
|
body << fld << "=" << m.get(FLD_GD1_CODDITTA) ;
|
|
if (fld1)
|
|
body << "|" << fld1 << "=" ;
|
|
if (fldbrowse || fld)
|
|
{
|
|
TMessage msg(cmd2name(appname), MSG_FS, (const char*) body);
|
|
|
|
TMailbox mb;
|
|
mb.send(msg);
|
|
}
|
|
d.setkey(1);
|
|
d.zero();
|
|
d.put("CODDITTA", m.get(FLD_GD1_CODDITTA));
|
|
d.read(_isequal, _unlock) ;
|
|
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);
|
|
d.read(_iscurr, _lock) ;
|
|
m.set_focus();
|
|
return FALSE;
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
TDitte_application::TDitte_application()
|
|
{}
|
|
|
|
|
|
bool TDitte_application::user_create() // initvar e arrmask
|
|
{
|
|
_msk = new TMask("ba4300a") ;
|
|
_msk->set_handler(ba4300_handler);
|
|
_rel = new TRelation(LF_NDITTE);
|
|
_anag = new TLocalisamfile(LF_ANAG);
|
|
_unloc = new TLocalisamfile(LF_UNLOC);
|
|
_attiv = new TLocalisamfile(LF_ATTIV);
|
|
_tabcom = new TLocalisamfile(LF_TABCOM);
|
|
set_search_field(FLD_GD1_CODDITTA);
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
bool TDitte_application::user_destroy() // releasev e arrmask
|
|
{
|
|
delete _msk;
|
|
delete _rel;
|
|
delete _anag;
|
|
delete _unloc;
|
|
delete _attiv;
|
|
delete _tabcom;
|
|
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)) ;
|
|
|
|
if (_oldattprev.not_empty())
|
|
{
|
|
_attiv->zero() ;
|
|
_attiv->put(CODDITTA, codditta) ;
|
|
_attiv->put(CODATT, _oldattprev);
|
|
if (_attiv->read() == NOERR)
|
|
{
|
|
_attiv->put("ATTPREV", FALSE);
|
|
if (_attiv->rewrite() != NOERR)
|
|
error_box("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() == NOERR;
|
|
if (!itwas)
|
|
{
|
|
_attiv->zero() ;
|
|
_attiv->put(CODDITTA, codditta) ;
|
|
_attiv->put(CODATT, attprev) ;
|
|
|
|
TTable tabatt = TTable(TABATT);
|
|
|
|
tabatt.zero();
|
|
tabatt.put(CODTAB, ditte.get(CODATTPREV)) ;
|
|
if (tabatt.read() == NOERR)
|
|
_attiv->put(DESCR, tabatt.get(S0)) ;
|
|
}
|
|
_attiv->put("ATTPREV", TRUE) ;
|
|
if (itwas)
|
|
{
|
|
if (_attiv->rewrite() != NOERR)
|
|
error_box("Non posso aggiornare l'attivita' prevalente : errore n. %d", _attiv->status());
|
|
}
|
|
else
|
|
{
|
|
if (_attiv->write() != NOERR)
|
|
error_box("Non posso creare l'attivita' prevalente : errore n. %d", _attiv->status());
|
|
}
|
|
}
|
|
|
|
int TDitte_application::write(const TMask& m)
|
|
{
|
|
m.autosave();
|
|
if (_rel->write() != NOERR)
|
|
return _rel->status();
|
|
|
|
TRectype& ditte=_rel->curr();
|
|
|
|
TString codditta(ditte.get(CODDITTA)) ;
|
|
|
|
set_att_prev(m);
|
|
|
|
_anag->zero() ;
|
|
_anag->put(TIPOA, ditte.get(TIPOA));
|
|
_anag->put(CODANAGR, ditte.get(CODANAGR));
|
|
_anag->read();
|
|
if (_anag->good())
|
|
{
|
|
_unloc->zero() ;
|
|
_unloc->put(CODDITTA, (const char*) codditta) ;
|
|
_unloc->put(CODULC, (int) 1) ;
|
|
TString s(_anag->get(COMRF));
|
|
if (s.empty())
|
|
{
|
|
_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));
|
|
}
|
|
else
|
|
{
|
|
_unloc->put(COMULC, (const char*) s);
|
|
_unloc->put(INDULC, _anag->get(INDRF));
|
|
_unloc->put(CIVULC, _anag->get(CIVRF));
|
|
_unloc->put(CAPULC, _anag->get(CAPRF));
|
|
_unloc->put(COMCCIAA, (const char*) s);
|
|
_unloc->put(COMTRIB, (const char*) s);
|
|
}
|
|
_unloc->write();
|
|
}
|
|
return NOERR;
|
|
}
|
|
|
|
int TDitte_application::rewrite(const TMask& m)
|
|
{
|
|
_rel->zero();
|
|
m.autosave();
|
|
if (_rel->rewrite() != NOERR)
|
|
return _rel->status();
|
|
set_att_prev(m);
|
|
return NOERR;
|
|
}
|
|
|
|
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 = "";
|
|
}
|
|
|
|
void TDitte_application::enable_reg(TMask& m)
|
|
|
|
{
|
|
const long codditta = m.get_long(FLD_GD1_CODDITTA);
|
|
|
|
m.enable(DLG_REG, codditta > 0 && prefhndl->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);
|
|
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, "Anagrafica Ditte");
|
|
return 0;
|
|
}
|
|
|