Patch level : 12.0 nopatch

Files correlati     :
Commento        :

aggiunti metodi a codice IVA e
Causale
This commit is contained in:
Alessandro Bonazzi 2021-08-23 09:10:35 +02:00
parent 08e3484a19
commit 72d427f397
2 changed files with 38 additions and 7 deletions

View File

@ -84,6 +84,12 @@ class TProgind;
#define PROVV_BIL "B"
#define PROVV_CESP "C"
#define IVA_DA_VENTILARE "VE"
#define IVA_ESENTE "ES"
#define IVA_NON_IMPONIBILE "NI"
#define IVA_NON_SOGGETTA "NS"
#define REVERSE_CHARGE "RC"
// Defines per TInteressi_IVA_table. Servono per comporre i nomi dei campi
#define P_1_TRIMESTRE 0
@ -374,6 +380,7 @@ public:
const TString & causale_reg_iva() const;
const TString & tipo_doc() const;
const TString & codice_registro() const { return _rec.get(CAU_REG); }
const TString & causale_770() const { return _rec.get(CAU_M770); }
const TRegistro& reg() const { return cached_registro(codice_registro(), _year); }
TipoIVA iva() const { return _iva; }
int regime_speciale() const;
@ -419,23 +426,37 @@ protected:
public: // TObject
virtual bool ok() const { return !empty(); }
TCodiceIVA& operator =(const TCodiceIVA & iva) { copy(iva) ; return *this;}
TCodiceIVA& operator =(const TCodiceIVA & iva) { copy(iva); return *this; }
TObject* dup() const { return new TCodiceIVA(*this); }
bool read(const char* codice);
bool read(const char* codice);
const TString& codice() const { return get("CODTAB"); }
const TString& descrizione() const { return get("S0"); }
const TString& descrizione() const { return get("S0"); }
const real percentuale() const { return get_real("R0"); }
const real moltiplicatore_percentuale() const { return get_real("R0") / CENTO; }
const TString & aliquota() const { return get("R0"); }
const TString& tipo() const { return get("S1"); }
const TString& IVA11_vendite() const { return get("S2"); }
const TString& IVA11_acquisti() const { return get("S9"); }
const bool iva_imponibile() const { return tipo().empty() || tipo() == REVERSE_CHARGE; }
const bool iva_da_ventilare() const { return tipo() == IVA_DA_VENTILARE; }
const bool iva_esente() const { return tipo() == IVA_ESENTE; }
const bool iva_non_imponibile() const { return tipo() == IVA_NON_IMPONIBILE; }
const bool iva_non_soggetta() const { return tipo() == IVA_NON_SOGGETTA; }
const int tipo_IVA_agricola() const { return get_int("I4"); }
const bool is_agricola() const { return tipo_IVA_agricola() != 0; }
const TString& indetraibilita() const { return get("S4"); } // Codice indetraibilità alfanumerico (ex. 1, 3, 9)
const TString& iva_a_cui_ventilare() const { return get("S6"); }
const TString& tipo_comunicazione_attive() const { return get("S10"); }
int tipo_indetraibilita() const; // Tipo indetraibilità: 1,3,9
bool senza_imposta() { return percentuale() == ZERO;}
int tipo_agenzie_viaggio() const { return get_int("S5"); }
int tipo_plafond() const { return get_int("S3"); }
bool senza_imposta() const { return percentuale() == ZERO;}
int allegato(char tipocf) const { return get_int(tipocf == 'F' ? "S8" : "S7"); }
bool has_plafond() const { return get_int("S3") > 0; }
bool sospeso() const { return get_bool("B2"); }
bool codice_rimborso_infrannuale() const { return get_bool("B3"); }
bool escluso_dal_rimborso() const { return get_bool("B4"); }
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"); }
@ -444,6 +465,7 @@ public: // TObject
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
real imponibile(const real& imposta, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola l'imponibile dell'imposta e lo ritorna
// bool reverse_charge() const;
// bool reverse_charge_pubb() const;
@ -1017,6 +1039,7 @@ public:
int cg_rows() const { return cg().rows(); }
int iva_rows() const { return iva().rows(); }
bool solo_IVA() const { return iva_rows() > 0 && cg_rows() == 0; }
bool is_IVA() const { return iva_rows() > 0; }
virtual int readat(TRecnotype nrec, word lockop = _nolock);
virtual int read(word op = _isequal, word lockop = _nolock);
@ -1544,8 +1567,10 @@ public:
const TRectype & indsp(const int codindsp) const;
char tipo() const { return get_char(CLI_TIPOCF); }
long codice() const { return get_long(CLI_CODCF); }
long codice() const { return get_long(CLI_CODCF); }
const TString & str_codice() const { return get(CLI_CODCF); }
int alleg() const { return get_int(CLI_ALLEG); }
bool gruppo_IVA() const { return get(CLI_ALLEG) == "G"; }
bool ok() const { return !empty(); }
virtual int read(const TRectype& rec, word op = _isequal, word lockop = _nolock);

View File

@ -348,8 +348,8 @@ void TCausale::calcIVA()
{
TipoIVA i = nessuna_iva; // Tipo IVA di default
bool c = false; // Corrispettivi di default
const TString& td = tipo_doc();
if (td.full())
{
const TRectype& tpd = cache().get("%TPD", td);
@ -362,7 +362,7 @@ void TCausale::calcIVA()
i = ri;
if (i != ri)
{
error_box(FR("Tipo documento '%s' incompatibile con tipo registro"), (const char*)td);
error_box(FR("Tipo documento '%s' incompatibile con tipo registro (registo %s)"), (const char*) td, (const char*) codice_registro());
i = iva_errata;
}
c = tpd.get_bool("B0"); // B0 flag corrispettivi
@ -1182,6 +1182,12 @@ real TCodiceIVA::imposta(const real& imponibile, int ndec, const char* codval) c
return iva;
}
real TCodiceIVA::imponibile(const real& imposta, int ndec, const char* codval) const
{
real imp = imposta * CENTO / percentuale() ;
round(imp, ndec, codval);
return imp;
}
real TCodiceIVA::scorpora(real& lordo, int ndec, const char* codval) const
{
round(lordo, ndec, codval); // Arrotondo importo lordo