From 749cdab39cfdd782bb1019f33750ffe233a1b85a Mon Sep 17 00:00:00 2001 From: luca Date: Wed, 15 Jul 2009 14:40:58 +0000 Subject: [PATCH] =?UTF-8?q?Patch=20level=20=20=20=20=20=20=20=20=20:10.0?= =?UTF-8?q?=20374=20Files=20correlati=20=20=20=20=20:=20Ricompilazione=20D?= =?UTF-8?q?emo=20:=20[=20]=20Commento=20=20=20=20=20=20=20=20=20=20=20=20:?= =?UTF-8?q?modificato=20il=20ricalcolo=20saldi=20analitico;=20adesso,=20sc?= =?UTF-8?q?egliendo=20un=20anno,=20=C3=A8=20in=20grado=20di=20stabilire=20?= =?UTF-8?q?da=20quale=20anno=20partire=20per=20il=20ricalcolo=20saldi=20in?= =?UTF-8?q?=20modo=20da=20includere=20tutti=20i=20movimenti=20che=20per=20?= =?UTF-8?q?qualche=20motivo=20hanno=20a=20che=20fare=20con=20quell'anno?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.65.10.50/trunk@19113 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ca/ca2300.cpp | 126 +++++++++++++++++++++++++++---------------------- ca/ca2300a.h | 3 +- ca/ca2300a.uml | 12 +++-- ca/ca3800a.rep | 4 +- 4 files changed, 83 insertions(+), 62 deletions(-) diff --git a/ca/ca2300.cpp b/ca/ca2300.cpp index 60e583d10..b1bf6c896 100755 --- a/ca/ca2300.cpp +++ b/ca/ca2300.cpp @@ -1,8 +1,6 @@ -#include #include #include -#include -#include +#include #include "calib01.h" #include "ca2.h" @@ -20,13 +18,56 @@ class TRic_saldi_msk : public TAutomask { protected: - virtual bool on_field_event(TOperable_field& o, TField_event fe, long jolly) { return true; } + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TRic_saldi_msk(); virtual ~TRic_saldi_msk(){}; }; +bool TRic_saldi_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case F_ANNO: + if (e == fe_init || e == fe_modify) + { + //in base all'esercizio selezionato dall'utonto, questo magico programma cerca quale č il movimento con data.. + //..competenza pių antica che interessa l'esercizio selezionato (ricordiamo che i movimenti possono avere.. + //..durata pluriennale, da istruzioni adolfiche) ed esegue dall'esercizio contenente tale data il ricalcolo.. + //..dei saldi (Silvan non sei nessuno!) + const int selected_anno = atoi(o.get()); + TEsercizi_contabili esc; + TDate datainiesc, datafinesc; + esc.code2range(selected_anno, datainiesc, datafinesc); + TString query; + query << "USE MOVANA\nSELECT (BETWEEN(DATAFCOMP,#DATAINIESC,0))||(AUTOFCOMP==\"X\")"; + TISAM_recordset recset(query); + recset.set_var("#DATAINIESC", datainiesc); + + TDate datacomp = datainiesc; + + const long recset_items = recset.items(); + TProgind pi(recset_items, "Ricerca movimenti che interessano l'esercizio selezionato...", true, true); + for (bool ok = recset.move_first(); ok; ok = recset.move_next()) + { + if (!pi.addstatus(1)) + break; + + const TDate curr_date = recset.get(MOVANA_DATACOMP).as_date(); + if (curr_date < datacomp) + datacomp = curr_date; + } + const int first_anno = esc.date2esc(datacomp); + set(F_FIRST_ANNO, first_anno); + } + break; + default: + break; + } + return true; +} + TRic_saldi_msk::TRic_saldi_msk() :TAutomask ("ca2300a") { } /////////////////////////////////////////////////////////// @@ -83,7 +124,7 @@ protected: virtual bool destroy(); virtual void main_loop(); static bool elabora_movimento(const TRelation& rel, void* pJolly) { return true; } - static bool remove_saldo(const TRelation& rel, void* pJolly); + bool remove_saldi(const int first_anno); public: TRic_saldi_app() {} @@ -102,24 +143,22 @@ bool TRic_saldi_app::destroy() return TSkeleton_application::destroy(); } -bool TRic_saldi_app::remove_saldo(const TRelation& rel, void* pJolly) -{ - const int anno = *(int*)pJolly; - TRectype& rec = rel.curr(); - const int curr_anno = rec.get_int(SALDANA_ANNO); - //azzeratore dei saldi anno corrente - if (curr_anno == anno) - ((TRelation &)rel).remove(); - else //azzeratore dei preventivi/variazioni di altri anni +bool TRic_saldi_app::remove_saldi(const int first_anno) +{ + //deve azzerare i saldi a partire dal primo anno di interesse + TString query; + query << "USE SALDANA\nFROM ANNO=#ANNO"; + + TISAM_recordset recset(query); + recset.set_var("#ANNO", long(first_anno)); + const long recset_items = recset.items(); + TProgind pi(recset_items, "Azzeramento saldi...", true, true); + + for (bool ok = recset.move_first(); ok; ok = recset.move_next()) { - const real saldop = rec.get_real(SALDANA_SALDOP); - const real saldov = rec.get_real(SALDANA_SALDOV); - if (!saldop.is_zero() || !saldov.is_zero()) - { - rec.zero(SALDANA_SALDOP); - rec.zero(SALDANA_SALDOV); - ((TRelation&)rel).rewrite(); - } + if (!pi.addstatus(1)) + break; + recset.cursor()->file().remove(); } return true; } @@ -133,51 +172,26 @@ void TRic_saldi_app::main_loop() //2 Azzeramento e ricalcolo dei saldi dei movimenti di tipo preventivo o variazione per TUTTI gli esercizi.. //..questo perche' i movimenti P e T possono essere "spalmati" su piu' anni - //AZZERAMENTO dei saldi normali e temporanei dell'anno selezionato, preventivi e variazione di tutti.. - //..gli esercizi che trova - const int anno = _mask->get_int(F_ANNO); - TRelation rel_saldi(LF_SALDANA); + //AZZERAMENTO dei saldi + const int first_anno = _mask->get_int(F_FIRST_ANNO); + remove_saldi(first_anno); - TCursor cur_saldi(&rel_saldi); - const long items_saldi = cur_saldi.items(); - - cur_saldi.scan(remove_saldo, (void*)&anno, "Azzeramento saldi..."); - - //FASE 1 - //ricostruzione dei saldi normali e temporanei dell'anno selezionato + //RICOSTRUZIONE saldi (eventualmente spammati su piu' anni) TEsercizi_contabili esc; - const TDate datainies = esc[anno].inizio(); - const TDate datafines = esc[anno].fine(); + const TDate datainies = esc[first_anno].inizio(); TRelation rel_movana(LF_MOVANA); - TRectype darec(LF_MOVANA), arec(LF_MOVANA); + TRectype darec(LF_MOVANA); darec.put(MOVANA_DATACOMP, datainies); - arec.put(MOVANA_DATACOMP, datafines); - - TString filter = "(TIPOMOV=='')||(TIPOMOV=='T')"; - TCursor cur_movana(&rel_movana, filter, 2, &darec, &arec); + TCursor cur_movana(&rel_movana, "", 2, &darec); const long items = cur_movana.items(); - //usa la scan dei TCursor,quindi niente progind e for,x' gia' nel metodo - if (items > 0) - { - TAnal_mov_ric* amr = new TAnal_mov_ric; - amr->set_annoes(anno); - rel_movana.lfile().set_curr(amr); //il record principale della rel e' un TMov_anal!! - cur_movana.scan(elabora_movimento, this, "Ricostruzione saldi consuntivi e temporanei..."); - rel_movana.lfile().set_curr(new TRectype(LF_MOVANA)); //il record principale della rel e' un TMov_anal!! - } - //FASE 2 - //ricostruzione saldi di preventivo spammati su piu' anni - filter = "(TIPOMOV='P')||(TIPOMOV='V')"; - TCursor cur_movana_prev(&rel_movana, filter); - const long preventivi_items = cur_movana_prev.items(); - if (preventivi_items > 0) + if (items > 0) { TAnal_mov_ric* amr = new TAnal_mov_ric; amr->set_annoes(0); rel_movana.lfile().set_curr(amr); //il record principale della rel e' un TMov_anal!! - cur_movana_prev.scan(elabora_movimento, this, "Ricostruzione saldi preventivi..."); + cur_movana.scan(elabora_movimento, this, "Ricostruzione saldi..."); rel_movana.lfile().set_curr(new TRectype(LF_MOVANA)); //il record principale della rel e' un TMov_anal!! } } diff --git a/ca/ca2300a.h b/ca/ca2300a.h index f3e72cdac..12ad607a2 100755 --- a/ca/ca2300a.h +++ b/ca/ca2300a.h @@ -1 +1,2 @@ -#define F_ANNO 101 +#define F_ANNO 101 +#define F_FIRST_ANNO 102 diff --git a/ca/ca2300a.uml b/ca/ca2300a.uml index 45d613609..09a8e841b 100755 --- a/ca/ca2300a.uml +++ b/ca/ca2300a.uml @@ -20,12 +20,12 @@ END TEXT DLG_NULL BEGIN - PROMPT 3 4 "tempo. Siate certi di voler proseguire." + PROMPT 2 4 "tempo. Siate certi di voler proseguire." END NUMBER F_ANNO 4 BEGIN - PROMPT 3 6 "Codice esercizio " + PROMPT 3 6 "Esercizio da ricalcolare " USE ESC INPUT CODTAB F_ANNO DISPLAY "Codice Esercizio" CODTAB @@ -34,11 +34,17 @@ BEGIN OUTPUT F_ANNO CODTAB CHECKTYPE REQUIRED FLAGS "Z" - HELP "Codice esercizio per il quale si desidera il ricalcolo dei saldi" + HELP "Codice esercizio dal quale si desidera parta il ricalcolo dei saldi" WARNING "Il codice esercizio e' obbligatorio" ADD RUN cg0 -5 esc END +NUMBER F_FIRST_ANNO 4 +BEGIN + PROMPT 3 7 "Primo esercizio interessato " + FLAGS "D" +END + ENDPAGE ENDMASK diff --git a/ca/ca3800a.rep b/ca/ca3800a.rep index 7ae4d4a05..4970d8f31 100755 --- a/ca/ca3800a.rep +++ b/ca/ca3800a.rep @@ -313,10 +313,10 @@ MESSAGE RESET,169 -
+
- + H3.101