Posizionata generazione archivi nel menu' principale

git-svn-id: svn://10.65.10.50/trunk@573 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1994-11-10 10:58:32 +00:00
parent c0d3f2681f
commit 9a70c637c2

View File

@ -6,12 +6,6 @@
#include <tabutil.h>
#include <files.h>
#if XVT_OS == XVT_OS_SCOUNIX
#include <sys/stat.h>
#else
#include <direct.h>
#endif
#include "ba4.h"
#include "ba4300.h"
@ -71,11 +65,10 @@ protected:
virtual bool changing_mask(int) { return FALSE;}
virtual void init_query_mode(TMask& m) ;
virtual void init_insert_mode(TMask& m) ;
void enable_reg(TMask& m) ;
virtual void init_modify_mode(TMask& m) ;
void set_att_prev(TMask& m);
bool build_firm_data(long cod, bool flagcom);
public:
BA4300_application();
virtual TRelation* get_relation() const { return _rel;}
@ -162,114 +155,6 @@ bool ba4300_handler(TMask& m, KEY k)
}
bool BA4300_application::build_firm_data(long codditta, bool flagcom)
{
const TString ndir(firm2dir(codditta));
const char* ntrrec = "trc.gen";
const TFilename s1(format("%s/%s", (const char*) ndir, ntrrec));
const char* nd = "dir.gen";
const TFilename s2(format("%s/%s", (const char*) ndir, nd));
if (fexist(s1) && fexist(s2))
return TRUE;
if (fexist(ndir))
{
const bool ok = yesno_box("Direttorio %s esistente, lo ricostruisco", (const char*) ndir);
if (!ok) return TRUE;
}
else
#if XVT_OS == XVT_OS_SCOUNIX
if (mkdir(ndir, 0777) == -1)
#else
if (mkdir(ndir) == -1)
#endif
return error_box("Impossibile creare il direttorio della ditta %ld (%s)",
codditta, (const char*) ndir);
if (!fexist(s1))
if (!fcopy(ntrrec, s1))
return error_box("Impossibile copiare il file %s della ditta %ld",
ntrrec, codditta);
if (!fexist(s2))
if (!fcopy(nd, s2))
return error_box("Impossibile copiare il file %s della ditta %ld",
nd, codditta);
set_cursor(TASK_WIN, CURSOR_WAIT);
const long old_firm = get_firm();
TDir dir, dir1;
TTrec rec;
prefhndl->set("");
dir1.get(LF_DIR, _nolock, _nordir, _sysdirop);
const long maxeod0 = dir1.eod();
prefhndl->set_codditta(codditta);
dir.get(LF_DIR, _nolock, _nordir, _sysdirop);
if (dir.eod() == 0)
{
dir1.eod() = 1L;
dir1.put(LF_DIR, _nordir, _sysdirop);
dir.get(LF_DIR, _nolock, _nordir, _sysdirop);
}
const long maxeod1 = dir.eod();
if (maxeod0 > maxeod1)
{
dir.get(LF_DIR, _nolock, _nordir, _sysdirop);
dir.eod() = maxeod0;
dir.put(LF_DIR, _nordir, _sysdirop);
rec.zero();
}
for (int i = LF_DIR + 1; i <= maxeod0; i++)
{
dir.get(i, _nolock, _nordir, _sysdirop);
if (dir.eod() == 0L && dir.eox() == 0L)
{
prefhndl->set("");
dir.get(i, _nolock, _nordir, _sysdirop);
rec.get(i);
prefhndl->set_codditta(codditta);
const char* name = dir.name();
dir.flags() = 0L;
const bool valid_file = *name && dir.len() > 0;
const bool create_now = flagcom ? *name == '%' : *name != '%';
if (valid_file && create_now)
{
dir.put(i, _nordir, _sysdirop);
rec.put(i);
TSystemisamfile f(i);
f.build(30); // cambiare
BA4300_application& app = (BA4300_application&) main_app();
for (int j = 0 ; j < 99 ; j++)
{
if (app.has_module(j))
{
const TString s(format("std/f%04d%02d.txt", i, j));
if (fexist(s)) f.load(s);
}
}
}
else
{
if (!flagcom)
{
dir.len() = 0;
rec.zero();
}
dir.put(i, _nordir, _sysdirop);
rec.put(i);
}
}
}
set_firm(old_firm);
set_cursor(TASK_WIN, CURSOR_ARROW);
return TRUE;
}
BA4300_application::BA4300_application()
{}
@ -354,7 +239,6 @@ void BA4300_application::set_att_prev(TMask& m)
int BA4300_application::write(const TMask& m)
{
_rel->zero();
m.autosave();
if (_rel->write() != NOERR)
return _rel->status();
@ -395,7 +279,6 @@ int BA4300_application::write(const TMask& m)
}
_unloc->write();
}
build_firm_data(atol(codditta), FALSE);
return NOERR;
}
@ -409,8 +292,6 @@ int BA4300_application::rewrite(const TMask& m)
return NOERR;
}
void BA4300_application::init_query_mode(TMask& m)
{
if (filtered())
@ -448,6 +329,14 @@ void BA4300_application::init_insert_mode(TMask& m)
_oldattprev = "";
}
void BA4300_application::enable_reg(TMask& m)
{
const long codditta = m.get_long(FLD_GD1_CODDITTA);
m.enable(DLG_REG, codditta > 0 && prefhndl->exist(codditta));
}
void BA4300_application::init_modify_mode(TMask& m)
{
m.disable(FLD_GD1_TIPOA);
@ -466,7 +355,7 @@ void BA4300_application::init_modify_mode(TMask& m)
m.enable(DLG_ATT);
m.enable(DLG_ULC);
m.enable(DLG_SOC);
m.enable(DLG_REG);
enable_reg(m);
_oldattprev = m.get(FLD_GD1_CODATTPREV);
}