From b3cbac96215d1a4b7166d21820c3cba15f36cf6e Mon Sep 17 00:00:00 2001 From: angelo Date: Mon, 1 Jul 1996 17:22:56 +0000 Subject: [PATCH] Modifiche per far andare definitavamente il programma di visualizzazione saldi. Aggiunto l'ordinamento per data d'inizio esercizio. git-svn-id: svn://10.65.10.50/trunk@3127 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg5200.cpp | 156 ++++++++++++++++++++++++++++--------------------- cg/cg5200a.uml | 59 +++++++++---------- 2 files changed, 116 insertions(+), 99 deletions(-) diff --git a/cg/cg5200.cpp b/cg/cg5200.cpp index 76c85d854..4dc77fe74 100755 --- a/cg/cg5200.cpp +++ b/cg/cg5200.cpp @@ -111,8 +111,9 @@ class TSaldibrowse_application : public TBrowse_application TMask* _msk; TCursor * _cur; TRelation * _rel,* _rel1; + TTable * _esc; TRiga_array _riga; - int _anno, _g, _c; + int _anno, _annop, _g, _c; long _s; bool _saldo_conto, _saldo_gruppo, _saldo_sottoc, _scarongly; @@ -126,6 +127,9 @@ protected: virtual void init_query_mode(TMask&); virtual void init_modify_mode(TMask&); + static int compare_rows(const TObject **o1, const TObject** o2); + static bool anno_handler (TMask_field& f, KEY k); + static bool flsca_handler (TMask_field& f, KEY k); static bool sottoc_handler (TMask_field& f, KEY k); static bool sheet_action(TSheet_field& s, int r, KEY k); public: @@ -148,58 +152,26 @@ bool TSaldibrowse_application::sheet_action(TSheet_field& s, int r, KEY k) void TSaldibrowse_application::init_query_mode(TMask& m) { + _anno = 0; + _scarongly = FALSE; m.disable(DLG_FINDREC); - TString t(m.get(F_TIPOCF)); - if (t == "C") - { - m.show(F_DESCR_CLIENTE); - m.enable(F_DESCR_CLIENTE); - m.hide(F_DESCR_FORN); - m.hide(F_DESCR_CONTO); - } - else - if (t == "F") - { - m.hide(F_DESCR_CLIENTE); - m.show(F_DESCR_FORN); - m.enable(F_DESCR_FORN); - m.hide(F_DESCR_CONTO); - } - else - { - m.hide(F_DESCR_CLIENTE); - m.hide(F_DESCR_FORN); - m.show(F_DESCR_CONTO); - m.enable(F_DESCR_CONTO); - } + m.enable(F_DESCR_CONTO); + m.enable(F_ANNO); + m.enable(F_SCARICATO); } void TSaldibrowse_application::init_modify_mode(TMask& m) { - TString t(m.get(F_TIPOCF)); m.disable(DLG_FINDREC); - if (t == "C") - { - m.show(F_DESCR_CLIENTE); + m.disable(F_ANNO); + m.disable(F_SCARICATO); + TString tipo(m.get(F_TIPOCF)); + + if (tipo=="C") m.disable(F_DESCR_CLIENTE); - m.hide(F_DESCR_FORN); - m.hide(F_DESCR_CONTO); - } - else - if (t == "F") - { - m.hide(F_DESCR_CLIENTE); - m.show(F_DESCR_FORN); + else if (tipo=="F") m.disable(F_DESCR_FORN); - m.hide(F_DESCR_CONTO); - } - else - { - m.hide(F_DESCR_CLIENTE); - m.hide(F_DESCR_FORN); - m.show(F_DESCR_CONTO); - m.disable(F_DESCR_CONTO); - } + else m.disable(F_DESCR_CONTO); } bool TSaldibrowse_application::fai_filtro() @@ -211,7 +183,10 @@ bool TSaldibrowse_application::fai_filtro() _saldo_gruppo = _saldo_conto = _saldo_sottoc = FALSE; TMask& m = curr_mask(); tipo = m.get(F_TIPOCF)[0]; - _anno = m.get_int(F_ANNO); + if (_anno != 0) + _annop = EsePre(_anno); + else + _annop = 0; _g = m.get_int(F_GRUPPO); _c = m.get_int(F_CONTO); @@ -232,14 +207,6 @@ bool TSaldibrowse_application::fai_filtro() from.zero(); to.zero(); - if (_anno != 0) - annop = EsePre(_anno); - - if (annop != 0) - from.put(SLD_ANNOES,annop); - else if (_anno != 0) - from.put(SLD_ANNOES,_anno); - else from.put(SLD_ANNOES,0); from.put(SLD_GRUPPO,_g); if (_c != 0) @@ -247,28 +214,43 @@ bool TSaldibrowse_application::fai_filtro() if (_s != 0l) from.put(SLD_SOTTOCONTO, _s); - if (_anno != 0) - to.put(SLD_ANNOES,_anno); - else to.put(SLD_ANNOES, 9999); to.put(SLD_GRUPPO,_g); if (_c != 0) to.put(SLD_CONTO,_c); if (_s != 0l) to.put(SLD_SOTTOCONTO,_s); - _scarongly = m.get_bool(F_SCARICATO); - - if ( _saldo_gruppo || _saldo_conto ) - _cur->setkey(1); - - if (_saldo_sottoc) - _cur->setkey(2); + _cur->setkey(2); _cur->setregion(from,to); return TRUE; } +bool TSaldibrowse_application::anno_handler(TMask_field& f, KEY key) +{ + if (key == K_TAB && f.focusdirty()) + { + TString cod(f.get()); + app()._anno = atoi(cod); + app()._esc->zero(); + app()._esc->put("CODTAB",cod); + if (cod.not_empty() && app()._esc->read() != NOERR) + { + f.error_box("Esercizio %s non presente.",(const char*) cod); + return FALSE; + } + } + return TRUE; +} + +bool TSaldibrowse_application::flsca_handler(TMask_field& f, KEY key) +{ + if (key == K_SPACE) + app()._scarongly = f.get() == "" ? FALSE : TRUE; + return TRUE; +} + bool TSaldibrowse_application::sottoc_handler(TMask_field& f, KEY key) { bool ok = TRUE; @@ -306,6 +288,7 @@ bool TSaldibrowse_application::sottoc_handler(TMask_field& f, KEY key) clifo.setkey(1); clifo.put(CLI_TIPOCF,tipo); clifo.put(CLI_CODCF, sottoconto) ; + app()._s = sottoconto; ok = stop = clifo.read() == NOERR; if (ok && (gruppo == 0 || conto == 0)) { @@ -337,11 +320,14 @@ bool TSaldibrowse_application::sottoc_handler(TMask_field& f, KEY key) bool TSaldibrowse_application::user_create() { - _rel = new TRelation(LF_SALDI); + _rel = new TRelation(LF_PCON); _rel1 = new TRelation(LF_SALDI); _cur = new TCursor(_rel1, "", 2); - + _esc = new TTable("ESC"); + _rel->add(LF_CLIFO,"TIPOCF=TMCF"); _msk = new TMask("cg5200a"); + _msk->set_handler(F_ANNO, anno_handler); + _msk->set_handler(F_SCARICATO, flsca_handler); _msk->set_handler(F_SOTTOCONTO, sottoc_handler); _msk->set_handler(F_SOTTOC_CLIENTE, sottoc_handler); _msk->set_handler(F_SOTTOC_FORN, sottoc_handler); @@ -359,6 +345,7 @@ bool TSaldibrowse_application::user_destroy() delete _rel; delete _rel1; delete _cur; + delete _esc; return TRUE; } @@ -366,6 +353,13 @@ bool TSaldibrowse_application::user_destroy() int TSaldibrowse_application::read(TMask& m) { m.autoload(*_rel); + m.set(F_ANNO,_anno); + m.set(F_SCARICATO,_scarongly ? "X" : " "); + TString tipo(m.get(F_TIPOCF)); + if (tipo == "C") + m.set(F_SOTTOC_CLIENTE,_s); + else if (tipo == "F") + m.set(F_SOTTOC_FORN,_s); fai_filtro(); compilasheet(); @@ -425,6 +419,29 @@ void TSaldibrowse_application::add_r(int numrig,int a,real& slf,char sff,real& s riga.add(asc.string(),18); } +int TSaldibrowse_application::compare_rows(const TObject** o1, const TObject** o2) +{ + TToken_string* r1 = ( TToken_string*)*o1; + TToken_string* r2 = ( TToken_string*)*o2; + int rt = 0; + TDate d1,d2; + TString c1,c2; + c1.format("%04d", r1->get_int(0)); + c2.format("%04d", r2->get_int(0)); + app()._esc->zero(); + app()._esc->put("CODTAB",c1); + if (app()._esc->read() == NOERR) d1 = app()._esc->get_date("D0"); + else d1 = botime; + app()._esc->put("CODTAB",c2); + if (app()._esc->read() == NOERR) d2 = app()._esc->get_date("D0"); + else d2 = botime; + + if (d1 < d2) rt = -1; + else if (d1 > d2) rt = +1; + + return rt; +} + void TSaldibrowse_application::compilasheet() { char flagsal = ' '; @@ -451,7 +468,6 @@ void TSaldibrowse_application::compilasheet() // nuova struttura archivio saldi - ss().reset(); _riga.destroy(); TRecnotype items = _cur->items(); @@ -469,6 +485,8 @@ void TSaldibrowse_application::compilasheet() conto = _cur->curr().get_int(SLD_CONTO); sottoconto = _cur->curr().get_long(SLD_SOTTOCONTO); + if (_anno != 0 && _anno != anno && _annop != anno) continue; + if (gruppo != _g) continue; if (_saldo_conto && conto != _c) continue; @@ -546,6 +564,10 @@ void TSaldibrowse_application::compilasheet() } _riga.destroy(); } + + // Ora ordina le righe dello sheet per ordine della data inizio esercizio + TString_array& righe_sheet = ss().rows_array(); + righe_sheet.TArray::sort(compare_rows); } int cg5200(int argc, char* argv[]) diff --git a/cg/cg5200a.uml b/cg/cg5200a.uml index 7c42110a8..430e8ede9 100755 --- a/cg/cg5200a.uml +++ b/cg/cg5200a.uml @@ -13,23 +13,18 @@ BEGIN PROMPT 4 1 "Cod. esercizio " HELP "Codice esercizio a cui si riferiscono i saldi" WARNING "Codice esercizio inesistente" - FIELD LF_SALDI->ANNOES - KEY 1 USE ESC INPUT CODTAB[1,4] F_ANNO DISPLAY "Codice" CODTAB[1,4] DISPLAY "Data inizio esercizio" D0 DISPLAY "Data fine esercizio" D1 OUTPUT F_ANNO CODTAB[1,4] - CHECKTYPE FORCED FLAGS "Z" END BOOLEAN F_SCARICATO BEGIN PROMPT 40 1 "Solo saldi dei movimenti scaricati" - KEY 1 - FIELD LF_SALDI->FLSCA END GROUPBOX DLG_NULL 73 4 @@ -41,10 +36,10 @@ LIST F_TIPOCF 9 BEGIN PROMPT 4 3 "Tipo " HELP "Tipo del conto da visualizzare" - FLAGS "U" - ITEM " |Conto" MESSAGE HIDE,2@|HIDE,3@|SHOW,1@ - ITEM "C|Cliente" MESSAGE HIDE,1@|HIDE,3@|SHOW,2@ - ITEM "F|Fornitore" MESSAGE HIDE,1@|HIDE,2@|SHOW,3@ + ITEM " |Conto" MESSAGE HIDE,2@|HIDE,3@|SHOW,1@|ENABLE,F_DESCR_CONTO + ITEM "C|Cliente" MESSAGE HIDE,1@|HIDE,3@|SHOW,2@|ENABLE,F_DESCR_CLIENTE + ITEM "F|Fornitore" MESSAGE HIDE,1@|HIDE,2@|SHOW,3@|ENABLE,F_DESCR_FORN + FIELD TMCF KEY 1 END @@ -53,17 +48,17 @@ BEGIN PROMPT 26 3 "Gruppo " HELP "Codice del conto da visualizzare" WARNING "Gruppo inesistente" - USE LF_PCON KEY 1 SELECT CONTO="" - FIELD LF_SALDI->GRUPPO + FLAGS "R" KEY 1 + FIELD GRUPPO + USE LF_PCON KEY 1 SELECT CONTO="" INPUT GRUPPO F_GRUPPO DISPLAY "Gruppo" GRUPPO DISPLAY "Descrizione@50" DESCR OUTPUT F_GRUPPO GRUPPO OUTPUT F_DESCR_CONTO DESCR - CHECKTYPE NORMAL + CHECKTYPE REQUIRED VALIDATE CHECK_FIELD F_GRUPPO - FLAGS "R" END NUMBER F_CONTO 3 @@ -72,7 +67,8 @@ BEGIN HELP "Codice del conto da visualizzare" WARNING "Conto inesistente" USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="") - FIELD LF_SALDI->CONTO + FIELD CONTO + FLAGS "R" KEY 1 INPUT GRUPPO F_GRUPPO INPUT CONTO F_CONTO @@ -84,7 +80,6 @@ BEGIN OUTPUT F_GRUPPO GRUPPO OUTPUT F_CONTO CONTO OUTPUT F_DESCR_CONTO DESCR - FLAGS "R" CHECKTYPE NORMAL VALIDATE CHECK_FIELD F_CONTO WARNING "Conto inesistente o mancante" @@ -94,9 +89,9 @@ NUMBER F_SOTTOCONTO 6 BEGIN PROMPT 54 3 "Sottoconto " HELP "Codice del conto da visualizzare" - WARNING "Sottoconto inesistente" USE LF_PCON SELECT SOTTOCONTO!="" - FIELD LF_SALDI->SOTTOCONTO + FIELD SOTTOCONTO + FLAGS "R" KEY 1 INPUT GRUPPO F_GRUPPO INPUT CONTO F_CONTO @@ -109,19 +104,19 @@ BEGIN OUTPUT F_CONTO CONTO OUTPUT F_SOTTOCONTO SOTTOCONTO OUTPUT F_DESCR_CONTO DESCR - FLAGS "R" CHECKTYPE NORMAL VALIDATE CHECK_FIELD F_SOTTOCONTO - GROUP 1 WARNING "Conto inesistente" + GROUP 1 END NUMBER F_SOTTOC_CLIENTE 6 BEGIN PROMPT 54 3 "Cliente " HELP "Codice del conto da visualizzare" - WARNING "Cliente inesistente" - FIELD LF_SALDI->SOTTOCONTO + FLAGS "R" + KEY 1 + FIELD LF_CLIFO->CODCF USE LF_CLIFO INPUT TIPOCF "C" INPUT CODCF F_SOTTOC_CLIENTE @@ -131,10 +126,8 @@ BEGIN DISPLAY "Conto" CONTO OUTPUT F_SOTTOC_CLIENTE CODCF OUTPUT F_DESCR_CLIENTE RAGSOC - FLAGS "R" - VALIDATE CHECK_FIELD F_SOTTOC_CLIENTE CHECKTYPE NORMAL - KEY 1 + VALIDATE CHECK_FIELD F_SOTTOC_CLIENTE WARNING "Cliente inesistente" GROUP 2 END @@ -143,8 +136,8 @@ NUMBER F_SOTTOC_FORN 6 BEGIN PROMPT 54 3 "Fornitore " HELP "Codice del conto da visualizzare" - WARNING "Fornitore inesistente" - FIELD LF_SALDI->SOTTOCONTO + FLAGS "R" + KEY 1 USE LF_CLIFO INPUT TIPOCF "F" INPUT CODCF F_SOTTOC_FORN @@ -154,10 +147,8 @@ BEGIN DISPLAY "Conto" CONTO OUTPUT F_SOTTOC_FORN CODCF OUTPUT F_DESCR_FORN RAGSOC - VALIDATE CHECK_FIELD F_SOTTOC_FORN - FLAGS "R" CHECKTYPE NORMAL - KEY 1 + VALIDATE CHECK_FIELD F_SOTTOC_FORN WARNING "Fornitore inesistente" GROUP 3 END @@ -166,13 +157,17 @@ STRING F_DESCR_CONTO 50 BEGIN PROMPT 4 4 "Descrizione " HELP "Descrizione del conto da visualizzare" + FIELD DESCR USE LF_PCON KEY 2 INPUT DESCR F_DESCR_CONTO DISPLAY "Descrizione@50" DESCR DISPLAY "Gruppo" GRUPPO DISPLAY "Conto" CONTO DISPLAY "Sottoconto" SOTTOCONTO - COPY OUTPUT F_SOTTOCONTO + OUTPUT F_GRUPPO GRUPPO + OUTPUT F_CONTO CONTO + OUTPUT F_SOTTOCONTO SOTTOCONTO + OUTPUT F_DESCR_CONTO DESCR CHECKTYPE REQUIRED KEY 2 GROUP 1 @@ -182,6 +177,7 @@ STRING F_DESCR_CLIENTE 50 BEGIN PROMPT 4 4 "Cliente " HELP "Ragione sociale del cliente da visualizzare" + KEY 4 USE LF_CLIFO KEY 2 INPUT TIPOCF "C" INPUT RAGSOC F_DESCR_CLIENTE @@ -190,7 +186,6 @@ BEGIN DISPLAY "Conto" CONTO DISPLAY "Codice" CODCF COPY OUTPUT F_SOTTOC_CLIENTE - KEY 3 CHECKTYPE REQUIRED GROUP 2 END @@ -199,6 +194,7 @@ STRING F_DESCR_FORN 50 BEGIN PROMPT 4 4 "Fornitore " HELP "Ragione sociale del fornitore da visualizzare" + KEY 4 USE LF_CLIFO KEY 2 INPUT TIPOCF "F" INPUT RAGSOC F_DESCR_FORN @@ -207,7 +203,6 @@ BEGIN DISPLAY "Conto" CONTO DISPLAY "Codice" CODCF COPY OUTPUT F_SOTTOC_FORN - KEY 4 CHECKTYPE REQUIRED GROUP 3 END