From 9b57cbc6480c3a95f536e74f40a637dd2e0ebc11 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Tue, 25 Jun 2019 10:21:15 +0200 Subject: [PATCH] Patch level : 12.0 838 Files correlati : cg2.exe cg2FPPRO.msk Commento : - Corretto importo totale con ritenuta - Aggiunto bottone in maschera fppro per solo collegamento senza riporto dati --- src/cg/cg2102.cpp | 40 +++++++++++++++++++++++++--------------- src/cg/cg2102.h | 5 ++++- src/cg/cg2FPPRO.uml | 6 ++++++ 3 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/cg/cg2102.cpp b/src/cg/cg2102.cpp index bd9d9c764..8d48a4d59 100755 --- a/src/cg/cg2102.cpp +++ b/src/cg/cg2102.cpp @@ -3009,7 +3009,7 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key) const bool ic = ixc->active() && (alleg < 5 || alleg == 7) && paiv.full() && !m.get_bool(F_LIQDIFF); ixc->set(ic ? "X" : ""); } - if(m.get(F_PROKEY).empty()) + if(m.get(F_PROKEY).empty() && app().has_module(F1AUT)) fppro_mask(f, key); } } @@ -3911,10 +3911,10 @@ void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptrget_ritenute(); if(rit != ZERO) { - cg_msk.set(F_TOTALE, totale - rit); + totale -= rit; cg_msk.set(F_RITFIS, rit); } - cg_msk.set(F_TOTALE, abs(totale)); + cg_msk.set(F_TOTALE, totale); } void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, const shared_ptr& msk) @@ -3922,7 +3922,7 @@ void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, const shared_ptrget_numdoc()); cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7)); cg_msk.set(F_DATADOC, msk->get_datadoc()); - if (!cg_msk.get(F_CODCLIFOR).full()) + if (!cg_msk.get(F_CODCLIFOR).full() && msk->get_numdoc().full()) set_clifo(cg_msk, msk); set_righe_iva_f1(cg_msk, msk); set_totale(cg_msk, msk); @@ -3949,7 +3949,7 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key) 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) - if(app().has_f1_db(&cg_msk)) + if(msk->should_bring_back()) riporta_dati_f1(cg_msk, msk); cg_msk.set(F_PROKEY, msk->get_fpprokeys()); is_collegato(cg_msk.field(F_COLFPPRO)); @@ -4040,7 +4040,7 @@ bool TPro_msk::fppro_handler(TMask_field& f, KEY k) return load; } -bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k) +bool TPro_msk::riporta_handler(TMask_field& f, KEY k) { if (k != 32) return true; @@ -4049,17 +4049,19 @@ bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k) //return true; bool ok = false; TSheet_field& sf = msk.sfield(F_SHEETFPPROS); - bool loaded = false; FOR_EACH_SHEET_ROW(sf, nr, row) { - if(!loaded && *row->get(0) == 'X') + if(*row->get(0) == 'X') { //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)), row->get(cid2index(F_FISCIVACODS))); - loaded = true; + if (f.dlg() == DLG_OK) + app()._pro_mask->_riporta = true; + else + app()._pro_mask->_riporta = false; ok = true; break; } @@ -4073,13 +4075,18 @@ bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k) 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, 32); + ok = load_fppro_mask(&msk, K_SPACE); } return ok; } @@ -4090,7 +4097,7 @@ bool TPro_msk::date_handler(TMask_field& f, KEY k) bool ok = true; if (k == K_TAB && f.active() && f.focusdirty()) { - ok = load_fppro_mask(&msk, 32); + ok = load_fppro_mask(&msk, K_SPACE); } return ok; } @@ -4119,7 +4126,7 @@ bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) break; case F_SHOWALL: if (e == fe_modify) - load_fppro_mask(this, 32); + load_fppro_mask(this, K_SPACE); break; case F_ENABSEARCH: if (e == fe_modify) @@ -4174,7 +4181,7 @@ void TPro_msk::set_doc(const char* numero, const char* datadoc, const char* totd { _numero = numero; _datadoc = datadoc; - _totdoc = totdoc; + _totdoc = abs(totdoc); _ritenute = ritenute; _protfppro.sset(protfppro); _fpprokeys = fpprokeys; @@ -4283,10 +4290,13 @@ void TPro_msk::abilita_piva(TMask* msk) } } -TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2fppro") +TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2fppro"), _riporta(false) { TMask::set_handler(DLG_CONFIG, fppro_handler); - TMask::set_handler(DLG_LINK, fppro_ok_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)); diff --git a/src/cg/cg2102.h b/src/cg/cg2102.h index 37f0973f9..634d4a5ec 100755 --- a/src/cg/cg2102.h +++ b/src/cg/cg2102.h @@ -414,12 +414,14 @@ class TPro_msk : public TAutomask TString _piva; 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 fppro_ok_handler(TMask_field& f, KEY k); + 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 @@ -455,6 +457,7 @@ public: vector& get_scadenze() { return _scadenze; } void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura); void add_scad(const TDate& date, const real& importo); + bool should_bring_back() const { return _riporta; } static TString& query_fppro(const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, const TString& where_str); diff --git a/src/cg/cg2FPPRO.uml b/src/cg/cg2FPPRO.uml index 629bacba3..4f1fe1d4f 100644 --- a/src/cg/cg2FPPRO.uml +++ b/src/cg/cg2FPPRO.uml @@ -8,6 +8,12 @@ BEGIN PICTURE TOOL_ELABORA END +BUTTON DLG_OK 2 2 +BEGIN + PROMPT 2 1 "Riporta Documento" + MODULE F1 +END + BUTTON DLG_LINK 2 2 BEGIN PROMPT 3 1 "Collega Documento"