diff --git a/ve/ve0100.cpp b/ve/ve0100.cpp index 88429aa4f..8d6e65ae3 100755 --- a/ve/ve0100.cpp +++ b/ve/ve0100.cpp @@ -214,17 +214,9 @@ void TMotore_application::init_modify_mode( TMask& m ) if (key != __last_key) { TString msg; - msg.format("Documento non %s%s%s.", (no_mod ? "modificabile":""), - (no_mod && no_del ? " ne' ":""), (no_del ? "cancellabile":"")); - if (transaction) - { - TTimed_box box("Attenzione", msg, 5, DLG_OK, 32, 5); - - box.add_button(DLG_OK, 0, "", -11, -1, 10, 2); - box.run(); - } - else - warning_box(msg); + msg.format(FR("Documento non %s%s%s."), (no_mod ? TR("modificabile"):""), + (no_mod && no_del ? TR(" ne' "):""), (no_del ? TR("cancellabile"):"")); + xvt_dm_popup_warning(msg); } } if (no_mod) diff --git a/ve/ve1100.cpp b/ve/ve1100.cpp index 9b192d0a4..9c7320151 100755 --- a/ve/ve1100.cpp +++ b/ve/ve1100.cpp @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -18,7 +19,7 @@ #include "ve1100.h" #include -#include +#include #define LISTADOC "listadoc" #define FAKETOTFLD 9999 @@ -197,7 +198,8 @@ TDocumento_form::TDocumento_form(TRectype& doc, TRelation& rel, bool definitiva, TFilename test(nomeform); test.ext("frm"); if (!test.custom_path()) { - error_box(FR("Nome form di stampa '%s' non valido per il tipo documento %s"), (const char*)nomeform, (const char*)tipodoc); + error_box(FR("Nome form di stampa '%s' non valido per il tipo documento '%s'"), + (const char*)nomeform, (const char*)tipodoc); return; } } @@ -385,7 +387,7 @@ void TDocumento_form::print_documento() _rdocfile->zero(); TString80 desc(c.get("DESCCONAIASS")); if (desc.empty()) - desc = "Contributo CONAI assolto"; + desc = TR("Contributo CONAI assolto"); _rdocfile->put(RDOC_DESCR, desc); body.update(); const word h = body.height(); @@ -1262,6 +1264,7 @@ protected: virtual behaviour on_module_change(const TString &, TString &); // funzione chiamata ad ogni cambio modulo durante la stampa virtual bool query_final_print(void); // funzione chiamata all'inizializzazione per sapere se la stampa è definitiva void set_filter(TDocumento_form& frm); + static bool codnum_handler(TMask_field& f, KEY key); static bool date2num_handler(TMask_field& f, KEY key); static bool range_handler(TMask_field& f, KEY key); static bool tipocf_handler (TMask_field& f, KEY k); @@ -1885,6 +1888,28 @@ bool TStampaDoc_application::range_handler(TMask_field& f, KEY key) return rt; } +bool TStampaDoc_application::codnum_handler(TMask_field& f, KEY key) +{ + bool ok = true; + if (key == K_TAB && !f.empty() && app().has_module(RSAUT)) + { + const TCodice_numerazione& cn = cached_numerazione(f.get()); + TFilename n; + for (int t = cn.ntipi_doc()-1; t >= 0; t--) + { + const TTipo_documento& td = cached_tipodoc(cn.tipo_doc(t)); + if (td.main_print_profile(n, 2)) // Se esiste il .rep allora forse sto usando il programma errato + { + ok = yesno_box(FR("Il tipo documento %s richiede la stampa avanzata del report %s:\nSi desidera continuare ugualmente?"), + (const char*)td.codice(), (const char*)n.name()); + if (!ok) + break; + } + } + } + return ok; +} + bool TStampaDoc_application::tipodoc_handler(TMask_field& f, KEY key) { TMask& m = f.mask(); @@ -1892,19 +1917,16 @@ bool TStampaDoc_application::tipodoc_handler(TMask_field& f, KEY key) { case K_F9: //caso del bottone di selezione { - TArray_sheet as(-1,-1,70,20,TR("Tipi documento"),"Codice|Descrizione@50"); //costruisce uno sheet di selezione dei tipi doc - const TRectype& recnum = cache().get("%NUM",m.get(101)); //cache sulla tabella numerazione documento con il numero doc immesso nella maschera - const TString80 s2 = recnum.get("S2"); //prende tutto il contenuto del campo S2 della tabella %NUM (numerazione docs) - for (int i = 0; i < s2.len(); i+=4) + TArray_sheet as(-1,-1,70,20,TR("Tipi documento"),HR("Codice|Descrizione@50")); //costruisce uno sheet di selezione dei tipi doc + + const TCodice_numerazione& cn = cached_numerazione(m.get(101)); + for (int t = cn.ntipi_doc()-1; t >= 0; t--) { - const TString4 tipodoc = s2.mid(i,4); //si va di 4 in 4, x' cosi' sono ordinati i tipidoc nel campo S2 - if (!tipodoc.blank()) //ovviamente si procede solo se il tipodoc esiste - { - TToken_string row; //classica token_string con codice e descrizione del tipodoc: questa viene scelta nella tabella - row.add(tipodoc); //dei tipi docs %TIP - row.add(cache().get("%TIP", tipodoc, "S0")); - as.add(row); //..e viene aggiunta allo sheet di selezione - } + const TString4 tipodoc = cn.tipo_doc(t); + TToken_string row; //classica token_string con codice e descrizione del tipodoc: questa viene scelta nella tabella + row.add(tipodoc); //dei tipi docs %TIP + row.add(cache().get("%TIP", tipodoc, "S0")); + as.add(row); //..e viene aggiunta allo sheet di selezione } if (as.run() != K_ESC) { @@ -1916,16 +1938,14 @@ bool TStampaDoc_application::tipodoc_handler(TMask_field& f, KEY key) case K_ENTER: //caso del bottone invio; + o - come sopra; deve xo' verificare che l'eventuale codice di tipodoc digitato if (!f.empty()) //sia valido (esista nel campo S2 della tabella NUM) { - const TRectype& recnum = cache().get("%NUM",m.get(101)); - const TString80 s2 = recnum.get("S2"); - for (int i = 0; i < s2.len(); i+=4) + const TCodice_numerazione& cn = cached_numerazione(m.get(101)); + for (int t = cn.ntipi_doc()-1; t >= 0; t--) { - TString4 tipodoc = s2.mid(i,4); - tipodoc.trim(); + const TString& tipodoc = cn.tipo_doc(t); if (tipodoc == f.get()) return true; } - return f.error_box(FR("Tipo documento non valido per la numerazione %s"), (const char*)m.get(101)); + return f.error_box(FR("Tipo documento non valido per la numerazione %s"), (const char*)cn.codice()); } break; @@ -1941,7 +1961,7 @@ bool TStampaDoc_application::tipodoc_handler(TMask_field& f, KEY key) //////////////////////////////////////////////////////////////// bool TStampaDoc_application::filter_clifo(const TRelation* r) { - const long codcf = r->lfile().get_long(CLI_CODCF); + const long codcf = r->curr().get_long(CLI_CODCF); TString8 key; key.format("%06ld", codcf); return app()._clifo_sel.is_key(key); } @@ -1987,6 +2007,7 @@ bool TStampaDoc_application::create() if (!_is_lista) { _clifo_sheet = NULL; + _selection_mask->set_handler(F_CODNUM, codnum_handler); _selection_mask->set_handler(F_DA_DATADOC, date2num_handler); _selection_mask->set_handler(F_A_DATADOC, date2num_handler); _selection_mask->set_handler(F_A_NDOC, range_handler); diff --git a/ve/ve1300.cpp b/ve/ve1300.cpp index 305af7e90..e33d502b1 100755 --- a/ve/ve1300.cpp +++ b/ve/ve1300.cpp @@ -1103,15 +1103,7 @@ bool TReport_doc_app::print_loop(const TString& query, TOutput_mode mode) else { TString msg; msg << TR("Report inesistente: ") << profilo; -#ifdef xvt_dm_post_error - if (is_power_version()) - xvt_dm_post_error(msg); - else -#endif - { - statbar_set_title(TASK_WIN, msg); - beep(2); - } + xvt_dm_post_error(msg); continue; } diff --git a/ve/velib06a.cpp b/ve/velib06a.cpp index c62be37b8..193a281ce 100755 --- a/ve/velib06a.cpp +++ b/ve/velib06a.cpp @@ -803,14 +803,14 @@ class TPrice_sheet : public TArray_sheet protected: virtual bool get_ini_paragraph(const TEdit_field& f, TString& name) const; - virtual void handler(WINDOW win, EVENT* ep); + virtual long handler(WINDOW win, EVENT* ep); TEdit_field& field() { return _fld; } public: TPrice_sheet(TEdit_field& f); }; -void TPrice_sheet::handler(WINDOW win, EVENT* ep) +long TPrice_sheet::handler(WINDOW win, EVENT* ep) { if (ep->type == E_MOUSE_DOWN) { @@ -834,7 +834,7 @@ void TPrice_sheet::handler(WINDOW win, EVENT* ep) xvt_menu_popup(menu->child, win, p, pa, NULL); xvt_res_free_menu_tree(menu); } - return; + return 0; } break; default: @@ -848,19 +848,19 @@ void TPrice_sheet::handler(WINDOW win, EVENT* ep) { case BROWSE_BAR + 1: save_columns_order(field()); - return; + return 0; case BROWSE_BAR + 2: set_columns_order(NULL); - return; + return 0; case BROWSE_BAR + 3: fld(0).on_key(K_F11); - return; + return 0; default: break; } } - TArray_sheet::handler(win, ep); + return TArray_sheet::handler(win, ep); } bool TPrice_sheet::get_ini_paragraph(const TEdit_field& field, TString& parag) const