Patch level : 12.0 1066

Files correlati     : ve0.exe ve6.exe
Commento        :

Corretta la ricerca della causale quando è impostato il tipo documento SDI.

Interno :

Controllare un pò di contabilizzazioni
This commit is contained in:
Alessandro Bonazzi 2021-07-01 08:57:14 +02:00
parent aa482813dc
commit 9a1ebb700e

View File

@ -560,9 +560,9 @@ static TBill _conto_sto; // Conto per storno articoli Omaggio
static bool _contsclor; // Contabilizza sconti al netto o al lordo (sconti suddiviso per ogni contropartita) static bool _contsclor; // Contabilizza sconti al netto o al lordo (sconti suddiviso per ogni contropartita)
//static bool _loaded = false;// Flag per evitare di caricare i parametri più di una volta //static bool _loaded = false;// Flag per evitare di caricare i parametri più di una volta
static TCausale *_caus = NULL; // causale del documento corrente static TCausale *_caus = nullptr; // causale del documento corrente
static TMovimentoPN_VE *_movimento = NULL; // Movimento di prima nota documento vendita static TMovimentoPN_VE *_movimento = nullptr; // Movimento di prima nota documento vendita
static TMovimentoPN *_anticipo = NULL; // Movimento di prima nota relativamente all'anticipo indicato sul documento static TMovimentoPN *_anticipo = nullptr; // Movimento di prima nota relativamente all'anticipo indicato sul documento
class TIVA_array : public TAssoc_array class TIVA_array : public TAssoc_array
{ {
@ -805,8 +805,8 @@ void TContabilizzazione::init()
_error = no_error; _error = no_error;
_nrow = 0; _nrow = 0;
_total_docs = 0L; _total_docs = 0L;
_caus = NULL; _caus = nullptr;
_viswin = NULL; _viswin = nullptr;
} }
TContabilizzazione::TContabilizzazione(const char* cod) : TElaborazione(cod) TContabilizzazione::TContabilizzazione(const char* cod) : TElaborazione(cod)
@ -1042,18 +1042,20 @@ TCausale* TContabilizzazione::get_caus(const TDocumento& doc, const int year) co
if (main_app().has_module(F9AUT, CHK_DONGLE)) if (main_app().has_module(F9AUT, CHK_DONGLE))
{ {
const TString & tipodoc = doc.get(DOC_TIPODOCSDI); const TString & tipodocsdi = doc.get(DOC_TIPODOCSDI);
if (tipodoc.full()) if (tipodocsdi.full())
{ {
const TString & tipodoc_cont = cached_causale(doc.tipo().causale(), year).tipodoc();
#ifdef NEW_FP #ifdef NEW_FP
TClasse_doc * classe = __cats.tipo2class(tipodoc); TClasse_doc * classe = __cats.tipo2class(tipodocsdi, tipodoc_cont);
if (classe != nullptr) if (classe != nullptr)
codcaus = classe->caus_cont(); codcaus = classe->caus_cont();
#else #else
codcaus =__cats.tipo2caus_cont(tipodoc); codcaus =__cats.tipo2caus_cont(tipodocsdi, tipodoc_cont);
#endif #endif
} }
} }
@ -1084,12 +1086,8 @@ TCausale* TContabilizzazione::get_caus(const TDocumento& doc, const int year) co
codcaus = doc.tipo().causale(); // Istanzia la causale del documento corrente... codcaus = doc.tipo().causale(); // Istanzia la causale del documento corrente...
} }
if (_caus != nullptr && _caus->codice() == codcaus && _caus->reg().year() == year)
return _caus;
if (_caus != nullptr)
safe_delete(_caus);
if (codcaus.full()) if (codcaus.full())
_caus = new TCausale(codcaus, year); _caus = (TCausale *) &cached_causale(codcaus, year);
return _caus; return _caus;
} }
@ -1176,7 +1174,7 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
_caus = get_caus(doc, data_reg.year()); _caus = get_caus(doc, data_reg.year());
_righe_iva->set_caus(_caus); _righe_iva->set_caus(_caus);
if (_caus == NULL || !_caus->ok()) if (_caus == nullptr || !_caus->ok())
{ {
_error = caus_error; _error = caus_error;
return _error; return _error;
@ -1563,7 +1561,7 @@ error_type TContabilizzazione::compile_head_mov_re(TDocumento& doc)
// Istanzia la causale del documento corrente... // Istanzia la causale del documento corrente...
_caus = get_caus(doc, data_reg.year()); _caus = get_caus(doc, data_reg.year());
if (_caus == NULL || !_caus->ok() || _caus->iva() != nessuna_iva) if (_caus == nullptr || !_caus->ok() || _caus->iva() != nessuna_iva)
{ {
_error = causre_error; _error = causre_error;
return _error; return _error;
@ -3424,11 +3422,14 @@ error_type TContabilizzazione::compile_head_anticipo(TDocumento& doc, const TMov
TString descr; TString descr;
TString8 codcaus = doc.clifor().vendite().get(CFV_CODCAUSINC); TString8 codcaus = doc.clifor().vendite().get(CFV_CODCAUSINC);
if (codcaus.blank()) if (codcaus.blank())
codcaus = doc.tipo().caus_anticipo(); codcaus = doc.tipo().caus_anticipo();
const TDate datareg = movimento.curr().get_date(MOV_DATAREG); const TDate datareg = movimento.curr().get_date(MOV_DATAREG);
if (!_caus->read(codcaus,datareg.year())) _caus = (TCausale *) & cached_causale(codcaus, datareg.year());
if (!_caus->ok())
return caus_ant_error; return caus_ant_error;
long nr = doc_contabilized(doc, true); long nr = doc_contabilized(doc, true);
@ -4612,7 +4613,7 @@ void TContabilizzazione::display_error(TDocumento& doc)
TToken_string msg(256, '.'); TToken_string msg(256, '.');
const TString4 numerazione = doc.numerazione(); const TString4 numerazione = doc.numerazione();
const long numero = doc.numero(); const long numero = doc.numero();
const char* causale = _caus == NULL ? "" : _caus->codice(); const char* causale = _caus == nullptr ? "" : _caus->codice();
switch (_error) switch (_error)
{ {
@ -4790,9 +4791,9 @@ void TContabilizzazione::display_error(TDocumento& doc)
bool TContabilizzazione::sc_enabled(const TDate& data) const bool TContabilizzazione::sc_enabled(const TDate& data) const
{ {
bool rt = _sc_enabled; bool rt = _sc_enabled;
if (_caus != NULL) if (_caus != nullptr)
rt &= _caus->saldaconto(data); rt &= _caus->saldaconto(data);
if (_clifo != NULL) if (_clifo != nullptr)
rt &= !_clifo->curr().get_bool(CLI_OCCAS); // Saldaconto solo se C/F non occasionale rt &= !_clifo->curr().get_bool(CLI_OCCAS); // Saldaconto solo se C/F non occasionale
return rt; return rt;
} }
@ -4800,7 +4801,7 @@ bool TContabilizzazione::sc_enabled(const TDate& data) const
bool TContabilizzazione::in_enabled() const bool TContabilizzazione::in_enabled() const
{ {
bool rt = _in_enabled; bool rt = _in_enabled;
if (_caus != NULL) if (_caus != nullptr)
rt &= _caus->intra(); rt &= _caus->intra();
return rt; return rt;
} }
@ -4879,12 +4880,6 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc
_nrow = 0; _nrow = 0;
_total_docs = 0L; _total_docs = 0L;
_data_reg = data_elab; _data_reg = data_elab;
if (_caus != NULL)
{
delete _caus;
_caus = NULL;
}
if (interattivo) if (interattivo)
{ {
_auto_data = true; _auto_data = true;
@ -5013,15 +5008,8 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc
} }
_viswin->add_line(""); _viswin->add_line("");
if (_caus != NULL)
{
delete _caus;
_caus = NULL;
}
export_movimento(*_movimento, *_viswin); export_movimento(*_movimento, *_viswin);
delete _movimento; safe_delete(_movimento);
_movimento = NULL;
// Let's free some valuable space // Let's free some valuable space
if (!interattivo) if (!interattivo)
doc_in.destroy(i, false); doc_in.destroy(i, false);