264 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			264 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //Apertura nuovo esercizio IVA
 | |
| #include "nditte.h"
 | |
| #include "cg4501.h"
 | |
| #include "cg4500b.h"
 | |
| 
 | |
| bool TAp_iva::mask_annoiva (TMask_field& f, KEY k)
 | |
| {
 | |
|   if ( (k == K_ENTER) && f.to_check(k) )
 | |
|     //if ( (k == K_TAB) && f.mask().is_running() )
 | |
|   {
 | |
|     int annoiva = f.mask().get_int(F_ANNOIVA);
 | |
|     TConfig conf(CONFIG_DITTA);
 | |
|     int annoivap = atoi(conf.get("AnLiIv"));
 | |
|     if (annoiva != annoivap + 1)
 | |
|     {
 | |
|       f.warning_box("Il nuovo anno esercizio IVA deve essere successivo all'anno esercizio IVA precedente");
 | |
|       return FALSE;
 | |
|     }    
 | |
|   }
 | |
|   return TRUE;
 | |
| }  
 | |
| 
 | |
| bool TAp_iva::create()
 | |
| {
 | |
|   _nditte = new TLocalisamfile(LF_NDITTE);
 | |
|   _reg    = new TTable("REG");
 | |
|   _lia    = new TTable("%LIA"); 
 | |
|   _lbu    = new TTable("%LBU");
 | |
| 
 | |
|   enable_menu_item(M_FILE_NEW, FALSE);
 | |
| 
 | |
|   dispatch_e_menu (BAR_ITEM(1));
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TAp_iva::destroy()
 | |
| {
 | |
|   delete _nditte;
 | |
|   delete _reg;
 | |
|   delete _lia;
 | |
|   delete _lbu;
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TAp_iva::apertura_iva()
 | |
| {
 | |
|   TTable TabReg ("REG"); 
 | |
|   TTable TabLia ("%LIA");
 | |
|   TTable TabLbu ("%LBU");
 | |
|   TLocalisamfile nditte (LF_NDITTE);
 | |
|   TString annoiva (4);
 | |
|   TDate data;
 | |
|   bool ok = FALSE;
 | |
| 
 | |
|   int annop = atoi(_annop);
 | |
|   annoiva = format("%04d", _annoiva);
 | |
|   
 | |
|   //viene aggiornata la tabella LIA (liquidazione iva annuale)
 | |
|   TabLia.zero();
 | |
|   TabLia.put ("CODTAB", format("%05ld%04d", get_firm(), _annoiva));
 | |
|   if (TabLia.read() == NOERR)
 | |
|     TabLia.remove();
 | |
|   
 | |
|   TabLia.zero();
 | |
|   TRectype newrec (TabLia.curr());   
 | |
|   TabLia.put ("CODTAB", format("%05ld%04d", get_firm(), annop));
 | |
|   
 | |
|   if (TabLia.read() == NOERR)
 | |
|   {
 | |
|     ok = TRUE;
 | |
|     newrec = TabLia.curr();
 | |
|     newrec.put("CODTAB", format("%05ld%04d", get_firm(), _annoiva));
 | |
|     newrec.put("S7", _frequenza);
 | |
|     newrec.zero("R0");
 | |
|     TabLia.write(newrec);
 | |
|   }   
 | |
|   if (!ok)
 | |
|   {
 | |
|     error_box("Non esiste il record relativo all'anno iva precedente sulla tabella liquidazione annuale iva");
 | |
|     return FALSE;
 | |
|   }  
 | |
|   
 | |
|   //viene aggiornata la tabella del libro unico. 
 | |
|   TabLbu.zero();
 | |
|   TabLbu.put ("CODTAB", annoiva);
 | |
|   
 | |
|   TRectype r (TabLbu.curr());
 | |
|   
 | |
|   TabLbu.read(_isgteq);
 | |
|   
 | |
|   for (; !TabLbu.eof(); TabLbu.next())
 | |
|   {
 | |
|     if (TabLbu.curr() != r) break;
 | |
|     
 | |
|     TabLbu.remove();      
 | |
|   } 
 | |
| 
 | |
|   ok = FALSE;
 | |
|   TabLbu.zero();
 | |
|   TRectype nrec (TabLbu.curr());   
 | |
|   TabLbu.put ("CODTAB", _annop);
 | |
|   
 | |
|   TRectype rec (TabLbu.curr());
 | |
|   
 | |
|   TabLbu.read(_isgteq);
 | |
|   
 | |
|   for (; !TabLbu.eof(); TabLbu.next())
 | |
|   { 
 | |
|     if (TabLbu.curr() != rec) break;
 | |
|     
 | |
|     TRecnotype nr = TabLbu.recno();    
 | |
|     TString cod_lib = TabLbu.get("CODTAB");
 | |
|     cod_lib = cod_lib.mid(4,3);
 | |
|     ok = TRUE;
 | |
|     nrec = TabLbu.curr();
 | |
|     TString16 cod;
 | |
|     cod << _annoiva << cod_lib; 
 | |
|     nrec.put("CODTAB", cod);
 | |
|     nrec.put("I0", 0L);
 | |
|     
 | |
|     TabLbu.write(nrec);  
 | |
|     TabLbu.readat(nr);
 | |
|   }   
 | |
|   /*
 | |
|      if (!ok)
 | |
|      {
 | |
|      error_box("Non esistono i registri del libro unico relativi all'anno iva precedente");
 | |
|      return FALSE;
 | |
|      }
 | |
|   */
 | |
|   
 | |
|   //viene aggiornata la tabella dei registri. 
 | |
|   TabReg.zero();
 | |
|   TabReg.put ("CODTAB", annoiva);
 | |
|   
 | |
|   TRectype rr (TabReg.curr());
 | |
|   
 | |
|   TabReg.read(_isgteq);
 | |
|   
 | |
|   for (; !TabReg.eof(); TabReg.next())
 | |
|   {
 | |
|     if (TabReg.curr() != rr) break;
 | |
|     
 | |
|     int tiporeg = TabReg.get_int("I0");
 | |
|     if ( (tiporeg == 1)||(tiporeg == 2)||(tiporeg == 3) )
 | |
|       TabReg.remove();
 | |
|   }
 | |
|   
 | |
|   ok = FALSE;
 | |
|   TabReg.zero();
 | |
|   TRectype nuovo (TabReg.curr());   
 | |
|   TabReg.put ("CODTAB", _annop);
 | |
|   
 | |
|   TRectype recc (TabReg.curr());
 | |
|   
 | |
|   TabReg.read(_isgteq);
 | |
|   
 | |
|   for (; !TabReg.eof(); TabReg.next())
 | |
|   { 
 | |
|     if (TabReg.curr() != recc) break;
 | |
|     
 | |
|     TRecnotype nr = TabReg.recno();
 | |
|     int tiporeg     = TabReg.get_int("I0");
 | |
|     TString cod_reg = TabReg.get("CODTAB");
 | |
|     //TDate  data_vid = TabReg.get_date("D0");
 | |
|     //data_vid.addyear();
 | |
|     cod_reg = cod_reg.mid(4,3);
 | |
|     if ( (tiporeg == 1)||(tiporeg == 2)||(tiporeg==3) )
 | |
|     {
 | |
|       ok = TRUE;
 | |
|       nuovo  = TabReg.curr();
 | |
|       TString16 cod;
 | |
|       cod << annoiva << cod_reg;  
 | |
|       nuovo.put("CODTAB", cod);
 | |
|       nuovo.put("I1", 0L);
 | |
|       nuovo.put("I2", 0L);
 | |
|       nuovo.put("I4", 0L);
 | |
|       nuovo.put("I5", 0L);
 | |
|       nuovo.put("I6", 0L);
 | |
|       nuovo.put("S1", "");
 | |
|       //nuovo.put("D0", data_vid);
 | |
|       nuovo.put("D0", data);
 | |
|       nuovo.put("D2", data);
 | |
|       nuovo.put("D3", data);
 | |
|       nuovo.put("R1", real(0.0));
 | |
|       nuovo.put("R2", real(0.0));
 | |
|       
 | |
|       TabReg.write(nuovo);
 | |
|       TabReg.readat(nr);
 | |
|     }   
 | |
|   }
 | |
|   /*
 | |
|      if (!ok)
 | |
|      {
 | |
|      error_box("Non esistono i registri iva relativi all'anno iva precedente");
 | |
|      return FALSE;
 | |
|      }  
 | |
|   */
 | |
|   
 | |
|   //viene aggiornato l'anno iva sui parametri ditta 
 | |
|   TConfig conf(CONFIG_DITTA);
 | |
|   conf.set("AnLiIv", annoiva);
 | |
| 
 | |
|   //sull'anagrafica ditte viene aggiornata la frequenza versamento
 | |
|   nditte.zero();
 | |
|   nditte.put("CODDITTA", _ditta);
 | |
|   if (nditte.read() == NOERR)
 | |
|   {
 | |
|     nditte.put(NDT_FREQVIVA, _frequenza);
 | |
|     nditte.rewrite();
 | |
|   }
 | |
|   message_box("Apertura nuovo esercizio IVA completata");
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TAp_iva::menu(MENU_TAG m)
 | |
| {
 | |
|   TTable TabLia ("%LIA");
 | |
|   TLocalisamfile nditte (LF_NDITTE);
 | |
|   TMask msk ("cg4500b");
 | |
| 
 | |
|   TConfig conf(CONFIG_DITTA);
 | |
|   _annop    = conf.get("AnLiIv");
 | |
|   int aivap = atoi(_annop);
 | |
|   int anno = aivap+1;
 | |
|   
 | |
|   TabLia.zero();    
 | |
|   TString16 chiave; chiave.format("%05ld%04d", get_firm(), anno);
 | |
|   TabLia.put("CODTAB",chiave);
 | |
|   if (TabLia.read() == NOERR)
 | |
|     msk.set(F_FREQUENZA, TabLia.get("S7"));
 | |
|   else
 | |
|   {  
 | |
|     TabLia.zero();         
 | |
|     chiave = "";
 | |
|     chiave.format("%05ld%04d", get_firm(), aivap);
 | |
|     TabLia.put("CODTAB", chiave);
 | |
|     if (TabLia.read() == NOERR)
 | |
|       msk.set(F_FREQUENZA, TabLia.get("S7"));
 | |
|     else
 | |
|     {      
 | |
|       nditte.zero();
 | |
|       nditte.put("CODDITTA", get_firm());
 | |
|       if (nditte.read() == NOERR)
 | |
|         msk.set(F_FREQUENZA, nditte.get(NDT_FREQVIVA));
 | |
|     }
 | |
|   }
 | |
|   
 | |
|   msk.set(F_ANNOIVA, aivap+1);  
 | |
| 
 | |
|   msk.set_handler (F_ANNOIVA, mask_annoiva);
 | |
| 
 | |
|   if (msk.run() == K_ENTER)
 | |
|   {
 | |
|     _ditta     = msk.get_long(F_CODDITTA); 
 | |
|     _annoiva   = msk.get_int(F_ANNOIVA);   
 | |
|     _frequenza = msk.get(F_FREQUENZA)[0];
 | |
|     
 | |
|     apertura_iva();
 | |
|   }
 | |
|   return FALSE;
 | |
| } |