1994-12-05 18:54:04 +00:00
|
|
|
#include <xvt.h>
|
|
|
|
|
|
|
|
#include <applicat.h>
|
|
|
|
#include <isam.h>
|
|
|
|
#include <mailbox.h>
|
|
|
|
#include <progind.h>
|
|
|
|
#include <prefix.h>
|
1995-02-15 17:00:56 +00:00
|
|
|
#include <tabutil.h>
|
1994-12-05 18:54:04 +00:00
|
|
|
#include <urldefid.h>
|
|
|
|
#include <utility.h>
|
|
|
|
|
|
|
|
#include <rmov.h>
|
|
|
|
|
1995-04-19 13:47:12 +00:00
|
|
|
#define usage "Errore - uso : bacnv [1|2|3] ditta"
|
1994-12-05 18:54:04 +00:00
|
|
|
|
|
|
|
class TConversione_archivi : public TApplication
|
|
|
|
{
|
|
|
|
int _nconv;
|
|
|
|
long _codditta;
|
|
|
|
long _oldditta;
|
|
|
|
int _error;
|
|
|
|
|
1995-02-15 17:00:56 +00:00
|
|
|
protected: // TApplication
|
1994-12-05 18:54:04 +00:00
|
|
|
virtual bool create() ;
|
|
|
|
virtual bool destroy() ;
|
|
|
|
virtual bool menu(MENU_TAG);
|
|
|
|
|
1995-02-15 17:00:56 +00:00
|
|
|
public:
|
1994-12-05 18:54:04 +00:00
|
|
|
bool convert_rmov(TLocalisamfile & rmov, TArray & recs, int nrecs);
|
|
|
|
void contropartita_rmov();
|
|
|
|
|
1995-02-15 17:00:56 +00:00
|
|
|
void liala(const char* table);
|
1995-04-19 13:47:12 +00:00
|
|
|
bool patch_uff(TRectype & rec, const char * const fnames[]);
|
|
|
|
bool collate(TRectype & rec, const char * f1, const char * f2);
|
|
|
|
void patch_com(void);
|
1995-02-15 17:00:56 +00:00
|
|
|
|
1994-12-05 18:54:04 +00:00
|
|
|
TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {}
|
|
|
|
};
|
|
|
|
|
|
|
|
bool TConversione_archivi::create()
|
|
|
|
{
|
1994-12-07 11:07:54 +00:00
|
|
|
TApplication::create();
|
|
|
|
|
1994-12-05 18:54:04 +00:00
|
|
|
if (argc() < 3)
|
|
|
|
{
|
|
|
|
_error = 101;
|
|
|
|
TMessage msg("ba1100", 0, format("%d", _error));
|
|
|
|
|
|
|
|
msg.send();
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_oldditta = get_firm();
|
|
|
|
_codditta = atol(argv(argc() - 1));
|
|
|
|
_nconv = atoi(argv(1));
|
|
|
|
if (_codditta != _oldditta)
|
|
|
|
{
|
1995-03-24 16:49:18 +00:00
|
|
|
if (_codditta == 0) prefix().set("com");
|
1994-12-05 18:54:04 +00:00
|
|
|
else set_firm(_codditta);
|
|
|
|
}
|
|
|
|
dispatch_e_menu(MENU_ITEM(1));
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TConversione_archivi::destroy()
|
|
|
|
{
|
|
|
|
if (_codditta != _oldditta)
|
|
|
|
{
|
1995-03-24 16:49:18 +00:00
|
|
|
if (_oldditta == 0) prefix().set("com");
|
1994-12-05 18:54:04 +00:00
|
|
|
else set_firm(_oldditta);
|
|
|
|
}
|
|
|
|
if (_error > 0)
|
|
|
|
{
|
|
|
|
TMessage msg("ba1100", 0, format("%d", _error));
|
|
|
|
msg.send();
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TConversione_archivi::menu(MENU_TAG)
|
|
|
|
{
|
|
|
|
switch (_nconv)
|
|
|
|
{
|
|
|
|
case 1:
|
|
|
|
contropartita_rmov(); break;
|
1995-02-15 17:00:56 +00:00
|
|
|
case 2:
|
|
|
|
liala("LIA");
|
|
|
|
liala("PLA");
|
1995-04-19 13:47:12 +00:00
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
if (_codditta == 0)
|
|
|
|
patch_com();
|
1994-12-05 18:54:04 +00:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
1995-02-15 17:00:56 +00:00
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
// Cambia i movimenti contabili in modo che abbiano un
|
|
|
|
// conto di contropartita e non una riga di riferimento
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
1994-12-05 18:54:04 +00:00
|
|
|
bool TConversione_archivi::convert_rmov(TLocalisamfile & rmov, TArray & recs, int nrecs)
|
|
|
|
{
|
|
|
|
const TRecnotype pos = rmov.recno();
|
|
|
|
|
|
|
|
for (int i = 0; i < nrecs; i++)
|
|
|
|
{
|
|
|
|
TRectype & r0 = (TRectype &) recs[i];
|
|
|
|
const int rcontr = r0.get_int(RMV_RCONTR) - 1;
|
|
|
|
|
|
|
|
if (rcontr >= 0 && rcontr < nrecs)
|
|
|
|
{
|
|
|
|
const TRectype & r1 = (const TRectype &) recs[rcontr];
|
|
|
|
|
|
|
|
r0.put(RMV_TIPOCC, r1.get(RMV_TIPOC));
|
|
|
|
r0.put(RMV_GRUPPOC, r1.get_int(RMV_GRUPPO));
|
|
|
|
r0.put(RMV_CONTOC, r1.get_int(RMV_CONTO));
|
|
|
|
r0.put(RMV_SOTTOCONTOC, r1.get_long(RMV_SOTTOCONTO));
|
|
|
|
}
|
|
|
|
r0.zero(RMV_RCONTR);
|
|
|
|
if (rmov.rewrite(r0) != NOERR)
|
|
|
|
{
|
|
|
|
const long reg = r0.get_long(RMV_NUMREG);
|
|
|
|
error_box("Non riesco ad aggiornare la riga contabile %ld / %d\nErrore n. %d", reg, i + 1, rmov.status());
|
|
|
|
rmov.readat(pos);
|
|
|
|
_error = 102;
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rmov.readat(pos);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
void TConversione_archivi::contropartita_rmov()
|
|
|
|
{
|
|
|
|
TDir d;
|
|
|
|
d.get(LF_RMOV);
|
|
|
|
if (d.eox() == 0) return;
|
|
|
|
|
|
|
|
TLocalisamfile rmov(LF_RMOV);
|
|
|
|
const TRecnotype nitems = rmov.items();
|
|
|
|
TArray recs;
|
|
|
|
long oldreg = -1;
|
|
|
|
long reg = -1;
|
|
|
|
int nrow = 0;
|
|
|
|
TProgind p(nitems ? nitems : 1,
|
|
|
|
format("Conversione righe di movimento della ditta %ld", get_firm()),
|
1995-02-15 17:00:56 +00:00
|
|
|
FALSE, TRUE, 70);
|
1994-12-05 18:54:04 +00:00
|
|
|
for (rmov.first(); rmov.good(); rmov.next())
|
|
|
|
{
|
|
|
|
p.addstatus(1);
|
|
|
|
reg = rmov.get_long(RMV_NUMREG);
|
|
|
|
if (oldreg != reg)
|
|
|
|
{
|
|
|
|
if (oldreg > 0)
|
|
|
|
if (convert_rmov(rmov, recs, nrow) == FALSE)
|
|
|
|
return;
|
|
|
|
oldreg = reg;
|
|
|
|
nrow = 0;
|
|
|
|
}
|
|
|
|
recs.add(rmov.curr(), nrow++);
|
|
|
|
CHECKD(nrow == rmov.get_int(RMV_NUMRIG), "Missed row ", nrow);
|
|
|
|
}
|
|
|
|
if (oldreg > 0)
|
|
|
|
if (convert_rmov(rmov, recs, nrow) == FALSE)
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
1995-02-15 17:00:56 +00:00
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
// Passa le tabelle LIA e PLA a %LIA e %PLA
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
void TConversione_archivi::liala(const char* table)
|
|
|
|
{
|
1995-02-21 15:10:12 +00:00
|
|
|
TString16 tab(table);
|
1995-02-15 17:00:56 +00:00
|
|
|
|
|
|
|
TTable lia(tab);
|
|
|
|
tab.insert("%", 0);
|
|
|
|
TTable cia(tab);
|
|
|
|
|
|
|
|
const long n = lia.items()+1;
|
|
|
|
TProgind p(n, format("Conversione tabella %s della ditta %ld", table, get_firm()), FALSE, TRUE, 70);
|
|
|
|
|
|
|
|
TString16 firm; firm.format("%05ld", get_firm());
|
|
|
|
TString16 codtab;
|
|
|
|
|
|
|
|
for (lia.first(); lia.good(); lia.next())
|
|
|
|
{
|
|
|
|
codtab = lia.get("CODTAB");
|
|
|
|
codtab.insert(firm, 0);
|
|
|
|
lia.put("CODTAB", codtab);
|
|
|
|
cia.write(lia.curr());
|
|
|
|
}
|
|
|
|
|
|
|
|
for (lia.first(); lia.good(); lia.next())
|
|
|
|
lia.remove();
|
1994-12-05 18:54:04 +00:00
|
|
|
}
|
|
|
|
|
1995-04-19 13:47:12 +00:00
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
// 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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1995-02-15 17:00:56 +00:00
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
// Programma di conversione archivi speciale
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
1994-12-05 18:54:04 +00:00
|
|
|
int main(int argc,char** argv)
|
|
|
|
{
|
|
|
|
const int r = (argc > 1) ? atoi(argv[1]) : 0;
|
|
|
|
|
1995-04-19 13:47:12 +00:00
|
|
|
if (r <= 0 || r > 3)
|
1994-12-05 18:54:04 +00:00
|
|
|
{
|
|
|
|
error_box(usage);
|
|
|
|
return 100;
|
|
|
|
}
|
|
|
|
|
1995-02-15 17:00:56 +00:00
|
|
|
TConversione_archivi a ;
|
|
|
|
a.run(argc, argv, "Conversione archivi");
|
|
|
|
|
1994-12-05 18:54:04 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|