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 <mailbox.h>
#include <progind.h>
#include <prefix.h>
#include <prefix.h>
#include <scanner.h>
#include <tabutil.h>
#include <urldefid.h>
#include <utility.h>
@ -19,7 +20,7 @@
#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
@ -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;

View File

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