From c76d0ba018b78f4901a559df4bfe5e3d56c96a4b Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Thu, 24 Aug 2023 01:05:09 +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 fatturre da ricevere evase. --- src/ca/ca3883.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/ca/ca3883.cpp b/src/ca/ca3883.cpp index 2babf5548..e4d666349 100755 --- a/src/ca/ca3883.cpp +++ b/src/ca/ca3883.cpp @@ -1165,7 +1165,8 @@ void TPrint_saldana_recordset::parse_rdoc_ordini(TAssoc_array* cms, const TDate& //crea il documento virtuale in memoria; se non è ordine oppure lo è ma è già evaso, lo saltiamo!!! ole'! TDocumento doc(curr_doc); - if (!doc.is_ordine() || doc.is_evaso()) + + if (!doc.is_ordine() || doc.is_evaso()) continue; //il documento virtuale è adesso un ordine non evaso @@ -1324,17 +1325,31 @@ void TPrint_saldana_recordset::parse_rdoc_fatture(TAssoc_array* cms, const TDate //..e quindi non devono essere ricontabilizzate come fatture vere e proprie (es. FAQ) const int num_rows = doc.physical_rows(); bool is_fdr = false; + for (int k = 1; k <= num_rows && !is_fdr; k++) { const TRiga_documento& riga = doc[k]; const TRectype* riga_babbo = riga.find_original_rdoc(); - if (riga_babbo != NULL && riga_babbo->get(RDOC_PROVV).not_empty()) + if (riga_babbo != nullptr && riga_babbo->get(RDOC_PROVV).not_empty()) { - const TString& key(riga_babbo->get(RDOC_CODNUM)); - const TCodice_numerazione& num = TDocumento::codice_numerazione(key); + const TString& codnum(riga_babbo->get(RDOC_CODNUM)); + const TCodice_numerazione& num = TDocumento::codice_numerazione(codnum); + if (num.fattura_emettere_ricevere()) is_fdr = true; } + + const TRectype * riga_figlia = riga.find_son_rdoc(); + + if (riga_figlia != nullptr) + { + const TString& codnum(riga.get(RDOC_CODNUM)); + const TCodice_numerazione& num = TDocumento::codice_numerazione(codnum); + int anno = riga.get_int(RDOC_ANNO); + + if (num.fattura_emettere_ricevere() && anno == riga_figlia->get_int(RDOC_ANNO)) + is_fdr = true; + } } if (is_fdr) continue;