diff --git a/src/ve/ve5300.cpp b/src/ve/ve5300.cpp index b6e511884..f5d984618 100755 --- a/src/ve/ve5300.cpp +++ b/src/ve/ve5300.cpp @@ -261,7 +261,7 @@ void TCopydoc_app::main_loop() } else newdoc.put(DOC_NDOC, ndoc++); - newdoc.copy_contents(olddoc); + newdoc.copy_contents(olddoc, false); newdoc.put(DOC_DATADOC, data); const TString& oldstr = m.get(F_OLD_STR); diff --git a/src/ve/velib03.cpp b/src/ve/velib03.cpp index d0722dfed..07068d9c6 100755 --- a/src/ve/velib03.cpp +++ b/src/ve/velib03.cpp @@ -854,7 +854,7 @@ void TDocumento::copy_data(TRiga_documento& dst, const TRiga_documento& src) dst.put(RDOC_CODCOSTO, src.codice_costo()); } -void TDocumento::copy_contents(const TDocumento& src, bool copy_header) +void TDocumento::copy_contents(const TDocumento& src, bool link_row, bool copy_header) { if (copy_header) copy_data(head(), src.head()); @@ -866,7 +866,8 @@ void TDocumento::copy_contents(const TDocumento& src, bool copy_header) TRiga_documento & r = new_row(s.tipo().codice()); copy_data(r, s); - r.set_original_rdoc_key(s); + if (link_row) + r.set_original_rdoc_key(s); } } diff --git a/src/ve/velib04f.cpp b/src/ve/velib04f.cpp index 75f1ed89b..a194c0a25 100755 --- a/src/ve/velib04f.cpp +++ b/src/ve/velib04f.cpp @@ -302,30 +302,39 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r, if (rdoc != NULL && rdoc->get(RDOC_PROVV).not_empty()) { TString80 key = rdoc->get(RDOC_CODNUM); - const TCodice_numerazione& num = cached_numerazione(key); + const TRectype * orig_doc = r.find_original_doc(); + const TRectype * rdoc = r.find_original_rdoc(); + if (num.fattura_emettere_ricevere()) { - key.format("%3d%3d%6ld", conto.gruppo(), conto.conto(), conto.sottoconto()); - const TRectype* rs = &cache().get("MRE", key); - if (rs->empty()) + const int act_es = esercizi().date2esc(r.doc().get_date(DOC_DATADOC)); + const int orig_es = esercizi().date2esc(orig_doc->get_date(DOC_DATADOC)); + + if (!num.fattura_emettere_ricevere_check_ese() || act_es != orig_es) { - key.cut(6); - rs = &cache().get("MRE", key); + key.format("%3d%3d%6ld", conto.gruppo(), conto.conto(), conto.sottoconto()); + const TRectype* rs = &cache().get("MRE", key); + if (rs->empty()) { - key.cut(3); + key.cut(6); rs = &cache().get("MRE", key); - } - } - if (!rs->empty()) - { - const int gr = rs->get_int("I0"); - const int co = rs->get_int("I1"); - const long so = rs->get_int("I2"); - const char tipo = rs->get_char("S6"); + if (rs->empty()) + { + key.cut(3); + rs = &cache().get("MRE", key); + } + } + if (!rs->empty()) + { + const int gr = rs->get_int("I0"); + const int co = rs->get_int("I1"); + const long so = rs->get_int("I2"); + const char tipo = rs->get_char("S6"); - conto.set(gr, co, so, tipo); + conto.set(gr, co, so, tipo); + } } } }