From 6f9698a5bffd577478e36891c2a8f779f62387b4 Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 19 Mar 2009 15:50:58 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : ve0 ve1 Ricompilazione Demo : [ ] Commento : Aggiunto supporto per firma digitale git-svn-id: svn://10.65.10.50/trunk@18572 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/ve0100.cpp | 11 +++++----- ve/ve1100.cpp | 4 ++-- ve/ve1300.cpp | 57 +++++++++++++++++++++++++++++++++++++------------ ve/velib06a.cpp | 19 ++++++----------- 4 files changed, 57 insertions(+), 34 deletions(-) diff --git a/ve/ve0100.cpp b/ve/ve0100.cpp index 78c86baea..7adda21e1 100755 --- a/ve/ve0100.cpp +++ b/ve/ve0100.cpp @@ -576,8 +576,7 @@ bool TMotore_application::user_create( ) } } - TConfig utente( CONFIG_USER ); - + TConfig utente(CONFIG_GUI, "ve"); if (_codnum.blank()) _codnum = utente.get("CODNUM"); if (_tipodoc.blank()) @@ -592,9 +591,9 @@ bool TMotore_application::user_create( ) bool TMotore_application::user_destroy( ) { // Registro l'ultimo tipo documento e l'ultima numerazione - TConfig utente( CONFIG_USER ); - utente.set( "CODNUM", _codnum, "ve" ); - utente.set( "TIPODOC", _tipodoc, "ve" ); + TConfig utente( CONFIG_GUI, "ve" ); + utente.set( "CODNUM", _codnum ); + utente.set( "TIPODOC", _tipodoc ); if (_config_ditta != NULL) delete _config_ditta; @@ -947,7 +946,7 @@ void TMotore_application::print() commandline = "ve1 -0"; // Esiste il vecchio form :-( commandline << ' ' << doc.get(DOC_CODNUM) << ' ' << doc.get(DOC_ANNO) << ' '; - commandline << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC) << ' ' << doc.get(DOC_NDOC); + commandline << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC) << ' ' << 'S'; // Stampa (NON anteprima) commandline << ' ' << (da_stampare ? 'D' : 'P'); const int ncopie = tipo.ncopie(); diff --git a/ve/ve1100.cpp b/ve/ve1100.cpp index 0aa8c8317..6fd8ece46 100755 --- a/ve/ve1100.cpp +++ b/ve/ve1100.cpp @@ -1983,10 +1983,10 @@ bool TStampaDoc_application::create() _interattivo= false; if (argc > 6) { - _alnum= atol(argv(6)); // il quinto è il numero di documento di fine + const char print_mode = *argv(6); // il quinto è la modalita' di stampa o pdf (NON gestito qui) if (argc > 7) { - _definitiva= (strcmp(argv(7), "D")==0); // il sesto è se la stampa è definitiva (rinumerazione dei documenti) + _definitiva= *argv(7) == 'D'; // il sesto è se la stampa è definitiva (rinumerazione dei documenti) if (argc > 8) _ncopie = atoi(argv(8)); } diff --git a/ve/ve1300.cpp b/ve/ve1300.cpp index ed66d137a..f2df86081 100755 --- a/ve/ve1300.cpp +++ b/ve/ve1300.cpp @@ -233,7 +233,8 @@ protected: int set_printed_status(TDocumento& doc) const; public: - bool print(const TRecordset& doc, TReport_book& book, bool def, word copies, bool alleg, bool arc); + bool print(const TRecordset& doc, TReport_book& book, bool def, word copies, + bool alleg, bool arc, bool signature); TReport_doc(const char* name); virtual ~TReport_doc(); @@ -289,7 +290,7 @@ int TReport_doc::set_printed_status(TDocumento& doc) const return err; } -bool TReport_doc::print(const TRecordset& doc, TReport_book& book, bool definitive, word copie, bool can_allegate, bool arc) +bool TReport_doc::print(const TRecordset& doc, TReport_book& book, bool definitive, word copie, bool can_allegate, bool arc, bool signature) { const TString old_query = recordset()->query_text(); @@ -372,7 +373,7 @@ bool TReport_doc::print(const TRecordset& doc, TReport_book& book, bool definiti set_printed_status(rs->doc()); if (printed && arc) - archive(); + archive(signature); set_recordset(old_query); return printed; @@ -984,6 +985,15 @@ bool TReport_doc_app::print_loop(const TString& query, TOutput_mode mode) return false; is_definitive = k == K_YES; } + + if (mode == out_signed_mail && !xvt_sign_start()) + { + if (yesno_box(TR("Si desidera generare comunque documenti non firmati?"))) + mode = out_mail; + else + return false; + } + const bool signature = mode==out_signed_mail || mode==out_signed_pdf; TReports_cache reports; // Cache degli ultimi reports usati TDoc_book book; // Destinazione dell'intera stampa @@ -1033,7 +1043,7 @@ bool TReport_doc_app::print_loop(const TString& query, TOutput_mode mode) if (send_mail) { mail_book = new TDoc_book; - if (!report.print(doc, *mail_book, is_definitive, 1, true, arc)) + if (!report.print(doc, *mail_book, is_definitive, 1, true, arc, signature)) break; TString mesg; mesg << tipo.descrizione() << TR(" n. ") << doc.get(DOC_NDOC).as_int() @@ -1042,7 +1052,7 @@ bool TReport_doc_app::print_loop(const TString& query, TOutput_mode mode) } else { - if (!report.print(doc, book, is_definitive, copies, true, arc)) + if (!report.print(doc, book, is_definitive, copies, true, arc, signature)) break; } } //if(profilo.custom_path()... @@ -1067,11 +1077,11 @@ bool TReport_doc_app::print_loop(const TString& query, TOutput_mode mode) _codnum = profilo.name(); _codnum = _codnum.before("."); } - // Il flag di definitvo deve essere false altrimenti riaggiorna lo stato e ristampa i documenti allegati + // Il flag di definitivo deve essere false altrimenti riaggiorna lo stato e ristampa i documenti allegati if (send_mail) - allegato.print(doc, *mail_book, false, 1, false, arc); + allegato.print(doc, *mail_book, false, 1, false, false, false); // Non archivio gli allegati alla mail else - allegato.print(doc, book, false, copies, false, arc); + allegato.print(doc, book, false, copies, false, arc, signature); } if (mail_book != NULL) @@ -1115,6 +1125,9 @@ bool TReport_doc_app::print_loop(const TString& query, TOutput_mode mode) } } + if (mode == out_signed_mail || mode == out_signed_pdf) + xvt_sign_stop(); + return true; } @@ -1131,6 +1144,12 @@ void TReport_doc_app::print_selection(TOutput_mode mode) TReport_doc_app::TOutput_mode TReport_doc_app::key2mode(KEY k) const { TOutput_mode mode = out_print; + + if (k >= 'a' && !has_module(FDAUT)) + k -= ' '; // toupper dei poveri + if (!has_module(RSAUT)) + k = 'A'; + switch (k) { case 'A': mode = out_preview; break; @@ -1148,19 +1167,29 @@ void TReport_doc_app::main_loop() const int a = argc(); if (a > 2) - _msk->set(F_CODNUM, argv(2)); // Stampa da menu con numerazione imposta + { + const TFixed_string arg = argv(2); + TString4 codnum = arg.left(4); + if (arg.len() > 4 || cache().get("%NUM", arg).empty()) + { + const TToken_string tok(arg, ','); + TString16 paragraph, field; + tok.get(0, paragraph); tok.get(1, field); + if (field.blank()) field = DOC_CODNUM; + codnum = ini_get_string(CONFIG_DITTA, paragraph, field); + } + _msk->set(F_CODNUM, codnum); // Stampa da menu con numerazione imposta + } if (a > 6) // Stampa da riga di comando { - TOutput_mode mode = out_print; - _msk->set(F_DATA_O_NUM, "N"); // Stampa per numero documento _msk->set(F_ANNO, argv(3)); _msk->set(F_PROVV, argv(4)); _msk->set(F_DA_NDOC, argv(5)); - _msk->set(F_A_NDOC, argv(6)); - if (a > 7) - mode = key2mode(argv(7)[0]); // modo di stampa + _msk->set(F_A_NDOC, argv(5)); + const TOutput_mode mode = key2mode(*argv(6)); // modo di 'S'tampa, 'A'nteprima, 'P'DF + // argv(7); // Provvisiorio o Definitivo testato altrove! if (a > 8) _msk->set(F_NCOPIE, argv(8)); // Numero copie diff --git a/ve/velib06a.cpp b/ve/velib06a.cpp index 45bae40b7..812892ccd 100755 --- a/ve/velib06a.cpp +++ b/ve/velib06a.cpp @@ -156,9 +156,8 @@ bool fido_hndl(TMask_field& field, KEY key) const char tipocf = m.get(F_TIPOCF)[0]; const long codcf = m.get_long(F_CODCF); const TDate& datadoc = m.get_date(F_DATADOC); - TConfig config_ditta(CONFIG_DITTA, "ve"); - const int riskdays = config_ditta.get_int("FIDO_RISKDAYS"); - const real perc_toll = config_ditta.get("FIDO_PERCTOLL"); + const int riskdays = ini_get_int(CONFIG_DITTA, "ve", "FIDO_RISKDAYS"); + const real perc_toll = ini_get_string(CONFIG_DITTA, "ve", "FIDO_PERCTOLL"); //calcola l'esposizione PRIMA del documento corrente const real esposizione = calcola_fido_cliente (tipocf, codcf, datadoc, riskdays); //prende il valore del documento corrente @@ -193,17 +192,13 @@ bool ora_hndl( TMask_field& field, KEY key ) ora = field.get(); if (ora.not_empty()) { - if (!isdigit(ora[0]) || - !isdigit(ora[1]) || - !isdigit(ora[2]) || - !isdigit(ora[3]) || - atoi(ora.left(2)) > 23 || - atoi(ora.mid(2)) > 59) - return error_box("Ora errata"); + if (!isdigit(ora[0]) || !isdigit(ora[1]) || !isdigit(ora[2]) || + !isdigit(ora[3]) || atoi(ora.left(2)) > 23 || atoi(ora.mid(2)) > 59) + return error_box(TR("Ora errata")); } else if (field.required()) - return error_box("Ora obbligatoria"); + return error_box(TR("Ora obbligatoria")); } } @@ -212,7 +207,7 @@ bool ora_hndl( TMask_field& field, KEY key ) bool dummy_hndl(TMask_field& field, KEY key) { - warning_box( "Al campo %d è arrivato un KEY %d", field.dlg( ), key ); + warning_box(FR("Al campo %d è arrivato un KEY %d"), field.dlg( ), key ); return true; }