diff --git a/ba/bacnv.cpp b/ba/bacnv.cpp index 62502acc6..7968dfec6 100755 --- a/ba/bacnv.cpp +++ b/ba/bacnv.cpp @@ -11,7 +11,7 @@ #include -#define usage "Errore - uso : bacnv [1|2] ditta" +#define usage "Errore - uso : bacnv [1|2|3] ditta" class TConversione_archivi : public TApplication { @@ -30,6 +30,10 @@ public: void contropartita_rmov(); void liala(const char* table); + bool patch_uff(TRectype & rec, const char * const fnames[]); + bool collate(TRectype & rec, const char * f1, const char * f2); + void patch_com(void); + void add_alici(void); TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {} }; @@ -85,7 +89,13 @@ bool TConversione_archivi::menu(MENU_TAG) case 2: liala("LIA"); liala("PLA"); - break; + break; + case 3: + if (_codditta == 0) + { + patch_com(); + add_alici(); + } default: break; } @@ -195,6 +205,62 @@ void TConversione_archivi::liala(const char* table) lia.remove(); } +/////////////////////////////////////////////////////////// +// Sposta i codici uffici imposte e uffici IVA nei comuni +/////////////////////////////////////////////////////////// + +bool TConversione_archivi::collate(TRectype & rec, const char * f1, const char * f2) +{ + if (rec.get(f1).empty()) + { + TString16 s(rec.get(f2)); + + if (s.not_empty()) + { + rec.put(f1, s); + rec.zero(f2); + return TRUE; + } + } + return FALSE; +} + +bool TConversione_archivi::patch_uff(TRectype & rec, const char * const fnames[]) +{ + bool updated = collate(rec, fnames[1], fnames[2]); + updated |= collate(rec, fnames[0], fnames[1]); + updated |= collate(rec, fnames[1], fnames[2]); + return updated; +} + +void TConversione_archivi::patch_com() +{ + TLocalisamfile comuni(LF_COMUNI); + const char * const uff_iidd[] = {"UFFIIDD1", "UFFIIDD2", "UFFIIDD3"} ; + const char * const uff_iva[] = {"UFFIVA1", "UFFIVA2", "UFFIVA3"} ; + const TRecnotype nitems = comuni.items(); + TProgind p(nitems ? nitems : 1, format("Conversione comuni"), FALSE, TRUE, 70); + + for (comuni.first(); comuni.good(); comuni.next()) + { + p.addstatus(1); + bool updated = patch_uff(comuni.curr(), uff_iidd); + updated = patch_uff(comuni.curr(), uff_iva) || updated; + if (updated) + comuni.rewrite(); + } +} + +/////////////////////////////////////////////////////////// +// Aggiunge le aliquote ICI per anno +/////////////////////////////////////////////////////////// + +void TConversione_archivi::add_alici() +{ + TSystemisamfile alici(LF_ALICI); + + alici.load("baici.txt"); +} /////////////////////////////////////////////////////////// // Programma di conversione archivi speciale @@ -204,7 +270,7 @@ int main(int argc,char** argv) { const int r = (argc > 1) ? atoi(argv[1]) : 0; - if (r <= 0 || r > 2) + if (r <= 0 || r > 3) { error_box(usage); return 100;