Merge branch 'R_10_00' of http://10.65.20.33/sirio/CAMPO/campo into R_10_00

This commit is contained in:
Sirio Builder 2019-09-17 11:47:15 +02:00
commit 06a2fa1b05
6 changed files with 264 additions and 217 deletions

View File

@ -59,19 +59,23 @@ BEGIN
PROMPT 2 5 "@bTipo bilancio"
HELP "Indicare il tipo di bilancio da stampare"
ITEM "1|Bilancio a sezioni contrapposte"
MESSAGE HIDE,F_STAMPA1|RESET,F_STAMPA1|HIDE,F_VERIFICA|RESET,F_VERIFICA
MESSAGE HIDE,F_STAMPAV|RESET,F_STAMPAV|HIDE,F_DATADA|RESET,F_DATADA
MESSAGE HIDE,F_DATAA|RESET,F_DATAA|HIDE,F_SITUAZIONE|RESET,F_SITUAZIONE
MESSAGE HIDE,F_ORDINAMENTO|RESET,F_ORDINAMENTO|HIDE,F_STAMPAC|RESET,F_STAMPAC
//MESSAGE HIDE,F_STAMPA1|RESET,F_STAMPA1|HIDE,F_VERIFICA|RESET,F_VERIFICA
//MESSAGE HIDE,F_STAMPAV|RESET,F_STAMPAV|HIDE,F_DATADA|RESET,F_DATADA
//MESSAGE HIDE,F_DATAA|RESET,F_DATAA|HIDE,F_SITUAZIONE|RESET,F_SITUAZIONE
//MESSAGE HIDE,F_ORDINAMENTO|RESET,F_ORDINAMENTO|HIDE,F_STAMPAC|RESET,F_STAMPAC
MESSAGE SHOW,1@
MESSAGE HIDE,2@|RESET,2@
MESSAGE HIDE,96|HIDE,97|HIDE,98|HIDE,99
MESSAGE CLEAR,F_MODULO
MESSAGE SHOW,F_STAMPA|K_SPACE,F_STAMPA
//MESSAGE SHOW,F_STAMPA|K_SPACE,F_STAMPA
ITEM "2|Bilancio di verifica"
MESSAGE HIDE,F_STAMPA|RESET,F_STAMPA
MESSAGE HIDE,F_DATALIM|RESET,F_DATALIM|HIDE,F_TOTALI|RESET,F_TOTALI
MESSAGE HIDE,F_CODICI|RESET,F_CODICI|HIDE,F_SALDO|RESET,F_SALDO
MESSAGE HIDE,F_STAMPAV|RESET,F_STAMPAV
MESSAGE SHOW,F_VERIFICA|K_SPACE,F_VERIFICA|SHOW,F_STAMPA1|K_SPACE,F_STAMPA1
//MESSAGE HIDE,F_STAMPA|RESET,F_STAMPA
//MESSAGE HIDE,F_DATALIM|RESET,F_DATALIM|HIDE,F_TOTALI|RESET,F_TOTALI
//MESSAGE HIDE,F_CODICI|RESET,F_CODICI|HIDE,F_SALDO|RESET,F_SALDO
//MESSAGE HIDE,F_STAMPAV|RESET,F_STAMPAV
MESSAGE HIDE,1@|RESET,1@
MESSAGE SHOW,2@
//MESSAGE SHOW,F_VERIFICA|K_SPACE,F_VERIFICA|SHOW,F_STAMPA1|K_SPACE,F_STAMPA1
MESSAGE ENABLE,F_MODULO
MESSAGE SHOW,96|SHOW,97|SHOW,98|SHOW,99
END
@ -80,6 +84,7 @@ RADIOBUTTON F_STAMPA 28
BEGIN
PROMPT 41 5 "@bTipo stampa"
HELP "Indicare il tipo di stampa"
GROUP 1
ITEM "1|Per date limite"
MESSAGE SHOW,F_DATALIM|SHOW,F_TOTALI|SHOW,F_CODICI|SHOW,F_SALDO
#ifdef CONT_SEP
@ -98,13 +103,14 @@ BEGIN
PROMPT 40 5 "@bTipo stampa"
//FLAGS "G"
HELP "Indicare il tipo di stampa"
GROUP 2
ITEM "1|Per date limite"
MESSAGE SHOW,F_VERIFICA|SHOW,F_MODULO|SHOW,F_STAMPAMPROV
MESSAGE SHOW,F_VERIFICA|SHOW,F_MODULO
#ifdef CONT_SEP
MESSAGE SHOW,F_CONTSEP
#endif
ITEM "2|All'ultima immissione"
MESSAGE SHOW,F_VERIFICA|SHOW,F_MODULO|SHOW,F_STAMPAMPROV
MESSAGE SHOW,F_VERIFICA|SHOW,F_MODULO
MESSAGE COPY,F_STAMPA
#ifdef CONT_SEP
MESSAGE HIDE,F_CONTSEP
@ -115,34 +121,38 @@ DATE F_DATALIM
BEGIN
PROMPT 2 9 "Data limite "
HELP "Data fino alla quale si vuole la stampa"
GROUP 1
END
BOOLEAN F_TOTALI
BEGIN
PROMPT 33 9 "Non stampare totali per gruppo "
HELP "Indicare se non si devono stampare i totali dei gruppi"
GROUP 1
END
BOOLEAN F_CODICI
BEGIN
PROMPT 2 10 "Non stampare codici conti "
HELP "Indicare se non si devono stampare i codici dei conti"
GROUP 1
END
BOOLEAN F_SALDO
BEGIN
PROMPT 33 10 "Non stampare movimenti con saldo a zero "
HELP "Indicare se non si devono stampare i movimenti con saldo nullo"
GROUP 1
END
TEXT 96
BEGIN
PROMPT 2 10 "Dalla data competenza "
PROMPT 2 9 "Dalla data competenza "
END
TEXT 97
BEGIN
PROMPT 38 10 "Alla data competenza "
PROMPT 38 9 "Alla data competenza "
END
TEXT 98
@ -158,12 +168,14 @@ END
DATE F_DATADA
BEGIN
PROMPT 24 10 ""
HELP "Data dalla quale iniziare la stampa"
HELP "Data dall quale iniziare la stampa"
GROUP 2
END
DATE F_DATAA
BEGIN
PROMPT 60 10 ""
GROUP 2
END
BOOLEAN F_NORMALI
@ -222,6 +234,7 @@ RADIOBUTTON F_VERIFICA 27
BEGIN
PROMPT 2 1 "@bStampa bilancio di verifica "
HELP "Tipo di bilancio di verifica"
GROUP 2
ITEM "1|Bilancio"
MESSAGE SHOW,F_HIDE_CLIFO|SHOW,F_PRINT_FULL_CODE
ITEM "2|Saldi di mastro"
@ -233,9 +246,9 @@ END
RADIOBUTTON F_STAMPAC 36
BEGIN
PROMPT 34 1 "@bTipo stampa"
ITEM "1|Conti movimentati"
ITEM "2|Conti con saldo diverso da zero"
GROUP 2
END
RADIOBUTTON F_STAMPAV 36
@ -244,6 +257,7 @@ BEGIN
ITEM "1|Conti movimentati"
ITEM "2|Conti con saldo diverso da zero"
ITEM "3|Tutti i conti"
GROUP 1 2
END
BOOLEAN F_SEPARATOR
@ -275,6 +289,7 @@ BEGIN
ITEM " |Entrambi"
ITEM "C|Clienti"
ITEM "F|Fornitori"
GROUP 2
END
LIST F_ORDINAMENTO 11
@ -282,6 +297,7 @@ BEGIN
PROMPT 2 11 "Tipo ordinamento "
ITEM "1|Per codice"
ITEM "2|Alfabetico"
GROUP 2
END
GROUPBOX DLG_NULL 55 6

View File

@ -1556,7 +1556,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
long nr = _mov->get_long(MOV_NUMREG);
if (nr == 97882 || nr == 98707)
int i = 1;
int i = 1;
#endif
if ((soloiva &&
@ -4102,8 +4102,6 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
credito_utilizzabile -= cred_util_F24;
credito_autorizzato_F24 = lim.get_real("R20");
credito_utilizzabile += credito_autorizzato_F24;
// risultato += credito_autorizzato_F24;
// res_debt += credito_autorizzato_F24;
if (credito_utilizzabile < ZERO)
credito_utilizzabile = ZERO;
@ -4118,9 +4116,17 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
credito_utilizzato_iva = min(risul, credito_utilizzabile);
res_cred += credito_utilizzato_iva;
risultato -= credito_utilizzato_iva;
}
}
}
}
if (credito_compensabile)
{
TRectype lim = get_lim(month + deltam);
credito_autorizzato_F24 = lim.get_real("R20");
risultato += credito_autorizzato_F24;
res_debt += credito_autorizzato_F24;
}
}
else
{
if (credito_compensabile)
@ -4139,8 +4145,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
credito_utilizzabile += credito_autorizzato(13);
if (credito_utilizzabile < ZERO)
credito_utilizzabile = ZERO;
}
}
}
}
else
{
// per l'annuale considera solo il credito a inizio anno

View File

@ -2426,7 +2426,7 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
if (_month < 13 && credito_compensabile && credito_autorizzato_F24 > ZERO)
{
cred_prec -= credito_autorizzato_F24;
cre_deb_per += credito_autorizzato_F24;
// cre_deb_per += credito_autorizzato_F24;
set_row(rw++,FR("%s@11gCredito IVA autorizzato in F24%s@75g%r@100gil %s"), _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &credito_autorizzato_F24, (const char *) data_autorizzazione);
}
cred_prec -= rimborso;
@ -2547,7 +2547,7 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
if (credito_autorizzato_F24 > ZERO)
{
credito_utilizzabile += credito_autorizzato_F24;
set_row(rw++,FR("%s@11gCredito IVA autorizzato in F24%s@75g%r@100gil %s"), _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &credito_autorizzato_F24, (const char *) data_autorizzazione);
set_row(rw++,FR("%s@11gCredito IVA autorizzato in F24%s@58g%r@100gil %s"), _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &credito_autorizzato_F24, (const char *) data_autorizzazione);
}
set_row(rw++, FR("@11gCredito IVA compensabile detratto@75g%r"), &credito_utilizzato_IVA);
credito_utilizzabile -= credito_utilizzato_IVA;

View File

@ -15,13 +15,14 @@
/*
* - Per aggiornare le tabelle f9 aggiungere nella cartella "sql\f9\" il file sql cosi' fatto:
* f9xxxx.sql dove xxxx e' il numero zero-filled della versione delle tabelle, che INCREMENTA DI DUE COME CON LE PATCH, IMPORTANTE!
* - Aggiornare la definizione qui sotto di F9_SQL_VERSION mettendo la nuova versione.
* - Aggiornare la definizione qui sotto di SQL_VERSION mettendo la nuova versione.
* - Fare patch del file sql e dell'eseguibile f90.exe
* - Lanciare il programma per eseguire l'aggiornamento.
*/
#define TABMOD_SQL_VERSION "S0"
#define F9_SQL_VERSION 100 // Utilizzo questo per controllare la versione attuale delle tabelle e nel caso aggiornarle
#define TABMOD_TABVER "S0" // Campo per la memorizzazione della versione attuale delle tabelle
#define TAB_BASE_VERSION 100 // Versione base delle tabelle
#define SQL_VERSION 100 // Utilizzo questo per controllare la versione attuale delle tabelle e nel caso aggiornarle
SSimple_query& db()
{
@ -100,11 +101,11 @@ bool TEstrai_mask::estrai_handler(TMask_field& f, unsigned short key)
message_box("Estrazione avvenuta con successo!");
app().segna_estratti();
}
else if (!stato)
{
app().segna_in_errore();
warning_box("L'estrazione non e' stata completata. Controllare il log degli errori.");
}
if (!stato)
{
app().segna_in_errore();
warning_box("L'estrazione non e' stata completata. Controllare il log degli errori.");
}
return true;
}
@ -225,13 +226,13 @@ void TMonitor_mask::open_win_conf() const
m->run();
}
void TMonitor_mask::fill()
void TMonitor_mask::fill() const
{
app()._ambiente = ini_get_string(CONFIG_DITTA, PAR_MOD, AMBIENTE_F9);
app()._addr_doc = ini_get_string(CONFIG_DITTA, PAR_MOD, ADDRCART_F9);
TString query;
query << "SELECT * FROM F9DRD00K ORDER BY " << DRD_TIME << ";";
query << "SELECT * FROM F9DRD00K ORDER BY " << DRD_TIME << " DESC;";
db().sq_set_exec(query, false);
TSheet_field& sf = sfield(S_ELAB);
@ -259,19 +260,12 @@ void TMonitor_mask::fill()
row.add(db().sq_get(DRD_UTENTE));
row.add(TF9_app::traduci_stato(db().sq_get(DRD_STATO)));
row.add(db().sq_get(DRD_DESC));
if (TDate(row.get(cid2index(F_DATAESTR))) == today)
{
if (TString(row.get(cid2index(F_PROV_B))) == "X")
app()._last_estr_p = real(TString(row.get(cid2index(F_IDESTR))).ltrim(10)).integer();
else
app()._last_estr_d = real(TString(row.get(cid2index(F_IDESTR))).ltrim(10)).integer();
}
}
sf.force_update();
sf.show();
}
void TMonitor_mask::delete_pack(bool all)
void TMonitor_mask::delete_pack(const bool all) const
{
bool flag = false;
TSheet_field& sf = sfield(S_ELAB);
@ -417,6 +411,13 @@ void TF9_dberr::send()
_insert.cut(0) << "INSERT INTO " F9_ERR " VALUES ()";
}
void TF9_dberr::del_err(const TString& id_estr, int numreg)
{
TString query;
query << "DELETE FROM " F9_ERR " WHERE IDESTR = '" << id_estr << "' AND NUMREG = '" << numreg << "';";
db().sq_set_exec(query);
}
char TF9_dberr::get_errori(const TString& id_estr, vector<TToken_string>& movs)
{
TString query;
@ -697,7 +698,7 @@ void TF9_app::edit_wa() const
"INSERT INTO F9WA00K (F9PCSOC, F9PPCDC0) VALUES (" << _ambiente << ", " << _addr_doc << ");";
}
void TF9_app::export_error_list(bool esclusi) // todo: da ritestare
void TF9_app::export_error_list(bool esclusi)
{
TF9_dberr dberr;
vector<TToken_string>& movs = esclusi ? _esclusi : _movs;
@ -746,7 +747,6 @@ void TF9_app::load()
// Prendo tutti i movimenti a partire da una data e li carico tutti fino alla data finale
_movs.clear();
for (bool ok = mov.read(); ok && (datareg = mov.get_date(MOV_DATAREG)) >= dataini && datareg <= dataend; ok = mov.next() == NOERR)
{
if (!progr.add_status())
@ -966,8 +966,8 @@ bool TF9_app::is_doc_xml(const TLocalisamfile& mov)
if(chiave_paf(doc, hfatt, bfatt))
{
query << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';";
fp_db().sq_set_exec(query);
return fp_db().sq_items() > 0;
db().sq_set_exec(query);
return db().sq_items() > 0;
}
return false;
}
@ -975,10 +975,16 @@ bool TF9_app::is_doc_xml(const TLocalisamfile& mov)
TString TF9_app::next_estr_today(const char tipo) const
{
char estr[] = {0,0,0,0,0,0,0,0,0};
if(tipo == 'P')
sprintf_s(estr, 9, "%08d", _last_estr_p + 1);
else
sprintf_s(estr, 9, "%08d", _last_estr_d + 1);
TString query;
query << "SELECT TOP 1 " DRD_ID_EST " AS IDESTR\n"
"FROM " F9_DRD "\n"
"WHERE " DRD_ID_EST " LIKE '" << today.date2ansi() << tipo << "%'\n" <<
"ORDER BY " DRD_ID_EST " DESC";
if(!db().sq_set_exec(query))
fatal_box(db().sq_get_text_error());
const int last_estr = real(db().sq_get("IDESTR").ltrim(10)).integer();
sprintf_s(estr, 9, "%08d", last_estr + 1);
return estr;
}
@ -988,9 +994,10 @@ bool TF9_app::check_periodo_def(const drd& head)
// Controllo se ci sono estrazioni (definitive) che si sovrappongono di periodo (con lo stesso tipo) e che non siano in stato di errore
// Nel caso di stato di errore e' invece possibile la ri-estrazione
query << "SELECT *\nFROM F9DRD00K\n" <<
"WHERE '" << head.dal.date2ansi() << "' =< " DRD_DATAA " AND '" << head.al.date2ansi() << "' >= " DRD_DATADA " AND "
DRD_FLAG_PD " = 'D' AND\n F9RIDAS <> '" D_GEST_ERR "' AND F9RIDAS <> '" D_WA_ERR "' AND F9RIDAS <> '" D_ERR_SOS "' AND " DRD_TIPODOC " = '" << head.tipo_doc << "';";
db().sq_set_exec(query);
"WHERE " << DRD_DATAA << " >= '" << head.dal.date2ansi() << "' AND " DRD_DATADA " <= '" << head.al.date2ansi() << "' AND "
DRD_FLAG_PD " = 'D' AND\n " DRD_STATO " <> '" D_GEST_ERR "' AND " DRD_STATO " <> '" D_WA_ERR "' AND " DRD_STATO " <> '" D_ERR_SOS "' AND " DRD_TIPODOC " = '" << head.tipo_doc << "';";
if (!db().sq_set_exec(query))
fatal_box(db().sq_get_text_error());
return db().sq_items() == 0;
}
@ -1073,7 +1080,7 @@ int TF9_app::estrai()
else if (_head.stato_estr == D_GEST_OK)
{
_msk->disable_controllo_err();
return estrazione_iva() ? 1 : false;
return estrazione_iva() ? 1 : 0;
}
}
return -2;
@ -1228,7 +1235,7 @@ void TF9_app::segna_in_errore() const
db().sq_set_exec(query);
}
#ifdef DBG
void pulisci_mov()
{
TLocalisamfile mov(LF_MOV);
@ -1239,13 +1246,15 @@ void pulisci_mov()
{
mov.put(MOV_ELABF9, "");
mov.write();
bool ok = mov.rewrite() == NOERR;
mov.rewrite();
}while (mov.next() == NOERR);
}
#endif
void TF9_app::main_loop()
{
check_table();
if(!check_table())
fatal_box("Controllo tabelle modulo fallito.");
#ifdef DBG // Per sicurezza che non venga inserito in release
//pulisci_mov();
#endif
@ -1270,13 +1279,13 @@ bool TF9_app::create_tables() const
tabmod.put("CODTAB", "VERSION");
char ver[5] = "0000";
sprintf_s(ver, 5, "%04d", 100);
tabmod.put(TABMOD_SQL_VERSION, ver);
tabmod.write(); // todo: controllare
ok &= tabmod.rewrite() == NOERR; // todo: controllare
tabmod.put(TABMOD_TABVER, ver);
tabmod.write();
ok &= tabmod.rewrite() == NOERR;
return ok;
}
bool TF9_app::check_tabelle_f9()
bool TF9_app::check_tabelle_f9() const
{
bool ok = true;
TString query;
@ -1297,15 +1306,16 @@ bool TF9_app::aggiorna_tab_f9(int version) const
string sql;
char ver[5] = "0000";
sprintf_s(ver, 5, "%04d", version);
file << "sql\\f90\\f9" << ver << ".sql";
TString name; name << "f9" << ver << ".sql";
file << "sql\\f90\\" << name;
std::ifstream fin;
fin.open(file);
if(ok &= fin.is_open())
{
while (!fin.eof())
while (!fin.eof() && ok)
{
std::string appo_line; // todo: Controllare che si svuota ad ogni ciclo o aggiungere un erase
std::string appo_line;
std::getline(fin, appo_line);
if (appo_line[0] == '-' && appo_line[1] == '-') // Se è una riga di commento la salto
continue;
@ -1315,12 +1325,17 @@ bool TF9_app::aggiorna_tab_f9(int version) const
if(end != int(std::string::npos))
{
TString query; query << sql.c_str();
ok &= fp_db().sq_set_exec(query);
ok &= fp_db().sq_commit();
ok &= db().sq_set_exec(query);
ok &= db().sq_commit();
sql.erase();
}
}
}
else
{
TString msg; msg << "Impossibile trovare il file di aggiornamento tabelle: " << file;
error_box(msg);
}
return ok;
}
@ -1331,51 +1346,47 @@ bool TF9_app::check_tab_version() const
tabmod.put("MOD", "F9");
tabmod.put("COD", "SQL");
tabmod.put("CODTAB", "VERSION");
const bool exists = tabmod.read() == NOERR;
if(ok &= tabmod.read() == NOERR)
int version = exists ? real(tabmod.get(TABMOD_TABVER)).integer() : TAB_BASE_VERSION - 2;
if(version < SQL_VERSION) // Controllo la versione
{
int version = real(tabmod.get(TABMOD_SQL_VERSION)).integer();
if(version < F9_SQL_VERSION) // Controllo la versione
for(; version < SQL_VERSION; version += 2) // Effettuo le modifiche per ogni avanzamento di versione
{
for(; version <= F9_SQL_VERSION; version += 2) // Effettuo le modifiche per ogni avanzamento di versione
if (ok &= aggiorna_tab_f9(version + 2))
{
if (ok &= aggiorna_tab_f9(version + 2))
char ver[5] = "0000";
sprintf_s(ver, 5, "%04d", version + 2);
tabmod.put(TABMOD_TABVER, ver); // Avanzo il contatore della versione in TABMOD
if (!exists)
{
char ver[5] = "0000";
sprintf_s(ver, 5, "%04d", version + 2);
tabmod.put(TABMOD_SQL_VERSION, ver); // Avanzo il contatore della versione in TABMOD
tabmod.rewrite();
tabmod.zero();
tabmod.put("MOD", "F9");
tabmod.put("COD", "SQL");
tabmod.put("CODTAB", "VERSION");
tabmod.put(TABMOD_TABVER, ver); // Avanzo il contatore della versione in TABMOD
tabmod.write();
}
else
break;
tabmod.rewrite();
}
else
break;
}
}
return ok;
}
bool TF9_app::check_table()
bool TF9_app::check_table() const
{
if (!check_tabelle_f9())
{
TString msg;
std::ofstream fout;
fout.open("f9checktaberr.txt");
fout << fp_db().sq_get_text_error(false) << std::endl;
fout.close();
msg << "Errore controllo database F9: creazione tabelle.\n" << fp_db().sq_get_text_error(false);
fatal_box(msg);
return false;
}
// Se il check tabelle va a buon fine controllo la versione delle tabelle
if (!check_tab_version())
{
TString msg;
std::ofstream fout;
fout.open("f9checktaberr.txt");
fout << fp_db().sq_get_text_error(false) << std::endl;
fout << db().sq_get_text_error(false) << std::endl;
fout.close();
msg << "Errore controllo database F9: aggiornamento tabelle.\n" << fp_db().sq_get_text_error(false);
msg << "! Errore controllo database F9: creazione/aggiornamento tabelle.\n" << db().sq_get_text_error() << "\n" << db().sq_get_string_error();
fatal_box(msg);
return false;
}
@ -1393,7 +1404,7 @@ TF9_app& app()
int f90100(int argc, char* argv[])
{
TF9_app app;
app.run(argc, argv, TR("Configurazione FP"));
app.run(argc, argv, TR("Archiviazione Sostitutiva"));
return 0;
}
@ -1549,7 +1560,7 @@ TToken_string* TControllo_mask::selected_fat() const
return nullptr;
}
void TControllo_mask::associa()
void TControllo_mask::associa() // todo: levare gli ultimi residui del vecchio funzionamento del controllo errori
{
TToken_string* mov_sel = selected_mov();
TToken_string* fat_sel = selected_fat();
@ -1575,6 +1586,7 @@ void TControllo_mask::associa()
++it;
}
it->add(" ", 0);
TF9_dberr::del_err(_id_estr, mov_sel->get_int(cid2index(F_CNUMREG)));
}
}

View File

@ -70,8 +70,6 @@ class TF9_app : public TSkeleton_application
int _tot_movs;
TString _ambiente; // Codice ambiente (codsoc)
TString _addr_doc; // Indirizzo documenti cartacei
int _last_estr_p;
int _last_estr_d;
char _tipodoc_escl;
char _flagprov_escl;
@ -139,12 +137,12 @@ public:
// Controllo e aggiornamento tabelle F9
bool create_tables() const; // Creazione tabelle F9
bool check_tabelle_f9(); // Controllo esistenza delle tabelle e in caso le crea
bool check_tabelle_f9() const; // Controllo esistenza delle tabelle e in caso le crea
bool aggiorna_tab_f9(int version) const; // Aggiorna modifiche alle tabelle F9 come descritto in cima al file .cpp
bool check_tab_version() const; // Controllo della versione e in caso aggiorna le tabelle
bool check_table();
bool check_table() const;
TF9_app() : _estr_msk(nullptr), _msk(nullptr), _mov_escl("", '|'), _tot_movs(0), _ambiente(""), _addr_doc(""),
_last_estr_p(0), _last_estr_d(0), _tipodoc_escl('A'), _flagprov_escl('P') { }
_tipodoc_escl('A'), _flagprov_escl('P') { }
};
TF9_app& app();
@ -162,9 +160,9 @@ class TMonitor_mask : public TAutomask
static void open_win_estr();
void open_win_conf() const;
void fill();
void fill() const;
void delete_pack(bool all = false);
void delete_pack(bool all = false) const;
void sel() const;
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
@ -185,7 +183,7 @@ class TControllo_mask : public TAutomask
bool _sel_esclusi;
bool _is_escluso;
TString _id_estr;
char _tipo_doc_err;
char _tipo_doc_err{};
vector<TToken_string>& import_error_list();
void fill();
@ -220,6 +218,7 @@ public:
void add(long num);
void add() { add_str("NULL"); }
void send();
static void del_err(const TString& id_estr, int get_int);
static char get_errori(const TString& id_estr, vector<TToken_string>& movs);
TF9_dberr();
};

View File

@ -1,123 +1,137 @@
CREATE TABLE F9DRD00K (
F9RCSOC CHAR(10) NOT NULL DEFAULT '' ,
F9RIDES CHAR(18) NOT NULL DEFAULT '' ,
F9RFPDE CHAR(1) NOT NULL DEFAULT '' ,
F9RDDES CHAR(256) NOT NULL DEFAULT '' ,
F9RFTDC CHAR(1) NOT NULL DEFAULT '' ,
F9RUESD DATE NOT NULL DEFAULT getdate() ,
F9RUESA DATE NOT NULL DEFAULT getdate() ,
F9RUTEE CHAR(10) NOT NULL DEFAULT '' ,
F9RUHES DATETIME NOT NULL DEFAULT getdate() ,
F9RIDAS CHAR(2) NOT NULL DEFAULT '' ,
F9RIDWA CHAR(2) NOT NULL DEFAULT '' ,
F9RDSIW CHAR(256) NOT NULL DEFAULT '' ,
F9RUHIM DATETIME NOT NULL DEFAULT getdate() ,
F9RIISO CHAR(1) NOT NULL DEFAULT '' ,
F9RUHIS DATETIME NOT NULL DEFAULT getdate() ,
F9RSINW CHAR(2) NOT NULL DEFAULT '' ,
F9RDSIN CHAR(256) NOT NULL DEFAULT '' ,
F9RPCDC CHAR(256) NOT NULL DEFAULT '' ,
PRIMARY KEY( F9RCSOC , F9RIDES , F9RFPDE ) ) ;
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9DRD00K')
CREATE TABLE F9DRD00K (
F9RCSOC CHAR(10) NOT NULL DEFAULT '',
F9RIDES CHAR(18) NOT NULL DEFAULT '',
F9RFPDE CHAR(1) NOT NULL DEFAULT '',
F9RDDES CHAR(256) NOT NULL DEFAULT '',
F9RFTDC CHAR(1) NOT NULL DEFAULT '',
F9RUESD DATE NOT NULL DEFAULT getdate(),
F9RUESA DATE NOT NULL DEFAULT getdate(),
F9RUTEE CHAR(10) NOT NULL DEFAULT '',
F9RUHES DATETIME NOT NULL DEFAULT getdate(),
F9RIDAS CHAR(2) NOT NULL DEFAULT '',
F9RIDWA CHAR(2) NOT NULL DEFAULT '',
F9RDSIW CHAR(256) NOT NULL DEFAULT '',
F9RUHIM DATETIME NOT NULL DEFAULT getdate(),
F9RIISO CHAR(1) NOT NULL DEFAULT '',
F9RUHIS DATETIME NOT NULL DEFAULT getdate(),
F9RSINW CHAR(2) NOT NULL DEFAULT '',
F9RDSIN CHAR(256) NOT NULL DEFAULT '',
F9RPCDC CHAR(256) NOT NULL DEFAULT '',
PRIMARY KEY( F9RCSOC,F9RIDES,F9RFPDE ))
ELSE
SELECT 1 AS EXIST;
CREATE TABLE F9DRT00K (
F9TCSOC CHAR(10) NOT NULL DEFAULT '' ,
F9TCADO CHAR(10) NOT NULL DEFAULT '' ,
F9TDDES CHAR(30) NOT NULL DEFAULT '' ,
F9TCLDC CHAR(10) NOT NULL DEFAULT '' ,
F9TCDD1 CHAR(2) NOT NULL DEFAULT '' ,
F9TCSOS CHAR(6) NOT NULL DEFAULT '' ,
F9TCCAU CHAR(6) NOT NULL DEFAULT '' ,
F9TTCAU CHAR(6) NOT NULL DEFAULT '' ,
F9TTMOV CHAR(6) NOT NULL DEFAULT '' ,
F9TFCEE CHAR(6) NOT NULL DEFAULT '' ,
PRIMARY KEY( F9TCSOC , F9TCADO , F9TCCAU , F9TTCAU , F9TTMOV , F9TFCEE ) ) ;
CREATE TABLE F9IVA00K (
F9ICSOC CHAR(10) NOT NULL DEFAULT '' ,
F9IIDLA CHAR(18) NOT NULL DEFAULT '' ,
F9IFPDE CHAR(1) NOT NULL DEFAULT '' ,
F9IAFES CHAR(4) NOT NULL DEFAULT '' ,
F9IGIVA CHAR(1) NOT NULL DEFAULT '' ,
F9ITPGI CHAR(10) NOT NULL DEFAULT '' ,
F9IDXML CHAR(1) NOT NULL DEFAULT '' ,
F9ITCFO CHAR(1) NOT NULL DEFAULT '' ,
F9ICCFO CHAR(10) NOT NULL DEFAULT '' ,
F9IDRSO CHAR(60) NOT NULL DEFAULT '' ,
F9IIDFI CHAR(30) NOT NULL DEFAULT '' ,
F9IPIVA CHAR(28) NOT NULL DEFAULT '' ,
F9ICFIS CHAR(16) NOT NULL DEFAULT '' ,
F9ICADO CHAR(10) NOT NULL DEFAULT '' ,
F9ICSOS CHAR(6) NOT NULL DEFAULT '' ,
F9INDOC CHAR(20) NOT NULL DEFAULT '' ,
F9IUDOC DATE NOT NULL DEFAULT getdate() ,
F9ISIVA CHAR(10) NOT NULL DEFAULT '' ,
F9ICREG CHAR(6) NOT NULL DEFAULT '' ,
F9INPRI CHAR(20) NOT NULL DEFAULT '' ,
F9IUPRI DATE NOT NULL DEFAULT getdate() ,
F9IFOOA CHAR(10) NOT NULL DEFAULT '' ,
F9ITROT CHAR(6) NOT NULL DEFAULT '' ,
F9INRRO CHAR(20) NOT NULL DEFAULT '' ,
F9IURGO DATE NOT NULL DEFAULT getdate() ,
F9ICLDF CHAR(10) NOT NULL DEFAULT '' ,
F9INMF1 CHAR(100) NOT NULL DEFAULT '' ,
F9ICLDN CHAR(10) NOT NULL DEFAULT '' ,
F9INMF2 CHAR(100) NOT NULL DEFAULT '' ,
F9ICLDA CHAR(10) NOT NULL DEFAULT '' ,
F9INMF3 CHAR(100) NOT NULL DEFAULT '' ,
F9ICLD4 CHAR(10) NOT NULL DEFAULT '' ,
F9INMF4 CHAR(100) NOT NULL DEFAULT '' ,
F9ICLD5 CHAR(10) NOT NULL DEFAULT '' ,
F9INMF5 CHAR(100) NOT NULL DEFAULT '' ,
F9ICLD6 CHAR(10) NOT NULL DEFAULT '' ,
F9INMF6 CHAR(100) NOT NULL DEFAULT '' ,
F9ICLD7 CHAR(10) NOT NULL DEFAULT '' ,
F9INMF7 CHAR(100) NOT NULL DEFAULT '' ,
F9ICLD8 CHAR(10) NOT NULL DEFAULT '' ,
F9INMF8 CHAR(100) NOT NULL DEFAULT '' ,
F9ICLD9 CHAR(10) NOT NULL DEFAULT '' ,
F9INMF9 CHAR(100) NOT NULL DEFAULT '' ,
F9ICL10 CHAR(10) NOT NULL DEFAULT '' ,
F9INM10 CHAR(100) NOT NULL DEFAULT '' ,
F9IUTEE CHAR(10) NOT NULL DEFAULT '' ,
F9IUHEL DATETIME NOT NULL DEFAULT getdate() ,
F9IUHEW DATETIME NOT NULL DEFAULT getdate() ,
F9IDDES CHAR(30) NOT NULL DEFAULT '' ,
F9ITPRT CHAR(2) NOT NULL DEFAULT '' ,
F9IAPRT NUMERIC(4, 0) NOT NULL DEFAULT 0 ,
F9INPRT NUMERIC(10, 0) NOT NULL DEFAULT 0 ,
F9IURIC DATETIME NOT NULL DEFAULT getdate() ,
PRIMARY KEY( F9ICSOC , F9IIDLA , F9IFPDE , F9ISIVA , F9ICREG , F9INPRI , F9IUPRI , F9ITPGI ) ) ;
CREATE TABLE F9PWA00K (
F9PCSOC CHAR(10) NOT NULL DEFAULT '' ,
F9PCDFN CHAR(2) NOT NULL DEFAULT '' ,
F9PCDNT CHAR(2) NOT NULL DEFAULT '' ,
F9PCDA1 CHAR(2) NOT NULL DEFAULT '' ,
F9PCDA2 CHAR(2) NOT NULL DEFAULT '' ,
F9PCDA3 CHAR(2) NOT NULL DEFAULT '' ,
F9PCDA4 CHAR(2) NOT NULL DEFAULT '' ,
F9PCDA5 CHAR(2) NOT NULL DEFAULT '' ,
F9PCDA6 CHAR(2) NOT NULL DEFAULT '' ,
F9PCDA7 CHAR(2) NOT NULL DEFAULT '' ,
F9PCDA8 CHAR(2) NOT NULL DEFAULT '' ,
F9PPCDC CHAR(256) NOT NULL DEFAULT '' ,
PRIMARY KEY( F9PCSOC ) ) ;
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9DRT00K')
CREATE TABLE F9DRT00K (
F9TCSOC CHAR(10) NOT NULL DEFAULT '',
F9TCADO CHAR(10) NOT NULL DEFAULT '',
F9TDDES CHAR(30) NOT NULL DEFAULT '',
F9TCLDC CHAR(10) NOT NULL DEFAULT '',
F9TCDD1 CHAR(2) NOT NULL DEFAULT '',
F9TCSOS CHAR(6) NOT NULL DEFAULT '',
F9TCCAU CHAR(6) NOT NULL DEFAULT '',
F9TTCAU CHAR(6) NOT NULL DEFAULT '',
F9TTMOV CHAR(6) NOT NULL DEFAULT '',
F9TFCEE CHAR(6) NOT NULL DEFAULT '',
PRIMARY KEY( F9TCSOC,F9TCADO,F9TCCAU,F9TTCAU,F9TTMOV,F9TFCEE ))
ELSE
SELECT 1 AS EXIST;
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9IVA00K')
CREATE TABLE F9IVA00K (
F9ICSOC CHAR(10) NOT NULL DEFAULT '',
F9IIDLA CHAR(18) NOT NULL DEFAULT '',
F9IFPDE CHAR(1) NOT NULL DEFAULT '',
F9IAFES CHAR(4) NOT NULL DEFAULT '',
F9IGIVA CHAR(1) NOT NULL DEFAULT '',
F9ITPGI CHAR(10) NOT NULL DEFAULT '',
F9IDXML CHAR(1) NOT NULL DEFAULT '',
F9ITCFO CHAR(1) NOT NULL DEFAULT '',
F9ICCFO CHAR(10) NOT NULL DEFAULT '',
F9IDRSO CHAR(60) NOT NULL DEFAULT '',
F9IIDFI CHAR(30) NOT NULL DEFAULT '',
F9IPIVA CHAR(28) NOT NULL DEFAULT '',
F9ICFIS CHAR(16) NOT NULL DEFAULT '',
F9ICADO CHAR(10) NOT NULL DEFAULT '',
F9ICSOS CHAR(6) NOT NULL DEFAULT '',
F9INDOC CHAR(20) NOT NULL DEFAULT '',
F9IUDOC DATE NOT NULL DEFAULT getdate(),
F9ISIVA CHAR(10) NOT NULL DEFAULT '',
F9ICREG CHAR(6) NOT NULL DEFAULT '',
F9INPRI CHAR(20) NOT NULL DEFAULT '',
F9IUPRI DATE NOT NULL DEFAULT getdate(),
F9IFOOA CHAR(10) NOT NULL DEFAULT '',
F9ITROT CHAR(6) NOT NULL DEFAULT '',
F9INRRO CHAR(20) NOT NULL DEFAULT '',
F9IURGO DATE NOT NULL DEFAULT getdate(),
F9ICLDF CHAR(10) NOT NULL DEFAULT '',
F9INMF1 CHAR(100) NOT NULL DEFAULT '',
F9ICLDN CHAR(10) NOT NULL DEFAULT '',
F9INMF2 CHAR(100) NOT NULL DEFAULT '',
F9ICLDA CHAR(10) NOT NULL DEFAULT '',
F9INMF3 CHAR(100) NOT NULL DEFAULT '',
F9ICLD4 CHAR(10) NOT NULL DEFAULT '',
F9INMF4 CHAR(100) NOT NULL DEFAULT '',
F9ICLD5 CHAR(10) NOT NULL DEFAULT '',
F9INMF5 CHAR(100) NOT NULL DEFAULT '',
F9ICLD6 CHAR(10) NOT NULL DEFAULT '',
F9INMF6 CHAR(100) NOT NULL DEFAULT '',
F9ICLD7 CHAR(10) NOT NULL DEFAULT '',
F9INMF7 CHAR(100) NOT NULL DEFAULT '',
F9ICLD8 CHAR(10) NOT NULL DEFAULT '',
F9INMF8 CHAR(100) NOT NULL DEFAULT '',
F9ICLD9 CHAR(10) NOT NULL DEFAULT '',
F9INMF9 CHAR(100) NOT NULL DEFAULT '',
F9ICL10 CHAR(10) NOT NULL DEFAULT '',
F9INM10 CHAR(100) NOT NULL DEFAULT '',
F9IUTEE CHAR(10) NOT NULL DEFAULT '',
F9IUHEL DATETIME NOT NULL DEFAULT getdate(),
F9IUHEW DATETIME NOT NULL DEFAULT getdate(),
F9IDDES CHAR(30) NOT NULL DEFAULT '',
F9ITPRT CHAR(2) NOT NULL DEFAULT '',
F9IAPRT NUMERIC(4, 0) NOT NULL DEFAULT 0,
F9INPRT NUMERIC(10, 0) NOT NULL DEFAULT 0,
F9IURIC DATETIME NOT NULL DEFAULT getdate(),
PRIMARY KEY( F9ICSOC,F9IIDLA,F9IFPDE,F9ISIVA,F9ICREG,F9INPRI,F9IUPRI,F9ITPGI ))
ELSE
SELECT 1 AS EXIST;
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9PWA00K')
CREATE TABLE F9PWA00K (
F9PCSOC CHAR(10) NOT NULL DEFAULT '',
F9PCDFN CHAR(2) NOT NULL DEFAULT '',
F9PCDNT CHAR(2) NOT NULL DEFAULT '',
F9PCDA1 CHAR(2) NOT NULL DEFAULT '',
F9PCDA2 CHAR(2) NOT NULL DEFAULT '',
F9PCDA3 CHAR(2) NOT NULL DEFAULT '',
F9PCDA4 CHAR(2) NOT NULL DEFAULT '',
F9PCDA5 CHAR(2) NOT NULL DEFAULT '',
F9PCDA6 CHAR(2) NOT NULL DEFAULT '',
F9PCDA7 CHAR(2) NOT NULL DEFAULT '',
F9PCDA8 CHAR(2) NOT NULL DEFAULT '',
F9PPCDC CHAR(256) NOT NULL DEFAULT '',
PRIMARY KEY( F9PCSOC ))
ELSE
SELECT 1 AS EXIST;
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9ERROR')
CREATE TABLE F9ERROR(
IDESTR CHAR(18) NOT NULL,
NUMREG NUMERIC(7,0) NOT NULL,
DATAREG DATE NOT NULL,
DATADOC DATE NOT NULL,
CODCAUS VARCHAR(3) NOT NULL,
MESELIQ NUMERIC(2,0),
NUMDOC VARCHAR(50) NOT NULL,
IDESTR CHAR(18) NOT NULL,
NUMREG NUMERIC(7,0) NOT NULL,
DATAREG DATE NOT NULL,
DATADOC DATE NOT NULL,
CODCAUS VARCHAR(3) NOT NULL,
MESELIQ NUMERIC(2,0),
NUMDOC VARCHAR(50) NOT NULL,
IMPTOTDOC NUMERIC(18,3) NOT NULL,
FORN NUMERIC(6,0) NOT NULL,
RAGSOC VARCHAR(50),
PROTIVA VARCHAR(10) NOT NULL,
PROTIVA VARCHAR(10) NOT NULL,
DESCR VARCHAR(50),
ESCLUDI CHAR(1),
ESCLUSO CHAR(2),
DESCRERR VARCHAR(110),
PRIMARY KEY(IDESTR, NUMREG)
);
PRIMARY KEY(IDESTR, NUMREG))
ELSE
SELECT 1 AS EXIST;