Patch level :10.0 256
Files correlati : Ricompilazione Demo : [ ] Commento : modernizzata a bomba la stampa documenti avanzata; inserita preview e firma; fatta funzionare la mail e i pdf git-svn-id: svn://10.65.10.50/trunk@18494 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b093150553
commit
2af36abb42
@ -10,14 +10,57 @@ END
|
|||||||
|
|
||||||
BUTTON DLG_SETPRINT 10 2
|
BUTTON DLG_SETPRINT 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 1 "~Imposta"
|
PROMPT 2 1 "~Imposta"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_PREVIEW 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 1 "~Anteprima"
|
||||||
|
PICTURE TOOL_PREVIEW
|
||||||
|
MESSAGE EXIT,65
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_NULL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 1 ""
|
||||||
|
PICTURE 0
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_EMAIL 10 2
|
BUTTON DLG_EMAIL 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 1 "~Mail"
|
PROMPT 5 1 "Mail"
|
||||||
PICTURE BMP_EMAIL
|
PICTURE TOOL_EMAIL
|
||||||
MESSAGE EXIT,K_ESC
|
MESSAGE EXIT,69
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_SIGNMAIL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 6 1 "Firmata"
|
||||||
|
PICTURE TOOL_SIGNMAIL
|
||||||
|
MESSAGE EXIT,101
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_NULL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 7 1 ""
|
||||||
|
PICTURE 0
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_PDF 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 8 1 "Pdf"
|
||||||
|
PICTURE TOOL_PDF
|
||||||
|
MESSAGE EXIT,80
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_SIGNPDF 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 9 1 "Firmato"
|
||||||
|
PICTURE TOOL_SIGNPDF
|
||||||
|
MESSAGE EXIT,112
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -807,7 +807,15 @@ bool TReport_doc_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
TReport_doc_mask::TReport_doc_mask() : TAutomask("ve1100a")
|
TReport_doc_mask::TReport_doc_mask() : TAutomask("ve1100a")
|
||||||
{
|
{
|
||||||
hide(F_PROVV);
|
hide(F_PROVV);
|
||||||
enable(DLG_EMAIL);
|
|
||||||
|
//abilita i bottoni della toolbar in base ai moduli presenti sulla chiave
|
||||||
|
TApplication& a = main_app();
|
||||||
|
const bool can_pdf = a.has_module(RSAUT);
|
||||||
|
const bool can_sign = can_pdf && a.has_module(FDAUT);
|
||||||
|
enable(DLG_EMAIL, can_pdf);
|
||||||
|
enable(DLG_SIGNMAIL, can_sign);
|
||||||
|
enable(DLG_PDF, can_pdf);
|
||||||
|
enable(DLG_SIGNPDF, can_sign);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -838,6 +846,8 @@ class TReport_doc_app : public TSkeleton_application
|
|||||||
{
|
{
|
||||||
TReport_doc_mask* _msk;
|
TReport_doc_mask* _msk;
|
||||||
|
|
||||||
|
enum TOutput_mode {out_preview, out_print, out_mail, out_signed_mail, out_pdf, out_signed_pdf};
|
||||||
|
|
||||||
int _anno;
|
int _anno;
|
||||||
TString16 _codnum; // codice numerazione / profilo
|
TString16 _codnum; // codice numerazione / profilo
|
||||||
long _ndoc, _codcf;
|
long _ndoc, _codcf;
|
||||||
@ -847,8 +857,9 @@ protected:
|
|||||||
void add_data_filter(TString& query, bool from) const;
|
void add_data_filter(TString& query, bool from) const;
|
||||||
void add_ndoc_filter(TString& query, bool from) const;
|
void add_ndoc_filter(TString& query, bool from) const;
|
||||||
void add_filter(TString& str, bool from) const;
|
void add_filter(TString& str, bool from) const;
|
||||||
bool print_loop(const TString& query, bool send_by_mail);
|
bool print_loop(const TString& query, TOutput_mode mode);
|
||||||
void print_selection(bool send_by_mail = false);
|
void print_selection(TOutput_mode mode);
|
||||||
|
TOutput_mode key2mode(KEY k) const;
|
||||||
|
|
||||||
void set_next_pdf(int an, const char* cn, long nd, char tcf, long cf);
|
void set_next_pdf(int an, const char* cn, long nd, char tcf, long cf);
|
||||||
virtual bool get_next_pdf(int anno, long ditta, const char* codnum, long numdoc, long codcf, TFilename& pdf) const;
|
virtual bool get_next_pdf(int anno, long ditta, const char* codnum, long numdoc, long codcf, TFilename& pdf) const;
|
||||||
@ -956,7 +967,7 @@ bool TReport_doc_app::destroy()
|
|||||||
return TSkeleton_application::destroy();
|
return TSkeleton_application::destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TReport_doc_app::print_loop(const TString& query, bool send_by_mail)
|
bool TReport_doc_app::print_loop(const TString& query, TOutput_mode mode)
|
||||||
{
|
{
|
||||||
TISAM_recordset doc(query);
|
TISAM_recordset doc(query);
|
||||||
const int docs = doc.items();
|
const int docs = doc.items();
|
||||||
@ -1000,7 +1011,7 @@ bool TReport_doc_app::print_loop(const TString& query, bool send_by_mail)
|
|||||||
|
|
||||||
const TString& tipodoc = doc.get(DOC_TIPODOC).as_string();
|
const TString& tipodoc = doc.get(DOC_TIPODOC).as_string();
|
||||||
const TTipo_documento& tipo = cached_tipodoc(tipodoc);
|
const TTipo_documento& tipo = cached_tipodoc(tipodoc);
|
||||||
const bool send_mail = send_by_mail && get_mail_address().full();
|
const bool send_mail = ( mode == out_mail || mode == out_signed_mail) && get_mail_address().full();
|
||||||
|
|
||||||
TFilename profilo; // Tenta di costruirsi il nome del report
|
TFilename profilo; // Tenta di costruirsi il nome del report
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
@ -1014,7 +1025,7 @@ bool TReport_doc_app::print_loop(const TString& query, bool send_by_mail)
|
|||||||
int copies = _msk->get_int(F_NCOPIE);
|
int copies = _msk->get_int(F_NCOPIE);
|
||||||
if (copies <= 0 && is_definitive)
|
if (copies <= 0 && is_definitive)
|
||||||
copies = tipo.ncopie();
|
copies = tipo.ncopie();
|
||||||
if (copies <= 0)
|
if (copies <= 0 || send_mail)
|
||||||
copies = 1;
|
copies = 1;
|
||||||
|
|
||||||
TReport_doc& report = reports.get(profilo);
|
TReport_doc& report = reports.get(profilo);
|
||||||
@ -1072,7 +1083,7 @@ bool TReport_doc_app::print_loop(const TString& query, bool send_by_mail)
|
|||||||
attachment.tempdir();
|
attachment.tempdir();
|
||||||
attachment << SLASH << _anno <<'_' << _codnum << '_' << _ndoc;
|
attachment << SLASH << _anno <<'_' << _codnum << '_' << _ndoc;
|
||||||
attachment.ext("pdf");
|
attachment.ext("pdf");
|
||||||
mail_book->send_mail(attachment);
|
mail_book->send_mail(attachment, mode == out_signed_mail);
|
||||||
remove(attachment);
|
remove(attachment);
|
||||||
}
|
}
|
||||||
delete mail_book;
|
delete mail_book;
|
||||||
@ -1083,39 +1094,77 @@ bool TReport_doc_app::print_loop(const TString& query, bool send_by_mail)
|
|||||||
if (book.pages() > 0)
|
if (book.pages() > 0)
|
||||||
{
|
{
|
||||||
if (docs > 1)
|
if (docs > 1)
|
||||||
set_next_pdf(0, "", 0L, ' ', 0L); // Disabilita archiviazione PDF
|
set_next_pdf(0, "", 0L, ' ', 0L); //spegne l'archiviazione nell'esportazione;non si possono archiviare più docs in uno!!!
|
||||||
book.add(log);
|
book.add(log);
|
||||||
book.print_or_preview();
|
switch (mode)
|
||||||
|
{
|
||||||
|
case out_preview: book.preview(); break;
|
||||||
|
case out_pdf:
|
||||||
|
case out_signed_pdf:
|
||||||
|
{
|
||||||
|
TFilename pdf;
|
||||||
|
pdf.tempdir();
|
||||||
|
pdf << SLASH << _anno <<'_' << _codnum << '_' << _ndoc;
|
||||||
|
pdf.ext("pdf");
|
||||||
|
|
||||||
|
if (book.export_pdf(pdf, mode == out_signed_pdf))
|
||||||
|
xvt_sys_goto_url(pdf, "open");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: book.print(); break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TReport_doc_app::print_selection(bool send_by_mail)
|
void TReport_doc_app::print_selection(TOutput_mode mode)
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
query << "USE " << LF_DOC;
|
query << "USE " << LF_DOC;
|
||||||
add_filter(query, true);
|
add_filter(query, true);
|
||||||
add_filter(query, false);
|
add_filter(query, false);
|
||||||
print_loop(query, send_by_mail);
|
print_loop(query, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Allah!!
|
||||||
|
TReport_doc_app::TOutput_mode TReport_doc_app::key2mode(KEY k) const
|
||||||
|
{
|
||||||
|
TOutput_mode mode = out_print;
|
||||||
|
switch (k)
|
||||||
|
{
|
||||||
|
case 'A': mode = out_preview; break;
|
||||||
|
case 'E': mode = out_mail; break;
|
||||||
|
case 'e': mode = out_signed_mail; break;
|
||||||
|
case 'P': mode = out_pdf; break;
|
||||||
|
case 'p': mode = out_signed_pdf; break;
|
||||||
|
default : mode = out_print; break;
|
||||||
|
}
|
||||||
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TReport_doc_app::main_loop()
|
void TReport_doc_app::main_loop()
|
||||||
{
|
{
|
||||||
const int a = argc();
|
const int a = argc();
|
||||||
|
|
||||||
if (a > 2)
|
if (a > 2)
|
||||||
_msk->set(F_CODNUM, argv(2)); // Stampa da menu con numerazione imposta
|
_msk->set(F_CODNUM, argv(2)); // Stampa da menu con numerazione imposta
|
||||||
|
|
||||||
if (a > 6) // Stampa da riga di comando
|
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_DATA_O_NUM, "N"); // Stampa per numero documento
|
||||||
_msk->set(F_ANNO, argv(3));
|
_msk->set(F_ANNO, argv(3));
|
||||||
_msk->set(F_PROVV, argv(4));
|
_msk->set(F_PROVV, argv(4));
|
||||||
_msk->set(F_DA_NDOC, argv(5));
|
_msk->set(F_DA_NDOC, argv(5));
|
||||||
_msk->set(F_A_NDOC, argv(6));
|
_msk->set(F_A_NDOC, argv(6));
|
||||||
|
if (a > 7)
|
||||||
|
mode = key2mode(argv(7)[0]); // modo di stampa
|
||||||
if (a > 8)
|
if (a > 8)
|
||||||
_msk->set(F_NCOPIE, argv(8)); // Numero copie
|
_msk->set(F_NCOPIE, argv(8)); // Numero copie
|
||||||
print_selection();
|
|
||||||
|
print_selection(mode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1124,8 +1173,7 @@ void TReport_doc_app::main_loop()
|
|||||||
const KEY k = _msk->run();
|
const KEY k = _msk->run();
|
||||||
if (k == K_QUIT)
|
if (k == K_QUIT)
|
||||||
break;
|
break;
|
||||||
const bool mail = k != K_ENTER;
|
print_selection(key2mode(k));
|
||||||
print_selection(mail);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user