From 2aaf0db4cf48c15df765e6cd5cd2faf1e8761c64 Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 8 Sep 2005 13:05:21 +0000 Subject: [PATCH] Patch level : 2.2 Files correlati : Ricompilazione Demo : [ ] Commento : Corretta stampa mastrini analitici in modo da inizializzare le date vuote con date sensate, in modo che funzioni sempre la setregion Eliminato uso del metodo is_analitico durante la costruzione dei filtri sui cursori git-svn-id: svn://10.65.10.50/trunk@13337 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ca/ca3200.cpp | 19 +++++++++++++++++++ ca/calib02.cpp | 50 ++++++++++++++++++++++++++++++-------------------- ca/calib02.h | 3 +++ 3 files changed, 52 insertions(+), 20 deletions(-) diff --git a/ca/ca3200.cpp b/ca/ca3200.cpp index 41de1a133..1cb5ee003 100755 --- a/ca/ca3200.cpp +++ b/ca/ca3200.cpp @@ -387,6 +387,25 @@ void TPrint_mastrini_ca_alternative_recordset::set_filter(const TPrint_mastrini_ _dadata = msk.get_date(F_DATAINI); _adata = msk.get_date(F_DATAFIN); + // Riempie le date con valori sensati + if (!_dadata.ok() || !_adata.ok()) + { + TEsercizi_contabili esc; + const int codes = msk.get_int(F_ANNO); + if (esc.exist(codes)) + { + const TEsercizio& esercizio = esc[codes]; + if (!_dadata.ok()) + _dadata = esercizio.inizio(); + if (!_adata.ok()) + _adata = esercizio.fine(); + } + else + { + if (!_adata.ok()) + _adata = TDate(31, 12, 9999); + } + } _tipimov = 0; switch (msk.get(F_TIPIMOV)[0]) diff --git a/ca/calib02.cpp b/ca/calib02.cpp index 56a6ca56b..02ca801ce 100755 --- a/ca/calib02.cpp +++ b/ca/calib02.cpp @@ -182,17 +182,22 @@ bool TPconana_recordset::valid_record(const TRelation& rel) const TString80 conto; if (_tipo == 'C') { - const TBill b(rel.curr()); + const TRectype& curr = rel.curr(); + const TBill b(curr); - if ((b.sottoconto() <= 0)) + int level = 0; + if (b.conto() != 0) + level++; + if (b.sottoconto() != 0) + level++; + + (bool&)(_is_anal[level]) = curr.get_bool(PCN_ANALITICA); + + if (level < 2) // Ignora gruppi e conti return false; - // Memorizzo la posizione del file principale perche' is_analitico lo sposta - TLocalisamfile& file = rel.file(0); - const TRecnotype recno = file.recno(); - const bool isanal = b.is_analitico(); - file.readat(recno); - if (!isanal) + // Ignora i sottoconti non analitici nemmeno a livello di conto o gruppo + if (!(_is_anal[2] || _is_anal[1] || _is_anal[0])) return false; conto = b.string(0x8); @@ -227,13 +232,20 @@ void TPconana_recordset::set_custom_filter(TCursor& cursor) const { TRectype darec(LF_PCON), arec(LF_PCON); - darec.put(PCN_GRUPPO, _da_conto.mid(0,3)); - darec.put(PCN_CONTO, _da_conto.mid(3,3)); - darec.put(PCN_SOTTOCONTO, _da_conto.mid(6,6)); - arec.put(PCN_GRUPPO, _a_conto.mid(0,3)); - arec.put(PCN_CONTO, _a_conto.mid(3,3)); - arec.put(PCN_SOTTOCONTO, _a_conto.mid(6,6)); + if (_da_conto.not_empty()) + { + darec.put(PCN_GRUPPO, _da_conto.mid(0,3)); + darec.put(PCN_CONTO, _da_conto.mid(3,3)); + darec.put(PCN_SOTTOCONTO, _da_conto.mid(6,6)); + } + if (_a_conto.not_empty()) + { + arec.put(PCN_GRUPPO, _a_conto.mid(0,3)); + arec.put(PCN_CONTO, _a_conto.mid(3,3)); + arec.put(PCN_SOTTOCONTO, _a_conto.mid(6,6)); + } cursor.setregion(darec, arec); + memset((void*)_is_anal, 0, sizeof(_is_anal)); // Azzera flags di conti analitici } else { @@ -354,13 +366,11 @@ void TAnal_report::msg_format_fase (TVariant_stack& stack) void TAnal_report::msg_format_conto (TVariant_stack& stack) { // Cerca di determinare se si usa il piano contabile o analitico - const TFixed_string gruppo(PCN_GRUPPO); - TVariant var; - get_record_field(gruppo, var); - if (var.is_null()) - msg_format(LF_PCONANA, stack); - else + const TString& conto = curr_field()->get().as_string(); + if (conto.len() == 12) msg_format(LF_PCON, stack); + else + msg_format(LF_PCONANA, stack); } void TAnal_report::msg_format_commessa_costo(TVariant_stack& stack) diff --git a/ca/calib02.h b/ca/calib02.h index 07b28a7c7..a647e96c2 100755 --- a/ca/calib02.h +++ b/ca/calib02.h @@ -87,6 +87,9 @@ class TPconana_recordset : public TISAM_recordset TDate _dal, _al; bool _movimentati, _nonnulli; + // Variabili per verifica conti contabili col flag di analitica + bool _is_anal[3]; + protected: bool valid_record(const TRelation& rel) const; static bool pianoconti_filter(const TRelation* rel);