122 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <mask.h>
 | 
						|
#include <relapp.h>
 | 
						|
 | 
						|
#include "sc1.h"            
 | 
						|
#include "sc1300a.h"
 | 
						|
 | 
						|
class SollecitiStorici_app : public TRelation_application
 | 
						|
{
 | 
						|
  TMask*          _msk;
 | 
						|
  TRelation*      _rel; 
 | 
						|
  
 | 
						|
protected:
 | 
						|
 | 
						|
  virtual TMask* get_mask(int mode)    { return _msk;}
 | 
						|
  virtual bool changing_mask(int mode) { return FALSE;}
 | 
						|
  virtual TRelation* get_relation() const { return _rel;}
 | 
						|
  virtual bool user_create() ;                         
 | 
						|
  virtual bool user_destroy() ;                        
 | 
						|
  virtual int write(const TMask& m); 
 | 
						|
  
 | 
						|
  static  bool zap_handler(TMask_field& f, KEY k);
 | 
						|
 | 
						|
  static  SollecitiStorici_app& app() 
 | 
						|
  { return (SollecitiStorici_app&)main_app();}
 | 
						|
 | 
						|
public:
 | 
						|
  
 | 
						|
  void zap_cliente(const char* c);
 | 
						|
  
 | 
						|
  SollecitiStorici_app()          {}  
 | 
						|
  virtual ~SollecitiStorici_app() {}  
 | 
						|
}; 
 | 
						|
 | 
						|
 | 
						|
bool SollecitiStorici_app::user_create()
 | 
						|
{
 | 
						|
  _rel = new TRelation(LF_PAGSCA);  
 | 
						|
  _msk = new TMask("sc1300a");          
 | 
						|
  
 | 
						|
  _msk->set_handler(F_ZAP, zap_handler);
 | 
						|
  set_search_field(F_TIPO);
 | 
						|
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool SollecitiStorici_app::user_destroy()
 | 
						|
{                   
 | 
						|
  delete _rel;
 | 
						|
  delete _msk;
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}                     
 | 
						|
 | 
						|
bool SollecitiStorici_app::zap_handler(TMask_field& f, KEY k)
 | 
						|
{ 
 | 
						|
  if (k == K_SPACE && !f.mask().get(F_CODICE).empty()) 
 | 
						|
  {
 | 
						|
    if (yesno_box("Si desidera azzerare l'archivio solleciti per "
 | 
						|
                  "il cliente %s?", (const char*)f.mask().get(F_DESCR)))
 | 
						|
    {
 | 
						|
      app().zap_cliente(f.mask().get(F_CODICE));
 | 
						|
      return f.mask().stop_run(K_ESC);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void SollecitiStorici_app::zap_cliente(const char* cod)
 | 
						|
{
 | 
						|
  TLocalisamfile& sr =  _rel->lfile();
 | 
						|
  sr.zero(); sr.put("CODICE", cod);
 | 
						|
  int err  = NOERR;
 | 
						|
  
 | 
						|
  for (err = sr.read(_isgteq); 
 | 
						|
       err == NOERR && sr.get("CODICE") == cod; 
 | 
						|
       err = sr.next())
 | 
						|
    sr.remove();                                   
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int SollecitiStorici_app::write(const TMask& m)
 | 
						|
{            
 | 
						|
  TLocalisamfile& sr =  _rel->lfile();
 | 
						|
  _rel->save_status();
 | 
						|
  
 | 
						|
  sr.zero(); sr.put("CODICE", m.get(F_CODICE));
 | 
						|
  int err  = NOERR;
 | 
						|
  bool ok = TRUE;
 | 
						|
  
 | 
						|
  TDate data;
 | 
						|
  TDate dmsk(m.get(F_DATA));
 | 
						|
  
 | 
						|
  for (err = sr.read(_isgteq); 
 | 
						|
       err == NOERR && sr.get("CODICE") == m.get(F_CODICE); 
 | 
						|
       err = sr.next())                                   
 | 
						|
  {
 | 
						|
    int tipo = sr.get_int("TIPO");  
 | 
						|
    data = sr.get_date("DATASPED");
 | 
						|
    
 | 
						|
    if (tipo >= m.get_int(F_TIPO) && data <= dmsk)
 | 
						|
    {
 | 
						|
      error_box("Sollecito di grado inferiore ad uno precedente (%s, grado %d)",
 | 
						|
                (const char*)data.string(), tipo);
 | 
						|
      ok = FALSE; 
 | 
						|
      break;
 | 
						|
    }     
 | 
						|
  }
 | 
						|
  _rel->restore_status(); 
 | 
						|
  
 | 
						|
  if (ok) return TRelation_application::write(m);  
 | 
						|
 | 
						|
  return ok;
 | 
						|
}
 | 
						|
 | 
						|
int sc1300(int argc, char** argv)
 | 
						|
{
 | 
						|
  SollecitiStorici_app a;
 | 
						|
  a.run(argc, argv, "Archivio Storico Solleciti");
 | 
						|
  return 0;
 | 
						|
}
 |