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

@ -1556,7 +1556,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
long nr = _mov->get_long(MOV_NUMREG); long nr = _mov->get_long(MOV_NUMREG);
if (nr == 97882 || nr == 98707) if (nr == 97882 || nr == 98707)
int i = 1; int i = 1;
#endif #endif
if ((soloiva && if ((soloiva &&
@ -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;
@ -4118,9 +4116,17 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
credito_utilizzato_iva = min(risul, credito_utilizzabile); credito_utilizzato_iva = min(risul, credito_utilizzabile);
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
{ {
if (credito_compensabile) if (credito_compensabile)
@ -4139,8 +4145,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
credito_utilizzabile += credito_autorizzato(13); credito_utilizzabile += credito_autorizzato(13);
if (credito_utilizzabile < ZERO) if (credito_utilizzabile < ZERO)
credito_utilizzabile = ZERO; credito_utilizzabile = ZERO;
} }
} }
else else
{ {
// per l'annuale considera solo il credito a inizio anno // 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) 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,11 +101,11 @@ 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.");
} }
return true; return true;
} }
@ -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";
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"; tabmod.zero();
sprintf_s(ver, 5, "%04d", version + 2); tabmod.put("MOD", "F9");
tabmod.put(TABMOD_SQL_VERSION, ver); // Avanzo il contatore della versione in TABMOD tabmod.put("COD", "SQL");
tabmod.rewrite(); tabmod.put("CODTAB", "VERSION");
tabmod.put(TABMOD_TABVER, ver); // Avanzo il contatore della versione in TABMOD
tabmod.write();
} }
else tabmod.rewrite();
break;
} }
else
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,123 +1,137 @@
CREATE TABLE F9DRD00K ( IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9DRD00K')
F9RCSOC CHAR(10) NOT NULL DEFAULT '' , CREATE TABLE F9DRD00K (
F9RIDES CHAR(18) NOT NULL DEFAULT '' , F9RCSOC CHAR(10) NOT NULL DEFAULT '',
F9RFPDE CHAR(1) NOT NULL DEFAULT '' , F9RIDES CHAR(18) NOT NULL DEFAULT '',
F9RDDES CHAR(256) NOT NULL DEFAULT '' , F9RFPDE CHAR(1) NOT NULL DEFAULT '',
F9RFTDC CHAR(1) NOT NULL DEFAULT '' , F9RDDES CHAR(256) NOT NULL DEFAULT '',
F9RUESD DATE NOT NULL DEFAULT getdate() , F9RFTDC CHAR(1) NOT NULL DEFAULT '',
F9RUESA DATE NOT NULL DEFAULT getdate() , F9RUESD DATE NOT NULL DEFAULT getdate(),
F9RUTEE CHAR(10) NOT NULL DEFAULT '' , F9RUESA DATE NOT NULL DEFAULT getdate(),
F9RUHES DATETIME NOT NULL DEFAULT getdate() , F9RUTEE CHAR(10) NOT NULL DEFAULT '',
F9RIDAS CHAR(2) NOT NULL DEFAULT '' , F9RUHES DATETIME NOT NULL DEFAULT getdate(),
F9RIDWA CHAR(2) NOT NULL DEFAULT '' , F9RIDAS CHAR(2) NOT NULL DEFAULT '',
F9RDSIW CHAR(256) NOT NULL DEFAULT '' , F9RIDWA CHAR(2) NOT NULL DEFAULT '',
F9RUHIM DATETIME NOT NULL DEFAULT getdate() , F9RDSIW CHAR(256) NOT NULL DEFAULT '',
F9RIISO CHAR(1) NOT NULL DEFAULT '' , F9RUHIM DATETIME NOT NULL DEFAULT getdate(),
F9RUHIS DATETIME NOT NULL DEFAULT getdate() , F9RIISO CHAR(1) NOT NULL DEFAULT '',
F9RSINW CHAR(2) NOT NULL DEFAULT '' , F9RUHIS DATETIME NOT NULL DEFAULT getdate(),
F9RDSIN CHAR(256) NOT NULL DEFAULT '' , F9RSINW CHAR(2) NOT NULL DEFAULT '',
F9RPCDC CHAR(256) NOT NULL DEFAULT '' , F9RDSIN CHAR(256) NOT NULL DEFAULT '',
PRIMARY KEY( F9RCSOC , F9RIDES , F9RFPDE ) ) ; F9RPCDC CHAR(256) NOT NULL DEFAULT '',
PRIMARY KEY( F9RCSOC,F9RIDES,F9RFPDE ))
ELSE
SELECT 1 AS EXIST;
CREATE TABLE F9DRT00K ( IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9DRT00K')
F9TCSOC CHAR(10) NOT NULL DEFAULT '' , CREATE TABLE F9DRT00K (
F9TCADO CHAR(10) NOT NULL DEFAULT '' , F9TCSOC CHAR(10) NOT NULL DEFAULT '',
F9TDDES CHAR(30) NOT NULL DEFAULT '' , F9TCADO CHAR(10) NOT NULL DEFAULT '',
F9TCLDC CHAR(10) NOT NULL DEFAULT '' , F9TDDES CHAR(30) NOT NULL DEFAULT '',
F9TCDD1 CHAR(2) NOT NULL DEFAULT '' , F9TCLDC CHAR(10) NOT NULL DEFAULT '',
F9TCSOS CHAR(6) NOT NULL DEFAULT '' , F9TCDD1 CHAR(2) NOT NULL DEFAULT '',
F9TCCAU CHAR(6) NOT NULL DEFAULT '' , F9TCSOS CHAR(6) NOT NULL DEFAULT '',
F9TTCAU CHAR(6) NOT NULL DEFAULT '' , F9TCCAU CHAR(6) NOT NULL DEFAULT '',
F9TTMOV CHAR(6) NOT NULL DEFAULT '' , F9TTCAU CHAR(6) NOT NULL DEFAULT '',
F9TFCEE CHAR(6) NOT NULL DEFAULT '' , F9TTMOV CHAR(6) NOT NULL DEFAULT '',
PRIMARY KEY( F9TCSOC , F9TCADO , F9TCCAU , F9TTCAU , F9TTMOV , F9TFCEE ) ) ; F9TFCEE CHAR(6) NOT NULL DEFAULT '',
PRIMARY KEY( F9TCSOC,F9TCADO,F9TCCAU,F9TTCAU,F9TTMOV,F9TFCEE ))
CREATE TABLE F9IVA00K ( ELSE
F9ICSOC CHAR(10) NOT NULL DEFAULT '' , SELECT 1 AS EXIST;
F9IIDLA CHAR(18) NOT NULL DEFAULT '' ,
F9IFPDE CHAR(1) NOT NULL DEFAULT '' , IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9IVA00K')
F9IAFES CHAR(4) NOT NULL DEFAULT '' , CREATE TABLE F9IVA00K (
F9IGIVA CHAR(1) NOT NULL DEFAULT '' , F9ICSOC CHAR(10) NOT NULL DEFAULT '',
F9ITPGI CHAR(10) NOT NULL DEFAULT '' , F9IIDLA CHAR(18) NOT NULL DEFAULT '',
F9IDXML CHAR(1) NOT NULL DEFAULT '' , F9IFPDE CHAR(1) NOT NULL DEFAULT '',
F9ITCFO CHAR(1) NOT NULL DEFAULT '' , F9IAFES CHAR(4) NOT NULL DEFAULT '',
F9ICCFO CHAR(10) NOT NULL DEFAULT '' , F9IGIVA CHAR(1) NOT NULL DEFAULT '',
F9IDRSO CHAR(60) NOT NULL DEFAULT '' , F9ITPGI CHAR(10) NOT NULL DEFAULT '',
F9IIDFI CHAR(30) NOT NULL DEFAULT '' , F9IDXML CHAR(1) NOT NULL DEFAULT '',
F9IPIVA CHAR(28) NOT NULL DEFAULT '' , F9ITCFO CHAR(1) NOT NULL DEFAULT '',
F9ICFIS CHAR(16) NOT NULL DEFAULT '' , F9ICCFO CHAR(10) NOT NULL DEFAULT '',
F9ICADO CHAR(10) NOT NULL DEFAULT '' , F9IDRSO CHAR(60) NOT NULL DEFAULT '',
F9ICSOS CHAR(6) NOT NULL DEFAULT '' , F9IIDFI CHAR(30) NOT NULL DEFAULT '',
F9INDOC CHAR(20) NOT NULL DEFAULT '' , F9IPIVA CHAR(28) NOT NULL DEFAULT '',
F9IUDOC DATE NOT NULL DEFAULT getdate() , F9ICFIS CHAR(16) NOT NULL DEFAULT '',
F9ISIVA CHAR(10) NOT NULL DEFAULT '' , F9ICADO CHAR(10) NOT NULL DEFAULT '',
F9ICREG CHAR(6) NOT NULL DEFAULT '' , F9ICSOS CHAR(6) NOT NULL DEFAULT '',
F9INPRI CHAR(20) NOT NULL DEFAULT '' , F9INDOC CHAR(20) NOT NULL DEFAULT '',
F9IUPRI DATE NOT NULL DEFAULT getdate() , F9IUDOC DATE NOT NULL DEFAULT getdate(),
F9IFOOA CHAR(10) NOT NULL DEFAULT '' , F9ISIVA CHAR(10) NOT NULL DEFAULT '',
F9ITROT CHAR(6) NOT NULL DEFAULT '' , F9ICREG CHAR(6) NOT NULL DEFAULT '',
F9INRRO CHAR(20) NOT NULL DEFAULT '' , F9INPRI CHAR(20) NOT NULL DEFAULT '',
F9IURGO DATE NOT NULL DEFAULT getdate() , F9IUPRI DATE NOT NULL DEFAULT getdate(),
F9ICLDF CHAR(10) NOT NULL DEFAULT '' , F9IFOOA CHAR(10) NOT NULL DEFAULT '',
F9INMF1 CHAR(100) NOT NULL DEFAULT '' , F9ITROT CHAR(6) NOT NULL DEFAULT '',
F9ICLDN CHAR(10) NOT NULL DEFAULT '' , F9INRRO CHAR(20) NOT NULL DEFAULT '',
F9INMF2 CHAR(100) NOT NULL DEFAULT '' , F9IURGO DATE NOT NULL DEFAULT getdate(),
F9ICLDA CHAR(10) NOT NULL DEFAULT '' , F9ICLDF CHAR(10) NOT NULL DEFAULT '',
F9INMF3 CHAR(100) NOT NULL DEFAULT '' , F9INMF1 CHAR(100) NOT NULL DEFAULT '',
F9ICLD4 CHAR(10) NOT NULL DEFAULT '' , F9ICLDN CHAR(10) NOT NULL DEFAULT '',
F9INMF4 CHAR(100) NOT NULL DEFAULT '' , F9INMF2 CHAR(100) NOT NULL DEFAULT '',
F9ICLD5 CHAR(10) NOT NULL DEFAULT '' , F9ICLDA CHAR(10) NOT NULL DEFAULT '',
F9INMF5 CHAR(100) NOT NULL DEFAULT '' , F9INMF3 CHAR(100) NOT NULL DEFAULT '',
F9ICLD6 CHAR(10) NOT NULL DEFAULT '' , F9ICLD4 CHAR(10) NOT NULL DEFAULT '',
F9INMF6 CHAR(100) NOT NULL DEFAULT '' , F9INMF4 CHAR(100) NOT NULL DEFAULT '',
F9ICLD7 CHAR(10) NOT NULL DEFAULT '' , F9ICLD5 CHAR(10) NOT NULL DEFAULT '',
F9INMF7 CHAR(100) NOT NULL DEFAULT '' , F9INMF5 CHAR(100) NOT NULL DEFAULT '',
F9ICLD8 CHAR(10) NOT NULL DEFAULT '' , F9ICLD6 CHAR(10) NOT NULL DEFAULT '',
F9INMF8 CHAR(100) NOT NULL DEFAULT '' , F9INMF6 CHAR(100) NOT NULL DEFAULT '',
F9ICLD9 CHAR(10) NOT NULL DEFAULT '' , F9ICLD7 CHAR(10) NOT NULL DEFAULT '',
F9INMF9 CHAR(100) NOT NULL DEFAULT '' , F9INMF7 CHAR(100) NOT NULL DEFAULT '',
F9ICL10 CHAR(10) NOT NULL DEFAULT '' , F9ICLD8 CHAR(10) NOT NULL DEFAULT '',
F9INM10 CHAR(100) NOT NULL DEFAULT '' , F9INMF8 CHAR(100) NOT NULL DEFAULT '',
F9IUTEE CHAR(10) NOT NULL DEFAULT '' , F9ICLD9 CHAR(10) NOT NULL DEFAULT '',
F9IUHEL DATETIME NOT NULL DEFAULT getdate() , F9INMF9 CHAR(100) NOT NULL DEFAULT '',
F9IUHEW DATETIME NOT NULL DEFAULT getdate() , F9ICL10 CHAR(10) NOT NULL DEFAULT '',
F9IDDES CHAR(30) NOT NULL DEFAULT '' , F9INM10 CHAR(100) NOT NULL DEFAULT '',
F9ITPRT CHAR(2) NOT NULL DEFAULT '' , F9IUTEE CHAR(10) NOT NULL DEFAULT '',
F9IAPRT NUMERIC(4, 0) NOT NULL DEFAULT 0 , F9IUHEL DATETIME NOT NULL DEFAULT getdate(),
F9INPRT NUMERIC(10, 0) NOT NULL DEFAULT 0 , F9IUHEW DATETIME NOT NULL DEFAULT getdate(),
F9IURIC DATETIME NOT NULL DEFAULT getdate() , F9IDDES CHAR(30) NOT NULL DEFAULT '',
PRIMARY KEY( F9ICSOC , F9IIDLA , F9IFPDE , F9ISIVA , F9ICREG , F9INPRI , F9IUPRI , F9ITPGI ) ) ; F9ITPRT CHAR(2) NOT NULL DEFAULT '',
F9IAPRT NUMERIC(4, 0) NOT NULL DEFAULT 0,
CREATE TABLE F9PWA00K ( F9INPRT NUMERIC(10, 0) NOT NULL DEFAULT 0,
F9PCSOC CHAR(10) NOT NULL DEFAULT '' , F9IURIC DATETIME NOT NULL DEFAULT getdate(),
F9PCDFN CHAR(2) NOT NULL DEFAULT '' , PRIMARY KEY( F9ICSOC,F9IIDLA,F9IFPDE,F9ISIVA,F9ICREG,F9INPRI,F9IUPRI,F9ITPGI ))
F9PCDNT CHAR(2) NOT NULL DEFAULT '' , ELSE
F9PCDA1 CHAR(2) NOT NULL DEFAULT '' , SELECT 1 AS EXIST;
F9PCDA2 CHAR(2) NOT NULL DEFAULT '' ,
F9PCDA3 CHAR(2) NOT NULL DEFAULT '' , IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9PWA00K')
F9PCDA4 CHAR(2) NOT NULL DEFAULT '' , CREATE TABLE F9PWA00K (
F9PCDA5 CHAR(2) NOT NULL DEFAULT '' , F9PCSOC CHAR(10) NOT NULL DEFAULT '',
F9PCDA6 CHAR(2) NOT NULL DEFAULT '' , F9PCDFN CHAR(2) NOT NULL DEFAULT '',
F9PCDA7 CHAR(2) NOT NULL DEFAULT '' , F9PCDNT CHAR(2) NOT NULL DEFAULT '',
F9PCDA8 CHAR(2) NOT NULL DEFAULT '' , F9PCDA1 CHAR(2) NOT NULL DEFAULT '',
F9PPCDC CHAR(256) NOT NULL DEFAULT '' , F9PCDA2 CHAR(2) NOT NULL DEFAULT '',
PRIMARY KEY( F9PCSOC ) ) ; 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( 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,
DATAREG DATE NOT NULL, DATAREG DATE NOT NULL,
DATADOC DATE NOT NULL, DATADOC DATE NOT NULL,
CODCAUS VARCHAR(3) NOT NULL, CODCAUS VARCHAR(3) NOT NULL,
MESELIQ NUMERIC(2,0), MESELIQ NUMERIC(2,0),
NUMDOC VARCHAR(50) NOT NULL, NUMDOC VARCHAR(50) NOT NULL,
IMPTOTDOC NUMERIC(18,3) NOT NULL, IMPTOTDOC NUMERIC(18,3) NOT NULL,
FORN NUMERIC(6,0) NOT NULL, FORN NUMERIC(6,0) NOT NULL,
RAGSOC VARCHAR(50), RAGSOC VARCHAR(50),
PROTIVA VARCHAR(10) NOT NULL, PROTIVA VARCHAR(10) NOT NULL,
DESCR VARCHAR(50), DESCR VARCHAR(50),
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;