Files correlati : ve6.exe Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 979 git-svn-id: svn://10.65.10.50/trunk@15623 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| // sistema il codice esercizio di tutti i movimenti
 | |
| #include "cg1305.h"
 | |
| #include "cglib01.h"
 | |
| 
 | |
| #include <mask.h>
 | |
| #include <progind.h>
 | |
| #include <recarray.h>
 | |
| #include <relation.h>
 | |
| #include <recset.h>
 | |
| 
 | |
| #include <mov.h>
 | |
| #include <rmov.h>
 | |
| #include <rmoviva.h>
 | |
| 
 | |
| static bool aggiorna_righe(TRecord_array& righe, int annoes)
 | |
| {
 | |
|   bool qualcuno_sbagliato = false;
 | |
|   for (int i = righe.last_row(); i > 0; i = righe.pred_row(i))
 | |
|   {
 | |
|     const TRectype& riga = righe.row(i);
 | |
|     const int anno = riga.get_int(RMV_ANNOES);
 | |
|     if (anno != annoes)
 | |
|     {
 | |
|       qualcuno_sbagliato = true;
 | |
|       break;
 | |
|     }
 | |
|   }
 | |
|   if (qualcuno_sbagliato)
 | |
|   {
 | |
|     // Serve per righe iva non zerofilled
 | |
|     TString4 sanno; sanno.format("%04d", annoes);  
 | |
|     righe.renum_key(RMV_ANNOES, sanno);
 | |
|     righe.rewrite();
 | |
|   }
 | |
|   return qualcuno_sbagliato;
 | |
| }
 | |
| 
 | |
| void TAgg_codes::main_loop()
 | |
| {
 | |
| 	open_files(LF_MOV, LF_RMOV, LF_RMOVIVA, LF_TAB, 0);
 | |
| 
 | |
|   TMask msk("cg1300d");
 | |
|   if (msk.run() == K_ENTER)
 | |
|   {
 | |
|     long modified_recs=0L;
 | |
|     int err = NOERR;
 | |
| 
 | |
|     TISAM_recordset mov("USE MOV");
 | |
|     const TRecnotype nrec = mov.items();
 | |
| 
 | |
|     if (nrec > 0) // Dummy test for progind destruction
 | |
|     {
 | |
|       TEsercizi_contabili esercizi;
 | |
|       TProgind pi(nrec, TR("Aggiornamento in corso..."), true, true);
 | |
|       TRecord_array righe(LF_RMOV, RMV_NUMRIG);
 | |
|       TRecord_array righeiva(LF_RMOVIVA, RMI_NUMRIG);
 | |
|       TRectype riga(LF_RMOV);
 | |
|       TRectype rigaiva(LF_RMOVIVA);
 | |
| 
 | |
|       for (bool ok = mov.move_first(); ok && err == NOERR; ok = mov.move_next())
 | |
|       { 
 | |
|         if (!pi.addstatus(1))
 | |
|           break;
 | |
|     
 | |
|         const TDate data = mov.get(MOV_DATACOMP).as_date();
 | |
|         const int oldcodes = mov.get(MOV_ANNOES).as_int();
 | |
|         const int newcodes = esercizi.date2esc(data);
 | |
|         bool cambiato = false;
 | |
|   
 | |
|         if (oldcodes != newcodes)
 | |
|         {
 | |
|           TRectype& curr = mov.cursor()->curr();
 | |
|           curr.put(MOV_ANNOES, newcodes);
 | |
|           err = curr.rewrite(mov.cursor()->file());
 | |
|           cambiato = err == NOERR;
 | |
|         }
 | |
| 
 | |
|         if (err == NOERR)
 | |
|         {
 | |
|           const long numreg = mov.get(MOV_NUMREG).as_int();
 | |
|           riga.put(RMV_NUMREG, numreg);
 | |
|           righe.read(riga);
 | |
|           cambiato |= aggiorna_righe(righe, newcodes);
 | |
| 
 | |
|           rigaiva.put(RMI_NUMREG, numreg);
 | |
|           righeiva.read(rigaiva);
 | |
|           cambiato |= aggiorna_righe(righeiva, newcodes);
 | |
|         }
 | |
| 
 | |
|         if (cambiato)
 | |
|           modified_recs++;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     if (err != NOERR) 
 | |
|       warning_box(FR("Aggiornamento codice esercizio interrotta. Rilevato errore %d in riscrittura"),err);
 | |
|     else 
 | |
|       message_box(FR("Aggiornamento codice esercizio completata. Modificati %ld movimenti.\nE' necessario procedere col ricalcolo saldi"), modified_recs);
 | |
|   }
 | |
| }
 |