diff --git a/ba/ba4300.cpp b/ba/ba4300.cpp index eb246134f..99337bbd0 100755 --- a/ba/ba4300.cpp +++ b/ba/ba4300.cpp @@ -6,12 +6,6 @@ #include #include -#if XVT_OS == XVT_OS_SCOUNIX -#include -#else -#include -#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); }