247 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			247 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include "cglib04.h"
 | |
| #include "cg2801.h"
 | |
| 
 | |
| bool TDitta_ric::create()
 | |
| {
 | |
|   TApplication::create();
 | |
| 
 | |
|   _nditte   = new TLocalisamfile (LF_PCON);
 | |
|   
 | |
|   dispatch_e_menu (BAR_ITEM(1));
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TDitta_ric::destroy()
 | |
| { 
 | |
|   delete _nditte;
 | |
|   
 | |
|   return TApplication::destroy();
 | |
| }                                
 | |
| 
 | |
| bool TDitta_ric::set()
 | |
| {
 | |
|   TMask msk ("cg2801a");
 | |
|   KEY     tasto;
 | |
|   
 | |
|   _old_ditta = get_firm();
 | |
|   
 | |
|   tasto = msk.run();
 | |
|   
 | |
|   if (tasto != K_ENTER) return FALSE;
 | |
| 
 | |
|   _dittaric = msk.get_int(F_CODDITTA);
 | |
|   set_firm(_dittaric);
 | |
|   
 | |
|   if (!esegui_controlli()) 
 | |
|   {
 | |
|     set_firm(_old_ditta);
 | |
|     return FALSE;
 | |
|   }
 | |
|   
 | |
|   //set_firm(_dittaric);
 | |
|   
 | |
|   return FALSE;
 | |
| }
 | |
| 
 | |
| bool TDitta_ric::leggi_trasfer()
 | |
| { 
 | |
|   _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();
 | |
|       _uselab      = _tras_file.ult_file();
 | |
|       _key         = _tras_file.key();
 | |
|       _sigle_file  = _tras_file.sigle_file();
 | |
|       _nrec_file   = _tras_file.nrec_file();
 | |
|     }
 | |
|     else
 | |
|       return error_box("Rilevati gravi errori negli archivi:procedura interrotta");
 | |
|   } 
 | |
|   else
 | |
|     return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata");
 | |
|   
 | |
|   return TRUE; 
 | |
| }
 | |
| 
 | |
| bool TDitta_ric::esegui_controlli()
 | |
| {                    
 | |
|   TConfig conf(CONFIG_DITTA);           
 | |
|   
 | |
|   _std = conf.get("FlStTra");
 | |
| 
 | |
|   if (!prefix().exist(_dittaric))
 | |
|     return error_box("Codice ditta NON PRESENTE in archivio oppure NON ATTIVATO in contabilita' generale");
 | |
| 
 | |
|   if (_std == "")
 | |
|   {
 | |
|     if (!leggi_trasfer())
 | |
|       return FALSE;      
 | |
|     
 | |
|     if (_uselab != " ")
 | |
|       return error_box("Ultimo trasferimento NON COMPLETATO: completarlo");  
 | |
|     
 | |
|     if (!controlli())
 | |
|       return FALSE;
 | |
|   }
 | |
| 
 | |
|   TConfig cfd (CONFIG_DITTA);
 | |
|   
 | |
|   TString std = cfd.get("FlStTra"); 
 | |
|   if (std == "")
 | |
|     return error_box ("Non risultano TRASFERIMENTI ATTIVI sulla ditta richiesta"); 
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TDitta_ric::controlli()
 | |
| { 
 | |
|   TString    ana_com,pcon_cau,uselab;
 | |
|   bool       fatto = FALSE;
 | |
|   
 | |
|   TConfig conf(CONFIG_DITTA);           
 | |
|   
 | |
|   ana_com  = conf.get("AnCfCm","cg");
 | |
|   pcon_cau = conf.get("PcTcCm","cg");
 | |
|   
 | |
|   if (ana_com == "X" || pcon_cau == "X")
 | |
|   {
 | |
|     if (ana_com == "X")
 | |
|     {
 | |
|       int p = _sigle_file.find('A');
 | |
|       if (p >= 0)
 | |
|       {
 | |
|         _sigle_file.overwrite(" ",p);
 | |
|         _nrec_file.overwrite("000000", p * 6);
 | |
|       }
 | |
|     }                                                            
 | |
|     
 | |
|     if (pcon_cau == "X")
 | |
|     {
 | |
|       int p = _sigle_file.find('W');
 | |
|       if (p >= 0)
 | |
|       {
 | |
|         _sigle_file.overwrite(" ",p);
 | |
|         _nrec_file.overwrite("000000", p * 6);
 | |
|       }       
 | |
|       
 | |
|       p = _sigle_file.find('P');
 | |
|       if (p >= 0)
 | |
|       {
 | |
|         _sigle_file.overwrite(" ",p);
 | |
|         _nrec_file.overwrite("000000", p * 6);
 | |
|       }       
 | |
|     }
 | |
|     
 | |
|     _control_rec.overwrite(_sigle_file,38);
 | |
|     _control_rec.overwrite(_nrec_file,47);
 | |
|     _tras_file.write_control_rec(_control_rec,256);
 | |
|     leggi_record_controllo();
 | |
|   }
 | |
| 
 | |
|   setta_parametri_record("","T",FALSE);  
 | |
|   
 | |
|   int k = 0;
 | |
|   
 | |
|   for ( int j = 0; j < _sigle_file.len(); j++)
 | |
|   {                      
 | |
|     TString sigla  = _sigle_file.mid(j,1);     
 | |
|     long    nrec   = atol(_nrec_file.mid(k,6));
 | |
|     
 | |
|     if (sigla != "Z" && sigla != "U" && sigla != "B")
 | |
|     {  
 | |
|       if (nrec != 0)
 | |
|       {  
 | |
|         uselab = sigla;
 | |
|         _control_rec.overwrite(uselab,240);
 | |
|         _control_rec.overwrite("               ",241);
 | |
|         fatto = TRUE;
 | |
|         break;
 | |
|       }  
 | |
|     } 
 | |
|     k += 6;
 | |
|   } 
 | |
|   
 | |
|   if (!fatto)
 | |
|   {
 | |
|     int p = _sigle_file.find('Z');
 | |
|     if (p >= 0) 
 | |
|     {
 | |
|       setta_parametri_record("","C",FALSE);      
 | |
|       _control_rec.overwrite(" ",240);
 | |
|       _control_rec.overwrite("               ",241);
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       setta_parametri_record("","*",FALSE);      
 | |
|       _control_rec.overwrite(" ",240);
 | |
|       _control_rec.overwrite("               ",241);   
 | |
|       fremove(_trasf);
 | |
|       setta_parametri_record(""," ",FALSE);      
 | |
|     }
 | |
|   }
 | |
|   
 | |
|   char agg_cau   = _control_rec.sub(235,236)[0];
 | |
|   char agg_clifo = _control_rec.sub(236,237)[0];
 | |
|   char agg_pcon  = _control_rec.sub(237,238)[0];
 | |
|   
 | |
|   if (agg_cau != ' ')
 | |
|     agg_cau = 'D';
 | |
|   if (agg_clifo != ' ')
 | |
|     agg_clifo = 'D';
 | |
|   if (agg_pcon != ' ')
 | |
|     agg_pcon = 'D';
 | |
|   
 | |
|   TString agg(4);
 | |
|   
 | |
|   agg[0] = agg_cau;
 | |
|   agg[1] = agg_clifo;
 | |
|   agg[2] = agg_pcon;
 | |
|   agg[3] = '\0';
 | |
|   
 | |
|   _control_rec.overwrite(agg,235);
 | |
|   
 | |
|   const int size = 256;
 | |
|   
 | |
|   if (!_tras_file.write_control_rec(_control_rec, size)) 
 | |
|     return FALSE; 
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void TDitta_ric::leggi_record_controllo()
 | |
| {
 | |
|   _tras_file.read_control_rec();
 | |
|   _control_rec = _tras_file.record();
 | |
| }
 | |
| 
 | |
| void TDitta_ric::setta_parametri_record(const TString& sigla,const TString& flag,bool uselab)
 | |
| { 
 | |
|   TConfig conf (CONFIG_DITTA);
 | |
|   
 | |
|   conf.set("FlStTra", flag);
 | |
| 
 | |
|   if (uselab)
 | |
|   {
 | |
|     leggi_record_controllo();
 | |
|     _control_rec.overwrite(sigla,240);
 | |
|     
 | |
|     const int size = 256;
 | |
|     
 | |
|     _tras_file.write_control_rec(_control_rec, size);
 | |
|   }
 | |
| }
 | |
| 
 | |
| bool TDitta_ric::menu(MENU_TAG m)
 | |
| {
 | |
|   if (m == BAR_ITEM(1))
 | |
|     return set(); 
 | |
|   return FALSE;
 | |
| }
 |