From d8995358f058a3fb81b8f92b09f2cff2b12e5b1e Mon Sep 17 00:00:00 2001 From: Macchina_Compilatrice Date: Wed, 2 Mar 2022 00:04:08 +0100 Subject: [PATCH] Revert "Patch level : 12.0 1118" This reverts commit 802a74c19e9d52f0267bafbb72a4e1af107594cc. --- build/AgaLib.vcxproj | 4 - build/AgaLib.vcxproj.filters | 11 - build/PATCHDEF.EXE | Bin 114176 -> 114176 bytes build/ci1.vcxproj.filters | 12 +- build/fastrip.exe | Bin 114176 -> 114176 bytes cd/Setup.exe | Bin 1186816 -> 363008 bytes src/ba/ba1100.cpp | 502 +++--- src/ba/ba1100.h | 160 +- src/ba/ba1101.cpp | 14 +- src/ba/ba1600.cpp | 41 +- src/ba/ba2900.cpp | 6 +- src/ba/ba3400.cpp | 14 +- src/ba/ba3400a.uml | 2 +- src/ba/ba7100.cpp | 5 +- src/ba/ba8300.cpp | 7 - src/ba/batbiva.uml | 15 +- src/cb/source/f4temp.c | 2 +- src/cb/source/i4add.c | 4 +- src/ce/ce1300.cpp | 4 +- src/ce/ce2100.cpp | 1 - src/cg/cg2100.cpp | 83 +- src/cg/cg2100c.uml | 2 +- src/cg/cg2100t.uml | 2 - src/cg/cg2102.cpp | 516 +++--- src/cg/cg2102.h | 181 ++- src/cg/cg2104.cpp | 11 +- src/cg/cg2300.cpp | 234 ++- src/cg/cg2300a.uml | 2 +- src/cg/cg3100.cpp | 57 +- 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 | 90 +- src/cg/cg4302.cpp | 11 +- src/cg/cg4303.cpp | 44 +- src/cg/cg4304.cpp | 51 +- src/cg/cg7600.cpp | 45 +- src/cg/cg7700.cpp | 4 +- src/cg/modf24/cg5500.cpp | 2069 ++++++++++++++++++++++++ src/cg/modf24/cg5500.h | 129 ++ src/cg/modf24/cg5501.cpp | 137 ++ 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 | 333 ++-- src/f1/f1lib.h | 88 +- src/f9/f9lib02.cpp | 4 +- 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 | 6 - src/include/assoc.cpp | 356 ---- src/include/assoc.h | 160 +- src/include/filebar.h | 10 +- src/include/isam.cpp | 360 +---- src/include/isam.h | 23 +- src/include/mask.cpp | 1 - src/include/mov.h | 1 + src/include/msksheet.cpp | 6 +- src/include/msksheet.h | 20 +- src/include/relapp.cpp | 394 +---- src/include/relapp.h | 30 - src/include/tabapp.cpp | 2 - src/include/tsdb.cpp | 30 +- src/include/tsdb.h | 33 +- src/include/winsock.h | 4 - src/lv/lv2500.cpp | 23 +- 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/sv/sv1200.cpp | 814 +++++----- src/sv/sv1200a.h | 2 +- src/sv/sv1200a.uml | 6 + src/sv/sv1200b.uml | 4 +- src/sv/sv2100.cpp | 2 +- src/tc/tc9100.cpp | 1 - src/xi/xi.h | 8 - src/xvaga/xvaga.cpp | 2 +- src/xvtdb/xvtdb.cpp | 8 +- 154 files changed, 4346 insertions(+), 4026 deletions(-) create mode 100755 src/cg/modf24/cg5500.cpp create mode 100755 src/cg/modf24/cg5500.h create mode 100755 src/cg/modf24/cg5501.cpp diff --git a/build/AgaLib.vcxproj b/build/AgaLib.vcxproj index 9c4891e8e..7ed602a3b 100644 --- a/build/AgaLib.vcxproj +++ b/build/AgaLib.vcxproj @@ -881,10 +881,6 @@ {9c91bacf-9a70-4973-b8cc-fa3d2af9867c} - - - - diff --git a/build/AgaLib.vcxproj.filters b/build/AgaLib.vcxproj.filters index bc007fcc3..958661ae8 100644 --- a/build/AgaLib.vcxproj.filters +++ b/build/AgaLib.vcxproj.filters @@ -14,9 +14,6 @@ {ad187331-43fa-476b-9ee2-7e0cab5cde0e} - - {3ac37126-3475-4122-be0b-b16a7b877069} - @@ -800,12 +797,4 @@ Libraries - - - Alx - - - Alx - - \ No newline at end of file diff --git a/build/PATCHDEF.EXE b/build/PATCHDEF.EXE index e0c1f8fef21a8ae828ec8b1c23aa0301a0100a19..b4cf135fd971fccb5bbc2e3c5067a454e90bc463 100644 GIT binary patch delta 80 zcmZqp!`ASJZNdlU?I-FQKX3iaxG-8C$V_Aa0wy4K1Y(0~CI*94MvxE#P;UF?7{*2p cfmtbj_nrLR9J*Jvvu|OWx?{UbD&w9A0J5|ke*gdg delta 80 zcmZqp!`ASJZNdlUv!+)XKX3iaxG-8C$V_Aa0wy4K1Y(0~CI*94MvxE#P;UF?7{*2p cfl1$2H(igkap*NJZgj|#_ucN2%D5*20H(GaE&u=k diff --git a/build/ci1.vcxproj.filters b/build/ci1.vcxproj.filters index de1b415ac..9972592ae 100644 --- a/build/ci1.vcxproj.filters +++ b/build/ci1.vcxproj.filters @@ -158,21 +158,21 @@ Reports + + Reports + + + Reports + Reports Reports - - Reports - Reports - - Reports - Reports diff --git a/build/fastrip.exe b/build/fastrip.exe index bdf1e6ba5882f776240a0334482c0949a15a15ef..0a766454cd19e1733ffd238c3dcfa65eddd29dfb 100644 GIT binary patch delta 80 zcmZqp!`ASJZNdlU{1bJJpSONyTo@}4WF|5I0TU401F=Ch6N5oIBS?q=D7Src9AhJg cK(eCmhrTK+x1C8J7k@go-(I^&)&0F|vBLI3~& delta 80 zcmZqp!`ASJZNdlU-KJL>KX3iaxG+{8$V_Aa0wy4~2V#S2CI*9aMvxE#P;UF?IL1Z} c0p@FB&FV(Cd?(ignEY!^xwqXVopDbX0E%)P761SM diff --git a/cd/Setup.exe b/cd/Setup.exe index 19edbbe06949ae1e68995627d94af25d2ed8ec2d..07d92d59f62be1f21ca14b4731ba943e37940651 100644 GIT binary patch delta 54936 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 HB&7ZyY_sKt literal 1186816 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%0DbUFR%dxI$_ti8aaDh2nW|NpB!4bV2_ptyZ`fE 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

%(4`JL;mmMt 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 -#include + #define _CRT_NONSTDC_NO_DEPRECATE 1 + #define _CRT_SECURE_NO_WARNINGS 1 + #include + #include #else -#include -#include + #include + #include #endif #include @@ -13,9 +13,11 @@ #include "ba1100.h" #include "ba1103.h" +#include #include -#include +#include #include +#include #include #include @@ -33,16 +35,69 @@ #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) - { + { FILE_SPEC fs; memset(&fs, 0, sizeof(FILE_SPEC)); TFilename fname = f.get(); fname.ext("dbf"); xvt_fsys_convert_str_to_fspec(fname, &fs); xvt_fsys_get_default_dir(&fs.dir); if (xvt_dm_post_file_open(&fs, TR("Selezione file")) == FL_OK) - { + { TFilename n; xvt_fsys_convert_dir_to_str(&fs.dir, n.get_buffer(n.size()), n.size()); n.add(fs.name); @@ -50,7 +105,7 @@ HIDDEN bool browse_file_handler(TMask_field& f, KEY k) } f.set_focus(); } - + return true; } @@ -62,51 +117,51 @@ TManutenzione_app::TManutenzione_app() : _browse(NULL), _mask(NULL), _firm(0), _ strncpy_s(fd.SysName, "$dir.gen", sizeof(fd.SysName)); strncpy_s(fd.Des, "Directory", sizeof(fd.Des)); strncpy_s(fd.FCalc, "0", sizeof(fd.FCalc)); - strncpy_s(fd.GenPrompt, "", sizeof(fd.GenPrompt)); - fd.LenR = 160; + strncpy_s(fd.GenPrompt,"", sizeof(fd.GenPrompt)); + fd.LenR =160; fd.EOD = fd.EOX = 1L; fd.Flags = 0; - + #ifdef WIN32 - int handle = sopen(Dir_file, O_RDWR | O_BINARY | O_CREAT, SH_DENYNO, S_IREAD | S_IWRITE); + int handle = sopen(Dir_file, O_RDWR|O_BINARY|O_CREAT,SH_DENYNO,S_IREAD|S_IWRITE); #else - int handle = open(Dir_file, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO); + int handle = open(Dir_file, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); #endif if (handle != -1) { - if (write(handle, &fd, sizeof(FileDes)) == -1) - fatal_box("Impossibile scrivere il file dir.gen per dati standard: errore %d", errno); + if (write( handle, &fd, sizeof(FileDes)) == -1) + fatal_box("Impossibile scrivere il file dir.gen per dati standard: errore %d",errno); close(handle); } - else - fatal_box("Impossibile creare il file dir.gen per dati standard: errore %d", errno); + else + fatal_box("Impossibile creare il file dir.gen per dati standard: errore %d",errno); } if (!fexist(Trc_file)) { TTrec r; RecDes& rd = r.rec(); #ifdef WIN32 - int handle = sopen(Trc_file, O_RDWR | O_BINARY | O_CREAT, SH_DENYNO, S_IREAD | S_IWRITE); + int handle = sopen(Trc_file, O_RDWR|O_BINARY|O_CREAT,SH_DENYNO,S_IREAD|S_IWRITE); #else - int handle = open(Trc_file, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO); + int handle = open(Trc_file, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); #endif if (handle != -1) { - if (write(handle, (void*)&rd, sizeof(RecDes)) == -1) - fatal_box("Impossibile scrivere il file trc.gen per dati standard: errore %d", errno); + if (write( handle, (void*)&rd, sizeof(RecDes)) == -1) + fatal_box("Impossibile scrivere il file trc.gen per dati standard: errore %d",errno); close(handle); } - else - fatal_box("Impossibile creare il file trc.gen per dati standard: errore %d", errno); + else + fatal_box("Impossibile creare il file trc.gen per dati standard: errore %d",errno); } } void TManutenzione_app::do_print(TPrinter & p, TRec_sheet & r) { - const char* table[] = { "", TR("Alfanumerico"), TR("Intero"), TR("Intero Lungo"), + const char* table[] = {"", TR("Alfanumerico"), TR("Intero"), TR("Intero Lungo"), TR("Reale"), TR("Data"), TR("Intero"), TR("Carattere"), - TR("Booleano"), TR("Intero Zerofilled"), TR("Intero Lungo Zerofilled"),TR("Memo") }; + TR("Booleano"), TR("Intero Zerofilled"), TR("Intero Lungo Zerofilled"),TR("Memo")}; TPrintrow row; TToken_string s; TParagraph_string d("", 25); @@ -125,7 +180,7 @@ void TManutenzione_app::do_print(TPrinter & p, TRec_sheet & r) row.reset(); if (istab) - row.put(format(FR("Lista tabella %s "), (const char *)tab), 2); + row.put(format(FR("Lista tabella %s "), (const char *) tab), 2); else row.put(format(FR("Lista tracciato %s (%s)"), dir.des(), dir.name()), 2); row.put(TR("Pag. @#"), 69); @@ -144,10 +199,10 @@ void TManutenzione_app::do_print(TPrinter & p, TRec_sheet & r) row.put(riga, 1); p.setheaderline(3, row); p.setheaderline(5, row); - + int i; - - for (i = 0; i < rec.fields(); i++) + + for (i = 0; i < rec.fields(); i ++) { row.reset(); s = rec.fielddef(i); @@ -173,7 +228,7 @@ void TManutenzione_app::do_print(TPrinter & p, TRec_sheet & r) } p.print(row); wd = d.get(); - while (wd != NULL) + while(wd != NULL) { row.reset(); row.put(wd, 53); @@ -181,25 +236,25 @@ void TManutenzione_app::do_print(TPrinter & p, TRec_sheet & r) wd = d.get(); } } - } - + } + row.reset(); p.print(row); - + row.put(HR("Espressione chiave"), 7); row.put(HR("Duplicabile"), 68); p.setheaderline(4, row); if (p.rows_left() < 5) p.formfeed(); - else + else { p.print(row); row.put(riga, 1); - p.print(row); - } - - for (i = 0; i < rec.keys(); i++) + p.print(row); + } + + for (i = 0; i < rec.keys(); i ++) { row.reset(); s = rec.keydef(i); @@ -237,7 +292,7 @@ void TManutenzione_app::print() } } } - + TString_array list; items = list_files("recdesc/d???.des", list); if (items > 0) @@ -256,17 +311,18 @@ void TManutenzione_app::print() } } } - else + else do_print(p, *_rec); p.close(); } bool TManutenzione_app::create() // initvar e arrmask { - TString sw(argc() > 2 ? argv(2) : ""); + _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 - xvt_vobj_show(TASK_WIN); _superprassi = user() == ::dongle().administrator() && !::dongle().demo(); if (_superprassi) @@ -274,7 +330,7 @@ bool TManutenzione_app::create() // initvar e arrmask const int type = ini_get_int(CONFIG_INSTALL, "Main", "Type"); _superprassi = (type == 1) || (type == 2); } - + if (argc() > 2 && sw == "-C") { update(); @@ -300,15 +356,14 @@ bool TManutenzione_app::create() // initvar e arrmask modules = atol(argv(5)); prefix().set(""); load_des(); - dump_trc(dir, des_too, modules); + dump_trc(dir,des_too,modules); return false; } else if (!::dongle().demo() && !set_firm()) return false; - _firm = atol(prefix().name()); load_des(); - + _mask = new TMask("ba1100a"); _browse = new TDir_sheet(TR("Manutenzione file di sistema"), _superprassi); if (_superprassi) @@ -330,26 +385,8 @@ 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() -{ +void TManutenzione_app::open_log() +{ _print_log = false; if (_log == NULL) { @@ -359,7 +396,7 @@ void TManutenzione_app::open_log() } void TManutenzione_app::write_log(const char* line, const int severity) -{ +{ if (_log != NULL) { _log->log(severity, line); @@ -380,30 +417,30 @@ void TManutenzione_app::close_log() } void TManutenzione_app::save_file(const char * file) -{ +{ TFilename n(file); const TFilename source_path(n.path()); TFilename dest_path(source_path); - + n.ext("*"); TString_array files_to_copy; - + list_files(n, files_to_copy); - dest_path << "sav"; - + dest_path << "sav"; + if (!dest_path.exist()) make_dir(dest_path); - + FOR_EACH_ARRAY_ROW_BACK(files_to_copy, row, fname) - { + { TFilename source_file(*fname); - TFilename dest_file(dest_path); dest_file << '/' << (const char *)source_file.name(); - fcopy((const char *)source_file, dest_file); + TFilename dest_file(dest_path); dest_file << '/' << (const char *) source_file.name(); + fcopy((const char *) source_file, dest_file); } } -void TManutenzione_app::insert_riga(long riga_sel, TToken_string& riga) +void TManutenzione_app::insert_riga (long riga_sel, TToken_string& riga) { const int logicnum = int(riga_sel) + 1; const int num_files = (int)_browse->items(); @@ -412,30 +449,30 @@ void TManutenzione_app::insert_riga(long riga_sel, TToken_string& riga) _mask->disable(DLG_RECORD); _mask->disable(DLG_LOAD); _mask->disable(DLG_DUMP); - _mask->show(F_TAB, (logicnum >= LF_TABGEN && logicnum <= LF_TAB) || (logicnum == LF_TABMOD)); + _mask->show(F_TAB, (logicnum >= LF_TABGEN && logicnum <= LF_TAB)||(logicnum == LF_TABMOD)); _mask->hide(FLD_EXTEND); _mask->hide(FLD_EOX); - _mask->set(FLD_NUM, riga.get(0)); - _mask->reset(F_TAB); + _mask->set (FLD_NUM, riga.get(0)); + _mask->reset (F_TAB); if (_mask->run() == K_ENTER) { /* shift di uno in avanti degli elementi del direttorio partendo dall'ultimo */ - for (int i = num_files; i >= logicnum; i--) + for (int i=num_files; i>=logicnum; i--) { - _browse->dir().get(i, _nolock, _nordir, _sysdirop); - _browse->dir().put(i + 1, _nordir, _sysdirop); - _browse->rec().get(i); - _browse->rec().put(i + 1); + _browse->dir().get (i, _nolock, _nordir, _sysdirop); + _browse->dir().put (i + 1, _nordir, _sysdirop); + _browse->rec().get (i); + _browse->rec().put (i + 1); } _browse->dir().set(_mask->get(FLD_NOME), _mask->get_long(FLD_EOD), - _mask->get_long(FLD_FLAG), _mask->get(FLD_DESC), - _mask->get(FLD_FORMULA)); + _mask->get_long(FLD_FLAG), _mask->get (FLD_DESC), + _mask->get (FLD_FORMULA)); _browse->dir().put(logicnum, _nordir, _sysdirop); _browse->rec().zero(); _browse->rec().put(logicnum); _browse->dir().get(LF_DIR); - _browse->dir().set_eod(_browse->dir().eod() + 1); + _browse->dir().set_eod(_browse->dir().eod()+1); _browse->set_items(_browse->dir().eod()); _browse->dir().put(LF_DIR); } @@ -443,32 +480,32 @@ void TManutenzione_app::insert_riga(long riga_sel, TToken_string& riga) void TManutenzione_app::open_history() { - FILE *fp = fopen(History_file, "r"); + FILE *fp = fopen(History_file,"r"); if (fp != NULL) { char line[16]; - fgets(line, 16, fp); + fgets(line,16,fp); int l = strlen(line); - line[l > 0 ? l - 1 : 0] = '\0'; - if (l == 0) + line[l > 0 ? l -1 : 0 ] = '\0'; + if (l==0) _history_firm = -1; else _history_firm = atol(line); } else { - fp = fopen(History_file, "w"); + fp = fopen(History_file,"w"); _history_firm = -1; } - fclose(fp); + fclose (fp); } void TManutenzione_app::put_history(const char* firm) { - FILE * fp = fopen(History_file, "w"); - fprintf(fp, "%s\n", firm); - fclose(fp); + FILE * fp = fopen(History_file,"w"); + fprintf(fp,"%s\n",firm); + fclose (fp); } void TManutenzione_app::close_history() @@ -481,7 +518,7 @@ void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const lon { TDir d; d.get(LF_DIR); - const int items = (int)d.eod(); + const int items = (int) d.eod(); const long flags = d.flags(); // livello archivi TFilename fn(dir); fn << "/level.dir"; @@ -489,12 +526,12 @@ void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const lon ofstream of(fn); of << flags << '\n'; } - + TString s(TR("Scarico dei tracciati standard in ")); s << dir; TProgind p(items ? items : 1, s, false, true); p.setstatus(1); - for (int i = 2; i <= items; i++) //Salta il primo (dir.gen) + for (int i=2;i<=items;i++) //Salta il primo (dir.gen) { p.addstatus(1); TTrec& rc = (TTrec&)_recs[i]; @@ -504,16 +541,16 @@ void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const lon TFilename descfname; descfname.format("%s/d%d.des", DESCDIR, i); if (!fexist(descfname)) // crea la descrizione se non esiste - { - FILE * fd = fopen(descfname, "w"); + { + FILE * fd = fopen(descfname, "w"); if (fd != NULL) fclose(fd); } - TConfig conf_des(descfname, DESCPAR); - + TConfig conf_des(descfname,DESCPAR); + if (des_too) rc.set_des(&conf_des); fn = dir; - fn << "/f"; fn << i; + fn << "/f";fn << i; fn.ext("trr"); ofstream out(fn); out << rc; @@ -536,24 +573,24 @@ const char* TManutenzione_app::dumpfilename(const FileDes& dep) const return tmp; } -void TManutenzione_app::edit_riga(const TString& name) +void TManutenzione_app::edit_riga (const TString& name) { const TFilename n(name); TExternisamfile* f = new TExternisamfile(n); - - _mask->set(FLD_NUM, ""); - _mask->set(FLD_NOME, n); - _mask->set(FLD_EOD, f->items()); - _mask->set(FLD_EOX, f->items()); - _mask->set(F_LEN, f->curr().len()); - _mask->set(FLD_DESC, f->description()); - _mask->set(FLD_FORMULA, ""); - _mask->set(FLD_FLAG, ""); - _mask->reset(FLD_EXTEND); - _mask->reset(F_TAB); + + _mask->set (FLD_NUM, ""); + _mask->set (FLD_NOME, n); + _mask->set (FLD_EOD, f->items()); + _mask->set (FLD_EOX, f->items()); + _mask->set (F_LEN, f->curr().len()); + _mask->set (FLD_DESC, f->description()); + _mask->set (FLD_FORMULA, ""); + _mask->set (FLD_FLAG, ""); + _mask->reset (FLD_EXTEND); + _mask->reset (F_TAB); _mask->disable(-1); _mask->enable(DLG_RECORD, _superprassi); - + KEY tasto = _mask->run(); switch (tasto) { @@ -575,7 +612,7 @@ void TManutenzione_app::edit_riga(const TString& name) } } -void TManutenzione_app::edit_riga(long riga_sel, TToken_string& riga) +void TManutenzione_app::edit_riga (long riga_sel, TToken_string& riga) { const int logicnum = int(riga_sel) + 1; @@ -585,16 +622,16 @@ void TManutenzione_app::edit_riga(long riga_sel, TToken_string& riga) _mask->enable(DLG_DUMP); _mask->show(F_TAB, logicnum >= LF_TABGEN && logicnum <= LF_TAB); - _mask->set(FLD_NUM, riga.get(0)); - _mask->set(FLD_NOME, riga.get()); - _mask->set(FLD_EOD, riga.get()); - _mask->set(FLD_EOX, riga.get()); - _mask->set(F_LEN, riga.get()); - _mask->set(FLD_DESC, riga.get()); - _mask->set(FLD_FORMULA, riga.get()); - _mask->set(FLD_FLAG, riga.get()); - _mask->reset(FLD_EXTEND); - _mask->reset(F_TAB); + _mask->set (FLD_NUM, riga.get(0)); + _mask->set (FLD_NOME, riga.get()); + _mask->set (FLD_EOD, riga.get()); + _mask->set (FLD_EOX, riga.get()); + _mask->set (F_LEN, riga.get()); + _mask->set (FLD_DESC, riga.get()); + _mask->set (FLD_FORMULA, riga.get()); + _mask->set (FLD_FLAG, riga.get()); + _mask->reset (FLD_EXTEND); + _mask->reset (F_TAB); const TRecnotype oldeox = _mask->get_long(FLD_EOX); const bool com = prefix().is_com() || !*prefix().name(); @@ -631,11 +668,11 @@ void TManutenzione_app::edit_riga(long riga_sel, TToken_string& riga) case K_ENTER: { FileDes dep; - strncpy(dep.SysName, _mask->get(FLD_NOME), sizeof(dep.SysName)); - dep.EOD = atol(_mask->get(FLD_EOD)); - dep.Flags = atol(_mask->get(FLD_FLAG)); - strncpy(dep.Des, _mask->get(FLD_DESC), sizeof(dep.Des)); - strncpy(dep.FCalc, _mask->get(FLD_FORMULA), sizeof(dep.FCalc)); + strncpy (dep.SysName,_mask->get(FLD_NOME), sizeof(dep.SysName)); + dep.EOD = atol(_mask->get (FLD_EOD)); + dep.Flags = atol(_mask->get (FLD_FLAG)); + strncpy (dep.Des,_mask->get (FLD_DESC), sizeof(dep.Des)); + strncpy (dep.FCalc,_mask->get (FLD_FORMULA), sizeof(dep.FCalc)); const TRecnotype eox = _mask->get_bool(FLD_EXTEND) ? _mask->get_long(FLD_EOX) : oldeox; TDir& dir = _browse->dir(); @@ -652,7 +689,7 @@ void TManutenzione_app::edit_riga(long riga_sel, TToken_string& riga) TFilename f_name(d.name()); f_name.ext("dbf"); - if (!f_name.exist()) + if (!f_name.exist()) f.build(); _browse->dir().get(logicnum, _nolock, _nordir, _sysdirop); @@ -661,7 +698,7 @@ void TManutenzione_app::edit_riga(long riga_sel, TToken_string& riga) { f.packfile(true); f.packindex(true); - // le 4 righe seguenti servono per allineare i valori di EOD ed EOX dopo una compattazione forzata +// le 4 righe seguenti servono per allineare i valori di EOD ed EOX dopo una compattazione forzata dir.get(logicnum, _nolock, _nordir, _sysdirop); dir.set(dep.SysName, dep.EOD, dep.Flags, dep.Des, dep.FCalc); dir.set_eox(_browse->dir().eod()); @@ -695,8 +732,8 @@ void TManutenzione_app::edit_riga(long riga_sel, TToken_string& riga) const int keyno = m.get_int(FLD_KEYNO); const TString4 tabella(_mask->get(F_TAB)); if (tabella.not_empty()) - { - TToken_string filter; + { + TToken_string filter; filter.add("COD"); filter.add(tabella); f.dump(nout, keyno, fs, fd, rs, true, withdel, filter); } @@ -733,19 +770,19 @@ void TManutenzione_app::edit_riga(long riga_sel, TToken_string& riga) } } -void TManutenzione_app::delete_riga(long riga_sel) +void TManutenzione_app::delete_riga (long riga_sel) { const int num_files = (int)_browse->items(); const int logicnum = int(riga_sel) + 1; - if (riga_sel == num_files - 1 && yesno_box(FR("Si conferma l'eliminazione del file %d"), logicnum)) + if (riga_sel == num_files-1 && yesno_box(FR("Si conferma l'eliminazione del file %d"), logicnum)) { /* shift di uno in avanti degli elementi del direttorio partendo dall'ultimo */ for (int i = logicnum + 1; i <= num_files; i++) { - _browse->dir().get(i, _nolock, _nordir, _sysdirop); - _browse->dir().put(i - 1, _nordir, _sysdirop); - _browse->rec().get(i); - _browse->rec().put(i - 1); + _browse->dir().get (i, _nolock, _nordir, _sysdirop); + _browse->dir().put (i - 1, _nordir, _sysdirop); + _browse->rec().get (i); + _browse->rec().put (i - 1); } _browse->dir().get(LF_DIR); @@ -753,7 +790,7 @@ void TManutenzione_app::delete_riga(long riga_sel) TTrec r; r.zero(); r.put(_browse->dir().eod()); - _browse->dir().set_eod(_browse->dir().eod() - 1); + _browse->dir().set_eod(_browse->dir().eod()-1); _browse->set_items(_browse->dir().eod()); _browse->dir().put(LF_DIR); _browse->force_update(); @@ -770,10 +807,10 @@ bool TManutenzione_app::try_to_recover(TSystemisamfile& f, int err) } void TManutenzione_app::repair_file(int i) -{ +{ TString s(_MAX_PATH + 50); // Messaggio di log - - TDir d(i); + + TDir d(i); const char* n = d.filename(); if (d.eod() == 0) @@ -792,13 +829,13 @@ void TManutenzione_app::repair_file(int i) d.get(i, _nolock, _nordir, _sysdirop); save_file(n); TExternisamfile ef(n); - + const RecDes& rd = ef.curr().rec_des(); - TTrec rec; rec.get(i); + TTrec rec; rec.get(i); const int oldreclen = rec.len(); rec.rec() = rd; - rec.put(i); - + rec.put(i); + const int reclen = rec.len(); d.set_len(reclen); d.put(i, _nordir, _sysdirop); @@ -827,29 +864,29 @@ void TManutenzione_app::update_dir() TDir d(LF_DIR); // equivale a d.get(LF_DIR, _nolock, _nordir, _sysdirop); const int last_curr_item = (int)d.eod(); //quale è il numero dell'ultimo file attualmente presente - + const int update_items = (last_new_item < last_curr_item) ? last_new_item : last_curr_item; safely_close_closeable_isamfiles(); // Serve a premettere la chiamata ad fsize() in sicurezza TString prompt(128); - if (is_com) + if (is_com) prompt << TR("Aggiornamento dati comuni"); else prompt << TR("Aggiornamento ditta") << ' ' << atol(pref); prompt << ".\n"; TProgind p(update_items ? update_items : 1, prompt, false, true); - + int i; for (i = LF_USER; i <= update_items; i++) { if (!p.setstatus(i)) break; - const TDir & ds = (const TDir &)_dirs[i]; + const TDir & ds = (const TDir &) _dirs[i]; const bool is_firm = ds.is_firm(); const bool to_create = (is_com ? ds.is_com() : ds.is_firm()); - + TFilename fd(ds.filename()); bool towrite = false; @@ -857,7 +894,7 @@ void TManutenzione_app::update_dir() const long flags = ds.flags(); d.get(i, _nolock, _nordir, _sysdirop); const bool old_is_firm = d.is_firm(); - + TFilename fs = d.filename(); //modifica 03/06/09 Se un file si chiama fnnn (es. f106) nel vecchio set di tracciati, mentre esiste con nome.. @@ -867,7 +904,7 @@ void TManutenzione_app::update_dir() const TString& fs_name = fs.name_only(); if (fs_name.starts_with("f") && real::is_natural(fs_name.mid(1))) fs.cut(0); - + if (!fs.exist()) { if (d.eox() > 0L) @@ -880,10 +917,10 @@ void TManutenzione_app::update_dir() else { if (is_com) - { + { if (old_is_firm && !moveable_file(i) && d.eod() == 0L) { - const char* n = d.filename(); + const char* n = d.filename(); save_file(n); TToken_string names; get_table_names(i, names, 0xF); @@ -904,7 +941,7 @@ void TManutenzione_app::update_dir() int err = b.is_valid(true); // Aggiunto err==-60 per errore conversione sui file 98,99,125 in Pharmatex e dintorni if ((err == _istrcerr || err == _ispatherr || err == -60) && (d.eod() == 0) && (size < 4096)) - { + { bool kill = true; //controllo solo all'aga if (is_power_station()) @@ -938,7 +975,7 @@ void TManutenzione_app::update_dir() } if (err != NOERR && flags < 10000L) { - if (!try_to_recover(b, err)) + if (!try_to_recover(b, err)) { msg.format(TR("Impossibile compattare il file %d - %s : errore n.ro %d"), i, (const char*)d.filename(), err); @@ -963,7 +1000,7 @@ void TManutenzione_app::update_dir() } } d.get(i, _nolock, _nordir, _sysdirop); - + bool cmn_file = false; bool valid_file = moveable_file(i); if (!is_com && valid_file && d.is_com()) @@ -974,7 +1011,7 @@ void TManutenzione_app::update_dir() // Serve per evitare che durante l'aggiornamento i file // PCON, CLIFO, CAUS ed RCAUS vengano spostati da COM alla // prima ditta - + if (to_create && !cmn_file) { d.set(ds.name(), d.eox(), 0L, ds.des(), d.expr()); @@ -988,10 +1025,10 @@ void TManutenzione_app::update_dir() if (!valid_file) d.set(ds.name(), d.eox(), d.eod(), ds.des(), d.expr()); else - strcpy((char *)d.des(), ds.des()); + strcpy((char *) d.des(), ds.des()); } } - if (is_com && valid_file && d.name()[0] == '$') + if (is_com && valid_file && d.name()[0] == '$') { TString name(d.name()); name[0] = '%'; @@ -1005,7 +1042,7 @@ void TManutenzione_app::update_dir() //se il numero totale di files nuovi è inferiore a quello dei files già presenti c'è qualcosa che probabilmente.. //..non va (aggiornamento da un cd vecchio ad esempio); comunque ha finito il suo lavoro qui, perchè quello che.. //..segue riguarda solo i files nuovi - if (last_curr_item >= last_new_item) + if (last_curr_item >= last_new_item) return; //aggiornatore degli EOX EOD ecc. dei files nuovi @@ -1032,7 +1069,7 @@ void TManutenzione_app::convert_dir() const TString pref(prefix().name()); const bool is_com = prefix().is_com(); const int last_new_item = _dirs.last(); - + TDir d(LF_DIR); const int last_curr_item = (int)d.eod(); @@ -1040,10 +1077,10 @@ void TManutenzione_app::convert_dir() TString s; s << TR("Aggiornamento archivi "); - if (is_com) + if (is_com) s << TR("comuni"); else - s << TR("ditta ") << atol(pref); + s << TR("ditta ") << atol (pref); s << ".\n"; TProgress_monitor p(update_items, s, is_power_station()); @@ -1053,7 +1090,7 @@ void TManutenzione_app::convert_dir() break; const TTrec& rs = (const TTrec&)_recs[i]; // Nuovo tracciato record - const TDir& ds = (const TDir&)_dirs[i]; + const TDir& ds = (const TDir&)_dirs[i]; const long flags = ds.flags(); if (ds.len() > 0) @@ -1067,11 +1104,11 @@ void TManutenzione_app::convert_dir() const int module = abs((int)ds.flags()); TSystemisamfile f(i); - int err = f.is_valid(true); + int err = f.is_valid(true); switch (err) { case -64: - case -60: + case -60: err = NOERR; // verif. break; default: @@ -1079,7 +1116,7 @@ void TManutenzione_app::convert_dir() } if (i > LF_USER && err != NOERR && ((is_com && d.is_com()) || (!is_com && d.is_firm()))) - { + { if (err == _istrcerr || err == _isbadtrc) { repair_file(i); @@ -1097,12 +1134,12 @@ void TManutenzione_app::convert_dir() } //if (i > 2 && err != NOERR &&... bool to_create = (is_com ? d.is_com() : d.is_firm()); - + // I files LF_PCON, LF_CAUS, LF_RCAUS, LF_CLIFO, LF_CFVEN, LF_INDSPED // vanno creati comunque nel direttorio COM, vuoti, (se non esistono gia'). if (is_com && !to_create && moveable_file(i)) to_create = true; - + if (to_create && has_module(module, CHK_DONGLE)) { const TDir df(i); @@ -1111,7 +1148,7 @@ void TManutenzione_app::convert_dir() //crea il nuovo file in base al tracciato record nuovo! if (!fname.exist() && ds.len() > 0 && rs.len() > 0) { - set_autoload_new_files(false); + set_autoload_new_files(false); f.build(rs); set_autoload_new_files(true); // Anche se il file non esisteva, prosegue, perche' possono esserci conversioni @@ -1146,7 +1183,7 @@ void TManutenzione_app::convert_dir() d.put(i, _nordir, _sysdirop); r.put(i); } //else di if(flags>=... - + } //if (ds.len() > 0... (la dimensione del tracciato e' > 0) else // altrimenti se la dimensione del tracciato e' zero... { @@ -1179,19 +1216,19 @@ void TManutenzione_app::load_des() int items = (int)d.eod(); long flags = d.flags(); const bool standard = pref.empty(); - + if (standard) // carica eventuali nuove descrizioni ed il nuovo livello archivi { // Cerca in RECDESC i files f[nnn].dir TString ws; TFilename fn; - TDir td, new_dir; + TDir td,new_dir; TTrec tr; - int ln = items, last_newln = items; + int ln = items,last_newln = items; tr.zero(); fn << DESCDIR << "/level.dir"; - + if (fexist(fn)) { ifstream infile(fn); @@ -1199,16 +1236,16 @@ void TManutenzione_app::load_des() infile >> fl; if (fl > flags) flags = fl; } - + // scandisce *.dir in RECDESC // eventuali "buchi" oltre al numero attuale di items vengono rimpiazzati // con tracciati vuoti. - fn.format("%s/f*.dir", DESCDIR); + fn.format("%s/f*.dir",DESCDIR); TString_array list; const int totfiles = list_files(fn, list); - + for (int n = 0; n < totfiles; n++) { fn = list.row(n); @@ -1221,48 +1258,48 @@ void TManutenzione_app::load_des() const bool is_new = ln > last_newln; // memorizza l'ultimo record scritto come nuovo if (is_new) // aggiunge i files che mancano { - for (int i = last_newln + 1; i < ln; i++) + for (int i = last_newln+1; i> r; - r.put(i); + r.put(i); d.set_len(r.len()); d.put(i, _nordir, _sysdirop); r.set_des(); + } } } - } _dirs.add(d, i); _recs.add(r, i); } @@ -1368,34 +1405,34 @@ void TManutenzione_app::update() open_history(); long firm = get_firm(); TString pref; - if (firm == 0) + if (firm == 0) pref = prefix().name(); prefix().set(""); load_des(); prefix().set_codditta(0L); // COM - + TString mxs; mxs = TR("Conversione dati comuni"); open_log(); - write_log(mxs); - write_log(""); + write_log(mxs); + write_log(""); TPointer_array ditte; // Evita di aprire LF_NDITTE const int nditte = prefix().firms(ditte); update_dir(); convert_dir(); - + for (int i = 0; i < nditte; i++) { const long codditta = ditte.get_long(i); if (codditta > _history_firm && prefix().exist(codditta) && set_firm(codditta)) { mxs.cut(0) << TR("Conversione Ditta ") << codditta; - write_log(""); - write_log(mxs); - write_log(""); + write_log(""); + write_log(mxs); + write_log(""); update_dir(); convert_dir(); } @@ -1403,14 +1440,14 @@ void TManutenzione_app::update() //chiude il log di conversione close_log(); - + if (firm > 0) set_firm(firm); else prefix().set(pref); load_des(); reset_converting(); close_history(); - + send_campo_xml(); // Spedisce situazione via ftp } @@ -1428,7 +1465,7 @@ void TManutenzione_app::main_loop() KEY key = _browse->run(); - if (key != K_ENTER && key != K_QUIT && key != K_ESC && + if (key != K_ENTER && key != K_QUIT && key != K_ESC && !_superprassi) { error_box(FR("Operazione non permessa all'utente %s"), (const char*)user()); @@ -1452,29 +1489,29 @@ void TManutenzione_app::main_loop() case K_F6: riga_selezionata = _browse->selected(); riga = _browse->row(); - insert_riga(riga_selezionata, riga); + insert_riga (riga_selezionata, riga); break; case K_ENTER: riga_selezionata = _browse->selected(); riga = _browse->row(); - edit_riga(riga_selezionata, riga); + edit_riga (riga_selezionata, riga); break; case K_DEL: riga_selezionata = _browse->selected(); delete_riga(riga_selezionata); break; case K_QUIT: - case K_ESC: - done = true; close_history(); + case K_ESC: + done = true; close_history(); + break; + case K_F7: + update(); break; - case K_F7: - update(); - break; case K_F8: _browse->add(); riga_selezionata = _browse->items() - 1; riga = _browse->row(riga_selezionata); - edit_riga(riga_selezionata, riga); + edit_riga (riga_selezionata, riga); break; case K_F5: // Other file { @@ -1492,8 +1529,9 @@ void TManutenzione_app::main_loop() } int ba1100(int argc, char** argv) -{ +{ TManutenzione_app a; a.run(argc, argv, TR("Gestione files")); return 0; -} \ No newline at end of file +} + diff --git a/src/ba/ba1100.h b/src/ba/ba1100.h index ffa804122..ff79ff996 100755 --- a/src/ba/ba1100.h +++ b/src/ba/ba1100.h @@ -1,10 +1,6 @@ #ifndef __BA1100_H #define __BA1100_H -#ifndef __APPLICAT_H -#include -#endif - #ifndef __CONFIG_H #include #endif @@ -21,14 +17,6 @@ class TMask_field; #endif -#ifndef __PRINTER_H -#include -#endif - -#ifndef __REPUTILS_H -#include -#endif - #include "ba1100a.h" /////////////////////////////////////////////////////////// @@ -37,129 +25,71 @@ class TMask_field; class TDir_sheet : public TSheet { - TTrec _rec; - TDir _dir; - FileDes _s_dir; - long _items; + TTrec _rec; + TDir _dir; + FileDes _s_dir; + long _items; -protected: - virtual long get_items() const { return _items; } - virtual void get_row(long n, TToken_string& r); +protected: + virtual long get_items() const { return _items; } + virtual void get_row(long n, TToken_string& r); public: - const TDir& dir() const { return _dir; } - TDir& dir() { return _dir; } - const TTrec& rec() const { return _rec; } - TTrec& rec() { return _rec; } - void set_items(long items) { _items = items; } - void add(); - void rebuild() { _items = _dir.items(); } + const TDir& dir() const { return _dir; } + TDir& dir() { return _dir; } + const TTrec& rec() const { return _rec; } + TTrec& rec(){ return _rec; } + void set_items(long items) { _items = items; } + void add(); + void rebuild() { _items = _dir.items();} - TDir_sheet(const char* title, bool superprassi); + TDir_sheet(const char* title, bool superprassi); }; class TRec_sheet : public TObject { - TTrec _rec; - TTrec _rec_old; - TDir _dir; - bool _comfile; - TConfig *_descr; - static TMask *_mask; - TFilename _descfname; - TString16 _tab; - bool _external; + TTrec _rec; + TTrec _rec_old; + TDir _dir; + bool _comfile; + TConfig *_descr; + static TMask *_mask; + TFilename _descfname; + TString16 _tab; + bool _external; protected: - bool check_key_expr(int key, const char* key_expr); - static bool key_notify(TSheet_field& s, int r, KEY k); - static bool fld_notify(TSheet_field& s, int r, KEY k); - void save(); - void save_desc(); - - virtual long get_items() const { return _rec.fields(); } + bool check_key_expr(int key, const char* key_expr); + static bool key_notify(TSheet_field& s, int r, KEY k); + static bool fld_notify(TSheet_field& s, int r, KEY k); + void save(); + void save_desc(); + + virtual long get_items() const { return _rec.fields(); } public: - const TDir& dir() const { return _dir; } - const TTrec& rec() const { return _rec; } - const char* descfname() const { return _descfname; } - const char* tab() const { return _tab; } - void edit(); + const TDir& dir() const { return _dir; } + const TTrec& rec() const { return _rec; } + const char* descfname() const { return _descfname;} + const char* tab() const { return _tab; } + void edit(); - TRec_sheet(int logicnum, const char* tab); - TRec_sheet(TExternisamfile* file); - virtual ~TRec_sheet(); + TRec_sheet(int logicnum, const char* tab); + TRec_sheet(TExternisamfile* file); + virtual ~TRec_sheet(); }; class TEdit_file : public TObject { protected: - void edit_record(TRectype& rec); - bool browse_cursor(TCursor& cur, const TFilename& name); + void edit_record(TRectype& rec); + bool browse_cursor(TCursor& cur, const TFilename& name); public: - bool browse_file(int logicnum, const TFilename& name, const TString& tab, const int selKey = 1); - bool browse_file(TExternisamfile* file, const TFilename& name); - TEdit_file() {} - virtual ~TEdit_file() {} + bool browse_file(int logicnum, const TFilename& name, const TString& tab, const int selKey = 1); + bool browse_file(TExternisamfile* file, const TFilename& name); + TEdit_file() {} + 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 d70b78334..f413898ce 100755 --- a/src/ba/ba1101.cpp +++ b/src/ba/ba1101.cpp @@ -275,17 +275,9 @@ 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); - 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); + int nkeys = _rec.keys(); + for (i = 0; i < nkeys; i++) f2.row(i) = _rec.keydef(i); + f2.disable_cell(0, 1); 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/ba1600.cpp b/src/ba/ba1600.cpp index 2d29027f8..eefaf7f45 100755 --- a/src/ba/ba1600.cpp +++ b/src/ba/ba1600.cpp @@ -859,6 +859,7 @@ bool TMod_composition_msk::obs_handler(TMask_field& f, KEY k) return true; } + bool TMod_composition_msk::deselect_handler(TMask_field& f, KEY k) { if (k == K_SPACE) @@ -1444,10 +1445,8 @@ bool TCreadischi_mask::creazip_handler(TMask_field& f, KEY k) const TString& module = m.get(S_MODULE); const bool agg = f.dlg() == S_CREATEPATCH; TCreadischi_mask& fm = (TCreadischi_mask&)m.get_sheet()->mask(); - const int patch = m.get_int(S_PATCHLEVEL); - const TDate data = m.get_int(S_DATE); - if (fm.zip_module(module, agg, patch)) + if (fm.zip_module(module, agg, m.get_int(S_PATCHLEVEL))) { #ifdef __FCONV__ // creazione XXfconv.ini (esporta le info di conversione ) @@ -1459,42 +1458,6 @@ bool TCreadischi_mask::creazip_handler(TMask_field& f, KEY k) TFconv_ini fconv; fconv.export_module(module, fconv_path); #endif - TString_array updated_modules ; // ?? - const int mod_items = updated_modules.items(); - TArray_sheet& main_sheet = (TArray_sheet&)f.mask(); - const int items = main_sheet.items(); - bool some_updated = false; - - TFilename sommario; //e' il file .ini con l'elenco dei files (XX@@@@a.ini) - - sommario.tempdir(); - sommario.add(format("%s%04da.ini", (const char *) module, patch)); - sommario.ext("ini"); - - TConfig ini(sommario); - - ini.list_paragraphs(updated_modules); - for (int m = 0; m < items; m++) - { - const TToken_string mod_dep(main_sheet.row(m).get(5), ','); - - FOR_EACH_ARRAY_ROW(updated_modules, submod, um) - { - FOR_EACH_STR_TOKEN(mod_dep, dep) - { - if (dep == submod) - { - main_sheet.row(m).add(patch, 3); - main_sheet.row(m).add(data, 4); - fm.zip_module(main_sheet.row(m).get(1), agg, patch); - some_updated = true; - break; - } - } - } - } - if (some_updated) - main_sheet.force_update(); } } return true; diff --git a/src/ba/ba2900.cpp b/src/ba/ba2900.cpp index ab54b52bc..faffa4b7b 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_export_log(); + bool show_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_export_log() +bool TMSSQLExport_app::show_log() { if (_log) { @@ -1089,7 +1089,7 @@ void TMSSQLExport_app::main_loop() } message_box("Migrazione effettuata correttamente!"); } while (loop); - show_export_log(); + show_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 ffd601aa6..a166a511e 100755 --- a/src/ba/ba7100.cpp +++ b/src/ba/ba7100.cpp @@ -1742,7 +1742,6 @@ 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(); }; @@ -1768,7 +1767,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) { @@ -1779,7 +1778,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/ba8300.cpp b/src/ba/ba8300.cpp index 2f8ffe6bd..39f52ec14 100755 --- a/src/ba/ba8300.cpp +++ b/src/ba/ba8300.cpp @@ -567,13 +567,6 @@ bool TReport_mask::save_report() if (ok) _is_dirty = false; } - if (is_power_station()) - { - DIRECTORY dir; - - xvt_fsys_get_default_dir(&dir); - xvt_fsys_set_dir(&dir); - } return ok; } diff --git a/src/ba/batbiva.uml b/src/ba/batbiva.uml index 1b74f4c28..ddaacf0b2 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 28 +LIST LST_TABIVA_S1 2 20 BEGIN PROMPT 2 2 "Tipo " FIELD S1 @@ -70,15 +70,11 @@ 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 - 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 +END STRING FLD_TABIVA_S6 4 BEGIN - PROMPT 44 2 "C.IVA a cui ventilare " + PROMPT 39 2 "C.IVA a cui ventilare " FLAGS "U" FIELD S6 COPY USE FLD_TABIVA_CODTAB @@ -150,7 +146,7 @@ END BOOLEAN CHK_TABIVA_B5 BEGIN - PROMPT 30 5 "Escluso dal calcolo dei bolli su fatture esenti" + PROMPT 30 5 "Escluso dal calcolo dei bolli sufatture esenti" FIELD B5 END @@ -192,8 +188,6 @@ 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" @@ -207,7 +201,6 @@ 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/cb/source/f4temp.c b/src/cb/source/f4temp.c index 17c23b9f0..877274791 100755 --- a/src/cb/source/f4temp.c +++ b/src/cb/source/f4temp.c @@ -249,7 +249,7 @@ int file4tempLow( FILE4 *file, CODE4 *c4, const int autoRemove ) time( &t ) ; t %= 10000L ; - c4ltoa45( (long)t, fileName + 4, -4 ) ; + c4ltoa45( t, fileName + 4, -4 ) ; u4nameMake( name, sizeof( name ), drive, env + strlen( drive ), fileName ) ; rc = file4create( file, c4, name, 1 ) ; diff --git a/src/cb/source/i4add.c b/src/cb/source/i4add.c index d8a054076..7bae57cc3 100755 --- a/src/cb/source/i4add.c +++ b/src/cb/source/i4add.c @@ -674,7 +674,7 @@ static int i4addOneTag( INDEX4 *i4, const TAG4INFO *tagData ) break ; } - tagFile->header.exprLen = (short) strlen( tagFile->expr->source ) + 1 ; + tagFile->header.exprLen = strlen( tagFile->expr->source ) + 1 ; if ( tagData[0].filter != 0 ) if ( *( tagData[0].filter ) != '\0' ) { @@ -688,7 +688,7 @@ static int i4addOneTag( INDEX4 *i4, const TAG4INFO *tagData ) rc = error4code( c4 ) ; break ; } - tagFile->header.filterLen = (short)strlen( tagFile->filter->source ) ; + tagFile->header.filterLen = strlen( tagFile->filter->source ) ; } tagFile->header.filterLen++ ; /* minimum of 1, for the '\0' */ diff --git a/src/ce/ce1300.cpp b/src/ce/ce1300.cpp index 43bd53d71..6013eb60f 100755 --- a/src/ce/ce1300.cpp +++ b/src/ce/ce1300.cpp @@ -230,9 +230,9 @@ bool TSelam_qmask::on_field_event(TOperable_field& o, TField_event e, long jolly const TRectype & ammce = cache().get(LF_AMMCE, key); if (!ammce.empty()) { - if (ammce.get_bool(AMMCE_FZPER)) + if (ammce.get_bool(AMMCE_FZPER) == TRUE) return error_box(TR("Sul cespite sono state forzate le Percentuali:\nprocedere dalla forzatura ammortamenti su cespite")); - if (ammce.get_bool(AMMCE_FZQUO)) + if (ammce.get_bool(AMMCE_FZQUO) == TRUE) return error_box(TR("Sul cespite sono state forzate le Quote:\nprocedere dalla forzatura ammortamenti su cespite")); } diff --git a/src/ce/ce2100.cpp b/src/ce/ce2100.cpp index 0f628d881..8e92d11f9 100755 --- a/src/ce/ce2100.cpp +++ b/src/ce/ce2100.cpp @@ -120,7 +120,6 @@ bool TCalcamm::calcola_ammortamenti() break; TCespite cespite(cur.curr()); - for (int tipo_sit = 1; tipo_sit <= 3; tipo_sit++) cespite.calc_amm(tipo_sit, data_limite, true); } diff --git a/src/cg/cg2100.cpp b/src/cg/cg2100.cpp index 6533921d3..1013a4605 100755 --- a/src/cg/cg2100.cpp +++ b/src/cg/cg2100.cpp @@ -50,8 +50,6 @@ public: TString4 _causale_originale; TipoIVA _iva_originale; TString_array _iva; - TString _idsdi; - TDate _datasdi; }; /////////////////////////////////////////////////////////// @@ -61,7 +59,7 @@ public: TPrimanota_application::TPrimanota_application() : _rel(nullptr), _mode(0), _iva(nessuna_iva), _causale(nullptr), _giornale(nullptr), _lastreg(0), _last_dreg(TODAY), _last_dcom(TODAY), _automatico(nullptr), _swap_mask(false), _is_set_fpcheck(false), _f1_ini(false), _f1_liq(false), - _skip_giornale_check(false), _skip_bollato_check(false), _pro_mask(nullptr) + _skip_giornale_check(false), _skip_bollato_check(false) { memset(_msk, 0, sizeof(_msk)); } @@ -441,7 +439,7 @@ bool TPrimanota_application::read_caus(const char* cod, int year) } const char sezione = rcaus->get_char(RCA_SEZIONE); - TImporto zero('D', ZERO); + const TImporto zero('D', ZERO); const TString80 desc(causale().desc_agg(i)); if (nriga == 1) m->set(F_DESCR, desc); @@ -699,7 +697,7 @@ void TPrimanota_application::init_mask(TMask& m) _sal_dirty = false; // Azzero il flag di modifica del saldaconto fill_sheet(m); // Riempe righe contabili coi conti della causale m.hide(F_LINKDOC); - has_f1_db(m); + set_has_f1_db(&m); } void TPrimanota_application::init_query_mode(TMask& m) @@ -738,7 +736,7 @@ void TPrimanota_application::init_query_mode(TMask& m) m.set(F_CODCAUS, ini.get(MOV_CODCAUS)); m.send_key(K_SPACE, DLG_NEWREC); } - has_f1_db(m); + set_has_f1_db(&m); } @@ -997,19 +995,17 @@ void TPrimanota_application::init_insert_mode(TMask& m) m.enable(F_BOLLACODCLI, causale().tipo_doc() == "BD"); m.enable(F_BOLLARAGCLI, causale().tipo_doc() == "BD"); } - if (iva() != nessuna_iva) - f1_init(m, m.get_date(F_DATAREG) >= get_data_start_fatt()); } -void TPrimanota_application::f1_init(TMask& m, const bool fe_enabled, const bool f1_linked) +void TPrimanota_application::f1_init_modify(TMask& m, const TRectype& mov) { - const bool reverse_charge = app().causale().reverse_charge_pubb(); + const bool after_data_inizio_fe = mov.get_date(MOV_DATADOC) >= get_data_start_fatt(); - m.field(F_IDDOCSDI).show(fe_enabled && reverse_charge); - m.field(F_DATADOCSDI).show(fe_enabled && reverse_charge); - m.field(F_COLFPPRO).show(fe_enabled); - m.field(DLG_LINK).enable(fe_enabled); - m.set(F_COLFPPRO, fe_enabled && f1_linked, 0x3); + m.field(F_IDDOCSDI).show(after_data_inizio_fe); + m.field(F_DATADOCSDI).show(after_data_inizio_fe); + m.field(F_COLFPPRO).show(after_data_inizio_fe); + m.field(DLG_LINK).enable(after_data_inizio_fe); + m.set(F_COLFPPRO, !after_data_inizio_fe || mov.get(MOV_KEYFPPRO).empty() ? " " : "X"); } void TPrimanota_application::init_modify_mode(TMask& m) @@ -1120,7 +1116,7 @@ void TPrimanota_application::init_modify_mode(TMask& m) m.enable(F_BOLLARAGCLI, causale().tipo_doc() == "BD"); } if (iva() != nessuna_iva) - f1_init(m, mov.get_date(MOV_DATADOC) >= get_data_start_fatt(), mov.get(MOV_KEYFPPRO).full()); + f1_init_modify(m, mov); } // Controlla sulla causale se il segno del totale documento (ritsoc=false) @@ -1492,14 +1488,18 @@ void TPrimanota_application::check_saldi() void TPrimanota_application::write_fppro() { - if (main_app().has_module(FPAUT) && !ini_get_bool(CONFIG_INSTALL, "Main", "SkipFPPRO")) +#ifdef DBG + if (!ini_get_bool(CONFIG_INSTALL, "Main", "SkipFPPRO")) { +#endif // Controllo se la registrazione ha avuto effetto anche su FPPRO allora salvo riferimento sul mov if (save_fppro() > 0 && !save_dbmov()) message_box( "ATTENZIONE: non e' stato possibile salvare i riferimenti del documento in ingresso per questo movimento.\n" "Movimento registrato senza collegamento ai documenti in ingresso."); +#ifdef DBG } +#endif } bool TPrimanota_application::has_tot_doc(TToken_string& fppro_keys) @@ -1556,7 +1556,7 @@ void TPrimanota_application::set_movcoll(const long movcoll, const long numreg) } int TPrimanota_application::controlli_f1(const TMask& m) { - if (iva_mask(m) && m.get(F_PROKEY).full() && has_f1_db(m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS))) + if (m.find_by_id(F_PROKEY) != nullptr && m.get(F_PROKEY).full() && has_f1_db((TMask*)&m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS))) { TToken_string keys(m.get(F_PROKEY), ';'); const TDate dataoraric = fppro_db().set_keys(keys).get_dataorarioric(); @@ -1717,19 +1717,10 @@ int TPrimanota_application::rewrite(const TMask& m) if (caus.reverse_charge_pubb()) { - long movcoll = m.get_long(F_MOVCOLL); + const long movcoll = m.get_long(F_MOVCOLL); if (movcoll == 0L) find_movcoll(_rel->file().get_long(MOV_NUMREG)); - movcoll = m.get_long(F_MOVCOLL); - if (movcoll > 0L) - { - TRectype & reccoll = (TRectype &) cache().get(LF_MOV, movcoll); - - reccoll.put(MOV_IDDOCSDI, m.get(F_IDDOCSDI)); - reccoll.put(MOV_DATADOCSDI, m.get(F_DATADOCSDI)); - reccoll.rewrite(); - } } mask2rel(m); @@ -1797,7 +1788,7 @@ void TPrimanota_application::clean_fppro() // Controlli: solo in mod modifica; che abbia fp-f1 (no F8); che non sono in salvataggio if (_mode != MODE_MOD - || !has_f1_db(msk) + || !has_f1_db(&msk) || last_key != K_DEL && last_key != K_SAVE && last_key != K_ELIMMAS && last_key != K_QUIT && !scollega()) return; @@ -1812,17 +1803,27 @@ void TPrimanota_application::clean_fppro() fp_db().sq_commit(); } -bool TPrimanota_application::has_f1() const +void TPrimanota_application::set_has_f1_db(TMask* m) { - return has_module(F1AUT) && get_db_indirizzo().full(); + if (m->find_by_id(F_DATAREG) != nullptr && !m->get(F_DATAREG).empty()) + { + if (TDate(m->get(F_DATAREG)) >= TDate(get_data_start_fatt())) + _isf1 = has_module(F1AUT) && !get_db_indirizzo().empty(); + else + _isf1 = false; + _is_set_fpcheck = true; + } + else if (!_is_set_fpcheck) + { + _isf1 = false; + _is_set_fpcheck = true; + } } -bool TPrimanota_application::has_f1_db(const TMask & m) +bool TPrimanota_application::has_f1_db(TMask* m) { - const TDate datareg = m.get_date(F_DATAREG); - - _is_set_fpcheck = true; - return datareg.ok() && (datareg >= get_data_start_fatt()) && has_f1(); + set_has_f1_db(m); + return _isf1; } bool TPrimanota_application::remove() @@ -1891,8 +1892,6 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm) _automatico->_movcoll = m.get_long(F_NUMREG); _automatico->_iva.destroy(); _automatico->_totale = ZERO; - _automatico->_idsdi = m.get(F_IDDOCSDI); - _automatico->_datasdi = m.get(F_DATADOCSDI); for (int i = 0; i < items; i++) { TToken_string row = iva.row(i); @@ -1980,9 +1979,6 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm) const TString& clnt = cache().get(LF_CLIFO, forn, CLI_CODCFASS); m.set(F_CODCLIFOR, clnt); } - m.set(F_IDDOCSDI, _automatico->_idsdi); - m.set(F_DATADOCSDI, _automatico->_datasdi); - TSheet_field & iva = m.sfield(F_SHEETIVA); const int items = _automatico->_iva.items(); @@ -2676,7 +2672,7 @@ int TPrimanota_application::save_fppro() TMask& msk = curr_mask(); // Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP - if (!has_f1_db(msk)) + if (!has_f1_db(&msk)) return pro_nofp; // Anzitutto guardo la modalita' in cui sono @@ -2741,7 +2737,7 @@ int TPrimanota_application::save_fppro() items = fp_db().sq_items(); } - if(has_f1_db(msk) && items != 1) + if(has_f1_db(&msk) && items != 1) { const bool forza = noyes_box("Attenzione, al movimento non e' stato abbinato nessun documento elettronico.\n" "Per consentire una corretta archiviazione sostitutiva si consiglia di provvedere al controllo della registrazione e di procedere\n" @@ -2855,7 +2851,6 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action) const BOOLEAN bModify = xvt_str_same(action, "Modify"); - TFilename intrini; intrini.tempdir(); intrini.add("ActIntra.ini"); diff --git a/src/cg/cg2100c.uml b/src/cg/cg2100c.uml index 3a69254b4..f681a0adb 100755 --- a/src/cg/cg2100c.uml +++ b/src/cg/cg2100c.uml @@ -569,7 +569,7 @@ END STRING F_PROKEY 80 BEGIN - PROMPT 1 26 "db key" + PROMPT 1 19 "db key" HELP "Chiave database" FIELD KEYFPPRO FLAGS "H" diff --git a/src/cg/cg2100t.uml b/src/cg/cg2100t.uml index 96590a6a6..ec4eb71cd 100644 --- a/src/cg/cg2100t.uml +++ b/src/cg/cg2100t.uml @@ -13,14 +13,12 @@ BEGIN PROMPT 2 1 "Contabilizzaz." PICTURE TOOL_EXPORT MODULE F1 - MESSAGE EXIT,K_ENTER END BUTTON DLG_LINK 2 2 BEGIN PROMPT 3 1 "Collega in Prima nota" PICTURE TOOL_LINK - MESSAGE EXIT,K_ENTER END BUTTON DLG_QUIT 2 2 diff --git a/src/cg/cg2102.cpp b/src/cg/cg2102.cpp index e334045ca..cdb67df4f 100755 --- a/src/cg/cg2102.cpp +++ b/src/cg/cg2102.cpp @@ -219,10 +219,7 @@ TSheet_field& TPrimanota_application::cgs() const void TPrimanota_application::set_cgs_imp(int n, const TImporto& imp) { TSheet_field& s = cgs(); - TImporto i(imp); - - i.normalize(); - i.add_to(s.row(n), 0); + imp.add_to(s.row(n), 0); s.force_update(n); } @@ -374,7 +371,7 @@ void TPrimanota_application::reset_sheet_row(TSheet_field& s, int n) s.destroy(n); // Remove line n } -int TPrimanota_application::set_cgs_row(int n, TImporto& importo, +int TPrimanota_application::set_cgs_row(int n, const TImporto& imp, const TBill& conto, const char* desc, char tipo, const char* cms, const char* fas) { @@ -383,8 +380,7 @@ int TPrimanota_application::set_cgs_row(int n, TImporto& importo, TToken_string& row = cg.row(n); row.cut(0); - importo.normalize(); - importo.add_to(row, 0); + imp.add_to(row, 0); row.add(conto.string(0x3)); row.add(""); // Codice decrizione row.add(desc); // Descrizione aggiuntiva @@ -1540,7 +1536,7 @@ void TPrimanota_application::add2cg_row(TSheet_field& s, TToken_string & row, TS { const TBill conto(row, cid2index(IVA_TIPO), 0x1); const int pos = bill2pos(conto, cgrowtype_imponibile); // Riga in cui andra' l'imponibile - TImporto imp = a.real2imp(d > 0 ? imp_det : imp_ind, tipod); // Imponibile + const TImporto imp = a.real2imp(d > 0 ? imp_det : imp_ind, tipod); // Imponibile if (pos >= 0) // Se il conto esisteva anche prima ... { @@ -1765,7 +1761,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& s, int r, KEY k) real pimponibile(pag.imponibile(inv)); pimponibile.round(pag.round(inv)); - if ((pimposta != imposta || pimponibile != imponibile) && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare()))) + if ((pimposta != imposta || pimponibile != imponibile) && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back()))) a.set_scadenze(m); // Ricalcola rate } } @@ -2846,7 +2842,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m) TImporto imp = real2imp(m.get_real(F_TOTALE), cgrowtype_totale); - set_cgs_row(riga_totale, imp, nuovo, descr, cgrowtype_totale); + set_cgs_row(riga_totale, imp.normalize(), nuovo, descr, cgrowtype_totale); } calcola_imp(); // Ricalcola totale IVA calcola_saldo(); // Ricalcola sbilanci @@ -3022,7 +3018,7 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key) ixc->set(ic ? "X" : ""); } if(m.get(F_PROKEY).empty() && app().has_module(F1AUT)) - a.fppro_mask(f, key); + fppro_mask(f, key); } } return true; @@ -3566,11 +3562,21 @@ HIDDEN void inventa_cambio_intra(TMask& m) { const TString& codval = m.get(F_VALUTAINTRA); - if (codval.full() && TCurrency::get_firm_val() != codval) + if (codval.not_empty() && TCurrency::get_firm_val() != codval) { - const TRectype & cam =cache().get("CAM", codval); + TTable cam("CAM"); - if (cam.full()) + cam.put("CODTAB", codval); + const int err = cam.read(_isgteq); + bool yes = err != NOERR; + if (!yes) + { + TString16 v = cam.get("CODTAB"); + + v.cut(3).rtrim(); + yes = v != codval; + } + if (yes) m.set(F_CAMBIOINTRA, cache().get("%VAL", codval, "S4")); } } @@ -3897,74 +3903,71 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key) return true; } - -void TPrimanota_application::write_righe_iva_f1(TMask& cg_msk, const TPro_msk & msk) +void TPrimanota_application::write_righe_iva_f1(TMask& cg_msk, const shared_ptr& msk) { TSheet_field& sf = cg_msk.sfield(F_SHEETIVA); - const TString_array& righe = msk.get_righeiva(); + const vector& righe = msk->get_righeiva(); + int i = 0; - FOR_EACH_ARRAY_ITEM( righe, r, obj) + for (auto it = righe.begin(); it != righe.end(); ++it) { - TToken_string & riga = STRING_TOKEN(obj); - const real imponibile = riga.get_real(FPRI_IMPONIBILE); - const real imposta = riga.get_real(FPRI_IMPOSTA); - - if (imponibile != ZERO || imposta != ZERO) + if(it->imponibile != 0 || it->imposta != 0) { - TToken_string& row = sf.row(r); + TToken_string& row = sf.row(i); - sf.notify(r, K_SPACE); - sf.set_row_cell(IVA_IMPONIBILE, imponibile, r); - sf.set_row_cell(IVA_IMPOSTA, imposta, r); - sf.set_row_cell(IVA_PERCIVA, riga.get(FPRI_ALIQUOTA), r); - sf.set_row_cell(IVA_NATURIVA, riga.get(FPRI_NATURA), r); - sf.notify(r, K_ENTER); + sf.notify(i, K_SPACE); + row.add(it->imponibile, cid2index(IVA_IMPONIBILE)); + row.add(it->imposta, cid2index(IVA_IMPOSTA)); + row.add(it->aliquota, cid2index(IVA_PERCIVA)); + row.add(it->natura, cid2index(IVA_NATURIVA)); + sf.notify(i, K_ENTER); + i++; } } } -bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const TPro_msk & msk) +bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const shared_ptr& msk) { TSheet_field& sf = cg_msk.sfield(FS_RATESHEET); const int items = sf.items(); - const TString_array & righe = msk.get_scadenze(); + const vector& righe = msk->get_scadenze(); + int i = 0; - FOR_EACH_ARRAY_ITEM(righe, r, obj) + for (auto it = righe.begin(); it != righe.end(); ++it, ++i) { - TToken_string& row = app().pags().row(r); - TToken_string & riga = STRING_TOKEN(obj); + TToken_string& row = app().pags().row(i); - if (r >= items) - pag_notify(sf, r, K_CTRL+K_INS); - pag_notify(sf, r, K_SPACE); - sf.set_row_cell(101, riga.get_date(FPSC_DATA), r); - sf.set_row_cell(102, riga.get_real(FPSC_IMPORTO), r); - pag_notify(sf, r, K_ENTER); + if(i >= items) + pag_notify(sf, i, K_CTRL+K_INS); + pag_notify(sf, i, K_SPACE); + row.add(it->data, cid2index(101)); + row.add(it->importo, cid2index(102)); + pag_notify(sf, i, K_ENTER); } - return righe.items() > 0; + return !righe.empty(); } -void TPrimanota_application::write_clifo(TMask& cg_msk, const TPro_msk & msk) +void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr& msk) { bool ok = false; TLocalisamfile clifo(LF_CLIFO); - TToken_string keys(msk.get_fpprokeys(), ';'); - long codforn = TFppro(keys).get_codforn(); + TToken_string keys(msk->get_fpprokeys(), ';'); + TString codforn = TFppro(keys).get_codforn(); - if (codforn == 0L) - codforn = msk.get_codforn(); - if (codforn == 0L) + if (codforn.empty()) + codforn = msk->get_codforn(); + if (codforn.empty()) { clifo.setkey(5); clifo.put(CLI_TIPOCF, "F"); - clifo.put(CLI_PAIV, msk.get_piva()); + clifo.put(CLI_PAIV, msk->get_piva()); clifo.read(); - ok = clifo.get(CLI_PAIV) == msk.get_piva(); + ok = clifo.get(CLI_PAIV) == msk->get_piva(); if(!ok) { clifo.zero(); clifo.setkey(5); clifo.put(CLI_TIPOCF, "F"); - clifo.put(CLI_PAIV, msk.get_piva()); + clifo.put(CLI_PAIV, msk->get_piva()); clifo.put(CLI_STATOPAIV, "IT"); clifo.read(); } @@ -3976,8 +3979,8 @@ void TPrimanota_application::write_clifo(TMask& cg_msk, const TPro_msk & msk) clifo.put(CLI_CODCF, codforn); clifo.read(); } - ok = clifo.get(CLI_PAIV) == msk.get_piva(); - if (ok && (cg_msk.get_long(F_CODCLIFOR) == 0 || cg_msk.get_long(F_CODCLIFOR) != codforn)) + ok = clifo.get(CLI_PAIV) == msk->get_piva(); + if (ok && (cg_msk.get(F_CODCLIFOR).empty() || cg_msk.get(F_CODCLIFOR) != codforn)) { cg_msk.set(F_CODCLIFOR, clifo.get(CLI_CODCF)); cg_msk.set(F_RAGSOCCF, clifo.get(CLI_RAGSOC)); @@ -3985,21 +3988,20 @@ void TPrimanota_application::write_clifo(TMask& cg_msk, const TPro_msk & msk) cg_msk.set(F_PIVA, clifo.get(CLI_PAIV)); cg_msk.set(F_COFI, clifo.get(CLI_COFI)); cg_msk.set(F_CODPAG, clifo.get(CLI_CODPAG)); - - const TRectype & tab = cache().get("%CPG", clifo.get(CLI_CODPAG)); - + TTable tab("%CPG"); tab.put("CODTAB", clifo.get(CLI_CODPAG)); + tab.read(); cg_msk.set(F_DESPAG, tab.get("S0")); } } -void TPrimanota_application::set_totale(TMask& cg_msk, TPro_msk & msk) +void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptr& msk) { - real totale = msk.get_totdoc(); + real totale = msk->get_totdoc(); - if (totale == ZERO) + if(totale == ZERO) totale = app().calcola_imp(); - const real rit = msk.get_ritenute(); + const real rit = msk->get_ritenute(); if (rit != ZERO) { @@ -4007,83 +4009,78 @@ void TPrimanota_application::set_totale(TMask& cg_msk, TPro_msk & msk) cg_msk.set(F_RITFIS, rit); app().add_cgs_ritenute(cgrowtype_ritfis); } - else - if (msk.is_doc_split()) - totale = msk.get_tot_imp_riva(); + else if (msk->is_doc_split()) + totale = msk->get_tot_imp_riva(); cg_msk.set(F_TOTALE, totale); } -void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, TPro_msk & msk) +void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, const shared_ptr& msk) { - const bool bring = msk.da_riportare(); + const bool bring = msk->should_bring_back(); if (bring) { - TPrimanota_application & a = app(); - - if (msk.get_numdoc() != 0L && cg_msk.get(F_CODCLIFOR).empty()) - a.write_clifo(cg_msk, msk); - a.write_righe_iva_f1(cg_msk, msk); - a.set_totale(cg_msk, msk); + if (msk->get_numdoc().full() && cg_msk.get(F_CODCLIFOR).empty()) + write_clifo(cg_msk, msk); + write_righe_iva_f1(cg_msk, msk); + set_totale(cg_msk, msk); cg_msk.set(FS_RECALC, ""); cg_msk.disable(FS_RDIFFER); cg_msk.disable(FS_MCOMM); cg_msk.disable(FS_NRATE); - if (a.write_scad_f1(cg_msk, msk)) - a.set_scad_f1(cg_msk); + if (write_scad_f1(cg_msk, msk)) + app().set_scad_f1(cg_msk); } // Li riporto anche con il collega in prima nota, e in quel caso solo se i campi non sono gia valorizzati - if (bring || cg_msk.get(F_NUMDOCEXT) != msk.get_str_numdoc()) + if (bring || cg_msk.get(F_NUMDOC).empty()) { - - cg_msk.set(F_NUMDOCEXT, msk.get_str_numdoc()); - cg_msk.set(F_NUMDOC, format("%-7ld", msk.get_numdoc())); - cg_msk.set(F_DATADOC, msk.get_datadoc()); - cg_msk.set(F_IDDOCSDI, msk.get_str_numdoc()); - cg_msk.set(F_DATADOCSDI, msk.get_datadoc()); - cg_msk.disable(F_IDDOCSDI); - cg_msk.disable(F_DATADOCSDI); + cg_msk.set(F_NUMDOCEXT, msk->get_numdoc()); + cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7)); } + + if (bring || cg_msk.get(F_DATADOC).empty()) + cg_msk.set(F_DATADOC, msk->get_datadoc()); } -void TPrimanota_application::insert_part_scad(TConfig& ini) // che cazzo significa la partita 73/001 +void TPrimanota_application::insert_part_scad(TConfig& ini) { - TArray rif_doc; - TString str = ini.get("NUMLINEA", "23", 0); + vector rif_doc; + int i = 0; + ini.set_paragraph("23"); // Carico nel vettore - for (int i = 0; str.full(); str = ini.get("NUMLINEA", "23", ++i)) + while(true) { TToken_string doc("", '|'); - + TString str; str << ini.get("NUMLINEA", nullptr, i, "NULL"); + if (str != "NULL") + { doc.add(str); - doc.add(ini.get("DOCRIF", "23", i)); - doc.add(ini.get("DATADOCRIF", "23", i)); - rif_doc.add(doc); + doc.add(ini.get("DOCRIF", nullptr, i, "NULL")); + doc.add(ini.get("DATADOCRIF", nullptr, i, "NULL")); + + rif_doc.insert(rif_doc.end(), doc); + i++; } + else + break; + } // Agganciare alla partita del documento di riferimento - if(rif_doc.items() > 0) + if(!rif_doc.empty()) { is_f1() = true; TString query; query << "USE MOV\nSELECT (DATADOC==#DATADOC)"; TISAM_recordset rec(query); + rec.set_var("#DATADOC", TVariant(TDate(rif_doc[0].get(2)))); TString part; - - FOR_EACH_ARRAY_ITEM(rif_doc, r, _obj) + do { - if (part.blank()) + if (rec.get(MOV_NUMDOC).as_string() == "73/001") { - rec.set_var("#DATADOC", ((TToken_string&)rif_doc[0]).get_date(2)); - - for (bool ok = rec.move_first(); ok; ok = rec.move_next()) - { - if (rec.get_string(MOV_NUMDOC) == "73/001") - { - part = rec.get_string(MOV_PROTIVA); + part = rec.get(MOV_PROTIVA).as_string(); break; } } while (rec.move_next()); - } - } + _num_doc_rif_partite = part; } } @@ -4095,10 +4092,9 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key) if (!app().has_module(FPAUT) || key != K_SPACE && key != K_TAB || !check_causale(cg_msk.get(F_CODCAUS))) return true; - TPro_msk * msk = app()._pro_mask; - - if (msk == nullptr) - app()._pro_mask = msk = new TPro_msk(cg_msk); + auto msk = std::make_shared(cg_msk); + + app()._pro_mask = msk; const TString datadoc = cg_msk.get(F_DATADOC); @@ -4108,13 +4104,16 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key) msk->field(F_DATESEARCH).show(); msk->set(F_DATESEARCH, datadoc); } + if (msk->load_fppro_mask(msk.get())) + { msk->run(); // Riporto dati FPPRO su maschera Prima Nota (solo se hai F1) // Se non hai F1 collego senza riportarti i dati (solo le chiavi db) - riporta_dati_f1(cg_msk, *msk); + riporta_dati_f1(cg_msk, msk); cg_msk.set(F_PROKEY, msk->get_fpprokeys()); - cg_msk.set(F_COLFPPRO, cg_msk.get(F_PROKEY).full()); + is_collegato(cg_msk.field(F_COLFPPRO)); cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA)); + } return true; } @@ -4133,11 +4132,11 @@ bool TPrimanota_application::scollega(const bool set) bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key) { - if (app().has_module(FPAUT) && f.running_check(key)) - { TMask& cg_msk = f.mask(); - if (check_causale(cg_msk.get(F_CODCAUS)) && cg_msk.get_bool(F_COLFPPRO)) + if (!app().has_module(FPAUT) || key != K_SPACE && key != K_TAB || !check_causale(cg_msk.get(F_CODCAUS))) + return true; + if (cg_msk.get_bool(F_COLFPPRO)) { scollega(true); app().clean_fppro(); @@ -4151,81 +4150,103 @@ bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key) } message_box("Il movimento e' stato scollegato dalla fattura elettronica\nin ingresso, precedentemente associata."); } - } return true; } -bool TPro_msk::load_fppro_mask(TMask & msk) +bool TPrimanota_application::is_collegato(TMask_field& f) +{ + TMask& cg_msk = f.mask(); + const bool has_prokey = !cg_msk.get(F_PROKEY).empty(); + + f.set(has_prokey ? "X" : " "); + return has_prokey; +} + +bool TPro_msk::load_fppro_mask(TMask* msk, KEY k) { // Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP + if (k != 32) + return false; if (!fp_db().sq_is_connect()) { message_box("Attenzione connessione al database non riuscita.\nImpossibile collegarsi ai documenti in entrata."); return false; } - const int forn = msk.get_int(F_CODCLIFORS); + const int forn = msk->get_int(F_CODCLIFORS); if (forn == 0) { - msk.set(F_ENABSEARCH, "X"); - abilita_piva(); + msk->set(F_ENABSEARCH, "X"); + abilita_piva(msk); //message_box("Inserire prima il fornitore"); //return false; } - const TString& codfisc = msk.get(F_COFIS); - const TString& stato_piva = msk.get(F_STATOPAIVS); - const TString& piva = msk.get(F_PIVAS); + const TString& codfisc = msk->get(F_COFIS); + const TString& stato_piva = msk->get(F_STATOPAIVS); + const TString& piva = msk->get(F_PIVAS); TString query; - TDate date; + TString date = ""; - if (msk.get_bool(F_ENABDATE)) - date = msk.get_date(F_DATESEARCH); - if(!msk.get_bool(F_ENABSEARCH)) - query = query_fppro(msk.get(F_CODCLIFORS), date); + if (msk->get_bool(F_ENABDATE)) + date = msk->get_date(F_DATESEARCH); + if(!msk->get_bool(F_ENABSEARCH)) + query = query_fppro(msk->get(F_CODCLIFORS), date); else query = query_fppro(stato_piva, piva, date); fp_db().sq_set_exec(query, false); - TSheet_field& sf = msk.sfield(F_SHEETFPPROS); - const bool show_all = msk.get_bool(F_SHOWALL); + TSheet_field& sf = msk->sfield(F_SHEETFPPROS); - sf.reset(); + sf.hide(); + if (sf.items() > 0) + sf.destroy(); while (fp_db().sq_next()) { - const long numreg = fp_db().sq_get_long("PZ_NUMREGCONT"); + TString numreg = fp_db().sq_get("PZ_NUMREGCONT"); + const bool show_all = msk->get_bool(F_SHOWALL); - if (show_all || numreg == 0L) - { + if (numreg != "0" && !show_all) + continue; + + TToken_string& row = sf.row(-1); TToken_string keys(fp_db().sq_get("PZ_KEYPRGINVIO"), ';'); keys.add(fp_db().sq_get("PZ_KEYHEADERFATT")); keys.add(fp_db().sq_get("PZ_KEYBODYFATT")); - - const int r = sf.set_row_cell(F_SELFPPROS, ""); - - sf.set_row_cell(F_TIPODOCS, fp_db().sq_get("P7_TIPODOC"), r); - sf.set_row_cell(F_DATAORARICS, fp_db().sq_get_date("P1_DATAORARIC"), r); - sf.set_row_cell(F_DATAS, fp_db().sq_get_date("PZ_DATA"), r); - sf.set_row_cell(F_IMPTOTDOCS, fp_db().sq_get("PQ_IMPTOTDOC"), r); - sf.set_row_cell(F_RITENUTE, fppro_db().set_keys(keys).get_ritenute(), r); - sf.set_row_cell(F_NUMEROS, fp_db().sq_get("PZ_NUMERO"), r); - sf.set_row_cell(F_RAGXML, fp_db().sq_get("P2_ANADENOMIN"), r); - sf.set_row_cell(F_FISCIVAPAESES, fp_db().sq_get("P2_FISCIVAPAESE"), r); - sf.set_row_cell(F_FISCIVACODS, fp_db().sq_get("P2_FISCIVACOD"), r); - sf.set_row_cell(F_CODFISCALES, fp_db().sq_get("P2_CODFISCALE"), r); - sf.set_row_cell(F_TIPOPROTS, fp_db().sq_get("PZ_TIPOPROT"), r); - sf.set_row_cell(F_PROGRESSS, fp_db().sq_get("PZ_NUMPROT"), r); - sf.set_row_cell(F_KEYFPPROS, keys, r); - } + row.add("", 0); + row.add(fp_db().sq_get("P7_TIPODOC")); + row.add(TDate(fp_db().sq_get_date("P1_DATAORARIC"))); + row.add(TDate(fp_db().sq_get_date("PZ_DATA"))); + row.add(fp_db().sq_get("PQ_IMPTOTDOC")); + row.add(fppro_db().set_keys(keys).get_ritenute()); + row.add(fp_db().sq_get("PZ_NUMERO")); + row.add(fp_db().sq_get("P2_ANADENOMIN")); + row.add(fp_db().sq_get("P2_FISCIVAPAESE")); + row.add(fp_db().sq_get("P2_FISCIVACOD")); + row.add(fp_db().sq_get("P2_CODFISCALE")); + row.add(fp_db().sq_get("PZ_TIPOPROT")); + row.add(fp_db().sq_get("PZ_NUMPROT")); + row.add(keys); } sf.force_update(); + sf.show(); return true; } -bool TPro_msk::riporta(TMask_field& f) +bool TPro_msk::fppro_handler(TMask_field& f, KEY k) { TMask& msk = f.mask(); + + const bool load = load_fppro_mask(&msk, k); + return load; +} + +bool TPro_msk::riporta_handler(TMask_field& f, KEY k) +{ + if (k != 32) + return true; + TMask& msk = f.mask(); //if (msk.curr_page() != 3) //return true; bool ok = false; @@ -4233,10 +4254,16 @@ bool TPro_msk::riporta(TMask_field& f) FOR_EACH_SHEET_ROW(sf, nr, row) { - if(row->get_bool(0)) + if(*row->get(0) == 'X') { - app().pro_mask()->set_doc(sf, nr); - _riporta = f.dlg() == DLG_OK; + //TProtocollo protocollo(TDate(row->get(2)).year(), row->get(9), row->get(10)); + app()._pro_mask->set_doc(row->get(cid2index(F_NUMEROS)), row->get(cid2index(F_DATAS)), + row->get(cid2index(F_IMPTOTDOCS)), row->get(cid2index(F_RITENUTE)), "", row->get(cid2index(F_KEYFPPROS)), + msk.get(F_CODCLIFORS), row->get(cid2index(F_FISCIVACODS))); + if (f.dlg() == DLG_OK) + app()._pro_mask->_riporta = true; + else + app()._pro_mask->_riporta = false; ok = true; break; } @@ -4250,56 +4277,67 @@ bool TPro_msk::riporta(TMask_field& f) return true; } +bool TPro_msk::collega_handler(TMask_field& f, KEY k) +{ + return riporta_handler(f, k); +} + +bool TPro_msk::piva_handler(TMask_field& f, KEY k) +{ + TMask& msk = f.mask(); + bool ok = true; + + if(k == K_TAB && f.active() && f.focusdirty()) + { + ok = load_fppro_mask(&msk, K_SPACE); + } + return ok; +} + +bool TPro_msk::date_handler(TMask_field& f, KEY k) +{ + TMask& msk = f.mask(); + bool ok = true; + + if (k == K_TAB && f.active() && f.focusdirty()) + { + ok = load_fppro_mask(&msk, K_SPACE); + } + return ok; +} + void TPro_msk::fppro_selfatt() const { const TMask& mask = *this; TSheet_field& sf = mask.sfield(F_SHEETFPPROS); + sf.hide(); FOR_EACH_SHEET_ROW(sf, nr, row) - if (sf.get_bool_row_cell(nr, F_SELFPPROS)) - sf.set_row_cell(F_SELFPPROS, false, nr); + { + if (*row->get(0) == 'X') + row->add("", 0); + } sf.force_update(); + sf.show(); } bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) { - TMask & m = o.mask(); - switch (o.dlg()) { - case DLG_CONFIG: - if (e == fe_button) - load_fppro_mask(m); - break; - case DLG_OK: - if (e == fe_button) - riporta(o); - break; - case DLG_LINK: - if (e == fe_button) - riporta(o); - break; - case F_PIVAS: - if (e == fe_modify) - load_fppro_mask(m); - break; - case F_DATESEARCH: - if (e == fe_modify) - load_fppro_mask(m); - break; case F_SELFPPROS: if (e == fe_modify) fppro_selfatt(); break; case F_SHOWALL: if (e == fe_modify) - load_fppro_mask(m); + load_fppro_mask(this, K_SPACE); break; case F_ENABSEARCH: if (e == fe_modify) { - abilita_piva(); - load_fppro_mask(m); + abilita_piva(this); + load_fppro_mask(this); } break; case F_ENABDATE: @@ -4307,7 +4345,7 @@ bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) { field(F_DATESEARCH).show(o.mask().get_bool(F_ENABDATE)); if (!o.mask().get_bool(F_ENABDATE)) - load_fppro_mask(m); + load_fppro_mask(this); } break; default: @@ -4318,11 +4356,9 @@ bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TPro_msk::is_doc_split() { - FOR_EACH_ARRAY_ITEM(_righe_iva, r, obj) + for(riga_iva_s const& riga : _righe_iva) { - TToken_string & riga = STRING_TOKEN(obj); - - if (riga.get(FPRI_ESIGIBILITA) == "S") + if (riga.esigibilita == 'S') return true; } return false; @@ -4359,71 +4395,53 @@ void TPro_msk::set_scadenze(const char* fpprokeys) } } -void TPro_msk::set_doc(TSheet_field & s, int nrow) - //long numero, TDate datadoc, real totdoc, real ritenute, const char* protfppro, const char* fpprokeys, long codforn, const char* piva) +void TPro_msk::set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* codforn, const char* piva) { - _numero = s.get_long_row_cell(nrow, F_NUMEROS); - _str_numero = s.get_str_row_cell(nrow, F_NUMEROS); - _datadoc = s.get_date_row_cell(nrow, F_DATAS); - _totdoc = abs(s.get_real_row_cell(nrow, F_IMPTOTDOCS)); - _ritenute = s.get_real_row_cell(nrow, F_RITENUTE); - _protfppro.sset(""); - - const TString & fpprokeys = s.get_str_row_cell(nrow, F_KEYFPPROS); - + _numero = numero; + _datadoc = datadoc; + _totdoc = abs(totdoc); + _ritenute = ritenute; + _protfppro.sset(protfppro); _fpprokeys = fpprokeys; + _codforn = codforn; + _piva = piva; set_righeiva(fpprokeys); - set_scadenze(fpprokeys); - _codforn = s.get_long_row_cell(nrow, F_CODCLIFORS); - _piva = s.get_str_row_cell(nrow, F_FISCIVACODS); - + set_scadenze(fpprokeys); } real TPro_msk::get_tot_imp_riva() { - real tot; + real tot = ZERO; - FOR_EACH_ARRAY_ITEM(_righe_iva, r, obj) + for(riga_iva_s const& riga : _righe_iva) { - TToken_string & riga = STRING_TOKEN(obj); - - tot += riga.get_real(FPRI_IMPONIBILE); + if (riga.imposta > ZERO) + tot += riga.imponibile; } return tot; } void TPro_msk::add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib) { - TToken_string riga; - - riga.add(imponibile, FPRI_IMPONIBILE); - riga.add(imposta, FPRI_IMPOSTA); - riga.add(aliquota, FPRI_ALIQUOTA); - riga.add(natura, FPRI_NATURA); - riga.add(esigib, FPRI_ESIGIBILITA); - _righe_iva.add(riga); + _righe_iva.insert(_righe_iva.end(), { imponibile, imposta, aliquota, natura, esigib }); } void TPro_msk::add_scad(const TDate& date, const real& importo) { - TToken_string riga; - - riga.add(date, FPSC_DATA); - riga.add(importo, FPSC_IMPORTO); - _scadenze.add(riga); + _scadenze.insert(_scadenze.end(), { date, importo }); } -TString& TPro_msk::query_fppro(const TString& codforn, const TDate& date) +TString& TPro_msk::query_fppro(const TString& codforn, const TString& date) { return query_fppro(codforn, "", "", "", date, "", "", "", true, false); } -TString& TPro_msk::query_fppro(const TString& stato_piva, const TString& piva, const TDate& date) +TString& TPro_msk::query_fppro(const TString& stato_piva, const TString& piva, const TString& date) { return query_fppro("", stato_piva, piva, "", date, "", "", "", true, true); } -TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TDate& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order, bool piva_research) +TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order, bool piva_research) { TString id_fornitore; TString keys; @@ -4447,15 +4465,14 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva id_fornitore << " (PZ_CLIFOR = '" << codforn << "') "; } - TString & query = query_string(); - - query << "WHERE "; + static TString query; + query.cut(0) << query_string() << "WHERE "; if (!id_fornitore.empty()) { query << id_fornitore << " "; - if (date.ok()) - query << " AND PZ_DATA = '" << date.date2ansi() << "' "; + if (!date.empty()) + query << " AND PZ_DATA = '" << TDate(date).date2ansi() << "' "; if (order) query << "\nORDER BY P1_DATAORARIC ASC"; query << ";"; @@ -4467,9 +4484,9 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva query << " AND " << where_str; query << ";"; } - else if (date.ok()) + else if (!date.empty()) { - query << " PZ_DATA = '" << date.date2ansi() << "' "; + query << " PZ_DATA = '" << TDate(date).date2ansi() << "' "; if (order) query << "\nORDER BY P1_DATAORARIC ASC, PZ_TIPOPROT ASC, PZ_NUMPROT ASC"; query << ";"; @@ -4484,9 +4501,9 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva TString& TPro_msk::query_string() { - TString & query = get_tmp_string(512); + static TString query; - query << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, " << + query.cut(0) << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, " << "PZ_NUMPROT, P2_ANADENOMIN, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" << "FROM PAA0200F \nJOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" << "JOIN PAA0100F \nON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" << @@ -4495,26 +4512,36 @@ TString& TPro_msk::query_string() return query; } -void TPro_msk::abilita_piva() +void TPro_msk::abilita_piva(TMask* msk) { - const bool on = get_bool(F_ENABSEARCH); - - enable(F_PIVAS, on); - enable(F_STATOPAIVS, on); - enable(F_COFIS, on); + if (msk->get_bool(F_ENABSEARCH)) + { + msk->enable(F_PIVAS); + msk->enable(F_STATOPAIVS); + } + else + { + msk->enable(F_PIVAS, false); + msk->enable(F_STATOPAIVS, false); + } } -TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2100t"), _riporta(false), _codforn(0L), _numero(0L) +TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2100t"), _riporta(false), _codforn("") { - enable(DLG_OK, app().has_module(F1AUT)); - set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR)); - set(F_COFIS, cg_msk.get(F_COFI)); - set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV)); - set(F_PIVAS, cg_msk.get(F_PIVA)); - set(F_RAGSOCS, cg_msk.get(F_RAGSOCCF)); + TMask::set_handler(DLG_CONFIG, fppro_handler); + TMask::set_handler(DLG_OK, riporta_handler); + if (!app().has_module(F1AUT)) + field(DLG_OK).disable(); + TMask::set_handler(DLG_LINK, collega_handler); + TMask::set_handler(F_PIVAS, piva_handler); + TMask::set_handler(F_DATESEARCH, date_handler); + TMask::set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR)); + TMask::set(F_COFIS, cg_msk.get(F_COFI)); + TMask::set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV)); + TMask::set(F_PIVAS, cg_msk.get(F_PIVA)); + TMask::set(F_RAGSOCS, cg_msk.get(F_RAGSOCCF)); set(F_DATESEARCH, TDate(TODAY)); - _righe_iva.destroy(); - _scadenze.destroy(); + _righe_iva.clear(); } bool& is_f1() @@ -4522,4 +4549,3 @@ bool& is_f1() static bool is_f1 = false; return is_f1; } - diff --git a/src/cg/cg2102.h b/src/cg/cg2102.h index d11920e2a..f44033988 100755 --- a/src/cg/cg2102.h +++ b/src/cg/cg2102.h @@ -27,78 +27,15 @@ #include #include "../f1/f1lib.h" +#include #define K_ELIMMAS 0 // Key per eliminazione massima -#define FPRI_IMPONIBILE 0 -#define FPRI_IMPOSTA 1 -#define FPRI_ALIQUOTA 2 -#define FPRI_NATURA 3 -#define FPRI_ESIGIBILITA 4 - -#define FPSC_DATA 0 -#define FPSC_IMPORTO 1 - +class TPro_msk; class TDati_mov_auto; enum CGMaskType { _query = 0, _no_iva = 1, _iva = 2, _occas = 3}; -class TPro_msk : public TAutomask -{ - long _numero; - TDate _datadoc; - real _totdoc; - real _ritenute; - TProtocollo _protfppro; - TString _fpprokeys; - TString _piva; - long _codforn; - TString_array _righe_iva; - TString_array _scadenze; - bool _riporta; - TString _str_numero; - - // Non permette la selezione multipla - void fppro_selfatt() const; - bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; -public: - bool da_riportare() const { return _riporta; } - bool is_doc_split() ; - - void set_righeiva(const char* fpprokeys); - void set_scadenze(const char* fpprokeys); - void set_doc(TSheet_field & s, int nrow); - - const long get_numdoc() const { return _numero; } - const TString & get_str_numdoc() const { return _str_numero; } - const TDate & get_datadoc() const { return _datadoc; } - const real & get_totdoc() const { return _totdoc; } - const real & get_ritenute() const { return _ritenute; } - const TString & get_fpprokeys() const { return _fpprokeys; } - const long get_codforn() const { return _codforn; } - const TString & get_piva() const { return _piva; } - const TString_array& get_righeiva() const { return _righe_iva; } - const TProtocollo& get_protocollo() const { return _protfppro; } - const TString_array& get_scadenze() const { return _scadenze; } - real get_tot_imp_riva() ; - - void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib); - void add_scad(const TDate& date, const real& importo); - - static TString& query_fppro(const TString& codforn, const TDate& date); - static TString& query_fppro(const TString& stato_piva, const TString& piva, const TDate& date); - static TString& query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TDate& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false); - static TString& query_string(); - - void abilita_piva(); - - // Carica documenti FPPRO sulla maschera - bool riporta(TMask_field& f); - bool load_fppro_mask(TMask & msk); - - TPro_msk(TMask& cg_msk); -}; - class TPrimanota_application : public TRelation_application { TMovimentoPN* _rel; // Relazione principale @@ -153,7 +90,7 @@ class TPrimanota_application : public TRelation_application TAssoc_array _colori; // Colori delle righe bool _isf1; - TPro_msk * _pro_mask; + shared_ptr _pro_mask; bool _is_set_fpcheck; int _last_date; bool _f1_ini; @@ -244,19 +181,20 @@ class TPrimanota_application : public TRelation_application // Gestione F1 - void write_righe_iva_f1(TMask& cg_msk, const TPro_msk & msk); - bool write_scad_f1(const TMask& cg_msk, const TPro_msk & msk); - void write_clifo(TMask& cg_msk, const TPro_msk & msk); - void set_totale(TMask& cg_msk, TPro_msk & msk); - static void riporta_dati_f1(TMask& cg_msk, TPro_msk & msk); + static void write_righe_iva_f1(TMask& cg_msk, const shared_ptr& msk); + static bool write_scad_f1(const TMask& cg_msk, const shared_ptr& msk); + static void write_clifo(TMask& cg_msk, const shared_ptr& msk); + static void set_totale(TMask& cg_msk, const shared_ptr& msk); + static void riporta_dati_f1(TMask& cg_msk, const shared_ptr& msk); void insert_part_scad(TConfig& ini); // Handlers per aggancio FPPRO // Bottone per maschera FPPRO static bool fppro_mask(TMask_field& f, KEY key); static bool scollega_handler(TMask_field& f, KEY key); + static bool is_collegato(TMask_field& f); static void fppromask_set_handl(TMask* msk); - void load_list(TMask* msk, KEY k); - void f1_init(TMask& m, const bool fe_enabled, const bool f1_linked = false); + static void load_list(TMask* msk, KEY k); + static void f1_init_modify(TMask& m, const TRectype& mov); void reset_sheet_row(TSheet_field& s, int n); int crea_somma_spese(TImporto& imp); @@ -285,10 +223,9 @@ protected: // TApplication static bool scollega(bool set = false); // Pulisce il mov e db dai firerimenti FPPRO (in MODE_MOD per edit/delete) void clean_fppro(); - // Ha f1 ? - bool has_f1() const; - // controlla il db - bool has_f1_db(const TMask & m); + // setta variabili prima del controllo has_f1_db + void set_has_f1_db(TMask* m); + bool has_f1_db(TMask* m); // Controlli prima di write e rewrite int controlli_f1(const TMask& m); @@ -384,7 +321,7 @@ protected: real calcola_imp() const; void add_cgs_tot(TMask& m); - int set_cgs_row(int n, TImporto& importo, const TBill& conto, const char* desc, char tipo, + int set_cgs_row(int n, const TImporto& importo, const TBill& conto, const char* desc, char tipo, const char* cms = nullptr, const char* fas = nullptr); void set_cgs_imp(int n, const TImporto& importo); bool add_cgs_imp(int n, const TImporto& importo); @@ -463,18 +400,98 @@ public: TString_array& pag_rows() { return _pag_rows; } TImporto get_cgs_imp(int n) const; - TPro_msk * pro_mask() const { return _pro_mask; } TImporto imposte_split_pay() const; const TString& num_doc_rif() const { return _num_doc_rif_partite; } TPrimanota_application(); - virtual ~TPrimanota_application() { safe_delete(_pro_mask); } + virtual ~TPrimanota_application() { } +}; + +class TPro_msk : public TAutomask +{ +public: + struct riga_iva_s; + struct scadenza_s; +private: + TString _numero; + TDate _datadoc; + real _totdoc; + real _ritenute; + TProtocollo _protfppro; + TString _fpprokeys; + TString _piva; + TString _codforn; + vector _righe_iva; + vector _scadenze; + bool _riporta; + + // Handlers per aggancio FPPRO + // Bottone carica documenti in maschera FPPRO + static bool fppro_handler(TMask_field& f, KEY k); + // Bottone riporta doc FPPRO in testata Prima Nota + static bool riporta_handler(TMask_field& f, KEY k); + static bool collega_handler(TMask_field& f, KEY k); + static bool piva_handler(TMask_field& f, KEY k); + static bool date_handler(TMask_field& f, KEY k); + // Non permette la selezione multipla + void fppro_selfatt() const; + bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; +public: + struct riga_iva_s + { + real imponibile; + real imposta; + real aliquota; + TString4 natura; + char esigibilita; + }; + struct scadenza_s + { + TDate data; + real importo; + }; + + bool should_bring_back() const { return _riporta; } + bool is_doc_split(); + + void set_righeiva(const char* fpprokeys); + void set_scadenze(const char* fpprokeys); + void set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* codforn, const char* piva); + + TString get_numdoc() const { return _numero; } + TDate get_datadoc() const { return _datadoc; } + real get_totdoc() const { return _totdoc; } + real get_ritenute() const { return _ritenute; } + TString get_fpprokeys() const { return _fpprokeys; } + TString get_codforn() const { return _codforn; } + TString get_piva() const { return _piva; } + const vector& get_righeiva() const { return _righe_iva; } + TProtocollo& get_protocollo() { return _protfppro; } + vector& get_scadenze() { return _scadenze; } + real get_tot_imp_riva(); + + + void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib); + void add_scad(const TDate& date, const real& importo); + + + static TString& query_fppro(const TString& codforn, const TString& date); + static TString& query_fppro(const TString& stato_piva, const TString& piva, const TString& date); + static TString& query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false); + static TString& query_string(); + + static void abilita_piva(TMask* msk); + + // Carica documenti FPPRO sulla maschera + static bool load_fppro_mask(TMask* msk, KEY k = 32); + + TPro_msk() = delete; + TPro_msk(TMask& cg_msk); }; bool& is_f1(); - - +TString& num_doc_rif(); #ifndef __EXTRA__ inline TPrimanota_application& app() diff --git a/src/cg/cg2104.cpp b/src/cg/cg2104.cpp index e2b265ea0..1db3a0a1b 100755 --- a/src/cg/cg2104.cpp +++ b/src/cg/cg2104.cpp @@ -329,7 +329,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key) TMask& m = f.mask(); TPrimanota_application& a = app(); const bool set_scad = a.is_fattura() && m.page_enabled(2); // E' attiva pagina 3 - if (key == K_ENTER && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare()))) + if (key == K_ENTER && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back()))) { if (set_scad && f.empty()) { @@ -356,7 +356,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key) } } - if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare()))) + if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back()))) a.set_scadenze(m); return ok; @@ -1227,7 +1227,8 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa // Aggiornamento contopartita const TImporto old_importo(controsez, old_pag.get_real(PAGSCA_IMPORTO)); TBill old_conto; old_conto.get(old_pag, true); - TImporto new_importo(controsez, new_pag.get_real(PAGSCA_IMPORTO)); + + const TImporto new_importo(controsez, new_pag.get_real(PAGSCA_IMPORTO)); if (old_importo != new_importo || old_conto != new_conto) { @@ -1297,7 +1298,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa const real new_ritenute(new_pag.get(PAGSCA_RITENUTE)); if (old_ritenute != new_ritenute) { - TImporto grow_ritenute(causale().sezione_ritfis(), new_ritenute - old_ritenute); + const TImporto grow_ritenute(causale().sezione_ritfis(), new_ritenute - old_ritenute); const int riga = type2pos(cgrowtype_ritfis); if (riga < 0) @@ -1318,7 +1319,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa const real new_ritsoc(new_pag.get(PAGSCA_RITSOC)); if (old_ritsoc != new_ritsoc) { - TImporto grow_ritenute(causale().sezione_ritsoc(), new_ritsoc-old_ritsoc); + const TImporto grow_ritenute(causale().sezione_ritsoc(), new_ritsoc-old_ritsoc); const int riga = type2pos(cgrowtype_ritsoc); if (riga < 0) diff --git a/src/cg/cg2300.cpp b/src/cg/cg2300.cpp index dab8ffdc3..f772a5f6c 100644 --- a/src/cg/cg2300.cpp +++ b/src/cg/cg2300.cpp @@ -8,6 +8,7 @@ #include "mov.h" #include #include "rmov.h" +#include #include "pconti.h" #define INI_ANNO "riep_anno" @@ -22,15 +23,18 @@ class TCompetenze_mask : public TAutomask int s_conto; real importo; }; - - TString_array _regs; - + std::vector _regs; + std::vector _conts; const char* get_ini(bool dataini) const; bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; - + // Funzione becera di ordinamento del vettore _conts + void sort_conts(bool sort_by_imp = true); + static void swap_items(cont_contr_t* it, cont_contr_t* jt); + static bool is_minor_of(cont_contr_t* jt, cont_contr_t* it); + static TString get_descr(int gruppo, int conto, int s_conto); void fill_contc(); void fill(); @@ -46,44 +50,6 @@ const char* TCompetenze_mask::get_ini(bool dataini) const return ini_get_string(CONFIG_DITTA, "cg", INI_MESE, ""); } - -static bool __sort_by_imp = false; - -static int sort_sheet(TSheet_field & s, int r1, int r2) -{ - int ret = 0; - - if (__sort_by_imp) - { - const real i1 = s.get_real_row_cell(r1, F_TOTCONTC); - const real i2 = s.get_real_row_cell(r2, F_TOTCONTC); - - if (i1 > i2) - ret = 1; - else - if (i2 > i1) - ret = -1; - } - else - { - ret = s.get_int_row_cell(r1, F_GRPCONTC) - s.get_int_row_cell(r2, F_GRPCONTC); - if (ret == 0) - ret = s.get_int_row_cell(r1, F_NUMCONTC) - s.get_int_row_cell(r2, F_NUMCONTC); - if (ret == 0) - { - const long s1 = s.get_long_row_cell(r1, F_SOTCONTC); - const real s2 = s.get_long_row_cell(r2, F_SOTCONTC); - - if (s1 > s2) - ret = 1; - else - if (s2 > s1) - ret = -1; - } - } - return ret; -} - bool TCompetenze_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) @@ -110,16 +76,6 @@ bool TCompetenze_mask::on_field_event(TOperable_field& o, TField_event e, long j case F_ANNO: if (e == fe_init) set(F_ANNO, get_ini(true)); break; - case F_ORDIN: - if (e == fe_init || e == fe_modify) - { - TSheet_field& sf = sfield(F_CONTC); - - __sort_by_imp = o.get_bool(); - sf.sort(sort_sheet); - sf.force_update(); - } - break; case F_MESE: if (e == fe_init) set(F_MESE, get_ini(false)); @@ -139,66 +95,100 @@ TString TCompetenze_mask::get_descr(int gruppo, int conto, int s_conto) return pcont.get(PCN_DESCR); } +bool TCompetenze_mask::is_minor_of(cont_contr_t* jt, cont_contr_t* it) +{ + return jt->gruppo < it->gruppo + || (jt->gruppo == it->gruppo && jt->conto < it->conto) + || (jt->gruppo == it->gruppo && jt->conto == it->conto + && jt->s_conto < it->s_conto); +} + +void TCompetenze_mask::swap_items(cont_contr_t* it, cont_contr_t* jt) +{ + const cont_contr_t appo = *it; + *it = *jt; + *jt = appo; +} + +void TCompetenze_mask::sort_conts(bool sort_by_imp) +{ + // Sopra 100 rischia di essere leggermente lento? + if (1 < _conts.size() && _conts.size() < 100) + for (auto it = _conts.begin(); it != _conts.end(); ++it) + for (auto jt = (it+1); jt != _conts.end(); ++jt) + if (sort_by_imp && jt->importo > it->importo || !sort_by_imp && is_minor_of(&(*jt), &(*it))) + swap_items(&(*it), &(*jt)); +} + void TCompetenze_mask::fill_contc() { TSheet_field& sf = sfield(F_CONTC); - TAssoc_array conti; - real tot; + TLocalisamfile rmovs(LF_RMOV); + sf.hide(); sf.reset(); + _conts.clear(); // Per ogni registrazione - FOR_EACH_ARRAY_ITEM(_regs, i, obj) + for (int i = 0; i < (int)_regs.size(); ++i) { - const long numreg = atol(STRING_TOKEN(obj)); - const TMovimento_contabile mov(numreg); - const TCausale & caus = cached_causale(mov.get(MOV_CODCAUS)); - const int rows = mov.cg_rows(); - - // Per ogni riga della registrazione - for (int r = mov.is_IVA() ? 2 : 1; r <= rows; r++) + const int numreg = _regs[i]; + rmovs.zero(); + rmovs.put(RMV_NUMREG, numreg); + rmovs.put(RMV_NUMRIG, 0); + int riga = 0; + if (rmovs.read()) { - const TRectype & rmov = mov.cg(r); - const int gruppo = rmov.get_int(RMV_GRUPPO); - const int numcontc = rmov.get_int(RMV_CONTO); - const int s_conto = rmov.get_int(RMV_SOTTOCONTO); - const TString& tipocc = rmov.get(RMV_TIPOC); - const real importo = rmov.get_real(RMV_IMPORTO); - TString key; - - key.format("%03d|%03d|%06d", gruppo, numcontc, s_conto); - - if (tipocc.blank()) // Solo se il tipo di conto di contr. e' un conto, cioe' vuoto + // Per ogni riga della registrazione + for (; rmovs.get_int(RMV_NUMREG) == numreg; rmovs.next()) { - // Cerco se ho già la chiave - real * tot = (real *)conti.objptr(key); + const int gruppo = rmovs.get_int(RMV_GRUPPOC); + const int numcontc = rmovs.get_int(RMV_CONTOC); + const int s_conto = rmovs.get_int(RMV_SOTTOCONTOC); + const TString& tipocc = rmovs.get(RMV_TIPOCC); + const real importo(rmovs.get(RMV_IMPORTO)); - if (tot == nullptr) - conti.add(key, tot = new real); - *tot += importo; + if (tipocc.blank()) // Solo se il tipo di conto di contr. e' un conto, cioe' vuoto + { + // Cerco se ho già la chiave + auto it = _conts.begin(); + for (; it != _conts.end(); ++it) + { + if (it->gruppo == gruppo + && it->conto == numcontc + && it->s_conto == s_conto) + break; + } + + if (it != _conts.end()) + it->importo += importo; + else + _conts.insert(_conts.end(), { gruppo, numcontc, s_conto, importo }); + } } } } - - FOR_EACH_ASSOC_OBJECT(conti, i, k, o1) - { - TToken_string key = k; - const int gruppo = key.get_int(0); - const int conto = key.get_int(0); - const int s_conto = key.get_long(2); + + sort_conts(get(F_ORDIN) == "X"); + + real tot; tot = 0; + for (auto it = _conts.begin(); it != _conts.end(); ++it) + { + const int gruppo = it->gruppo; + const int conto = it->conto; + const int s_conto = it->s_conto; const TString& descr = get_descr(gruppo, conto, s_conto); - const real importo = *(real *)o1; - int r = sf.set_row_cell(F_GRPCONTC, gruppo); - sf.set_row_cell(F_NUMCONTC, conto, r); - sf.set_row_cell(F_SOTCONTC, s_conto, r); - - sf.set_row_cell(F_DESCRCON, descr, r); - sf.set_row_cell(F_TOTCONTC, importo, r); - tot += importo; + TToken_string& row = sf.row(-1); + row.add(gruppo); + row.add(conto); + row.add(s_conto); + row.add(descr); + row.add(it->importo); + tot += it->importo; } - sf.sort(sort_sheet); - sf.force_update(); + sf.force_update(); + sf.show(); set(F_TOT, tot); } @@ -208,42 +198,42 @@ void TCompetenze_mask::fill() const int anno = get_int(F_ANNO); const int mese = get_int(F_MESE); TSheet_field& sf = sfield(F_MOVS); - TRectype from(LF_MOV); - TRectype to(LF_MOV); - TDate data(1, mese, anno); - - from.put(MOV_DATAREG, data); - data.set_end_month(); - to.put(MOV_DATAREG, data); - - TCursor c(new TRelation(LF_MOV), "", 2, &from, &to); - const int items = c.items(); + TLocalisamfile movs(LF_MOV); + sf.hide(); sf.reset(); - _regs.destroy(); - for (c = 0L; c.pos() < items; ++c) + _regs.clear(); + movs.setkey(2); + + const TDate dataini(1, mese, anno); + TDate dataend(dataini); dataend.set_end_month(); + movs.put(MOV_DATAREG, dataini); + if (movs.read() != NOERR) { - const TRectype & mov = c.curr(); - const int month_liq = mov.get_int(MOV_MESELIQ); - const TDate datareg(mov.get(MOV_DATAREG)); - const TDate datacomp(mov.get(MOV_DATACOMP)); - - if (month_liq != 0) + for (; movs.next() == NOERR && movs.get_date(MOV_DATAREG) <= dataend; ) { - _regs.add(mov.get(MOV_NUMREG)); + const int month_liq = movs.get_int(MOV_MESELIQ); + const TDate datareg(movs.get(MOV_DATAREG)); + const TDate datacomp(movs.get(MOV_DATACOMP)); - int r = sf.set_row_cell(F_NUMREG, mov.get(MOV_NUMREG)); + if (month_liq != 0) + { + _regs.insert(_regs.end(), movs.get_int(MOV_NUMREG)); - sf.set_row_cell(F_DATAREG, mov.get_date(MOV_DATAREG), r); - sf.set_row_cell(F_DATADOC, mov.get_date(MOV_DATADOC), r); - sf.set_row_cell(F_CODCAUS, mov.get(MOV_CODCAUS), r); - sf.set_row_cell(F_MESELIQ, month_liq, r); - sf.set_row_cell(F_NUMDOC, mov.get(MOV_NUMDOC), r); - sf.set_row_cell(F_PROTIVA, mov.get(MOV_PROTIVA), r); - sf.set_row_cell(F_DESCR, mov.get(MOV_DESCR), r); + TToken_string& row = sf.row(-1); + row.add(movs.get(MOV_NUMREG)); + row.add(datareg); + row.add(movs.get(MOV_DATADOC)); + row.add(TCausale(movs.get(MOV_CODCAUS)).tipo_doc()); + row.add(month_liq); + row.add(movs.get(MOV_NUMDOC)); + row.add(movs.get(MOV_PROTIVA)); + row.add(movs.get(MOV_DESCR)); + } } } sf.force_update(); + sf.show(); fill_contc(); } diff --git a/src/cg/cg2300a.uml b/src/cg/cg2300a.uml index 76f127352..a0ca4e472 100644 --- a/src/cg/cg2300a.uml +++ b/src/cg/cg2300a.uml @@ -118,7 +118,7 @@ END NUMBER F_MESELIQ 2 BEGIN - PROMPT 1 5 "Mese Liq." + PROMPT 1 5 "Causale " FLAGS "D" END diff --git a/src/cg/cg3100.cpp b/src/cg/cg3100.cpp index a464d73d0..93cbb523d 100755 --- a/src/cg/cg3100.cpp +++ b/src/cg/cg3100.cpp @@ -68,8 +68,7 @@ class TListaMov_application : public TPrintapp int _ricser; bool _settata_prima_riga, _causale_gia_stampata,_mov_di_sola_iva; int _cur1,_cur2,_cur2b,_cur3,_cur4,_decidi,/*_tipod,*/_controllo_mov_errati; - int _numero_riga, _alleg, _scelta_stampa, _nr, _n; - tiporeg _tiporegistro; + int _numero_riga, _alleg, _tiporegistro, _scelta_stampa, _nr, _n; int _provvis; liste _tipo_lista; word _flags; @@ -482,11 +481,11 @@ bool TListaMov_application::filter_func_fatture (const TRelation* rel) const int ann_reg = mov.get_int(MOV_ANNOIVA); const TString4 cod_reg = mov.get(MOV_REG); - const tiporeg tipo_reg = cached_registro(cod_reg, ann_reg).tipo_registro(); + const int tipo_reg = tipo_registro(cod_reg, ann_reg); // Considera solo iva acquisti o vendite - if (tipo_reg != vendita && tipo_reg != acquisto) - return false; + if (tipo_reg != 1 && tipo_reg != 2) + return FALSE; if (app()._annoes > 0) //anno esercizio specificato nella maschera { @@ -537,10 +536,8 @@ bool TListaMov_application::filter_func (const TRelation * rel) { const TString& cod_reg = mov.get(MOV_REG); const int ann_reg = mov.get_int(MOV_ANNOIVA); - const tiporeg tipo_reg = cached_registro(cod_reg, ann_reg).tipo_registro(); - - // Considera solo iva acquisti o vendite - if (tipo_reg != vendita && tipo_reg != acquisto) + const int tipo_reg = tipo_registro(cod_reg, ann_reg); + if (tipo_reg == 1 || tipo_reg == 2) return false; } @@ -629,10 +626,9 @@ void TListaMov_application::stampa_errori_rmov() else set_row(_nr++, FR("@11gCodice C/F non presente in Anagrafica")); if (_registro.not_empty()) //se su mov e' indicato il codice registro { - const TRegistro & reg = cached_registro(_registro, _ae); - const tiporeg tipo = reg.tipo_registro(); - - if ((tipo == vendita && t != 'C') || (tipo == acquisto && t != 'F')) + TRegistro rg (_registro, _ae); + const int tiporeg = rg.tipo(); + if ((tiporeg == 1 && t != 'C') || (tiporeg == 2 && t != 'F')) set_row(_nr++, FR("@11gTipo C/F non compatibile con tipo registro")); } } @@ -719,14 +715,14 @@ void TListaMov_application::stampa_errori_iva(int* nr, const TRigaiva& riva) const int tipocr = riva._tipocr; if (tipodet == 1 || tipodet == 3 || tipodet == 5 || tipodet == 9) - if (_tiporegistro != acquisto) + if (_tiporegistro != 2) set_row(++(*nr), FR("@11gCodice di indetraibilita' errato")); - if (_tiporegistro == vendita) + if (_tiporegistro == 1) if (tipocr != 0 && tipocr != 1 && tipocr != 4 && tipocr != 9) set_row(++(*nr), FR("@11gTipo costo/ricavo non valido")); - if (_tiporegistro == acquisto) + if (_tiporegistro == 2) if (tipocr != 0 && tipocr != 1 && tipocr != 2 && tipocr != 3 && tipocr != 5 && tipocr != 8 && tipocr != 9) set_row(++(*nr), FR("@11gTipo costo/ricavo non valido")); } @@ -786,11 +782,11 @@ void TListaMov_application::set_page(int file, int count) TString16 reg = current_cursor()->curr(LF_MOV).get(MOV_REG); int anno = current_cursor()->curr(LF_MOV).get_int(MOV_ANNOIVA); char prov = current_cursor()->curr(LF_MOV).get_char(MOV_PROVVIS); - const tiporeg tipo = cached_registro(reg, anno).tipo_registro(); + int tipo = tipo_registro(reg, anno); + TEsercizi_contabili esc; - esc.date2esc(data); // qui verificare - if ( (tipo == vendita) || (tipo == acquisto) ) + if ( (tipo == 1) || (tipo == 2) ) { set_row (_n, FR("@103greg @3s"),FLD(LF_MOV,MOV_REG)); set_row (_n, FR("@111gpr @5n"),FLD(LF_MOV,MOV_PROTIVA)); @@ -864,8 +860,7 @@ bool TListaMov_application::preprocess_page(int file,int counter) _codcf = curmov.get_long(MOV_CODCF); _numero = curmov.get_long(MOV_NUMREG); _codval = curmov.get(MOV_CODVALI); - _tiporegistro = cached_registro(_registro, _anno).tipo_registro(); - + _tiporegistro = tipo_registro(_registro, _anno); _causale_gia_stampata = FALSE; TEsercizi_contabili esc; @@ -992,9 +987,11 @@ bool TListaMov_application::preprocess_page(int file,int counter) _descr_causale = caus.get(CAU_DESCR); _alleg_causale = caus.get_bool(CAU_ALLEG); _tipodocumento = caus.get(CAU_TIPODOC); - _tiporegistro = cached_registro(_registro, _anno).tipo_registro(); - if ((_tiporegistro != vendita) && (_tiporegistro != acquisto))//se si tratta di un movimento di sola prima nota - return true; + + _tiporegistro = tipo_registro (_registro, _anno); + + if ((_tiporegistro != 1)&&(_tiporegistro != 2))//se si tratta di un movimento di sola prima nota + return TRUE; } } else if (file == LF_RMOV) @@ -1041,10 +1038,10 @@ bool TListaMov_application::preprocess_page(int file,int counter) _numr = curmov.get_long(MOV_NUMREG); _tipo_elenco = curmov.get(MOV_TIPO); _codcf = curmov.get_long(MOV_CODCF); - const tiporeg tiporeg = cached_registro(codreg, anno).tipo_registro(); - const TString8 attreg = cached_registro(codreg, anno).attivita(); + const int tiporeg = tipo_registro (codreg, anno); + const TString8 attreg = AttivitaRegistro (codreg, anno); - if (tiporeg == vendita || tiporeg == acquisto)//se si tratta di un movimento iva + if (tiporeg == 1 || tiporeg == 2)//se si tratta di un movimento iva { _tipoatt = TipoAttivita(attreg, get_firm()); _tipo_elenco = curmov.get(MOV_TIPO); @@ -1873,18 +1870,18 @@ bool TListaMov_application::segnala_errori_iva() return true; } if (tipodet == 1 || tipodet == 3 || tipodet == 5 || tipodet == 9) - if (_tiporegistro != acquisto) + if (_tiporegistro != 2) { rmoviva.readat(nrec); return true; } - if (_tiporegistro == vendita) + if (_tiporegistro == 1) if (tipocr != 0 && tipocr != 1 && tipocr != 4 && tipocr != 9) { rmoviva.readat(nrec); return true; } - if (_tiporegistro == acquisto) + if (_tiporegistro == 2) if (tipocr != 0 && tipocr != 1 && tipocr != 2 && tipocr != 3 && tipocr != 5 && tipocr != 8 && tipocr != 9) { rmoviva.readat(nrec); diff --git a/src/cg/cg3300.cpp b/src/cg/cg3300.cpp index d57bc2739..36182580b 100755 --- a/src/cg/cg3300.cpp +++ b/src/cg/cg3300.cpp @@ -25,7 +25,6 @@ #include "cg3.h" #include "cg3300.h" -#include "cglib.h" #include "cg3300a.h" #include "cg3300b.h" @@ -470,19 +469,18 @@ void TStampa_allegati::ricalcola(int anno_dic) { pi.addstatus(1); - const tiporeg tipo = cached_registro(reg).tipo_registro(); - - if ((tipo != acquisto) && (tipo != vendita)) + const int tiporeg = reg.get_int("I0"); + if ((tiporeg != 2) && (tiporeg != 1)) continue; - if (tiporeg == vendita) + if (tiporeg == 1) { - if (cached_registro(reg).sospeso()) - continue; - vendite = true; + bool sosp = reg.get_bool ("B0"); + if (sosp) continue; + vendite = TRUE; } else - vendite = false; + vendite = FALSE; tipodoc = cau.get (CAU_TIPODOC); if (corrispettivo (tipodoc)) diff --git a/src/cg/cg3700.cpp b/src/cg/cg3700.cpp index 721fed667..7978e2593 100755 --- a/src/cg/cg3700.cpp +++ b/src/cg/cg3700.cpp @@ -84,6 +84,7 @@ class TLista_fatture : public TPrintapp protected: long select_firm_range(long from, long to); + int tiporeg(const TString& ); static bool mix_handler(TMask_field&, KEY); static bool date_handler(TMask_field&, KEY); static bool to_ditt_handler(TMask_field&, KEY); @@ -116,6 +117,12 @@ public: inline TLista_fatture& app() { return (TLista_fatture&) main_app(); } +int TLista_fatture::tiporeg(const TString& reg) +{ + TString8 s; s.format("%4d%-3s",_date_from.year(),(const char*)reg); + return atoi(cache().get("REG", s, "I0")); +} + bool TLista_fatture::filter_func1(const TRelation *r) { TLista_fatture& a = app(); @@ -137,8 +144,8 @@ bool TLista_fatture::filter_func1(const TRelation *r) if (riv.get(RMI_TIPODET).blank() || percind.is_zero()) return false; - const tiporeg tipo = cached_registro(rg).tipo_registro(); - if (tipo != acquisto) + const int tiporeg = a.tiporeg(rg); + if (tiporeg != 2) return false; } else // Tipo costo/ricavo @@ -436,9 +443,8 @@ bool TLista_fatture::preprocess_page(int file, int counter) if (_tipo == intra) { TString4 codiva = rec.get(RMI_CODIVA); - const tiporeg tipomov = cached_registro(mov.get(MOV_REG)).tipo_registro(); - - if (tipomov == acquisto && tipodet == 9) + const int tipomov = tiporeg(mov.get(MOV_REG)); + if (tipomov == 2 && tipodet == 9) codiva = "~A19"; // Speciale per acquisti indeducibili art. 19 const bool is_key = _intra_items.is_key(codiva); // Esiste l'elemento ? // Se si' allora prendi quello, altrimenti prendine uno nuovo @@ -463,10 +469,8 @@ bool TLista_fatture::preprocess_page(int file, int counter) _tot_iva += iva; _tp_imp += imp; _tp_iva += iva; - - const tiporeg tipomov = cached_registro(mov.get(MOV_REG)).tipo_registro(); - - if (_tipo == indetraibile && tipomov == acquisto && tipodet > 0) + const int tipomov = tiporeg(mov.get(MOV_REG)); + if (_tipo == indetraibile && tipomov == 2 && tipodet > 0) { TString4 codiva = rec.get(RMI_CODIVA); _Iva_item * iva_row = (_Iva_item *) _indetr.objptr(codiva); diff --git a/src/cg/cg4100.cpp b/src/cg/cg4100.cpp index f39d92366..7719a25b1 100755 --- a/src/cg/cg4100.cpp +++ b/src/cg/cg4100.cpp @@ -24,7 +24,7 @@ #include #include -#include "cglib.h" +#include "cglib02.h" struct therec { @@ -89,7 +89,7 @@ bool CG4100_App::sort_sal() sal.set_anno_es(year); sal.clear_saldi(year); long numreg = 0L; - tiposal tsal = saldo_normale; + tiposal tsal = normale; char provvis; TDate datareg; @@ -127,11 +127,20 @@ bool CG4100_App::sort_sal() mov.put(MOV_NUMREG, numreg); mov.read(); CHECK(mov.good(),"Archivi movimenti e righe inconsistenti"); - const TString& codcaus = mov.get(MOV_CODCAUS); - tsal = saldo_normale; // Tipo saldo normale per default - if(codcaus.full()) - tsal = cached_causale(codcaus, year).tipo_saldo(); + // Tipo saldo normale per default + tsal = normale; + const TString& codcaus = mov.get(MOV_CODCAUS); + const TRectype& causale = cache().get(LF_CAUSALI, codcaus); + if (!causale.empty()) + { + const char ac = causale.get_char(CAU_MOVAP); + if (ac == 'A') + tsal = apertura; else + if (ac == 'C') + tsal = chiusura; + } + scaricato = mov.get_bool(MOV_SCARCON); provvis = mov.get_char(MOV_PROVVIS); datareg = mov.get_date(MOV_DATAREG); diff --git a/src/cg/cg4300.cpp b/src/cg/cg4300.cpp index f3980cc42..79b104bf5 100755 --- a/src/cg/cg4300.cpp +++ b/src/cg/cg4300.cpp @@ -208,6 +208,7 @@ bool TLiquidazione_app::user_create() _lam = new TTable("LAM"); _pla = new TTable("%PLA"); _reg = new TTable("REG"); + _iva = new TTable("%IVA"); _del = new TTable("%DEL"); _mov = &_cur->file(LF_MOV); @@ -224,6 +225,7 @@ bool TLiquidazione_app::user_create() _pum_r = &(_pum->curr()); _pam_r = &(_pam->curr()); _pom_r = &(_pom->curr()); + _iva_r = &(_iva->curr()); _del_r = &(_del->curr()); _lam_r = &(_lam->curr()); _pla_r = &(_pla->curr()); diff --git a/src/cg/cg4300.h b/src/cg/cg4300.h index 642eee98b..a9b1f7207 100755 --- a/src/cg/cg4300.h +++ b/src/cg/cg4300.h @@ -338,6 +338,7 @@ class TLiquidazione_app : public TPrint_application TTable* _pla; TTable* _ppa; TTable* _reg; + TTable* _iva; TTable* _del; // a reference rectype per file/table @@ -345,6 +346,7 @@ class TLiquidazione_app : public TPrint_application TRectype* _rmoviva_r; TRectype* _pcon_1_r; TRectype* _pcon_2_r; + TRectype* _iva_r; TRectype* _pim_r; TRectype* _pis_r; TRectype* _prm_r; @@ -620,7 +622,7 @@ public: bool look_pla(const char* a, bool create = false); bool look_ppa(int m, const char* a, int t, bool create = false); bool look_del(int month, int type, bool create = false); -// bool look_iva(const char* cod); + bool look_iva(const char* cod); bool look_reg(const char* reg); const TRectype & get_lia(long ditta = 0l, bool create = false, int anno = 0); const int put_lia(const TRectype & lia, bool re = true); diff --git a/src/cg/cg4301.cpp b/src/cg/cg4301.cpp index 8dbb5ec89..828a1984e 100755 --- a/src/cg/cg4301.cpp +++ b/src/cg/cg4301.cpp @@ -338,7 +338,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc) TString8 cattiv(codatt); cattiv << tipoatt; - const bool waspla = look_pla(cattiv, has_single_activity); + const bool waspla = look_pla(cattiv); // perchè sta cosa ) , has_single_activity); if (!waspla) break; // Non calcolare attività inesistenti 29-11-2012 @@ -1450,7 +1450,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & real nin_iva = ZERO; // imposta non incassati const TString4 codiva = _rmoviva->get(RMI_CODIVA); - const TCodiceIVA& civa = cached_codIVA(codiva); + TCodiceIVA civa(codiva); #ifdef DBG BREAK_DBG; @@ -1466,16 +1466,17 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & continue; } - const TString4 tipoiva = civa.tipo(); - const TString4 tipoes_v = civa.IVA11_vendite(); - const TString4 tipoes_a = civa.IVA11_acquisti(); - const int tipoagr = civa.tipo_IVA_agricola(); // 2/9/2015 was S4 - const int tipoag = civa.tipo_agenzie_viaggio(); - const int tipopla = civa.tipo_plafond(); - int isrimbinfr = civa.codice_rimborso_infrannuale(); // vale per calcolo rimborso se ES o NI - const real perciva = civa.moltiplicatore_percentuale(); - int ivarimb = !civa.escluso_dal_rimborso(); // non escluso calcolo rimb. per al. media - const bool den_prorata = civa.tipo_IVA_agricola(); // denominatore prorata nel caso di calcolo pro rata con numeratore e denominatore + look_iva(codiva); // da eliminare esso per evitare un problema di non lettura _iva ve eliminato + const TString4 tipoiva = _iva->get("S1"); + const TString4 tipoes_v = _iva->get("S2"); + const TString4 tipoes_a = _iva->get("S9"); + const int tipoagr = _iva->get_int("I4"); // 2/9/2015 was S4 + const int tipoag = _iva->get_int("S5"); + const int tipopla = _iva->get_int("S3"); + int isrimbinfr = _iva->get_bool("B3"); // vale per calcolo rimborso se ES o NI + const real perciva = _iva->get_real("R0") / CENTO; + int ivarimb = !_iva->get_bool("B4"); // non escluso calcolo rimb. per al. media + const bool den_prorata = _iva->get_bool("B7"); // denominatore prorata nel caso di calcolo pro rata con numeratore e denominatore const TString4 tipocr_s = _rmoviva->get(RMI_TIPOCR); const int tipocr = atoi(tipocr_s); @@ -1558,7 +1559,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & sezfat = tipomov == vendita ? 'D' : 'A'; - if (is_detr_diff == 1 || civa.iva_non_soggetta()) + if (is_detr_diff == 1 || civa.tipo() == "NS") continue; if (bIsMovDiff && tm == tm_fattura) { @@ -2220,10 +2221,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & if (_pcon_1_r->get_int(PCN_INDBIL) == 4) if (_cur->is_first_match(-AGR_PCON2)) // Esiste il sottoconto ? { - const TCodiceIVA & civa = cached_codIVA(_pcon_2_r->get(PCN_IVACOMP)); - - if (civa.ok()) - ivacomp = civa.codice(); // Ecco il codice IVA di compensazione + if (look_iva(_pcon_2_r->get(PCN_IVACOMP))) + ivacomp = _iva->get("CODTAB"); // Ecco il codice IVA di compensazione } look_pia(month, codatt, codiva, ivacomp, true); // Crea il record in tabella se non esiste real pia_imp = _pia->get_real("R0") + agr_imp; // Aggiorna... @@ -2728,10 +2727,11 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & if (_pim->get_bool("B4")) { // ricalcola l'imposta a partire dal codice IVA - const TCodiceIVA & civa = cached_codIVA(*_pim_codiva); - const real old_iva = _pim->get_real("R1"); - real new_iva = _pim->get_real("R0") * civa.moltiplicatore_percentuale(); + look_iva(*_pim_codiva); + real old_iva = _pim->get_real("R1"); + real perc = _iva->get_real("R0"); + real new_iva = _pim->get_real("R0") * perc / CENTO; round_al_centesimo(new_iva); if (new_iva != old_iva) @@ -2759,9 +2759,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & if (_pia->get_bool("B0")) { // calcola l'imposta a partire dal codice IVA di compensazione - const TCodiceIVA & civa = cached_codIVA(*_pia_codcom); - real iva = _pia->get_real("R0") * civa.moltiplicatore_percentuale(); - + look_iva(*_pia_codcom); + real perc = _iva->get_real("R0"); + + real iva = _pia->get_real("R0") * perc / CENTO; round_al_centesimo(iva); agr_detIA += iva; _pia->put("R1",iva); @@ -2993,14 +2994,12 @@ void TLiquidazione_app::iva11_set_arr_phase_1(const TString& codatt) if (is_split_payment(_mov->curr())) imposta = ZERO; - - const TCodiceIVA & civa = cached_codIVA(_rmoviva->get(RMI_CODIVA)); - const TString4 codiva = civa.codice(); - const TString4 tipoiva = civa.tipo(); - const real ali = civa.percentuale(); - const TString4 tipoes_v = civa.IVA11_vendite(); - const TString4 tipoes_a = civa.IVA11_acquisti(); - const int tipoagr = civa.tipo_IVA_agricola(); // 2/9/2015 was S4 + const TString4 codiva = _iva->get("CODTAB"); + const TString4 tipoiva = _iva->get("S1"); + const real ali = _iva->get_real("R0"); + const TString4 tipoes_v = _iva->get("S2"); + const TString4 tipoes_a = _iva->get("S9"); + const int tipoagr = _iva->get_int("I4"); // 2/9/2015 was S4 const TRectype& rcs = _cur->curr(LF_CAUSALI); const bool autofattura = rcs.get_bool("AUTOFATT"); const bool valintra = rcs.get_bool("VALINTRA"); @@ -3380,17 +3379,14 @@ void TLiquidazione_app::iva11_set_arr_phase_2(const TString& codatt) // Must consider current activity too... codiva = *_pim_codiva; reg = *_pim_codreg; - - const TCodiceIVA & civa = cached_codIVA(codiva); - - look_reg(reg); // posiziona la tabella registri e quella IVA - tiva = civa.tipo(); // tipo IVA - tpla = civa.tipo_plafond(); // tipo gestione plafond - tagr = civa.tipo_IVA_agricola(); // tipo gestione regime agricolo 2/9/2015 was S4 - tvia = civa.tipo_agenzie_viaggio(); // tipo gestione ag. viaggio - v11 = civa.IVA11_vendite(); // n.ro riga vendite per mod. IVA11 - a11 = civa.IVA11_acquisti(); // n.ro riga acquisti per mod. IVA11 - aliq = civa.percentuale(); // aliquota + look_iva(codiva); look_reg(reg); // posiziona la tabella registri e quella IVA + tiva = _iva->get("S1"); // tipo IVA + tpla = _iva->get("S3"); // tipo gestione plafond + tagr = _iva->get_int("I4"); // tipo gestione regime agricolo 2/9/2015 was S4 + tvia = _iva->get("S5"); // tipo gestione ag. viaggio + v11 = _iva->get("S2"); // n.ro riga vendite per mod. IVA11 + a11 = _iva->get("S9"); // n.ro riga acquisti per mod. IVA11 + aliq = _iva->get_real("R0"); // aliquota treg = (tiporeg)_reg->get_long("I0"); const bool is_vendita = treg == vendita; const bool is_acquisto = treg == acquisto; @@ -3488,7 +3484,7 @@ void TLiquidazione_app::iva11_set_arr_phase_2(const TString& codatt) _CorrItem& ca = (_CorrItem&) corr_ann[codiva]; ca._totale += lor; if (!is_present) - ca._aliquota = civa.percentuale(); // Se e' nuovo setta l'aliquota + ca._aliquota = _iva->get_real("R0"); // Se e' nuovo setta l'aliquota } tt = _pim->get("S0"); @@ -4545,10 +4541,8 @@ void TLiquidazione_app::recalc_annual(const char* att, bool & first) const int tipocr = atoi(*_pim_tipocr); codiva = *_pim_codiva; reg = *_pim_codreg; - const TCodiceIVA & civa = cached_codIVA(codiva); - - look_reg(reg); - tiva = civa.tipo(); + look_iva(codiva); look_reg(reg); + tiva = _iva->get("S1"); const TRegistro & reg = cached_registro(_reg->curr()); const tipo_sospensione simp = reg.sospensione(); @@ -4579,7 +4573,7 @@ void TLiquidazione_app::recalc_annual(const char* att, bool & first) _CorrItem& ca = (_CorrItem&)corr_ann[codiva]; ca._totale += _pim->get_real("R3"); if (!is_key) // se non c'e' lo aggiunge - ca._aliquota = civa.moltiplicatore_percentuale(); // Se è nuovo setta l'aliquota + ca._aliquota = _iva->get_real("R0") / CENTO; // Se è nuovo setta l'aliquota } if (tipoatt == 1) volaff1 += imp_ifs; diff --git a/src/cg/cg4302.cpp b/src/cg/cg4302.cpp index 1e45fa0c8..1d947d1d3 100755 --- a/src/cg/cg4302.cpp +++ b/src/cg/cg4302.cpp @@ -554,7 +554,8 @@ bool TLiquidazione_app::look_pla(const char* a, bool create) (*_pla_codatt) = buf; const TString16 s = _pla_r->get("CODTAB"); - bool ok = _pla->read() == NOERR; + const int err = _pla->read(); + bool ok = err == NOERR; if (!ok && create) { _pla->zero(); @@ -583,7 +584,6 @@ bool TLiquidazione_app::look_reg(const char* reg) return rt; } -/* bool TLiquidazione_app::look_iva(const char* cod) { bool rt = true; @@ -604,7 +604,6 @@ bool TLiquidazione_app::look_iva(const char* cod) return rt; } -*/ bool TLiquidazione_app::look_ppa(int month, const char* codatt, int type, bool create) { @@ -983,10 +982,8 @@ real TLiquidazione_app::aliquota_agvia() { real r; const TString& codagv = ini_get_string(CONFIG_STUDIO, "cg", "CodAgv"); - const TCodiceIVA & civa = cached_codIVA(codagv); - - if (civa.ok()) // Controlla se è vuoto! CM600475 - r = civa.percentuale(); + if (codagv.full() && look_iva(codagv)) // Controlla se è vuoto! CM600475 + r = _iva->get_real("R0"); return r; } diff --git a/src/cg/cg4303.cpp b/src/cg/cg4303.cpp index 0fb74019b..d521bc851 100755 --- a/src/cg/cg4303.cpp +++ b/src/cg/cg4303.cpp @@ -95,13 +95,10 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt) vaf += imponibile; _pam->put("R1", vaf); _pam->rewrite(); - // Aggiorna il totale IVA periodica CD1_1 - const TCodiceIVA & civa = cached_codIVA(ci->_codiva); - - if (month == 13 && civa.ok()) + if (month == 13 && look_iva(ci->_codiva)) { - if (civa.tipo_comunicazione_attive().full()) // Solo CD1_1 ha senso coi corrispettivi... + if (_iva->get("S10").not_empty()) // Solo CD1_1 ha senso coi corrispettivi... { _pum->curr().add("R14", imponibile); // CD1_1 _pum->rewrite(); @@ -145,11 +142,12 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt) int tipocr = atoi(*_pim_tipocr); int mese = atoi(*_pim_mese); int tipodet = atoi(*_pim_tipodet); - const TCodiceIVA & civa = cached_codIVA(*_pim_codiva); + look_iva(*_pim_codiva); // base di riparto solo se non esente, non soggetto, non imponibile - TString16 tipoiva(civa.tipo()); + TString16 tipoiva(_iva->get("S1")); TString16 reg = *_pim_codreg; + /* * caso particolare SENSU Vladimiro (1995) #MI3001 * questi vengono pero' conteggiati nel totale @@ -163,15 +161,18 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt) if (tipocr == 1 && (mese == m) && att == (const char*)(*_pim_codatt)) { - if (civa.iva_da_ventilare()) + if (tipoiva != "NS" && tipoiva != "NI" && tipoiva != "ES") { real lurd = _pim->get_real("R0"); lurd += _pim->get_real("R1"); - real perc = civa.percentuale(); - TString other = civa.iva_a_cui_ventilare(); - - if (other.full()) - perc = cached_codIVA(other).percentuale(); // ventila a un altro codice + real perc = _iva->get_real("R0"); + TString other = _iva->get("S6"); + if (!other.empty()) + { + // ventila a un altro codice + look_iva(other); + perc = _iva->get_real("R0"); + } add_ventilation(perc / CENTO, lurd, *_pim_codiva, other); } } @@ -340,11 +341,9 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt) _pam->rewrite(); // Aggiorna il totale IVA periodica CD1_1 - const TCodiceIVA & civa = cached_codIVA(vv->_codiva); - - if (month == 13 && civa.ok()) + if (month == 13 && look_iva(vv->_codiva)) { - if (civa.get("S10").full()) // Solo CD1_1 ha senso coi corrispettivi + if (_iva->get("S10").not_empty()) // Solo CD1_1 ha senso coi corrispettivi { _pum->curr().add("R14", imponibile); // CD1_1 _pum->rewrite(); @@ -365,10 +364,9 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt) // viene amorosamente messo a quanto il codice IVA prevede if (!was) { - const TCodiceIVA & civa = cached_codIVA((vv->_codiva)); - + look_iva(vv->_codiva); _pim->put("I1", (long)vendita); - if (!civa.escluso_dal_rimborso()) + if (!_iva->get_bool("B4")) _pim->put("B3", "X"); } _pim->rewrite(); @@ -535,8 +533,8 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts, if (!_pim->get_bool("B3")) continue; // Se il tipo di codice e' NS non va considerato nella sommatoria del tot. acquisti - const TCodiceIVA & civa = cached_codIVA(codiva); - const bool non_sogg = civa.iva_non_soggetta(); + look_iva(codiva); + const bool non_sogg = _iva->get("S1") == "NS"; if (!is_mens) // Trimestrali { @@ -567,7 +565,7 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts, ca._totale += _pim->get_real("R3"); if (!is_key) // se non c'e' lo aggiunge { - ca._aliquota = civa.moltiplicatore_percentuale(); // Se e' nuovo setta l'aliquota + ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota corr_ann.add(codiva,ca); } } diff --git a/src/cg/cg4304.cpp b/src/cg/cg4304.cpp index fe6386e0d..802b36f0a 100755 --- a/src/cg/cg4304.cpp +++ b/src/cg/cg4304.cpp @@ -286,7 +286,7 @@ void TLiquidazione_app::describe_ventilation(int month, const char* codatt) continue; look_reg(*_pim_codreg); - const TCodiceIVA & civa = cached_codIVA(*_pim_codiva); + look_iva(*_pim_codiva); int tipocr = atoi(*_pim_tipocr); int tipodet = atoi(*_pim_tipodet); @@ -295,7 +295,7 @@ void TLiquidazione_app::describe_ventilation(int month, const char* codatt) real imponibile = _pim->get_real("R0"); real imposta = _pim->get_real("R1"); tiporeg tipomov = (tiporeg)_reg->get_long("I0"); - TString4 tipoiva = civa.tipo(); + TString4 tipoiva = _iva->get("S1"); if (_year != *_pim_anno || (month == 13 && mese < 13)) continue; @@ -564,19 +564,28 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool continue; TString4 codiva = codtab.mid(16,4); codiva.trim(); - const TCodiceIVA & civa = cached_codIVA(codiva); - - if (!civa.ok()) + if (!look_iva(codiva)) continue; tiporeg tipomov = (tiporeg)_reg->get_int("I0"); bool corrisp = _reg->get_bool("B0"); - const TString4 tipoiva = civa.tipo(); + const TString4 tipoiva = _iva->get("S1"); const TString4 other = tab->get("S4"); TToken_string s1(tab->get("S1"), '!'); // Imponibile/iva fatture in ritardo real rit_imp(s1.get(0)); real rit_iva(s1.get(1)); + /* Perchè _pim invece di tab ? 17-10-2012 + diffimp = _pim->get_real("R26"); + diffiva = _pim->get_real("R27"); + diffincimp = _pim->get_real("R28"); + diffinciva = _pim->get_real("R29"); + + diffimp_acq = _pim->get_real("R30"); + diffiva_acq = _pim->get_real("R31"); + diffincimp_acq = _pim->get_real("R32"); + diffinciva_acq = _pim->get_real("R33"); */ + diffimp = tab->get_real("R26"); diffiva = tab->get_real("R27"); diffincimp = tab->get_real("R28"); @@ -594,10 +603,10 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool issosp |= (sosp_imp != nessuna_sospensione); // Setta il flag di presenza registri in sospensione (qualsiasi tipo: sospensione_normale, vol_affari, liquidazione) // ACHTUNG! Corrispettivi da ventileer possono ventilare ad un altro codiva; in tal caso si scrive quello if (corrisp && other.full()) + { + look_iva(other); codiva = other; - - const TCodiceIVA & civa1 = cached_codIVA(codiva); // codice IVA aggiornato per eventuale ventilazione - + } // se e' corrispettivo da ventilare non scrivo un cannolo ripieno visto che e' stato ventilato if (tipomov == vendita && tipoiva == "VE" && !describe_pis) continue; @@ -704,7 +713,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool ca._totale_vf += tab->get_real(tipoiva == "VE" ? "R2" : "R3"); if (!is_key) // se non c'e' lo aggiunge { - ca._aliquota = civa.moltiplicatore_percentuale(); // Se e' nuovo setta l'aliquota + ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota corr_ann.add(codiva,ca); } // vedi corrispettivi veri e falsi @@ -1795,9 +1804,8 @@ void TLiquidazione_app::set_pim(_DescrItem& d) rw++; else { - const TCodiceIVA & civa = cached_codIVA(d._s1); - - d._s2 = civa.get("S0"); + look_iva(d._s1); + d._s2 = _iva->get("S0"); if (d._s2.len() > 19) d._s2.cut(19); } @@ -2926,9 +2934,8 @@ void TLiquidazione_app::set_ventila(_DescrItem& d) for(i = 0; i < d._arr.items(); i++) { _vDesc& vd = (_vDesc&)d._arr[i]; - const TCodiceIVA & civa = cached_codIVA(vd._codiva); - - s0 = civa.descrizione(); s0.cut(23); + look_iva(vd._codiva); + s0 = _iva->get("S0"); s0.cut(23); set_row(row+i,"@8g%5s@17g%-23s@41g%r@68g%r@89g%r", (const char*)vd._codiva, @@ -3058,15 +3065,13 @@ void TLiquidazione_app::set_regagr(_DescrItem& d) _DescrItem& di = (_DescrItem&) agr_array[i]; if (di._flags != PROGAGR) continue; - - const TCodiceIVA & civa = cached_codIVA(di._s0); - - des = civa.descrizione(); des.cut(25); - al = civa.percentuale(); + look_iva(di._s0); + des = _iva->get("S0"); des.cut(25); + al = _iva->get_real("R0"); set_row(r,"%4s %-25s@48g%s %%", (const char*) di._s0, (const char*) des, al.string("#@,@@")); set_row(r,"@56g%r@75g%4s",&di._r0, (const char*)di._s1); - const TCodiceIVA & civa1 = cached_codIVA(di._s1); - al = civa1.percentuale(); + look_iva(di._s1); + al = _iva->get_real("R0"); set_row(r++,"@92g%s %%@100g%r", al.string("#@,@@"), &di._r1); t1 += di._r0; t2 += di._r1; diff --git a/src/cg/cg7600.cpp b/src/cg/cg7600.cpp index 9b287bfe9..6ee35f88c 100644 --- a/src/cg/cg7600.cpp +++ b/src/cg/cg7600.cpp @@ -160,16 +160,6 @@ void TQuadro_VE_recordset::load() add_value(STRING_TOKEN(imposta.objptr(aliquota)), iva); } } - else - { - const int tipocr = atoi(codtab.mid(15, 1)); // tipo costo_ricavo - - if (tipocr == 4) - { - if (int_tipo_iva11_ven == acq_ind_pass_int || int_tipo_iva11_ven == cess_amm) - add_value("VE40.1", imp); - } - } break; case acq_simp: break; @@ -195,12 +185,12 @@ void TQuadro_VE_recordset::load() break; case acq_ind_pass_int: // passaggi interni if (vendite) - add_value("VE40.1", imp); + add_value("VE40.1", iva); break; case acq_ind_art_19: // indetr. art. 19 break; case cess_amm: // cessioni amministrative - add_value("VE40.1", imp); + add_value("VE40.1", iva); break; case vend_rimborso: // vendite valide per rimborso break; @@ -261,28 +251,24 @@ void TQuadro_VE_recordset::load() } } - /* TISAM_recordset & exp = get_recordset(REP_PAART17); for (exp.move_first(); !exp.eof(); exp.move_next()) { - TString8 cod(exp.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string()); - const TCodiceIVA & codiva = cached_codIVA(cod); - const TString & aliquota = codiva.aliquota(); - const TRectype & mov = cache().get(LF_MOV, exp.get(FIELD_NAME(LF_RMOVIVA, RMI_NUMREG)).as_int()); + TString8 cod(exp.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string()); + const TCodiceIVA & codiva = cached_codIVA(cod); + const TString & aliquota = codiva.aliquota(); - if (aliquota.full()) - { - const real imp = exp.get(FIELD_NAME(LF_RMOVIVA, RMI_IMPONIBILE)).as_real(); - real iva = exp.get(FIELD_NAME(LF_RMOVIVA, RMI_IMPOSTA)).as_real(); - - if (codiva.is_agricola()) - sub_value(STRING_TOKEN(imponibile_agricolo.objptr(aliquota)), imp); - else - sub_value(STRING_TOKEN(imponibile.objptr(aliquota)), imp); - } - } - */ + if (aliquota.full()) + { + const real imp = exp.get(FIELD_NAME(LF_RMOVIVA, RMI_IMPONIBILE)).as_real(); + + if (codiva.is_agricola()) + sub_value(STRING_TOKEN(imponibile_agricolo.objptr(aliquota)), imp); + else + sub_value(STRING_TOKEN(imponibile.objptr(aliquota)), imp); + } + } TISAM_recordset & reg = get_recordset(REP_REGOLARIZ); @@ -319,7 +305,6 @@ void TQuadro_VE_recordset::load() } } - query = "USE LIM\n FROM CODTAB=="; query << year() << "13\nTO CODTAB==" << year() << "13"; diff --git a/src/cg/cg7700.cpp b/src/cg/cg7700.cpp index 7d63d1d26..23519d24a 100644 --- a/src/cg/cg7700.cpp +++ b/src/cg/cg7700.cpp @@ -286,9 +286,9 @@ void TQuadro_VF_recordset::load() } if (non_soggetto) { - if (int_tipo_iva11_acq == 15) + if (tipo_iva11_acq == "15A" || int_tipo_iva11_acq == 15) { - if (tipo_iva11_acq == "15B") + if (tipo_iva11_acq == "15A") add_value("VF17.2", imp); add_value("VF17.1", imp); } diff --git a/src/cg/modf24/cg5500.cpp b/src/cg/modf24/cg5500.cpp new file mode 100755 index 000000000..58498067f --- /dev/null +++ b/src/cg/modf24/cg5500.cpp @@ -0,0 +1,2069 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cglib03.h" +#include "cg5500.h" +#include "cg5500a.h" + +static void round_imposta(real& d) +{ + TIva_round ir; + ir.round(d); +} + +const char* Visliq_app::itoname(int m) +{ + const char* mn; + if (m == 13) + return TR("Annuale"); + + if (_freqviva == "M") + return itom(m); + + switch(m) + { + case 3: + mn = TR("1 Trimestre"); + break; + case 6: + mn = TR("2 Trimestre"); + break; + case 9: + mn = TR("3 Trimestre"); + break; + case 12: + mn = TR("4 Trimestre"); + break; + } + + return mn; +} + +void Visliq_app::set_freqviva() +{ + if (look_lia()) + _freqviva = _lia->get("S7"); + else + { + TString key; + + key.format("%ld", get_firm()); + + const TRectype & ditta = cache().get(LF_NDITTE, key); + + _freqviva = ditta.get("FREQVIVA"); + } +} + +bool Visliq_app::create() +{ + _firm = get_firm(); + TDate oggi(TODAY); + _year = oggi.year(); + open_files(LF_TABCOM, LF_TAB, LF_NDITTE, 0); + + _nditte = new TRelation(LF_NDITTE); + _f24 = new TLocalisamfile(LF_RIGHEF24); + _ditte = new TArray_sheet(-1, -1, -4, -4, TR("Selezione Ditte"), + HR("Cod.@5|Ragione Sociale@50|Vers.")); + _from_one = FALSE; + _del = new TTable("%DEL"); + _lia = new TTable("%LIA"); + _lim = new TTable("LIM"); + _lam = new TTable("LAM"); + _del_r = &(_del->curr()); + _lim_r = &(_lim->curr()); + _lam_r = &(_lam->curr()); + _del_ditta = new TRecfield(*_del_r,"CODTAB",0,4); + _del_anno = new TRecfield(*_del_r,"CODTAB",5,8); + _del_mese = new TRecfield(*_del_r,"CODTAB",9,10); + _del_tipo = new TRecfield(*_del_r,"CODTAB",11,11); + _lim_anno = new TRecfield(*_lim_r,"CODTAB",0,3); + _lim_mese = new TRecfield(*_lim_r,"CODTAB",4,6); + _lam_anno = new TRecfield(*_lam_r,"CODTAB",0,3); + _lam_mese = new TRecfield(*_lam_r,"CODTAB",4,6); + _has_f24 = main_app().has_module(GVAUT); + + begin_wait(); + build_nomiditte(); + build_ditte_sheet(); + end_wait(); + + return TSkeleton_application::create(); +} + +bool Visliq_app::destroy() +{ + delete _lim_mese; + delete _lim_anno; + delete _lam_mese; + delete _lam_anno; + delete _del_tipo; + delete _del_mese; + delete _del_ditta; + delete _lim; + delete _lam; + delete _del; + delete _f24; + delete _ditte; + delete _nditte; + + return TApplication::destroy(); +} + +bool Visliq_app::ch_year_handler(TMask_field& f, KEY key) +{ + if (key == K_TAB && f.focusdirty()) + { + TWait_cursor hourglass; + app().set_year(f.get()); + app().build_nomiditte(); + app().build_ditte_sheet(); + app().reset_fields(); + } + return TRUE; +} + + +void Visliq_app::build_ditte_sheet() +{ + // build sheet + _ditte->destroy(); + long prima = -1; + + for (int i = 0; i < _nomiditte.items(); i++) + { + TToken_string* d = new TToken_string(_nomiditte.row(i)); + const long pos = _ditte->add(d); + const char vers = d->get_char(2); + const bool selectable = vers != '?'; + _ditte->enable_row(pos, selectable); + if (selectable && prima < 0) + _ditte->select(prima = pos); + } +} + +void Visliq_app::reset_fields() +{ + _mask->field(F_CODDITTA).set(""); + _mask->field(F_RAGSOC).set(""); +} + +bool Visliq_app::select_butt(TMask& m) +{ + if (_ditte->run() == K_ENTER) + { + TToken_string& row = _ditte->row(_ditte->selected()); + m.field(F_CODDITTA).set(row.get(0)); + m.field(F_RAGSOC).set(row.get(1)); + set_freqviva(row.get(2)); + set_mask_freq(m); + return TRUE; + } + return FALSE; +} + +void Visliq_app::build_nomiditte() +{ + _nomiditte.destroy(); + // ricostruire _nomiditte e rifare build_ditte_sheet + TRectype & ditta = _nditte->lfile().curr(); + TCursor cur(_nditte); + const TRecnotype items = cur.items(); + + cur.freeze(); + for (cur = 0L; cur.pos() < items; ++cur) + { + // check no archivi + bool good = prefix().exist(ditta.get_long("CODDITTA")); + + if (good) + { + // check no parametri liquidazione + TString16 cod; + + cod.format("%05ld%d", ditta.get_long("CODDITTA"), _year); + + const TRectype & lia = cache().get("%LIA", cod); + TToken_string* d = new TToken_string(64); + + // add record + d->add(ditta.get("CODDITTA")); + d->add(ditta.get("RAGSOC")); + + const TString & fr = lia.get("S7"); + + d->add(fr.empty() ? "??" : fr); + _nomiditte.add(d); + } + + } +} + +void Visliq_app::set_mask_freq(TMask& m) +{ + if (_freqviva == "M") + { + m.show(F_MONTHS); + m.hide(F_TRIMS); + } + else + { + m.hide(F_MONTHS); + m.show(F_TRIMS); + } +} + + +bool Visliq_app::sheet_action(TSheet_field& s, int r, KEY k) +{ + if (k == K_ENTER) + app()._sh_dirty = TRUE; + // non si possono cancellare o aggiungere righe + return (k != K_DEL && k != K_INS); +} + +bool Visliq_app::vers_action(TSheet_field& s, int r, KEY k) +{ + if (k == K_ENTER) + app()._sv_dirty = TRUE; + // non si possono cancellare o aggiungere righe + return (k != K_DEL && k != K_INS); +} + +const char* Visliq_app::link_handler(TMask& m, + int n, const char* txt, bool doubleclick) +{ + // con click visualizza, con double click modifica + TString st(txt); + bool iscred = FALSE; + static int group; + int firstfoc = 0; + + if (group != 0) m.hide(group); + + if (st.find(TR("Iva chiesta a rimborso")) >= 0 || st.find(TR("Rimborsi")) >= 0) + { group = -1; firstfoc = F_RIMBORSO; } + else if (st.find(TR("debito")) >= 0 || st.find(TR("credito")) >= 0) + { group = -2; firstfoc = F_RETTIFICA; } + else if (st.find(TR("acconto")) >= 0) + { group = -3; firstfoc = F_ACCONTO; } + else if (st.find(TR("Versamenti")) >= 0) + { group = -4; firstfoc = F_DELDATE; } + else if (st.find(TR("Descrizione")) >= 0) + { group = -5; firstfoc = F_DESCR3; } + else if (st.find(TR("Variazioni d'imposta")) >= 0) + { group = -6; firstfoc = F_VARIMP; } + else if (st.find(TR("Imposta non versata")) >= 0) + { group = -7; firstfoc = F_IMPNONVER; } + if (st.find(TR("Crediti")) >= 0) + { group = -8; firstfoc = F_CREDSPEC; } + + m.show(group); + if (app()._is_annual && (group != -3 || app()._freqviva == "M")) + m.disable(group); + else + { + m.enable(group); + if (doubleclick && firstfoc > 0) + m.field(firstfoc).set_focus(); + } + + return NULL; +} + + +void Visliq_app::main_loop() +{ + vis_liq(); +} + +// handlers +bool Visliq_app::set_ditta(TMask_field& f, KEY k) +{ + bool found = TRUE; + + if (k == K_F9) + return app().select_butt(f.mask()); + + if (k == K_TAB && f.focusdirty()) + { + found = FALSE; + TString ditta = f.get(); + TArray_sheet* sh = app().get_ditte_sheet(); + for (int i = 0; i < sh->items(); i++) + { + TToken_string& row = sh->row(i); + if (ditta == row.get(0)) + { + if (sh->row_enabled(i)) + { + f.mask().field(F_CODDITTA).set(row.get(0)); + f.mask().field(F_RAGSOC).set(row.get(1)); + app().set_freqviva(row.get(2)); + app().set_mask_freq(f.mask()); + found = TRUE; + } + else + { + f.warning_box(FR("Non sono definiti i parametri liquidazione per la ditta %ld"), + atol(ditta)); + f.reset(); + } + break; + } + } + } + if (!found) f.reset(); + return found; +} + +bool Visliq_app::set_ragsoc(TMask_field& f, KEY k) +{ + bool found = TRUE; + + if (k == K_F9) + return app().select_butt(f.mask()); + + if (k == K_TAB && f.focusdirty()) + { + found = FALSE; + TString ditta = f.get(); + TArray_sheet* sh = app().get_ditte_sheet(); + for (int i = 0; i < sh->items(); i++) + { + TToken_string& row = sh->row(i); + TString ts(row.get(1)); + if (ts.find(ditta) != -1) + { + if (sh->row_enabled(i)) + { + f.mask().field(F_CODDITTA).set(row.get(0)); + f.mask().field(F_RAGSOC).set(row.get(1)); + app().set_freqviva(row.get(2)); + app().set_mask_freq(f.mask()); + found = TRUE; + break; + } + } + } + } + if (!found) f.reset(); + return found; +} + + +bool Visliq_app::sel_mese_sh1 (TMask_field& f, KEY k) +{ + if (k != K_SPACE) return TRUE; + + TMask& m = *(app().get_main_mask()); + TSheet_field& sh = m.sfield(F_VISLIQ1); + TSheet_field& sv = m.sfield(F_VISLIQ2); + int sel = sh.selected(); + int month = sh.selected()+1; + TToken_string& tt = sh.row(sh.selected()); + if (sh.items() == 4) month *= 3; + + bool ok = FALSE; + + //if (m.dirty() || sh.sheet_mask().dirty()) + if (m.field(F_CREDPREC).dirty() || app()._sh_dirty || app()._sv_dirty) + { + KEY k = yesnocancel_box(TR("Registrazione modifiche effettuate?")); + if (k == K_YES) + app().write_general(m); + else if (k == K_NO) + app().read_general(m); + ok = (k == K_YES || k == K_NO); + } + else ok = TRUE; + + TMask& sm = sh.sheet_mask(); + if (ok) + { + if (sm.is_running()) sm.stop_run(K_ENTER); + app().vis_one(month); + const bool new_age_2000 = (app()._year >= 2000) && (app()._lia->get("S9") == "NV"); + if (new_age_2000) + app().read_general(m); + } + + app().set_liq_rows(sh); + + if (sm.is_running()) + { + // TBC controllare se sono i dati giusti in tt + sm.field(102).set(tt.get(1)); + sm.field(103).set(tt.get(2)); + sm.field(104).set(tt.get(3)); + sm.field(105).set(tt.get(4)); + sm.field(106).set(tt.get(5)); + } + + sh.row(sel) = tt; + + sh.force_update(sel); + const int res = app().look_ver(month,1); + TLocalisamfile & f24 = *app()._f24; + + if (res > 0) + { + TToken_string& tv = sv.row(sel == (sh.items() - 1) ? sel -1 : sel); + + if (res == 1) + { + tv.add(app().del()->get("D0"),1); + tv.add(app().del()->get("S7"),2); + tv.add(app().del()->get("S8"),3); + tv.add(app().del()->get("S9"),4); + tv.add(app().del()->get("R0"),5); + } + else + { + tv.add(f24.get(F24_DATAVERS),1); + tv.add(f24.get(F24_ABI),2); + tv.add(f24.get(F24_CAB),3); + tv.add("",4); + tv.add(f24.get(F24_IMPORTODEB),5); + } + sv.force_update(sel == (sh.items() - 1) ? sel -1 : sel); + } + return true; +} + + +bool Visliq_app::sel_mese_sh2 (TMask_field& f, KEY k) +{ + if (k != K_SPACE) return TRUE; + + TMask& m = *(app().get_main_mask()); + TSheet_field& sh = (TSheet_field&)m.field(F_VISLIQ2); + int sel = sh.selected(); + int month = sh.selected()+1; + if (sh.items() < 12) + month *= 3; + + // click su acconto + if (month > 12) return TRUE; + + bool ok = FALSE; + //if (m.dirty()) + if (m.field(F_CREDPREC).dirty() || app()._sh_dirty || app()._sv_dirty) + { + KEY k = yesnocancel_box(TR("Registrazione modifiche effettuate?")); + if (k == K_YES) + app().write_general(m); + else if (k == K_NO) + app().read_general(m); + ok = k == K_YES || k == K_NO; + } + else ok = TRUE; + + TMask& sv = sh.sheet_mask(); + if (ok) + { + if (sv.is_running()) sv.stop_run(K_ENTER); + app().vis_one(month); + const bool new_age_2000 = (app()._year >= 2000) && (app()._lia->get("S9") == "NV"); + if (new_age_2000) + app().read_general(m); + } + + app().set_vers_rows(sh); + + const int res = app().look_ver(month, 1); + + if (res > 0) + { + TToken_string& tv = sh.row(sel); + if (res == 1) + { + tv.add(app().del()->get("D0"),1); + tv.add(app().del()->get("S7"),2); + tv.add(app().del()->get("S8"),3); + tv.add(app().del()->get("S9"),4); + tv.add(app().del()->get("R0"),5); + } + else + { + TLocalisamfile & f24 = *app()._f24; + + tv.add(f24.get(F24_DATAVERS),1); + tv.add(f24.get(F24_ABI),2); + tv.add(f24.get(F24_CAB),3); + tv.add("",4); + tv.add(f24.get(F24_IMPORTODEB),5); + } + sh.force_update(sel); + } + + return true; +} + + +void Visliq_app::vis_liq() +{ + const long ditta = get_firm(); // Memorizza ditta corrente da ripristinare alla fine + set_freqviva(); + + TMask m("cg5500a"); + _mask = &m; + + m.set_handler(F_CODDITTA, set_ditta); + m.set_handler(F_RAGSOC, set_ragsoc); + m.set_handler(F_YEAR, ch_year_handler); + + set_mask_freq(m); + _year = m.get_int(F_YEAR); + + KEY k; + while ((k = m.run()) == K_ENTER) + { + if (m.get(F_CODDITTA).empty() || m.get(F_RAGSOC).empty()) + { + beep(); + continue; + } + + const long dtt = m.get_long(F_CODDITTA); + set_firm(dtt); + + TIva_round ir; + ir.set_default_iva_mode(_year, FALSE); + + const int month = m.get_int(_freqviva == "M" ? F_MONTHS : F_TRIMS); + _is_annual = (month == 13); + if (month == 0) + vis_all(); + else + vis_one(month); + _mask = &m; + } + + set_firm(ditta); +} + + +bool Visliq_app::vis_all() +{ + if (!look_lia()) + return FALSE; + + // mask diverse per trimestrale e annuale + _mask = new TMask(_freqviva == "M" ? "cg5500b" : "cg5500c"); + + TSheet_field& sh = _mask->sfield(F_VISLIQ1); + TSheet_field& sv = _mask->sfield(F_VISLIQ2); + _liq_sheet = &sh; + _vers_sheet = &sv; + + // disabilita aggiunta/eliminazione righe + sh.set_notify(sheet_action); + // qui occorre modificare le deleghe + sv.set_notify(vers_action); + + sh.sheet_mask().set_handler(100,sel_mese_sh1); + sv.sheet_mask().set_handler(100,sel_mese_sh2); + + const bool new_age_2000 = (_year >= 2000) && (_lia->get("S9") == "NV"); + const bool new_print_2000 = _year >= 2000; + TMask& shm = sh.sheet_mask(); + + for (int id = 103; shm.id2pos(id) > 0; id++) + { + TMask_field& f = shm.field(id); + if ((f.in_group(11) && new_print_2000) || (f.in_group(12) && !new_print_2000)) + { + f.hide(); + sh.delete_column(id); + } + if (id == 108 || id == 110) + sh.enable_column(id, new_age_2000); + } + + // fill the mask in + read_general(*_mask); + + for (bool stop = FALSE; !stop;) + { + KEY k = _mask->run(); + + switch(k) + { + case K_ESC: + case K_QUIT: + if (_mask->dirty()) + { + KEY k = yesnocancel_box(TR("Registrazione modifiche effettuate?")); + + if (k == K_YES) + write_general(*_mask); + else + read_general(*_mask); + + if (k == K_YES || k == K_NO) + stop = TRUE; + break; + } + else stop = TRUE; + break; + case K_SAVE: + // write values + if (_mask->dirty()) + write_general(*_mask); + break; + } + } + + delete _mask; + _mask = NULL; + + _vers_sheet = NULL; + _liq_sheet = NULL; + + return TRUE; +} + + +bool Visliq_app::vis_one(int m) +{ + begin_wait(); + TMask msk("cg5500d"); + + bool recorded = TRUE; + TString nomem(TR("Liquidazione IVA ")); + + nomem << itoname(m); + nomem << " " << _year; + + msk.show(F_PERIODOM, _freqviva == "M"); + msk.show(F_PERIODOT, _freqviva != "M"); + msk.set(_freqviva == "M" ? F_PERIODOM : F_PERIODOT, m); + + // ricalcolo liquidazione + TFilename f; + f.temp("prliq"); + + TToken_string body(36); + body.add(_year); + body.add(m); + body.add(get_firm()); + body.add("V"); // visualizzazione: no ff alla fine, zeri stampati + body.add(""); + body.add(f); + body.add('X'); + + TMessage msg("cg4 -2 -S", "RCL", body); + msg.send(); + + TBrowsefile_field& brw = (TBrowsefile_field&)msk.field(F_VISFLQ); + brw.set_link_handler(link_handler); + brw.enable_link(TR("Modifica: "), 'r'); + + TExternal_app liq("cg4 -2"); + + end_wait(); + TProgind* pp = new TProgind(10,TR("Estrazione liquidazione: prego attendere"),FALSE,FALSE); + liq.run(); + if (liq.exitcode()) + { + beep(); + return FALSE; + } + + look_lim(m); + look_lia(); + + real rimborso = _lim->get_real("R1"); + real rettifica = _lim->get_real("R5"); + + if (_lim->get_bool("B2")) + nomem << TR(" (diritto al rimborso infraannuale)"); + + real acconto(0.0); + + if (m == 12) + { + const int res = look_ver(12, 7); + + if (res == 1) + acconto = _del->get_real("R0"); + else + if (res == 2) + acconto = _f24->get_real(F24_IMPORTODEB); + } + else + if (m == 13) + acconto = _lim->get_real("R11"); + + + msk.field(F_YEAR).set(nomem); + msk.set(F_RIMBORSO, rimborso); + + // Ottima procedura di 16 righe, di cui 14 inutili! + if (rettifica.sign() < 0) + { + real rabs = abs(rettifica); + msk.field(F_RETTIFICA).set(rabs.string()); + msk.field(F_DEBCRE).set("C"); + } + else if (rettifica.sign() > 0) + { + msk.field(F_RETTIFICA).set(rettifica.string()); + msk.field(F_DEBCRE).set("D"); + } + else + { + msk.field(F_RETTIFICA).set(""); + msk.field(F_DEBCRE).set(""); + } + + TString desc1 = _lim->get("S0"), desc2 = _lim->get("S1"), desc3 = _lim->get("S2"); + msk.field(F_DESCR1).set(desc1); + msk.field(F_DESCR2).set(desc2); + msk.field(F_DESCR3).set(desc3); + msk.set(F_ACCONTO, acconto); + + real varimp = _lim->get("R17"); + real impnonver= _lim->get("R18"); + real credspec = _lim->get("R19"); + + msk.set(F_VARIMP, varimp >= ZERO ? varimp : -varimp); + msk.set(F_VARIMP_DC, varimp >= ZERO ? "D" : "C"); + + msk.set(F_IMPNONVER, impnonver); + msk.set(F_CREDSPEC, credspec); + + begin_wait(); + brw.set_text(f, TR("CALCOLO LIQUIDAZIONE D'IMPOSTA")); + brw.goto_pos(brw.lines()-16l, 9); + delete pp; + + TViswin & vsw = brw.vis_win(); + bool is_delega = FALSE; + + real vers; TDate date; TString abi(5), cab(5), con(3); + + const int res = look_ver(m, 1); + + is_delega = res > 0; + + if (is_delega) + { + if (res == 1) + { + vers = _del->get_real("R0"); + date = _del->get_date("D0"); + abi = _del->get("S7"); + cab = _del->get("S8"); + con = _del->get("S9"); + } + else + { + TLocalisamfile & f24 = *_f24; + + vers = f24.get_real(F24_IMPORTODEB); + date = f24.get_date(F24_DATAVERS); + abi = f24.get(F24_ABI); + cab = f24.get(F24_CAB); + con.cut(0); + } + } + + msk.field(F_DELDATE).set(date.string()); + msk.field(F_DELIMP).set(vers.string()); + msk.field(F_DELABI).set(abi); + msk.field(F_DELCAB).set(cab); + msk.field(F_DELCON).set(con); + + end_wait(); + + bool l_mod = FALSE; + bool d_mod = FALSE; + + _from_one = TRUE; + + for(;;) + { + KEY k = msk.run(); + + if (k == K_ESC) break; + + real n_acconto (msk.get(F_ACCONTO)); + real n_rimborso (msk.get(F_RIMBORSO)); + real n_rettifica(msk.get(F_RETTIFICA)); + real n_delimp(msk.get(F_DELIMP)); + TString n_desc1 (msk.get(F_DESCR1)); + TString n_desc2 (msk.get(F_DESCR2)); + TString n_desc3 (msk.get(F_DESCR3)); + real n_vers (msk.get(F_DELIMP)); + TDate n_date (msk.get(F_DELDATE)); + TString n_abi (msk.get(F_DELABI)); + TString n_cab (msk.get(F_DELCAB)); + TString n_con (msk.get(F_DELCON)); + real n_varimp(msk.get(F_VARIMP)); + real n_impnonver(msk.get(F_IMPNONVER)); + real n_credspec(msk.get(F_CREDSPEC)); + + if (msk.field(F_DEBCRE).get()[0] == 'C') + n_rettifica = -n_rettifica; + + if (msk.get(F_VARIMP_DC)[0] == 'C') + n_varimp = -n_varimp; + + if (msk.field(F_RETTIFICA).dirty() || msk.field(F_DEBCRE).dirty()) + { + rettifica = n_rettifica; + l_mod = TRUE; + } + if (msk.field(F_ACCONTO).dirty()) + { + acconto = n_acconto; + l_mod = TRUE; + } + if (msk.field(F_RIMBORSO).dirty()) + { + bool ok = TRUE; + if (!n_rimborso.is_zero()) + { + const bool old_rim = !rimborso.is_zero(); + // check diritto (se non ce n'era gia' uno prima) + if (!_lim->get_bool("B2") && !old_rim) + ok = yesno_box(FR("Non risulta diritto al rimborso per il mese %d. Si desidera " + "confermare ugualmente?"), m); + } + if (ok) + { + rimborso = n_rimborso; + l_mod = TRUE; + } + else + { + msk.field(F_RIMBORSO).set(rimborso.string()); + msk.field(F_RIMBORSO).set_dirty(FALSE); + } + } + if (msk.field(F_DESCR1).dirty()) + { + desc1 = n_desc1; + l_mod = TRUE; + } + if (msk.field(F_DESCR2).dirty()) + { + desc2 = n_desc2; + l_mod = TRUE; + } + if (msk.field(F_DESCR3).dirty()) + { + desc3 = n_desc3; + l_mod = TRUE; + } + if (msk.field(F_DELDATE).dirty()) + { + date = n_date; + d_mod = TRUE; + } + if (msk.field(F_DELIMP).dirty()) + { + real itt = _lim->get_real("R10"); + vers = n_vers; + d_mod = TRUE; + } + if (msk.field(F_DELABI).dirty()) + { + abi = n_abi; + d_mod = TRUE; + } + if (msk.field(F_DELCAB).dirty()) + { + cab = n_cab; + d_mod = TRUE; + } + if (msk.field(F_DELCON).dirty()) + { + con = n_con; + d_mod = TRUE; + } + if (msk.field(F_VARIMP).dirty() || msk.field(F_VARIMP_DC).dirty()) + { + varimp = n_varimp; + l_mod = TRUE; + } + if (msk.field(F_IMPNONVER).dirty()) + { + impnonver = n_impnonver; + l_mod = TRUE; + } + + if (msk.field(F_CREDSPEC).dirty()) + { + credspec = n_credspec; + l_mod = TRUE; + } + + if (recorded) recorded = !(d_mod || l_mod); + + if (k == K_INS || k == K_SAVE) + { + recalc_liq_data(&vsw, rimborso, rettifica, vers, acconto, varimp, impnonver, credspec, + desc1, desc2, desc3, date, abi, cab, con); + } + if (k == K_SAVE) + { + { write_liq(); recalc_next_liq(m, _liq_sheet, _vers_sheet); } + if (d_mod) { write_del(); } + l_mod = d_mod = FALSE; + recorded = TRUE; + } + if (k == K_QUIT) + { + if (!recorded) + { + KEY kk = yesnocancel_box(TR("Modifiche non registrate: salvare?")); + if (kk == K_YES) + { + if (l_mod) { write_liq(); recalc_next_liq(m, _liq_sheet, _vers_sheet); } + if (d_mod) { write_del(); } + l_mod = d_mod = FALSE; + recorded = TRUE; + } + if (kk == K_YES || kk == K_NO) + break; + } + else break; + } + } + + remove(f); + + return recorded; +} + + +real Visliq_app::credito_utilizzato(int year, int month) const +{ + real credito; + + TTable lim("LIM"); + TString16 cod; + for (int m = 1; m <= month; m++) + { + cod.format("%04d%02d", year, m); + lim.put("CODTAB", cod); + if (lim.read() == NOERR) + { + if (m < month) + credito += lim.get_real("R15"); // Credito utilizzato IVA + if (m < 13) + credito += lim.get_real("R16"); // Credito utilizzato F24 + } + } + + return credito; +} + +HIDDEN void replace_number(TViswin* vsw, long rig, real num, int tab) +{ + TString16 str; + if (num.is_zero()) + str.spaces(15); + else + { + const TCurrency c(num); + str = c.string(TRUE); + str.right_just(15); + } + vsw->replace(rig, str, tab); +} + +real Visliq_app::min_vers(int anno, int month) +{ + TInteressi_IVA_table ver; + real min; + if (month > 12) + { + if (ver.read(_year, 12) == NOERR) + min = ver.get(I_ANNUALE); + } + else + { + if (ver.read(_year, month) == NOERR) + min = ver.get(I_PERIODICO); + } + return min; +} + +void Visliq_app::recalc_liq_data(TViswin* vsw, real& rimb, real& rett, real& vers, + real& acc, real& varimp, real& impnonver, real & credspec, + TString& d1, TString& d2, TString& d3, TDate& date, + TString& abi, TString& cab, TString& con) +{ + // ricalcola tutto, scrive nei lim, NON salva e riaggiusta + // la paginata della liquidazione + // Descrizione Da ricalcolare + // ------------------------------------------------------------------------------- + real iva_ven = _lam->get_real("R0"); // IVA acquisti no + real iva_acq = _lam->get_real("R1"); // IVA vendite no + real cre_pre = _lam->get_real("R2"); // credito precedente no (solo dopo) + real deb_pre = _lam->get_real("R3"); // debito precedente no (solo dopo) + real ris = _lim->get_real("R0"); // risultato si + real rmb = _lim->get_real("R1"); // rimborso si + real rtt = _lim->get_real("R5"); // rettifica si + real udt = _lim->get_real("R6"); // ult. detrazioni no + real cgp = _lim->get_real("R7"); // conguaglio prorata no + real vrs = _lim->get_real("R8"); // versamenti no + real vri = _lim->get_real("R9"); // versamenti integrativi no + real itt = _lim->get_real("R10"); // tasso interesse no + real act = _lim->get_real("R11"); // acconto si + real crd = _lim->get_real("R12"); // totale a credito si + real dbt = _lim->get_real("R13"); // totale a debito si + real itr = _lim->get_real("R14"); // interesse totale si + real cui = _lim->get_real("R15"); // Credito utilizzato iva si + real var = _lim->get_real("R17"); // Variazioni d'imposta no + real inv = _lim->get_real("R18"); // Imposta non versata no + real crs = _lim->get_real("R19"); // Crediti speciali no + // ------------------------------------------------------------------------------- + const int year = atoi(_lim->get("CODTAB").mid(0, 4)); + const int month = atoi(_lim->get("CODTAB").mid(4, 2)); + const bool after2000 = _year >= 2000; // CM000222 + + if (month == 13 || after2000) + { + // molto codice duplicato, ma ne val la pena (vedi sopra) + round_imposta(vrs); + round_imposta(vers); + round_imposta(rmb); + round_imposta(rimb); + round_imposta(rtt); + round_imposta(rett); + round_imposta(act); + round_imposta(acc); + round_imposta(var); + round_imposta(varimp); + round_imposta(inv); + round_imposta(impnonver); + round_imposta(crs); + round_imposta(credspec); + } + + // calcola vecchio risultato: se e' diverso da R0 ci sono cazzi strani + // e invalidiamo B0 cosi' impara + real risul = iva_ven - iva_acq - udt + rmb + cgp - vri + rtt - act - cre_pre + deb_pre + + var + inv - cui - crs; + + if (risul != ris) + { +#ifdef DBG + yesnofatal_box("Porca vacca: Risultato non coincidente!"); +#endif + _lim->put("B0", "X"); + } + + + // calcola nuovi dati + real riscr = iva_acq + udt + acc + cre_pre + credspec; + real risdb = iva_ven + rimb + deb_pre + impnonver; + + if (rett.sign() < 0) riscr -= rett; + else risdb += rett; + if (cgp.sign() < 0) riscr -= cgp; + else riscr += cgp; + if (varimp.sign() < 0) riscr -= varimp; + else risdb += varimp; + + real credito_utilizzato_iva = ZERO; + const bool new_age_2000 = (_year >= 2000) && look_lia() && (_lia->get("S9") == "NV"); + if (new_age_2000) + { + real credito_utilizzabile_inizio_anno = _lia->get_real("R0") - _lia->get_real("R15"); + if (credito_utilizzabile_inizio_anno < ZERO) + credito_utilizzabile_inizio_anno = ZERO; + + risul = risdb - riscr; + if (risul > ZERO && credito_utilizzabile_inizio_anno > ZERO) + { + real credito_utilizzabile = credito_utilizzabile_inizio_anno; + + credito_utilizzabile -= credito_utilizzato(year, month); + if (credito_utilizzabile < ZERO) credito_utilizzabile = ZERO; + if (month < 13) + credito_utilizzato_iva = min(risul, credito_utilizzabile); + else + credito_utilizzato_iva = credito_utilizzabile; + round_imposta(credito_utilizzato_iva); + riscr += credito_utilizzato_iva; + } + } + + risul = risdb - riscr; + + real intr(0.0); + + if (!itt.is_zero() && risul.sign() > 0) + { + // calcola interesse + intr = risul * itt / real(100.0); + intr.ceil(); + if (after2000) + round_imposta(intr); + } + + // riaggiusta LIM + _lim->put("R0", risul); + _lim->put("R1", rimb); + _lim->put("R5", rett); + _lim->put("R8", vers); + _lim->put("R11", acc); + _lim->put("R12", riscr); + _lim->put("R13", risdb); + _lim->put("R14", intr); + _lim->put("R15", credito_utilizzato_iva); + _lim->put("R17", varimp); + _lim->put("R18", impnonver); + _lim->put("R19", credspec); + + _lim->put("S0", d1); + _lim->put("S1", d2); + _lim->put("S2", d3); + + // i dati dei versamenti si schiaffano in LIM: + // D0 la data, S4/5/6 le tre cazzate ABI CAB CON + _lim->put("D0", date); + _lim->put("S4", abi); + _lim->put("S5", cab); + _lim->put("S6", con); + + // determina righe da cambiare + // una sburlata di search ...... + int x = 0; + long lvers = -1l; + long line = vsw->search(TR("CALCOLO LIQUIDAZIONE D'IMPOSTA"), x); + int wasdebt = ris.sign(); + long lrisd = vsw->search(TR("RISULTATO"), x, line, TRUE); // RISULTATO a debito + long lrisc = vsw->search(TR("RISULTATO"), x, lrisd+1, TRUE); // credito + long lrettc = vsw->search(TR("Rettifiche IVA a credito"),x,line,TRUE); + long lrettd = vsw->search(TR("Rettifiche IVA a debito"), x,line,TRUE); + long lacct = vsw->search(TR("Versamento acconto dicembre"),x,line,TRUE); + long lintr = vsw->search(TR("Interesse"),x,line,TRUE); + long livdv = vsw->search(TR("IVA DOVUTA"),x,line,TRUE); + long lrivr = vsw->search(TR("Versamenti effettuati"),x,line,TRUE); + long lvari = vsw->search(TR("Variazioni d'imposta"),x,line,TRUE); + long limnv = vsw->search(TR("Imposta non versata"),x,line,TRUE); + long lcicd = vsw->search(TR("Credito IVA compensabile detratto"),x,line,TRUE); + long iadoc = vsw->search(TR("IVA a debito o a credito per il periodo"),x,line,TRUE); + long lrimb = vsw->search(iadoc > 0 ? TR("Rimborsi") : TR("Iva chiesta a rimborso"),x,line,TRUE); + + if (wasdebt != 0) + lvers = vsw->search(wasdebt < 0 ? TR("CREDITO ATTUALE") : TR("IVA DA VERSARE"), + x, line, TRUE); + if (lvers == -1l) + lvers = vsw->search(TR("IVA A DEBITO DA NON VERSARE"), x, line, TRUE); + if (lvers == -1l) + lvers = lrisc+1l; + + // ... seguita da una sburlata di replace + replace_number(vsw, lrimb, rimb, 75); + + replace_number(vsw, lrisd, risdb, 75); + replace_number(vsw, lrisc, riscr, 58); + replace_number(vsw, lacct, acc, 58); + + if (rett.sign() > 0) + { + replace_number(vsw, lrettd, rett, 75); + vsw->replace(lrettc, " ", 58); + } + else if (rett.sign() < 0) + { + real rabs = abs(rett); + replace_number(vsw, lrettd, rabs, 58); + vsw->replace(lrettd, " ", 75); + } + else + { + vsw->replace(lrettc, " ", 58); + vsw->replace(lrettd, " ", 75); + } + + if (iadoc > 0) // New Age 2000 + { + int tab1 = 75, tab2 = 58; + real v = iva_ven + rett - iva_acq; + if (v < ZERO) + { + v = -v; tab1 = 58; tab2 = 75; + } + if (v.is_zero()) + vsw->replace(iadoc, " ", tab1); + else + replace_number(vsw, iadoc, v, tab1); + + vsw->replace(iadoc, " ", tab2); + + iadoc = vsw->search(TR("IVA dovuta o a credito per il periodo"),x,line,TRUE); + v = risul + credspec; + if (v < ZERO) + { + v = -v; tab1 = 58; tab2 = 75; + } + if (v.is_zero()) + vsw->replace(iadoc, " ", tab1); + else + replace_number(vsw, iadoc, v, tab1); + + vsw->replace(iadoc, " ", tab2); + + TString256 ln; + long lcrs = vsw->search(TR("Crediti speciali"),x,line,TRUE); + + if (credspec.is_zero()) + vsw->replace(lcrs, " ", 58); + else + replace_number(vsw, lcrs, credspec, 58); + + const bool print_intr = _freqviva == "T" && intr != 0.0; + const char* desc_inter = TR("Interessi dovuti per liquidazioni trimestrali"); + lintr = vsw->search(desc_inter, x, line, TRUE); + + if (print_intr) + { + if (lintr == -1) + { + lintr = iadoc + 2; + TString desc; + desc.format("%s %s%%", desc_inter, itt.stringa(6,2)); + vsw->replace(lintr, desc, 11); + } + replace_number(vsw, lintr, intr, 75); + risul += intr; + } + else + if (lintr > 0) + { + ln.spaces(90); + vsw->replace(lintr, ln, 11); + } + + long idv = vsw->search(TR("IMPORTO DA"), x, iadoc, TRUE); + if (idv < 0) + idv = iadoc+6; + + if (risul > ZERO) + { + ln = TR("IMPORTO DA "); + if (risul < min_vers(_year, month) && month < 13) + ln << TR("NON "); + ln << TR("VERSARE "); + replace_number(vsw, idv, risul, 75); + } + else + ln.spaces(90); + vsw->replace(idv, ln, 23); + } + else + { + // non scrive e si sciroppa la viswin + TString256 ln; + ln.spaces(); ln.cut(136); + if (risul.sign() < 0) // Significa che in questo momento il risultato e' a credito + { + TCurrency rabs(-risul); + TString16 str = rabs.string(TRUE); str.right_just(15); + + ln.overwrite(TR("CREDITO ATTUALE"), 23); + ln.overwrite(str, 58); + if (lintr > 0) // Quindi niente riga "Interessi " ... + { + vsw->replace(lintr," ",23); + vsw->replace(lintr," ",33); + vsw->replace(lintr," ",41); + vsw->replace(lintr," ",75); + } + if (livdv > 0) // ...ed "IVA DOVUTA" + { + vsw->replace(livdv," ",23); + vsw->replace(livdv," ",75); + } + } + else if (risul.sign() >= 0) // ... altrimenti siamo a debito, in tal caso si hanno gli interessi (solo trimestrali of course) + { + const bool print_intr = _freqviva == "T" && intr != 0.0; + if (print_intr) + { + if (lintr == -1) + { + lintr = lrisc + 2; + vsw->replace(lintr, TR("Interesse"), 23); + vsw->replace(lintr, itt.stringa(6,2), 33); + vsw->replace(lintr, "%", 43); + } + if (livdv == -1) + { + livdv = lrisc + 1; + vsw->replace(livdv, TR("IVA DOVUTA"), 23); + } + if (lintr > 0) + replace_number(vsw, lintr, intr, 75); + if (livdv > 0) + { + replace_number(vsw, livdv, risul, 75); + risul += intr; + } + } + ln.overwrite(TR("IVA DA VERSARE"), 23); + + TCurrency rabs(risul); + TString16 str = rabs.string(TRUE); str.right_just(15); + ln.overwrite(str, 75); + } + vsw->replace(lvers, ln, 0); + } + + if (lrivr >= 0) + { + if (vers.is_zero()) + vsw->replace(lrivr, " ", 58); + else + replace_number(vsw, lrivr, vers, 58); + } + + if (lvari >= 0) + { + int tab1 = 75, tab2 = 58; + real v = varimp; + if (v < 0) + { + v = -v; + tab1 = 58; + tab2 = 75; + } + if (!v.is_zero()) + replace_number(vsw, lvari, v, tab1); + else + vsw->replace(lvari, " ", tab1); + vsw->replace(lvari, " ", tab2); + } + if (limnv >= 0) + { + if (!impnonver.is_zero()) + replace_number(vsw, limnv, impnonver, 75); + else + vsw->replace(limnv, " ", 75); + } + if (lcicd >= 0) + { + if (credito_utilizzato_iva.is_zero()) + vsw->replace(lcicd, " ", 58); + else + replace_number(vsw, lcicd, credito_utilizzato_iva, 58); + } + + vsw->refresh(); +} + +void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field* sv) +{ + // riaggiusta le liquidazioni successive da li' in poi finche' ce n'e' + // rimette a posto i valori nelle tokenstrunz dello sheet + // soltanto nello start_month i valori di LIM sono stati cambiati + + int step = _freqviva == "M" ? 1 : 3; + real rstart = _lim->get("R0"); + + for (int i = start_month; i < 13; i += step) + { + int row = (i/step) - 1; + + if (i > start_month) + { + if (!look_lim(i)) + break; + + // ricalcola LIM e LAM + real cred = _lam->get_real("R2"); + real debt = _lam->get_real("R3"); + real risl = _lim->get_real("R0"); + real vers = _lim->get_real("R8"); + real risc = _lim->get_real("R12"); + real risd = _lim->get_real("R13"); + real intt = _lim->get_real("R10"); + real crf24 = _lim->get_real("R16"); + + // toglie vecchio credito e debito + risl += cred; + risl -= debt; + risc -= cred; + risd -= debt; + + // aggiunge nuovo credito o debito + real min = min_vers(_year, i); + if (rstart.sign() < 0 || (rstart.sign() > 0 && rstart < min)) + risl += rstart; + + real newcred(0.0); + real newdebt(0.0); + if (rstart.sign() < 0) + { + newcred = -rstart; + risc -= rstart; + } + if (rstart.sign() > 0 && rstart < min) + { + newdebt = rstart; + risd += rstart; + } + + _lam->put("R2", newcred); + _lam->put("R3", newdebt); + _lim->put("R0", risl); + _lim->put("R12", risc); + _lim->put("R13", risd); + if (intt.sign() > 0) // interessi + { + real intr = risl * intt / real(100.0); + if (_year >= 2000) + round_imposta(intr); + _lim->put("R14",intr); + } + _lim->put("R16", crf24); + + _lim->rewrite(); + _lam->rewrite(); + + rstart = risl; + } + + if (sl != NULL) + { + TToken_string& t = sl->row(row); + t.add(itoname(i),0); + + int sr0 = (_lim->get_real("R0")).sign(); + int sr5 = (_lim->get_real("R5")).sign(); + + real r0abs = abs(_lim->get_real("R0")); + real r5abs = abs(_lim->get_real("R5")); + t.add(r0abs.string(),1); + t.add(sr0 == 0 ? "" : (sr0 > 0 ? "D" : "C"), 2); + t.add((_lim->get_real("R1")).string(),3); + t.add(r5abs.string(),4); + + t.add(sr5 == 0 ? "" : (sr5 > 0 ? "D" : "C"),5); + + for (int kk = 3; kk < 6 ; kk++) + sl->enable_cell(row, kk); + sl->enable_cell(row, 7); + sl->enable_cell(row, 9); + + sl->force_update(row); + } + } + + // se non si fa questa non scrive una delega, + // bensi' una bovazza (escremento bovino) + look_lim(start_month); +} + +void Visliq_app::write_liq() +{ + // piccola, ma simpatica + // naturalmente era much bigger + _lim->rewrite(); +} + +void Visliq_app::write_del() +{ + bool wasdel = FALSE; + + int month = atoi(*_lim_mese); + TString abi(_lim->get("S4")); + TString cab(_lim->get("S5")); + TString con(_lim->get("S6")); + TDate date(_lim->get("D0")); + real vers(_lim->get_real("R8")); + real intr(_lim->get_real("R10")); + int res = look_ver(month,1); + TLocalisamfile & f24 = *_f24; + + wasdel = res > 0; + + if (vers.is_zero() && wasdel) + { + if (res == 1) + { + _del->remove(); + _del->rewrite(); // ??? + } + else + f24.remove(); + return; + } + + if (!wasdel) + res = look_ver(month,1, true); // Crea delega + + real inter(0.0); + + if (!intr.is_zero()) + { + // riapplica il tasso di interesse + // se trimestrale e' stato scorporato rispetto + // all'eventuale input utente + inter = vers*real(100.0)/(real(100.0)+intr); + inter = vers - inter; + inter.ceil(); + if (_year >= 2000) + round_imposta(inter); + } + + if (res == 1) + { + _del->put("R0",vers); + _del->put("R1",inter); + _del->put("D0",date); + _del->put("S7",abi); + _del->put("S8",cab); + _del->put("S9",con); + int ctri = _freqviva == "M" ? 6000 + month : 6031 + (month/3); + _del->put("S6", ctri); + _del->rewrite(); + } + else + { + vers = f24.get_real(F24_IMPORTODEB); + date = f24.get_date(F24_DATAVERS); + abi = f24.get(F24_ABI); + cab = f24.get(F24_CAB); + con.cut(0); + f24.rewrite(); + } +} + + +void Visliq_app::read_general(TMask& m) +{ + TString abi(5); + TString cab(5); + TString cnc(5); + const int step = _freqviva == "M" ? 1 : 3; + const bool new_age_2000 = (_year >= 2000) && (_lia->get("S9") == "NV"); + + TSheet_field& sh = m.sfield(F_VISLIQ1); + TSheet_field& sv = m.sfield(F_VISLIQ2); + TMask_field & crprec = m.field(F_CREDPREC); + + if (new_age_2000) + crprec.set_prompt(TR("Credito compensabile inizio anno ")); + else + crprec.set_prompt(TR("Credito inizio anno ")); + real cr_res = _lia->get_real("R0"); + crprec.set(cr_res.string()); + if (new_age_2000) + cr_res -= _lia->get_real("R15"); + + + // set sheet + for (int i = step; i < 13; i+=step) + { + int row = (i/step) - 1; + + if (!is_month_ok(i)) + continue; + + if (!look_lim(i)) + { + if (sh.items() < row) + sh.row(row) = *(new TToken_string("||||||")); + else + sh.row(row) = "||||||"; + + sh.disable_cell(row, -1); + continue; + } + + TToken_string* tt = NULL; + if (sh.items() < row) + tt = new TToken_string(80); + else + tt = &(sh.row(row)); + + real r0abs = abs(_lim->get_real("R0")); + real r5abs = abs(_lim->get_real("R5")); + tt->add(itoname(i),0); + tt->add(r0abs.string(),1); + + int sr0 = (_lim->get_real("R0")).sign(); + int sr5 = (_lim->get_real("R5")).sign(); + + tt->add(sr0 == 0 ? "" : (sr0 > 0 ? "D" : "C"),2); + tt->add(_lim->get_real("R1").string(),3); + tt->add(r5abs.string(),4); + tt->add(sr5 == 0 ? "" : (sr5 > 0 ? "D" : "C"),5); + + const real criva = _lim->get_real("R15"); + tt->add(criva.string(), 6); + const real crf24 = _lim->get_real("R16"); + tt->add(crf24.string(),7); + if (new_age_2000) + { + if (cr_res > ZERO) + { + cr_res -= crf24; + cr_res -= criva; + } + if (cr_res < ZERO) + cr_res = ZERO; + tt->add(cr_res.string(), 8); + } + else + tt->add("", 8); + tt->add(_lim->get("S3"), 9); + + sh.row(row) = (*tt); + } + + // calcola versamenti + real versamenti[13]; + TDate date[13]; + TToken_string banche[13]; + + for (_del->first(); !_del->eof(); _del->next()) + { + if (atol(*_del_ditta) != get_firm() || + atoi(*_del_anno) != _year) + continue; + + // uso solo deleghe normali (tipo == 1) e acconti (tipo == 7) + int tipod = atoi(*_del_tipo); + if (tipod != 1 && tipod != 7) + continue; + + // somma versamenti nel mese adeguato + int m = atoi(*_del_mese); + + if (m >= 12) + m = tipod == 7 ? 12 : 13; + // supercauto + if (m <= 0) continue; + + versamenti[m-1] += _del->get_real("R0"); + date[m-1] = _del->get_date("D0"); + banche[m-1].add(_del->get("S7"),0); + banche[m-1].add(_del->get("S8"),1); + banche[m-1].add(_del->get("S9"),2); + } + + // Sheet versamenti + TString nomemese; + sv.destroy(); + for (i = 1; i <= 13; i++) + { + if (!is_month_ok(i) && i != 13) + continue; + + TToken_string tt; + nomemese = itoname(i == 13 ? 12 : i); + + if (nomemese == "4 Trimestre") + nomemese = "4 Tr."; + + if (i == 12) nomemese << TR(" acconto"); + if (i == 13) nomemese << TR(" saldo"); + + tt.add(nomemese,0); // mese + tt.add(date[i-1].string(),1); // data vers. + tt.add(banche[i-1].get(0),2); // azienda + tt.add(banche[i-1].get(1),3); // dipendenza + tt.add(banche[i-1].get(2),4); // concessionaria + tt.add(versamenti[i-1].string(),5);// versamenti + + sv.row(-1) = tt; + if (i == 12) + sv.enable_cell(sv.items() - 1, -1, FALSE); + } + + // sh.enable_column(0, FALSE); + // sv.enable_column(0, FALSE); + + sh.force_update(); + sv.force_update(); + + // save initial rows + _vers_rows = sv.rows_array(); + _liq_rows = sh.rows_array(); + + m.field(F_CREDPREC).set_dirty(FALSE); + m.field(F_VISLIQ1).set_dirty(_sh_dirty=FALSE); + m.field(F_VISLIQ2).set_dirty(_sv_dirty=FALSE); +} + +void Visliq_app::write_general(TMask& m) +{ + TSheet_field& sh = (TSheet_field&)m.field(F_VISLIQ1); + TSheet_field& sv = (TSheet_field&)m.field(F_VISLIQ2); + const bool new_age_2000 = (_year >= 2000) && (_lia->get("S9") == "NV"); + + if (m.field(F_CREDPREC).dirty()) + { + const real r = m.get(F_CREDPREC); + _lia->put("R0",r); + _lia->rewrite(); + } + + // credito iniziale + real rstart = _lia->get_real("R0"); + real cr_res; + if (!new_age_2000) + { + if (!rstart.is_zero()) + rstart = -rstart; + } + else + cr_res = rstart - _lia->get_real("R15"); + + // indicatore ricalcolo crediti e debiti OK + int step = _freqviva == "M" ? 1 : 3; + bool carry = TRUE; + bool was_lim; + TMask& shm = sh.sheet_mask(); + TMask& svm = sv.sheet_mask(); + + for (int i = step; i < 13; i += step) + { + // this is a true bordel + const int row = (i/step) - 1; + + bool lfrommask = sh.selected() == row && (shm.is_running() || _from_one); + bool vfrommask = sv.selected() == (i == 12 ? row + 1 : row) && svm.is_running(); + + TToken_string& tt_lo = (TToken_string&)_liq_rows[row]; + TToken_string& tt_ln = sh.row(row); + + // risolve menata del dettaglio si'/no + if (lfrommask) + { + for (int i = 1; i <= 9; i++) + tt_ln.add(shm.get(101+i),i); + } + + // saltare una riga se dicembre (riga 11 == acconto) + TToken_string& tt_vo = (TToken_string&)_vers_rows[i == 12 ? row + 1 : row]; + TToken_string& tt_vn = sv.row(i == 12 ? row + 1 : row); + + if (vfrommask) + { + for (int i = 1; i <= 5; i++) + tt_vn.add(svm.get(101+i),i); + } + + // traduci contenuto righe in real pila + real orett(tt_lo.get(4)); + real nrett(tt_ln.get(4)); + real orimb(tt_lo.get(3)); + real nrimb(tt_ln.get(3)); + real overs(tt_vo.get(5)); + real nvers(tt_vn.get(5)); + real crf24(tt_ln.get(7)); + TDate odate(tt_vo.get(1)); + TDate ndate(tt_vn.get(1)); + TString odbcr(tt_lo.get(5)); + TString ndbcr(tt_ln.get(5)); + TString oabi (tt_vo.get(2)); + TString nabi (tt_vn.get(2)); + TString ocab (tt_vo.get(3)); + TString ncab (tt_vn.get(3)); + TString ocon (tt_vo.get(4)); + TString ncon (tt_vn.get(4)); + TString descr(tt_ln.get(9)); + + if (odbcr == "C") orett = -orett; + if (ndbcr == "C") nrett = -nrett; + + // acconto (si considerera' solo a dicembre) + TToken_string& vo = (TToken_string&)_vers_rows[_freqviva == "M" ? 11 : 3]; + TToken_string& vn = sv.row(_freqviva == "M" ? 11 : 3); + real oacct (vo.get(5)); + real nacct (vn.get(5)); + TDate aodate(vo.get(1)); + TDate andate(vn.get(1)); + TString aoabi (vo.get(2)); + TString anabi (vn.get(2)); + TString aocab (vo.get(3)); + TString ancab (vn.get(3)); + TString aocon (vo.get(4)); + TString ancon (vn.get(4)); + + was_lim = look_lim(i); + if (!was_lim) + carry = FALSE; // blocca riporto crediti e debiti + + // ricalcola crediti e debiti se non ci sono + // liquidazioni non calcolate in mezzo + if (carry) + { + bool rt_mod = FALSE, rm_mod = FALSE, vr_mod = FALSE; + + real risl = _lim->get_real("R0"); + real vers = _lim->get_real("R8"); + real risc = _lim->get_real("R12"); + real risd = _lim->get_real("R13"); + + // ricalcola acconto se occorre + // e crea/aggiorna la delega + if (i == 12) + { + bool ac_mod = FALSE; + if (oacct != nacct) + { + risc -= oacct; + risc += nacct; + risl += oacct; + risl -= nacct; + _lim->put("R11", nacct); + ac_mod = TRUE; + } + if (ndate != odate || anabi != aoabi || ancab != aocab || ancon != aocon) + ac_mod = TRUE; + // write delega acconto + if (ac_mod) + { + const int res = look_ver(12,7,true); + + if (res == 1) + { + _del->put("R0",nacct); + _del->zero("R1"); + _del->put("S7",anabi); + _del->put("S8",ancab); + _del->put("S9",ancon); + _del->put("S6","6013"); + _del->rewrite(); + } + else + if (res == 2) + { + TLocalisamfile & f24 = *_f24; + + f24.put(F24_IMPORTODEB, nacct); + f24.put(F24_ABI,anabi); + f24.put(F24_CAB,ancab); + f24.rewrite(); + } + + } + } + + // ricalcola versamenti se occorre + // e crea/aggiorna le deleghe + if (nvers != overs) + { + vr_mod = TRUE; + } + if (vr_mod || ndate != odate || nabi != oabi || + ncab != ocab || ncon != ocon) + { + _lim->put("R8", nvers); + _lim->put("D0", ndate); + _lim->put("S4", nabi); + _lim->put("S5", ncab); + _lim->put("S6", ncon); + write_del(); + vr_mod = TRUE; + } + + // se modificate rettifiche + // sistemare + if (nrett != orett && !_from_one) + { + // toglie vecchie + risl -= orett; + if (orett.sign() < 0) + risc += orett; + else + risd -= orett; + // aggiunge nuove + risl += nrett; + if (orett.sign() < 0) + risc -= nrett; + else + risd += nrett; + + // scrivi + _lim->put("R5",nrett); + tt_lo.add(nrett.string(), 4); + tt_lo.add(nrett.sign() > 0 ? "D" : (nrett.is_zero() ? "" : "C"), 5); + + // elimina descrixioni se nuove rett. sono 0 + if (nrett.is_zero()) + { + _lim->put("S0",""); + _lim->put("S1",""); + } + } + + // controlla se qualcosa e' modificato e scrivi + // il valore; check compatibilita' versamenti e rimborsi + + // rileggi dati + real cred = _lam->get_real("R2"); + real debt = _lam->get_real("R3"); + real intt = _lim->get_real("R10"); + + // toglie vecchio credito e debito + risl += cred; + risl -= debt; + risc -= cred; + risd -= debt; + + // aggiunge nuovo credito o debito + real min = min_vers(_year, i); + if (rstart.sign() < 0 || (rstart.sign() > 0 && rstart < min)) + risl += rstart; + + real newcred(0.0); + real newdebt(0.0); + if (rstart.sign() < 0) + { + newcred = -rstart; + risc -= rstart; + } + if (rstart.sign() > 0 && rstart < min) + { + newdebt = rstart; + risd += rstart; + } + + // se modificato rimborso sistemare + if (nrimb != orimb && !_from_one) + { + // check compatibilita' + bool ok = TRUE; + + if (!nrimb.is_zero()) + { + if (risc <= risd) + ok = yesno_box(FR("Il risultato IVA non evidenzia crediti nel mese %d. Si conferma " + " il rimborso?"), i); + if (!_lim->get_bool("B2") && ok) + ok = yesno_box(FR("Non risulta diritto al rimborso per il mese %d. Si conferma" + " il rimborso?"), i); + } + + if (ok) + { + // togli vecchio + risd -= orimb; + risl -= orimb; + // aggiungi nuovo + risd += nrimb; + risl += nrimb; + // scrivi + _lim->put("R1", nrimb); + tt_lo.add(nrimb.string(), 3); + } + } + _lam->put("R2", newcred); + _lam->put("R3", newdebt); + _lim->put("R0", risl); + _lim->put("R12", risc); + _lim->put("R13", risd); + + if (intt.sign() > 0) // interessi + { + real intr = risl * intt / real(100.0); + if (_year >= 2000) + round_imposta(intr); + _lim->put("R14",intr); + } + + _lim->put("R16", crf24); + if (new_age_2000) + { + const real criva(tt_ln.get(6)); + if (cr_res > ZERO) + { + cr_res -= crf24; + cr_res -= criva; + } + if (cr_res < ZERO) + cr_res = ZERO; + } + _lim->put("S3", descr); + + _lim->rewrite(); + _lam->rewrite(); + + rstart = risl; + } + else + { + // salva i valori modificati senza fare controlli + // e rimetti a lui i suoi debiti mettendo B0 a FALSE + if (was_lim) + { + if (orett != nrett) + _lim->put("R5", nrett); + if (orimb != nrimb) + _lim->put("R1", nrimb); + _lim->put("R16", crf24); + _lim->put("S3", descr); + _lim->put("B0", ""); + _lim->rewrite(); + } + } + + // Rimetti a posto righe sheet se serve + if (was_lim) + { + int sr0 = (_lim->get_real("R0")).sign(); + int sr5 = (_lim->get_real("R5")).sign(); + + real r0abs = abs(_lim->get_real("R0")); + real r5abs = abs(_lim->get_real("R5")); + + tt_ln.add(r0abs.string(),1); + tt_ln.add(sr0 == 0 ? "" : (sr0 > 0 ? "D" : "C"), 2); + tt_ln.add((_lim->get_real("R1")).string(),3); + tt_ln.add(r5abs.string(),4); + tt_ln.add(sr5 == 0 ? "" : (sr5 > 0 ? "D" : "C"),5); + tt_ln.add(cr_res.string(),8); + + // sh.force_update(row); + } + _from_one = FALSE; + } // for mese liq. (riga sheet) + + sh.force_update(); + if (shm.is_running()) + sh.force_update(sh.selected()); + // Rileggi array righe vecchie + set_vers_rows(sv); + set_liq_rows(sh); + + // m.dirty() deve ritornare FALSE + m.field(F_CREDPREC).set_dirty(FALSE); + m.field(F_VISLIQ1).set_dirty(_sh_dirty=FALSE); + m.field(F_VISLIQ2).set_dirty(_sv_dirty=FALSE); +} + + + +int cg5500(int argc, char* argv[]) +{ + Visliq_app app; + app.run(argc, argv, TR("Visualizzazione Liquidazione")); + return 0; +} diff --git a/src/cg/modf24/cg5500.h b/src/cg/modf24/cg5500.h new file mode 100755 index 000000000..573c48ee2 --- /dev/null +++ b/src/cg/modf24/cg5500.h @@ -0,0 +1,129 @@ +#include +#include +#include +#include + +// IVA a debito da riportare al mese successivo + +class TSheet_field; +class TViswin; + +class Visliq_app : public TSkeleton_application +{ + TString _freqviva; + int _year; + long _firm; + + TRelation* _nditte; + TLocalisamfile * _f24; + TArray_sheet* _ditte; + TString_array _nomiditte; + + TTable* _lim; + TTable* _lam; + TTable* _lia; + TTable* _del; + + TRectype* _lim_r; + TRectype* _lam_r; + TRectype* _del_r; + TRecfield* _del_ditta; + TRecfield* _del_anno; + TRecfield* _del_mese; + TRecfield* _del_tipo; + TRecfield* _lim_anno; + TRecfield* _lim_mese; + TRecfield* _lam_anno; + TRecfield* _lam_mese; + bool _has_f24; + + + TSheet_field* _vers_sheet, *_liq_sheet; + TArray _vers_rows, _liq_rows; + TMask* _mask; + bool _from_one; + bool _is_annual; + bool _sh_dirty, _sv_dirty; + + const char* itoname(int m); + + bool is_trim(int x); + bool is_month_ok(int x, int month = -1); + +protected: + + virtual void main_loop(); + virtual bool create(); + virtual bool destroy(); + + // handlers + static bool set_ditta(TMask_field&, KEY); + static bool set_ragsoc(TMask_field&, KEY); + static bool sel_mese_sh1 (TMask_field&, KEY); + static bool sel_mese_sh2 (TMask_field&, KEY); + static bool ch_year_handler(TMask_field& f, KEY key); + + static const char* link_handler(TMask&, int, const char*, bool doubleclick); + + static bool sheet_action(TSheet_field& s, int r, KEY k); + static bool vers_action(TSheet_field& s, int r, KEY k); + +public: + virtual bool firm_change_enabled() const { return FALSE; } + + static Visliq_app& app() { return (Visliq_app&)main_app(); } + TArray_sheet* get_ditte_sheet() { return _ditte; } + + void build_ditte_sheet(); + void build_nomiditte(); + + bool look_lia(long ditta = 0l, int year = 0); + bool look_lim(int m); + bool look_del(int month, int type, bool create = false); + bool look_f24(int month, int type, bool create = false); + int look_ver(int month, int type, bool create = false); + + + void read_general(TMask& m); + void write_general(TMask& m); + void write_liq(); + void write_del(); + + void set_freqviva(); + void set_freqviva(const char* f) { _freqviva = f; } + void set_mask_freq(TMask&); + void set_year(const char* y) { _year = atoi(y); } + void set_year(int y) { _year = y; } + void reset_fields(); + + void set_liq_rows (TSheet_field& s) { _liq_rows = s.rows_array(); } + void set_vers_rows(TSheet_field& s) { _vers_rows = s.rows_array(); } + + // 2 palle + TMask* get_main_mask() { return _mask; } + bool select_butt(TMask& m); + TTable* del() { return _del; } + + real Visliq_app::min_vers(int anno, int month); + // riaggiusta la liquidazione del mese dato + void recalc_liq_data(TViswin* v, real& rimb, real& rett, real& vers, real& acc, + real& varimp, real& impnonver, real& credspec, + TString& d1, TString& d2, TString& d3, TDate& date, + TString& abi, TString& cab, TString& con); + + // Calcolo del credito utilizzato IVA ed F24 + real credito_utilizzato(int year, int month) const; + + // riaggiusta le liquidazioni successive se serve + void recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field* sv); + + // workhorses + void vis_liq(); + bool vis_all(); + bool vis_one(int); + + Visliq_app() : _vers_sheet(NULL), _liq_sheet(NULL) {} + virtual ~Visliq_app() {} +}; + +inline Visliq_app& app() { return (Visliq_app&) main_app(); } diff --git a/src/cg/modf24/cg5501.cpp b/src/cg/modf24/cg5501.cpp new file mode 100755 index 000000000..654051ba8 --- /dev/null +++ b/src/cg/modf24/cg5501.cpp @@ -0,0 +1,137 @@ +#include "cg5500.h" +#include +#include + +bool Visliq_app::look_lim(int m) +{ + bool ok = FALSE; + + _lim_r->zero(); + _lam_r->zero(); + (*_lim_anno) = _year; + (*_lim_mese) = format("%02d",m); + + if (_lim->read() == NOERR) + { + (*_lam_anno) = _year; + (*_lam_mese) = format("%02d",m); + _lam->read(); + } + else + { + _lim_r->zero(); + (*_lim_anno) = _year; + (*_lim_mese) = format("%02d",m); + } + + return _lim->good() && _lam->good(); +} + +bool Visliq_app::look_del(int month, int type, bool create) +{ + _del->zero(); + (*_del_ditta) = format("%05ld", get_firm()); + (*_del_anno) = _year; + (*_del_mese) = format("%02d", month); + (*_del_tipo) = format("%1d", type); + + TString16 ctab = _del->get("CODTAB"); + _del->read(); + + bool ok = _del->good(); + + if (!ok && create) + { + _del->zero(); + _del->put("CODTAB",ctab); + _del->write(); + } + return ok; +} + +bool Visliq_app::look_f24(int month, int type, bool create) +{ + TLocalisamfile & f24 = *_f24; + const bool mensile = _freqviva == "M"; + + int codtrib = mensile ? 6000 + month : 6031 + (month / 3); + + if (type == 7) + codtrib = mensile ? 6013 : 6035; + + f24.setkey(4); + f24.put(F24_TIPOINTEST, "D"); + f24.put(F24_INTEST, get_firm()); + f24.put(F24_DATASCAD, _year); + f24.put(F24_TRIBUTO, codtrib); + const bool found = f24.read(_isgteq) == NOERR && codtrib == f24.get_int(F24_TRIBUTO); + if (create && !found) + { + long progr = 0L; + TDate scad( type == 7 ? 27 : 16, (mensile || type == 7) ? month : ((month + 2) / 3) * 3), _year); + + while (scad.wday() > 5) + ++scad; + if (month < 13 && type != 7) + scad.addmonth(mensile ? 1 : 2); + if (f24.last() == NOERR) + progr = f24.get_long(F24_PROGR); + progr++; + f24.zero(); + f24.put(F24_PROGR, progr); + + f24.put(F24_TRIBUTO, codtrib); + f24.put(F24_TIPOINTEST, "D"); + f24.put(F24_INTEST, get_firm()); + if (month >= 13) + { + if (type == 7) + f24.put(F24_DESCR, "Acconto IVA"); + else + f24.put(F24_DESCR,"IVA annuale"); + } + else + f24.put(F24_DESCR, format("IVA mese di %s %s", itom(month), (const char *)_year)); + f24.put(F24_DATASCAD, scad); + f24.put(F24_ANNO, _year); + } + return found; +} + +int Visliq_app::look_ver(int month, int type, bool create) +{ + if (look_del(month, type, create)) + return 1; + else + if (app()._has_f24 && look_f24(month, type, create)) + return 2; + return -1; +} + +bool Visliq_app::look_lia(long ditta, int year) +{ + if (year == 0) year = _year; + if (ditta == 0l) ditta = get_firm(); + TString16 y; y << format("%05ld", ditta); y << year; + + _lia->zero(); + _lia->put("CODTAB", y); + _lia->read(); + + return _lia->good(); +} + + +bool Visliq_app::is_trim(int x) + // TRUE se il mese passato e' un trimestre +{ return x == 3 || x == 6 || x == 9 || x == 12; } + +bool Visliq_app::is_month_ok(int x, int month) + // TRUE se il mese passato e' compatibile con il regime + // di liquidazione e (opz) non e' maggiore di quello scelto +{ + if (month == -1) month = x; + return _freqviva == "M" ? + ( x > 0 && x <= month) : + ( x <= month && is_trim(x)); +} diff --git a/src/cm/cm1100.cpp b/src/cm/cm1100.cpp index e44b97df4..1ceafa2b6 100755 --- a/src/cm/cm1100.cpp +++ b/src/cm/cm1100.cpp @@ -10,7 +10,7 @@ #include #include "..\cg\cgsaldac.h" -#include "..\cg\cglib.h" +#include "..\cg\cg2103.h" #include "..\ve\velib.h" #include "cm1100a.h" diff --git a/src/crpa/crpa0.cpp b/src/crpa/crpa0.cpp index 623adbdb0..c40cda5b5 100755 --- a/src/crpa/crpa0.cpp +++ b/src/crpa/crpa0.cpp @@ -11,7 +11,7 @@ #include "../ce/collces.h" #include "../ve/velib.h" -#include "../cg/cglib.h" +#include "../cg/cg2103.h" #include "../ca/movana.h" #include "../ca/rmovana.h" diff --git a/src/db/db0500.cpp b/src/db/db0500.cpp index bfbdfd8a2..6104e7033 100755 --- a/src/db/db0500.cpp +++ b/src/db/db0500.cpp @@ -972,7 +972,7 @@ private: protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); - bool test_row(int nrow); + bool test_row(const TToken_string& row); void load_um(); static void sheetrighe_get(TSheet_field &fld_righe, int item); @@ -1071,13 +1071,12 @@ void TDistinta_mask::load_um() } -bool TDistinta_mask::test_row(int nrow) +bool TDistinta_mask::test_row(const TToken_string& row) { - TSheet_field& sheet = sfield(F_SHEET); const TCodice_articolo father = get(F_CODICE); - TCodice_articolo code = sheet.get_str_row_cell(nrow, F_CODART); - bool ok = code != father; + TCodice_articolo code; row.get(1, code); + bool ok = code != father; if (ok && _tree.find_node(father) > 0) { TToken_string path; _tree.curr_id(path); @@ -1089,9 +1088,12 @@ bool TDistinta_mask::test_row(int nrow) "in quanto la distinta risulterebbe ciclica."), (const char*)code); // Se e' una lavorazione - if ((get(F_TIPO) == "L") && - !(sheet.get_str_row_cell(nrow, F_TIPOCOMP) == "L" && _tree.is_lav(code))) - return error_box(FR("Il codice '%s' non e' una lavorazione"), (const char*)code); + if (get(F_TIPO)[0] == 'L') + { + ok = row[0] == 'L' && _tree.is_lav(code); + if (!ok) + error_box(FR("Il codice '%s' non e' una lavorazione"), (const char*)code); + } return ok; } @@ -1168,47 +1170,41 @@ bool TDistinta_mask::on_unitsheet_event(TOperable_field& o, TField_event e, long bool TDistinta_mask::on_distsheet_event(TOperable_field& o, TField_event e, long jolly) { const short id = o.dlg(); - switch (id) { case F_SHEET: - if (e == se_notify_add || e == se_notify_modify || e == fe_close) + if (e == se_notify_add || e == se_notify_modify || e == fe_close) { - - + TSheet_field& sheet = (TSheet_field&)o; + const int nrig = int(jolly); + TToken_string& row = sheet.row(nrig); switch(e) { case se_notify_add: - { - TSheet_field& sheet = (TSheet_field&)o; - const int nrig = int(jolly); - - sheet.set_row_cell(F_TIPOCOMP, "A", nrig); // Forza il listbox ad articolo - sheet.set_row_cell(F_EXPR, 1, nrig); // Forza la quantita' ad 1 - sheet.set_row_cell(F_SORT0, nrig + 1, nrig); // Inizializza numero riga - sheet.select(nrig); - sheet.force_update(nrig); - } + row.add("A", F_TIPOCOMP-FIRST_FIELD); // Forza il listbox ad articolo + row.add("", F_EXPR-FIRST_FIELD); // Forza la quantita' ad 1 + row.add(nrig+1, F_SORT0-FIRST_FIELD); // Inizializza numero riga + sheet.select(nrig); break; case se_notify_modify: - return test_row(int(jolly)); - break; + return test_row(row); case fe_close: { - TSheet_field& sheet = (TSheet_field&)o; - const int nrig = int(jolly); TString80 code; - + TString80 code1; for (int n = sheet.items()-1; n >= 0; n--) { - code = sheet.get_str_row_cell(n, F_CODART); - if (code.full()) + const TToken_string& row = sheet.row(n); + row.get(F_CODART-FIRST_FIELD, code); + if (!code.blank()) { - if (!test_row(nrig)) + if (!test_row(row)) return false; for (int m = n - 1; m >= 0; m--) { - if (code == sheet.get_str_row_cell(m, F_CODART)) + const TToken_string& row = sheet.row(m); + row.get(F_CODART-FIRST_FIELD, code1); + if (code == code1) { int k = noyesall_box("Il codice %s e' ripetuto alla riga %d,\ncontinuare ugualmente ?", (const char *) code, n + 1); if (k == K_NO) @@ -1223,7 +1219,7 @@ bool TDistinta_mask::on_distsheet_event(TOperable_field& o, TField_event e, long sheet.destroy(n); } } - if (((TSheet_field&)o).items() == 0) + if (sheet.items() == 0) message_box(TR("E' necessario inserire almeno una riga nella distinta")); break; default: diff --git a/src/db/db0500b.uml b/src/db/db0500b.uml index 2b02867c7..093d820b2 100755 --- a/src/db/db0500b.uml +++ b/src/db/db0500b.uml @@ -246,13 +246,13 @@ LIST F_TIPOCOMP 1 12 BEGIN PROMPT 2 1 "Tipo " ITEM "A|Articolo" - MESSAGE SHOW,11@|HIDE,12@|HIDE,13@|HIDE,14@|ENABLE,F_UMEXPR|ENABLE,11@|CLEAR,12@|CLEAR,13@|CLEAR,14@ + MESSAGE SHOW,11@|HIDE,12@|HIDE,13@|HIDE,14@|ENABLE,F_UMEXPR|ENABLE,11@|DISABLE,12@|DISABLE,13@|DISABLE,14@ ITEM "L|Lavorazione" - MESSAGE HIDE,11@|SHOW,12@|HIDE,13@|HIDE,14@|CLEAR,F_UMEXPR|CLEAR,11@|ENABLE,12@|CLEAR,13@|CLEAR,14@ + MESSAGE HIDE,11@|SHOW,12@|HIDE,13@|HIDE,14@|DISABLE,F_UMEXPR|DISABLE,11@|ENABLE,12@|DISABLE,13@|DISABLE,14@ ITEM "D|Distinta" - MESSAGE HIDE,11@|HIDE,12@|SHOW,13@|HIDE,14@|ENABLE,F_UMEXPR|CLEAR,11@|CLEAR,12@|ENABLE,13@|CLEAR,14@ + MESSAGE HIDE,11@|HIDE,12@|SHOW,13@|HIDE,14@|ENABLE,F_UMEXPR|DISABLE,11@|DISABLE,12@|ENABLE,13@|DISABLE,14@ ITEM "V|Variabile" - MESSAGE HIDE,11@|HIDE,12@|HIDE,13@|SHOW,14@|CLEAR,F_UMEXPR|CLEAR,11@|CLEAR,12@|CLEAR,13@|ENABLE,14@ + MESSAGE HIDE,11@|HIDE,12@|HIDE,13@|SHOW,14@|CLEAR,F_UMEXPR|DISABLE,11@|DISABLE,12@|DISABLE,13@|ENABLE,14@ FIELD TIPO END @@ -282,8 +282,8 @@ BEGIN OUTPUT F_CODLAV CODTAB OUTPUT F_DESLAV S0 CHECKTYPE REQUIRED - FIELD CODCOMP - FLAGS "UHD" + FIELD CODCOMP + FLAGS "UHD" GROUP 12 END @@ -297,7 +297,7 @@ BEGIN OUTPUT F_CODDIS CODDIST OUTPUT F_DESDIS DESCR CHECKTYPE REQUIRED - FIELD CODCOMP + FIELD CODCOMP FLAGS "UHD" GROUP 13 END diff --git a/src/db/db1100.cpp b/src/db/db1100.cpp index 30c8a5dfc..31cf11395 100755 --- a/src/db/db1100.cpp +++ b/src/db/db1100.cpp @@ -11,7 +11,7 @@ #include #include -#include "../cg/cglib.h" +#include "../cg/cglib01.h" #include "../mg/mglib.h" #include "../ve/velib.h" #include "dblib.h" diff --git a/src/db/db1300.cpp b/src/db/db1300.cpp index 2f9214c51..64dc7af85 100755 --- a/src/db/db1300.cpp +++ b/src/db/db1300.cpp @@ -454,7 +454,7 @@ int TImplosion_mask::find_roots(const char* articolo, TAssoc_array& roots) const TAssoc_array ass[2]; int c = 0; // Array dei children = 0; fathers = 1 - ass[c].add(articolo); + ass[c].add(articolo, NULL); const char* cap = FR("Livello %d - Articoli %ld"); TString caption; caption.format(cap, 0, 0L); @@ -478,7 +478,7 @@ int TImplosion_mask::find_roots(const char* articolo, TAssoc_array& roots) const for (cur = 0L; cur.pos() < cur.items(); ++cur) { const TString& father = cur.curr().get("CODDIST"); - ass[!c].add(father); + ass[!c].add(father, NULL); } cur.freeze(FALSE); } @@ -559,7 +559,7 @@ void TImplosion_mask::implode_slow() key << row->get(); key.rtrim(); } - _xmas.add(key); + _xmas.add(key, NULL); } } @@ -623,7 +623,7 @@ void TImplosion_mask::implode_medium() key = articolo; if (livello.not_empty()) key << '|' << livello; - _xmas.add(key); + _xmas.add(key, NULL); TAssoc_array roots; const long items = find_roots(articolo, roots); diff --git a/src/db/dbtblav.h b/src/db/dbtblav.h index c4c769a92..59ecc28ad 100755 --- a/src/db/dbtblav.h +++ b/src/db/dbtblav.h @@ -1,25 +1,25 @@ -#define F_CODICE 201 -#define F_DESCR 202 -#define F_COSUNIT 203 -#define F_UNMIS 204 -#define F_STAMPA 205 -#define F_UMDESC 206 -#define F_CODICEART 207 -#define F_SEARCHART 208 -#define F_SHEET 209 -#define F_NUMPERS 210 -#define F_PRODUTTIV 211 -#define F_UNTEMPO 212 -#define F_DESUNTEMPO 213 -#define F_UNMIS2 214 -#define F_LINEESTD 215 -#define F_PERCMIN 216 -#define F_PRODNRIL 217 +#define F_CODICE 101 +#define F_DESCR 102 +#define F_COSUNIT 103 +#define F_UNMIS 104 +#define F_STAMPA 105 +#define F_UMDESC 106 +#define F_CODICEART 107 +#define F_SEARCHART 108 +#define F_SHEET 109 +#define F_NUMPERS 110 +#define F_PRODUTTIV 111 +#define F_UNTEMPO 112 +#define F_DESUNTEMPO 113 +#define F_UNMIS2 114 +#define F_LINEESTD 115 +#define F_PERCMIN 116 +#define F_PRODNRIL 117 -#define F_CODLIN 101 -#define F_DESCRLIN 102 -#define F_CODIMP 103 -#define F_LNUMPERS 104 -#define F_LPRODUTTIV 105 +#define F_CODLIN 101 +#define F_DESCRLIN 102 +#define F_CODIMP 103 +#define F_LNUMPERS 104 +#define F_LPRODUTTIV 105 #define F_DESCRIMP 120 diff --git a/src/ef/ef0100.cpp b/src/ef/ef0100.cpp index 563425b55..3e70dde8d 100755 --- a/src/ef/ef0100.cpp +++ b/src/ef/ef0100.cpp @@ -524,23 +524,6 @@ bool TEffetti_mask::on_field_event(TOperable_field& o, TField_event e, long joll if (e == fe_modify) sfield(F_SHEET_RIGHE).set_focusdirty(); break; - case F_IBAN_STATO: - if (mode() == MODE_MOD && e == fe_init) - { - TRelation * rel = app().get_relation(); - - if (rel != nullptr) - { - TRectype & rec = rel->lfile().curr(); - - if (rec.get(EFF_IBAN).empty()) - { - set(F_CODABI, rec.get(EFF_CODABI)); - set(F_CODCAB, rec.get(EFF_CODCAB)); - return true; - } - } - } case F_SHEET_RIGHE: return on_sheet_event(o, e, jolly); default: diff --git a/src/f1/f1lib.cpp b/src/f1/f1lib.cpp index 2147194f3..bea30c9ba 100644 --- a/src/f1/f1lib.cpp +++ b/src/f1/f1lib.cpp @@ -20,14 +20,20 @@ TFppro& fppro_db() return *fppro; } -bool TFppro::sql_inj(TToken_string& keys) +bool TFppro::sql_inj(const TString& str) +{ + TString appo; appo << str; + appo.upper(); + return appo.contains("--") || appo.contains("SELECT") || appo.contains("DELETE") || appo.contains("DROP"); +} + +bool TFppro::sql_inj(const keys_s& keys) { TToken_string str("", ';'); - - str.add(keys.get(0)); - str.add(keys.get(1)); - str.add(keys.get(2)); - return str.contains("--") || str.contains("SELECT") || str.contains("DELETE") || str.contains("DROP"); + str.add(keys.prginvio); + str.add(keys.headerfatt); + str.add(keys.bodyfatt); + return sql_inj(str); } bool TFppro::check_reg(TToken_string& keys, int numreg) @@ -38,74 +44,68 @@ bool TFppro::check_reg(TToken_string& keys, int numreg) bool TFppro::guess_the_doc(const TLocalisamfile& mov) { // Prendo il fornitore del mov per controllare la p.iva - TCli_for forn = cached_clifor('F', mov.get_long(MOV_CODCF)); - - const TString4 statopiva(forn.get(CLI_STATOPAIV)); - + TLocalisamfile clifo(LF_CLIFO); + clifo.put(CLI_TIPOCF, "F"); + const TString& codforn = mov.get(MOV_CODCF); + clifo.put(CLI_CODCF, codforn); + clifo.read(); + TString cli_statopiva, cli_piva; + cli_statopiva << clifo.get(CLI_STATOPAIV); + cli_piva << clifo.get(CLI_PAIV); const real tot = mov.get_real(MOV_TOTDOC) + mov.get_real(MOV_RITFIS) + mov.get_real(MOV_RITSOC); TString numdoc = mov.get(MOV_NUMDOCEXT); - if (numdoc.empty()) numdoc = mov.get(MOV_NUMDOC); // Controllo datadoc - numdoc - totdoc - p.iva - TString query; - - query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT, P7_DATA AS DATA,\n" << - "\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" << - "JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" << - "JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" << - "WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" << - "(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n"; - if (statopiva.full()) - query << "' AND \n" << "P2_FISCIVAPAESE = '" << statopiva; - query << "' AND \n" << "P2_FISCIVACOD = '" << forn.get(CLI_PAIV); - if (forn.gruppo_IVA()) - query << "' AND \n" "P2_COCAZZO = '" << forn.get(CLI_COFI); // cazzo; - query << "PQ_IMPTOTDOC = " << tot; + query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT, P7_DATA AS DATA,\n" << + "\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" << + "JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" << + "JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" << + "WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" << + "(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') AND \n" << + (cli_statopiva.full() ? TString("P2_FISCIVAPAESE = '") << cli_statopiva << "' AND " : "") << + "P2_FISCIVACOD = '" << cli_piva << "' AND \n" << "PQ_IMPTOTDOC = " << tot; if (_db->sq_set_exec(query) && _db->sq_items() == 1) { - _keys = _db->sq_get("KEYPRGINVIO"); - _keys.add(_db->sq_get("KEYHEADERFATT")); - _keys.add(_db->sq_get("KEYBODYFATT")); + _keys = { _db->sq_get("KEYPRGINVIO"), _db->sq_get("KEYHEADERFATT"), _db->sq_get("KEYBODYFATT") }; return true; } + return false; } -const char* TFppro::get_keys_fppro() +const char* TFppro::get_keys_fppro() const { - TString& keys = get_tmp_string(64); - - keys.cut(0) << _keys.get(0) << ";" << _keys.get(1) << ";" << _keys.get(2); - return keys; + static TString keys; + keys.cut(0) << _keys.prginvio << ";" << _keys.headerfatt << ";" << _keys.bodyfatt; + return (const char*)keys; } -long TFppro::get_numreg() +int TFppro::get_numreg() { if (!_is_set) { if (set_query()) - return _db->sq_get_long("PZ_NUMREGCONT"); + return _db->sq_get_int("PZ_NUMREGCONT"); return -1; } - return _db->sq_get_long("PZ_NUMREGCONT"); + return _db->sq_get_int("PZ_NUMREGCONT"); } -long TFppro::get_numreg(TToken_string& keys) +int TFppro::get_numreg(TToken_string& keys) { set_keys(keys); return get_numreg(); } -long TFppro::get_codforn() +TString TFppro::get_codforn() const { TString query; - query << "SELECT PZ_CLIFOR FROM FPPRO00F\n" << where_str(); _db->sq_set_exec(query); - return _db->sq_get_long("PZ_CLIFOR"); + return _db->sq_get("PZ_CLIFOR"); } TDate TFppro::get_datareg() @@ -127,13 +127,12 @@ TDate TFppro::get_datareg(TToken_string& keys) return TDate(); } -real TFppro::get_ritenute() +real TFppro::get_ritenute() const { - real imp; + real imp = ZERO; TString query; - query << "SELECT P7_IMPORTORIT AS IMPORTO FROM PAA0700F\n" << - "WHERE P7_KEYPRGINVIO = '" << _keys.get(0) << "' AND P7_KEYHEADERFATT = '" << _keys.get(1) << "' AND P7_KEYBODYFATT = '" << _keys.get(2) << "'"; + "WHERE P7_KEYPRGINVIO = '" << _keys.prginvio << "' AND P7_KEYHEADERFATT = '" << _keys.headerfatt << "' AND P7_KEYBODYFATT = '" << _keys.bodyfatt << "'"; _db->sq_set_exec(query, false); for(bool ok = _db->sq_next(); ok; ok = _db->sq_next()) imp += _db->sq_get_real("IMPORTO"); @@ -141,69 +140,66 @@ real TFppro::get_ritenute() } TFppro& TFppro::set_keys(TToken_string& keys) +{ + if (keys.items() == 3) + { + const keys_s k = { keys.get(0), keys.get(1), keys.get(2) }; + return set_keys(k); + } + _is_set = false; + _keys_setted = false; + return *this; +} + +TFppro& TFppro::set_keys(const keys_s& keys) { if (sql_inj(keys)) { TString msg; msg << "Database error: Possibile SQL INJECTION:\n" << keys; -; + //throw std::exception(msg); error_box(msg); _last_error.cut(0) << msg; } + else if (!keys.prginvio.empty() && !keys.headerfatt.empty() && !keys.bodyfatt.empty()) + { + _keys = keys; + _keys_setted = true; + } else { - TString prginvio = keys.get(0); - TString headerfatt = keys.get(1); - TString bodyfatt = keys.get(2); - - if (prginvio.full() && headerfatt.full() && bodyfatt.full()) - { - _keys = keys; - _keys_setted = true; - } - else - { - _last_error = "Chiavi settate non valide:\n"; - _last_error << keys; - _keys_setted = false; - } + _last_error.cut(0) << "Chiavi settate non valide:\n" << keys; + _keys_setted = false; } _is_set = false; return *this; } -bool TFppro::associa_mov(const long numreg) +bool TFppro::associa_mov(const int numreg) const { - TRectype & mov = (TRectype &) cache().get(LF_MOV, numreg); - bool ok = mov.full(); - - if (ok) + bool ok; + TLocalisamfile mov(LF_MOV); + mov.put(MOV_NUMREG, numreg); + if ((ok = mov.read() == NOERR)) { - TString query; - query << "UPDATE FPPRO00F \nSET " << - "PZ_TIPOCF = 'F', PZ_CLIFOR = '" << mov.get(MOV_CODCF) << "', PZ_NUMREGCONT = '" << - mov.get(MOV_NUMREG) << "', PZ_DATAREGCONT = '" << mov.get_date(MOV_DATAREG).date2ansi() << "'\n" << - fppro_db().where_str() << ";"; - ok = _db->sq_set_exec(query) && _db->sq_commit(); - - if (ok) // Scrivo sul movimento il riferimento al fppro + mov.put(MOV_KEYFPPRO, get_keys_fppro()); + if ((ok = mov.rewrite() == NOERR)) // Scrivo sul movimento il riferimento al fppro { - mov.put(MOV_IDDOCSDI, fppro_db().get_numdoc()); - mov.put(MOV_DATADOCSDI, fppro_db().get_numdoc()); - mov.put(MOV_KEYFPPRO, get_keys_fppro()); - ok = mov.rewrite() == NOERR; - } - else // Se la scrittura sul db fallisce levo sul movimento il riferimento all'fppro - { - mov.zero(MOV_IDDOCSDI); - mov.zero(MOV_DATADOCSDI); - mov.zero(MOV_KEYFPPRO); - mov.rewrite(); + TString query; + query << "UPDATE FPPRO00F \nSET " << + "PZ_TIPOCF = 'F', PZ_CLIFOR = '" << mov.get(MOV_CODCF) << "', PZ_NUMREGCONT = '" << + mov.get(MOV_NUMREG) << "', PZ_DATAREGCONT = '" << mov.get_date(MOV_DATAREG).date2ansi() << "'\n" << + fppro_db().where_str() << ";"; + if (!((ok = _db->sq_set_exec(query) && _db->sq_commit()))) // Se la scrittura sul db fallisce levo sul movimento il riferimento all'fppro + { + mov.put(MOV_KEYFPPRO, ""); + mov.rewrite(); + } } } return ok; } -const TString & TFppro::get_tipoprot() +const char* TFppro::get_tipoprot() const { TString query; @@ -212,98 +208,80 @@ const TString & TFppro::get_tipoprot() return _db->sq_get("TIPOPROT"); } -const TString & TFppro::get_numprot() +const char* TFppro::get_numprot() const { TString query; - + static TString num; query << "SELECT PZ_NUMPROT AS NUMPROT FROM FPPRO00F\r\n" << where_str(); _db->sq_set_exec(query); - - return _db->sq_get("NUMPROT"); + return num.cut(0) = _db->sq_get("NUMPROT"); } -const TString & TFppro::get_annoprot() +const char* TFppro::get_annoprot() const { TString query; - + static TString anno; query << "SELECT PZ_ANNOPROT AS ANNOPROT FROM FPPRO00F\r\n" << where_str(); _db->sq_set_exec(query); - return _db->sq_get("ANNOPROT"); + return anno.cut(0) = _db->sq_get("ANNOPROT"); } -const TString & TFppro::get_dataoraric() +const char* TFppro::get_dataoraric() const { TString query; - TString & data = get_tmp_string(16); - - query << "SELECT PZ_DATAORARIC AS DATAORARIC FROM FPPRO00F\r\n" << where_str(); + static TString data; + query << "SELECT PZ_DATAORARIC AS DATAORARIC FROM FPPRO00F\r\n" << where_str(); _db->sq_set_exec(query); - data << _db->sq_get_date("DATAORARIC").date2ansi(); - return data; + return data.cut(0) << _db->sq_get_date("DATAORARIC").date2ansi(); } -const TString & TFppro::get_tipodoc() +const char* TFppro::get_tipodoc() const { TString query; - + static TString tipodoc; query << "SELECT PZ_TIPODOC AS TIPODOC FROM FPPRO00F\r\n" << where_str(); _db->sq_set_exec(query); - return _db->sq_get("TIPODOC"); + return tipodoc.cut(0) << _db->sq_get("TIPODOC"); } -const TString & TFppro::get_numdoc() +const char* TFppro::get_numdoc() const { TString query; - + static TString numdoc; query << "SELECT PZ_NUMERO AS NUMDOC FROM FPPRO00F\r\n" << where_str(); _db->sq_set_exec(query); - return _db->sq_get("NUMDOC"); + return numdoc.cut(0) << _db->sq_get("NUMDOC"); } TDate TFppro::get_data_first_doc() const { TString query; - query << "SELECT min(a.DATA) AS DATA \nFROM( \n\tSELECT P7_DATA as DATA \n" << "\tFROM PAA0700F \n\tUNION \n\tSELECT P7_DATA as DATA \n\tFROM PAF0700F \n) a"; _db->sq_set_exec(query); return _db->sq_get_date("DATA"); } -TDate TFppro::get_data_doc() +TDate TFppro::get_dataorarioric() const { TString query; - - query << "SELECT PZ_DATA FROM FPPRO00F\r\n" << where_str(); - _db->sq_set_exec(query); - return _db->sq_get_date("PZ_DATA"); -} - - -TDate TFppro::get_dataorarioric() -{ - TString query; - query << "SELECT P1_DATAORARIC \nFROM PAA0100F \n" << - "WHERE P1_KEYPRGINVIO = '" << _keys.get(0) << "' AND P1_KEYHEADERFATT = '" << _keys.get(1) << "' AND P1_KEYBODYFATT = '" << _keys.get(2) << "'"; + "WHERE P1_KEYPRGINVIO = '" << _keys.prginvio << "' AND P1_KEYHEADERFATT = '" << _keys.headerfatt << "' AND P1_KEYBODYFATT = '" << _keys.bodyfatt << "'"; _db->sq_set_exec(query); return _db->sq_get_date("P1_DATAORARIC"); } -long TFppro::get_numregcont() +int TFppro::get_numregcont() const { TString query; - query << "SELECT PZ_NUMREGCONT FROM FPPRO00F\n" << where_str(); _db->sq_set_exec(query); - return _db->sq_get_long("PZ_NUMREGCONT"); + return _db->sq_get_int("PZ_NUMREGCONT"); } TString TFppro::get_last_error(bool clear) { - TString & l = get_tmp_string(128); - - l = _last_error; + TString l(_last_error); if(clear) _last_error.cut(0); return l; @@ -319,14 +297,14 @@ bool TFppro::set_query() return _is_set = false; } -const char* TFppro::where_str() +const char* TFppro::where_str() const { static TString str; - str.cut(0) << " WHERE PZ_KEYPRGINVIO = '" << _keys.get(0) << "' AND PZ_KEYHEADERFATT = '" << _keys.get(1) << "' AND PZ_KEYBODYFATT = '" << _keys.get(2) << "'"; + str.cut(0) << " WHERE PZ_KEYPRGINVIO = '" << _keys.prginvio << "' AND PZ_KEYHEADERFATT = '" << _keys.headerfatt << "' AND PZ_KEYBODYFATT = '" << _keys.bodyfatt << "'"; return str; } -TFppro::TFppro() : _keys("", ';'), _keys_setted(false), _is_set(false) +TFppro::TFppro() : _keys({ "\0", "\0", "\0" }), _keys_setted(false), _is_set(false) { _db = new SSimple_query(); const bool ok = set_connection(*_db); @@ -344,14 +322,13 @@ prot_s TProtocollo::get_prot() return prot; } -const TString& TProtocollo::prot_in(const int year, const char* tipoprot, const char* progres) const +TString& TProtocollo::prot_in(const int year, const char* tipoprot, const char* progres) { - TString & protocollo = get_tmp_string(128); + static TString protocollo; TString tipo(tipoprot); - if (tipo.empty()) tipo << "no_prot"; - protocollo << year << "-" << tipo << "/" << progres; + protocollo.cut(0) << year << "-" << tipo << "/" << progres; return protocollo; } @@ -371,7 +348,7 @@ void TProtocollo::sset(const char* prot) _progres = p.get(); } -const TString& TProtocollo::get_prot() const +TString& TProtocollo::get_prot() const { return prot_in(_year, _tipoprot, _progres); } @@ -386,21 +363,29 @@ const char* get_ini_codcaus() return ini_get_string(FILE_CONFIG, FILE_SECTION, F1_CAUS); } -const char* get_codcaus(const char * tipodoc, long codcf) +const char* get_codcaus(const char * tipodoc, const long codcf) { - TCli_for f = cached_clifor('F', codcf); + TLocalisamfile cfven(LF_CFVEN); + cfven.put(CFV_TIPOCF, "F"); + cfven.put(CFV_CODCF, codcf); + const char* codcaus = ""; + const char* codcausnc = ""; const bool nc = TString(tipodoc) == "TD04"; + if (cfven.read() == NOERR) + { + codcaus = cfven.get(CFV_CODCAUS); + codcausnc = cfven.get(CFV_CODCAUSNC); + } + if (nc) { - const TString & codcaus = f.vendite().get(CFV_CODCAUSNC); - if (codcaus.full()) - return codcaus; + if (!TString(codcausnc).empty()) + return codcausnc; } else { - const TString & codcaus = f.vendite().get(CFV_CODCAUS); - if (codcaus.full()) + if (!TString(codcaus).empty()) return codcaus; } return get_ini_codcaus(); @@ -411,12 +396,12 @@ bool get_endatareg() return ini_get_bool(FILE_CONFIG, FILE_SECTION, "endatareg"); } -const TString & get_datainireg() +TString get_datainireg() { return ini_get_string(FILE_CONFIG, FILE_SECTION, "datainireg"); } -const TString & get_dataendreg() +TString get_dataendreg() { return ini_get_string(FILE_CONFIG, FILE_SECTION, "dataendreg"); } @@ -459,42 +444,74 @@ bool check_causale(const TString& cod_caus, bool acq) bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq) { - const TCausale& c = cached_causale(cod_caus); + const TCausale& caus = cached_causale(cod_caus); if(tipo_doc == "FA" || tipo_doc == "BD" || tipo_doc == "AF" || tipo_doc == "FF") - return c.tipo_doc() == tipo_doc; + return caus.tipo_doc() == tipo_doc; if (tipo_doc == "NC" || tipo_doc == "ND") { bool nota; bool nota_iva = false; - - if ((nota = c.tipo_doc() == tipo_doc)) + if ((nota = caus.tipo_doc() == tipo_doc)) { if (acq) - nota_iva = c.reg().tipo() == iva_acquisti; + nota_iva = caus.reg().tipo() == iva_acquisti; else - nota_iva = c.reg().tipo() == iva_vendite; + nota_iva = caus.reg().tipo() == iva_vendite; } return nota && nota_iva; } + return false; } -bool check_caus_has_rit(const TString& cod_caus, int year) +bool check_caus_has_rit(const TString& cod_caus, bool rit) { - const TCausale & c = cached_causale(cod_caus, year); - - return c.causale_770().full(); + TLocalisamfile causali(LF_CAUSALI); + causali.put(CAU_CODCAUS, cod_caus); + causali.read(); + return *causali.get(CAU_M770) != '\0'; } void run_cont_ini(bool liq) { - TString cmd; - - cmd.cut(0) << "cg2 -0 -i" << TFilename().temp("cg2CONTAB", "ini") << " -f1" << (liq ? " -liq" : " ") << " /u" << user(); - - TExternal_app app(cmd); - - app.run(); + static TString run_string; +#ifdef DBG + run_string.cut(0) << "cg2 -0 -i" << F1_INIREGCONT << "*" << ".ini" << " -f1" << (liq? " -liq" : " ") << " /u" << user(); +#else + run_string.cut(0) << "cg2 -0 -i" << TFilename().tempdir() << "\\" << F1_INIREGCONT << "*" << ".ini" << " -f1" << (liq ? " -liq" : " ") << " /u" << user(); +#endif + TExternal_app(run_string).run(); } + +void TF1_log::log(int severity, const char* msg) +{ + if (_log == nullptr) + { + _log = new TLog_report("Stato contabilizzazione:"); + // Tento l'eliminazione del file + std::remove("f1_cg.log"); + } + + static TString txt; + txt.cut(0) << msg; + _log->log(severity, txt); + // Scrivo anche su file + std::filebuf fb; + fb.open("f1_cg.log", std::ios::out | std::ios::app); + std::ostream os(&fb); + os << txt << std::endl; + fb.close(); +} + +bool TF1_log::show_log() +{ + if (_log) + { + _log->preview(); + delete _log; + _log = nullptr; + } + return true; +} \ No newline at end of file diff --git a/src/f1/f1lib.h b/src/f1/f1lib.h index 7234d5445..7f28f60d9 100644 --- a/src/f1/f1lib.h +++ b/src/f1/f1lib.h @@ -7,8 +7,8 @@ #define FILE_CONFIG CONFIG_DITTA #define FILE_SECTION "f1" -#define F1_INIREGCONT "cgreg" #define F1_CAUS "caus" +#define F1_INIREGCONT "cg2CONTAB" #define LOG_MSG 0 #define LOG_WARN 1 #define LOG_ERR 2 @@ -39,48 +39,63 @@ typedef struct _prot_s */ class TFppro : public TObject { - TToken_string _keys; + struct keys_s + { + TString prginvio; + TString headerfatt; + TString bodyfatt; + + operator const char*() const + { + static TToken_string a("", ';'); + a.add(prginvio); + a.add(headerfatt); + a.add(bodyfatt); + return a; + } + } _keys; + SSimple_query* _db; bool _keys_setted; bool _is_set; // Query is setted TString _fppro_query; TString _last_error; - bool sql_inj(TToken_string& keys); + static bool sql_inj(const TString& str); + static bool sql_inj(const keys_s& keys); public: - const char* where_str(); + const char* where_str() const; bool check_reg(TToken_string& keys, int numreg); // Se un mov. registrato non e' collegato all'FPPRO cerco di capire qual'e` bool guess_the_doc(const TLocalisamfile& mov); // Getters - const char* get_keys_fppro(); - long get_numreg(); - long get_numreg(TToken_string& keys); - long get_codforn(); + const char* get_keys_fppro() const; + int get_numreg(); + int get_numreg(TToken_string& keys); + TString get_codforn() const; TDate get_datareg(); TDate get_datareg(TToken_string& keys); - real get_ritenute(); + real get_ritenute() const; TDate get_data_first_doc() const; - TDate get_dataorarioric(); - long get_numregcont(); - + TDate get_dataorarioric() const; + int get_numregcont() const; TString get_last_error(bool clear = true); // Setters bool set_query(); TFppro& set_keys(TToken_string& keys); + TFppro& set_keys(const keys_s& keys); - bool associa_mov(long numreg); - const TString & get_tipoprot(); - const TString & get_numprot(); - const TString & get_annoprot(); - const TString & get_dataoraric(); - const TString & get_tipodoc(); - const TString & get_numdoc(); - TDate get_data_doc(); + bool associa_mov(int numreg) const; + const char* get_tipoprot() const; + const char* get_numprot() const; + const char* get_annoprot() const; + const char* get_dataoraric() const; + const char* get_tipodoc() const; + const char* get_numdoc() const; - TFppro(); + TFppro(); TFppro(TToken_string& keys) : TFppro() { set_keys(keys); } }; @@ -96,30 +111,37 @@ public: void set(const TProtocollo& prot); void sset(const char* prot); - const TString& get_prot() const; + TString& get_prot() const; prot_s get_prot(); int get_year() const { return _year; } - const TString& get_tipoprot() const { return _tipoprot; } - const TString& get_progres() const { return _progres; } - const TString& prot_in(int year, const char* tipoprot, const char* progres) const; + TString& get_tipoprot() { return _tipoprot; } + TString& get_progres() { return _progres; } + + + static TString& prot_in(int year, const char* tipoprot, const char* progres); + + operator const char*() const { return static_cast(get_prot()); } + }; -class TF1_log : public TLog_report +class TF1_log : TObject { + TLog_report* _log; public: - TF1_log() : TLog_report("Stato contabilizzazione:") {} - bool show_log() { export_text("f1_cg.log", 0, false); return preview(); } + TF1_log() : _log(nullptr){} + void log(int severity, const char* msg); + bool show_log(); }; TFppro& fppro_db(); const char* get_ini_codcaus(); -const char* get_codcaus(const char * tipodoc, long codcf); +const char* get_codcaus(const char * tipodoc, const long codcf); bool get_endatareg(); -const TString & get_datainireg(); -const TString & get_dataendreg(); -bool get_periodprec(); +TString get_datainireg(); +TString get_dataendreg(); +bool get_periodprec(); void set_ini_codcaus(const TString& codcaus); void set_endatareg(bool enable); @@ -131,7 +153,7 @@ void set_periodprec(bool flag); bool check_causale(const TString& cod_caus, bool acq = true); // Controlla se il "cod_caus" ha come "tipo_doc" FA o NC (di acquisto) bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq = true); -bool check_caus_has_rit(const TString& cod_caus, int year = 0); +bool check_caus_has_rit(const TString& cod_caus, bool rit); void run_cont_ini(bool liq); #endif // _F1LIB_H_ diff --git a/src/f9/f9lib02.cpp b/src/f9/f9lib02.cpp index 9c0640655..0914762af 100644 --- a/src/f9/f9lib02.cpp +++ b/src/f9/f9lib02.cpp @@ -593,9 +593,7 @@ bool TF9Prospetto_integr::operator()(const char* numreg_acq, const char* numreg_ _items = _prosp_rs->items(); if (_items == 0) { - FILE* log; - - fopen_s(&log, "TF9Prospetto_integr_error.txt", "a"); + FILE* log = fopen("TF9Prospetto_integr_error.txt", "a"); if (!_prosp_rs->last_exec()) { if (log != nullptr) diff --git a/src/gfm/median.c b/src/gfm/median.c index 9fbd519fb..6cf7d88ed 100755 --- a/src/gfm/median.c +++ b/src/gfm/median.c @@ -73,7 +73,7 @@ int n; tmpa[i] = pSrc[i]; /* sort pointers */ - qsort((void *)tmpa,n,sizeof(DEC *), (int (__cdecl *)(void)) _SortInc); + qsort((void *)tmpa,n,sizeof(DEC *), _SortInc); if (n%2) _MacDCopy(pDst, tmpa[(n-1)/2]); diff --git a/src/gv/gvlib.cpp b/src/gv/gvlib.cpp index 318f39cf3..8eceda97c 100755 --- a/src/gv/gvlib.cpp +++ b/src/gv/gvlib.cpp @@ -5,6 +5,7 @@ #include "../cg/cglib.h" + /////////////////////////////////////////////////////////// // TRigheF24_set /////////////////////////////////////////////////////////// diff --git a/src/ha/ha1300.cpp b/src/ha/ha1300.cpp index 7e1c67a38..97d52d481 100755 --- a/src/ha/ha1300.cpp +++ b/src/ha/ha1300.cpp @@ -5,7 +5,7 @@ #include #include "../cg/cg2101.h" -#include "../cg/cglib.h" +#include "../cg/cg2103.h" #include "../cg/cgsaldac.h" #include "../mg/movmag.h" #include "../mg/rmovmag.h" diff --git a/src/ha/hacnv300.cpp b/src/ha/hacnv300.cpp index 934a24f47..eed031101 100755 --- a/src/ha/hacnv300.cpp +++ b/src/ha/hacnv300.cpp @@ -12,7 +12,7 @@ #include #include "../cg/cglib01.h" -#include "../cg/cglib.h" +#include "../cg/cg2103.h" #include "../cg/cgsaldac.h" #include "../cg/cgpagame.h" diff --git a/src/ic/ic0100f.rep b/src/ic/ic0100f.rep index d671d9cd9..d9aa99419 100644 --- a/src/ic/ic0100f.rep +++ b/src/ic/ic0100f.rep @@ -395,9 +395,7 @@ THEN #F1.203 +! - USE IVADIFF KEY 4 SELECT (BETWEEN(DATAREGP;#DAL;#AL))(TIPOIVA==#TIPOIVA)(TIPODIFF==#TIPODIFF)((CHIUSA=#CHIUSA)||(#CHIUSA="T")) -FROM DATAREG=#DAL -TO DATAREG=#AL + USE IVADIFF SELECT (BETWEEN(DATAREG,#DAL,#AL))(TIPOIVA==#TIPOIVA)(TIPODIFF==#TIPODIFF)((CHIUSA=#CHIUSA)||(#CHIUSA="T")) JOIN MOV INTO NUMREG==NUMREG JOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF \ No newline at end of file diff --git a/src/ic/ic0200.cpp b/src/ic/ic0200.cpp index ce81e5f86..d6719f489 100644 --- a/src/ic/ic0200.cpp +++ b/src/ic/ic0200.cpp @@ -20,7 +20,7 @@ public: void TICpag_print::main_loop() { - TMask m("ic0200a"); + TMask m("ic0100a"); while (m.run() == K_ENTER) { TICpag_report r("ic0200p"); diff --git a/src/ic/ic0200p.rep b/src/ic/ic0200p.rep index 649ed8684..e911580c4 100644 --- a/src/ic/ic0200p.rep +++ b/src/ic/ic0200p.rep @@ -1,71 +1,71 @@ - + -

wv*@dad-Y~ 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