Posizionata la generazione degli archivi nel menu' principale

git-svn-id: svn://10.65.10.50/trunk@572 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1994-11-10 10:57:12 +00:00
parent 3cc4af2dae
commit c0d3f2681f

View File

@ -8,6 +8,13 @@
#include <urldefid.h>
#include <stdio.h>
#if XVT_OS == XVT_OS_SCOUNIX
#include <sys/stat.h>
#else
#include <direct.h>
#endif
#if XVT_OS == XVT_OS_WIN
extern "C"
{
@ -124,6 +131,7 @@ protected:
bool check_user();
virtual bool create();
virtual bool menu(MENU_TAG m);
virtual bool build_firm_data(long cod, bool flagcom = FALSE);
static bool menu_item_handler(TMask_field&f, KEY k);
static bool menu_find_handler(TMask_field&f, KEY k);
@ -140,6 +148,108 @@ bool TMenu_application::_find_button = FALSE;
inline TMenu_application& app()
{ return (TMenu_application&)main_app(); }
bool TMenu_application::build_firm_data(long codditta, bool flagcom)
{
const char * const ndir = "/dir.gen";
const char * const ntrc = "/trc.gen";
TFilename s(firm2dir(codditta)); s << ndir;
bool exist = fexist(s);
if (!exist)
{
s = s.path(); s << ntrc;
exist = fexist(s);
}
if (exist)
return message_box("Direttorio dati danneggiato, non posso attivare la ditta %ld", codditta);
if (!yesno_box("I dati della ditta %ld non esistono : devo generarli ?", codditta))
return FALSE;
s = s.path();
#if XVT_OS == XVT_OS_SCOUNIX
if (mkdir(s, 0777) == -1)
#else
if (mkdir(s) == -1)
#endif
return error_box("Impossibile creare il direttorio della ditta %ld (%s)",
codditta, (const char*) ndir);
s << ndir;
if (!fcopy(&ndir[1], s))
return error_box("Impossibile copiare il file %s della ditta %ld",
&ndir[1], codditta);
s = s.path(); s << ntrc;
if (!fcopy(&ntrc[1], s))
return error_box("Impossibile copiare il file %s della ditta %ld",
ntrc, 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();
}
TString mess("Generazione archivi della ditta "); mess << codditta;
TProgind p(maxeod0 ? maxeod0 : 1, mess, TRUE, TRUE, 70);
for (int i = LF_DIR + 1; i <= maxeod0; i++)
{
p.addstatus(1);
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 != '\0' && 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);
}
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;
}
bool TMenu_application::module_enabled(const char * program) const
{
bool ok = FALSE;