From 1cc0faf46828a379582c420bc4d85f3a32af699b Mon Sep 17 00:00:00 2001 From: smen Date: Mon, 8 Nov 2021 10:25:06 +0100 Subject: [PATCH] Revert "Da controllare" This reverts commit 913ee9f0621677621798efce43fc25a13c3fa799. --- src/ba/ba0100.cpp | 14 +- src/ba/ba1100.cpp | 84 +- src/ba/ba1100.h | 70 ++ src/ba/ba1101.cpp | 10 +- src/ba/ba2900.cpp | 6 +- src/ba/ba3400.cpp | 14 +- src/ba/ba3400a.uml | 2 +- src/ba/ba7100.cpp | 5 +- src/ba/batbiva.uml | 15 +- src/ca/ca2100.cpp | 3 +- src/ca/ca2300.cpp | 5 +- src/ca/ca3100.cpp | 234 +++-- src/ca/ca3100.h | 3 +- src/ca/ca3100.uml | 48 +- src/ca/ca3100a.rep | 150 ++-- src/ca/ca3100b.rep | 156 ++-- src/ca/ca3200.cpp | 283 +++--- src/ca/ca3200.h | 20 +- src/ca/ca3200.uml | 51 +- src/ca/ca3200a.rep | 164 ++-- src/ca/ca3200b.rep | 164 ++-- src/ca/ca3300.cpp | 242 ++---- src/ca/ca3300.h | 3 +- src/ca/ca3300.uml | 48 +- src/ca/ca3300a.rep | 295 +++---- src/ca/ca3300b.rep | 197 ++--- src/ca/ca3300c.rep | 142 ++- src/ca/ca3600.cpp | 8 +- src/ca/ca3600.h | 3 +- src/ca/ca3600.uml | 48 +- src/ca/ca3600a.rep | 2 +- src/ca/ca3700.cpp | 14 +- src/ca/ca3700.h | 3 +- src/ca/ca3700.uml | 68 +- src/ca/ca3700a.rep | 2 +- src/ca/ca3800.cpp | 218 +++-- src/ca/ca3800.uml | 74 +- src/ca/ca3800a.rep | 2 +- src/ca/ca3800as.rep | 2 +- src/ca/ca3800b.rep | 2 +- src/ca/ca3800bs.rep | 2 +- src/ca/ca3800c.rep | 2 +- src/ca/ca3800cs.rep | 2 +- src/ca/ca3883.cpp | 19 +- src/ca/ca3883.h | 3 +- src/ca/ca3883a.h | 4 +- src/ca/ca3900.cpp | 8 +- src/ca/ca3900.uml | 44 +- src/ca/ca3900a.rep | 2 +- src/ca/calib01.cpp | 16 +- src/ca/calib01.h | 2 +- src/ca/calib02.cpp | 39 +- src/ca/calib02.h | 8 +- src/ca/f151.dir | 2 +- src/ca/f151.trr | 7 +- src/ca/saldana.h | 1 + src/ce/ce1300.cpp | 4 +- src/ce/ce2100.cpp | 1 + src/ce/ce3900.cpp | 31 +- src/cg/cg0800a.uml | 1 + src/cg/cg2100.cpp | 47 +- src/cg/cg2100t.uml | 2 + src/cg/cg2102.cpp | 521 ++++++----- src/cg/cg2102.h | 180 ++-- src/cg/cg2104.cpp | 11 +- src/cg/cg2105.cpp | 9 +- src/cg/cg2300.cpp | 234 ++--- src/cg/cg2300a.uml | 2 +- src/cg/cg3100.cpp | 71 +- src/cg/cg3300.cpp | 16 +- src/cg/cg3700.cpp | 22 +- src/cg/cg4100.cpp | 21 +- src/cg/cg4300.cpp | 2 - src/cg/cg4300.h | 4 +- src/cg/cg4301.cpp | 88 +- src/cg/cg4302.cpp | 8 +- src/cg/cg4303.cpp | 44 +- src/cg/cg4304.cpp | 51 +- src/cg/cg5300.cpp | 2 +- src/cg/cg7600.cpp | 47 +- src/cg/cg7700.cpp | 4 +- src/cg/cglib.h | 74 +- src/cg/cglib01.h | 1 + src/cg/cgpim.cpp | 6 +- src/cm/cm1100.cpp | 2 +- src/crpa/crpa0.cpp | 2 +- src/db/db0500.cpp | 60 +- src/db/db0500b.uml | 14 +- src/db/db1100.cpp | 2 +- src/db/db1300.cpp | 8 +- src/db/dbtblav.h | 44 +- src/ef/ef0100.cpp | 17 + src/f1/f1lib.cpp | 283 +++--- src/f1/f1lib.h | 64 +- src/f9/f9lib01.cpp | 2 +- src/f9/f9lib02.cpp | 4 +- ...del_tracciato_FatturaPA_versione_1.2.1.xls | Bin 186880 -> 186880 bytes src/fp/fp0300.cpp | 13 +- src/fp/fp0400.cpp | 5 +- src/fp/fplib05.cpp | 3 +- src/gfm/median.c | 2 +- src/gv/gvlib.cpp | 1 - src/ha/ha1300.cpp | 2 +- src/ha/hacnv300.cpp | 2 +- src/ic/ic0100f.rep | 4 +- src/ic/ic0200.cpp | 2 +- src/ic/ic0200p.rep | 145 ++-- src/include/applicat.cpp | 63 +- src/include/applicat.h | 8 +- src/include/aprintbar.h | 34 +- src/include/assoc.cpp | 356 ++++++++ src/include/assoc.h | 160 +++- src/include/brwbut.cpp | 35 +- src/include/brwbut.h | 3 - src/include/defmask.h | 2 - src/include/filebar.h | 10 +- src/include/files.cpp | 105 +++ src/include/files.h | 24 +- src/include/isam.cpp | 412 ++++++++- src/include/isam.h | 31 +- src/include/msksheet.cpp | 6 +- src/include/msksheet.h | 16 +- src/include/recset.h | 1 - src/include/relapp.cpp | 394 ++++++++- src/include/relapp.h | 30 + src/include/repapp.cpp | 21 +- src/include/repapp.h | 16 +- src/include/report.cpp | 58 ++ src/include/report.h | 8 +- src/include/reprint.cpp | 54 +- src/include/reprint.h | 2 +- src/include/strings.h | 4 +- src/include/tabapp.cpp | 2 + src/include/tsdb.cpp | 30 +- src/include/tsdb.h | 33 +- src/include/winsock.h | 4 + src/lv/lv2500.cpp | 47 +- src/lv/lv3100.cpp | 2 +- src/lv/lv4200.cpp | 5 +- src/lv/lv4500.cpp | 3 +- src/mg/mg0100.cpp | 1 + src/np/np0200.cpp | 27 +- src/or/orlib01.cpp | 2 +- src/ps/CRPA/00004a/custom/crpftacq.msk | 14 + src/ps/CRPA/00004a/custom/crpparc.msk | 14 + src/ps/CRPA/00004a/custom/crprim.msk | 14 + src/ps/CRPA/00004a/custom/fatacq.msk | 14 + src/ps/CRPA/00005a/custom/crpftacq.msk | 14 + src/ps/CRPA/00005a/custom/crpparc.msk | 14 + src/ps/CRPA/00005a/custom/crprim.msk | 14 + src/ps/CRPA/00005a/custom/fatacq.msk | 14 + src/ps/CRPA/00006a/custom/crpftacq.msk | 14 + src/ps/CRPA/00006a/custom/crpparc.msk | 14 + src/ps/CRPA/00006a/custom/crprim.msk | 14 + src/ps/CRPA/00006a/custom/fatacq.msk | 14 + src/ps/CRPA/CUSTOM/VERIGA3.MSK | 18 + src/ps/CRPA/CUSTOM/VERIGI1.MSK | 18 + src/ps/CRPA/CUSTOM/VERIGI5.MSK | 18 + src/ps/CRPA/CUSTOM/crpaordc.msk | 2 +- src/ps/CRPA/CUSTOM/crpparc.msk | 2 +- src/ps/CRPA/CUSTOM/crprim.ini | 2 - src/ps/CRPA/CUSTOM/crprim.msk | 2 +- src/ps/CRPA/CUSTOM/fatacq.msk | 2 +- src/ps/CRPA/CUSTOM/fatturac.msk | 2 +- src/ps/CRPA/CUSTOM/incf.msk | 14 + src/ps/CRPA/CUSTOM/orfm.msk | 14 + src/ps/CRPA/CUSTOM/parc.msk | 14 + src/ps/CRPA/CUSTOM/rim.msk | 14 + src/ps/CRPA/CUSTOM/verig01.msk | 7 +- src/ps/CRPA/CUSTOM/verig06.msk | 7 +- src/ps/CRPA/CUSTOM/verigA3.ini | 4 - src/ps/CRPA/CUSTOM/verigI6.msk | 18 + src/ps/CRPA/CUSTOM/veriga4.msk | 18 + src/ps/Dinamica/CUSTOM/crpaorcv.msk | 14 + src/ps/Dinamica/CUSTOM/crpaordc.msk | 14 + src/ps/Dinamica/CUSTOM/crpaordf.msk | 18 +- src/ps/Dinamica/CUSTOM/crpaorfv.msk | 18 +- src/ps/Dinamica/CUSTOM/crpbol.msk | 14 + src/ps/Dinamica/CUSTOM/crpftacq.msk | 14 + src/ps/Dinamica/CUSTOM/crporfm.msk | 16 +- src/ps/Dinamica/CUSTOM/crpparc.msk | 14 + src/ps/Dinamica/CUSTOM/crprim.msk | 14 + src/ps/Dinamica/CUSTOM/dinfdrv.msk | 14 + src/ps/Dinamica/CUSTOM/fatacq.msk | 14 + src/ps/Dinamica/CUSTOM/fatclval.msk | 14 + src/ps/Dinamica/CUSTOM/fatturac.msk | 14 + src/ps/Dinamica/CUSTOM/ftacqv.msk | 14 + src/ps/Dinamica/CUSTOM/incf.msk | 14 + src/ps/Dinamica/CUSTOM/orfm.msk | 14 + src/ps/Dinamica/CUSTOM/parc.msk | 14 + src/ps/Dinamica/CUSTOM/rim.msk | 14 + src/ps/Dinamica/CUSTOM/verig06.msk | 7 +- src/ps/Dinamica/CUSTOM/verigI2.msk | 7 +- src/ps/Dinamica/CUSTOM/verigI3.msk | 7 +- src/ps/Dinamica/CUSTOM/verigI4.msk | 7 +- src/ps/Dinamica/CUSTOM/verigI5.msk | 7 +- src/ps/Dinamica/CUSTOM/verigI6.msk | 7 +- src/ps/Dinamica/CUSTOM/veriga4.msk | 7 +- src/ps/Dinamica/CUSTOM/verigi1.msk | 7 +- src/ps/ps0330100.cpp | 4 - src/ps/ps0330200.cpp | 3 - src/ps/ps0398100.cpp | 3 - src/ri/rilib01.cpp | 22 +- src/sc/sc0100.cpp | 2 + src/sc/sc1400.cpp | 3 +- src/sc/scselect.cpp | 2 - src/sc/scselect.h | 4 +- src/sv/sv0100.cpp | 11 +- src/sv/sv1200.cpp | 814 +++++++++--------- src/sv/sv1200a.h | 2 +- src/sv/sv1200a.uml | 6 - src/sv/sv1200b.uml | 4 +- src/tc/tc9100.cpp | 1 + src/tf/tfutility.cpp | 2 +- src/ve/ve1300.cpp | 2 +- src/xi/xi.h | 8 + src/xvaga/xvaga.cpp | 2 +- src/xvtdb/xvtdb.cpp | 8 +- 218 files changed, 5359 insertions(+), 3435 deletions(-) diff --git a/src/ba/ba0100.cpp b/src/ba/ba0100.cpp index a068cb241..da5291b49 100755 --- a/src/ba/ba0100.cpp +++ b/src/ba/ba0100.cpp @@ -1512,6 +1512,18 @@ bool TMenu_application::dongle_update_needed() const bool TMenu_application::user_create() { + TFilename dir; + + if (xvt_sys_get_env("TEMP", dir.get_buffer(), dir.size())) + if (!dexist(dir)) + return error_box(FR("La cartella temporanea %s definita dalla variabile d'ambiente TEMP non esiste."), (const char *)dir); + if (xvt_sys_get_env("TMP", dir.get_buffer(), dir.size())) + if (!dexist(dir)) + return error_box(FR("La cartella temporanea %s definita dalla variabile d'ambiente TMP non esiste."), (const char *)dir); + dir.cut(0); + dir.tempdir(); + if (!dexist(dir)) + return error_box(FR("La cartella temporanea %s definita in campo.ini non esiste."), (const char *)dir); disable_menu_item(M_FILE_PRINT); // Questa voce di menu non serve per ora disable_menu_item(M_FILE_PREVIEW); // Figuriamoci questa @@ -1575,7 +1587,7 @@ bool TMenu_application::user_create() _menu.read(menu); update_preferred_tree(); } - + return true; } diff --git a/src/ba/ba1100.cpp b/src/ba/ba1100.cpp index 6c503a8a1..d336756b7 100755 --- a/src/ba/ba1100.cpp +++ b/src/ba/ba1100.cpp @@ -13,11 +13,9 @@ #include "ba1100.h" #include "ba1103.h" -#include #include -#include +#include #include -#include #include #include @@ -35,59 +33,6 @@ #define Dir_file "dir.gen" #define Trc_file "trc.gen" -class TManutenzione_app : public TSkeleton_application -{ - TDir_sheet* _browse; - TArray _dirs; - TArray _recs; - TMask* _mask; - long _firm; - long _level; - long _history_firm; - TRec_sheet* _rec; - TLog_report* _log; - bool _print_log; - - bool _superprassi; - -protected: - virtual void main_loop(); - virtual bool create () ; - virtual bool destroy(); - void insert_riga(long, TToken_string&); - void edit_riga(long, TToken_string&); - void edit_riga(const TString&); - void delete_riga(long); - virtual bool extended_firm() const { return true; } - - bool set_converting(); - bool reset_converting(); - - bool try_to_recover(TSystemisamfile& f, int err); - void update(); - void update_dir(); - void convert_dir(); - virtual void print(); - virtual void do_print(TPrinter & p, TRec_sheet & r); - const char* dumpfilename(const FileDes& dep) const; - void load_des(); - void open_history(); - void put_history(const char* firm); - void close_history(); - void dump_trc(const char * dir, const bool des_too, const long modules); - void repair_file(int i); - void save_file(const char * file); - - void open_log(); - void write_log(const char* line, const int severity = 0); - void close_log(); - - bool moveable_file(int file) const; -public: - - TManutenzione_app(); -}; - HIDDEN bool browse_file_handler(TMask_field& f, KEY k) { if (k == K_F9) @@ -318,12 +263,12 @@ void TManutenzione_app::print() bool TManutenzione_app::create() // initvar e arrmask { - _firm = get_firm(); - TString sw(argc()>2 ? argv(2) : ""); // Posso fare le operazione avanzate solo se sono ammistratore // e NON mi trovo su di una installazione di tipo client - _superprassi = user() == ::dongle().administrator() && !::dongle().demo(); + + xvt_vobj_show(TASK_WIN); + _superprassi = user() == ::dongle().administrator() && !::dongle().demo(); if (_superprassi) { const int type = ini_get_int(CONFIG_INSTALL, "Main", "Type"); @@ -361,7 +306,8 @@ bool TManutenzione_app::create() // initvar e arrmask else if (!::dongle().demo() && !set_firm()) return false; - load_des(); + _firm = atol(prefix().name()); + load_des(); _mask = new TMask("ba1100a"); _browse = new TDir_sheet(TR("Manutenzione file di sistema"), _superprassi); @@ -384,6 +330,24 @@ bool TManutenzione_app::destroy() return TApplication::destroy(); } +void TManutenzione_app::show_log() +{ + if (db_log()) + { + if (admin()) + { + TLog_mask m; + + m.run(); + } + else + message_box(TR("Il log delle transazioni è visualizzabile dall'amministratore")); + } + else + message_box(TR("Il log delle transazioni è disattivato")); +} + + void TManutenzione_app::open_log() { _print_log = false; diff --git a/src/ba/ba1100.h b/src/ba/ba1100.h index ff79ff996..443cc783a 100755 --- a/src/ba/ba1100.h +++ b/src/ba/ba1100.h @@ -1,6 +1,10 @@ #ifndef __BA1100_H #define __BA1100_H +#ifndef __APPLICAT_H +#include +#endif + #ifndef __CONFIG_H #include #endif @@ -17,6 +21,14 @@ class TMask_field; #endif +#ifndef __PRINTER_H +#include +#endif + +#ifndef __REPUTILS_H +#include +#endif + #include "ba1100a.h" /////////////////////////////////////////////////////////// @@ -92,4 +104,62 @@ public: virtual ~TEdit_file() {} }; +class TManutenzione_app : public TSkeleton_application +{ + TDir_sheet* _browse; + TArray _dirs; + TArray _recs; + TMask* _mask; + long _firm; + long _level; + long _history_firm; + TRec_sheet* _rec; + TLog_report* _log; + bool _print_log; + + bool _superprassi; + +protected: + virtual void main_loop(); + virtual bool create(); + virtual bool destroy(); + void insert_riga(long, TToken_string&); + void edit_riga(long, TToken_string&); + void edit_riga(const TString&); + void delete_riga(long); + virtual bool extended_firm() const { return true; } + + bool set_converting(); + bool reset_converting(); + + bool try_to_recover(TSystemisamfile& f, int err); + void update(); + void update_dir(); + void convert_dir(); + virtual void print(); + virtual void do_print(TPrinter & p, TRec_sheet & r); + const char* dumpfilename(const FileDes& dep) const; + void load_des(); + void open_history(); + void put_history(const char* firm); + void close_history(); + void dump_trc(const char * dir, const bool des_too, const long modules); + void repair_file(int i); + void save_file(const char * file); + + virtual void show_log(); + + void open_log(); + void write_log(const char* line, const int severity = 0); + void close_log(); + + bool moveable_file(int file) const; +public: + long get_firm() const { return _firm; } + + TManutenzione_app(); +}; + +inline TManutenzione_app & app() { return (TManutenzione_app &)main_app(); } + #endif diff --git a/src/ba/ba1101.cpp b/src/ba/ba1101.cpp index f413898ce..82863f895 100755 --- a/src/ba/ba1101.cpp +++ b/src/ba/ba1101.cpp @@ -275,9 +275,17 @@ void TRec_sheet::edit() } f2.set_notify(key_notify); f2.set_append(FALSE); + int nkeys = _rec.keys(); - for (i = 0; i < nkeys; i++) f2.row(i) = _rec.keydef(i); + + for (i = 0; i < nkeys; i++) + f2.row(i) = _rec.keydef(i); f2.disable_cell(0, 1); + + const bool enable_save = (_dir.is_com() && app().get_firm() == 0) || + (_dir.is_firm() && app().get_firm() > 0); + + _mask->enable(DLG_SAVEREC, enable_save); while (true) { f1.force_update(0); // Non togliere, serve per fare l'update della descrizione quando si fa l'import!! diff --git a/src/ba/ba2900.cpp b/src/ba/ba2900.cpp index faffa4b7b..ab54b52bc 100644 --- a/src/ba/ba2900.cpp +++ b/src/ba/ba2900.cpp @@ -136,7 +136,7 @@ protected: bool dir_gen() const; bool trc_gen() const; bool export_manager(const TString generalErrors) const; - bool show_log(); + bool show_export_log(); void log(int severity, const char* msg); public: @@ -980,7 +980,7 @@ bool TMSSQLExport_app::export_manager(TString generalErrors) const return true; } -bool TMSSQLExport_app::show_log() +bool TMSSQLExport_app::show_export_log() { if (_log) { @@ -1089,7 +1089,7 @@ void TMSSQLExport_app::main_loop() } message_box("Migrazione effettuata correttamente!"); } while (loop); - show_log(); + show_export_log(); } else message_box("Fallita connessione"); diff --git a/src/ba/ba3400.cpp b/src/ba/ba3400.cpp index 62cccd6b1..14a4dd375 100755 --- a/src/ba/ba3400.cpp +++ b/src/ba/ba3400.cpp @@ -52,24 +52,26 @@ bool TTestrel_application::user_destroy() // Testmask /////////////////////////////////////////////////////////// -class TTest_application : public TSkeleton_application +class TTest_application : public TApplication { const char* _maskname; protected: - void main_loop(); + bool create() { return menu(0); } + bool destroy() { return TRUE; } + bool menu(MENU_TAG); public: TTest_application(const char* name) : _maskname(name) {} }; -void TTest_application::main_loop() +bool TTest_application::menu(MENU_TAG) { if (*_maskname) { TMask m(_maskname); - - while (m.run() == K_ENTER); + KEY k = m.run(); + if (k == K_QUIT) stop_run(); } else { @@ -81,6 +83,8 @@ void TTest_application::main_loop() m.run(); } } + + return FALSE; } /////////////////////////////////////////////////////////// diff --git a/src/ba/ba3400a.uml b/src/ba/ba3400a.uml index 7ef31e31b..b056d73fb 100755 --- a/src/ba/ba3400a.uml +++ b/src/ba/ba3400a.uml @@ -4,7 +4,7 @@ PAGE "Richiesta" -1 -1 76 12 STRING F_NOME 50 BEGIN - PROMPT 3 3 "Maschera " + PROMPT 3 3 "Nome maschera" END BUTTON DLG_OK 10 2 diff --git a/src/ba/ba7100.cpp b/src/ba/ba7100.cpp index a166a511e..ffd601aa6 100755 --- a/src/ba/ba7100.cpp +++ b/src/ba/ba7100.cpp @@ -1742,6 +1742,7 @@ class TMailer : public TSkeleton_application bool _start_full_screen; protected: + virtual bool task_win_iconized() const { return !_start_full_screen && xvt_win_is_taskbar_visible(); } virtual bool create(); virtual void main_loop(); }; @@ -1767,7 +1768,7 @@ void TMailer::main_loop() WINDOW tray = xvt_trayicon_create(TASK_WIN, 9013, appname); // CampoServer.ico open_files(LF_USER, 0); - if (!_start_full_screen && xvt_win_is_taskbar_visible()) +/* if (!_start_full_screen && xvt_win_is_taskbar_visible()) { if (tray != NULL_WIN) { @@ -1778,7 +1779,7 @@ void TMailer::main_loop() if (xvt_rect_get_width(&rct_postman) >= xvt_rect_get_width(&rct_screen) - 64) xvt_vobj_set_visible(TASK_WIN, FALSE); } - } + } */ TMailer_mask mm; diff --git a/src/ba/batbiva.uml b/src/ba/batbiva.uml index ddaacf0b2..1b74f4c28 100755 --- a/src/ba/batbiva.uml +++ b/src/ba/batbiva.uml @@ -46,7 +46,7 @@ BEGIN WARNING "Manca la descrizione" END -LIST LST_TABIVA_S1 2 20 +LIST LST_TABIVA_S1 2 28 BEGIN PROMPT 2 2 "Tipo " FIELD S1 @@ -70,11 +70,15 @@ BEGIN MESSAGE CLEAR,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0 MESSAGE ENABLE,FLD_TABIVA_I3|ENABLE,FLD_TABIVA_I4|SHOW,CHK_TABIVA_B5 MESSAGE ENABLE,FLD_TABIVA_S6 -END + ITEM "RC|Reverse Charge (vendite)" + MESSAGE CLEAR,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0 + MESSAGE CLEAR,FLD_TABIVA_I3|CLEAR,FLD_TABIVA_I4|HIDE,CHK_TABIVA_B5 + MESSAGE ENABLE,FLD_TABIVA_S6 + END STRING FLD_TABIVA_S6 4 BEGIN - PROMPT 39 2 "C.IVA a cui ventilare " + PROMPT 44 2 "C.IVA a cui ventilare " FLAGS "U" FIELD S6 COPY USE FLD_TABIVA_CODTAB @@ -146,7 +150,7 @@ END BOOLEAN CHK_TABIVA_B5 BEGIN - PROMPT 30 5 "Escluso dal calcolo dei bolli sufatture esenti" + PROMPT 30 5 "Escluso dal calcolo dei bolli su fatture esenti" FIELD B5 END @@ -188,6 +192,8 @@ BEGIN INPUT FLD_TABIVA_I3 OUTPUT FLD_TABIVA_I3 ITEM " |Nessuno" + ITEM "14|Passaggi interni" + ITEM "16|Cessioni beni ammortizzabili" ITEM "20|Operazioni non imponibili (comma 1, artt.8, 8bis e 9)" ITEM "21|Operazioni non imponibili a seguito di dich. d'intento" ITEM "22|Altre operazioni non imponibili" @@ -201,6 +207,7 @@ BEGIN ITEM "36|Cessione di microprocessori" ITEM "37|Prestazioni comparto edile e settori connessi" ITEM "38|Operazioni settore energetico" + ITEM "39|Reverse charge altri casi" ITEM "B1|Ammontare op. es. escluse da nr. 1 a 9 e 11 art. 10" ITEM "B2|Ammontare op. es. di cui al nr. 11 art. 10" ITEM "B3|Ammontare op. es. di cui ai nr. 1 a 9 art. 10" diff --git a/src/ca/ca2100.cpp b/src/ca/ca2100.cpp index feb491c68..9ccc1082e 100755 --- a/src/ca/ca2100.cpp +++ b/src/ca/ca2100.cpp @@ -1025,7 +1025,7 @@ bool TMovanal_msk::row2imp(int r, TImporto& imp) const return !imp.is_zero(); } -const TToken_string& TMovanal_msk::rec2key(const TRectype& rec) const +const TToken_string& TMovanal_msk::rec2key(const TRectype& rec) const //qui { TToken_string& key = get_tmp_string(); key = get(F_TIPO); @@ -1127,7 +1127,6 @@ void TMovanal_msk::aggiorna_saldo_riga(int r) sld += TImporto('D', dare); } } - sld.normalize(); set(F_DARE, sld.sezione() == 'D' ? sld.valore() : ZERO); set(F_AVERE, sld.sezione() == 'A' ? sld.valore() : ZERO); diff --git a/src/ca/ca2300.cpp b/src/ca/ca2300.cpp index 027f480e4..58a8e3c89 100755 --- a/src/ca/ca2300.cpp +++ b/src/ca/ca2300.cpp @@ -50,11 +50,8 @@ bool TRic_saldi_msk::on_field_event(TOperable_field& o, TField_event e, long jol const long recset_items = recset.items(); TProgind pi(recset_items, "Ricerca movimenti che interessano l'esercizio selezionato...", true, true); - for (bool ok = recset.move_first(); ok; ok = recset.move_next()) + for (bool ok = recset.move_first(); pi.addstatus(1) && ok; ok = recset.move_next()) { - if (!pi.addstatus(1)) - break; - const TDate curr_date = recset.get(MOVANA_DATACOMP).as_date(); const TDate fcomp_date = recset.get(MOVANA_DATAFCOMP).as_date(); diff --git a/src/ca/ca3100.cpp b/src/ca/ca3100.cpp index bf36a5370..9febd1644 100755 --- a/src/ca/ca3100.cpp +++ b/src/ca/ca3100.cpp @@ -1,7 +1,6 @@ #include #include #include -#include #include #include "movana.h" @@ -20,59 +19,116 @@ class TPrint_movimenti_ca_mask : public TAnal_report_mask { protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly); + const TString& get_report_class() const; + bool test_compatible_report(); void create_page2(); int create_page2_sheet(int lf, int& y, short& dlg, bool required); - public: - virtual const TString & get_report_class() const; - TPrint_movimenti_ca_mask(); + TPrint_movimenti_ca_mask(); virtual ~TPrint_movimenti_ca_mask() {} }; -const TString & TPrint_movimenti_ca_mask::get_report_class() const +const TString& TPrint_movimenti_ca_mask::get_report_class() const { - TString classe = TAnal_report_mask::get_report_class(); - const int stp = get_int(F_TIPOSTAMPA); + TString& classe = get_tmp_string(); + classe = "ca3100"; + const int stp = get_int(F_TIPOSTAMPA); + classe << (stp == 1 ? 'a' : 'b'); // tipo di report da usare + return classe; +} - classe.cut(6); - classe << (stp == 1 ? 'a' : 'b'); // tipo di report da usare - return get_tmp_string() = classe; +bool TPrint_movimenti_ca_mask::test_compatible_report() +{ + TFilename lib = get_report_class(); + const TString& name = get(F_REPORT); + bool ok = name.not_empty(); + if (ok) + { + TReport rep; + ok = rep.load(name); + if (ok) + { + const TString& classe = rep.get_class(); + ok = classe == lib; + } + } + if (!ok) + { + set(F_REPORT, lib); + lib.ext("rep"); + ok = lib.custom_path(); + } + return ok; } bool TPrint_movimenti_ca_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { - case F_TIPOSTAMPA: - if (e == fe_modify || e == fe_init) - set_report_class(); - break; - case F_DATAINI: - case F_DATAFIN: - if (e == fe_close) + case DLG_PRINT: + if (e == fe_button) + { + main_app().print(); + return false; + } + break; + case DLG_PREVIEW: + if (e == fe_button) + { + main_app().preview(); + return false; + } + break; + case F_TIPOSTAMPA: + if (e == fe_init || e == fe_modify) + { + test_compatible_report(); //in base al tipo stampa setta i report compatibili + } + break; + case F_REPORT: + if (e == fe_button) + { + const TString8 lib = get_report_class(); + TFilename path = o.get(); + if (select_custom_file(path, "rep", lib)) + { + path = path.name(); + path.ext(""); + o.set(path); + } + } else + if (e == fe_close) + { + if (!test_compatible_report()) + return error_box(TR("Impossibile trovare un report compatibile")); + } + break; + case F_DATAINI: + case F_DATAFIN: + if (e == fe_close) + { + const TString& anno = get(F_ANNO); + if (anno.not_empty()) //se l'anno esercizio esiste... { - const TString& anno = get(F_ANNO); - if (anno.not_empty()) //se l'anno esercizio esiste... + const TRectype& esc = cache().get("ESC", anno); + const TDate datainiesc = esc.get("D0"); + const TDate datafinesc = esc.get("D1"); + if (o.empty()) { - const TRectype& esc = cache().get("ESC", anno); - const TDate datainiesc = esc.get("D0"); - const TDate datafinesc = esc.get("D1"); - if (o.empty()) - { - const TDate dataesc = o.dlg() == F_DATAINI ? datainiesc : datafinesc; - o.set(dataesc.string()); - } - else - { - const TDate d = o.get(); - if (d < datainiesc || d > datafinesc) - return error_box(TR("La data deve essere compresa nell'esercizio selezionato")); - } + const TDate dataesc = o.dlg() == F_DATAINI ? datainiesc : datafinesc; + o.set(dataesc.string()); + } + else + { + const TDate d = o.get(); + if (d < datainiesc || d > datafinesc) + return error_box(TR("La data deve essere compresa nell'esercizio selezionato")); } } - break; - default: - break; + } + break; + + default: break; } return true; } @@ -102,7 +158,7 @@ class TPrint_movimenti_ca_recordset : public TISAM_recordset char _tipomov; long _danumreg, _anumreg; TString4 _dacaus, _acaus; - TString _codcosto, _codcms, _codfas, _contsep; + TString _codcosto, _codcms, _codfas; protected: static bool mov_filter(const TRelation* rel); @@ -161,14 +217,25 @@ bool TPrint_movimenti_ca_recordset::valid_record(const TRelation& rel) const //..poi le righe (devono comparire solo le righe con cdc/cms/fsc che appaiono nello sheet) const TRectype& rmov = rel.curr(LF_RMOVANA); - if (_codcosto.full() && rmov.get(RMOVANA_CODCCOSTO).starts_with(_codcosto)) + if (_codcosto.not_empty()) + { + const TString& cos = rmov.get(RMOVANA_CODCCOSTO); + if (!cos.starts_with(_codcosto)) return false; - if (_codcms.full() && rmov.get(RMOVANA_CODCMS).starts_with(_codcms)) + } + if (_codcms.not_empty()) + { + const TString& cms = rmov.get(RMOVANA_CODCMS); + if (!cms.starts_with(_codcms)) return false; - if (_codfas.full() && rmov.get(RMOVANA_CODFASE).starts_with(_codfas)) + } + if (_codfas.not_empty()) + { + const TString& fas = rmov.get(RMOVANA_CODFASE); + if (!fas.starts_with(_codfas)) return false; - if (_contsep.full() && _contsep != mov.get(MOVANA_CONTSEP)) - return false; + } + return true; } @@ -219,7 +286,6 @@ void TPrint_movimenti_ca_recordset::set_filter(const TPrint_movimenti_ca_mask& m _acaus = msk.get(F_CAUSALEFIN); _tipomov = msk.get(F_TIPOMOV)[0]; - _contsep = msk.get(F_CONTSEP); } @@ -293,68 +359,64 @@ void TPrint_movimenti_ca_rep::set_filter(const TPrint_movimenti_ca_mask& msk, in //////////////////////////////////////////////////////// // APPLICAZIONE //////////////////////////////////////////////////////// -class TPrint_movimenti_ca : public TReport_application +class TPrint_movimenti_ca : public TSkeleton_application { - TPrint_movimenti_ca_mask * _mask; - TPrint_movimenti_ca_rep * _rep; + TPrint_movimenti_ca_mask* _mask; protected: virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM - virtual TReport & get_report(const TAutomask & m); - //virtual TTrec * get_dbase_recdesc(TReport & rep); - virtual TAutomask & get_mask(); - virtual void execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type = _export_printer); - virtual short output_id() const { return 0; } - virtual const char * output_name(const TReport & rep) const { return "listamov"; } - // @cmember Distruzione dei dati dell'utente - virtual bool user_destroy(); -public: - TPrint_movimenti_ca() : _mask(nullptr), _rep(nullptr) {} - ~TPrint_movimenti_ca() {} + void print_or_preview(const bool stampa); + virtual void print(); + virtual void preview(); + + virtual void main_loop(); }; -TReport & TPrint_movimenti_ca::get_report(const TAutomask & m) + +void TPrint_movimenti_ca::print_or_preview(const bool stampa) { - if (_rep == nullptr) - _rep = new TPrint_movimenti_ca_rep; + //costruzione della query x il report in base ai parametri della maschera + TSheet_field& sheet = _mask->sfield(F_RIGHE); + const int n_righe_sheet = sheet.items(); + //se lo sheet è vuoto aggiunge una riga vuota + if (n_righe_sheet == 0) + sheet.insert(); - TString path = _mask->get(DLG_REPORT); + //report e book + TReport_book book; //book dei report - if (path.empty()) - path = _mask->get_report_class(); - _rep->load(_mask->get(DLG_REPORT)); - return * _rep; + TPrint_movimenti_ca_rep rep; + rep.load(_mask->get(F_REPORT)); + + FOR_EACH_SHEET_ROW(sheet, r, row) + { + rep.set_filter(*_mask, r); + book.add(rep); + } + + if (stampa) + book.print(); //stampa il book dei report + else + book.preview(); //anteprima il book dei report } -TAutomask & TPrint_movimenti_ca::get_mask() +void TPrint_movimenti_ca::print() { - if (_mask == nullptr) - _mask = new TPrint_movimenti_ca_mask; - return *_mask; + print_or_preview(true); } -void TPrint_movimenti_ca::execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type) +void TPrint_movimenti_ca::preview() { - //costruzione della query x il report in base ai parametri della maschera - TSheet_field & sheet = mask.sfield(F_RIGHE); - const int n_righe_sheet = sheet.items(); - - //se lo sheet è vuoto aggiunge una riga vuota - if (n_righe_sheet == 0) - sheet.insert(); - FOR_EACH_SHEET_ROW(sheet, r, row) - { - ((TPrint_movimenti_ca_rep &) rep).set_filter((TPrint_movimenti_ca_mask &) mask, r); - book.add(rep); - } + print_or_preview(false); } -bool TPrint_movimenti_ca::user_destroy() +void TPrint_movimenti_ca::main_loop() { - safe_delete(_mask); - safe_delete(_rep); - return TReport_application::user_destroy(); + _mask = new TPrint_movimenti_ca_mask; + _mask->run(); + delete _mask; + _mask = NULL; } int ca3100(int argc, char* argv[]) diff --git a/src/ca/ca3100.h b/src/ca/ca3100.h index a1f6283fb..21991b612 100755 --- a/src/ca/ca3100.h +++ b/src/ca/ca3100.h @@ -14,9 +14,8 @@ #define F_NUMEROFIN 210 #define F_CAUSALEINI 211 #define F_CAUSALEFIN 212 +#define F_REPORT 213 #define F_TIPOMOV 214 -#define F_CONTSEP 215 -#define F_DESCONTSEP 216 //sheet di pagina 2 #define F_RIGHE 400 diff --git a/src/ca/ca3100.uml b/src/ca/ca3100.uml index 81d0a6aa9..e56fd336e 100755 --- a/src/ca/ca3100.uml +++ b/src/ca/ca3100.uml @@ -1,15 +1,25 @@ #include "ca3100.h" #include "camask.h" -#define ALL_EXPORT -#define CLASS_NAME "ca3100a" - TOOLBAR "topbar" 0 0 0 2 #include ENDPAGE -TOOLBAR "bottombar" 0 -3 0 1 -#include +TOOLBAR "bottombar" 0 -2 0 1 + +STRING F_REPORT 256 66 +BEGIN + PROMPT 1 -2 "Report " + FLAGS "B" + CHECKTYPE REQUIRED +END + +STRING DLG_PROFILE 50 +BEGIN + PROMPT 1 -1 "Profilo " + PSELECT +END + ENDPAGE PAGE "Parametri stampa" 0 0 0 2 @@ -141,35 +151,9 @@ BEGIN ITEM "T|Trasferito" END -STRING F_CONTSEP 6 -BEGIN - PROMPT 1 10 "Cont. separata " - USE &NPENT - INPUT CODTAB F_CONTSEP - DISPLAY "Codice@6" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CONTSEP CODTAB - OUTPUT F_DESCONTSEP S0 - CHECKTYPE NORMAL - FIELD CONTSEP - MODULE NP -END - -STRING F_DESCONTSEP 50 48 -BEGIN - PROMPT 26 10 "" - USE &NPENT KEY 2 - INPUT S0 F_DESCONTSEP - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice@6" CODTAB - COPY OUTPUT F_CONTSEP - CHECKTYPE NORMAL - MODULE NP -END - SPREADSHEET F_RIGHE -1 -1 BEGIN - PROMPT 0 12 "Selezione su CdC / Commesse / Fasi" + PROMPT 1 12 "Selezione su CdC / Commesse / Fasi" ITEM "Cdc1" ITEM "Cdc2" ITEM "Cdc3" diff --git a/src/ca/ca3100a.rep b/src/ca/ca3100a.rep index 4e2dc0964..519db804b 100755 --- a/src/ca/ca3100a.rep +++ b/src/ca/ca3100a.rep @@ -1,8 +1,8 @@ - + Movimenti CA per numero registrazione -