campo-sirio/cg/cg6802.cpp
nik 318b0d683e Invio Ricezione nuova
git-svn-id: svn://10.65.10.50/trunk@1991 c028cbd2-c16b-5b4b-a496-9718f37d4682
1995-10-24 10:08:37 +00:00

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_SAVE :
{
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 = 256;
_tras_file.write_control_rec(_control_rec, size);
}
bool TAnn_mov::menu(MENU_TAG m)
{
if (m == BAR_ITEM(1))
return set();
return FALSE;
}