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

View File

@ -4102,8 +4102,6 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
credito_utilizzabile -= cred_util_F24; credito_utilizzabile -= cred_util_F24;
credito_autorizzato_F24 = lim.get_real("R20"); credito_autorizzato_F24 = lim.get_real("R20");
credito_utilizzabile += credito_autorizzato_F24; credito_utilizzabile += credito_autorizzato_F24;
// risultato += credito_autorizzato_F24;
// res_debt += credito_autorizzato_F24;
if (credito_utilizzabile < ZERO) if (credito_utilizzabile < ZERO)
credito_utilizzabile = ZERO; credito_utilizzabile = ZERO;
@ -4119,6 +4117,14 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
res_cred += credito_utilizzato_iva; res_cred += credito_utilizzato_iva;
risultato -= 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 else

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) if (_month < 13 && credito_compensabile && credito_autorizzato_F24 > ZERO)
{ {
cred_prec -= credito_autorizzato_F24; 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); 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; cred_prec -= rimborso;
@ -2547,7 +2547,7 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
if (credito_autorizzato_F24 > ZERO) if (credito_autorizzato_F24 > ZERO)
{ {
credito_utilizzabile += credito_autorizzato_F24; 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); set_row(rw++, FR("@11gCredito IVA compensabile detratto@75g%r"), &credito_utilizzato_IVA);
credito_utilizzabile -= 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: * - 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! * 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 * - Fare patch del file sql e dell'eseguibile f90.exe
* - Lanciare il programma per eseguire l'aggiornamento. * - Lanciare il programma per eseguire l'aggiornamento.
*/ */
#define TABMOD_SQL_VERSION "S0" #define TABMOD_TABVER "S0" // Campo per la memorizzazione della versione attuale delle tabelle
#define F9_SQL_VERSION 100 // Utilizzo questo per controllare la versione attuale delle tabelle e nel caso aggiornarle #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() SSimple_query& db()
{ {
@ -100,7 +101,7 @@ bool TEstrai_mask::estrai_handler(TMask_field& f, unsigned short key)
message_box("Estrazione avvenuta con successo!"); message_box("Estrazione avvenuta con successo!");
app().segna_estratti(); app().segna_estratti();
} }
else if (!stato) if (!stato)
{ {
app().segna_in_errore(); app().segna_in_errore();
warning_box("L'estrazione non e' stata completata. Controllare il log degli errori."); warning_box("L'estrazione non e' stata completata. Controllare il log degli errori.");
@ -225,13 +226,13 @@ void TMonitor_mask::open_win_conf() const
m->run(); m->run();
} }
void TMonitor_mask::fill() void TMonitor_mask::fill() const
{ {
app()._ambiente = ini_get_string(CONFIG_DITTA, PAR_MOD, AMBIENTE_F9); app()._ambiente = ini_get_string(CONFIG_DITTA, PAR_MOD, AMBIENTE_F9);
app()._addr_doc = ini_get_string(CONFIG_DITTA, PAR_MOD, ADDRCART_F9); app()._addr_doc = ini_get_string(CONFIG_DITTA, PAR_MOD, ADDRCART_F9);
TString query; 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); db().sq_set_exec(query, false);
TSheet_field& sf = sfield(S_ELAB); TSheet_field& sf = sfield(S_ELAB);
@ -259,19 +260,12 @@ void TMonitor_mask::fill()
row.add(db().sq_get(DRD_UTENTE)); row.add(db().sq_get(DRD_UTENTE));
row.add(TF9_app::traduci_stato(db().sq_get(DRD_STATO))); row.add(TF9_app::traduci_stato(db().sq_get(DRD_STATO)));
row.add(db().sq_get(DRD_DESC)); 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.force_update();
sf.show(); sf.show();
} }
void TMonitor_mask::delete_pack(bool all) void TMonitor_mask::delete_pack(const bool all) const
{ {
bool flag = false; bool flag = false;
TSheet_field& sf = sfield(S_ELAB); TSheet_field& sf = sfield(S_ELAB);
@ -417,6 +411,13 @@ void TF9_dberr::send()
_insert.cut(0) << "INSERT INTO " F9_ERR " VALUES ()"; _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) char TF9_dberr::get_errori(const TString& id_estr, vector<TToken_string>& movs)
{ {
TString query; TString query;
@ -697,7 +698,7 @@ void TF9_app::edit_wa() const
"INSERT INTO F9WA00K (F9PCSOC, F9PPCDC0) VALUES (" << _ambiente << ", " << _addr_doc << ");"; "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; TF9_dberr dberr;
vector<TToken_string>& movs = esclusi ? _esclusi : _movs; 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 // Prendo tutti i movimenti a partire da una data e li carico tutti fino alla data finale
_movs.clear(); _movs.clear();
for (bool ok = mov.read(); ok && (datareg = mov.get_date(MOV_DATAREG)) >= dataini && datareg <= dataend; ok = mov.next() == NOERR) for (bool ok = mov.read(); ok && (datareg = mov.get_date(MOV_DATAREG)) >= dataini && datareg <= dataend; ok = mov.next() == NOERR)
{ {
if (!progr.add_status()) if (!progr.add_status())
@ -966,8 +966,8 @@ bool TF9_app::is_doc_xml(const TLocalisamfile& mov)
if(chiave_paf(doc, hfatt, bfatt)) if(chiave_paf(doc, hfatt, bfatt))
{ {
query << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';"; query << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';";
fp_db().sq_set_exec(query); db().sq_set_exec(query);
return fp_db().sq_items() > 0; return db().sq_items() > 0;
} }
return false; 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 TString TF9_app::next_estr_today(const char tipo) const
{ {
char estr[] = {0,0,0,0,0,0,0,0,0}; char estr[] = {0,0,0,0,0,0,0,0,0};
if(tipo == 'P') TString query;
sprintf_s(estr, 9, "%08d", _last_estr_p + 1); query << "SELECT TOP 1 " DRD_ID_EST " AS IDESTR\n"
else "FROM " F9_DRD "\n"
sprintf_s(estr, 9, "%08d", _last_estr_d + 1); "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; 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 // 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 // Nel caso di stato di errore e' invece possibile la ri-estrazione
query << "SELECT *\nFROM F9DRD00K\n" << query << "SELECT *\nFROM F9DRD00K\n" <<
"WHERE '" << head.dal.date2ansi() << "' =< " DRD_DATAA " AND '" << head.al.date2ansi() << "' >= " DRD_DATADA " AND " "WHERE " << DRD_DATAA << " >= '" << head.dal.date2ansi() << "' AND " DRD_DATADA " <= '" << head.al.date2ansi() << "' 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 << "';"; 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 << "';";
db().sq_set_exec(query); if (!db().sq_set_exec(query))
fatal_box(db().sq_get_text_error());
return db().sq_items() == 0; return db().sq_items() == 0;
} }
@ -1073,7 +1080,7 @@ int TF9_app::estrai()
else if (_head.stato_estr == D_GEST_OK) else if (_head.stato_estr == D_GEST_OK)
{ {
_msk->disable_controllo_err(); _msk->disable_controllo_err();
return estrazione_iva() ? 1 : false; return estrazione_iva() ? 1 : 0;
} }
} }
return -2; return -2;
@ -1228,7 +1235,7 @@ void TF9_app::segna_in_errore() const
db().sq_set_exec(query); db().sq_set_exec(query);
} }
#ifdef DBG
void pulisci_mov() void pulisci_mov()
{ {
TLocalisamfile mov(LF_MOV); TLocalisamfile mov(LF_MOV);
@ -1239,13 +1246,15 @@ void pulisci_mov()
{ {
mov.put(MOV_ELABF9, ""); mov.put(MOV_ELABF9, "");
mov.write(); mov.write();
bool ok = mov.rewrite() == NOERR; mov.rewrite();
}while (mov.next() == NOERR); }while (mov.next() == NOERR);
} }
#endif
void TF9_app::main_loop() 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 #ifdef DBG // Per sicurezza che non venga inserito in release
//pulisci_mov(); //pulisci_mov();
#endif #endif
@ -1270,13 +1279,13 @@ bool TF9_app::create_tables() const
tabmod.put("CODTAB", "VERSION"); tabmod.put("CODTAB", "VERSION");
char ver[5] = "0000"; char ver[5] = "0000";
sprintf_s(ver, 5, "%04d", 100); sprintf_s(ver, 5, "%04d", 100);
tabmod.put(TABMOD_SQL_VERSION, ver); tabmod.put(TABMOD_TABVER, ver);
tabmod.write(); // todo: controllare tabmod.write();
ok &= tabmod.rewrite() == NOERR; // todo: controllare ok &= tabmod.rewrite() == NOERR;
return ok; return ok;
} }
bool TF9_app::check_tabelle_f9() bool TF9_app::check_tabelle_f9() const
{ {
bool ok = true; bool ok = true;
TString query; TString query;
@ -1297,15 +1306,16 @@ bool TF9_app::aggiorna_tab_f9(int version) const
string sql; string sql;
char ver[5] = "0000"; char ver[5] = "0000";
sprintf_s(ver, 5, "%04d", version); 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; std::ifstream fin;
fin.open(file); fin.open(file);
if(ok &= fin.is_open()) 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); std::getline(fin, appo_line);
if (appo_line[0] == '-' && appo_line[1] == '-') // Se è una riga di commento la salto if (appo_line[0] == '-' && appo_line[1] == '-') // Se è una riga di commento la salto
continue; continue;
@ -1315,12 +1325,17 @@ bool TF9_app::aggiorna_tab_f9(int version) const
if(end != int(std::string::npos)) if(end != int(std::string::npos))
{ {
TString query; query << sql.c_str(); TString query; query << sql.c_str();
ok &= fp_db().sq_set_exec(query); ok &= db().sq_set_exec(query);
ok &= fp_db().sq_commit(); ok &= db().sq_commit();
sql.erase(); sql.erase();
} }
} }
} }
else
{
TString msg; msg << "Impossibile trovare il file di aggiornamento tabelle: " << file;
error_box(msg);
}
return ok; return ok;
} }
@ -1331,51 +1346,47 @@ bool TF9_app::check_tab_version() const
tabmod.put("MOD", "F9"); tabmod.put("MOD", "F9");
tabmod.put("COD", "SQL"); tabmod.put("COD", "SQL");
tabmod.put("CODTAB", "VERSION"); 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(); for(; version < SQL_VERSION; version += 2) // Effettuo le modifiche per ogni avanzamento di versione
if(version < F9_SQL_VERSION) // Controllo la 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"; char ver[5] = "0000";
sprintf_s(ver, 5, "%04d", version + 2); sprintf_s(ver, 5, "%04d", version + 2);
tabmod.put(TABMOD_SQL_VERSION, ver); // Avanzo il contatore della versione in TABMOD tabmod.put(TABMOD_TABVER, ver); // Avanzo il contatore della versione in TABMOD
if (!exists)
{
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();
}
tabmod.rewrite(); tabmod.rewrite();
} }
else else
break; break;
} }
} }
}
return ok; 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()) if (!check_tab_version())
{ {
TString msg; TString msg;
std::ofstream fout; std::ofstream fout;
fout.open("f9checktaberr.txt"); 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(); 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); fatal_box(msg);
return false; return false;
} }
@ -1393,7 +1404,7 @@ TF9_app& app()
int f90100(int argc, char* argv[]) int f90100(int argc, char* argv[])
{ {
TF9_app app; TF9_app app;
app.run(argc, argv, TR("Configurazione FP")); app.run(argc, argv, TR("Archiviazione Sostitutiva"));
return 0; return 0;
} }
@ -1549,7 +1560,7 @@ TToken_string* TControllo_mask::selected_fat() const
return nullptr; 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* mov_sel = selected_mov();
TToken_string* fat_sel = selected_fat(); TToken_string* fat_sel = selected_fat();
@ -1575,6 +1586,7 @@ void TControllo_mask::associa()
++it; ++it;
} }
it->add(" ", 0); 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; int _tot_movs;
TString _ambiente; // Codice ambiente (codsoc) TString _ambiente; // Codice ambiente (codsoc)
TString _addr_doc; // Indirizzo documenti cartacei TString _addr_doc; // Indirizzo documenti cartacei
int _last_estr_p;
int _last_estr_d;
char _tipodoc_escl; char _tipodoc_escl;
char _flagprov_escl; char _flagprov_escl;
@ -139,12 +137,12 @@ public:
// Controllo e aggiornamento tabelle F9 // Controllo e aggiornamento tabelle F9
bool create_tables() const; // Creazione 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 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_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(""), 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(); TF9_app& app();
@ -162,9 +160,9 @@ class TMonitor_mask : public TAutomask
static void open_win_estr(); static void open_win_estr();
void open_win_conf() const; 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; void sel() const;
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; 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 _sel_esclusi;
bool _is_escluso; bool _is_escluso;
TString _id_estr; TString _id_estr;
char _tipo_doc_err; char _tipo_doc_err{};
vector<TToken_string>& import_error_list(); vector<TToken_string>& import_error_list();
void fill(); void fill();
@ -220,6 +218,7 @@ public:
void add(long num); void add(long num);
void add() { add_str("NULL"); } void add() { add_str("NULL"); }
void send(); 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); static char get_errori(const TString& id_estr, vector<TToken_string>& movs);
TF9_dberr(); TF9_dberr();
}; };

View File

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