diff --git a/ve/ve1300.cpp b/ve/ve1300.cpp index 68d2e1ebc..c1712c0fe 100755 --- a/ve/ve1300.cpp +++ b/ve/ve1300.cpp @@ -952,6 +952,7 @@ protected: virtual bool get_next_mail(TToken_string& to, TToken_string& cc, TToken_string& ccn, TString& subj, TString& text, TToken_string& attach, short& ui) const ; void print_extra_copies(TReport_doc& report, const TRecordset& doc, TReport_book& book) const; + bool nome_report(const TRecordset& doc, int quale, TFilename& profilo) const; public: virtual bool create(); @@ -1092,6 +1093,32 @@ void TReport_doc_app::print_extra_copies(TReport_doc& report, const TRecordset& report.print(doc, book, false, extra_copies, false, false, false); } +// Quale 0=standard,1=aggiuntivo,2=mail +bool TReport_doc_app::nome_report(const TRecordset& doc, int quale, TFilename& profilo) const +{ + const TString4 tipodoc = doc.get(DOC_TIPODOC).as_string(); + const TTipo_documento& tipo = cached_tipodoc(tipodoc); + bool ok = false; + switch (quale) + { + case 1: ok = tipo.additional_print_profile(profilo, 2); break; + case 2: ok = tipo.mail_print_profile(profilo); break; + default: ok = tipo.main_print_profile(profilo, 2); break; + } + + if (ok) // Cerca eventuale personalizzazione per il singolo cliente + { + TString8 codcf = doc.get(DOC_CODCF).as_string(); codcf.right_just(6, '0'); + TFilename path = profilo.name_only(); + path << '_' << doc.get(DOC_TIPOCF) << codcf << ".rep"; + if (path.custom_path()) + profilo = path; + } + + return ok; +} + + bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_definitive) { const int docs = doc.items(); @@ -1145,15 +1172,10 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def const bool send_mail = ( mode == out_mail || mode == out_signed_mail) && get_mail_address().full(); const bool paperless = send_mail || mode == out_pdf || mode == out_signed_pdf; - TFilename profilo; // Tenta di costruirsi il nome del report - bool ok = false; - - // Se non stampo su carta cerco di usare un profilo con sfondo - if (paperless) - ok = tipo.mail_print_profile(profilo); - else - ok = tipo.main_print_profile(profilo, 2); - + // Tenta di costruirsi il nome del report: se non stampo su carta cerco di usare un profilo con sfondo + TFilename profilo; + const bool ok = nome_report(doc, paperless ? 2 : 0, profilo); + if (ok) { int copies = 1; @@ -1196,7 +1218,7 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool is_def } // Stampa eventuali allegati - if (tipo.additional_print_profile(profilo, 2)) + if (nome_report(doc, 1, profilo)) { int copies = tipo.additional_ncopie(); if (copies <= 0) copies = 1;