From b0ca7088b9606ebce4b6bda760dd22a2205e6b48 Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Tue, 15 Oct 2019 18:41:05 +0200 Subject: [PATCH] Patch level : 12.0 888 Files correlati : cg0.exe cg0800a.rep cg4.exe cg4b00a.rep Commento : Aggiornate stampe prpgressivi avanzate corretto errore reverse_charge e causale collegata --- src/cg/cg2100.cpp | 8 ++++---- src/cg/cg2102.cpp | 10 +++++----- src/cg/cg2103.cpp | 6 ++++++ src/cg/cg2103.h | 3 ++- src/cg/cglib01.cpp | 10 ++++++++-- src/cg/cglib01.h | 5 ++++- 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/cg/cg2100.cpp b/src/cg/cg2100.cpp index 6094f0d9c..ee30462ea 100755 --- a/src/cg/cg2100.cpp +++ b/src/cg/cg2100.cpp @@ -683,9 +683,9 @@ void TPrimanota_application::init_mask(TMask& m) } TEdit_field& rc = m.efield(F_REVCHARGE); - rc.show(cc.iva() == iva_acquisti && cc.reverse_charge()); + rc.show(cc.iva() == iva_acquisti && cc.reverse_charge_pubb()); - m.efield(F_MOVCOLL).show((cc.iva() == iva_acquisti && cc.reverse_charge()) || + m.efield(F_MOVCOLL).show((cc.iva() == iva_acquisti && cc.reverse_charge_pubb()) || (cc.iva() == iva_vendite && cc.causale_reg_iva())); // m.efield(F_GOCOLL).show((c.iva() == iva_acquisti && c.reverse_charge()) || // (c.iva() == iva_vendite && c.causale_reg_iva())); @@ -858,7 +858,7 @@ bool TPrimanota_application::get_next_key(TToken_string& tmp) else tmp.add(m.get(F_DATACOMP)); - if (_iva != nessuna_iva) + if (m.find_by_id(F_DATACOMPCR) && _iva != nessuna_iva) { tmp.add(F_DATACOMPCR); // Ricopia data competenza if (m.field(F_DATACOMPCR).empty()) @@ -1689,7 +1689,7 @@ int TPrimanota_application::write(const TMask& m) int TPrimanota_application::rewrite(const TMask& m) { - if (cached_causale(_rel->file().get(MOV_CODCAUS), _rel->file().get_int(MOV_ANNOES)).reverse_charge()) + if (cached_causale(_rel->file().get(MOV_CODCAUS), _rel->file().get_int(MOV_ANNOES)).reverse_charge_pubb()) { const long movcoll = m.get_long(F_MOVCOLL); diff --git a/src/cg/cg2102.cpp b/src/cg/cg2102.cpp index 3f89df35f..69eca9280 100755 --- a/src/cg/cg2102.cpp +++ b/src/cg/cg2102.cpp @@ -2332,8 +2332,8 @@ bool TPrimanota_application::caus_modify_handler(TMask_field& f, KEY key) } if (c.iva() != nessuna_iva && mask_ok) { - m.efield(F_REVCHARGE).show(c.iva() == iva_acquisti && c.reverse_charge()); - m.efield(F_MOVCOLL).show((c.iva() == iva_acquisti && c.reverse_charge()) || + m.efield(F_REVCHARGE).show(c.iva() == iva_acquisti && c.reverse_charge_pubb()); + m.efield(F_MOVCOLL).show((c.iva() == iva_acquisti && c.reverse_charge_pubb()) || (c.iva() == iva_vendite && c.causale_reg_iva())); // m.efield(F_GOCOLL).show((c.iva() == iva_acquisti && c.reverse_charge()) || // (c.iva() == iva_vendite && c.causale_reg_iva())); @@ -3084,7 +3084,7 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key) mm.set(F_RITFIS, imposta, true); } } else - if (a.causale().reverse_charge()) + if (a.causale().reverse_charge_pubb()) { const real totale = mm.get_real(F_TOTALE) + mm.get_real(F_RITFIS); const real imposta = codiva.imposta(totale); @@ -3177,7 +3177,7 @@ bool TPrimanota_application::activate_split_payment(TMask& m) TMask_field* sp = m.find_by_id(F_SPLITPAY); if (sp != NULL) { - if (clifo() == "C" && m.get_int(F_ANNOIVA) >= 2015 && !causale().reverse_charge()) + if (clifo() == "C" && m.get_int(F_ANNOIVA) >= 2015 && !causale().reverse_charge_pubb()) { const TRectype& cliente = cache().get_rec(LF_CLIFO, "C", m.get(F_CODCLIFOR)); yes = cliente.get_bool(CLI_SPLITPAY); @@ -3228,7 +3228,7 @@ bool TPrimanota_application::is_split_payment() const s = 'N'; if (iva() == nessuna_iva) return false; - if (clifo() == "C" && m.get_int(F_ANNOIVA) >= 2015 && !causale().reverse_charge()) + if (clifo() == "C" && m.get_int(F_ANNOIVA) >= 2015 && !causale().reverse_charge_pubb()) { const TRectype& cliente = cache().get_rec(LF_CLIFO, "C", m.get(F_CODCLIFOR)); if (cliente.get_bool(CLI_SPLITPAY)) diff --git a/src/cg/cg2103.cpp b/src/cg/cg2103.cpp index aa6be0e8c..e6d71839d 100755 --- a/src/cg/cg2103.cpp +++ b/src/cg/cg2103.cpp @@ -174,6 +174,12 @@ bool TCausale::reverse_charge() const return rsi == 13 || rsi == 50 || rsi == 51; // Reverse charge! } +bool TCausale::reverse_charge_pubb() const +{ + const int rsi = regime_speciale(); + return rsi == 13 || rsi == 19 || rsi == 50 || rsi == 51; // Reverse charge! +} + bool TCausale::esclusione_allegati() const { return _rec.get_bool(CAU_ALLEG); } diff --git a/src/cg/cg2103.h b/src/cg/cg2103.h index d2038f227..aebeca499 100755 --- a/src/cg/cg2103.h +++ b/src/cg/cg2103.h @@ -40,7 +40,8 @@ public: bool intra() const; bool valintra() const; bool soloiva() const; - bool reverse_charge() const; + bool reverse_charge() const; + bool reverse_charge_pubb() const; bool regolarizzazione() const; bool ril_fat_em_ric() const; bool datareg_prec() const; diff --git a/src/cg/cglib01.cpp b/src/cg/cglib01.cpp index e4c02c2b9..c97e3ed50 100755 --- a/src/cg/cglib01.cpp +++ b/src/cg/cglib01.cpp @@ -717,8 +717,14 @@ real TCodiceIVA::lordo(const real& imponibile, int ndec, const char* codval) con bool TCodiceIVA::reverse_charge() const { - const int rsi = regime_speciale(); - return rsi == 13 || rsi == 50 || rsi == 51; // Reverse charge! + const int rsi = regime_speciale(); + return rsi == 13 || rsi == 50 || rsi == 51; // Reverse charge! +} + +bool TCodiceIVA::reverse_charge_pubb() const +{ + const int rsi = regime_speciale(); + return rsi == 13 || rsi == 19 || rsi == 50 || rsi == 51; // Reverse charge! con aggiunta dienti pubblici } /////////////////////////////////////////////////////////// diff --git a/src/cg/cglib01.h b/src/cg/cglib01.h index 75355c19c..32806ce55 100755 --- a/src/cg/cglib01.h +++ b/src/cg/cglib01.h @@ -161,12 +161,15 @@ public: // TObject bool has_plafond() const { return get_int("S3") > 0; } bool sospeso() const { return get_bool("B2"); } bool escluso_esenti() const { return get_bool("B5"); } + bool numeratore_pro_rata() const { return get_bool("B6"); } + bool denominatore_pro_rata() const { return get_bool("B7"); } real imposta(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola l'imposta sull'imponibile l'imposta e la ritorna real scorpora(real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Scorpora dall'imponibile l'imposta e la ritorna real lordo(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola il lordo dell'imponibile l'imposta e la ritorna - bool reverse_charge() const; + bool reverse_charge() const; + bool reverse_charge_pubb() const; int regime_speciale() const { return get_int("I5");} const TString& natura() const { return get("S12"); }