// sistema il codice esercizio di tutti i movimenti #include #include #include #include #include "cglib01.h" #include "cg1300.h" #include "cg1305.h" #include #include #include inline TAgg_codes& app() { return (TAgg_codes&) main_app(); } bool TAgg_codes::create() { _mov = new TLocalisamfile(LF_MOV); _rmov = new TLocalisamfile(LF_RMOV); _rmoviva = new TLocalisamfile(LF_RMOVIVA); return TSkeleton_application::create(); } bool TAgg_codes::destroy() { delete _mov; delete _rmov; delete _rmoviva; return TSkeleton_application::destroy(); } void TAgg_codes::main_loop() { TMask msk("cg1300d"); if (msk.run() == K_ENTER) calcola_codes(); } void TAgg_codes::calcola_codes() { TLocalisamfile& mov = get_mov(); TEsercizi_contabili esercizi; TDate data; long modified_recs=0L; long nrecs = (long) mov.eod(); int err = NOERR; TProgind p(nrecs, TR("Aggiornamento in corso..."), TRUE, TRUE, 100); TRecord_array righe(LF_RMOV,RMV_NUMRIG); TRecord_array righeiva(LF_RMOVIVA,RMI_NUMRIG); TRectype riga(LF_RMOV); TRectype rigaiva(LF_RMOVIVA); TString s_codes; for (mov.first(); !mov.eof() && err == NOERR; mov.next()) { p.addstatus(1); data=mov.get_date(MOV_DATACOMP); const int codes = mov.get_int(MOV_ANNOES); const int newcodes = esercizi.date2esc(data); if (codes != newcodes) { mov.put(MOV_ANNOES,newcodes); err = mov.rewrite(); const long numreg = mov.get_long(MOV_NUMREG); riga.put(RMV_NUMREG,numreg); rigaiva.put(RMI_NUMREG,numreg); righe.read(riga); righeiva.read(rigaiva); righe.renum_key(RMV_ANNOES,newcodes); s_codes.format("%04d",newcodes); righeiva.renum_key(RMI_ANNOES,s_codes); if (err == NOERR) { err = righe.rewrite(); if (err == NOERR) err = righeiva.rewrite(); if (err == NOERR) 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); }