campo-sirio/tc/tc0800.cpp
alex c75d4c35f7 Patch level : 4.0 657
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.1 patch 855


git-svn-id: svn://10.65.10.50/trunk@15071 c028cbd2-c16b-5b4b-a496-9718f37d4682
2007-03-16 13:33:09 +00:00

235 lines
5.3 KiB
C++
Executable File

// gestione files Contabilita' Analitica: CENTRI DI COSTO
#include <automask.h>
#include <execp.h>
#include <relapp.h>
#include <pconti.h>
#include <recarray.h>
#include "tc0800a.h"
////////////////////////////////////////////////////////////////////////
//MASCHERA
////////////////////////////////////////////////////////////////////////
class TTS_ricl_msk : public TAutomask
{
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TTS_ricl_msk() : TAutomask("tc0800a") {}
};
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;
}
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:
virtual bool find(word key = 0);
// @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();
}
bool TTSRiclass_application::find(word k)
{
bool ok = TRelation_application::find(k);
if (!ok && k < 2)
{
file().setkey(1);
file().zero();
for (TEditable_field* e = get_mask()->get_key_field(1, true); e; e = get_mask()->get_key_field(1, false))
{
if (e->shown() || e->ghost()) // Ignora campi invisibili non ghost
e->autosave(*get_relation());
}
TRectype rec(file().curr());
ok = file().read(_isgteq) == NOERR && file().curr() == rec;
}
return ok;
}
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();
if (e.browse() != NULL && !e.browse()->cursor()->file().empty())
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();
if (e.browse() != NULL && !e.browse()->cursor()->file().empty())
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)
{
int err = TRelation_application::rewrite(m);
if (err == NOERR)
{
TRelation & rel = *get_relation();
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);
TFilename rep("tctsricl.rep");
if (rep.custom_path())
enable_menu_item(M_FILE_PRINT);
TString title;
_msk->get_caption(title);
set_title(title);
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;
}