169 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //*****************************************************
 | |
| //* Aggiornamento codice attivita' su progressivi IVA *
 | |
| //*****************************************************
 | |
| #include <mov.h>
 | |
| #include "cg1300.h"  
 | |
| #include "cg1304.h"
 | |
| #include "cg2103.h"
 | |
| 
 | |
| HIDDEN TAgg_codatt& app() { return (TAgg_codatt&) main_app(); }
 | |
| 
 | |
| bool TAgg_codatt::create()
 | |
| {
 | |
|   TApplication::create();
 | |
|   
 | |
|   _tab = new TLocalisamfile(LF_TAB);
 | |
|   
 | |
|   dispatch_e_menu (BAR_ITEM(1));
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TAgg_codatt::destroy()
 | |
| { 
 | |
|   delete _tab;
 | |
|   
 | |
|   return TApplication::destroy();
 | |
| }                                
 | |
| 
 | |
| bool TAgg_codatt::menu(MENU_TAG m)
 | |
| {
 | |
|   TProgind* pri;
 | |
|   TMask msk("cg1300c");
 | |
|   
 | |
|   /*
 | |
|      TConfig conf(CONFIG_DITTA);
 | |
|      int annoiva = conf.get_int("AnLiIv");
 | |
|      
 | |
|      msk.set(F_ANNO, annoiva);  
 | |
|      */
 | |
|   while (msk.run() == K_ENTER)
 | |
|   {
 | |
|     pri = new TProgind(2,"Aggiornamento in corso...",FALSE,TRUE,50);
 | |
|     _pass = msk.get_bool(F_PASS);
 | |
|     if (_pass)
 | |
|     {   
 | |
|       _anno = msk.get_int(F_ANNO);   
 | |
|       _da   = msk.get(F_DA);  //se c'e' _da c'e' anche _a e viceversa
 | |
|       _a    = msk.get(F_A);   //_da e' la vecchia attivita'
 | |
|       //_a e' la nuova attivita'
 | |
|       pri->addstatus(1);
 | |
|       aggiorna_att("PIM");
 | |
|       aggiorna_att("PUM");
 | |
|       aggiorna_att("POM");        
 | |
|       aggiorna_att("PAM");
 | |
|       aggiorna_att("PPA");
 | |
|       aggiorna_att("PLA");
 | |
|       aggiorna_att("PLM");
 | |
|     }
 | |
|     else 
 | |
|     {
 | |
|       pri->addstatus(1);
 | |
|       cancella_rec();
 | |
|     }  
 | |
|     pri->addstatus(1);
 | |
|     msk.reset();
 | |
|     //msk.reset(F_ANNO);    
 | |
|     //msk.reset(F_DA);
 | |
|     //msk.reset(F_A);
 | |
|     delete pri;
 | |
|     message_box("Aggiornamento codice attivita' completato");
 | |
|   }         
 | |
|   return FALSE;
 | |
| }  
 | |
| 
 | |
| void TAgg_codatt::cancella_rec()
 | |
| {
 | |
|   TTable plm("PLM"); 
 | |
|   for (plm.first(); !plm.eof(); plm.next()) 
 | |
|     plm.remove();
 | |
| 
 | |
|   TTable pum("PUM");
 | |
|   for (pum.first(); !pum.eof(); pum.next()) 
 | |
|     pum.remove();
 | |
|   
 | |
|   TTable pom("POM");  
 | |
|   for (pom.first(); !pom.eof(); pom.next()) 
 | |
|     pom.remove(); 
 | |
| 
 | |
|   TTable pam("PAM");    
 | |
|   for (pam.first(); !pam.eof(); pam.next()) 
 | |
|     pam.remove();
 | |
| 
 | |
|   TTable ppa("PPA");
 | |
|   for (ppa.first(); !ppa.eof(); ppa.next()) 
 | |
|     ppa.remove(); 
 | |
| 
 | |
|   //non e' indicata la vecchia attivita' => :
 | |
|   TTable pim("PIM");
 | |
|   for (pim.first(); !pim.eof(); pim.next()) 
 | |
|   {
 | |
|     const TString80 codtab = pim.get("CODTAB");
 | |
|     int anno = atoi(codtab.mid(0,4));
 | |
|     const TString16 codatt = codtab.mid(4,5);
 | |
|     const TString16 codreg = codtab.mid(10,3);
 | |
|     if (codreg.not_empty())
 | |
|     {
 | |
|       TRegistro reg(codreg,anno);
 | |
|       if (!reg.name().empty()) //se esiste quel registro (ma perche' non dovrebbe?)
 | |
|       {
 | |
|         const TString16 cda = reg.attivita();
 | |
|         if (codatt != cda)
 | |
|         {
 | |
|           TRectype vecchio (pim.curr());
 | |
|           TRectype nuovo (pim.curr());
 | |
|           const TString80 cc = codtab.sub(9);
 | |
|           TString80 cod;
 | |
|           cod << anno << cda << cc;
 | |
|           nuovo.put("CODTAB", cod);
 | |
|           pim.write(nuovo);
 | |
|           pim.read(vecchio);
 | |
|           pim.remove(); 
 | |
|         }    
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   
 | |
|   TTable pla("PLA");
 | |
|   for (pla.first(); !pla.eof(); pla.next()) 
 | |
|     pla.remove(); 
 | |
|   /***
 | |
|     TTable rmb("RMB");
 | |
|     for (rmb.first(); !rmb.eof(); rmb.next()) 
 | |
|     rmb.remove(); 
 | |
|     ***/
 | |
| }
 | |
| 
 | |
| void TAgg_codatt::aggiorna_att(const char* nome)
 | |
| {
 | |
|   TTable tab(nome); 
 | |
|   tab.setkey(1);
 | |
|   tab.zero();
 | |
|   TString16 chiave; 
 | |
|   TString16 old_att(_da); old_att.right_just(5,'0');
 | |
|   TString16 new_att(_a); new_att.right_just(5,'0');
 | |
|   chiave << _anno << old_att;
 | |
|   tab.put("CODTAB", chiave);
 | |
|   TRectype curr (tab.curr());
 | |
|   tab.read(_isgteq);
 | |
|   for (; !tab.eof(); tab.next())
 | |
|   { 
 | |
|     if (tab.curr() != curr) break;
 | |
|     
 | |
|     const TString80 codtab = tab.get("CODTAB");
 | |
|     //const TString16 cod_att = codtab.mid(4,5); //e' uguale a old_att
 | |
|     if (old_att != new_att)
 | |
|     {
 | |
|       TRectype vecchio (tab.curr());
 | |
|       TRectype nuovo (tab.curr());
 | |
|       const TString80 cc = codtab.sub(9);
 | |
|       TString80 cod;
 | |
|       cod << _anno << new_att << cc;
 | |
|       nuovo.put("CODTAB", cod);
 | |
|       tab.write(nuovo);
 | |
|       tab.read(vecchio);
 | |
|       tab.remove();
 | |
|     }  
 | |
|   }
 | |
| }  
 | |
| 
 |