From 25c451a60b9a9b4695573f8ca9d06268a3873de9 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 6 Mar 2011 22:48:36 +0000 Subject: [PATCH] Patch level : 10.948 Files correlati : ri0.exe ri1.exe Ricompilazione Demo : [ ] Commento : Aggiunto il flag per avere o no i progressivi nella riclassificazione saldi. Nella esportazione testo i codici di campo sono zerofilled ora git-svn-id: svn://10.65.10.50/branches/R_10_00@21743 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ri/ri0400.cpp | 7 ++++-- ri/ri0400a.h | 1 + ri/ri0400a.uml | 10 +++++++-- ri/rilib01.cpp | 60 +++++++++++++++++++++++++++++++++++++------------- ri/rilib01.h | 6 +++-- 5 files changed, 63 insertions(+), 21 deletions(-) diff --git a/ri/ri0400.cpp b/ri/ri0400.cpp index 5925c1aa4..9002370f1 100755 --- a/ri/ri0400.cpp +++ b/ri/ri0400.cpp @@ -138,16 +138,19 @@ void TRicl_saldi::main_loop() const TDate dal(c.get("Dal")); const bool provv = c.get_bool("Provvisori"); const bool all = c.get_bool("Struttura"); + const bool progr = c.get_bool("Prograssivi"); output_file = c.get("Output"); if (codricl.full()) { - TSaldi_ricl_recordset recset(codricl, codper, nper, dal, provv, all); + TSaldi_ricl_recordset recset(codricl, codper, nper, dal, provv, all, progr); + recset.save_as(output_file); } else { - TSaldi_conti_recordset recset(codper, nper, dal, provv, all); + TSaldi_conti_recordset recset(codper, nper, dal, provv, all, progr); + recset.save_as(output_file); } } diff --git a/ri/ri0400a.h b/ri/ri0400a.h index 8b26611b3..49e24d3c3 100755 --- a/ri/ri0400a.h +++ b/ri/ri0400a.h @@ -13,4 +13,5 @@ #define F_PROVV 111 #define F_OUTPUT 112 #define F_TIPOCOL 113 +#define F_PROG 114 diff --git a/ri/ri0400a.uml b/ri/ri0400a.uml index 1ab7c7e75..1b43cefe4 100755 --- a/ri/ri0400a.uml +++ b/ri/ri0400a.uml @@ -132,9 +132,15 @@ BEGIN FIELD PROVV END +BOOLEAN F_PROG +BEGIN + PROMPT 2 9 "Progessivi" + FIELD PROG +END + LIST F_TIPOCOL 2 14 BEGIN - PROMPT 2 9 "Esporta " + PROMPT 2 10 "Esporta " ITEM "0|Saldi" ITEM "1|Tutti i valori" FIELD COLTYPE @@ -142,7 +148,7 @@ END STRING F_OUTPUT 50 30 BEGIN - PROMPT 2 10 "Output " + PROMPT 2 12 "Output " CHECKTYPE REQUIRED FSELECT "" END diff --git a/ri/rilib01.cpp b/ri/rilib01.cpp index 87377dc88..7573a4878 100755 --- a/ri/rilib01.cpp +++ b/ri/rilib01.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include @@ -168,7 +169,7 @@ public: const TVariant & pdare(int nper) const { return (TVariant &) _prog_dare[nper]; } const TVariant & saldo(int nper) const { return (TVariant &) _saldo[nper]; } const int nper() const { return _saldo.items(); } - void update(char tcf, int gruppo, int conto, long sottoconto, bool provv, const TArray & from, const TArray & to); + void update(char tcf, int gruppo, int conto, long sottoconto, bool provv, const TArray & from, const TArray & to, bool prog); bool is_zero() const; bool movimentato() const { return _movimentato;} @@ -176,11 +177,11 @@ public: const TSaldo_periodo & operator -=(const TSaldo_periodo & sp); TSaldo_periodo(int items); - TSaldo_periodo(char tcf, int gruppo, int conto, long sottoconto, bool provv, const TArray & from, const TArray & to); + TSaldo_periodo(char tcf, int gruppo, int conto, long sottoconto, bool provv, const TArray & from, const TArray & to, bool prog); virtual ~TSaldo_periodo() {} }; -void TSaldo_periodo::update(char tcf, int gruppo, int conto, long sottoconto, bool provv, const TArray & from, const TArray & to) +void TSaldo_periodo::update(char tcf, int gruppo, int conto, long sottoconto, bool provv, const TArray & from, const TArray & to, bool prog) { TSaldo_ricl sal; const int nper = from.items(); @@ -224,11 +225,13 @@ void TSaldo_periodo::update(char tcf, int gruppo, int conto, long sottoconto, bo _movimentato |= sal.movimentato(); for (int i = 0; i < nper; i++) { - saldoini(i) += sld; + saldoini(i) = sld; pavere(i) += sal.progavere(i); pdare(i) += sal.progdare(i); + if (!prog) + sld = ZERO; sld += sal.progdare(i) - sal.progavere(i); - saldo(i) += sld; + saldo(i) = sld; } p.addstatus(1L); } @@ -244,6 +247,8 @@ void TSaldo_periodo::update(char tcf, int gruppo, int conto, long sottoconto, bo for (int i = 0; i < nper; i++) { saldoini(i) = sld; + if (!prog) + sld = ZERO; pavere(i) = sal.progavere(i); pdare(i) = sal.progdare(i); sld += sal.progdare(i) - sal.progavere(i); @@ -313,9 +318,9 @@ TSaldo_periodo::TSaldo_periodo(int items) _movimentato = false; } -TSaldo_periodo::TSaldo_periodo(char tcf, int gruppo, int conto, long sottoconto, bool provv, const TArray & from, const TArray & to) +TSaldo_periodo::TSaldo_periodo(char tcf, int gruppo, int conto, long sottoconto, bool provv, const TArray & from, const TArray & to, bool prog) { - update(tcf, gruppo, conto, sottoconto, provv, from, to); + update(tcf, gruppo, conto, sottoconto, provv, from, to, prog); _movimentato = false; } @@ -326,6 +331,7 @@ class TSaldi_recordset_data :public TObject TArray _from; TArray _to; bool _provv; + bool _prog; TString16 _codricl; TString8 _table; @@ -335,6 +341,7 @@ public: TArray & from() { return _from; } TArray & to() { return _to; } bool & provv() { return _provv; } + bool & prog() { return _prog; } TString & codricl() { return _codricl; } TString & table() { return _table; } TSaldi_recordset_data() : _nper(0), _provv(0) { } @@ -359,7 +366,7 @@ const TSaldo_periodo & saldo_periodo_conto(char tcf, int gruppo, int conto, long if (values == NULL) { if (sottoconto > 0L || tcf > ' ') - values = new TSaldo_periodo(tcf, gruppo, conto, sottoconto, data.provv(), data.from(), data.to()); + values = new TSaldo_periodo(tcf, gruppo, conto, sottoconto, data.provv(), data.from(), data.to(), data.prog()); else values = new TSaldo_periodo(data.from().items()); data.saldi().add(key, values); @@ -413,7 +420,7 @@ const TSaldo_periodo & saldo_periodo_ricl(const char * codricl, const char *cod) const long sottocontoc = conti.get(PCN_SOTTOCONTO).as_int(); const char tcf = conti.get(PCN_TMCF).as_string()[0]; - TSaldo_periodo s(tcf, gruppoc, contoc, sottocontoc, data.provv(), data.from(), data.to()); + TSaldo_periodo s(tcf, gruppoc, contoc, sottocontoc, data.provv(), data.from(), data.to(), data.prog()); *values += s; } } @@ -541,6 +548,16 @@ const TVariant& TSaldi_conti_recordset::get_field(int logic, const char* field) return var; } + if (fname == PCN_GRUPPO || fname ==PCN_CONTO || fname ==PCN_SOTTOCONTO) + { + TVariant & val = (TVariant &) TISAM_recordset::get_field(logic, field); + const int len = cursor()->relation()->lfile().curr().length(fname); + TString v(val.as_string()); + + v.lpad(len, '0'); + val = v; + return val; + } return TISAM_recordset::get_field(logic, field); } @@ -574,7 +591,7 @@ void TSaldi_conti_recordset::set_fromto() } } -TSaldi_conti_recordset::TSaldi_conti_recordset(const char * codper, int nper, const TDate & dal, int sel_columns, bool provv, bool all, +TSaldi_conti_recordset::TSaldi_conti_recordset(const char * codper, int nper, const TDate & dal, int sel_columns, bool provv, bool all, bool prog, const TString& sql) : TISAM_recordset(sql), _codper(codper), _sel_columns(sel_columns), _all(all) { @@ -584,6 +601,7 @@ TSaldi_conti_recordset::TSaldi_conti_recordset(const char * codper, int nper, co data.nper() = nper; data.provv() = provv; + data.prog() = prog; data.from().destroy(); data.to().destroy(); data.from().add(dal); @@ -647,6 +665,9 @@ TSaldi_conti_recordset::TSaldi_conti_recordset(const TMask& m, const TString& sq else if (fldname.starts_with("COLTYPE")) _sel_columns = atoi(f.get()); + else + if (fldname.starts_with("PROG")) + data.prog() = f.get().full(); } } set_fromto(); @@ -815,7 +836,7 @@ void TSaldi_ricl_recordset::set_fromto() } TSaldi_ricl_recordset::TSaldi_ricl_recordset(const char * codricl, const char * codper, int nper, const TDate & dal, int sel_columns, bool provv, - bool all, const TString& sql) : TISAM_recordset(sql), _codricl(codricl), _all(all), _sel_columns(sel_columns) + bool all, bool prog, const TString& sql) : TISAM_recordset(sql), _codricl(codricl), _all(all), _prog(prog), _sel_columns(sel_columns) { _id = __shuttle.add(new TSaldi_recordset_data); @@ -834,6 +855,7 @@ TSaldi_ricl_recordset::TSaldi_ricl_recordset(const char * codricl, const char * table << "&TCZCO"; data.codricl() = _codricl; data.table() = table; + data.prog() = _prog; set_fromto(); if (sql.blank()) { @@ -900,6 +922,9 @@ TSaldi_ricl_recordset::TSaldi_ricl_recordset(const TMask& m, const TString& sql) else if (fldname.starts_with("COLTYPE")) _sel_columns = atoi(f.get()); + else + if (fldname.starts_with("PROG")) + _prog = f.get().full(); } } @@ -915,6 +940,7 @@ TSaldi_ricl_recordset::TSaldi_ricl_recordset(const TMask& m, const TString& sql) table << "&TCZCO"; data.codricl() = _codricl; data.table() = table; + data.prog() = _prog; set_fromto(); if (sql.blank()) { @@ -991,6 +1017,9 @@ KEY TRicl_report::run_form(TMask& m) else if (fldname.starts_with("COLTYPE")) _sel_columns = atoi(f.get()); + else + if (fldname.starts_with("PROG")) + _prog = f.get().full(); } } } @@ -1002,9 +1031,9 @@ bool TRicl_report::set_recordset(const TString& query) if (query.find("RICLCG") > 0) { if (_codricl.full()) - return TReport::set_recordset(new TSaldi_ricl_recordset(_codricl, _codper, _nper, _dal, _sel_columns, _provv, _all, query)); + return TReport::set_recordset(new TSaldi_ricl_recordset(_codricl, _codper, _nper, _dal, _sel_columns, _provv, _all, _prog, query)); else - return TReport::set_recordset(new TSaldi_conti_recordset(_codper, _nper, _dal, _sel_columns, _provv, _all, query)); + return TReport::set_recordset(new TSaldi_conti_recordset(_codper, _nper, _dal, _sel_columns, _provv, _all, _prog, query)); } return TReport::set_recordset(query); } @@ -1028,9 +1057,9 @@ bool TRicl_report::load(const char* name) if (use.find("RICLCG") > 0) { if (_codricl.full()) - return TReport::set_recordset(new TSaldi_ricl_recordset(_codricl, _codper, _nper, _dal, _sel_columns, _provv, _all, use)); + return TReport::set_recordset(new TSaldi_ricl_recordset(_codricl, _codper, _nper, _dal, _sel_columns, _provv, _all, _prog, use)); else - return TReport::set_recordset(new TSaldi_conti_recordset(_codper, _nper, _dal, _sel_columns, _provv, _all, use)); + return TReport::set_recordset(new TSaldi_conti_recordset(_codper, _nper, _dal, _sel_columns, _provv, _all, _prog, use)); sec->set_recordset(recset); } } @@ -1060,6 +1089,7 @@ bool TRicl_report::execute_usr_word(unsigned int opcode, TVariant_stack& stack) opcode -= _first_msg; switch (opcode) { + case 0: default: break; } diff --git a/ri/rilib01.h b/ri/rilib01.h index 9e1522d46..722791416 100755 --- a/ri/rilib01.h +++ b/ri/rilib01.h @@ -40,7 +40,7 @@ public: const TDate & from(int n) const; const TDate & to(int n) const; virtual void requery(); - TSaldi_conti_recordset(const char * codper, int nper, const TDate & dal, int sel_columns = 0,bool provv = false, bool all = true, const TString& sql = ""); + TSaldi_conti_recordset(const char * codper, int nper, const TDate & dal, int sel_columns = 0,bool provv = false, bool all = true, bool prog = true, const TString& sql = ""); TSaldi_conti_recordset(const TMask& m, const TString& sql = ""); virtual ~TSaldi_conti_recordset(); }; @@ -50,6 +50,7 @@ class TSaldi_ricl_recordset : public TISAM_recordset TString16 _codricl; int _id; bool _all; + bool _prog; TString4 _codper; int _sel_columns; @@ -69,7 +70,7 @@ public: virtual void requery(); void set_fromto(); - TSaldi_ricl_recordset(const char * codricl, const char * codper, int nper, const TDate & dal, int sel_columns = 0, bool provv = false, bool all = true, const TString& sql = ""); + TSaldi_ricl_recordset(const char * codricl, const char * codper, int nper, const TDate & dal, int sel_columns = 0, bool provv = false, bool all = true, bool progr = true, const TString& sql = ""); TSaldi_ricl_recordset(const TMask & m, const TString& sql = ""); virtual ~TSaldi_ricl_recordset(); }; @@ -83,6 +84,7 @@ class TRicl_report : public TReport TDate _dal; bool _provv; bool _all; + bool _prog; int _sel_columns; protected: