From 0af5c753c9ec800ac33c0a86bb853be04a719a01 Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Thu, 24 Aug 2023 01:13:23 +0200 Subject: [PATCH] Patch level : 12.00 1278 Files correlati : ca3.exe ca3*.msk Commento : La stampa del bilancio di commessa non considerava bene le fatture da ricevere evase. --- src/ve/velib.h | 3 +++ src/ve/velib02.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/src/ve/velib.h b/src/ve/velib.h index 2f77c89ec..854921fe0 100755 --- a/src/ve/velib.h +++ b/src/ve/velib.h @@ -684,6 +684,9 @@ public: const TRectype* find_original_rdoc() const; const TRectype* find_original_doc() const; + const TRectype* find_son_rdoc() const; + const TRectype* find_son_doc() const; + void set_final_rdoc_key(const TRectype& orig); void reset_final_rdoc_key(); const TRectype* find_final_rdoc() const; diff --git a/src/ve/velib02.cpp b/src/ve/velib02.cpp index 40ea915c8..98dfb4156 100755 --- a/src/ve/velib02.cpp +++ b/src/ve/velib02.cpp @@ -1791,6 +1791,7 @@ void TRiga_documento::reset_original_rdoc_key() const TRectype* TRiga_documento::find_original_rdoc() const { const long id = get_long(RDOC_DAIDRIGA); + if (id > 0L) { TToken_string key; @@ -1817,6 +1818,7 @@ const TRectype* TRiga_documento::find_original_rdoc() const const TRectype* TRiga_documento::find_original_doc() const { const long id = get_long(RDOC_DANDOC); + if (id > 0L) { TToken_string key; @@ -1831,6 +1833,52 @@ const TRectype* TRiga_documento::find_original_doc() const return NULL; } +const TRectype* TRiga_documento::find_son_rdoc() const +{ + const long id = get_long(RDOC_IDRIGA); + + if (id > 0L) + { + TToken_string key; + + key.add(get(RDOC_PROVV)); + key.add(get(RDOC_ANNO)); + key.add(get(RDOC_CODNUM)); + key.add(get(RDOC_NDOC)); + for (int r = 0; ; r++) + { + if (r == 0) + key.add(id, 4); + else + key.add(r, 4); + const TRectype& rec = cache().get(LF_RIGHEDOC, key, 4); + if (r > 0 && rec.empty()) + break; + if (rec.get_long(RDOC_DAIDRIGA) == id) + return &rec; + } + } + return nullptr; +} + +const TRectype* TRiga_documento::find_son_doc() const +{ + const TRectype * son_row = find_son_rdoc(); + if (son_row != nullptr) + { + TToken_string key; + + key.add(son_row->get(RDOC_PROVV)); + key.add(son_row->get(RDOC_ANNO)); + key.add(son_row->get(RDOC_CODNUM)); + key.add(son_row->get(RDOC_NDOC)); + const TRectype& rec = cache().get(LF_DOC, key); + if (rec.not_empty()) + return &rec; + } + return nullptr; +} + void TRiga_documento::set_final_rdoc_key(const TRectype& dest) { CHECK(dest.num() == num(), "Bad document row");