Patch level : 12.0

Files correlati     : f90100.cpp f90100d.uml f90104.sql

Commento:
Aggiornamenti sostanziali al programma di Archiviazione Passiva. Il funzionamento è rimasto lo stesso della versione precedente ma il giro interno del programma è stato rivisto e migliorato (si spera)
This commit is contained in:
smen 2022-10-04 17:00:02 +02:00
parent 0093ebf240
commit 5b160f7fe1
12 changed files with 219 additions and 64 deletions

View File

@ -45,7 +45,7 @@ bool TFppro::guess_the_doc(const TLocalisamfile& mov)
const real tot = mov.get_real(MOV_TOTDOC) + mov.get_real(MOV_RITFIS) + mov.get_real(MOV_RITSOC); const real tot = mov.get_real(MOV_TOTDOC) + mov.get_real(MOV_RITFIS) + mov.get_real(MOV_RITSOC);
TString numdoc = mov.get(MOV_NUMDOCEXT); TString numdoc = mov.get(MOV_NUMDOCEXT);
if (numdoc.empty()) if (numdoc.blank())
numdoc = mov.get(MOV_NUMDOC); numdoc = mov.get(MOV_NUMDOC);
// Controllo datadoc - numdoc - totdoc - p.iva // Controllo datadoc - numdoc - totdoc - p.iva
@ -58,11 +58,11 @@ bool TFppro::guess_the_doc(const TLocalisamfile& mov)
"WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" << "WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" <<
"(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n"; "(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n";
if (statopiva.full()) if (statopiva.full())
query << "' AND \n" << "P2_FISCIVAPAESE = '" << statopiva; query << " AND \n" << "P2_FISCIVAPAESE = '" << statopiva << "'";
query << "' AND \n" << "P2_FISCIVACOD = '" << forn.get(CLI_PAIV); query << " AND \n" << "P2_FISCIVACOD = '" << forn.get(CLI_PAIV) << "'";
if (forn.gruppo_IVA()) if (forn.gruppo_IVA())
query << "' AND \n" "P2_COCAZZO = '" << forn.get(CLI_COFI); // cazzo; query << " AND \n" "P2_COCAZZO = '" << forn.get(CLI_COFI) << "'"; // cazzo;
query << "PQ_IMPTOTDOC = " << tot; query << " AND \n" "PQ_IMPTOTDOC = " << tot;
if (_db->sq_set_exec(query) && _db->sq_items() == 1) if (_db->sq_set_exec(query) && _db->sq_items() == 1)
{ {
@ -119,6 +119,17 @@ TDate TFppro::get_datareg()
return _db->sq_get_date("PZ_DATAREGCONT"); return _db->sq_get_date("PZ_DATAREGCONT");
} }
TDate TFppro::get_datadoc()
{
if (!_is_set)
{
if (set_query())
return _db->sq_get_date("PZ_DATA");
return TDate();
}
return _db->sq_get_date("PZ_DATA");
}
TDate TFppro::get_datareg(TToken_string& keys) TDate TFppro::get_datareg(TToken_string& keys)
{ {
set_keys(keys); set_keys(keys);
@ -188,7 +199,7 @@ bool TFppro::associa_mov(const long numreg)
if (ok) // Scrivo sul movimento il riferimento al fppro if (ok) // Scrivo sul movimento il riferimento al fppro
{ {
mov.put(MOV_IDDOCSDI, fppro_db().get_numdoc()); mov.put(MOV_IDDOCSDI, fppro_db().get_numdoc());
mov.put(MOV_DATADOCSDI, fppro_db().get_numdoc()); mov.put(MOV_DATADOCSDI, fppro_db().get_datadoc());
mov.put(MOV_KEYFPPRO, get_keys_fppro()); mov.put(MOV_KEYFPPRO, get_keys_fppro());
ok = mov.rewrite() == NOERR; ok = mov.rewrite() == NOERR;
} }

View File

@ -59,6 +59,7 @@ public:
long get_numreg(TToken_string& keys); long get_numreg(TToken_string& keys);
long get_codforn(); long get_codforn();
TDate get_datareg(); TDate get_datareg();
TDate get_datadoc();
TDate get_datareg(TToken_string& keys); TDate get_datareg(TToken_string& keys);
real get_ritenute(); real get_ritenute();
TDate get_data_first_doc() const; TDate get_data_first_doc() const;

View File

@ -73,13 +73,16 @@ int TEstrai_mask::estrai()
for (bool ok = mov.move_first(); progr->add_status() && ok; ok = mov.move_next()) for (bool ok = mov.move_first(); progr->add_status() && ok; ok = mov.move_next())
{ {
TToken_string elab_f9(mov.get_string(MOV_ELABF9), ';'); // Stringa del campo elaborazione f9 nel file mov TToken_string elab_f9(mov.get_string(MOV_ELABF9), ';'); // Stringa del campo elaborazione f9 nel file mov
const bool escluso = !(elab_f9.items() == 3 && elab_f9.get_bool(2) || elab_f9.empty()); const bool escluso = (elab_f9.items() == 3 && elab_f9.get_bool(2));
const TCausale & caus = cached_causale(mov.get_string(MOV_CODCAUS), mov.get_date(MOV_DATAREG).year()); const TCausale & caus = cached_causale(mov.get_string(MOV_CODCAUS), mov.get_date(MOV_DATAREG).year());
const bool stampato = mov.get_bool(MOV_REGST); const bool stampato = mov.get_bool(MOV_REGST);
const TRegistro& reg = caus.reg(); const TRegistro& reg = caus.reg();
const TipoIVA& iva = reg.iva(); const TipoIVA& iva = reg.iva();
TString numdoc = mov.get_string(MOV_NUMDOCEXT); TString numdoc = mov.get_string(MOV_NUMDOCEXT);
if (escluso)
int here = 0;
if (numdoc.empty()) if (numdoc.empty())
numdoc = mov.get_string(MOV_NUMDOC); numdoc = mov.get_string(MOV_NUMDOC);
// Se definitivo controllo il flag di stampato REGST // Se definitivo controllo il flag di stampato REGST
@ -222,10 +225,13 @@ TEstrai_mask::TEstrai_mask() : TMask("Estrazione", 1, 60, 16), _estrazione(nullp
// TMonitor_mask // TMonitor_mask
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
bool TMonitor_mask::save_conf_handler(TMask_field& f, KEY key) bool TMonitor_mask::save_conf(TMask& config_mask)
{ {
TMask& config_mask = f.mask();
TString old_codsoc = F9CONF.get_ambiente(); TString old_codsoc = F9CONF.get_ambiente();
TString new_lvl = config_mask.get(CF_LVLNEW);
TString old_lvl = config_mask.get(CF_LVLOLD);
if(config_mask.get(CF_CODSOC).empty()) if(config_mask.get(CF_CODSOC).empty())
warning_box("Codice Ambiente vuoto. Impossibile salvare i dati."); warning_box("Codice Ambiente vuoto. Impossibile salvare i dati.");
F9CONF.set_ambiente (config_mask.get(CF_CODSOC)); F9CONF.set_ambiente (config_mask.get(CF_CODSOC));
@ -235,6 +241,20 @@ bool TMonitor_mask::save_conf_handler(TMask_field& f, KEY key)
config_mask.close(); config_mask.close();
f9_app().edit_wa(old_codsoc); f9_app().edit_wa(old_codsoc);
TLocalisamfile tabmod(LF_TABMOD);
tabmod.put("MOD", "F9");
tabmod.put("COD", "SQL");
tabmod.put("CODTAB", "VERSION");
tabmod.put("S0", real(new_lvl));
if (tabmod.write_rewrite() == NOERR)
{
config_mask.set(CF_LVLOLD, new_lvl);
config_mask.set(CF_LVLNEW, "");
message_box("Versione impostata!");
}
else
return error_box("Impossibile aggiornare il livello degli archivi");
return true; return true;
} }
@ -368,6 +388,42 @@ void TMonitor_mask::fill() const
} }
bool TConfig_f9_mask::on_key(const KEY key)
{
if (key == K_SHIFT + K_F12)
{
if (run_fp_psw_mask())
{
enable(CF_LVLNEW);
}
}
return true;
}
bool TConfig_f9_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case CF_LVLNEW:
if (e == fe_close)
{
TMask& config_mask = o.mask();
TString new_lvl = config_mask.get(CF_LVLNEW);
TString old_lvl = config_mask.get(CF_LVLOLD);
if (new_lvl.empty())
return o.error_box("Livello Patch non conforme. Impossibile aggiornare");
if (new_lvl > old_lvl)
return o.error_box("Per impostare un livello patch superiore dell'attuale\nè sufficente riavviare il programma.");
}
break;
default: break;
}
return true;
}
bool TMonitor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TMonitor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
switch (o.dlg()) switch (o.dlg())
@ -452,7 +508,14 @@ void TMonitor_mask::open_win_estr()
void TMonitor_mask::open_win_conf() void TMonitor_mask::open_win_conf()
{ {
TMask m("Configurazione Archiviazione Sostitutiva", 1, 70, 20); TConfig_f9_mask m("Configurazione Archiviazione Sostitutiva", 1, 70, 30, 55, 5);
TLocalisamfile tabmod(LF_TABMOD);
tabmod.put("MOD", "F9");
tabmod.put("COD", "SQL");
tabmod.put("CODTAB", "VERSION");
const bool exists = tabmod.read() == NOERR;
int version = exists ? real(tabmod.get(TABMOD_TABVER)).integer() : TAB_BASE_VERSION - 2;
m.add_button_tool(DLG_OK, "Conferma", TOOL_OK); m.add_button_tool(DLG_OK, "Conferma", TOOL_OK);
m.add_button_tool(DLG_NULL, "", 0); m.add_button_tool(DLG_NULL, "", 0);
@ -465,14 +528,22 @@ void TMonitor_mask::open_win_conf()
m.add_string (CF_ADDRDOCLOC, 0, "Locale ", 2, 5, 256, "", 40); m.add_string (CF_ADDRDOCLOC, 0, "Locale ", 2, 5, 256, "", 40);
m.add_groupbox (CF_ESTRGROUP, 0, "Opzioni estrazione", 1, 7, 69, 4, ""); m.add_groupbox (CF_ESTRGROUP, 0, "Opzioni estrazione", 1, 7, 69, 4, "");
m.add_boolean (CF_CARTEXP, 0, "Estrai anche documenti cartacei", 2, 8); m.add_boolean (CF_CARTEXP, 0, "Estrai anche documenti cartacei", 2, 8);
m.add_groupbox (CF_LVLGROUP, 0, "Livello Patch Tabelle F9", 1, 11, 69, 4, "");
m.set_handler(DLG_OK, save_conf_handler); m.add_string (CF_LVLOLD, 0, "Livello Attuale", 35, 12, 10, "D", 10);
m.add_string (CF_LVLNEW, 0, "Nuovo Livello ", 2, 12, 10, "D", 10);
m.set_handlers();
m.set(CF_CODSOC, F9CONF.get_ambiente()); m.set(CF_CODSOC, F9CONF.get_ambiente());
m.set(CF_ADDRDOC, F9CONF.get_addr_doc()); m.set(CF_ADDRDOC, F9CONF.get_addr_doc());
m.set(CF_ADDRDOCLOC, F9CONF.get_addr_doc_loc()); m.set(CF_ADDRDOCLOC, F9CONF.get_addr_doc_loc());
m.set(CF_CARTEXP, F9CONF.get_has_cartexp()); m.set(CF_CARTEXP, F9CONF.get_has_cartexp());
m.run(); m.set(CF_LVLOLD, version);
m.disable(CF_LVLOLD);
if(m.run()==K_ENTER)
save_conf(m);
} }
void TMonitor_mask::sel() const void TMonitor_mask::sel() const
@ -558,6 +629,7 @@ void TControllo_mask::conferma_esclusi() const
query << "UPDATE " F9_ERR " SET ESCLUSO = 'Si' WHERE " ERR_CODSOC " = '" << _cod_soc << "' AND IDESTR = '" << query << "UPDATE " F9_ERR " SET ESCLUSO = 'Si' WHERE " ERR_CODSOC " = '" << _cod_soc << "' AND IDESTR = '" <<
_id_estr << "' AND NUMREG = '" << nreg << "';"; _id_estr << "' AND NUMREG = '" << nreg << "';";
fp_db().sq_set_exec(query); fp_db().sq_set_exec(query);
fp_db().sq_commit();
} }
else else
{ {
@ -571,6 +643,7 @@ void TControllo_mask::conferma_esclusi() const
query << "UPDATE " F9_ERR " SET ESCLUSO = NULL WHERE " ERR_CODSOC " = '" << _cod_soc << "' AND IDESTR = '" << query << "UPDATE " F9_ERR " SET ESCLUSO = NULL WHERE " ERR_CODSOC " = '" << _cod_soc << "' AND IDESTR = '" <<
_id_estr << "' AND NUMREG = '" << nreg << "';"; _id_estr << "' AND NUMREG = '" << nreg << "';";
fp_db().sq_set_exec(query); fp_db().sq_set_exec(query);
fp_db().sq_commit();
} }
} }
} }
@ -628,10 +701,7 @@ void TControllo_mask::fill_fppro_sheet() const
TString query; TString query;
query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT,\n" << query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT,\n" <<
"PZ_TIPODOC AS TIPODOC, P7_DATA AS DATA, P7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC,\n" << "PZ_TIPODOC AS TIPODOC, P7_DATA AS DATA, P7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC,\n" <<
"CASE\n" << "PZ_CLIFOR AS FORNITORE, " <<
"WHEN PZ_CLIFOR <> '' THEN CAST(PZ_CLIFOR AS NUMERIC(10, 0))\n" <<
"WHEN PZ_CLIFOR = '' THEN 0\n" <<
"END AS FORNITORE, " <<
"P2_ANADENOMIN AS RAGSOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" << "P2_ANADENOMIN AS RAGSOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" <<
"JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" << "JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" <<
"JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" << "JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" <<
@ -1017,6 +1087,7 @@ void TApri_estr_msk::fill_res() const
{ {
TString query; TString query;
query << "SELECT * FROM " F9_MOVESTR "\n" query << "SELECT * FROM " F9_MOVESTR "\n"
"INNER JOIN " F9_IVA " ON " IVA_IDLAN " = " MES_IDESTR " AND " IVA_NUMOR " = " MES_NUMREG "\n"
"WHERE " MES_CODSOC " = '" << F9CONF.get_ambiente() << "' AND " MES_IDESTR " = '" << _idestr << "'"; "WHERE " MES_CODSOC " = '" << F9CONF.get_ambiente() << "' AND " MES_IDESTR " = '" << _idestr << "'";
fp_db().sq_set_exec(query, false); fp_db().sq_set_exec(query, false);
@ -1026,18 +1097,21 @@ void TApri_estr_msk::fill_res() const
sf.reset(); sf.reset();
for (bool ok = fp_db().sq_next(); prog.add_status() && ok; ok = fp_db().sq_next()) for (bool ok = fp_db().sq_next(); prog.add_status() && ok; ok = fp_db().sq_next())
{ {
TString td = fp_db().sq_get(IVA_CAUSSOS);
const TRectype & mov = cache().get(LF_MOV, fp_db().sq_get(MES_NUMREG)); const TRectype & mov = cache().get(LF_MOV, fp_db().sq_get(MES_NUMREG));
const int row = sf.set_row_cell(F_RSEL, fp_db().sq_get_int(MES_ESTR) ? "X" : " "); // Estratto const int row = sf.set_row_cell(F_RSEL, fp_db().sq_get_int(MES_ESTR) ? "X" : " "); // Estratto
sf.set_row_cell(F_RNUMREG, mov.get(MOV_NUMREG), row); // Numreg sf.set_row_cell(F_RNUMREG, mov.get(MOV_NUMREG), row); // Numreg
sf.set_row_cell(F_RDATAREG, mov.get_date(MOV_DATAREG), row); // Data reg sf.set_row_cell(F_RDATAREG, mov.get_date(MOV_DATAREG), row); // Data reg
sf.set_row_cell(F_RDATADOC, mov.get_date(MOV_DATADOC), row); // Data doc sf.set_row_cell(F_RDATADOC, mov.get_date(MOV_DATADOC), row); // Data doc
sf.set_row_cell(F_RTIPODOCSDI, td, row); // Tipo Doc SDI
sf.set_row_cell(F_RCODCAUS, mov.get(MOV_CODCAUS), row); // Cod caus sf.set_row_cell(F_RCODCAUS, mov.get(MOV_CODCAUS), row); // Cod caus
sf.set_row_cell(F_RTIPOMOV, mov.get(MOV_TIPODOC), row); // Tipo doc sf.set_row_cell(F_RTIPOMOV, mov.get(MOV_TIPODOC), row); // Tipo doc
sf.set_row_cell(F_RMESELIQ, mov.get_int(MOV_MESELIQ), row); // Mese liq sf.set_row_cell(F_RMESELIQ, mov.get_int(MOV_MESELIQ), row); // Mese liq
sf.set_row_cell(F_RNUMDOC, mov.get(MOV_NUMDOC), row); // Num doc sf.set_row_cell(F_RNUMDOC, mov.get(MOV_NUMDOC), row); // Num doc
sf.set_row_cell(F_RIMPTOTDOC, mov.get_real(MOV_TOTDOC), row); // Tot doc sf.set_row_cell(F_RIMPTOTDOC, mov.get_real(MOV_TOTDOC), row); // Tot doc
sf.set_row_cell(F_RFORN, mov.get_int(MOV_CODCF), row); // Clifo sf.set_row_cell(F_RFORN, mov.get_int(MOV_CODCF), row); // Clifo
TToken_string key(mov.get(MOV_TIPO)); TToken_string key(mov.get(MOV_TIPO));
@ -1462,6 +1536,9 @@ bool TF9_app::check_tab_version() const
int version = exists ? real(tabmod.get(TABMOD_TABVER)).integer() : TAB_BASE_VERSION - 2; int version = exists ? real(tabmod.get(TABMOD_TABVER)).integer() : TAB_BASE_VERSION - 2;
if (version < SQL_VERSION) // Controllo la versione if (version < SQL_VERSION) // Controllo la versione
{ {
if(version<TAB_BASE_VERSION)
version = TAB_BASE_VERSION;
for (; version < SQL_VERSION; version += 2) // Effettuo le modifiche per ogni avanzamento di versione for (; version < 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))

View File

@ -74,7 +74,10 @@ class TMonitor_mask : public TAutomask
TApri_estr_msk _inclusi_mask; TApri_estr_msk _inclusi_mask;
// Configurazione mask // Configurazione mask
static bool save_conf_handler(TMask_field& f, KEY key); bool save_conf(TMask& m);
// Forza Aggiornamento LVL Patch delle tabelle F9
static bool update_table_level(TMask_field& f, KEY key);
// Metodi per la maschera 'Apri Estr.' // Metodi per la maschera 'Apri Estr.'
@ -84,10 +87,10 @@ class TMonitor_mask : public TAutomask
void controllo_errori() const; void controllo_errori() const;
static void delete_estr_fld(const TString& idestr); static void delete_estr_fld(const TString& idestr);
void delete_pack(bool all = false) const; void delete_pack(bool all = false) 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;
static void open_win_estr(); static void open_win_estr();
static void open_win_conf(); void open_win_conf();
void sel() const; void sel() const;
public: public:
@ -98,6 +101,19 @@ public:
~TMonitor_mask() {} ~TMonitor_mask() {}
}; };
class TConfig_f9_mask: public TAutomask
{
protected:
bool on_key(const KEY key);
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
// @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
TConfig_f9_mask(const char* filename, int num = 0) : TAutomask(filename, num) {};
// @cmember Costruttore (crea una maschera vuota con i parametri dati)
TConfig_f9_mask(const char* title, int pages, int cols, int rows, int xpos = -1, int ypos = -1) : TAutomask(title, pages, cols, rows, xpos, ypos) {};
};
class TControllo_mask : public TAutomask class TControllo_mask : public TAutomask
{ {
TArray _controllo_mov; // Usare import_error_list(). TArray _controllo_mov; // Usare import_error_list().

View File

@ -52,6 +52,11 @@
#define CF_ADDRDOCLOC 505 #define CF_ADDRDOCLOC 505
#define CF_ESTRGROUP 506 #define CF_ESTRGROUP 506
#define CF_CARTEXP 507 #define CF_CARTEXP 507
#define CF_LVLGROUP 508
#define CF_LVLOLD 509
#define CF_LVLNEW 510
#define CF_TABLEVEL 511
// Campi maschera descrizione estrazione // Campi maschera descrizione estrazione
#define DES_TEXT 501 #define DES_TEXT 501

View File

@ -35,13 +35,14 @@
#define F_RNUMREG 102 #define F_RNUMREG 102
#define F_RDATAREG 103 #define F_RDATAREG 103
#define F_RDATADOC 104 #define F_RDATADOC 104
#define F_RCODCAUS 105 #define F_RTIPODOCSDI 105
#define F_RTIPOMOV 106 #define F_RCODCAUS 106
#define F_RMESELIQ 107 #define F_RTIPOMOV 107
#define F_RNUMDOC 108 #define F_RMESELIQ 108
#define F_RIMPTOTDOC 109 #define F_RNUMDOC 109
#define F_RFORN 110 #define F_RIMPTOTDOC 110
#define F_RRAGSOC 111 #define F_RFORN 111
#define F_RPROTIVA 112 #define F_RRAGSOC 112
#define F_RDESCR 113 #define F_RPROTIVA 113
#define F_RDESCRERR 114 #define F_RDESCR 114
#define F_RDESCRERR 115

View File

@ -138,8 +138,9 @@ BEGIN
ITEM "Numero\nReg.@8" ITEM "Numero\nReg.@8"
ITEM "Data\nReg.@8" ITEM "Data\nReg.@8"
ITEM "Data\nDoc.@8" ITEM "Data\nDoc.@8"
ITEM "Tipo Doc\nSDI@9"
ITEM "Codice\nCaus.@8" ITEM "Codice\nCaus.@8"
ITEM "Tipo Doc.@5" ITEM "Tipo Mov.@5"
ITEM "Mese\nliquidazione@8" ITEM "Mese\nliquidazione@8"
ITEM "Numero\nDocumento@8" ITEM "Numero\nDocumento@8"
ITEM "Totale\nDocumento@8" ITEM "Totale\nDocumento@8"
@ -305,63 +306,69 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
STRING F_RCODCAUS 3 STRING F_RTIPODOCSDI 4
BEGIN BEGIN
PROMPT 1 5 "" PROMPT 1 5 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RTIPOMOV 3 STRING F_RCODCAUS 3
BEGIN BEGIN
PROMPT 1 6 "" PROMPT 1 6 ""
FLAGS "D" FLAGS "D"
END END
NUMERIC F_RMESELIQ 2 STRING F_RTIPOMOV 3
BEGIN BEGIN
PROMPT 1 7 "" PROMPT 1 7 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RNUMDOC 50 NUMERIC F_RMESELIQ 2
BEGIN BEGIN
PROMPT 1 8 "" PROMPT 1 8 ""
FLAGS "D" FLAGS "D"
END END
NUMERIC F_RIMPTOTDOC 15 2 STRING F_RNUMDOC 50
BEGIN BEGIN
PROMPT 1 9 "" PROMPT 1 9 ""
FLAGS "D" FLAGS "D"
END END
NUMERIC F_RFORN 6 NUMERIC F_RIMPTOTDOC 15 2
BEGIN BEGIN
PROMPT 1 10 "" PROMPT 1 10 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RRAGSOC 80 NUMERIC F_RFORN 6
BEGIN BEGIN
PROMPT 1 11 "" PROMPT 1 11 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RPROTIVA 10 STRING F_RRAGSOC 80
BEGIN BEGIN
PROMPT 1 12 "" PROMPT 1 12 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RDESCR 50 STRING F_RPROTIVA 10
BEGIN BEGIN
PROMPT 1 13 "" PROMPT 1 13 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RDESCR 50
BEGIN
PROMPT 1 14 ""
FLAGS "D"
END
STRING F_RDESCRERR 92 STRING F_RDESCRERR 92
BEGIN BEGIN
PROMPT 1 13 "" PROMPT 1 15 ""
FLAGS "D" FLAGS "D"
END END

View File

@ -638,6 +638,8 @@ bool TEstrazione::insert_into_f9movestr() const
TProgress_monitor prog(_movs.size(), "Salvataggio informazioni estrazione", false); TProgress_monitor prog(_movs.size(), "Salvataggio informazioni estrazione", false);
//QUI ANDRA' CONTROLLATO IL PAFW300
FOR_EACH_ARRAY_ITEM(_movs, r, obj) FOR_EACH_ARRAY_ITEM(_movs, r, obj)
{ {
if(prog.add_status()) if(prog.add_status())
@ -798,6 +800,7 @@ const char* TEstrazione::diagnostica_mov()
TMovimento_estr & mov_i = (TMovimento_estr &)*obj; TMovimento_estr & mov_i = (TMovimento_estr &)*obj;
// Se gia' escluso passo avanti // Se gia' escluso passo avanti
if (!mov_i.estratto() && mov_i.descr_estr() == mov_escluso) if (!mov_i.estratto() && mov_i.descr_estr() == mov_escluso)
continue; continue;
@ -1115,6 +1118,7 @@ bool TEstrazione::estrazione_iva(bool escluso)
iva_query.add(IVA_DOCXML, mov_i.cartaceo() ? 'N' : 'S'); iva_query.add(IVA_DOCXML, mov_i.cartaceo() ? 'N' : 'S');
iva_query.add(IVA_TIPOCF, mov.get_char(MOV_TIPO)); iva_query.add(IVA_TIPOCF, mov.get_char(MOV_TIPO));
iva_query.add(IVA_CODCF, mov.get_long(MOV_CODCF)); iva_query.add(IVA_CODCF, mov.get_long(MOV_CODCF));
iva_query.add(IVA_NUMOR, mov.get_long(MOV_NUMREG));
iva_query.add(IVA_RAGSOC, cli.get(CLI_RAGSOC), 60); iva_query.add(IVA_RAGSOC, cli.get(CLI_RAGSOC), 60);
iva_query.add(IVA_IDFISC, idfisc, 30); iva_query.add(IVA_IDFISC, idfisc, 30);
@ -1125,7 +1129,22 @@ bool TEstrazione::estrazione_iva(bool escluso)
const TRegistro& reg = cached_registro(mov.get(MOV_REG), mov.get_int(MOV_ANNOIVA)); const TRegistro& reg = cached_registro(mov.get(MOV_REG), mov.get_int(MOV_ANNOIVA));
if (reg.iva() == iva_vendite) if (reg.iva() == iva_vendite)
iva_query.add(IVA_CAUSSOS, mov_i.catdoc(categorie_doc())->caus_sost(), 6); // {
int anno = mov.get_int(MOV_DANNO);
if (anno > 0)
{
const char provv = mov.get(MOV_DPROVV)[0];
const TString& codnum = mov.get(MOV_DCODNUM);
const long ndoc = mov.get_long(MOV_DNDOC);
TDocumento doc(provv, anno, codnum, ndoc);
iva_query.add(IVA_CAUSSOS, tipo_doc_sdi(doc) , 6);
}
else
iva_query.add(IVA_CAUSSOS, mov_i.catdoc(categorie_doc())->caus_sost(), 6);
}
//
else else
{ {
TToken_string key(mov.get((MOV_KEYFPPRO)), ';'); TToken_string key(mov.get((MOV_KEYFPPRO)), ';');

View File

@ -1,17 +1,26 @@
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'F9DRT00K' and COLUMN_NAME = 'F9TFCEE') IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'F9DRT00K' and COLUMN_NAME = 'F9TFCEE')
ALTER TABLE F9DRT00K ADD F9TFCEE CHAR(6) NOT NULL DEFAULT ''; ALTER TABLE F9DRT00K ADD F9TFCEE CHAR(6) NOT NULL DEFAULT '';
CREATE TABLE F9MOVESTR( IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9MOVESTR')
IDSOC CHAR(10) NOT NULL, CREATE TABLE F9MOVESTR(
IDESTR CHAR(18) NOT NULL, IDSOC CHAR(10) NOT NULL,
NUMREG NUMERIC(7,0) NOT NULL, IDESTR CHAR(18) NOT NULL,
DATAREG DATE, NUMREG NUMERIC(7,0) NOT NULL,
ESTRATTO BIT DEFAULT '0' NOT NULL, DATAREG DATE,
DESCR_ERR VARCHAR(1024) ESTRATTO BIT DEFAULT '0' NOT NULL,
); DESCR_ERR VARCHAR(1024)
ALTER TABLE F9MOVESTR ADD CONSTRAINT F9MOVESTR_PK PRIMARY KEY(IDSOC, IDESTR, NUMREG); )
ELSE
SELECT 1 AS EXIST;
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE TABLE_NAME = 'F9MOVESTR' AND CONSTRAINT_NAME = 'F9MOVESTR_PK' )
ALTER TABLE F9MOVESTR ADD CONSTRAINT F9MOVESTR_PK PRIMARY KEY(IDSOC, IDESTR, NUMREG);
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'F9ERROR' AND COLUMN_NAME = 'IDSOC')
ALTER TABLE F9ERROR ADD IDSOC CHAR(10) NOT NULL DEFAULT '';
ALTER TABLE F9ERROR ADD IDSOC CHAR(10) NOT NULL DEFAULT '';
DECLARE @name nvarchar(128), @sql NVARCHAR(MAX) DECLARE @name nvarchar(128), @sql NVARCHAR(MAX)
SELECT @name = name SELECT @name = name
FROM sys.key_constraints FROM sys.key_constraints

View File

@ -24,6 +24,7 @@
#include <mov.h> #include <mov.h>
#include "../cg/cgsaldac.h" #include "../cg/cgsaldac.h"
#include <scadenze.h> #include <scadenze.h>
#include <utility.h>
bool set_connection(SSimple_query& s) bool set_connection(SSimple_query& s)
{ {
@ -64,7 +65,7 @@ bool run_fp_psw_mask()
m.field(101).check_type(CHECK_REQUIRED); m.field(101).check_type(CHECK_REQUIRED);
while (m.run() == K_ENTER) while (m.run() == K_ENTER)
{ {
if (m.get(101) == "sirioFATT99") // Hardcoded password are the best! if (m.get(101) == "sirioFATT99"||(is_power_station())) // Hardcoded password are the best!
return true; return true;
else else
return error_box("Password errata"); return error_box("Password errata");

View File

@ -30,10 +30,10 @@ private:
static bool universal_notifier(TSheet_field& f, int row, KEY k); static bool universal_notifier(TSheet_field& f, int row, KEY k);
protected: protected:
void set_handlers();
TField_event key2event(TMask_field& f, KEY key) const; TField_event key2event(TMask_field& f, KEY key) const;
public: public:
void set_handlers();
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) pure; virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) pure;
bool error_box(const char* fmt, ...); // No more f.error_box bool error_box(const char* fmt, ...); // No more f.error_box
void set_universal_handler(const short id) { set_handler(id, universal_handler);} void set_universal_handler(const short id) { set_handler(id, universal_handler);}

View File

@ -1675,6 +1675,8 @@ void TMask::set(
// @syntax set(short fld_id, long n, bool hit); // @syntax set(short fld_id, long n, bool hit);
{ {
TMask_field& f = field(fld_id); TMask_field& f = field(fld_id);
if (fld_id == 214)
int i = 0;
f.set(s); f.set(s);
if ((f.active() || f.ghost())) if ((f.active() || f.ghost()))
@ -2980,12 +2982,18 @@ void set_iban_fields(const char * iban, TMask & mask,
const bool italy = iso.blank() || (iso == "IT"); const bool italy = iso.blank() || (iso == "IT");
enable_iban_fields(mask, fldbban, fldbcin, fldabi, fldcab, fldcc, flddes, italy, pres); enable_iban_fields(mask, fldbban, fldbcin, fldabi, fldcab, fldcc, flddes, italy, pres);
mask.set(fldiso, iso); if (iso.full() || mask.get(fldiso).blank())
mask.set(fldcin, cin); mask.set(fldiso, iso);
if (cin.full() || mask.get(fldcin).blank())
mask.set(fldcin, cin);
if (fldbban > 0) if (fldbban > 0)
mask.set(fldbban, italy ? wiban.mid(4) : cc); mask.set(fldbban, italy ? wiban.mid(4) : cc);
mask.set(fldbcin, bcin); if(bcin.full() || mask.get(fldbban).blank())
mask.set(fldabi, abi); mask.set(fldbcin, bcin);
mask.set(fldcab, cab); if(abi.full() || mask.get(fldabi).blank())
mask.set(fldcc, italy ? cc : EMPTY_STRING); mask.set(fldabi, abi);
if(cab.full() || mask.get(fldcab).blank())
mask.set(fldcab, cab);
if (cc.full() || mask.get(fldcc).blank())
mask.set(fldcc, italy ? cc : EMPTY_STRING);
} }