Creazione campo conto fiscale

Fase2 :
Conversioni


git-svn-id: svn://10.65.10.50/trunk@1686 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1995-08-08 10:11:13 +00:00
parent 9d202e74c2
commit df2e9fd5c3
2 changed files with 144 additions and 7 deletions

View File

@ -5,7 +5,8 @@
#include <isam.h> #include <isam.h>
#include <mailbox.h> #include <mailbox.h>
#include <progind.h> #include <progind.h>
#include <prefix.h> #include <prefix.h>
#include <scanner.h>
#include <tabutil.h> #include <tabutil.h>
#include <urldefid.h> #include <urldefid.h>
#include <utility.h> #include <utility.h>
@ -19,7 +20,7 @@
#include <rmov.h> #include <rmov.h>
#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 // Applicazione di conversione archivi XBase, valida per tutti e 4 i tipi di DLL
@ -159,6 +160,7 @@ public:
void patch_com(void); void patch_com(void);
void zero_770(void); void zero_770(void);
void convert_patty(void); void convert_patty(void);
void convert_codconc(void);
TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {} TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {}
}; };
@ -233,7 +235,10 @@ bool TConversione_archivi::menu(MENU_TAG)
if (_codditta == 0) if (_codditta == 0)
zero_770(); zero_770();
case 5: case 5:
convert_patty(); convert_patty();
case 6:
if (_codditta == 0)
convert_codconc();
default: default:
break; break;
} }
@ -531,11 +536,11 @@ if (d.eod() > 0L)
} }
if (_codditta == 0) if (_codditta == 0)
{ {
TSystemisamfile f(LF_FORM);
TDir d; TDir d;
TSystemisamfile f(LF_FORM);
TFilename lf; TFilename lf;
d.get(LF_FORM); d.get(LF_FORM);
lf.format("%sstd/lf0054.txt", __ptprf); lf.format("%sstd/lf0054.txt", __ptprf);
if (fexist(lf) && fexist(d.filename())) 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 // Programma di conversione archivi speciale
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -551,7 +686,7 @@ int main(int argc,char** argv)
{ {
const int r = (argc > 1) ? atoi(argv[1]) : 0; const int r = (argc > 1) ? atoi(argv[1]) : 0;
if (r < 0 || r > 5) if (r < 0 || r > 6)
{ {
error_box(usage); error_box(usage);
return 100; return 100;

View File

@ -10,5 +10,7 @@ ACNV(5)=bacnv 2
ACNV(15)=bacnv 3 ACNV(15)=bacnv 3
[199505] [199505]
ACNV(5)=bacnv 5 ACNV(5)=bacnv 5
[199506]
ACNV(5)=bacnv 6
[EOF] [EOF]