2001-04-30 14:22:43 +00:00
|
|
|
|
#include <applicat.h>
|
|
|
|
|
#include <automask.h>
|
|
|
|
|
#include <isam.h>
|
|
|
|
|
#include <mask.h>
|
|
|
|
|
#include <prefix.h>
|
|
|
|
|
#include <progind.h>
|
|
|
|
|
#include <relation.h>
|
|
|
|
|
#include <sheet.h>
|
|
|
|
|
#include <tabutil.h>
|
|
|
|
|
|
|
|
|
|
#include <nditte.h>
|
|
|
|
|
|
|
|
|
|
#include "ce0.h"
|
|
|
|
|
#include "ce0900a.h"
|
|
|
|
|
#include "../cg/cglib01.h"
|
|
|
|
|
|
|
|
|
|
#define CAMPODITTA "CAMPODITTA"
|
|
|
|
|
|
|
|
|
|
class TConversione_ce_mask : public TAutomask
|
|
|
|
|
{
|
|
|
|
|
TRelation* _rel;
|
|
|
|
|
TCursor* _cur;
|
|
|
|
|
TCursor_sheet* _sheet;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
2001-09-19 14:52:11 +00:00
|
|
|
|
bool already_converted(long ditta);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
TCursor_sheet& sheet() {return *_sheet;}
|
|
|
|
|
void lista_ditte(TAssoc_array& ditte);
|
|
|
|
|
TConversione_ce_mask();
|
|
|
|
|
~TConversione_ce_mask();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static bool esiste_ditta(const TRelation* rel)
|
|
|
|
|
{
|
|
|
|
|
const long ditta = rel->curr().get_long(NDT_CODDITTA);
|
|
|
|
|
return prefix().exist(ditta);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TConversione_ce_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
|
|
|
{
|
|
|
|
|
switch (o.dlg())
|
|
|
|
|
{
|
|
|
|
|
case F_SCELTADITTE:
|
|
|
|
|
if (e == fe_button)
|
|
|
|
|
{
|
|
|
|
|
sheet().run();
|
|
|
|
|
set(F_DITTESELEZ, sheet().checked());
|
|
|
|
|
}
|
|
|
|
|
if (e == fe_close)
|
|
|
|
|
if (sheet().checked() == 0)
|
2003-05-12 15:03:40 +00:00
|
|
|
|
return error_box(TR("Non sono state selezionate ditte da convertire"));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
break;
|
|
|
|
|
case F_DITTESELEZ:
|
|
|
|
|
if (e == fe_init)
|
|
|
|
|
o.set(sheet().checked());
|
|
|
|
|
break;
|
|
|
|
|
case F_MINISTERIALI:
|
|
|
|
|
if (e == fe_init)
|
|
|
|
|
{
|
|
|
|
|
TTable cgr("%CGR");
|
|
|
|
|
const bool empty = cgr.first() != NOERR;
|
|
|
|
|
o.set(empty ? "X": " ");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
2001-09-19 14:52:11 +00:00
|
|
|
|
bool TConversione_ce_mask::already_converted(long ditta)
|
|
|
|
|
{
|
|
|
|
|
prefix().set_codditta(ditta);
|
|
|
|
|
TTable cce("CCE");
|
|
|
|
|
int err = cce.first();
|
|
|
|
|
if (err != NOERR)
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
TFilename ditce = prefix().get_studio();
|
|
|
|
|
ditce.add("cesp/ditce");
|
2002-07-03 14:48:48 +00:00
|
|
|
|
TExternisamfile oldfile(ditce,(bool) FALSE,(bool) FALSE);
|
2002-12-20 16:15:03 +00:00
|
|
|
|
|
2001-09-19 14:52:11 +00:00
|
|
|
|
for (err = oldfile.first(); err == NOERR; err = oldfile.next())
|
|
|
|
|
{
|
|
|
|
|
long d = oldfile.get_long("CACDD");
|
|
|
|
|
if (d == ditta)
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
2001-04-30 14:22:43 +00:00
|
|
|
|
void TConversione_ce_mask::lista_ditte(TAssoc_array& ditte)
|
|
|
|
|
{
|
|
|
|
|
ditte.destroy();
|
|
|
|
|
for (long i = sheet().items()-1; i >= 0; i--)
|
|
|
|
|
{
|
|
|
|
|
if (sheet().checked(i))
|
|
|
|
|
{
|
2001-09-19 14:52:11 +00:00
|
|
|
|
const TString16 codditta = sheet().row(i).get(1);
|
|
|
|
|
bool add = TRUE;
|
|
|
|
|
if (already_converted(atol(codditta)))
|
2003-05-12 15:03:40 +00:00
|
|
|
|
add = yesno_box(FR("La ditta %s potrebbe gi<67> essere stata converita:\n"
|
|
|
|
|
"Si desidera continuare ugualmente, azzerando gli archivi attuali?"),
|
2001-09-19 14:52:11 +00:00
|
|
|
|
(const char*)codditta);
|
|
|
|
|
if (add)
|
|
|
|
|
ditte.add(codditta);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TConversione_ce_mask::TConversione_ce_mask()
|
|
|
|
|
: TAutomask("ce0900a")
|
|
|
|
|
{
|
|
|
|
|
_rel = new TRelation(LF_NDITTE);
|
|
|
|
|
_cur = new TCursor(_rel);
|
|
|
|
|
_cur->set_filterfunction(esiste_ditta);
|
2003-05-12 15:03:40 +00:00
|
|
|
|
_sheet = new TCursor_sheet(_cur, " |CODDITTA|RAGSOC", TR("Selezione ditte"), HR("@1|Codice|Ragione sociale@50"), 0, 1);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
_sheet->check(-1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TConversione_ce_mask::~TConversione_ce_mask()
|
|
|
|
|
{
|
|
|
|
|
delete _sheet;
|
|
|
|
|
delete _cur;
|
|
|
|
|
delete _rel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class TConversione_cespiti: public TSkeleton_application
|
|
|
|
|
{
|
|
|
|
|
FILE * _log;
|
|
|
|
|
TAssoc_array _ditte;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual bool create(void);
|
|
|
|
|
virtual void main_loop();
|
|
|
|
|
virtual bool destroy(void) ;
|
|
|
|
|
void open_log();
|
|
|
|
|
void write_log(const char * line);
|
|
|
|
|
void close_log();
|
|
|
|
|
int zap_file(int lf) const;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
void zap_table(const char* tab) const;
|
|
|
|
|
|
2001-04-30 14:22:43 +00:00
|
|
|
|
public:
|
|
|
|
|
bool daconvertire(const long ditta);
|
|
|
|
|
int conv_file(const TFilename& ofname, int nflogicnum);
|
|
|
|
|
int conv_inifile(const TFilename& ofname, const char* ofpar, int nflogicnum);
|
|
|
|
|
int conv_tab(const TFilename& ofname, const char* cod);
|
|
|
|
|
int conv_par(const TFilename& ofname, const char* ofpar, int which_config);
|
2001-06-25 10:41:20 +00:00
|
|
|
|
int get_codesc(const TDate& date, const bool fatal = FALSE);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
const char conv_imptmc(int cod);
|
|
|
|
|
TConversione_cespiti() {}
|
|
|
|
|
virtual ~TConversione_cespiti() {}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
bool TConversione_cespiti::create()
|
|
|
|
|
{
|
|
|
|
|
return TSkeleton_application::create();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TConversione_cespiti::destroy()
|
|
|
|
|
{
|
|
|
|
|
return TSkeleton_application::destroy();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TConversione_cespiti::daconvertire(const long ditta)
|
|
|
|
|
{
|
|
|
|
|
TString16 strditta;
|
|
|
|
|
strditta.format("%ld", ditta);
|
|
|
|
|
return _ditte.is_key(strditta);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TConversione_cespiti::main_loop()
|
|
|
|
|
{
|
|
|
|
|
TConversione_ce_mask msk;
|
2003-05-12 15:03:40 +00:00
|
|
|
|
if (msk.run() == K_ENTER && yesno_box(TR("Confermare la conversione dei cespiti?")))
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
msk.lista_ditte(_ditte);
|
2002-02-26 16:20:19 +00:00
|
|
|
|
if (_ditte.items() == 0)
|
|
|
|
|
{
|
2003-05-12 15:03:40 +00:00
|
|
|
|
warning_box(TR("Nessuna ditta selezionata"));
|
2002-02-26 16:20:19 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
2001-07-24 13:28:55 +00:00
|
|
|
|
open_log();
|
|
|
|
|
TString80 s;
|
|
|
|
|
write_log("");
|
|
|
|
|
write_log("**********************************");
|
2003-05-12 15:03:40 +00:00
|
|
|
|
s.format(TR("Conversione cespiti del %s"), (const char *) TDate(TODAY).string());
|
2001-07-24 13:28:55 +00:00
|
|
|
|
write_log(s);
|
|
|
|
|
write_log("**********************************");
|
|
|
|
|
write_log("");
|
2001-04-30 14:22:43 +00:00
|
|
|
|
|
2001-07-24 13:28:55 +00:00
|
|
|
|
const char* studio = prefix().get_studio();
|
|
|
|
|
const bool converti_ministeriali = msk.get_bool(F_MINISTERIALI);
|
|
|
|
|
// conversione archivi
|
|
|
|
|
TFilename file = studio;
|
|
|
|
|
file << "cesp/ammce";
|
|
|
|
|
conv_file(file, 136);
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/ammmv";
|
|
|
|
|
conv_file(file, 137);
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/catdi";
|
|
|
|
|
conv_file(file, 138);
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/cespi";
|
|
|
|
|
conv_file(file, 139);
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/movam";
|
|
|
|
|
conv_file(file, 141);
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/movce";
|
|
|
|
|
conv_file(file, 142);
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/salce";
|
|
|
|
|
conv_file(file, 143);
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/coll01";
|
|
|
|
|
conv_inifile(file, "COLL01", 140);
|
|
|
|
|
// conversione tabelle
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/ditcb";
|
|
|
|
|
conv_tab(file, "CCB");
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/ditce";
|
|
|
|
|
conv_tab(file, "CCE");
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/tabimp";
|
|
|
|
|
conv_tab(file, "CIM");
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/tabloc";
|
|
|
|
|
conv_tab(file, "LOC");
|
|
|
|
|
if (converti_ministeriali)
|
|
|
|
|
{
|
2001-04-30 14:22:43 +00:00
|
|
|
|
file = studio;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
file << "cesp/tabat";
|
|
|
|
|
conv_tab(file, "%CAT");
|
2001-04-30 14:22:43 +00:00
|
|
|
|
file = studio;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
file << "cesp/tabca";
|
|
|
|
|
conv_tab(file, "%CAC");
|
2001-04-30 14:22:43 +00:00
|
|
|
|
file = studio;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
file << "cesp/tabgr";
|
|
|
|
|
conv_tab(file, "%CGR");
|
2001-04-30 14:22:43 +00:00
|
|
|
|
file = studio;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
file << "cesp/limit";
|
|
|
|
|
conv_tab(file, "%CLM");
|
2001-04-30 14:22:43 +00:00
|
|
|
|
file = studio;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
file << "cesp/tmvce";
|
|
|
|
|
conv_tab(file, "%TMC");
|
|
|
|
|
}
|
|
|
|
|
// conversione parametri
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/ditc01";
|
|
|
|
|
conv_par(file, "DITC01", CONFIG_DITTA);
|
|
|
|
|
file = studio;
|
|
|
|
|
file << "cesp/ditca";
|
|
|
|
|
conv_par(file, "DITCA", CONFIG_DITTA);
|
|
|
|
|
message_box("Conversione completata");
|
|
|
|
|
close_log();
|
|
|
|
|
}
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TConversione_cespiti::open_log()
|
|
|
|
|
{
|
|
|
|
|
TFilename log;
|
|
|
|
|
|
|
|
|
|
log << "ceconv.log";
|
2001-06-25 10:41:20 +00:00
|
|
|
|
_log = fopen(log,"w");
|
2001-04-30 14:22:43 +00:00
|
|
|
|
if (_log == NULL)
|
2003-05-12 15:03:40 +00:00
|
|
|
|
fatal_box(FR("Non posso aprire il file di log della conversione(%s)"), (const char *) log);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TConversione_cespiti::write_log(const char * line)
|
|
|
|
|
{
|
|
|
|
|
fprintf(_log,"%s\n", line);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TConversione_cespiti::close_log()
|
|
|
|
|
{
|
|
|
|
|
fclose(_log);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int TConversione_cespiti::conv_file(const TFilename& ofname, int nflogicnum)
|
|
|
|
|
{
|
|
|
|
|
long oldditta = -1;
|
|
|
|
|
TDir d;
|
|
|
|
|
d.get(nflogicnum);
|
|
|
|
|
d.eod() = 0L;
|
|
|
|
|
d.put(nflogicnum);
|
2001-07-24 13:28:55 +00:00
|
|
|
|
|
2002-07-03 14:48:48 +00:00
|
|
|
|
TExternisamfile oldfile(ofname,(bool) FALSE,(bool) FALSE);
|
2002-12-20 16:15:03 +00:00
|
|
|
|
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TLocalisamfile* newfile = NULL;
|
|
|
|
|
const TRectype& oldrec = oldfile.curr();
|
|
|
|
|
TString s;
|
2003-05-12 15:03:40 +00:00
|
|
|
|
s.format(FR("Conversione tabella %s"), (const char*) ofname);
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TProgind pi(oldfile.eod(), s, FALSE, TRUE);
|
|
|
|
|
|
|
|
|
|
TAssoc_array converted;
|
2001-04-30 14:22:43 +00:00
|
|
|
|
|
2001-07-24 13:28:55 +00:00
|
|
|
|
bool to_convert = FALSE;
|
|
|
|
|
for (int err = oldfile.first(); err == NOERR; err = oldfile.next())
|
|
|
|
|
{
|
|
|
|
|
pi.addstatus(1);
|
|
|
|
|
// mi posiziono sulla ditta indicata
|
|
|
|
|
const long ditta = oldfile.get_long("CODDITTA");
|
|
|
|
|
// i record sono ordinati per ditta!
|
|
|
|
|
if (oldditta != ditta)
|
|
|
|
|
{
|
|
|
|
|
oldditta = ditta;
|
|
|
|
|
to_convert = daconvertire(ditta);
|
|
|
|
|
if (to_convert)
|
|
|
|
|
{
|
|
|
|
|
if (newfile)
|
|
|
|
|
delete newfile;
|
|
|
|
|
set_firm(ditta);
|
|
|
|
|
|
|
|
|
|
TString16 str_ditta; str_ditta.format("%ld", ditta);
|
|
|
|
|
if (!converted.is_key(str_ditta))
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
zap_file(nflogicnum);
|
|
|
|
|
converted.add(str_ditta);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
newfile = new TLocalisamfile(nflogicnum);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
2001-07-24 13:28:55 +00:00
|
|
|
|
else
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2003-05-12 15:03:40 +00:00
|
|
|
|
s.format(FR("La ditta %ld indicata nel file %s non <20> stata selezionata per la conversione"), ditta, (const char*) ofname);
|
2001-07-24 13:28:55 +00:00
|
|
|
|
write_log(s);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!to_convert)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
// creo nuovo record
|
|
|
|
|
CHECK(newfile, "Miii");
|
|
|
|
|
TRectype& newrec = newfile->curr();
|
|
|
|
|
newrec.zero();
|
|
|
|
|
// setto i campi con lo stesso nome
|
|
|
|
|
for (int i = 0; i < oldrec.items(); i++)
|
|
|
|
|
{
|
|
|
|
|
const char* fieldname = oldrec.fieldname(i);
|
|
|
|
|
if (newrec.exist(fieldname))
|
|
|
|
|
{
|
|
|
|
|
newrec.put(fieldname, oldfile.get(fieldname));
|
|
|
|
|
if ((newrec.type(fieldname) != oldrec.type(fieldname)) && (newrec.type(fieldname)==_alfafld))
|
|
|
|
|
{
|
|
|
|
|
s = newrec.get(fieldname);
|
|
|
|
|
if (s.not_empty()) // Non riempire di zeri i campi vuoti!
|
|
|
|
|
s.right_just(newrec.length(fieldname),'0');
|
|
|
|
|
newrec.put(fieldname, s);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// setto i campi che vanno elaborati pirsunalmente di pirsuna (nomi diversi)
|
|
|
|
|
switch (nflogicnum)
|
|
|
|
|
{
|
|
|
|
|
case 136:
|
|
|
|
|
s.format("%04d",get_codesc(oldfile.get_date("DTINES")));
|
|
|
|
|
newrec.put("CODES", s);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
break;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
case 138:
|
|
|
|
|
s.format("%04d",get_codesc(oldfile.get_date("DTINES")));
|
|
|
|
|
newrec.put("CODES", s);
|
|
|
|
|
newrec.put("CODCGRA", oldfile.get("AG0CGR"));
|
|
|
|
|
newrec.put("CODSPA", oldfile.get("ATACSP"));
|
|
|
|
|
newrec.put("CODCGR", oldfile.get("G0CGR"));
|
|
|
|
|
newrec.put("CODSP", oldfile.get("TACSP"));
|
|
|
|
|
newrec.put("CODCAT", oldfile.get("G0CCT"));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
break;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
case 139:
|
|
|
|
|
newrec.put("CODCGRA", oldfile.get("AG0CGR"));
|
|
|
|
|
newrec.put("CODSPA", oldfile.get("ATACSP"));
|
|
|
|
|
newrec.put("CODCGR", oldfile.get("G0CGR"));
|
|
|
|
|
newrec.put("CODSP", oldfile.get("TACSP"));
|
|
|
|
|
newrec.put("CODCAT", oldfile.get("G0CCT"));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
break;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
case 142:
|
|
|
|
|
newrec.put("CODMOV", oldfile.get("TPMOV"));
|
|
|
|
|
newrec.put("STAMPATO", oldfile.get("STBOLLATO"));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
break;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
case 143:
|
|
|
|
|
s.format("%04d",get_codesc(oldfile.get_date("DTINES")));
|
|
|
|
|
newrec.put("CODES", s);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
break;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
}
|
|
|
|
|
// scrivo il record sul nuovo file
|
|
|
|
|
newfile->write();
|
|
|
|
|
}
|
|
|
|
|
if (newfile)
|
2001-04-30 14:22:43 +00:00
|
|
|
|
delete newfile;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2001-07-24 13:28:55 +00:00
|
|
|
|
void TConversione_cespiti::zap_table(const char* tab) const
|
|
|
|
|
{
|
|
|
|
|
if (tab && *tab)
|
|
|
|
|
{
|
|
|
|
|
TTable newtab(tab);
|
|
|
|
|
for (newtab.first(); !newtab.eof(); newtab.next())
|
|
|
|
|
newtab.remove();
|
|
|
|
|
}
|
|
|
|
|
if (tab && *tab)
|
|
|
|
|
{
|
|
|
|
|
const bool tabella_comune = (tab[0] == '%');
|
|
|
|
|
if (tabella_comune)
|
|
|
|
|
{
|
|
|
|
|
TSystemisamfile f(LF_TABCOM);
|
|
|
|
|
f.pack();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
TSystemisamfile f(LF_TAB);
|
|
|
|
|
f.pack();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2001-04-30 14:22:43 +00:00
|
|
|
|
int TConversione_cespiti::conv_tab(const TFilename& ofname, const char* tab)
|
|
|
|
|
{
|
2001-09-19 14:52:11 +00:00
|
|
|
|
long oldditta = -1, ditta = -1;
|
2002-07-03 14:48:48 +00:00
|
|
|
|
TExternisamfile oldfile(ofname,(bool)FALSE,(bool)FALSE);
|
2001-07-24 13:28:55 +00:00
|
|
|
|
|
2002-12-20 16:15:03 +00:00
|
|
|
|
|
2002-12-20 17:08:30 +00:00
|
|
|
|
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TTable* newfile = NULL;
|
|
|
|
|
TConfig config("ce0900.ini", tab);
|
|
|
|
|
TAssoc_array& fieldlist = config.list_variables();
|
2001-09-19 14:52:11 +00:00
|
|
|
|
const TString16 campoditta = config.get(CAMPODITTA);
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TString fieldname, fieldvalue;
|
|
|
|
|
TAssoc_array converted;
|
|
|
|
|
|
2001-04-30 14:22:43 +00:00
|
|
|
|
const bool tabella_comune = (tab[0] == '%');
|
2001-07-24 13:28:55 +00:00
|
|
|
|
|
|
|
|
|
TString80 message;
|
2003-05-12 15:03:40 +00:00
|
|
|
|
message.format(FR("Conversione tabella %s"), (const char*)ofname);
|
2001-09-19 14:52:11 +00:00
|
|
|
|
TProgind pi(oldfile.eod(), message, FALSE, TRUE);
|
|
|
|
|
|
|
|
|
|
bool to_convert = TRUE;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
for (int err = oldfile.first(); err == NOERR; err = oldfile.next())
|
|
|
|
|
{
|
|
|
|
|
pi.addstatus(1);
|
2001-09-19 14:52:11 +00:00
|
|
|
|
if (!tabella_comune)
|
2001-07-24 13:28:55 +00:00
|
|
|
|
ditta = oldfile.get_long(campoditta);
|
|
|
|
|
// mi posiziono sulla ditta indicata
|
|
|
|
|
// i record sono ordinati per ditta!
|
|
|
|
|
if (oldditta != ditta)
|
|
|
|
|
{
|
|
|
|
|
oldditta = ditta;
|
2001-09-19 14:52:11 +00:00
|
|
|
|
to_convert = daconvertire(ditta);
|
|
|
|
|
if (to_convert)
|
2001-07-24 13:28:55 +00:00
|
|
|
|
{
|
|
|
|
|
if (newfile)
|
|
|
|
|
delete newfile;
|
|
|
|
|
set_firm(ditta);
|
|
|
|
|
|
|
|
|
|
TString16 str_ditta; str_ditta.format("%ld", ditta);
|
|
|
|
|
if (!converted.is_key(str_ditta))
|
|
|
|
|
{
|
|
|
|
|
zap_table(tab);
|
|
|
|
|
converted.add(str_ditta);
|
|
|
|
|
}
|
|
|
|
|
newfile = new TTable(tab);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
TString256 s;
|
2003-05-12 15:03:40 +00:00
|
|
|
|
s.format(FR("La ditta %ld indicata nel file %s non <20> stata selezionata per la conversione"), ditta, (const char*)ofname);
|
2001-07-24 13:28:55 +00:00
|
|
|
|
write_log(s);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
2001-09-19 14:52:11 +00:00
|
|
|
|
if (!to_convert)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
// creo nuovo record (Serve per tabelle comuni!)
|
2001-07-24 13:28:55 +00:00
|
|
|
|
if (newfile == NULL)
|
|
|
|
|
newfile = new TTable(tab);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
TRectype newrec = newfile->curr();
|
2001-07-24 13:28:55 +00:00
|
|
|
|
newrec.zero();
|
|
|
|
|
// setto i campi indicati
|
|
|
|
|
FOR_EACH_ASSOC_STRING(fieldlist, obj, key, str)
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
fieldname = key;
|
|
|
|
|
fieldvalue = str;
|
|
|
|
|
if ((fieldname != CAMPODITTA) && (fieldvalue[0]!='!') && (fieldvalue[0]!='?'))
|
|
|
|
|
newrec.put(key, oldfile.get(str));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
else
|
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
if (fieldvalue[0] == '?')
|
|
|
|
|
newrec.put(key,fieldvalue.sub(1));
|
|
|
|
|
else if (fieldvalue == "!_ESERCIZIO2")
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TString16 codtab, tmp;
|
|
|
|
|
codtab.format("%04d",get_codesc(oldfile.get_date("CBDTI"), TRUE));
|
|
|
|
|
tmp = oldfile.get("CBCGR");
|
|
|
|
|
tmp.right_just(2,'0');
|
|
|
|
|
codtab << tmp;
|
|
|
|
|
tmp = oldfile.get("CBCSP");
|
|
|
|
|
codtab << tmp;
|
|
|
|
|
newrec.put(key, codtab);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_ESERCIZIO")
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TString8 codtab;
|
|
|
|
|
codtab.format("%04d",get_codesc(oldfile.get_date("CADTI")));
|
|
|
|
|
newrec.put(key, codtab);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_CODIMP")
|
|
|
|
|
{
|
|
|
|
|
TString80 codtab;
|
|
|
|
|
const TString& codimp = oldfile.get("CODIMP");
|
|
|
|
|
if (!real::is_null(codimp))
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
codtab = codimp;
|
2001-04-30 14:22:43 +00:00
|
|
|
|
codtab.right_just(10,'0');
|
|
|
|
|
}
|
2001-07-24 13:28:55 +00:00
|
|
|
|
newrec.put(key, codtab);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_CODLOC")
|
|
|
|
|
{
|
|
|
|
|
TString80 codtab;
|
|
|
|
|
const TString& codloc = oldfile.get("CODLOC");
|
|
|
|
|
if (!real::is_null(codloc))
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
codtab = codloc;
|
2001-04-30 14:22:43 +00:00
|
|
|
|
codtab.right_just(10,'0');
|
|
|
|
|
}
|
2001-07-24 13:28:55 +00:00
|
|
|
|
newrec.put(key, codtab);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_CAT1")
|
|
|
|
|
{
|
|
|
|
|
TString16 codtab;
|
|
|
|
|
const int gruppo = oldfile.get_int("TACGR");
|
|
|
|
|
const TString16 specie(oldfile.get("TACSP"));
|
|
|
|
|
codtab.format("%02d%s", gruppo,(const char*) specie);
|
|
|
|
|
newrec.put(key, codtab);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_CAC1")
|
|
|
|
|
{
|
|
|
|
|
TString16 codtab;
|
|
|
|
|
const int gruppo = oldfile.get_int("G0CGR");
|
|
|
|
|
const TString16 specie(oldfile.get("TACSP"));
|
|
|
|
|
const int categoria(oldfile.get_int("G0CCT"));
|
|
|
|
|
if (gruppo == 0)
|
|
|
|
|
codtab.format(" %02d",categoria);
|
|
|
|
|
else
|
|
|
|
|
codtab.format("%02d%-4s%02d", gruppo,(const char*) specie, categoria);
|
|
|
|
|
newrec.put(key, codtab);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_CAC2")
|
|
|
|
|
{
|
|
|
|
|
TString80 codtab;
|
|
|
|
|
int cod = oldfile.get_int("G0TCS");
|
|
|
|
|
newrec.put(key, cod - 1);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_CLM1")
|
|
|
|
|
{
|
|
|
|
|
TString80 codtab;
|
|
|
|
|
TDate data = oldfile.get_date("DTVALIM");
|
|
|
|
|
codtab.format("%04d%2d%02d",data.year(),data.month(),data.day());
|
|
|
|
|
newrec.put(key, codtab);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_CGR1")
|
|
|
|
|
{
|
|
|
|
|
TString80 codtab;
|
|
|
|
|
codtab.format("%02d",oldfile.get_int("G0CGR"));
|
|
|
|
|
newrec.put(key, codtab);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_TMC1")
|
|
|
|
|
{
|
|
|
|
|
TString80 cod = "";
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP01"));
|
|
|
|
|
cod << " ";
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP03"));
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP04"));
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP05"));
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP06"));
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP07"));
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP08"));
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP09"));
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP10"));
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP11"));
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP12"));
|
|
|
|
|
cod << conv_imptmc(oldfile.get_int("IMP13"));
|
|
|
|
|
newrec.put(key, cod);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_TMC2")
|
|
|
|
|
{
|
|
|
|
|
int num = oldfile.get_int("M0TTBL");
|
|
|
|
|
TString16 cod;
|
|
|
|
|
switch (num)
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
case 1:
|
|
|
|
|
cod = "I";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
cod = "E";
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
cod = "P";
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
cod = "R";
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
cod = " ";
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
cod = " ";
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
2001-07-24 13:28:55 +00:00
|
|
|
|
newrec.put(key, cod);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_TMC3")
|
|
|
|
|
{
|
|
|
|
|
TString16 cod;
|
|
|
|
|
int num = oldfile.get_int("M0SEGN");
|
|
|
|
|
switch (num)
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
case 1:
|
|
|
|
|
cod = "=";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
cod = "+";
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
cod = "-";
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
cod = " ";
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
2001-07-24 13:28:55 +00:00
|
|
|
|
newrec.put(key, cod);
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue == "!_CCE1")
|
|
|
|
|
{
|
|
|
|
|
TString16 cod;
|
|
|
|
|
int num = oldfile.get_int("CATAR");
|
|
|
|
|
switch (num)
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
case 1:
|
|
|
|
|
cod = "+";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
cod = "-";
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
cod = "/";
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
cod = " ";
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
2001-07-24 13:28:55 +00:00
|
|
|
|
newrec.put(key, cod);
|
|
|
|
|
}
|
|
|
|
|
}
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
2001-07-24 13:28:55 +00:00
|
|
|
|
// scrivo il record sul nuovo file
|
2004-03-13 09:12:24 +00:00
|
|
|
|
newrec.write(*newfile);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
2001-07-24 13:28:55 +00:00
|
|
|
|
if (newfile)
|
|
|
|
|
delete newfile;
|
2001-04-30 14:22:43 +00:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int TConversione_cespiti::conv_inifile(const TFilename& ofname, const char* ofpar, int nflogicnum)
|
|
|
|
|
{
|
|
|
|
|
long oldditta = -1;
|
|
|
|
|
long ditta;
|
|
|
|
|
TDir d;
|
|
|
|
|
d.get(nflogicnum);
|
|
|
|
|
d.eod() = 0L;
|
|
|
|
|
d.put(nflogicnum);
|
|
|
|
|
TSystemisamfile f(nflogicnum);
|
|
|
|
|
int err = f.pack();
|
|
|
|
|
if (err == NOERR)
|
|
|
|
|
{
|
2002-07-03 14:48:48 +00:00
|
|
|
|
TExternisamfile oldfile(ofname,(bool)FALSE,(bool)FALSE);
|
2002-12-20 16:15:03 +00:00
|
|
|
|
|
2001-04-30 14:22:43 +00:00
|
|
|
|
TLocalisamfile* newfile = new TLocalisamfile(nflogicnum);
|
|
|
|
|
TConfig config("ce0900.ini", (const char*) ofpar);
|
|
|
|
|
TAssoc_array& fieldlist = config.list_variables();
|
|
|
|
|
TString& campoditta = (TString&) config.get(CAMPODITTA);
|
|
|
|
|
TString fieldname, fieldvalue;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TRectype oldrec = oldfile.curr();
|
2001-04-30 14:22:43 +00:00
|
|
|
|
TRectype newrec = newfile->curr();
|
|
|
|
|
TString80 message;
|
2003-05-12 15:03:40 +00:00
|
|
|
|
message.format(FR("Conversione tabella %s"), (const char*) ofname);
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TProgind pi(oldfile.eod(),message, FALSE, TRUE, 10);
|
|
|
|
|
for (int err = oldfile.first(); err == NOERR; err = oldfile.next())
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
pi.addstatus(1);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
// mi posiziono sulla ditta indicata
|
2001-07-24 13:28:55 +00:00
|
|
|
|
ditta = oldfile.get_long(campoditta);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
// i record sono ordinati per ditta!
|
|
|
|
|
if (oldditta != ditta)
|
|
|
|
|
{
|
|
|
|
|
oldditta = ditta;
|
|
|
|
|
if (daconvertire(ditta))
|
|
|
|
|
set_firm(ditta);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
TString256 s;
|
2003-05-12 15:03:40 +00:00
|
|
|
|
s.format(FR("La ditta %ld indicata nel file %s non <20> stata selezionata per la conversione"), ditta, (const char*) ofname);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
write_log(s);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// creo nuovo record
|
|
|
|
|
newrec.zero();
|
|
|
|
|
// setto i campi indicati
|
|
|
|
|
FOR_EACH_ASSOC_STRING(fieldlist, obj, key, str)
|
|
|
|
|
{
|
|
|
|
|
fieldname = key;
|
|
|
|
|
fieldvalue = str;
|
|
|
|
|
if ((fieldname != CAMPODITTA) && (fieldvalue[0]!='!'))
|
2001-07-24 13:28:55 +00:00
|
|
|
|
newrec.put(key, oldfile.get(str));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (fieldvalue.mid(0,4) == "!_GR")
|
|
|
|
|
{
|
|
|
|
|
TString80 tmp;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
tmp = oldfile.get(fieldvalue.mid(5));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
newrec.put(key,atoi(tmp.mid(0,3)));
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue.mid(0,4) == "!_CO")
|
|
|
|
|
{
|
|
|
|
|
TString80 tmp;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
tmp = oldfile.get(fieldvalue.mid(5));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
newrec.put(key,atoi(tmp.mid(3,3)));
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue.sub(0,4) == "!_SO")
|
|
|
|
|
{
|
|
|
|
|
TString80 tmp;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
tmp = oldfile.get(fieldvalue.mid(5));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
newrec.put(key,atol(tmp.mid(6,6)));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// scrivo il record sul nuovo file
|
2004-03-13 09:12:24 +00:00
|
|
|
|
newrec.write(*newfile);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
|
|
|
|
delete newfile;
|
|
|
|
|
}
|
|
|
|
|
else
|
2003-05-12 15:03:40 +00:00
|
|
|
|
error_box(FR("Errore in compattamento dati.\nFile %d : %d"), nflogicnum,err);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int TConversione_cespiti::conv_par(const TFilename& ofname, const char* ofpar, int which_config)
|
|
|
|
|
{
|
|
|
|
|
long oldditta = -1;
|
|
|
|
|
long ditta;
|
2002-07-03 14:48:48 +00:00
|
|
|
|
TExternisamfile oldfile(ofname,(bool)FALSE,(bool)FALSE);
|
2002-12-20 16:15:03 +00:00
|
|
|
|
|
2001-04-30 14:22:43 +00:00
|
|
|
|
TConfig newconfig(which_config, "ce");
|
|
|
|
|
TConfig config("ce0900.ini", (const char*) ofpar);
|
|
|
|
|
TAssoc_array& fieldlist = config.list_variables();
|
|
|
|
|
TString& campoditta = (TString&) config.get(CAMPODITTA);
|
|
|
|
|
TString fieldname, fieldvalue;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TRectype oldrec = oldfile.curr();
|
2001-04-30 14:22:43 +00:00
|
|
|
|
TString80 message;
|
2003-05-12 15:03:40 +00:00
|
|
|
|
message.format(FR("Conversione tabella %s"), (const char*) ofname);
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TProgind pi(oldfile.eod(),message, FALSE, TRUE);
|
|
|
|
|
for (int err = oldfile.first(); err == NOERR; err = oldfile.next())
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
pi.addstatus(1);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
if (campoditta.not_empty())
|
|
|
|
|
{
|
|
|
|
|
// mi posiziono sulla ditta indicata
|
2001-07-24 13:28:55 +00:00
|
|
|
|
ditta = oldfile.get_long(campoditta);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
// i record sono ordinati per ditta!
|
|
|
|
|
if (oldditta != ditta)
|
|
|
|
|
{
|
|
|
|
|
oldditta = ditta;
|
|
|
|
|
if (daconvertire(ditta))
|
|
|
|
|
{
|
|
|
|
|
set_firm(ditta);
|
|
|
|
|
newconfig.set_paragraph("cg");
|
|
|
|
|
newconfig = TConfig(which_config, "ce");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
TString256 s;
|
2003-05-12 15:03:40 +00:00
|
|
|
|
s.format(FR("La ditta %ld indicata nel file %s non <20> stata selezionata per la conversione"), ditta, (const char*) ofname);
|
2001-04-30 14:22:43 +00:00
|
|
|
|
write_log(s);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// setto i campi indicati
|
|
|
|
|
FOR_EACH_ASSOC_STRING(fieldlist, obj, key, str)
|
|
|
|
|
{
|
|
|
|
|
fieldname = key;
|
|
|
|
|
fieldvalue = str;
|
|
|
|
|
if ((fieldname != CAMPODITTA) && (fieldvalue[0]!='!'))
|
2001-07-24 13:28:55 +00:00
|
|
|
|
newconfig.set(key, oldfile.get(str));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (fieldvalue.mid(0,4) == "!_GR")
|
|
|
|
|
{
|
|
|
|
|
TString80 tmp;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
tmp = oldfile.get(fieldvalue.mid(5));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
newconfig.set(key,atoi(tmp.mid(0,3)));
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue.mid(0,4) == "!_CO")
|
|
|
|
|
{
|
|
|
|
|
TString80 tmp;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
tmp = oldfile.get(fieldvalue.mid(5));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
newconfig.set(key,atoi(tmp.mid(3,3)));
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue.sub(0,4) == "!_SO")
|
|
|
|
|
{
|
|
|
|
|
TString80 tmp;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
tmp = oldfile.get(fieldvalue.mid(5));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
newconfig.set(key,atol(tmp.mid(6,6)));
|
|
|
|
|
}
|
|
|
|
|
else if (fieldvalue.sub(0,4) == "!_ES")
|
2001-07-24 13:28:55 +00:00
|
|
|
|
newconfig.set(key,get_codesc(oldfile.get_date(fieldvalue.mid(5))));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
else if (fieldvalue.sub(0,4) == "!_AN")
|
|
|
|
|
{
|
|
|
|
|
TString80 tmp;
|
2001-07-24 13:28:55 +00:00
|
|
|
|
tmp = oldfile.get(fieldvalue.mid(5));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
newconfig.set(key,tmp.mid(6));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// verificare se occorre registrare (di solito si cambia paragrafo)
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int TConversione_cespiti::get_codesc(const TDate& date, const bool fatal)
|
|
|
|
|
{
|
|
|
|
|
TEsercizi_contabili esercizi;
|
|
|
|
|
int esc = esercizi.date2esc(date);
|
2001-07-24 13:28:55 +00:00
|
|
|
|
if (esc <= 0)
|
2001-04-30 14:22:43 +00:00
|
|
|
|
{
|
2001-07-24 13:28:55 +00:00
|
|
|
|
TString s;
|
2003-05-12 15:03:40 +00:00
|
|
|
|
s << TR("La ditta ") << get_firm() << TR(" non ha un esercizio con data iniziale ");
|
2001-07-24 13:28:55 +00:00
|
|
|
|
s << date.string();
|
2001-04-30 14:22:43 +00:00
|
|
|
|
write_log(s);
|
|
|
|
|
if (fatal)
|
|
|
|
|
fatal_box(s);
|
2001-07-24 13:28:55 +00:00
|
|
|
|
else
|
|
|
|
|
esc = date.year();
|
2001-04-30 14:22:43 +00:00
|
|
|
|
}
|
|
|
|
|
return esc;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const char TConversione_cespiti::conv_imptmc(int cod)
|
|
|
|
|
{
|
|
|
|
|
switch (cod)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
return 'S';
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
return 'N';
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
return 'O';
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
return ' ';
|
|
|
|
|
}
|
|
|
|
|
return ' ';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//funzione che ritorna il nome del file dei dati da resettare con la zap_file
|
|
|
|
|
HIDDEN const TString& build_name(int logicnum)
|
|
|
|
|
{
|
|
|
|
|
TDir d; d.get(logicnum, _nolock, _nordir, _sysdirop);
|
|
|
|
|
static TFilename _filename;
|
|
|
|
|
_filename = d.filename();
|
|
|
|
|
return _filename;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//funzione per resettare i files e gli indici
|
|
|
|
|
int TConversione_cespiti::zap_file(int lf) const
|
|
|
|
|
{
|
|
|
|
|
TFilename name = build_name(lf);
|
|
|
|
|
if (name[0] == '%') name.ltrim(1);
|
|
|
|
|
TExternisamfile f(name);
|
|
|
|
|
return f.zap();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int ce0900(int argc, char* argv[])
|
|
|
|
|
{
|
|
|
|
|
TConversione_cespiti a ;
|
2003-05-12 15:03:40 +00:00
|
|
|
|
a.run(argc, argv, TR("Conversione cespiti"));
|
2001-04-30 14:22:43 +00:00
|
|
|
|
return 0;
|
2004-03-13 09:12:24 +00:00
|
|
|
|
}
|