2007-03-06 16:37:44 +00:00
|
|
|
// gestione files Contabilita' Analitica: CENTRI DI COSTO
|
|
|
|
#include <automask.h>
|
|
|
|
#include <execp.h>
|
|
|
|
#include <relapp.h>
|
2007-03-16 13:33:09 +00:00
|
|
|
#include <pconti.h>
|
|
|
|
#include <recarray.h>
|
2007-03-06 16:37:44 +00:00
|
|
|
|
|
|
|
#include "tc0800a.h"
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
//MASCHERA
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
class TTS_ricl_msk : public TAutomask
|
|
|
|
{
|
2007-03-16 13:33:09 +00:00
|
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
|
|
|
2007-03-06 16:37:44 +00:00
|
|
|
public:
|
|
|
|
TTS_ricl_msk() : TAutomask("tc0800a") {}
|
|
|
|
};
|
|
|
|
|
2007-03-16 13:33:09 +00:00
|
|
|
bool TTS_ricl_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
|
|
{
|
|
|
|
switch (o.dlg())
|
|
|
|
{
|
|
|
|
case F_CONTO:
|
|
|
|
{
|
|
|
|
TString16 key;
|
|
|
|
key.format("%d|%d", o.mask().get_int(F_GRUPPO), o.mask().get_int(F_CONTO));
|
|
|
|
const TRectype & rec = cache().get(LF_PCON, key);
|
|
|
|
const char tsottoc = rec.get_char(PCN_TMCF);
|
|
|
|
|
|
|
|
if (tsottoc <= ' ')
|
|
|
|
{
|
|
|
|
enable(F_SOTTOCONTO);
|
|
|
|
enable(F_DESC);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
disable(F_SOTTOCONTO);
|
|
|
|
disable(F_DESC);
|
|
|
|
reset(F_SOTTOCONTO);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
2007-03-06 16:37:44 +00:00
|
|
|
|
|
|
|
class TTSRiclass_application : public TRelation_application
|
|
|
|
|
|
|
|
// @author:(INTERNAL) Vari
|
|
|
|
// @access:(INTERNAL) Private Member
|
|
|
|
{
|
|
|
|
// @cmember:(INTERNAL) Maschera corrente dell'applicazione
|
|
|
|
TMask* _msk;
|
|
|
|
// @cmember:(INTERNAL) Relazione corrente dell'applicazione
|
|
|
|
TRelation* _rel;
|
|
|
|
// @cmember:(INTERNAL) valori iniziale dei gruppo conto sottoconto
|
|
|
|
int _gruppo;
|
|
|
|
int _conto;
|
|
|
|
long _sottoconto;
|
|
|
|
|
|
|
|
// @access Protected Member
|
|
|
|
protected:
|
|
|
|
virtual TMask* get_mask(int mode = MODE_QUERY) { CHECK(_msk, "Null mask"); return _msk; }
|
|
|
|
// @cmember Indica se la futura <mf Tab_application::get_mask> ritornera' una maschera diversa
|
|
|
|
// dalla corrente.
|
|
|
|
virtual bool changing_mask(int mode) { return false; }
|
|
|
|
// @cmember Ritorna la relazione da modificare
|
|
|
|
virtual TRelation* get_relation() const { CHECK(_rel, "Null relation"); return _rel; }
|
|
|
|
// @cmember Inizializza la maschera per il modo inserimento
|
|
|
|
virtual void init_insert_mode(TMask& m);
|
|
|
|
// @cmember Inizializza la maschera per il modo modifica
|
|
|
|
virtual void init_modify_mode(TMask& m);
|
|
|
|
// @cmember Inizializzazione dei dati dell'utente
|
|
|
|
virtual bool user_create() ;
|
|
|
|
// @cmember Distruzione dei dati dell'utente
|
|
|
|
virtual bool user_destroy() ;
|
|
|
|
// @cmember Chiama il programma di stampa
|
|
|
|
virtual void print();
|
|
|
|
// @cmember Riscrive sulla relazione i valori dalla maschera <p m>
|
|
|
|
virtual int rewrite(const TMask& m);
|
|
|
|
|
|
|
|
// @access Public Member
|
|
|
|
public:
|
|
|
|
// @cmember Costruttore
|
|
|
|
TTSRiclass_application() : _msk(NULL), _rel(NULL) { }
|
|
|
|
|
|
|
|
|
|
|
|
// @cmember Distruttore
|
|
|
|
virtual ~TTSRiclass_application() {}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
void TTSRiclass_application::print()
|
|
|
|
{
|
|
|
|
TFilename rep("tctsricl.rep");
|
|
|
|
TString cmd;
|
|
|
|
|
|
|
|
rep.custom_path();
|
|
|
|
cmd << "ba8 -4 "<< rep;
|
|
|
|
TExternal_app stampa(cmd);
|
|
|
|
stampa.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TTSRiclass_application::init_insert_mode(TMask& m)
|
|
|
|
{
|
|
|
|
TLocalisamfile ricl(LF_RICLPDC);
|
|
|
|
|
|
|
|
ricl.put("TIPORIC", m.get(F_COD));
|
|
|
|
TString codice(m.get(F_TSGRUPPO));
|
|
|
|
|
|
|
|
codice << m.get(F_TSCONTO);
|
|
|
|
codice << m.get(F_TSSOTTOCONTO);
|
|
|
|
ricl.put("CODICE", codice);
|
|
|
|
if (ricl.read(_isgteq) == NOERR && codice == ricl.get("CODICE"))
|
|
|
|
m.set(F_DESCRIZ, ricl.get("DESCRIZ"));
|
|
|
|
for (int i = m.fields() - 1; i >= 0; i--)
|
|
|
|
{
|
|
|
|
TMask_field& c = m.fld(i);
|
|
|
|
if (c.in_group(1) && c.is_edit())
|
|
|
|
{
|
|
|
|
TEdit_field& e = (TEdit_field&)c;
|
|
|
|
|
|
|
|
e.enable();
|
2007-03-30 13:51:17 +00:00
|
|
|
if (e.browse() != NULL)
|
2007-03-06 16:37:44 +00:00
|
|
|
e.enable_check();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TTSRiclass_application::init_modify_mode(TMask& m)
|
|
|
|
{
|
|
|
|
for (int i = m.fields() - 1; i >= 0; i--)
|
|
|
|
{
|
|
|
|
TMask_field& c = m.fld(i);
|
|
|
|
if (c.in_group(1) && c.is_edit())
|
|
|
|
{
|
|
|
|
TEdit_field& e = (TEdit_field&)c;
|
|
|
|
|
|
|
|
e.enable();
|
2007-03-30 13:51:17 +00:00
|
|
|
if (e.browse() != NULL)
|
2007-03-06 16:37:44 +00:00
|
|
|
e.enable_check();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_gruppo = m.get_int(F_GRUPPO);
|
|
|
|
_conto = m.get_int(F_CONTO);
|
|
|
|
_sottoconto = m.get_long(F_SOTTOCONTO);
|
|
|
|
}
|
|
|
|
|
|
|
|
int TTSRiclass_application::rewrite(const TMask& m)
|
|
|
|
{
|
2007-03-16 13:33:09 +00:00
|
|
|
int err = TRelation_application::rewrite(m);
|
2007-03-06 16:37:44 +00:00
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
if (err != NOERR)
|
|
|
|
err = TRelation_application::write(m);
|
|
|
|
|
|
|
|
TRelation & rel = *get_relation();
|
2007-03-06 16:37:44 +00:00
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
int gruppo = rel.lfile().get_int("GRUPPO");
|
|
|
|
int conto = rel.lfile().get_int("CONTO");
|
|
|
|
long sottoconto = rel.lfile().get_long("SOTTOCONTO");
|
|
|
|
|
|
|
|
if (err == NOERR && (gruppo != _gruppo || conto != _conto || sottoconto != _sottoconto))
|
|
|
|
{
|
2007-03-06 16:37:44 +00:00
|
|
|
rel.save_status();
|
|
|
|
rel.lfile().put("GRUPPO", _gruppo);
|
|
|
|
rel.lfile().put("CONTO", _conto);
|
|
|
|
rel.lfile().put("SOTTOCONTO", _sottoconto);
|
|
|
|
rel.remove();
|
|
|
|
rel.restore_status();
|
|
|
|
}
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TTSRiclass_application::user_create()
|
|
|
|
{
|
|
|
|
_rel = new TRelation(LF_RICLPDC);
|
|
|
|
_msk = new TTS_ricl_msk;
|
|
|
|
|
|
|
|
set_search_field(F_TSSOTTOCONTO);
|
2007-03-30 13:51:17 +00:00
|
|
|
|
|
|
|
TConfig config(CONFIG_DITTA);
|
|
|
|
const bool use_pcn = config.get_bool("TSUSECMPCN");
|
|
|
|
|
|
|
|
_msk->show(-10, use_pcn);
|
|
|
|
_msk->show(-20, !use_pcn);
|
2007-03-06 16:37:44 +00:00
|
|
|
|
|
|
|
TFilename rep("tctsricl.rep");
|
|
|
|
|
|
|
|
if (rep.custom_path())
|
|
|
|
enable_menu_item(M_FILE_PRINT);
|
|
|
|
|
|
|
|
TString title;
|
|
|
|
_msk->get_caption(title);
|
|
|
|
set_title(title);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
2007-03-06 16:37:44 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TTSRiclass_application::user_destroy()
|
|
|
|
{
|
|
|
|
if (_msk)
|
|
|
|
delete _msk;
|
|
|
|
if (_rel)
|
|
|
|
delete _rel;
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int tc0800(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
TTSRiclass_application a;
|
|
|
|
|
|
|
|
a.run(argc, argv, TR("Riclassificazione piano dei conto Team System"));
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|