campo-sirio/cg/cg1305.cpp
alex 96f33c01ee Patch level : 4.0 979
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
2007-09-17 15:33:04 +00:00

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);
}
}