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:
		
							parent
							
								
									c0d3f2681f
								
							
						
					
					
						commit
						9a70c637c2
					
				
							
								
								
									
										131
									
								
								ba/ba4300.cpp
									
									
									
									
									
								
							
							
						
						
									
										131
									
								
								ba/ba4300.cpp
									
									
									
									
									
								
							@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user