From c13f9a1847c6c204c4c0645bc416cad0fb5c0aae Mon Sep 17 00:00:00 2001 From: angelo Date: Thu, 5 Sep 1996 16:19:36 +0000 Subject: [PATCH] Aggiunta conversione dei saldi. Stato delle conversioni con rispettivo livello: FORMS e SALDI ==> 11 CA7 ==> 12 IVA ==> da definire Questo in quanto ancora non si sa se uscira' prima il 770 o CG. git-svn-id: svn://10.65.10.50/trunk@3528 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/bacnv.cpp | 126 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 123 insertions(+), 3 deletions(-) diff --git a/ba/bacnv.cpp b/ba/bacnv.cpp index 8e7c040e9..a179c28e9 100755 --- a/ba/bacnv.cpp +++ b/ba/bacnv.cpp @@ -21,7 +21,12 @@ #endif #include +#include #include +#include + +#include "..\cg\cglib.h" + #define usage "Errore - uso : bacnv [1|2|3|4|5|6|7|8|9|10|11|12] ditta" @@ -171,9 +176,11 @@ public: void convert_codreg() const; void convert_lia_pim() const; void build_ver_table() const; + void convert_forms() const; + void sort_sal(int year) const; + void convert_saldi() const; void convert_ca7() const; void convert_tabiva() const; - void convert_forms() const; TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {} }; @@ -280,11 +287,14 @@ bool TConversione_archivi::menu(MENU_TAG) break; case 11: if (_codditta == 0) - convert_ca7(); + convert_forms(); + else + convert_saldi(); break; case 12: if (_codditta == 0) - convert_forms(); + convert_ca7(); + break; default: break; } @@ -1110,6 +1120,116 @@ void TConversione_archivi::convert_forms() const } } +void TConversione_archivi::sort_sal(int year) const +{ + TSystemisamfile saldi(LF_SALDI); saldi.open(_excllock); + TLocalisamfile rmov(LF_RMOV); + TLocalisamfile causali(LF_CAUSALI); + TLocalisamfile mov(LF_MOV); + TSaldo_agg sal; + + int gruppo, conto; + long oldnumreg = 0L, sottoconto; + TString msg("Riordino archivio saldi ditta "); + msg << _codditta; + msg << " in corso\nLettura archivio movimenti..."; + TProgind prnd(rmov.items(),msg, FALSE,TRUE,30); + + causali.zero(); + mov.setkey(1); + rmov.first(); + sal.reset(); + sal.set_anno_es(year); + sal.clear_saldi(year); + long numreg = 0L; + tiposal tsal = normale; + bool provvis = FALSE; + TDate datareg; + + while (!rmov.eof()) + { + if (year == rmov.get_int(RMV_ANNOES)) + { + numreg = rmov.get_long(RMV_NUMREG); + + gruppo = rmov.get_int(RMV_GRUPPO); + conto = rmov.get_int(RMV_CONTO); + sottoconto = rmov.get_long(RMV_SOTTOCONTO); + bool scaricato = FALSE; + + if (numreg != oldnumreg) + { + if (oldnumreg !=0) + { + if (sal.items() > 0) + sal.registra(); + } + oldnumreg = numreg; + mov.zero(); + mov.put(MOV_NUMREG, numreg); + mov.read(); + CHECK(mov.good(),"Archivi movimenti e righe inconsistenti"); + + causali.zero(); + const char* codcaus = mov.get(MOV_CODCAUS); + + tsal = normale; + if (*codcaus) // cerca causale per determinare il tipoo del saldo + { + causali.put(CAU_CODCAUS, codcaus); + const int err = causali.read(); + if (err == NOERR) + { + const char ac = causali.get_char(CAU_MOVAP); + if (ac == 'A') + tsal = apertura; + else + if (ac == 'C') + tsal = chiusura; + } + } + + scaricato = mov.get_bool(MOV_SCARCON); + provvis = mov.get(MOV_PROVVIS).not_empty(); + datareg = mov.get_date(MOV_DATAREG); + + sal.reset(); + sal.set_anno_es(year); + sal.set_tipo_saldo(tsal); + sal.set_movprovv(provvis); + sal.set_data_ulmov(datareg); + sal.set_num_ulmov(oldnumreg); + } + const char sezione = rmov.get(RMV_SEZIONE)[0]; + real importo(rmov.get(RMV_IMPORTO)); + + sal.aggiorna(gruppo, conto, sottoconto, importo, sezione, TRUE, scaricato); + } + rmov.next(); + prnd.addstatus(1); + do_events(); + } + + if (sal.items() > 0) + sal.registra(); + + saldi.close(); +} + + +void TConversione_archivi::convert_saldi() const +// Effettua il ricalcolo saldi per tutti gli esercizi della ditta corrente +{ + TTable esc("ESC"); + + for (esc.first();esc.good();esc.next()) + { + const int year = atoi(esc.get("CODTAB")); + if (year == 0) continue; + sort_sal(year); + } +} + /////////////////////////////////////////////////////////// // Programma di conversione archivi speciale ///////////////////////////////////////////////////////////