diff --git a/ve/velib.h b/ve/velib.h index c480a26a9..3b49999f2 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -453,6 +453,7 @@ class TDocumento : public TMultiple_rectype // velib03 static long _firm; static TString16 _codiva_spese; static TString16 _codiva_bolli; + char _stato_originale; int _liv_len[4]; diff --git a/ve/velib03.cpp b/ve/velib03.cpp index bc1901285..da8f84f00 100755 --- a/ve/velib03.cpp +++ b/ve/velib03.cpp @@ -233,7 +233,7 @@ TString16 TDocumento::_codiva_bolli; TDocumento::TDocumento() : TMultiple_rectype(LF_DOC), _condv(NULL), - _sconto(NULL), _esenzione(NULL) + _sconto(NULL), _esenzione(NULL), _stato_originale(' ') { add_file(LF_RIGHEDOC, "NRIGA"); _tipocf = new TRecfield(*this, "TIPOCF"); @@ -246,7 +246,7 @@ TDocumento::TDocumento() TDocumento::TDocumento(const TDocumento & d) : TMultiple_rectype(LF_DOC), _condv(NULL), - _sconto(NULL), _esenzione(NULL) + _sconto(NULL), _esenzione(NULL), _stato_originale(' ') { add_file(LF_RIGHEDOC, "NRIGA"); copy(d); @@ -255,7 +255,7 @@ TDocumento::TDocumento(const TDocumento & d) TDocumento::TDocumento(char provv, int anno, const char* codnum, long numdoc, TCond_vendita * condv) : TMultiple_rectype(LF_DOC), _condv(condv), _sconto(NULL), - _esenzione(NULL) + _esenzione(NULL), _stato_originale(' ') { add_file(LF_RIGHEDOC, "NRIGA"); _tipocf = new TRecfield(*this, "TIPOCF"); @@ -275,7 +275,7 @@ TDocumento::TDocumento(char provv, int anno, const char* codnum, long numdoc, TDocumento::TDocumento(const TRectype& rec, TCond_vendita * condv) : TMultiple_rectype(LF_DOC), _condv(condv), _sconto(NULL), - _esenzione(NULL) + _esenzione(NULL), _stato_originale(' ') { add_file(LF_RIGHEDOC, "NRIGA"); _tipocf = new TRecfield(*this, "TIPOCF"); @@ -582,6 +582,7 @@ int TDocumento::read(TBaseisamfile& f, word op, word lockop) set_riga_sconto(); if (is_fattura()) set_riga_esenzione(); + _stato_originale = stato(); return err; } @@ -716,9 +717,11 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const myself.stato(stato_finale); } else - { - if (!modificabile() && !yesno_box("Documento non modificabile,\n vuoi continuare ugualmente")) - return NOERR; + { + if (_stato_originale == stato()) + if (!modificabile() && !yesno_box("Documento non modificabile,\n vuoi continuare ugualmente")) + return NOERR; + myself._stato_originale = stato(); } const bool check_movmag = main_app().has_module(MGAUT, CHK_DONGLE) && tipo().mov_mag(); @@ -1142,6 +1145,10 @@ void TDocumento::update_tabella_iva() { const char * codiva = ri->cod_iva().codice(); const real i(d.get()); + real & imponibile = ri->imp(); + + imponibile += i; + real & iva = ri->iva(); const real imposta(::iva(i, TIVA(codiva), ALL_DECIMALS));