325 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			325 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include "cglib04.h"
 | |
| #include "cg2803.h"
 | |
| 
 | |
| HIDDEN TVis_ric& app() { return (TVis_ric &) main_app(); }
 | |
| 
 | |
| const char* TVis_ric::riconverti (TString& data_PC)
 | |
| {
 | |
|   TP = data_PC.mid(8,2);
 | |
|   TP << data_PC.mid(3,2);
 | |
|   TP << data_PC.mid(0,2);
 | |
|   return TP;
 | |
| }
 | |
| 
 | |
| bool TVis_ric::create()
 | |
| {
 | |
|   TApplication::create();
 | |
| 
 | |
|   _tab_tra   = new TTable ("%TRA");
 | |
|   
 | |
|   _registra  = FALSE;
 | |
|   _ftrasfer  = TRUE;
 | |
|   
 | |
|   dispatch_e_menu (BAR_ITEM(1));
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVis_ric::destroy()
 | |
| { 
 | |
|   delete _tab_tra;
 | |
|   
 | |
|   return TApplication::destroy();
 | |
| }                                
 | |
| 
 | |
| bool TVis_ric::baipassa(TMask& m, KEY k)
 | |
| {
 | |
|   if (k == K_SHIFT+K_F12)
 | |
|   { 
 | |
|     m.enable(F_NULTRAS);
 | |
|     m.enable(F_DATAULTRAS);
 | |
|     m.enable(F_STD);
 | |
|     m.enable(F_USELAB);
 | |
|     m.enable(F_STATO);
 | |
|     m.enable(F_AGGCAUSALI);
 | |
|     m.enable(F_AGGCLIFO);
 | |
|     m.enable(F_AGGPCON);
 | |
|     m.enable(F_AGGIVD);
 | |
|     m.enable(F_FATTEM);
 | |
|     m.enable(F_FATTRIC);
 | |
|     
 | |
|     app()._registra = TRUE;
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVis_ric::stato_hnd (TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER)
 | |
|   {
 | |
|     TString std    = f.get();
 | |
|     TString uselab = f.mask().get(F_USELAB);                                 
 | |
|     TString chiave = f.mask().get(F_STATO);
 | |
|     
 | |
|     if (!app()._ftrasfer) //_ftrasfer dice se esiste il file trasfer o il suo record di controllo
 | |
|     {
 | |
|       if (std != "" && std != "*")
 | |
|         return warning_box("Valore non valido per stato ultima ricezione");  
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       if (std != "" && std != "T" && std != "C" && std != "M" && std != "*")
 | |
|         return warning_box("Valore non valido per stato ultima ricezione");  
 | |
|       
 | |
|       if (uselab != "" && (std == "" || std == "C" || std == "*") )
 | |
|         return warning_box("Valore non valido per stato ultima ricezione");    
 | |
|       
 | |
|       if (chiave != "" && (std == "" || std == "C" || std == "*") )
 | |
|         return warning_box("Valore non valido per stato ultima ricezione");    
 | |
|       
 | |
|     }
 | |
|   }                                       
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVis_ric::uselab_hnd (TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER)
 | |
|   {
 | |
|     TString std    = f.mask().get(F_STD);
 | |
|     TString uselab = f.get();
 | |
|     
 | |
|     if (std == "" && uselab != "")
 | |
|       return warning_box("Lo stato ultima ricezione non e' significativo: la sigla ultimo file elaborato non puo' essere significativa");  
 | |
|   }           
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVis_ric::chiave_hnd (TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER)
 | |
|   {
 | |
|     TString std    = f.mask().get(F_STD);
 | |
|     TString uselab = f.mask().get(F_USELAB);
 | |
|     TString chiave = f.get();
 | |
|     
 | |
|     if (std == "" && chiave != "")
 | |
|       return warning_box("Lo stato ultima ricezione non e' significativo: la chiave ultimo file elaborato non puo' essere significativa");  
 | |
|     
 | |
|     if (uselab == "" && chiave != "")  
 | |
|       return warning_box("La sigla ultimo file elaborato non e' significativa: la chiave ultimo file elaborato non puo' essere significativa");  
 | |
|   }           
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVis_ric::video()
 | |
| {                    
 | |
|   TDate dataultras;
 | |
|   
 | |
|   if (!esegui_controlli())
 | |
|     return FALSE;
 | |
|   
 | |
|   TMask msk ("cg2803a");
 | |
|   KEY  tasto;
 | |
|   
 | |
|   ditta_ricevente();       
 | |
|   
 | |
|   setta_campi_video(msk);
 | |
|   
 | |
|   msk.set_handler(baipassa); 
 | |
|   msk.set_handler(F_STD,      stato_hnd);
 | |
|   msk.set_handler(F_USELAB,   uselab_hnd);
 | |
|   msk.set_handler(F_STATO,    chiave_hnd);
 | |
|   
 | |
|   tasto = msk.run();
 | |
|   
 | |
|   if (tasto != K_ENTER)
 | |
|     return FALSE;  
 | |
|   
 | |
|   registra(msk);
 | |
|   
 | |
|   return FALSE;
 | |
| }
 | |
| 
 | |
| void TVis_ric::setta_campi_video(TMask& msk)
 | |
| { 
 | |
|   if (_ftrasfer)
 | |
|   {
 | |
|     msk.set(F_CODDITTARIC, _dittaric);
 | |
|     msk.set(F_RAGSOC,      _ragsoc_dittar);
 | |
|     msk.set(F_NULTRAS,     _nultras);
 | |
|     
 | |
|     if (_nultras != 0)
 | |
|     {
 | |
|       TString data1 = _dataultras.string();
 | |
|       msk.set(F_DATAULTRAS,  data1);
 | |
|     }
 | |
|     msk.set(F_USELAB,      _uselab);
 | |
|     msk.set(F_STATO,       _key);
 | |
|     msk.set(F_AGGCAUSALI,  _agg_cau);
 | |
|     msk.set(F_AGGCLIFO,    _agg_clifo);
 | |
|     msk.set(F_AGGPCON,     _agg_pcon);
 | |
|     msk.set(F_AGGIVD,      _agg_IVdir);
 | |
|     msk.set(F_FATTEM,      _riatt_att);
 | |
|     msk.set(F_FATTRIC,     _riatt_pas);       
 | |
|   }
 | |
|   
 | |
|   msk.set(F_STD,         _std);  
 | |
|   
 | |
|   msk.disable(F_CODDITTARIC);
 | |
|   msk.disable(F_RAGSOC);
 | |
|   msk.disable(F_NULTRAS);
 | |
|   msk.disable(F_DATAULTRAS);
 | |
|   msk.disable(F_STD);
 | |
|   msk.disable(F_USELAB);
 | |
|   msk.disable(F_STATO);
 | |
|   msk.disable(F_AGGCAUSALI);
 | |
|   msk.disable(F_AGGCLIFO);
 | |
|   msk.disable(F_AGGPCON);
 | |
|   msk.disable(F_AGGIVD);
 | |
|   msk.disable(F_FATTEM);
 | |
|   msk.disable(F_FATTRIC);
 | |
| }
 | |
| 
 | |
| void TVis_ric::registra(TMask& m)
 | |
| {
 | |
|   if (_registra)
 | |
|   {                
 | |
|     TString str;
 | |
|     
 | |
|     str             = m.get(F_NULTRAS);   
 | |
|     TString nultras = format("%03s", (const char*) str);
 | |
|     str             = m.get(F_DATAULTRAS);
 | |
|     TString datault = riconverti(str);
 | |
|     char    agg_cau = m.get(F_AGGCAUSALI)[0];
 | |
|     char    agg_clf = m.get(F_AGGCLIFO)[0];
 | |
|     char    agg_pco = m.get(F_AGGPCON)[0];
 | |
|     char    agg_IV  = m.get(F_AGGIVD)[0];
 | |
|     char    riat_at = m.get(F_FATTEM)[0];
 | |
|     char    riat_pa = m.get(F_FATTRIC)[0];
 | |
|     
 | |
|     TString flags (7);
 | |
|     flags[0] = agg_IV;
 | |
|     flags[1] = agg_cau;
 | |
|     flags[2] = agg_clf;
 | |
|     flags[3] = agg_pco;
 | |
|     flags[4] = riat_at;
 | |
|     flags[5] = riat_pa;
 | |
|     flags[6] = '\0';
 | |
|     
 | |
|     TString uselab  = m.get(F_USELAB);
 | |
|     if (uselab == "")
 | |
|       uselab = " ";
 | |
|     
 | |
|     str             = m.get(F_STATO);
 | |
|     TString chiave  = format("%-15s", (const char*) str);
 | |
|     
 | |
|     _control_rec.overwrite(nultras,29);
 | |
|     _control_rec.overwrite(datault,32);    
 | |
|     _control_rec.overwrite(flags,234);
 | |
|     _control_rec.overwrite(uselab,240);
 | |
|     _control_rec.overwrite(chiave,241);
 | |
|     
 | |
|     const int size = 256;
 | |
|     
 | |
|     _tras_file.write_control_rec(_control_rec, size);
 | |
|     
 | |
|     TString std = m.get(F_STD);
 | |
|     
 | |
|     setta_std(std);     
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TVis_ric::setta_std(const TString& flag)
 | |
| { 
 | |
|   TConfig conf (CONFIG_DITTA);
 | |
|   
 | |
|   conf.set("FlStTra", flag);
 | |
| }
 | |
| 
 | |
| void TVis_ric::ditta_ricevente()
 | |
| {
 | |
|   TLocalisamfile nditte (LF_NDITTE);
 | |
|   
 | |
|   nditte.setkey(1);
 | |
|   nditte.zero();
 | |
|   nditte.put(NDT_CODDITTA, _dittaric);
 | |
|   if (nditte.read() == NOERR)
 | |
|     _ragsoc_dittar = nditte.get(NDT_RAGSOC);
 | |
| }
 | |
| 
 | |
| long TVis_ric::leggi_tabella_tras()
 | |
| {               
 | |
|   TString dep;                               
 | |
|   long    ditta = 0;
 | |
|   
 | |
|   _tab_tra->zero();
 | |
|   dep = format("%10s%05d", (const char*) _nomeid, _dittainv);
 | |
|   _tab_tra->put("CODTAB", (const char*) dep);
 | |
|   if (_tab_tra->read() == NOERR)    
 | |
|     ditta           = _tab_tra->get_long("I0");
 | |
| 
 | |
|   return ditta;
 | |
| }
 | |
| 
 | |
| bool TVis_ric::leggi_trasfer()
 | |
| {     
 | |
|   TString data,tmp;
 | |
|   
 | |
|   _trasf = _tras_file.path(_dittaric);
 | |
|   _trasf << "\\trasfer";
 | |
|   
 | |
|   _tras_file.open(_trasf);
 | |
|   
 | |
|   if (_tras_file.exist())
 | |
|   {  
 | |
|     if (_tras_file.read_control_rec())
 | |
|     {
 | |
|       _control_rec = _tras_file.record();
 | |
|       _nomeid      = _control_rec.sub(15,25);
 | |
|       _dittainv    = _control_rec.sub(25,29);
 | |
|       _nultras     = _tras_file.nultras();
 | |
|       _dataultras  = _tras_file.dataultras();
 | |
|       _uselab      = _tras_file.ult_file();
 | |
|       _key         = _tras_file.key();
 | |
|       _agg_cau     = _control_rec.sub(235,236);
 | |
|       _agg_clifo   = _control_rec.sub(236,237);
 | |
|       _agg_pcon    = _control_rec.sub(237,238);
 | |
|       _agg_IVdir   = _control_rec.sub(234,235);
 | |
|       _riatt_att   = _control_rec.sub(238,239);
 | |
|       _riatt_pas   = _control_rec.sub(239,240);
 | |
|     }
 | |
|     else
 | |
|       _ftrasfer = FALSE;
 | |
|   } 
 | |
|   else
 | |
|     _ftrasfer = FALSE;
 | |
|   
 | |
|   return TRUE; 
 | |
| }
 | |
| 
 | |
| bool TVis_ric::esegui_controlli()
 | |
| {                    
 | |
|   TConfig conf(CONFIG_DITTA);           
 | |
|   
 | |
|   _std = conf.get("FlStTra");
 | |
|   
 | |
|   _dittaric = get_firm();
 | |
|   
 | |
|   if (!prefix().exist(_dittaric))
 | |
|     return error_box("Rilevati GRAVI ERRORI negli archivi: procedura interrotta");
 | |
| 
 | |
|   if (!leggi_trasfer())
 | |
|     return FALSE;      
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVis_ric::menu(MENU_TAG m)
 | |
| {
 | |
|   if (m == BAR_ITEM(1))
 | |
|     return video(); 
 | |
|   return FALSE;
 | |
| }
 |