Patch level : 10 ha
Files correlati : Ricompilazione Demo : [ ] Commento : conversione hardy (cambiato anche il progetto) git-svn-id: svn://10.65.10.50/branches/R_10_00@21240 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4f9c9beb47
commit
08f72f5592
@ -6,9 +6,12 @@ int main(int argc, char** argv)
|
|||||||
const int n = argc > 1 ? argv[1][1]-'0' : 0;
|
const int n = argc > 1 ? argv[1][1]-'0' : 0;
|
||||||
switch (n)
|
switch (n)
|
||||||
{
|
{
|
||||||
|
case 1:
|
||||||
|
hacnv200(argc, argv); //Conversione movimenti HARDY
|
||||||
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
default:
|
default:
|
||||||
hacnv100(argc, argv); //importazione Hardy
|
hacnv100(argc, argv); //Conversione archivi e tabelle HARDY
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1 +1,2 @@
|
|||||||
int hacnv100(int argc, char* argv[]);
|
int hacnv100(int argc, char* argv[]);
|
||||||
|
int hacnv200(int argc, char* argv[]);
|
473
ha/hacnv100.cpp
473
ha/hacnv100.cpp
@ -1,6 +1,6 @@
|
|||||||
#include "hacnv100.h"
|
|
||||||
#include "hacnv100a.h"
|
|
||||||
#include "halib.h"
|
#include "halib.h"
|
||||||
|
#include "hacnvlib.h"
|
||||||
|
#include "hacnv100a.h"
|
||||||
|
|
||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
@ -14,412 +14,121 @@
|
|||||||
#include <clifo.h>
|
#include <clifo.h>
|
||||||
#include "..\pr\agenti.h"
|
#include "..\pr\agenti.h"
|
||||||
|
|
||||||
const char* const APPNAME = TR("Importazione anagrafiche HARDY");
|
const char* const APPNAME = TR("Conversione anagrafiche");
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// THardy_log
|
// Trasferimenti veri e propri
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class THardy_log : public TLog_report
|
class THardy_pag : public THardy_transfer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
THardy_log() : TLog_report(APPNAME) {}
|
virtual bool trasferisci();
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
class THardy_iva : public THardy_transfer
|
||||||
// THardy_iterator
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
bool THardy_iterator::cancelled() const
|
|
||||||
{
|
{
|
||||||
return _pi != NULL && _pi->iscancelled();
|
public:
|
||||||
}
|
virtual bool trasferisci();
|
||||||
|
};
|
||||||
|
|
||||||
bool THardy_iterator::ok() const
|
class THardy_catmerc : public THardy_transfer
|
||||||
{
|
{
|
||||||
if (cancelled())
|
public:
|
||||||
return _ht->log_cancelled();
|
virtual bool trasferisci();
|
||||||
return _rec >= 0 && _rec < _ht->recordset().items();
|
};
|
||||||
}
|
|
||||||
|
|
||||||
THardy_iterator& THardy_iterator::operator=(TRecnotype n)
|
class THardy_catfisc : public THardy_transfer
|
||||||
{
|
|
||||||
if (_pi != NULL)
|
|
||||||
_pi->setstatus(n+1);
|
|
||||||
_ht->recordset().move_to(_rec = n);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
THardy_iterator& THardy_iterator::operator++()
|
|
||||||
{
|
|
||||||
return *this = ++_rec;
|
|
||||||
}
|
|
||||||
|
|
||||||
THardy_iterator::THardy_iterator(THardy_transfer* ht) : _ht(ht), _pi(NULL)
|
|
||||||
{
|
{
|
||||||
const TRecnotype tot = _ht->recordset().items();
|
public:
|
||||||
TString title;
|
virtual bool trasferisci();
|
||||||
title << _ht->title() << ": " << tot << ' ' << TR("righe");
|
};
|
||||||
if (tot > 1)
|
|
||||||
_pi = new TProgind(tot, title, true, true);
|
|
||||||
else
|
|
||||||
::begin_wait();
|
|
||||||
|
|
||||||
if (tot > 0)
|
class THardy_ban : public THardy_transfer
|
||||||
_ht->log(title);
|
|
||||||
|
|
||||||
_rec = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
THardy_iterator::~THardy_iterator()
|
|
||||||
{
|
|
||||||
if (_pi != NULL)
|
|
||||||
delete _pi;
|
|
||||||
else
|
|
||||||
::end_wait();
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
// Cache tabelle
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
class TCache_tab : public TCache_th
|
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
virtual TObject* key2obj(const char* key);
|
bool trasferisci_abi();
|
||||||
|
bool trasferisci_cab();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual const TString& decode(const TToken_string& cod_codtab);
|
virtual bool trasferisci();
|
||||||
TCache_tab(THardy_transfer* ht) : TCache_th(ht) {}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const TString& TCache_tab::decode(const TToken_string& cod_codtab)
|
class THardy_caucont : public THardy_transfer
|
||||||
{
|
{
|
||||||
TString4 cod; cod_codtab.get(0, cod);
|
public:
|
||||||
if (cod.full())
|
virtual bool trasferisci();
|
||||||
{
|
};
|
||||||
const TRectype& rec = *(const TRectype*)objptr(cod_codtab);
|
|
||||||
if (!rec.empty())
|
|
||||||
{
|
|
||||||
const char* field = "CODTAB";
|
|
||||||
if (cod == "%TPM" || cod == "%TPP" || cod == "%TPI") // Tipo trasporto e porto
|
|
||||||
field = "S6";
|
|
||||||
return rec.get(field);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return EMPTY_STRING;
|
|
||||||
}
|
|
||||||
|
|
||||||
TObject* TCache_tab::key2obj(const char* key)
|
class THardy_caumag : public THardy_transfer
|
||||||
{
|
{
|
||||||
TToken_string tok(key);
|
public:
|
||||||
TString4 tab = tok.get(); tab.upper();
|
virtual bool trasferisci();
|
||||||
TString80 cod = tok.get(); cod.upper();
|
};
|
||||||
|
|
||||||
if (tab == "%IVA")
|
class THardy_um : public THardy_transfer
|
||||||
{
|
|
||||||
// Campo non digerisce i codici IVA numerici di un solo carattere
|
|
||||||
if (cod.len() < 2 && isdigit(cod[0]))
|
|
||||||
cod.right_just(2, '0'); // per cui aggiungo uno 0 iniziale
|
|
||||||
}
|
|
||||||
|
|
||||||
TTable table(tab);
|
|
||||||
table.put("CODTAB", cod);
|
|
||||||
if (table.read() != NOERR)
|
|
||||||
{
|
|
||||||
table.zero();
|
|
||||||
table.put("CODTAB", cod);
|
|
||||||
table.put("S0", cod);
|
|
||||||
test_write(table);
|
|
||||||
}
|
|
||||||
return table.curr().dup();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
// THardy_transfer
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
void THardy_transfer::init(const char* title, const char* qry_hdr, THardy_log& log)
|
|
||||||
{
|
{
|
||||||
_log = &log;
|
public:
|
||||||
_log->reset();
|
virtual bool trasferisci();
|
||||||
_log->set_title(title);
|
};
|
||||||
_query_header = qry_hdr;
|
|
||||||
_write_enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
const TString& THardy_transfer::title() const
|
class THardy_art : public THardy_transfer
|
||||||
{ return _log->title(); }
|
|
||||||
|
|
||||||
void THardy_transfer::log(const char* msg, int sev) const
|
|
||||||
{
|
{
|
||||||
_log->log(sev, msg);
|
public:
|
||||||
}
|
virtual bool trasferisci();
|
||||||
|
};
|
||||||
|
|
||||||
TRecordset& THardy_transfer::create_recordset(const char* query)
|
class THardy_pcon : public THardy_transfer
|
||||||
{
|
{
|
||||||
if (_recset != NULL)
|
protected:
|
||||||
{
|
bool trasferisci_gruppi();
|
||||||
delete _recset;
|
bool trasferisci_conti();
|
||||||
_recset = NULL;
|
bool trasferisci_sottoconti();
|
||||||
}
|
|
||||||
if (_outset != NULL)
|
|
||||||
{
|
|
||||||
_outset->exec("COMMIT TRANS");
|
|
||||||
delete _outset;
|
|
||||||
_outset = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
TString qry = query;
|
public:
|
||||||
if (!qry.starts_with("US") && !qry.starts_with("ODBC"))
|
virtual bool trasferisci();
|
||||||
qry.insert(query_header());
|
};
|
||||||
_recset = ::create_recordset(qry);
|
|
||||||
return *_recset;
|
class THardy_clienti : public THardy_transfer
|
||||||
}
|
|
||||||
|
|
||||||
const TRecordset& THardy_transfer::recordset() const
|
|
||||||
{
|
{
|
||||||
CHECK(_recset != NULL, "NULL recordset");
|
protected:
|
||||||
return *_recset;
|
bool is_piva_doppia(const long codcf);
|
||||||
}
|
int get_next_key_indsped(const char tipocf, const long codcf) const;
|
||||||
|
bool trasferisci_clienti();
|
||||||
|
bool trasferisci_destinazioni();
|
||||||
|
|
||||||
TRecordset& THardy_transfer::recordset()
|
public:
|
||||||
|
virtual bool trasferisci();
|
||||||
|
};
|
||||||
|
|
||||||
|
class THardy_fornitori : public THardy_transfer
|
||||||
{
|
{
|
||||||
CHECK(_recset != NULL, "NULL recordset");
|
protected:
|
||||||
return *_recset;
|
long key2forn(const TString& key) const;
|
||||||
}
|
|
||||||
|
|
||||||
long THardy_transfer::odbc_exec(const char* cmd)
|
public:
|
||||||
|
virtual bool trasferisci();
|
||||||
|
};
|
||||||
|
|
||||||
|
class THardy_agenti : public THardy_transfer
|
||||||
{
|
{
|
||||||
long err = 0;
|
protected:
|
||||||
if (_write_enabled)
|
const TString& get_codage(const TString& key) const;
|
||||||
{
|
public:
|
||||||
if (_outset == NULL)
|
virtual bool trasferisci();
|
||||||
{
|
};
|
||||||
_outset = new TODBC_recordset(query_header());
|
|
||||||
err = _outset->exec("BEGIN TRANS");
|
|
||||||
}
|
|
||||||
if (err >= 0)
|
|
||||||
{
|
|
||||||
err = _outset->exec(cmd);
|
|
||||||
if (err < 0)
|
|
||||||
{
|
|
||||||
log("", 0); // Salto una riga
|
|
||||||
TParagraph_string msg(cmd, 100);
|
|
||||||
FOR_EACH_TOKEN(msg, str)
|
|
||||||
log(str, 0); // Riporto tutta la query
|
|
||||||
log_error(TR("ERRORE in esecuzione della query."));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TString msg;
|
|
||||||
msg << TR("ERRORE di connessione a ") << _outset->dsn() << " : BEGIN TRANS";
|
|
||||||
log_error(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool THardy_transfer::log_error(const char* msg)
|
class THardy_listini : public THardy_transfer
|
||||||
{
|
{
|
||||||
log(msg, 2);
|
public:
|
||||||
if (_write_enabled)
|
virtual bool trasferisci();
|
||||||
{
|
};
|
||||||
_write_enabled = false;
|
|
||||||
log("");
|
|
||||||
log(TR("LA SCRITTURA SUGLI ARCHIVI VIENE DISABILITATA DA QUESTO MOMENTO IN POI"), 2);
|
|
||||||
log("");
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool THardy_transfer::log_cancelled()
|
class THardy_contratti : public THardy_transfer
|
||||||
{
|
{
|
||||||
return log_error(TR("Procedura interrotta dall'utente"));
|
public:
|
||||||
}
|
virtual bool trasferisci();
|
||||||
|
};
|
||||||
bool THardy_transfer::test_write(TBaseisamfile& file)
|
|
||||||
{
|
|
||||||
int err = NOERR;
|
|
||||||
if (_write_enabled)
|
|
||||||
{
|
|
||||||
err = file.write_rewrite();
|
|
||||||
if (err != NOERR)
|
|
||||||
{
|
|
||||||
TString msg;
|
|
||||||
TString80 code, desc;
|
|
||||||
const int logic = file.num();
|
|
||||||
if (logic == LF_TAB || logic == LF_TABCOM || logic == LF_TABMOD)
|
|
||||||
{
|
|
||||||
code = file.get("CODTAB");
|
|
||||||
desc = file.get("S0");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
code = file.curr().build_key(1);
|
|
||||||
desc = file.curr().build_key(2);
|
|
||||||
}
|
|
||||||
msg.format(FR("Errore %d durante la scrittura sul file %d: %s - %s"),
|
|
||||||
err, logic, (const char*)code, (const char*)desc);
|
|
||||||
log_error(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return err == NOERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
const TString& THardy_transfer::get_str(const char* field) const
|
|
||||||
{
|
|
||||||
return recordset().get(field).as_string();
|
|
||||||
}
|
|
||||||
|
|
||||||
const TString& THardy_transfer::get_real_str(const char* campo) const
|
|
||||||
{
|
|
||||||
const TVariant& var = recordset().get(campo);
|
|
||||||
if (var.is_zero())
|
|
||||||
return EMPTY_STRING;
|
|
||||||
return var.as_string();
|
|
||||||
}
|
|
||||||
|
|
||||||
long THardy_transfer::get_long(const char* field) const
|
|
||||||
{
|
|
||||||
return recordset().get(field).as_int();
|
|
||||||
}
|
|
||||||
|
|
||||||
const TString& THardy_transfer::decode_value(const char* tab, const TString& cod)
|
|
||||||
{
|
|
||||||
if (cod.full())
|
|
||||||
{
|
|
||||||
if (_tab == NULL)
|
|
||||||
_tab = new TCache_tab(this);
|
|
||||||
TToken_string tok; tok.add(tab); tok.add(cod);
|
|
||||||
return _tab->decode(tok);
|
|
||||||
}
|
|
||||||
return EMPTY_STRING;
|
|
||||||
}
|
|
||||||
|
|
||||||
const TString& THardy_transfer::decode_field(const char* tab, const char* field)
|
|
||||||
{
|
|
||||||
const TString& cod = get_str(field);
|
|
||||||
return decode_value(tab, cod);
|
|
||||||
}
|
|
||||||
|
|
||||||
const TString& THardy_transfer::build_insert_query(const char* table, const char* f, const char* v) const
|
|
||||||
{
|
|
||||||
TString qry(255);
|
|
||||||
|
|
||||||
qry << "INSERT INTO " << table;
|
|
||||||
|
|
||||||
TAuto_token_string fields(f);
|
|
||||||
TToken_string values(v);
|
|
||||||
if (fields.items() > 0)
|
|
||||||
{
|
|
||||||
qry << " (";
|
|
||||||
FOR_EACH_TOKEN(fields, tok)
|
|
||||||
qry << tok << ',';
|
|
||||||
qry.rtrim(1);
|
|
||||||
qry << ')';
|
|
||||||
}
|
|
||||||
qry << " VALUES (";
|
|
||||||
|
|
||||||
TString tmp;
|
|
||||||
FOR_EACH_TOKEN(values, tok)
|
|
||||||
{
|
|
||||||
tmp = tok;
|
|
||||||
if (tmp.full() && !tmp.starts_with("0") && real::is_natural(tmp))
|
|
||||||
qry << tok;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (tmp[0] != '\'')
|
|
||||||
{
|
|
||||||
for (int i = tmp.len()-1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
if (tmp[i] == '\'')
|
|
||||||
tmp.insert("'", i);
|
|
||||||
}
|
|
||||||
qry << '\'' << tmp << '\'';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
qry << tmp;
|
|
||||||
}
|
|
||||||
qry << ',';
|
|
||||||
}
|
|
||||||
qry.rtrim(1);
|
|
||||||
qry << ')';
|
|
||||||
|
|
||||||
return get_tmp_string() = qry;
|
|
||||||
}
|
|
||||||
|
|
||||||
THardy_transfer::THardy_transfer()
|
|
||||||
: _log(NULL), _config("hacnv100a.ini"), _recset(NULL), _outset(NULL), _tab(NULL)
|
|
||||||
{}
|
|
||||||
|
|
||||||
THardy_transfer::~THardy_transfer()
|
|
||||||
{
|
|
||||||
if (_tab != NULL)
|
|
||||||
delete _tab;
|
|
||||||
if (_outset != NULL)
|
|
||||||
{
|
|
||||||
_outset->exec("COMMIT TRANS");
|
|
||||||
delete _outset;
|
|
||||||
}
|
|
||||||
if (_recset != NULL)
|
|
||||||
delete _recset;
|
|
||||||
}
|
|
||||||
|
|
||||||
void THardy_transfer::aggiorna_record(TRectype& rec, const TString_array& lista_campi)
|
|
||||||
{
|
|
||||||
TString campo_dest, campo_orig, valore, str;
|
|
||||||
FOR_EACH_ARRAY_ROW(lista_campi,i,row)
|
|
||||||
{
|
|
||||||
row->get(0, campo_dest);
|
|
||||||
row->get(1, campo_orig);
|
|
||||||
if (campo_orig.full())
|
|
||||||
{
|
|
||||||
if (campo_orig[0] == '_')
|
|
||||||
{
|
|
||||||
if (campo_orig.starts_with("_FISSO")) // valore fisso indicato in configurazione
|
|
||||||
{
|
|
||||||
valore = campo_orig.after(',');
|
|
||||||
valore.trim();
|
|
||||||
} else
|
|
||||||
if (campo_orig.starts_with("_STREXPR")) // formato _STREXPR, espressione
|
|
||||||
{
|
|
||||||
TExpression expr(campo_orig.after(','), _strexpr);
|
|
||||||
for (int v = 0; v < expr.numvar(); v++)
|
|
||||||
{
|
|
||||||
const char* varname = expr.varname(v);
|
|
||||||
expr.setvar(v, get_str(varname));
|
|
||||||
}
|
|
||||||
valore = expr.as_string();
|
|
||||||
valore.trim();
|
|
||||||
} else
|
|
||||||
if (campo_orig.starts_with("_TAB")) // formato _TAB,<tabella da leggere>,<valore CODTAB>, <campo da leggere>
|
|
||||||
{
|
|
||||||
TToken_string elabora(campo_orig, ',');
|
|
||||||
const TString4 tab = elabora.get(1); // tabella da leggere
|
|
||||||
const TString16 codtab = get_str(elabora.get());
|
|
||||||
const TString16 campotab = elabora.get();
|
|
||||||
valore = cache().get(tab, codtab, campotab);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (campo_orig.starts_with("_TRADUCI"))
|
|
||||||
{
|
|
||||||
const TString80 campo = campo_orig.after(',');
|
|
||||||
const TString80 contenuto = get_str(campo);
|
|
||||||
TConfig& ini = config();
|
|
||||||
valore = ini.get(contenuto,campo);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
valore.cut(0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
valore = get_str(campo_orig);
|
|
||||||
rec.put(campo_dest, valore);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// THardy_pag
|
// THardy_pag
|
||||||
@ -1308,16 +1017,6 @@ bool THardy_contratti::trasferisci()
|
|||||||
return write_enabled();
|
return write_enabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool THardy_movcont::trasferisci()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool THardy_moviva::trasferisci()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TImportazioneHardy_mask
|
// TImportazioneHardy_mask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -1488,22 +1187,6 @@ void TImportazioneHardy_mask::trasferisci()
|
|||||||
book.add(log);
|
book.add(log);
|
||||||
rep_to_print = true;
|
rep_to_print = true;
|
||||||
}
|
}
|
||||||
if (go_on && get_bool(F_MOVCONT))
|
|
||||||
{
|
|
||||||
THardy_movcont pc;
|
|
||||||
pc.init(TR("Movimenti contabili"), query_header, log);
|
|
||||||
go_on = pc.trasferisci();
|
|
||||||
book.add(log);
|
|
||||||
rep_to_print = true;
|
|
||||||
}
|
|
||||||
if (go_on && get_bool(F_MOVIVA))
|
|
||||||
{
|
|
||||||
THardy_moviva pc;
|
|
||||||
pc.init(TR("Movimenti iva"), query_header, log);
|
|
||||||
go_on = pc.trasferisci();
|
|
||||||
book.add(log);
|
|
||||||
rep_to_print = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rep_to_print && book.pages() > 0)
|
if (rep_to_print && book.pages() > 0)
|
||||||
book.preview();
|
book.preview();
|
||||||
|
@ -6,7 +6,7 @@ TOOLBAR "topbar" 0 0 0 2
|
|||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Trasferimenti" 0 2 0 0
|
PAGE "Conversione anagrafiche Hardy" 0 2 0 0
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 3
|
GROUPBOX DLG_NULL 78 3
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -119,21 +119,6 @@ BEGIN
|
|||||||
PROMPT 32 14 "Agenti"
|
PROMPT 32 14 "Agenti"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 3
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 17 "@bStorico"
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_MOVCONT
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 18 "Mov. contabili"
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_MOVIVA
|
|
||||||
BEGIN
|
|
||||||
PROMPT 32 18 "Mov. IVA"
|
|
||||||
END
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Configurazione" -1 -1 78 18
|
PAGE "Configurazione" -1 -1 78 18
|
||||||
|
@ -20,4 +20,5 @@ Picture = <ha01>
|
|||||||
Module = 46
|
Module = 46
|
||||||
Flags = "F"
|
Flags = "F"
|
||||||
Item_01 = "Configurazione modulo", "ha0 -1", ""
|
Item_01 = "Configurazione modulo", "ha0 -1", ""
|
||||||
Item_02 = "Conversione dati", "hacnv -0 /uADMIN", "F"
|
Item_02 = "Conversione anagrafiche", "hacnv -0 /uADMIN", "F"
|
||||||
|
Item_03 = "Conversione movimenti", "hacnv -1 /uADMIN", "F"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user