Patch level : 10.0
Files correlati : ba7.exe Ricompilazione Demo : [ ] Commento : Convertita maschera di gestione postino e migliorata gestione transazioni di inserimento git-svn-id: svn://10.65.10.50/trunk@19360 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
e130c6af43
commit
b307763864
@ -472,6 +472,7 @@ class TMailer_mask : public TAutomask
|
||||
int _mail_semaphore;
|
||||
TMail_messages _box;
|
||||
bool _sequential;
|
||||
clock_t _last_use;
|
||||
|
||||
TString_array _key1; // Elenco dei campi della chiave principale dei files
|
||||
TAssoc_array _apps; // Elenco delle applicazioni per processare i files
|
||||
@ -488,13 +489,14 @@ protected:
|
||||
void load_sheet(TConfig& ini, short dlg, const char* var);
|
||||
|
||||
TToken_string& get_key1(int lf) const;
|
||||
bool build_key1(int lf, const TString& body, TToken_string& key) const;
|
||||
bool build_key1(const TMail_message& msg, TToken_string& key) const;
|
||||
bool build_key1(int lf, const TString& body, TToken_string& key, TString& action) const;
|
||||
bool build_key1(const TMail_message& msg, TToken_string& key, TString& action) const;
|
||||
void find_redundant_messages();
|
||||
|
||||
void track(const TMail_message& msg, const TString& app, const TString& action, int err);
|
||||
bool exec_app(int & err, const TString& appname, TMail_message & msg, TToken_string & sh_row);
|
||||
void scan_dir(const TFilename& dir, TMail_messages& box) const;
|
||||
bool unattended() const;
|
||||
|
||||
public:
|
||||
void test_delete();
|
||||
@ -688,6 +690,8 @@ void TMailer_mask::fill_messages()
|
||||
return;
|
||||
_mail_semaphore = 1;
|
||||
|
||||
disable(DLG_DELREC);
|
||||
|
||||
TWait_cursor hourglass;
|
||||
|
||||
TFilename server(get(F_SERVER));
|
||||
@ -880,6 +884,7 @@ void adjust_long_lines(const TFilename& tmp)
|
||||
void TMailer_mask::track(const TMail_message& msg, const TString& app, const TString& action, int err)
|
||||
{
|
||||
const TString& fname = get(F_TRACKING);
|
||||
|
||||
if (fname.full())
|
||||
{
|
||||
const char fldsep = '\t';
|
||||
@ -893,7 +898,9 @@ void TMailer_mask::track(const TMail_message& msg, const TString& app, const TSt
|
||||
const real t = msg.time();
|
||||
log << t.string("@@:@@:@@") << fldsep;
|
||||
|
||||
TToken_string k1; build_key1(msg, k1);
|
||||
TToken_string k1;
|
||||
TString act;
|
||||
build_key1(msg, k1, act);
|
||||
log << k1.get(0) << fldsep;
|
||||
|
||||
const int pipe = k1.find(k1.separator());
|
||||
@ -1078,7 +1085,7 @@ TToken_string& TMailer_mask::get_key1(int lf) const
|
||||
return *key;
|
||||
}
|
||||
|
||||
bool TMailer_mask::build_key1(int lf, const TString& body, TToken_string& key) const
|
||||
bool TMailer_mask::build_key1(int lf, const TString& body, TToken_string& key, TString& action) const
|
||||
{
|
||||
key.format("%d", lf);
|
||||
|
||||
@ -1107,10 +1114,21 @@ bool TMailer_mask::build_key1(int lf, const TString& body, TToken_string& key) c
|
||||
}
|
||||
key.add(value);
|
||||
}
|
||||
|
||||
const int act = body.find("\nAction");
|
||||
const int ugu = body.find('=', act);
|
||||
const int nwl = body.find('\n', ugu);
|
||||
if (act > 0 && ugu > act && ugu < nwl)
|
||||
{
|
||||
action = body.sub(ugu+1,nwl);
|
||||
action.trim();
|
||||
action.upper();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TMailer_mask::build_key1(const TMail_message& msg, TToken_string& key) const
|
||||
bool TMailer_mask::build_key1(const TMail_message& msg, TToken_string& key, TString& action) const
|
||||
{
|
||||
TString body;
|
||||
FOR_EACH_ARRAY_ROW(msg, r, row)
|
||||
@ -1127,7 +1145,7 @@ bool TMailer_mask::build_key1(const TMail_message& msg, TToken_string& key) cons
|
||||
else
|
||||
lfile = atoi(subj);
|
||||
|
||||
return build_key1(lfile, body, key);
|
||||
return build_key1(lfile, body, key, action);
|
||||
}
|
||||
|
||||
void TMailer_mask::find_redundant_messages()
|
||||
@ -1136,11 +1154,11 @@ void TMailer_mask::find_redundant_messages()
|
||||
TAssoc_array andreotti;
|
||||
|
||||
TSheet_field& sf = sfield(F_MESSAGES);
|
||||
TString subj, body;
|
||||
TString subj, body, action;
|
||||
TToken_string key1;
|
||||
|
||||
// Scorro tutti i messaggi non ancora elaborati
|
||||
FOR_EACH_SHEET_ROW_BACK(sf, nrow, row) if (*row->get(0) != 'X')
|
||||
FOR_EACH_SHEET_ROW_BACK(sf, nrow, row) if (row->get_char(0) != 'X')
|
||||
{
|
||||
row->get(sf.cid2index(F_BODY), body);
|
||||
if (body.find("[Transaction]") < 0) // Scarto i messaggi che non siano transazioni
|
||||
@ -1158,9 +1176,9 @@ void TMailer_mask::find_redundant_messages()
|
||||
else
|
||||
lfile = atoi(subj);
|
||||
|
||||
if (build_key1(lfile, body, key1))
|
||||
if (build_key1(lfile, body, key1, action))
|
||||
{
|
||||
if (andreotti.is_key(key1))
|
||||
if (andreotti.is_key(key1) && action != "INSERT") // Non considero ridondanti gli inserimenti!
|
||||
row->add("R", 0); // Messaggio ridondante!
|
||||
else
|
||||
andreotti.add(key1); // Messaggio da processare!
|
||||
@ -1245,13 +1263,16 @@ void TMailer_mask::save_all_lines()
|
||||
vv.goto_end();
|
||||
|
||||
sf.force_update(); // Fai apparire tutte le X
|
||||
_mail_semaphore = 0;
|
||||
|
||||
enable(DLG_DELREC);
|
||||
enable(DLG_DELLOG, bf.lines() > 0);
|
||||
|
||||
#ifdef DBG
|
||||
if (one_saved && yesno_box("Si desidera eliminare i messaggi processati?"))
|
||||
#else
|
||||
if (one_saved)
|
||||
one_saved &= yesno_box("Si desidera eliminare i messaggi processati?");
|
||||
#endif
|
||||
|
||||
_mail_semaphore = 0;
|
||||
if (one_saved)
|
||||
{
|
||||
test_delete();
|
||||
fill_messages();
|
||||
@ -1394,6 +1415,9 @@ bool TMailer_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
_last_use = clock();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1417,23 +1441,28 @@ void TMailer_mask::auto_save_all()
|
||||
if (_mail_semaphore == 0)
|
||||
{
|
||||
TSheet_field& sf = sfield(F_MESSAGES);
|
||||
|
||||
#ifdef DBG
|
||||
if (sf.items() > 0 && yesno_box(TR("Si desidera eliminare i messaggi processati?")))
|
||||
#endif
|
||||
test_delete();
|
||||
if (sf.items() == 0)
|
||||
fill_messages();
|
||||
if (_interval > 0)
|
||||
{
|
||||
if (sf.items() > 0)
|
||||
save_all_lines();
|
||||
}
|
||||
if (_interval > 0 && sf.items() > 0)
|
||||
save_all_lines();
|
||||
}
|
||||
else
|
||||
NFCHECK("Can't save locked mail");
|
||||
}
|
||||
|
||||
bool TMailer_mask::unattended() const
|
||||
{
|
||||
if (!xvt_vobj_is_focusable(win()))
|
||||
return true;
|
||||
|
||||
RCT r; xvt_vobj_get_outer_rect(TASK_WIN, &r);
|
||||
if (r.bottom - r.top < 64)
|
||||
return true; // Finestra principale iconizzata
|
||||
|
||||
return (clock()-_last_use) > 10*CLOCKS_PER_SEC;
|
||||
}
|
||||
|
||||
void TMailer_mask::handler(WINDOW win, EVENT* ep)
|
||||
{
|
||||
if (ep->type == E_TIMER)
|
||||
@ -1444,7 +1473,7 @@ void TMailer_mask::handler(WINDOW win, EVENT* ep)
|
||||
if (_secs >= _interval)
|
||||
{
|
||||
_secs = 0L;
|
||||
if (_mail_semaphore == 0)
|
||||
if (_mail_semaphore == 0 && unattended())
|
||||
auto_save_all();
|
||||
}
|
||||
}
|
||||
@ -1484,7 +1513,7 @@ void TMailer_mask::load()
|
||||
}
|
||||
|
||||
TMailer_mask::TMailer_mask()
|
||||
: TAutomask("ba7100a"), _timer_id(XVT_TIMER_ERROR), _mail_semaphore(0)
|
||||
: TAutomask("ba7100a"), _timer_id(XVT_TIMER_ERROR), _mail_semaphore(0), _last_use(0)
|
||||
{
|
||||
load();
|
||||
|
||||
|
@ -4,16 +4,59 @@ TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_SAVEREC 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -11 ""
|
||||
PICTURE BMP_SAVEREC
|
||||
PICTURE BMP_SAVERECDN
|
||||
PROMPT -12 -11 "Elabora"
|
||||
PICTURE TOOL_ELABORA
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BUTTON DLG_DELREC 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -11 ""
|
||||
PICTURE BMP_QUIT
|
||||
PICTURE BMP_QUITDN
|
||||
PROMPT -11 -1 "Transazioni"
|
||||
PICTURE BMP_DELREC
|
||||
END
|
||||
|
||||
BUTTON DLG_NULL 2 2
|
||||
BEGIN
|
||||
PROMPT -1 1 ""
|
||||
PICTURE 0
|
||||
END
|
||||
|
||||
BUTTON DLG_PRINT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
PICTURE BMP_PRINT
|
||||
END
|
||||
|
||||
BUTTON DLG_DELLOG 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "Log"
|
||||
PICTURE TOOL_DELREC
|
||||
END
|
||||
|
||||
BUTTON DLG_NULL 2 2
|
||||
BEGIN
|
||||
PROMPT -1 1 ""
|
||||
PICTURE 0
|
||||
END
|
||||
|
||||
BUTTON DLG_INFO 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Info"
|
||||
MESSAGE EXIT,K_F2
|
||||
PICTURE TOOL_INFO
|
||||
END
|
||||
|
||||
BUTTON DLG_HELP 2 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Help"
|
||||
MESSAGE EXIT,K_F1
|
||||
PICTURE TOOL_HELP
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 2 2
|
||||
BEGIN
|
||||
PROMPT 4 1 "Fine"
|
||||
MESSAGE EXIT,K_QUIT
|
||||
PICTURE TOOL_QUIT
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
@ -73,7 +116,7 @@ BEGIN
|
||||
PROMPT 55 3 "Elimina transazioni annullate"
|
||||
END
|
||||
|
||||
SPREADSHEET F_MESSAGES 0 -3
|
||||
SPREADSHEET F_MESSAGES 0 -1
|
||||
BEGIN
|
||||
PROMPT 0 4 ""
|
||||
ITEM "@1"
|
||||
@ -88,13 +131,6 @@ BEGIN
|
||||
FLAGS "|"
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 10 2
|
||||
BEGIN
|
||||
PROMPT -11 -1 ""
|
||||
PICTURE BMP_DELREC
|
||||
PICTURE BMP_DELRECDN
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Spedizione" 0 0 0 -2
|
||||
@ -132,24 +168,11 @@ ENDPAGE
|
||||
|
||||
PAGE "Log" 0 0 0 -2
|
||||
|
||||
BROWSEFILE F_LOG -1 -2
|
||||
BROWSEFILE F_LOG -3 -1
|
||||
BEGIN
|
||||
PROMPT 0 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELLOG 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
PICTURE BMP_DELREC
|
||||
PICTURE BMP_DELRECDN
|
||||
END
|
||||
|
||||
BUTTON DLG_PRINT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
PICTURE BMP_PRINT
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
@ -287,7 +310,6 @@ BUTTON DLG_DELREC 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
PICTURE BMP_DELREC
|
||||
PICTURE BMP_DELRECDN
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
|
Loading…
x
Reference in New Issue
Block a user