Patch level :

Files correlati     : ba1, ba7
Ricompilazione Demo : [ ]
Commento            :
Aggiunto supporto per blocco aggiornamenti delle chiavi non riconosciute o bloccate in attesa di riconoscimento


git-svn-id: svn://10.65.10.50/branches/R_10_00@22405 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-09-09 11:10:24 +00:00
parent 9bf638209b
commit d5967babb3
9 changed files with 217 additions and 70 deletions

View File

@ -140,7 +140,7 @@ static int is_active_firm(long codditta)
return 0;
}
static TXmlItem& set_attr(TXmlItem& root, const char* name, const char* value)
static TXmlItem& set_attr(TXmlItem& root, const char* name, const char* value)
{
TXmlItem& c = find_or_create_child(root, "attr");
c.SetAttr("Name", name);
@ -195,6 +195,7 @@ bool save_campo_xml()
const TDongle& d = dongle();
TXmlItem& chiavetta = find_or_create_child(root, "dongle", true);
chiavetta.SetAttr("OEM", get_oem_info("OEM"));
chiavetta.SetAttr("Number", d.number());
chiavetta.SetAttr("Users", d.max_users());
chiavetta.SetAttr("Year", d.year_assist());

View File

@ -357,23 +357,29 @@ void TAttivazione_moduli::garble_year(word y, TString& str1, TString& str2) cons
void TAttivazione_moduli::build_key_column()
{
TWait_cursor hourglass;
TSheet_field& sf = _msk->sfield(F_MODULI);
sf.enable_column(F_KEY, false);
const TDongle& d = dongle();
TString8 tmp1, tmp2;
FOR_EACH_SHEET_ROW_BACK(sf, i, riga)
{
if (!sf.cell_disabled(i, 1))
{
int module = riga->get_int(2);
const int module = riga->get_int(2);
garble_module(module, tmp1, tmp2);
riga->add(tmp1, 3);
#ifdef DBG
if (d.type() == _developer_dongle)
riga->add(tmp2, 3); else // Backdoor di debug: mostra chiave web
#endif
riga->add(tmp1, 3); // Normalmente mostra chiave hardware
}
}
sf.force_update();
_msk->set(F_USERS, ::dongle().max_users());
_msk->set(F_ASSIST, ::dongle().year_assist());
_msk->set(F_USERS, d.max_users());
_msk->set(F_ASSIST, d.year_assist());
}
bool TAttivazione_moduli::burn_dongle()
@ -979,7 +985,11 @@ bool TAttivazione_moduli::create()
_msk->set_handler(F_CHANGEUSERS, change_users_handler);
_msk->set_handler(F_CHANGEASSIST, change_assist_handler);
_msk->set_handler(DLG_PRINT, print_handler);
const TDongleType mydongle = ::dongle().type();
TDongleType mydongle = ::dongle().type();
#ifdef DBG
if (mydongle == _developer_dongle && is_power_reseller(true))
mydongle = _aga_dongle;
#endif
if (mydongle == _aga_dongle)
{

View File

@ -168,7 +168,7 @@ int TInstall_ini::build_app_list(const TString& module, TString_array& a)
TAssoc_array& varlist = list_variables(paragraph);
FOR_EACH_ASSOC_STRING(varlist, obj, key, str)
{
int num;
int num = 0;
if (sscanf(key, "Edit_%d", &num) == 1)
{
row = "Edit";
@ -1895,7 +1895,7 @@ long TFascicolator_mask::find_signature(const TFilename& filename, const char* s
{
if (compare == 0)
{
position = infile.tellg();
position = (long)infile.tellg();
position--;
}
compare++;

View File

@ -11,6 +11,7 @@
#include <utility.h>
#include "ba1.h"
#include "ba1103.h"
#include "ba1500.h"
#include "ba1600.h"
#include "ba1700a.h"
@ -145,6 +146,7 @@ protected:
void parse_internet_path(TString& http_server, TFilename& http_path) const;
bool is_program_dir(const TFilename& path);
bool is_visible_patch(TConfig& ini) const;
bool check_customer() const;
public:
bool installed() const { return _installed;}
@ -326,6 +328,8 @@ int TInstaller_mask::precheck_modules(bool only_newer)
bool check_enabled = true;
_setup_run = false; //inizializzazione del flag di controllo di lancio di setup.exe
const bool good_customer = check_customer();
TString_array& a = rows_array();
FOR_EACH_ARRAY_ROW(a, r, row)
{
@ -351,11 +355,14 @@ int TInstaller_mask::precheck_modules(bool only_newer)
disable_row(r);
}
if (chk && !good_customer && cod_module != "sy")
chk = false;
if (check_enabled)
check(r, chk);
if (chk && only_newer && (cod_module == "sy" || cod_module == "sr")) //se viene checkato il modulo sy (sistema) e/o sr (servers)deve togliere..
{ //..la possibilita' di installare altri moduli..
if (chk && only_newer && (cod_module == "sy" || cod_module == "sr")) // se viene checkato il modulo sy (sistema) e/o sr (servers)
{ // deve togliere la possibilita' di installare altri moduli.
for (int i = 0; i < a.items(); i++)
{
if (i != r)
@ -369,6 +376,26 @@ int TInstaller_mask::precheck_modules(bool only_newer)
} //if(modnumber>=0...
} //FOR_EACH_ARRAY_ROW...
force_update(); // Indispensabile per vedere le righe aggiornate sullo sheet
enable(F_INSTALL, good_customer);
if (!good_customer)
{
send_campo_xml();
TString html;
html << "<html><body>"
<< "<h5>Attenzione: chiave " << dongle().number() << " non riconosciuta.</h5>\n"
<< "<p align=justify>Al fine di poter riattivare la chiave <b>" << dongle().product().before(" ")
<< "</b> in oggetto e poter quindi effettuare il download di eventuali aggiornamenti software, "
<< "La preghiamo di contattare Sirio informatica e sistemi ai seguenti riferimenti:</p><br/>"
<< "<ul><li>Sara Coppini, segreteria commerciale: "
<< "<a href=mailto:scoppini@sirio-is.it>scoppini@sirio-is.it</a> Tel. 348-9897249</li>"
<< "<li>Morena Martini, responsabile commerciale canale: "
<< "<a href=mailto:mmartini@sirio-is.it>mmartini@sirio-is.it</a> Tel. 349-3421433</li></ul>"
<< "</body></html>";
error_box(html);
}
return items();
}
@ -414,6 +441,19 @@ void TInstaller_mask::update_version()
force_update();
}
bool TInstaller_mask::check_customer() const
{
Tdninst dninst;
bool good = dninst.find_serno();
if (good)
{
TString msg;
good = dninst.test_cmdline("MustCall", false, msg) == 0;
}
return good;
}
// Cerca nel percorso specificato sulla maschera tutti i possibili files .ini
// utilizzabili per un'installazione e li inserisce nello spreadsheet
bool TInstaller_mask::autoload()

View File

@ -481,7 +481,8 @@ class TMailer_mask : public TAutomask
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
virtual long handler(WINDOW win, EVENT* ep);
void log(const char* text);
protected:
bool file2app(const TString& file, TString& app) const;
void expand_tabs(TMail_message& str, const int tab = 8) const;
@ -504,6 +505,7 @@ public:
void fill_messages();
bool save_sheet_line(int& err, int line = -1);
void save_all_lines();
void exec_scripts();
void auto_save_all();
void save() const;
@ -727,11 +729,14 @@ void TMailer_mask::fill_messages()
else
{
mailer = "POP3";
xvtil_statbar_set(TR("Ricezione messaggi POP3..."));
do_events();
mailbox.logon(server, user, password);
mailbox.get(_box);
mailbox.logoff();
if (server.full())
{
xvtil_statbar_set(TR("Ricezione messaggi POP3..."));
do_events();
mailbox.logon(server, user, password);
mailbox.get(_box);
mailbox.logoff();
}
}
TSheet_field& sf = sfield(F_MESSAGES);
@ -1217,23 +1222,38 @@ void TMailer_mask::find_redundant_messages()
}
}
void TMailer_mask::log(const char* text)
{
TBrowsefile_field& bf = (TBrowsefile_field&)field(F_LOG);
TViswin& vv = bf.vis_win();
if (text && *text)
{
time_t tempo; time(&tempo);
const struct tm* d = localtime(&tempo);
TString256 msg;
msg.format("- %02d-%02d-%04d %02d:%02d:%02d %s",
d->tm_mday, d->tm_mon+1, 1900+d->tm_year,
d->tm_hour, d->tm_min, d->tm_sec,
text);
vv.add_line(msg);
}
else
{
vv.add_line("");
vv.goto_end();
}
}
void TMailer_mask::save_all_lines()
{
if (_mail_semaphore != 0)
return;
_mail_semaphore = 1;
TBrowsefile_field& bf = (TBrowsefile_field&)field(F_LOG);
TViswin& vv = bf.vis_win();
TString msg;
time_t tempo; time(&tempo);
const struct tm* d = localtime(&tempo);
msg.format(FR("- Inizio elaborazione: %02d-%02d-%04d %02d:%02d:%02d"),
d->tm_mday, d->tm_mon+1, 1900+d->tm_year,
d->tm_hour, d->tm_min, d->tm_sec);
vv.add_line(msg);
log(TR("Inizio elaborazione"));
find_redundant_messages();
@ -1281,22 +1301,17 @@ void TMailer_mask::save_all_lines()
else
msg << "ignorato in quanto transazione non riconosciuta";
}
vv.add_line(msg);
log(msg);
}
time(&tempo);
d = localtime(&tempo);
msg.format("- Fine elaborazione: %02d-%02d-%04d %02d:%02d:%02d",
d->tm_mday, d->tm_mon+1, 1900+d->tm_year,
d->tm_hour, d->tm_min, d->tm_sec);
vv.add_line(msg);
vv.add_line("");
vv.goto_end();
log(TR("Fine elaborazione"));
log("");
sf.force_update(); // Fai apparire tutte le X
enable(DLG_DELREC);
TBrowsefile_field& bf = (TBrowsefile_field&)field(F_LOG);
enable(DLG_DELLOG, bf.lines() > 0);
enable(DLG_DELREC);
#ifdef DBG
one_saved &= yesno_box("Si desidera eliminare i messaggi processati?");
@ -1310,6 +1325,36 @@ void TMailer_mask::save_all_lines()
}
}
void TMailer_mask::exec_scripts()
{
TSheet_field& sf = sfield(F_SCRIPTS);
if (_mail_semaphore != 0 || sf.items()== 0)
return;
_mail_semaphore = 1;
TString cmd, des;
FOR_EACH_SHEET_ROW(sf, nrow, row) if (row->starts_with("X"))
{
row->get(1, cmd);
if (cmd.full())
{
row->get(2, des);
log(des.full() ? des : cmd);
TExternal_app app(cmd);
const long ret = app.run();
if (ret != 0)
{
TString80 msg; msg.format(FR("Errore %ld nell'esecuzione di %s"), ret, (const char*)cmd);
log(msg);
}
}
}
log("");
_mail_semaphore = 0;
}
bool TMailer_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
@ -1331,7 +1376,7 @@ bool TMailer_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
if (_timer_id == XVT_TIMER_ERROR)
return error_box("Impossibile impostare il timer");
}
}
}
break;
case F_MESSAGES:
if (e == fe_init)
@ -1477,6 +1522,8 @@ void TMailer_mask::auto_save_all()
fill_messages();
if (_interval > 0 && sf.items() > 0)
save_all_lines();
exec_scripts();
}
else
NFCHECK("Can't save locked mail");
@ -1523,6 +1570,7 @@ void TMailer_mask::save() const
ini.set("DelCancel", get(F_DELCANCEL));
save_sheet(ini, F_ADDRESSES, "Recipient");
save_sheet(ini, F_PARAMS, "Filter");
save_sheet(ini, F_SCRIPTS, "Script");
}
void TMailer_mask::load()
@ -1537,6 +1585,7 @@ void TMailer_mask::load()
set(F_DELCANCEL, ini.get("DelCancel"));
load_sheet(ini, F_ADDRESSES, "Recipient");
load_sheet(ini, F_PARAMS, "Filter");
load_sheet(ini, F_SCRIPTS, "Script");
_sequential = ini.get_bool("StopOnError", "ba7");
}

View File

@ -5,13 +5,15 @@
#define F_TIMER 205
#define F_TRACKING 206
#define F_BACKUP 207
#define F_DELCANCEL 208
#define F_MESSAGES 210
#define F_ADDRESSES 211
#define F_PARAMS 212
#define F_SCRIPTS 213
#define F_LOG 213
#define DLG_DELLOG 214
#define F_LOG 220
#define DLG_DELLOG 221
#define F_CHECKED 101
#define F_SENDER 102
@ -21,14 +23,17 @@
#define F_BODY 106
#define F_MAILER 107
#define F_ID 108
#define F_DELCANCEL 109
#define F_DEST 101
#define F_GROUP 102
#define F_FILE 102
#define F_OPERATOR 103
#define F_EXPR 104
// #define F_CHECKED 101
#define F_COMMAND 102
#define F_DESCR 103
#define G_SUPERUSER 10

View File

@ -11,7 +11,7 @@ END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -11 -1 "Transazioni"
PICTURE BMP_DELREC
PICTURE TOOL_DELREC
END
BUTTON DLG_NULL 2 2
@ -23,7 +23,7 @@ END
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -22 -1 ""
PICTURE BMP_PRINT
PICTURE TOOL_PRINT
END
BUTTON DLG_DELLOG 10 2
@ -166,6 +166,20 @@ END
ENDPAGE
PAGE "Script" 0 0 0 -2
SPREADSHEET F_SCRIPTS 0 -1
BEGIN
PROMPT 0 1 ""
ITEM "@1"
ITEM "Comando@50"
ITEM "Descrizione@50"
GROUP G_SUPERUSER
FLAGS "|"
END
ENDPAGE
PAGE "Log" 0 0 0 -2
BROWSEFILE F_LOG -3 -1
@ -225,11 +239,14 @@ BEGIN
FLAGS "D"
END
ENDPAGE
TOOLBAR "Topbar" 0 0 0 2
BUTTON DLG_USER 10 2
BEGIN
PROMPT -12 -1 ""
PICTURE BMP_SAVEREC
PICTURE BMP_SAVERECDN
PICTURE TOOL_SAVEREC
END
BUTTON DLG_CANCEL 10 2
@ -254,6 +271,10 @@ BEGIN
PROMPT 1 2 "Gruppo "
END
ENDPAGE
TOOLBAR "Topbar" 0 0 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
@ -301,6 +322,51 @@ BEGIN
PROMPT 1 3 "Espressione "
END
ENDPAGE
TOOLBAR "Topbar" 0 0 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -23 -1 ""
PICTURE BMP_DELREC
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK
PAGE "Script" -1 -1 70 5
BOOLEAN F_CHECKED
BEGIN
PROMPT 1 1 "Attivo"
END
STRING F_COMMAND 80 50
BEGIN
PROMPT 1 2 "Comando "
END
STRING F_DESCR 50
BEGIN
PROMPT 1 3 "Descrizione "
END
ENDPAGE
TOOLBAR "Topbar" 0 0 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""

View File

@ -9,7 +9,6 @@
#include <report.h>
#endif
class TKlarkKent_app : public TSkeleton_application
{
protected:

View File

@ -103,29 +103,6 @@ BEGIN
HELP "Inserire la percentuale teorica dell'imposta"
END
#ifdef COVER
NUMBER FLD_TABIVA_I1 1
BEGIN
PROMPT 3 4 "Detraibilita' "
SHEET "Codice|Tipo detraibilita'@75"
INPUT FLD_TABIVA_I1
ITEM " |Regime normale"
ITEM "1|IVA indetraibile su acquisti riferiti a ricavi esenti"
ITEM "3|IVA indicata per passaggi interni al solo fine del calcolo di ventilazione"
ITEM "9|IVA non detraibile per l'articolo 19"
OUTPUT FLD_TABIVA_I1
OUTPUT FLD_DETRAZIONE
FIELD I1
END
STRING FLD_DETRAZIONE 80 52
BEGIN
PROMPT 22 4 ""
FLAGS "D"
END
#endif
GROUPBOX DLG_NULL 78 5
BEGIN
@ -136,7 +113,7 @@ LIST FLD_TABIVA_S7 1 35
BEGIN
PROMPT 2 6 "Cessioni "
FIELD S7
ITEM " |Non in allegato"
ITEM " |Non rilevante"
ITEM "1|1 - Imponibile"
ITEM "2|2 - Non imponibile"
ITEM "3|3 - Esente"
@ -148,7 +125,7 @@ LIST FLD_TABIVA_S8 1 35
BEGIN
PROMPT 2 7 "Acquisti "
FIELD S8
ITEM " |Non in allegato"
ITEM " |Non rilevante"
ITEM "1|1 - Imponibile"
ITEM "2|2 - Non imponibile"
ITEM "3|3 - Esente"