Patch level : 10.0
Files correlati : ba1 Ricompilazione Demo : [ ] Commento : Corretta conversione archivi con particalre attenzione alla ricostruzione indici di panapdc e multirel che ahanno cambiato posizione dalla 3.2 alla 10.0 git-svn-id: svn://10.65.10.50/trunk@17857 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
cb69e4727a
commit
ed84d58a07
257
ba/ba1100.cpp
257
ba/ba1100.cpp
@ -12,6 +12,7 @@
|
||||
#include <urldefid.h>
|
||||
|
||||
#include <user.h>
|
||||
#include <nditte.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
@ -108,16 +109,14 @@ TManutenzione_app::TManutenzione_app() : _browse(NULL), _mask(NULL), _firm(0), _
|
||||
{
|
||||
if (!fexist(Dir_file)) // controlla l'esistenza dei direttori standard (dir.gen e trc.gen)
|
||||
{ // vengono creati se non esistono
|
||||
TDir d;
|
||||
FileDes* fd = d.filedesc();
|
||||
|
||||
strcpy(fd->SysName,"$dir.gen");
|
||||
fd->LenR =160;
|
||||
fd->EOD = fd->EOX = 1L;
|
||||
fd->Flags = 0;
|
||||
strcpy(fd->Des ,"Directory");
|
||||
strcpy(fd->FCalc,"0");
|
||||
strcpy(fd->GenPrompt,"");
|
||||
FileDes fd; memset(&fd, 0, sizeof(fd));
|
||||
strncpy(fd.SysName, "$dir.gen", sizeof(fd.SysName));
|
||||
strncpy(fd.Des, "Directory", sizeof(fd.Des));
|
||||
strncpy(fd.FCalc, "0", sizeof(fd.FCalc));
|
||||
strncpy(fd.GenPrompt,"", sizeof(fd.GenPrompt));
|
||||
fd.LenR =160;
|
||||
fd.EOD = fd.EOX = 1L;
|
||||
fd.Flags = 0;
|
||||
|
||||
#ifdef WIN32
|
||||
int handle = sopen(Dir_file, O_RDWR|O_BINARY|O_CREAT,SH_DENYNO,S_IREAD|S_IWRITE);
|
||||
@ -126,16 +125,17 @@ TManutenzione_app::TManutenzione_app() : _browse(NULL), _mask(NULL), _firm(0), _
|
||||
#endif
|
||||
if (handle != -1)
|
||||
{
|
||||
if (write( handle, fd, sizeof(FileDes)) == -1)
|
||||
if (write( handle, &fd, sizeof(FileDes)) == -1)
|
||||
fatal_box("Impossibile scrivere il file dir.gen per dati standard: errore %d",errno);
|
||||
close(handle);
|
||||
}
|
||||
else fatal_box("Impossibile creare il file dir.gen per dati standard: errore %d",errno);
|
||||
else
|
||||
fatal_box("Impossibile creare il file dir.gen per dati standard: errore %d",errno);
|
||||
}
|
||||
if (!fexist(Trc_file))
|
||||
{
|
||||
TTrec r;
|
||||
RecDes* rd = r.rec();
|
||||
RecDes& rd = r.rec();
|
||||
#ifdef WIN32
|
||||
int handle = sopen(Trc_file, O_RDWR|O_BINARY|O_CREAT,SH_DENYNO,S_IREAD|S_IWRITE);
|
||||
#else
|
||||
@ -143,11 +143,12 @@ TManutenzione_app::TManutenzione_app() : _browse(NULL), _mask(NULL), _firm(0), _
|
||||
#endif
|
||||
if (handle != -1)
|
||||
{
|
||||
if (write( handle, (char*)rd, sizeof(RecDes)) == -1)
|
||||
if (write( handle, (void*)&rd, sizeof(RecDes)) == -1)
|
||||
fatal_box("Impossibile scrivere il file trc.gen per dati standard: errore %d",errno);
|
||||
close(handle);
|
||||
}
|
||||
else fatal_box("Impossibile creare il file trc.gen per dati standard: errore %d",errno);
|
||||
else
|
||||
fatal_box("Impossibile creare il file trc.gen per dati standard: errore %d",errno);
|
||||
}
|
||||
}
|
||||
|
||||
@ -161,8 +162,8 @@ void TManutenzione_app::do_print(TPrinter & p, TRec_sheet & r)
|
||||
TToken_string s;
|
||||
TParagraph_string d("", 25);
|
||||
TConfig * descr = NULL;
|
||||
TTrec & rec = *r.rec();
|
||||
TDir & dir = *r.dir();
|
||||
const TTrec& rec = r.rec();
|
||||
const TDir& dir = r.dir();
|
||||
const char * descfname = r.descfname();
|
||||
TString4 tab(r.tab());
|
||||
const bool istab = tab.not_empty();
|
||||
@ -205,7 +206,7 @@ void TManutenzione_app::do_print(TPrinter & p, TRec_sheet & r)
|
||||
row.put(table[s.get_int()], 18);
|
||||
row.put(format("%4d", s.get_int()), 38);
|
||||
row.put(format("%4d", s.get_int()), 43);
|
||||
row.put(format("%4d", rec.rec()->Fd[i].RecOff), 48);
|
||||
row.put(format("%4d", rec.rec().Fd[i].RecOff), 48);
|
||||
const char *wd = NULL;
|
||||
|
||||
d = "";
|
||||
@ -389,7 +390,10 @@ void TManutenzione_app::open_log()
|
||||
{
|
||||
_print_log = false;
|
||||
if (_log == NULL)
|
||||
_log = new TLog_report("Conversione");
|
||||
{
|
||||
TString s; s << TR("Conversione") << ' ' << TDate(TODAY);
|
||||
_log = new TLog_report(s);
|
||||
}
|
||||
}
|
||||
|
||||
void TManutenzione_app::write_log(const char* line, const int severity)
|
||||
@ -461,21 +465,21 @@ void TManutenzione_app::insert_riga (long riga_sel, TToken_string& riga)
|
||||
/* shift di uno in avanti degli elementi del direttorio partendo dall'ultimo */
|
||||
for (int i=num_files; i>=logicnum; i--)
|
||||
{
|
||||
_browse->dir()->get (i, _nolock, _nordir, _sysdirop);
|
||||
_browse->dir()->put (i + 1, _nordir, _sysdirop);
|
||||
_browse->rec()->get (i);
|
||||
_browse->rec()->put (i + 1);
|
||||
_browse->dir().get (i, _nolock, _nordir, _sysdirop);
|
||||
_browse->dir().put (i + 1, _nordir, _sysdirop);
|
||||
_browse->rec().get (i);
|
||||
_browse->rec().put (i + 1);
|
||||
}
|
||||
_browse->dir()->set(_mask->get(FLD_NOME), _mask->get_long(FLD_EOD),
|
||||
_mask->get_long(FLD_FLAG), _mask->get (FLD_DESC),
|
||||
_mask->get (FLD_FORMULA));
|
||||
_browse->dir()->put(logicnum, _nordir, _sysdirop);
|
||||
_browse->rec()->zero();
|
||||
_browse->rec()->put(logicnum);
|
||||
_browse->dir()->get(LF_DIR);
|
||||
_browse->dir()->eod()++;
|
||||
_browse->set_items(_browse->dir()->eod());
|
||||
_browse->dir()->put(LF_DIR);
|
||||
_browse->dir().set(_mask->get(FLD_NOME), _mask->get_long(FLD_EOD),
|
||||
_mask->get_long(FLD_FLAG), _mask->get (FLD_DESC),
|
||||
_mask->get (FLD_FORMULA));
|
||||
_browse->dir().put(logicnum, _nordir, _sysdirop);
|
||||
_browse->rec().zero();
|
||||
_browse->rec().put(logicnum);
|
||||
_browse->dir().get(LF_DIR);
|
||||
_browse->dir().set_eod(_browse->dir().eod()+1);
|
||||
_browse->set_items(_browse->dir().eod());
|
||||
_browse->dir().put(LF_DIR);
|
||||
}
|
||||
}
|
||||
|
||||
@ -669,14 +673,14 @@ void TManutenzione_app::edit_riga (long riga_sel, TToken_string& riga)
|
||||
case K_F7:
|
||||
case K_ENTER:
|
||||
{
|
||||
strcpy (dep.SysName,_mask->get (FLD_NOME));
|
||||
strcpy (dep.SysName,_mask->get(FLD_NOME));
|
||||
dep.EOD = atol(_mask->get (FLD_EOD));
|
||||
dep.Flags = atol(_mask->get (FLD_FLAG));
|
||||
strcpy (dep.Des,_mask->get (FLD_DESC));
|
||||
strcpy (dep.FCalc,_mask->get (FLD_FORMULA));
|
||||
const TRecnotype eox = _mask->get_bool(FLD_EXTEND) ? _mask->get_long(FLD_EOX) : oldeox;
|
||||
|
||||
TDir& dir = *_browse->dir();
|
||||
TDir& dir = _browse->dir();
|
||||
dir.get(logicnum, _lock, _nordir, _sysdirop);
|
||||
dir.set(dep.SysName, dep.EOD, dep.Flags, dep.Des, dep.FCalc);
|
||||
dir.put(logicnum, _nordir, _sysdirop);
|
||||
@ -692,16 +696,16 @@ void TManutenzione_app::edit_riga (long riga_sel, TToken_string& riga)
|
||||
|
||||
if (!f_name.exist()) f.build(eox);
|
||||
|
||||
_browse->dir()->get(logicnum, _nolock, _nordir, _sysdirop);
|
||||
_browse->dir().get(logicnum, _nolock, _nordir, _sysdirop);
|
||||
}
|
||||
if (tasto == K_F5 && logicnum > 1)
|
||||
if (tasto == K_F5 && logicnum >= LF_USER)
|
||||
{
|
||||
f.packfile();
|
||||
f.packindex();
|
||||
// le 4 righe seguenti servono per allineare i valori di EOD ed EOX dopo una compattazione forzata
|
||||
dir.get(logicnum, _lock, _nordir, _sysdirop);
|
||||
dir.set(dep.SysName, dep.EOD, dep.Flags, dep.Des, dep.FCalc);
|
||||
dir.set_eox(_browse->dir()->eod());
|
||||
dir.set_eox(_browse->dir().eod());
|
||||
dir.put(logicnum, _nordir, _sysdirop);
|
||||
}
|
||||
else
|
||||
@ -775,18 +779,18 @@ void TManutenzione_app::delete_riga (long riga_sel)
|
||||
/* shift di uno in avanti degli elementi del direttorio partendo dall'ultimo */
|
||||
for (int i = logicnum + 1; i <= num_files; i++)
|
||||
{
|
||||
_browse->dir()->get (i, _nolock, _nordir, _sysdirop);
|
||||
_browse->dir()->put (i - 1, _nordir, _sysdirop);
|
||||
_browse->rec()->get (i);
|
||||
_browse->rec()->put (i - 1);
|
||||
_browse->dir().get (i, _nolock, _nordir, _sysdirop);
|
||||
_browse->dir().put (i - 1, _nordir, _sysdirop);
|
||||
_browse->rec().get (i);
|
||||
_browse->rec().put (i - 1);
|
||||
}
|
||||
|
||||
_browse->dir()->get(LF_DIR);
|
||||
_browse->dir().get(LF_DIR);
|
||||
r.zero();
|
||||
r.put(_browse->dir()->eod());
|
||||
_browse->dir()->eod()--;
|
||||
_browse->set_items(_browse->dir()->eod());
|
||||
_browse->dir()->put(LF_DIR);
|
||||
r.put(_browse->dir().eod());
|
||||
_browse->dir().set_eod(_browse->dir().eod()-1);
|
||||
_browse->set_items(_browse->dir().eod());
|
||||
_browse->dir().put(LF_DIR);
|
||||
_browse->force_update();
|
||||
}
|
||||
|
||||
@ -824,11 +828,11 @@ void TManutenzione_app::repair_file(int i)
|
||||
save_file(n);
|
||||
TExternisamfile ef(d.filename());
|
||||
|
||||
const RecDes* rd = ef.curr().rec_des();
|
||||
const RecDes& rd = ef.curr().rec_des();
|
||||
TTrec rec; rec.get(i);
|
||||
const int oldreclen = rec.len();
|
||||
const int recsize = sizeof(RecDes);
|
||||
memcpy(rec.rec(), rd, recsize);
|
||||
rec.rec() = rd;
|
||||
rec.put(i);
|
||||
|
||||
const int reclen = rec.len();
|
||||
@ -851,7 +855,7 @@ void TManutenzione_app::update_dir()
|
||||
// trattasi di files PRASSI, (ad esempio i cespiti) che da noi non vengono toccati,
|
||||
// in modo da evitare colpe inutili. Noi aggiorniamo solo i tracciati su dir e trc,
|
||||
// ma il file fisico manco lo tocchiamo!!
|
||||
TString80 s;
|
||||
|
||||
const TString pref(prefix().name());
|
||||
const bool is_com = prefix().is_com();
|
||||
|
||||
@ -860,9 +864,7 @@ void TManutenzione_app::update_dir()
|
||||
|
||||
const int last_new_item = _dirs.last(); //quale è il numero dell'ultimo file nuovo?
|
||||
|
||||
TDir d ;
|
||||
|
||||
d.get(LF_DIR);
|
||||
TDir d(LF_DIR); // equivale a d.get(LF_DIR, _nolock, _nordir, _sysdirop);
|
||||
const int last_curr_item = (int)d.eod(); //quale è il numero dell'ultimo file attualmente presente
|
||||
|
||||
const int update_items = (last_new_item < last_curr_item) ? last_new_item : last_curr_item;
|
||||
@ -893,10 +895,11 @@ void TManutenzione_app::update_dir()
|
||||
const long flags = ds.flags();
|
||||
d.get(i, _nolock, _nordir, _sysdirop);
|
||||
const bool old_is_firm = d.is_firm();
|
||||
|
||||
TFilename fs = d.filename();
|
||||
|
||||
/* Roba incomprensibile e quindi inutile
|
||||
d.get(i);
|
||||
|
||||
|
||||
TFilename fs(d.filename());
|
||||
if (strrchr(d.name(),'.') != NULL) // No extension please!
|
||||
{
|
||||
d.get(i, _nolock, _nordir, _sysdirop);
|
||||
@ -905,14 +908,15 @@ void TManutenzione_app::update_dir()
|
||||
d.set_name(ext);
|
||||
d.put(i, _nordir, _sysdirop);
|
||||
}
|
||||
*/
|
||||
|
||||
if (!fs.exist())
|
||||
{
|
||||
if (d.eox() > 0L)
|
||||
{
|
||||
d.get(i, _nolock, _nordir, _sysdirop);
|
||||
d.eod() = 0L;
|
||||
d.eox() = 0L;
|
||||
d.set_eod(0);
|
||||
d.set_eox(0);
|
||||
d.put(i, _nordir, _sysdirop);
|
||||
}
|
||||
}
|
||||
@ -996,8 +1000,8 @@ void TManutenzione_app::update_dir()
|
||||
FOR_EACH_TOKEN(idx_names, idx_name)
|
||||
xvt_fsys_remove_file(idx_name);
|
||||
d.get(i, _nolock, _nordir, _sysdirop);
|
||||
d.eod() = 0L;
|
||||
d.eox() = 0L;
|
||||
d.set_eod(0);
|
||||
d.set_eox(0);
|
||||
d.put(i, _nordir, _sysdirop);
|
||||
}
|
||||
}
|
||||
@ -1019,7 +1023,7 @@ void TManutenzione_app::update_dir()
|
||||
|
||||
if (to_create && !cmn_file)
|
||||
{
|
||||
if (flags < 10000L && flags > -1L && fexist(fs) && (fd != fs))
|
||||
if (flags < 10000L && flags > -1L && fs.exist() && (fd != fs))
|
||||
{
|
||||
|
||||
bool ok = true;
|
||||
@ -1037,18 +1041,16 @@ void TManutenzione_app::update_dir()
|
||||
TTrec wrd;
|
||||
|
||||
wrs.get(i);
|
||||
wrd.get(j);
|
||||
|
||||
wrd = wrs;
|
||||
|
||||
wrd.get(j); // A cosa ca$$o serve ...
|
||||
wrd = wrs; // ... visto che poi lo sbatto via?
|
||||
wrd.set_num(j);
|
||||
wrd.put(j);
|
||||
|
||||
wrd.put(j);
|
||||
wrs.zero();
|
||||
wrs.put(i);
|
||||
TDir wds;
|
||||
TDir wdd;
|
||||
|
||||
wds.get(i, _nolock, _nordir, _sysdirop);
|
||||
wdd.get(j, _nolock, _nordir, _sysdirop);
|
||||
TDir wds(i);
|
||||
TDir wdd(j);
|
||||
|
||||
wdd.set(wds.name(), wds.eod(), wds.flags(), wds.des(), wds.expr());
|
||||
wdd.set_eox(wds.eox());
|
||||
@ -1067,7 +1069,7 @@ void TManutenzione_app::update_dir()
|
||||
if (found)
|
||||
continue;
|
||||
path.rtrim(1);
|
||||
if (path.not_empty() && !fexist(path))
|
||||
if (path.full() && !path.exist())
|
||||
ok = make_dir(path);
|
||||
if (ok && fcopy(fs, fd))
|
||||
{
|
||||
@ -1081,7 +1083,7 @@ void TManutenzione_app::update_dir()
|
||||
fdi.ext("");
|
||||
if (j > 1) // Means that more indexes are in TToken_string ts
|
||||
{
|
||||
TString xx=fdi.name();
|
||||
const TFixed_string xx(fdi.name());
|
||||
if (xx.len() < 8)
|
||||
fdi << ('0' + j);
|
||||
else
|
||||
@ -1176,17 +1178,17 @@ void TManutenzione_app::update_dir()
|
||||
TDir d1((TDir &) _dirs[i]);
|
||||
|
||||
d1.set_len(0);
|
||||
d1.eox() = 0L;
|
||||
d1.eod() = 0L;
|
||||
d1.flags() = 0L;
|
||||
d1.set_eox(0);
|
||||
d1.set_eod(0);
|
||||
d1.set_flags(0);
|
||||
d1.put(i, _nordir, _sysdirop); //scrive su dir.gen il nuovo file aggiunto (mettendo numero,eox,eod,flags)
|
||||
}
|
||||
|
||||
//allinea i valori di eox ed eod (eox non può mai essere < eod!)
|
||||
d.get(LF_DIR, _nolock, _nordir, _sysdirop);
|
||||
d.eod() = last_new_item;
|
||||
d.set_eod(last_new_item);
|
||||
if (d.eox() < d.eod())
|
||||
d.eox() = d.eod();
|
||||
d.set_eox(d.eod());
|
||||
d.put(LF_DIR, _nordir, _sysdirop);
|
||||
}
|
||||
|
||||
@ -1199,8 +1201,7 @@ void TManutenzione_app::convert_dir()
|
||||
const bool is_com = prefix().is_com();
|
||||
const int last_new_item = _dirs.last();
|
||||
|
||||
TDir d;
|
||||
d.get(LF_DIR);
|
||||
TDir d(LF_DIR);
|
||||
const int last_curr_item = (int)d.eod();
|
||||
|
||||
const int update_items = (last_new_item < last_curr_item) ? last_new_item : last_curr_item;
|
||||
@ -1247,21 +1248,12 @@ void TManutenzione_app::convert_dir()
|
||||
|
||||
if (err != NOERR)
|
||||
{
|
||||
bool go_on = true;
|
||||
//controllo solo all'aga
|
||||
if (is_power_station())
|
||||
go_on = yesno_box(FR("Il file %d non puo' essere aperto:\nErrore %d. Continuare ugualmente?"), i, err);
|
||||
if (!go_on)
|
||||
stop_run();
|
||||
else
|
||||
{
|
||||
//si decide di proseguire anche se il file non può essere aperto ne tiene traccia nel log (nel caso di utonti..
|
||||
//..è sempre così, perchè go_on è sempre true)
|
||||
TString msg;
|
||||
msg.format(TR("Il file %d non può essere aperto. Errore %d"), i, err);
|
||||
write_log(msg, 2);
|
||||
continue;
|
||||
}
|
||||
//si decide di proseguire anche se il file non può essere aperto ne tiene traccia nel log (nel caso di utonti..
|
||||
//..è sempre così, perchè go_on è sempre true)
|
||||
TString msg;
|
||||
msg.format(TR("Il file %d non può essere aperto. Errore %d"), i, err);
|
||||
write_log(msg, 2);
|
||||
continue;
|
||||
}
|
||||
} //if (i > 2 && err != NOERR &&...
|
||||
|
||||
@ -1274,7 +1266,7 @@ void TManutenzione_app::convert_dir()
|
||||
|
||||
if (to_create && has_module(module, CHK_DONGLE))
|
||||
{
|
||||
TDir df; df.get(i);
|
||||
const TDir df(i);
|
||||
const TFilename fname(df.filename());
|
||||
|
||||
//crea il nuovo file in base al tracciato record nuovo!
|
||||
@ -1329,23 +1321,21 @@ void TManutenzione_app::convert_dir()
|
||||
} //for (int i = 2; i <= update_items...
|
||||
|
||||
d.get(LF_DIR, _nolock, _nordir, _sysdirop);
|
||||
d.flags() = _level;
|
||||
d.set_flags(_level);
|
||||
d.put(LF_DIR, _nordir, _sysdirop);
|
||||
put_history(pref);
|
||||
}
|
||||
|
||||
void TManutenzione_app::load_des(const int maxfdir)
|
||||
{
|
||||
TWait_cursor waiter;
|
||||
const TString pref(prefix().name());
|
||||
|
||||
_dirs.destroy();
|
||||
_recs.destroy();
|
||||
_level = prefix().filelevel();
|
||||
|
||||
TDir d;
|
||||
TTrec r;
|
||||
|
||||
d.get(LF_DIR,_nolock, _nordir,_sysdirop);
|
||||
TDir d(LF_DIR);
|
||||
int items = (int)d.eod();
|
||||
long flags = d.flags();
|
||||
const bool standard = pref.empty();
|
||||
@ -1405,9 +1395,9 @@ void TManutenzione_app::load_des(const int maxfdir)
|
||||
tr.put(ln);
|
||||
}
|
||||
|
||||
d.eod() = (long)last_newln;
|
||||
d.eox() = (long)last_newln;
|
||||
d.flags() = _level = flags;
|
||||
d.set_eod(last_newln);
|
||||
d.set_eox(last_newln);
|
||||
d.set_flags(_level = flags);
|
||||
prefix().set_stdlevel(flags);
|
||||
d.put(LF_DIR,_nordir,_sysdirop);
|
||||
}
|
||||
@ -1427,7 +1417,8 @@ void TManutenzione_app::load_des(const int maxfdir)
|
||||
{
|
||||
p.addstatus(1);
|
||||
d.get(i, _nolock, _nordir, _sysdirop);
|
||||
r.get(i);
|
||||
TTrec r(i);
|
||||
|
||||
if (standard)
|
||||
{
|
||||
TFilename desc_file;
|
||||
@ -1521,7 +1512,6 @@ void TManutenzione_app::update()
|
||||
|
||||
do_events();
|
||||
|
||||
begin_wait();
|
||||
TDir d;
|
||||
d.get(LF_DIR,_nolock, _nordir, _sysdirop);
|
||||
const int maxfdir = d.items();
|
||||
@ -1530,11 +1520,7 @@ void TManutenzione_app::update()
|
||||
prefix().set_codditta(0L);
|
||||
|
||||
open_log();
|
||||
TString s;
|
||||
s.format(FR("Conversione del %s"), (const char*)TDate(TODAY).string());
|
||||
write_log(s);
|
||||
write_log("");
|
||||
write_log(TR("Dati comuni"));
|
||||
write_log(TR("Conversione Dati comuni"));
|
||||
write_log("");
|
||||
|
||||
update_dir();
|
||||
@ -1543,35 +1529,34 @@ void TManutenzione_app::update()
|
||||
TSystemisamfile ditte(LF_NDITTE);
|
||||
ditte.open();
|
||||
|
||||
s = TR("Conversione archivi ditte.");
|
||||
|
||||
TProgind p(ditte.items() ? ditte.items() : 1, s, false, true);
|
||||
|
||||
p.setstatus(1);
|
||||
TString mxs;
|
||||
|
||||
for (ditte.first(); !ditte.eof(); ditte.next())
|
||||
const int nditte = ditte.items();
|
||||
if (nditte)
|
||||
{
|
||||
const TRecnotype rec = ditte.recno();
|
||||
const long codditta = ditte.get_long("CODDITTA");
|
||||
mxs = s;
|
||||
mxs << TR(" Ditta ") << codditta;
|
||||
p.addstatus(1);
|
||||
p.set_text(mxs);
|
||||
if (codditta > _history_firm && prefix().exist(codditta))
|
||||
TProgind p(nditte, TR("Conversione archivi ditte."), false, true);
|
||||
TString mxs;
|
||||
for (int err = ditte.first(); err == NOERR; err = ditte.next())
|
||||
{
|
||||
ditte.close();
|
||||
set_firm(codditta);
|
||||
write_log("");
|
||||
write_log(mxs);
|
||||
write_log("");
|
||||
update_dir();
|
||||
convert_dir();
|
||||
ditte.open();
|
||||
const TRecnotype rec = ditte.recno();
|
||||
const long codditta = ditte.get_long(NDT_CODDITTA);
|
||||
mxs.cut(0) << TR("Conversione Ditta") << ' ' << codditta << ' ' << ditte.get(NDT_RAGSOC);
|
||||
if (!p.addstatus(1))
|
||||
break;
|
||||
p.set_text(mxs);
|
||||
if (codditta > _history_firm && prefix().exist(codditta))
|
||||
{
|
||||
ditte.close();
|
||||
set_firm(codditta);
|
||||
write_log("");
|
||||
write_log(mxs);
|
||||
write_log("");
|
||||
update_dir();
|
||||
convert_dir();
|
||||
ditte.open();
|
||||
}
|
||||
ditte.readat(rec);
|
||||
}
|
||||
ditte.readat(rec);
|
||||
ditte.close();
|
||||
}
|
||||
ditte.close();
|
||||
//chiude il log di conversione
|
||||
close_log();
|
||||
|
||||
@ -1598,8 +1583,6 @@ void TManutenzione_app::update()
|
||||
close_history();
|
||||
|
||||
send_campo_xml(); // Spedisce situazione via ftp
|
||||
|
||||
end_wait();
|
||||
}
|
||||
|
||||
void TManutenzione_app::main_loop()
|
||||
|
24
ba/ba1100.h
24
ba/ba1100.h
@ -25,8 +25,8 @@ class TMask_field;
|
||||
|
||||
class TDir_sheet : public TSheet
|
||||
{
|
||||
TTrec *_rec;
|
||||
TDir *_dir;
|
||||
TTrec _rec;
|
||||
TDir _dir;
|
||||
FileDes _s_dir;
|
||||
long _items;
|
||||
|
||||
@ -35,11 +35,13 @@ protected:
|
||||
virtual void get_row(long n, TToken_string& r);
|
||||
|
||||
public:
|
||||
TDir* dir() const { return _dir; }
|
||||
TTrec* rec() const { return _rec; }
|
||||
const TDir& dir() const { return _dir; }
|
||||
TDir& dir() { return _dir; }
|
||||
const TTrec& rec() const { return _rec; }
|
||||
TTrec& rec(){ return _rec; }
|
||||
void set_items(long items) { _items = items; }
|
||||
void add();
|
||||
void rebuild() { _items = _dir->items();}
|
||||
void rebuild() { _items = _dir.items();}
|
||||
|
||||
TDir_sheet(const char* title, bool superprassi, const char* col = "N.@3R|Nome@20|EOD@7R|EOX@7R|Lung.@7R|Descrizione@43|Formula@33|Flags@7R");
|
||||
virtual ~TDir_sheet();
|
||||
@ -47,9 +49,9 @@ public:
|
||||
|
||||
class TRec_sheet : public TObject
|
||||
{
|
||||
TTrec *_rec;
|
||||
TTrec *_rec_old;
|
||||
TDir *_dir;
|
||||
TTrec _rec;
|
||||
TTrec _rec_old;
|
||||
TDir _dir;
|
||||
bool _comfile;
|
||||
TConfig *_descr;
|
||||
static TMask *_mask;
|
||||
@ -64,11 +66,11 @@ protected:
|
||||
void save();
|
||||
void save_desc();
|
||||
|
||||
virtual long get_items() const { return _rec->fields(); }
|
||||
virtual long get_items() const { return _rec.fields(); }
|
||||
|
||||
public:
|
||||
TDir* dir() const { return _dir; }
|
||||
TTrec* rec() const { return _rec; }
|
||||
const TDir& dir() const { return _dir; }
|
||||
const TTrec& rec() const { return _rec; }
|
||||
const char* descfname() const { return _descfname;}
|
||||
const char* tab() const { return _tab; }
|
||||
void edit();
|
||||
|
154
ba/ba1101.cpp
154
ba/ba1101.cpp
@ -13,15 +13,15 @@ TMask* TRec_sheet::_mask = NULL;
|
||||
|
||||
void TDir_sheet::add()
|
||||
{
|
||||
_dir->get(LF_DIR, _lock, _nordir, _sysdirop);
|
||||
const int nitems = (int)_dir->eod() + 1;
|
||||
_dir.get(LF_DIR, _lock, _nordir, _sysdirop);
|
||||
const int nitems = (int)_dir.eod() + 1;
|
||||
|
||||
_dir->eod() = nitems;
|
||||
if (_dir->eox() < _dir->eod())
|
||||
_dir->eox() += 10;
|
||||
_dir->put(LF_DIR, _nordir, _sysdirop);
|
||||
TDir d;
|
||||
if (_dir.eox() < nitems)
|
||||
_dir.set_eox(nitems + 10);
|
||||
_dir.set_eod(nitems);
|
||||
_dir.put(LF_DIR, _nordir, _sysdirop);
|
||||
|
||||
TDir d;
|
||||
d.zero();
|
||||
d.put(nitems, _nordir, _sysdirop);
|
||||
_items = nitems;
|
||||
@ -46,29 +46,25 @@ TDir_sheet::TDir_sheet(const char* title, bool superprassi, const char* colonne)
|
||||
add_button(DLG_HELP, TR("Help"), K_F1, BMP_HELP);
|
||||
xvt_toolbar_set_last_tool(toolbar(), DLG_QUIT);
|
||||
|
||||
_dir = new TDir;
|
||||
_rec = new TTrec;
|
||||
rebuild();
|
||||
}
|
||||
|
||||
TDir_sheet::~TDir_sheet()
|
||||
{
|
||||
delete _dir;
|
||||
delete _rec;
|
||||
}
|
||||
|
||||
void TDir_sheet::get_row(long n, TToken_string& l)
|
||||
{
|
||||
n++;
|
||||
_dir->get ((int)n,_nolock,_nordir,_sysdirop);
|
||||
_dir.get ((int)n,_nolock,_nordir,_sysdirop);
|
||||
l.format("%d", n); // Numero progressivo del file
|
||||
l.add(_dir->name());
|
||||
l.add(_dir->eod());
|
||||
l.add(_dir->eox());
|
||||
l.add((long)_dir->len());
|
||||
l.add(_dir->des());
|
||||
l.add(_dir->expr());
|
||||
l.add(_dir->flags());
|
||||
l.add(_dir.name());
|
||||
l.add(_dir.eod());
|
||||
l.add(_dir.eox());
|
||||
l.add((long)_dir.len());
|
||||
l.add(_dir.des());
|
||||
l.add(_dir.expr());
|
||||
l.add(_dir.flags());
|
||||
}
|
||||
|
||||
|
||||
@ -76,23 +72,20 @@ TRec_sheet::TRec_sheet(int logicnum, const char * tab)
|
||||
: _descr(NULL), _tab(tab)
|
||||
{
|
||||
_external = FALSE;
|
||||
_dir = new TDir;
|
||||
_rec = new TTrec;
|
||||
_rec_old = new TTrec;
|
||||
_mask = new TMask("ba1100d");
|
||||
|
||||
_dir->get(logicnum, _lock, _nordir, _sysdirop);
|
||||
_rec->get(logicnum);
|
||||
if (_dir->len() == 0)
|
||||
_rec->zero();
|
||||
*_rec_old = *_rec;
|
||||
_dir.get(logicnum, _lock, _nordir, _sysdirop);
|
||||
_rec.get(logicnum);
|
||||
if (_dir.len() == 0)
|
||||
_rec.zero();
|
||||
_rec_old = _rec;
|
||||
_tab.lower();
|
||||
if (fexist(DESCDIR))
|
||||
{
|
||||
if (logicnum >= LF_TABGEN && logicnum <= LF_TAB && _tab.not_empty())
|
||||
_descfname.format("%s/d%s.des", DESCDIR, (const char *) _tab);
|
||||
else
|
||||
_descfname.format("%s/d%d.des", DESCDIR, _dir->num());
|
||||
_descfname.format("%s/d%d.des", DESCDIR, _dir.num());
|
||||
FILE * fd = NULL;
|
||||
|
||||
if (!fexist(_descfname) && (fd = fopen(_descfname, "w")) == NULL)
|
||||
@ -106,31 +99,24 @@ TRec_sheet::TRec_sheet(int logicnum, const char * tab)
|
||||
}
|
||||
}
|
||||
|
||||
TRec_sheet::TRec_sheet(TExternisamfile* file)
|
||||
: _descr(NULL), _tab("")
|
||||
TRec_sheet::TRec_sheet(TExternisamfile* file) : _descr(NULL)
|
||||
{
|
||||
_external = TRUE;
|
||||
_dir = new TDir;
|
||||
_rec = new TTrec;
|
||||
_rec_old = new TTrec;
|
||||
_mask = new TMask("ba1100d");
|
||||
|
||||
const FileDes& d = prefix().get_filedes(file->num());
|
||||
const RecDes& r = prefix().get_recdes(file->num());
|
||||
memcpy(_dir->filedesc(),&d,sizeof(FileDes));
|
||||
memcpy(_rec->rec(),&r,sizeof(RecDes));
|
||||
if (_dir->len() == 0)
|
||||
_rec->zero();
|
||||
*_rec_old = *_rec;
|
||||
_dir.filedesc() = d;
|
||||
_rec.rec() = r;
|
||||
if (_dir.len() == 0)
|
||||
_rec.zero();
|
||||
_rec_old = _rec;
|
||||
}
|
||||
|
||||
TRec_sheet::~TRec_sheet()
|
||||
{
|
||||
if (!_external)
|
||||
_dir->get(_dir->num(), _unlock, _nordir, _sysdirop);
|
||||
delete _dir;
|
||||
delete _rec;
|
||||
delete _rec_old;
|
||||
_dir.get(_dir.num(), _unlock, _nordir, _sysdirop);
|
||||
delete _mask;
|
||||
_mask = NULL;
|
||||
if (_descr)
|
||||
@ -199,76 +185,74 @@ void TRec_sheet::save_desc()
|
||||
{
|
||||
if (_descr)
|
||||
{
|
||||
TSheet_field& f1 = (TSheet_field&) _mask->field(F_FIELDS);
|
||||
TSheet_field& f1 = _mask->sfield(F_FIELDS);
|
||||
const int nfields = f1.items();
|
||||
|
||||
for (int i = 0; i < nfields; i++)
|
||||
_descr->set(_rec->rec()->Fd[i].Name, f1.row(i).items() > 4 ?
|
||||
f1.row(i).get(-2) : "");
|
||||
_descr->set(_rec.rec().Fd[i].Name, f1.row(i).items() > 4 ?
|
||||
f1.row(i).get(-2) : "");
|
||||
delete _descr;
|
||||
_descr = new TConfig(_descfname, DESCPAR);
|
||||
}
|
||||
}
|
||||
|
||||
void TRec_sheet::save()
|
||||
|
||||
{
|
||||
if ((*_rec == *_rec_old && !_descr) ||
|
||||
if ((_rec == _rec_old && !_descr) ||
|
||||
!yesnocancel_box(TR("Salvare le modifiche"))) return;
|
||||
|
||||
if (prefix().name()[0]) // Non fare conversioni sui dati standard
|
||||
{
|
||||
TSystemisamfile f(_rec->num());
|
||||
f.update(*_rec, true);
|
||||
TSystemisamfile f(_rec.num());
|
||||
f.update(_rec, true);
|
||||
}
|
||||
|
||||
save_desc();
|
||||
*_rec_old = *_rec;
|
||||
_rec_old = _rec;
|
||||
// modifica del 16-1-98, Augusto :
|
||||
// Il bottone "salva" salva anche il trr e dir in recdesc
|
||||
|
||||
TFilename nf;
|
||||
nf << "recdesc\\f" << _dir->num();
|
||||
nf << "recdesc\\f" << _dir.num();
|
||||
nf.ext("trr");
|
||||
{
|
||||
_rec->set_des(_descr,_tab.upper());
|
||||
_rec.set_des(_descr,_tab.upper());
|
||||
ofstream out(nf);
|
||||
out << *_rec;
|
||||
_rec->set_des();
|
||||
out << _rec;
|
||||
_rec.set_des();
|
||||
}
|
||||
|
||||
nf.ext("dir");
|
||||
ofstream out(nf);
|
||||
out << *_dir;
|
||||
out << _dir;
|
||||
}
|
||||
|
||||
void TRec_sheet::edit()
|
||||
{
|
||||
bool import_dirty = FALSE;
|
||||
TSheet_field& f1 = (TSheet_field&) _mask->field(F_FIELDS);
|
||||
TSheet_field& f2 = (TSheet_field&) _mask->field(F_KEYS);
|
||||
TSheet_field& f1 = _mask->sfield(F_FIELDS);
|
||||
TSheet_field& f2 = _mask->sfield(F_KEYS);
|
||||
|
||||
if (!_external)
|
||||
{
|
||||
_mask->set (F_NUM, _dir->num());
|
||||
_mask->set (F_DES, _dir->des());
|
||||
_mask->set (F_NUM, _dir.num());
|
||||
_mask->set (F_DES, _dir.des());
|
||||
}
|
||||
else
|
||||
_mask->disable(-1);
|
||||
f1.sheet_mask().field(FLD_LEN).set_handler(len_handler);
|
||||
f1.set_notify(fld_notify);
|
||||
f1.set_append(FALSE);
|
||||
int nfields = _rec->fields();
|
||||
|
||||
f1.enable_column(FLD_DES - 101, _descr != NULL);
|
||||
|
||||
int nfields = _rec.fields();
|
||||
|
||||
int i;
|
||||
|
||||
for (i = 0; i < nfields; i++)
|
||||
{
|
||||
f1.row(i) = _rec->fielddef(i);
|
||||
f1.row(i) = _rec.fielddef(i);
|
||||
if (_descr)
|
||||
f1.row(i).add(_descr->get(_rec->rec()->Fd[i].Name));
|
||||
f1.row(i).add(_descr->get(_rec.rec().Fd[i].Name));
|
||||
else
|
||||
f1.row(i).add("");
|
||||
const TFieldtypes type = (TFieldtypes) f1.row(i).get_int(1);
|
||||
@ -292,8 +276,8 @@ void TRec_sheet::edit()
|
||||
}
|
||||
f2.set_notify(key_notify);
|
||||
f2.set_append(FALSE);
|
||||
int nkeys = _rec->keys();
|
||||
for (i = 0; i < nkeys; i++) f2.row(i) = _rec->keydef(i);
|
||||
int nkeys = _rec.keys();
|
||||
for (i = 0; i < nkeys; i++) f2.row(i) = _rec.keydef(i);
|
||||
f2.disable_cell(0, 1);
|
||||
while (TRUE)
|
||||
{
|
||||
@ -311,18 +295,18 @@ void TRec_sheet::edit()
|
||||
if (s.items() > 4)
|
||||
s.destroy(-2);
|
||||
if (s.items() > 0)
|
||||
_rec->update_fielddef(nf++, s);
|
||||
_rec.update_fielddef(nf++, s);
|
||||
}
|
||||
_rec->set_fields(nf);
|
||||
_rec->rehash();
|
||||
_rec.set_fields(nf);
|
||||
_rec.rehash();
|
||||
nkeys = f2.items();
|
||||
_rec->set_keys(nkeys);
|
||||
_rec.set_keys(nkeys);
|
||||
for (i = 0; i < nkeys; i++)
|
||||
{
|
||||
TToken_string& s = f2.row(i);
|
||||
_rec->update_keydef(i, s);
|
||||
_rec.update_keydef(i, s);
|
||||
}
|
||||
_dir->set_len(_rec->len());
|
||||
_dir.set_len(_rec.len());
|
||||
save();
|
||||
return;
|
||||
}
|
||||
@ -348,7 +332,7 @@ void TRec_sheet::edit()
|
||||
{
|
||||
TMask m("ba1100f");
|
||||
TFilename nf;
|
||||
nf << 'f' << _dir->num();
|
||||
nf << 'f' << _dir.num();
|
||||
nf.ext("trr");
|
||||
m.set(F_NOMEF, nf);
|
||||
if (m.run() == K_ENTER)
|
||||
@ -358,14 +342,14 @@ void TRec_sheet::edit()
|
||||
{
|
||||
save_desc();
|
||||
{
|
||||
_rec->set_des(_descr,_tab.upper());
|
||||
_rec.set_des(_descr,_tab.upper());
|
||||
ofstream out(nf);
|
||||
out << *_rec;
|
||||
_rec->set_des();
|
||||
out << _rec;
|
||||
_rec.set_des();
|
||||
}
|
||||
nf.ext("dir");
|
||||
ofstream out(nf);
|
||||
out << *_dir;
|
||||
out << _dir;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -373,7 +357,7 @@ void TRec_sheet::edit()
|
||||
case K_F7:
|
||||
{
|
||||
TMask m("ba1100f");
|
||||
TFilename nout(_dir->name());
|
||||
TFilename nout(_dir.name());
|
||||
|
||||
nout.strip("$%");
|
||||
nout.ext("trr");
|
||||
@ -384,18 +368,18 @@ void TRec_sheet::edit()
|
||||
if (nf.not_empty())
|
||||
{
|
||||
import_dirty = TRUE;
|
||||
_rec->set_des(_descr,_tab.upper());
|
||||
_rec.set_des(_descr,_tab.upper());
|
||||
ifstream in(nf);
|
||||
in >> *_rec;
|
||||
nfields = _rec->fields();
|
||||
in >> _rec;
|
||||
nfields = _rec.fields();
|
||||
fcopy(_descfname,"des.xxx"); // salva il vecchio file di descrizioni
|
||||
f1.destroy(-1);
|
||||
|
||||
for (int i = 0; i < nfields; i++)
|
||||
{
|
||||
f1.row(i) = _rec->fielddef(i);
|
||||
f1.row(i) = _rec.fielddef(i);
|
||||
if (_descr)
|
||||
f1.row(i).add(_descr->get(_rec->rec()->Fd[i].Name));
|
||||
f1.row(i).add(_descr->get(_rec.rec().Fd[i].Name));
|
||||
else
|
||||
f1.row(i).add("");
|
||||
const TFieldtypes type = (TFieldtypes) f1.row(i).get_int(1);
|
||||
@ -417,10 +401,10 @@ void TRec_sheet::edit()
|
||||
break;
|
||||
}
|
||||
}
|
||||
nkeys = _rec->keys();
|
||||
nkeys = _rec.keys();
|
||||
f2.reset();
|
||||
for (int i = 0; i < nkeys; i++)
|
||||
f2.row(i) = _rec->keydef(i);
|
||||
f2.row(i) = _rec.keydef(i);
|
||||
f2.disable_cell(0, 1);
|
||||
}
|
||||
}
|
||||
|
@ -196,6 +196,7 @@ bool save_campo_xml()
|
||||
// Aggiorna il file xml coi dati di installazione e lo spedisce qua
|
||||
bool send_campo_xml()
|
||||
{
|
||||
TWait_cursor waiter;
|
||||
bool ok = false;
|
||||
if (save_campo_xml())
|
||||
{
|
||||
|
@ -171,7 +171,7 @@ void TPackFiles_application::main_loop()
|
||||
d.get(i,_nolock, _nordir,_sysdirop);
|
||||
bool is_com = d.is_com();
|
||||
d.get(i,_nolock, is_com ? _comdir : _nordir);
|
||||
d.eod() = 0L;
|
||||
d.set_eod(0);
|
||||
d.put(i, is_com ? _comdir : _nordir);
|
||||
if (f.pack() == NOERR)
|
||||
if (f.load(d_name) == NOERR) // Reload
|
||||
|
12
ba/bacnv.cpp
12
ba/bacnv.cpp
@ -518,14 +518,12 @@ void TConversione_archivi::patch_com()
|
||||
|
||||
void TConversione_archivi::zero_770()
|
||||
{
|
||||
TDir d;
|
||||
for (int i = LF_BASE ; i <= LF_DETH; i++)
|
||||
{
|
||||
TDir d;
|
||||
|
||||
d.get(i, _lock, _nordir, _sysdirop);
|
||||
d.eod() = 0L;
|
||||
d.eox() = 0L;
|
||||
d.put(i, _nordir, _sysdirop);
|
||||
d.reset_eox();
|
||||
d.put(i, _nordir, _sysdirop);
|
||||
}
|
||||
|
||||
TFilename files;
|
||||
@ -727,13 +725,13 @@ void TConversione_archivi::convert_profili()
|
||||
TFilename lf;
|
||||
|
||||
d.get(LF_FORM, _nolock, _comdir, _sysdirop);
|
||||
d.eod() = 0;
|
||||
d.set_eod(0);
|
||||
d.put(LF_FORM, _comdir, _sysdirop);
|
||||
form.pack();
|
||||
lf.format("%sstd/lf0054.txt", __ptprf);
|
||||
if (fexist(lf)) form.load(lf);
|
||||
d.get(LF_RFORM, _nolock, _comdir, _sysdirop);
|
||||
d.eod() = 0;
|
||||
d.set_eod(0);
|
||||
d.put(LF_RFORM, _comdir, _sysdirop);
|
||||
rform.pack();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user