From df2e9fd5c33bd8d37730fa46569584464dfe5102 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 8 Aug 1995 10:11:13 +0000 Subject: [PATCH] Creazione campo conto fiscale Fase2 : Conversioni git-svn-id: svn://10.65.10.50/trunk@1686 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/bacnv.cpp | 149 ++++++++++++++++++++++++++++++++++++++++++++++++--- ba/fconv.ini | 2 + 2 files changed, 144 insertions(+), 7 deletions(-) diff --git a/ba/bacnv.cpp b/ba/bacnv.cpp index bfb8cd6c4..6a5df36bc 100755 --- a/ba/bacnv.cpp +++ b/ba/bacnv.cpp @@ -5,7 +5,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -19,7 +20,7 @@ #include -#define usage "Errore - uso : bacnv [1|2|3|4] ditta" +#define usage "Errore - uso : bacnv [1|2|3|4|5|6] ditta" /////////////////////////////////////////////////////////////////////////////////////////////////////// // Applicazione di conversione archivi XBase, valida per tutti e 4 i tipi di DLL @@ -159,6 +160,7 @@ public: void patch_com(void); void zero_770(void); void convert_patty(void); + void convert_codconc(void); TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {} }; @@ -233,7 +235,10 @@ bool TConversione_archivi::menu(MENU_TAG) if (_codditta == 0) zero_770(); case 5: - convert_patty(); + convert_patty(); + case 6: + if (_codditta == 0) + convert_codconc(); default: break; } @@ -531,11 +536,11 @@ if (d.eod() > 0L) } if (_codditta == 0) -{ - TSystemisamfile f(LF_FORM); +{ TDir d; + TSystemisamfile f(LF_FORM); TFilename lf; - + d.get(LF_FORM); lf.format("%sstd/lf0054.txt", __ptprf); if (fexist(lf) && fexist(d.filename())) @@ -543,6 +548,136 @@ if (_codditta == 0) } } +void TConversione_archivi::convert_codconc() +{ +// costruisce le tabelle di confronto + TAssoc_array conc_cessate; + TScanner oc(format("%sstd/oconc00.txt", __ptprf)); + + for (TString16 s(oc.line()); s.not_empty(); s = oc.line()) + conc_cessate.add(s); +// (fase 1) +// scorre il file anagrafica + TLocalisamfile anagr(LF_ANAG); + TLocalisamfile comuni(LF_COMUNI); + int nerr = 0; +// se il file anagrafica non é vuoto + const int anag_items = anagr.items(); + if (anag_items > 0) + { + TProgind p(anag_items, "Conversione archivio anagrafica", FALSE, TRUE, 70); + + p.setstatus(1L); + +// per ogni anagrafica blocca il record + for (anagr.first(_lock); anagr.good(); anagr.next(_lock)) + { +// legge il codice comune + TString16 com = anagr.get("COMRF"); + + if (com.empty()) + com = anagr.get("COMRES"); +// se il comune non é vuoto recupera il comune + if (com.not_empty()) + { + comuni.zero(); + comuni.put("COM", com); +// se non é un comune di una nuova provincia e il comune esiste + if (!conc_cessate.is_key(com)) + { + if (comuni.read() == NOERR) + { +// legge il codice concessione + TString16 conc(comuni.get("UFFCONC")); +// se il codice concessione é cessato + if (conc_cessate.is_key(conc)) + { +// scrive il codice concessione sull' anagrafica + anagr.put("UFFCONC", conc); + anagr.rewrite(); + } +// altrimenti sblocca il record + else + anagr.read(_iscurr, _unlock); + } +// altrimenti sblocca il record e conteggia l' errore + else + { + anagr.read(_iscurr, _unlock); + nerr++; + } + } + } +// altrimenti sblocca il record + else + anagr.read(_iscurr, _unlock); + } + } +// segnala gli errori + if (nerr) + error_box("La conversione della anagrafiche non ha trovato %d comuni", nerr); + nerr = 0; + +// (fase 2) +// vuota la tabella concessioni + { + TTable uffconc("%UCC"); + + for (uffconc.first(_lock); uffconc.good(); uffconc.next(_lock)) + uffconc.remove(); + } +// carica la nuova + { + TSystemisamfile tabcom(LF_TABCOM); + + tabcom.load(format("%sstd/nconc00.txt", __ptprf)); + } +// (fase 3) +// scorre il file con i codici comuni e le nuove concessioni + TScanner nc(format("%sstd/ncom00.txt", __ptprf)); + TProgind p(comuni.items(), "Conversione archivio comuni", FALSE, TRUE, 70); +#ifdef DBG + TTable uffconc("%UCC"); + TToken_string concerr; +#endif + + p.setstatus(1L); +// per ogni comune + for (TToken_string ts(nc.line()); ts.not_empty(); ts = nc.line()) + { + p.addstatus(1); +// cerca il comune + comuni.zero(); + comuni.put("COM", ts.get()); +// se esiste + if (comuni.read(_isequal, _lock) == NOERR) + { +// aggiorna il codice concessione sul comune in oggetto + comuni.put("UFFCONC", ts.get()); + comuni.rewrite(); +#ifdef DBG + uffconc.zero(); + uffconc.put("CODTAB", comuni.get("UFFCONC")); + if (uffconc.read() != NOERR) + concerr.add(comuni.get("UFFCONC")); +#endif + } +// altrimenti sblocca il record e conteggia l' errore + else + { + comuni.read(_iscurr, _unlock); + nerr++; + } + } +// segnala gli errori + if (nerr) + error_box("La conversione dei comuni non ne ha trovati %d", nerr); +#ifdef DBG + if (concerr.not_empty()) + error_box("Le seguenti concessioni sono inesistenti %s", (const char *) concerr); +#endif +} + /////////////////////////////////////////////////////////// // Programma di conversione archivi speciale /////////////////////////////////////////////////////////// @@ -551,7 +686,7 @@ int main(int argc,char** argv) { const int r = (argc > 1) ? atoi(argv[1]) : 0; - if (r < 0 || r > 5) + if (r < 0 || r > 6) { error_box(usage); return 100; diff --git a/ba/fconv.ini b/ba/fconv.ini index 20b60a1e9..9ffc71dc5 100755 --- a/ba/fconv.ini +++ b/ba/fconv.ini @@ -10,5 +10,7 @@ ACNV(5)=bacnv 2 ACNV(15)=bacnv 3 [199505] ACNV(5)=bacnv 5 +[199506] +ACNV(5)=bacnv 6 [EOF]