diff --git a/src/cg/cg0800.cpp b/src/cg/cg0800.cpp index c2a009faa..193462dd6 100644 --- a/src/cg/cg0800.cpp +++ b/src/cg/cg0800.cpp @@ -52,14 +52,98 @@ bool TRiepilogoIVA_mask::on_field_event(TOperable_field& o, TField_event e, long class TRiepilogoIVA_app : public TSkeleton_application { protected: + void execute_print(TAutomask & m, TReport & rep, KEY k); virtual void main_loop(); }; +void TRiepilogoIVA_app::execute_print(TAutomask & m, TReport & rep, KEY k) +{ + TReport_book b; + export_type type = _export_printer; + + switch (k) + { + case K_ENTER: + case K_PRINT: + type = _export_printer; + break; + case K_EXCEL: + type = _export_excel; + break; + case K_EXPORT: + type = _export_generic; + break; + case K_PDF: + type = _export_pdf; + break; + case K_TEXT: + type = _export_text; + break; + break; + case K_VISUALIZE: + type = _export_visualize; + break; + default: + type = _export_user; + break; + } + + TFilename name = m.get(DLG_OUTPUTD); + TString fname = m.get(DLG_OUTPUTF); + + if (name.blank()) + name.tempdir(); + if (!dexist(name)) + if (!make_dir(name)) + { + error_box(FR("Non posso creare %s uso il direttorio temporaneo"), (const char *)name); + name.cut(0); + name.tempdir(); + } + if (fname.blank()) + { + TString t(20); + + fname = "cg0800"; + _strtime_s(t.get_buffer(), t.size()); + t.strip(":"); + fname << '_' << today.date2ansi() << '_' << t; + } + name.add(fname); + rep.set_export_sections(type); + b.add(rep, type); + + switch (type) + { + case _export_printer: + b.print_or_preview(); + break; + case _export_generic: + b.esporta(); + break; + case _export_excel: + b.export_excel(name, false, true, false, '\t'); + break; + case _export_pdf: + b.export_pdf(name, false, true); + break; + case _export_text: + b.export_text(name, 0, false, true); + break; + case _export_visualize: + b.preview(); + break; + default: + break; + } +} + void TRiepilogoIVA_app::main_loop() { TRiepilogoIVA_mask m; + KEY k; - while (m.run() != K_QUIT) + while ((k = m.run()) != K_QUIT) { TRiepilogoIVA_report rep; TFilename repname = m.get(DLG_REPORT); @@ -68,36 +152,36 @@ void TRiepilogoIVA_app::main_loop() if (repname.blank()) repname = "cg0800a"; - rep.load(repname); - if (recset != NULL) - { - int anno = m.get_int(F_ANNO); - int damese = m.get_int(F_DAMESE); - int amese = m.get_int(F_AMESE); + rep.load(repname); + if (recset != nullptr) + { + int anno = m.get_int(F_ANNO); + int damese = m.get_int(F_DAMESE); + int amese = m.get_int(F_AMESE); - recset->freeze(); - recset->set_anno(anno); + recset->freeze(); + recset->set_anno(anno); - if (damese == 13) - { - damese = 1; - amese = 12; - recset->set_annual(true); - } - recset->set_da_mese(damese); - recset->set_a_mese(amese); + if (damese == 13) + { + damese = 1; + amese = 12; + recset->set_annual(true); + } + recset->set_da_mese(damese); + recset->set_a_mese(amese); - const TDate da(1, damese, anno); - TDate a(1, amese, anno); + const TDate da(1, damese, anno); + TDate a(1, amese, anno); - if (m.get_long(F_DAMESE) == 13) - a.addyear(); - a.set_end_month(); - recset->set_from(da); - recset->set_to(a); - rep.set_recordset(recset); - rep.print_or_preview(); - } + if (m.get_long(F_DAMESE) == 13) + a.addyear(); + a.set_end_month(); + recset->set_from(da); + recset->set_to(a); + rep.set_recordset(recset); + execute_print(m, rep, k); + } } } diff --git a/src/cg/cg0800a.uml b/src/cg/cg0800a.uml index f5314613f..3b816a4ca 100644 --- a/src/cg/cg0800a.uml +++ b/src/cg/cg0800a.uml @@ -1,6 +1,8 @@ #include "cg0800a.h" -#define ALL_EXPORT +#define EXPORT_EXCEL +#define EXPORT_PDF +#define EXPORT_TEXT #define REPORT #define CLASS_NAME "cg0800a" diff --git a/src/cg/cg0900.cpp b/src/cg/cg0900.cpp index eac8137a3..38f199569 100644 --- a/src/cg/cg0900.cpp +++ b/src/cg/cg0900.cpp @@ -52,14 +52,99 @@ bool TRiepilogoIVAatt_mask::on_field_event(TOperable_field& o, TField_event e, l class TRiepilogoIVAatt_app : public TSkeleton_application { protected: + void execute_print(TAutomask & m, TReport & rep, KEY k); virtual void main_loop(); }; +void TRiepilogoIVAatt_app::execute_print(TAutomask & m, TReport & rep, KEY k) +{ + TReport_book b; + export_type type = _export_printer; + + switch (k) + { + case K_ENTER: + case K_PRINT: + type = _export_printer; + break; + case K_EXCEL: + type = _export_excel; + rep.section('B', 1).find_field(90)->show(true); + break; + case K_EXPORT: + type = _export_generic; + break; + case K_PDF: + type = _export_pdf; + break; + case K_TEXT: + type = _export_text; + break; + break; + case K_VISUALIZE: + type = _export_visualize; + break; + default: + type = _export_user; + break; + } + + TFilename name = m.get(DLG_OUTPUTD); + TString fname = m.get(DLG_OUTPUTF); + + if (name.blank()) + name.tempdir(); + if (!dexist(name)) + if (!make_dir(name)) + { + error_box(FR("Non posso creare %s uso il direttorio temporaneo"), (const char *)name); + name.cut(0); + name.tempdir(); + } + if (fname.blank()) + { + TString t(20); + + fname = "cg0800"; + _strtime_s(t.get_buffer(), t.size()); + t.strip(":"); + fname << '_' << today.date2ansi() << '_' << t; + } + name.add(fname); + rep.set_export_sections(type); + b.add(rep, type); + + switch (type) + { + case _export_printer: + b.print_or_preview(); + break; + case _export_generic: + b.esporta(); + break; + case _export_excel: + b.export_excel(name, false, true, false, '\t'); + break; + case _export_pdf: + b.export_pdf(name, false, true); + break; + case _export_text: + b.export_text(name, 0, false, true); + break; + case _export_visualize: + b.preview(); + break; + default: + break; + } +} + void TRiepilogoIVAatt_app::main_loop() { TRiepilogoIVAatt_mask m; + KEY k; - while (m.run() != K_QUIT) + while ((k = m.run()) != K_QUIT) { TRiepilogoIVA_report rep; TFilename repname = m.get(DLG_REPORT); @@ -69,7 +154,7 @@ void TRiepilogoIVAatt_app::main_loop() repname = "cg0900a"; rep.load(repname); - if (recset != NULL) + if (recset != nullptr) { int anno = m.get_int(F_ANNO); int damese = m.get_int(F_DAMESE); @@ -112,8 +197,7 @@ void TRiepilogoIVAatt_app::main_loop() f1->field(i).hide(); } } - - rep.print_or_preview(); + execute_print(m, rep, k); } } } diff --git a/src/cg/cg0900a.rep b/src/cg/cg0900a.rep index 61522706d..682c1b646 100644 --- a/src/cg/cg0900a.rep +++ b/src/cg/cg0900a.rep @@ -155,6 +155,9 @@ #THIS @ #F2.109 +! +