bd2e5486f7
git-svn-id: svn://10.65.10.50/trunk@2516 c028cbd2-c16b-5b4b-a496-9718f37d4682
381 lines
8.3 KiB
C++
Executable File
381 lines
8.3 KiB
C++
Executable File
#include "cglib04.h"
|
|
#include "cg6802.h"
|
|
|
|
bool TAnn_mov::create()
|
|
{
|
|
TApplication::create();
|
|
|
|
_pcon = new TLocalisamfile (LF_PCON);
|
|
_clifo = new TLocalisamfile (LF_CLIFO);
|
|
_mov = new TLocalisamfile (LF_MOV);
|
|
_rmov = new TLocalisamfile (LF_RMOV);
|
|
_rmoviva = new TLocalisamfile (LF_RMOVIVA);
|
|
|
|
_rec_mov = new TRectype (LF_MOV);
|
|
|
|
_registra = FALSE;
|
|
|
|
dispatch_e_menu (BAR_ITEM(1));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TAnn_mov::destroy()
|
|
{
|
|
delete _pcon;
|
|
delete _clifo;
|
|
delete _mov;
|
|
delete _rmov;
|
|
delete _rmoviva;
|
|
|
|
delete _rec_mov;
|
|
|
|
return TApplication::destroy();
|
|
}
|
|
|
|
void TAnn_mov::apri_temp_file()
|
|
{
|
|
TString80 tmpmov = "%";
|
|
tmpmov << get_firm_dir();
|
|
tmpmov << "\\" << TEMP_MOV;
|
|
TString80 tmprmov = "%";
|
|
tmprmov << get_firm_dir();
|
|
tmprmov << "\\" << TEMP_RMOV;
|
|
TString80 tmprmoviva = "%";
|
|
tmprmoviva << get_firm_dir();
|
|
tmprmoviva << "\\" << TEMP_RMOVIVA;
|
|
|
|
_tmov = new TIsamtempfile(LF_MOV, tmpmov, 0);
|
|
_trmov = new TIsamtempfile(LF_RMOV, tmprmov, 0);
|
|
|
|
_is_exist = FALSE;
|
|
TString tmp = tmprmoviva.mid(1);
|
|
tmp << ".dbf";
|
|
if (fexist(tmp))
|
|
{
|
|
_tiva = new TIsamtempfile(LF_RMOVIVA, tmprmoviva, 0);
|
|
_is_exist = TRUE;
|
|
}
|
|
}
|
|
|
|
void TAnn_mov::chiudi_tempfile()
|
|
{
|
|
delete _tmov;
|
|
delete _trmov;
|
|
if (_is_exist)
|
|
delete _tiva;
|
|
}
|
|
|
|
bool TAnn_mov::set()
|
|
{
|
|
_dittaric = get_firm();
|
|
|
|
if (!esegui_controlli()) return FALSE;
|
|
|
|
apri_temp_file();
|
|
|
|
if (!video())
|
|
{
|
|
if (_registra)
|
|
{
|
|
setta_parametri_record(" ","C");
|
|
chiudi_tempfile();
|
|
/*
|
|
TString80 tpmov = get_firm_dir();
|
|
tpmov << "\\" << TEMP_MOV;
|
|
TString80 tprmov = get_firm_dir();
|
|
tprmov << "\\" << TEMP_RMOV;
|
|
TString80 tprmoviva = get_firm_dir();
|
|
tprmoviva << "\\" << TEMP_RMOVIVA;
|
|
|
|
pack(TRUE,LF_MOV,tpmov);
|
|
pack(TRUE,LF_RMOV,tprmov);
|
|
pack(TRUE,LF_RMOVIVA,tprmoviva);*/
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
chiudi_tempfile();
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
bool TAnn_mov::video()
|
|
{
|
|
TMask msk ("cg6802a");
|
|
KEY tasto;
|
|
|
|
do
|
|
{
|
|
tasto = msk.run();
|
|
|
|
if (tasto != K_ENTER) return FALSE;
|
|
|
|
if (esiste_testata_mov(msk))
|
|
{
|
|
TMask mask ("cg6802b");
|
|
|
|
mask.set_handler(F_REGIVA, codice_registro_hnd);
|
|
mask.set_handler(F_CODCAUS, codice_causale_hnd);
|
|
|
|
setta_campi_maschera(mask);
|
|
|
|
tasto = mask.run();
|
|
|
|
switch (tasto)
|
|
{
|
|
case K_ESC :
|
|
break;
|
|
|
|
case K_QUIT :
|
|
break;
|
|
|
|
case K_DEL :
|
|
{
|
|
annulla(mask);
|
|
_registra = TRUE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
while (tasto != K_QUIT); //K_ENTER
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TAnn_mov::esiste_testata_mov(TMask& m)
|
|
{
|
|
_numreg = m.get_long(F_NUMREG);
|
|
|
|
_tmov->setkey(1);
|
|
_tmov->zero();
|
|
_tmov->put(MOV_NUMREG, _numreg);
|
|
|
|
if (_tmov->read() == NOERR)
|
|
*_rec_mov = _tmov->curr();
|
|
else
|
|
return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void TAnn_mov::setta_campi_maschera(TMask& m)
|
|
{
|
|
TDate datareg (_rec_mov->get_date(MOV_DATAREG));
|
|
TDate datadoc (_rec_mov->get_date(MOV_DATADOC));
|
|
TString numdoc = _rec_mov->get (MOV_NUMDOC);
|
|
TString regiva = _rec_mov->get (MOV_REG);
|
|
// regiva.trim();
|
|
long protiva = _rec_mov->get_long(MOV_PROTIVA);
|
|
TString codcaus = _rec_mov->get (MOV_CODCAUS);
|
|
|
|
m.set(F_NUMREG, _numreg);
|
|
m.set(F_DATAREG, datareg.string());
|
|
m.set(F_DATADOC, datadoc.string());
|
|
m.set(F_NUMDOC, numdoc);
|
|
m.set(F_REGIVA, regiva);
|
|
m.set(F_PROTIVA, protiva);
|
|
m.set(F_CODCAUS, codcaus);
|
|
|
|
m.disable(F_NUMREG);
|
|
m.disable(F_DATAREG);
|
|
m.disable(F_DATADOC);
|
|
m.disable(F_NUMDOC);
|
|
m.disable(F_REGIVA);
|
|
m.disable(F_PROTIVA);
|
|
m.disable(F_CODCAUS);
|
|
}
|
|
|
|
void TAnn_mov::annulla(TMask& m)
|
|
{
|
|
TRectype* rec_rmov,* rec_riva;
|
|
rec_rmov = new TRectype (LF_RMOV);
|
|
|
|
// Cancello la testata del movimento
|
|
|
|
long numreg = m.get_long(F_NUMREG);
|
|
|
|
_tmov->setkey(1);
|
|
_tmov->zero();
|
|
_tmov->put(MOV_NUMREG, numreg);
|
|
if (_tmov->read() == NOERR)
|
|
_tmov->remove();
|
|
|
|
// Cancello tutte le righe di Primanota
|
|
|
|
_trmov->setkey(1);
|
|
_trmov->zero();
|
|
_trmov->put(RMV_NUMREG, numreg);
|
|
*rec_rmov = _trmov->curr();
|
|
|
|
for (_trmov->read(); !_trmov->eof(); _trmov->next())
|
|
{
|
|
if (_trmov->curr() > *rec_rmov) break;
|
|
|
|
_trmov->remove();
|
|
}
|
|
|
|
delete rec_rmov;
|
|
|
|
// Cancello tutte le righe iva
|
|
|
|
rec_riva = new TRectype (LF_RMOVIVA);
|
|
|
|
_tiva->setkey(1);
|
|
_tiva->zero();
|
|
_tiva->put(RMI_NUMREG, numreg);
|
|
*rec_riva = _tiva->curr();
|
|
|
|
for (_tiva->read(); !_tiva->eof(); _tiva->next())
|
|
{
|
|
if (_tiva->curr() > *rec_riva) break;
|
|
|
|
_tiva->remove();
|
|
}
|
|
|
|
delete rec_riva;
|
|
}
|
|
|
|
bool TAnn_mov::leggi_trasfer()
|
|
{
|
|
_trasf = _tras_file.path(_dittaric);
|
|
_trasf << HEADER;
|
|
|
|
_tras_file.open(_trasf);
|
|
|
|
if (_tras_file.exist())
|
|
{
|
|
if (_tras_file.read_control_rec())
|
|
_control_rec = _tras_file.record();
|
|
else
|
|
return error_box("Rilevati gravi errori negli archivi:procedura interrotta");
|
|
}
|
|
else
|
|
return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TAnn_mov::codice_registro_hnd(TMask_field& f, KEY k)
|
|
{
|
|
TTable reg ("REG");
|
|
TString descr,dep;
|
|
|
|
if (k == K_TAB)
|
|
{
|
|
TString codreg = f.get();
|
|
TDate datareg (f.mask().get(F_DATAREG));
|
|
int anno = date2esc(datareg);
|
|
|
|
reg.zero();
|
|
reg.put("CODTAB", codreg);
|
|
if (reg.read() == NOERR)
|
|
{
|
|
descr = reg.get("S0");
|
|
f.mask().set(F_DESCRREG, descr);
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TAnn_mov::codice_causale_hnd(TMask_field& f, KEY k)
|
|
{
|
|
TLocalisamfile cau (LF_CAUSALI);
|
|
TString descr;
|
|
|
|
if (k == K_TAB)
|
|
{
|
|
TString codcau = f.get();
|
|
|
|
cau.setkey(1);
|
|
cau.zero();
|
|
cau.put("CODCAUS", codcau);
|
|
if (cau.read() == NOERR)
|
|
{
|
|
descr = cau.get("DESCR");
|
|
f.mask().set(F_DESCRCAU, descr);
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TAnn_mov::esegui_controlli()
|
|
{
|
|
TConfig conf(CONFIG_DITTA);
|
|
|
|
_std = conf.get("FlStTra");
|
|
|
|
if (!prefix().exist(_dittaric))
|
|
return error_box("Rilevati GRAVI ERRORI negli archivi: procedura interrotta");
|
|
|
|
if (!leggi_trasfer())
|
|
return FALSE;
|
|
|
|
if (!controlli())
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TAnn_mov::controlli()
|
|
{
|
|
TString16 chiave,sigla;
|
|
|
|
chiave = _control_rec.sub(241,256);
|
|
chiave.trim();
|
|
sigla = _control_rec.sub(240,241);
|
|
sigla.trim();
|
|
|
|
if (_std == "M" && sigla == "Z" && chiave != "")
|
|
return error_box("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato");
|
|
|
|
if (_std == "M" && sigla == "U")
|
|
return error_box("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato");
|
|
|
|
if (_std == "*")
|
|
{
|
|
warning_box("Trasferimento interamente completato: proseguire per cancellare il file");
|
|
_tras_file.remove_all();
|
|
setta_parametri_record(""," ");
|
|
return FALSE;
|
|
}
|
|
|
|
if (_std == "T")
|
|
return error_box("Variazione NON POSSIBILE: eseguire prima la ricezione delle tabelle");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void TAnn_mov::leggi_record_controllo()
|
|
{
|
|
_tras_file.read_control_rec();
|
|
_control_rec = _tras_file.record();
|
|
}
|
|
|
|
void TAnn_mov::setta_parametri_record(const TString& sigla,const TString& flag)
|
|
{
|
|
TConfig conf (CONFIG_DITTA);
|
|
|
|
conf.set("FlStTra", flag);
|
|
|
|
leggi_record_controllo();
|
|
_control_rec.overwrite(sigla,240);
|
|
|
|
const int size = 1024;
|
|
|
|
_tras_file.write_control_rec(_control_rec, size);
|
|
}
|
|
|
|
bool TAnn_mov::menu(MENU_TAG m)
|
|
{
|
|
if (m == BAR_ITEM(1))
|
|
return set();
|
|
return FALSE;
|
|
}
|