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
This commit is contained in:
guy 2009-03-19 15:50:58 +00:00
parent 512126d4df
commit 6f9698a5bf
4 changed files with 57 additions and 34 deletions

View File

@ -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();

View File

@ -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));
}

View File

@ -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

View File

@ -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;
}