Patch level : 12.0 728

Files correlati     : ve
Commento            : Aggiunta scritta valenza fiscale nella stampa documento come nuova riga logica
This commit is contained in:
Mattia Tollari 2019-03-12 17:04:50 +01:00
parent 1c79b335aa
commit a3607965b6
2 changed files with 59 additions and 20 deletions

View File

@ -750,6 +750,7 @@ class TDocumento : public TMultiple_rectype // velib03
TRiga_documento * _sconto; // Riga per lo sconto di testata
TRiga_documento * _esenzione; // Riga per l' esenzione iva
TRiga_documento * _valfisc; // Riga di valenza fiscale per fatture 2019+
bool _dirty_deny;
@ -820,7 +821,7 @@ public:
void sort_rows(const char * key);
int physical_rows() const { return body().rows(); }
virtual int rows() const { return physical_rows() + (ha_riga_sconto() ? 1 : 0) + (ha_riga_esenzione() ? 1 : 0); }
virtual int rows() const { return physical_rows() + (ha_riga_sconto() ? 1 : 0) + (ha_riga_esenzione() ? 1 : 0) + (ha_riga_valfisc() ? 1 : 0); }
const TRiga_documento& operator[](int index) const { return (const TRiga_documento&)((TDocumento *)this)->row(index); }
TRiga_documento& operator[](int index) { return (TRiga_documento&)row(index); }
@ -890,9 +891,11 @@ public:
void set_fields(TAuto_variable_rectype & rec);
void update_esenzione();
void set_riga_esenzione();
void set_riga_valfisc();
const TRiga_documento& get_riga_esenzione() const { return *_esenzione; }
bool ha_riga_sconto() const { return _sconto != NULL; }
bool ha_riga_esenzione() const { return _esenzione != NULL; }
bool ha_riga_valfisc() const { return _valfisc != NULL; }
void iva_esente(TString & codiva_es) const;
real spese_incasso(real &imp, int ndec, TTipo_importo netto = _lordo) const ;

View File

@ -250,7 +250,7 @@ void TDocumento::init()
_codcf = new TRecfield(*this, DOC_CODCF);
_cod_occas = new TRecfield(*this, DOC_OCFPI);
_sconto = _esenzione = NULL;
_sconto = _esenzione = _valfisc = NULL;
_stato_originale = ' ';
_dirty_deny = false;
@ -306,6 +306,7 @@ TDocumento::~TDocumento()
if (_sconto != NULL) delete _sconto;
if (_esenzione != NULL) delete _esenzione;
if (_valfisc != NULL) delete _valfisc;
}
const TString& TDocumento::codiva_spese() const
@ -820,7 +821,10 @@ void TDocumento::on_read(int err, word lockop)
set_riga_sconto();
if (is_fattura())
{
set_riga_esenzione();
set_riga_valfisc();
}
_stato_originale = stato();
#ifdef LIVE_STATISTICS
@ -1004,15 +1008,15 @@ void TDocumento::set_riga_esenzione()
TString16 v_data_esenzione;
TString16 n_registrazione;
TString16 n_data_registrazione;
bool multiPlaf = c.use_lettere() && get("PLAFOND").full(); // Gestione multiplafond su documento
if (codes.codice().full() && !multiPlaf)
const bool multi_plaf = c.use_lettere() && get("PLAFOND").full(); // Gestione multiplafond su documento
if (codes.codice().full() && !multi_plaf)
{
get_protocolli_esenzione(v_esenzione, v_data_esenzione, n_registrazione, n_data_registrazione);
}
// Tradotto: se ha il cod. esenzione AND (i protocolli pieni OR multiplaf)
bool esente = codes.tipo().not_empty() && ((v_esenzione.not_empty() &&
v_data_esenzione.not_empty() && n_registrazione.not_empty() &&
n_data_registrazione.not_empty()) || multiPlaf);
n_data_registrazione.not_empty()) || multi_plaf);
if (esente)
{
esente = false;
@ -1054,7 +1058,7 @@ void TDocumento::set_riga_esenzione()
_esenzione = new TRiga_documento(this, _tipo_riga_es);
TString d = _des_esenz;
if(multiPlaf)
if(multi_plaf)
{
d << " come dalle vostre dichiarazioni:\n";
TToken_string lePlafs(get("PLAFOND"), ',');
@ -1077,6 +1081,19 @@ void TDocumento::set_riga_esenzione()
}
}
void TDocumento::set_riga_valfisc()
{
static TDate anno_fatt_elett = TDate(01, 01, 2019);
if(is_fattura() && tipo().tipo_doc_sdi().full() && data() >= anno_fatt_elett)
{
if (_valfisc == nullptr)
_valfisc = new TRiga_documento(this, "05");
// Uno \n all'inizio per staccarla dal resto, ATTENZIONE!!! Senza lo spazio iniziale scrive solo una parte di questo messaggio!
_valfisc->set_descr(" \nStampa priva di valenza giuridico-fiscale ai sensi dell'art.21 DPR 633/72, salvo per i soggetti non titolari di partita iva e/o non residenti ai sensi del comma 909 art.1 L.205/2017.");
}
}
void TDocumento::dirty_fields()
{
if (!_dirty_deny)
@ -1933,14 +1950,30 @@ TRiga_documento & TDocumento::row(int index)
}
else
{
CHECKD((index == nrows + 1 && (_sconto != NULL || _esenzione != NULL)) || (index == nrows + 2 && _sconto != NULL && _esenzione != NULL),
"Riga documento non esistente ", index);
if (index == nrows + 1)
CHECKD(index <= rows(), "Riga documento non esistente ", index);
switch (index - nrows)
{
case 1:
if (_sconto != NULL)
{
r = _sconto;
break;
}
case 2:
if (_esenzione != NULL)
{
r = _sconto != NULL ? _sconto : _esenzione;
} else
if (index == nrows + 2)
r = _esenzione;
break;
}
case 3:
{
r = _valfisc;
break;
}
}
}
return *r;
}
@ -2730,7 +2763,10 @@ TDocumento& TDocumento::copy(const TDocumento & d)
}
set_riga_sconto();
if (is_fattura())
{
set_riga_esenzione();
set_riga_valfisc();
}
_occas = d.occas();
return *this;
}