From f29414712e0f4d8348e5bbf88e219b5f13efb933 Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 13 Oct 1994 08:04:02 +0000 Subject: [PATCH] Aggiustato comportamento selezione ditte della liquidazione git-svn-id: svn://10.65.10.50/trunk@361 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg0500.cpp | 11 ++- cg/cg4300.cpp | 194 ++++++++++++++++++++++++++----------------------- cg/cg4300.h | 4 + cg/cg4300a.uml | 17 +++-- cg/cg4301.cpp | 4 +- cg/cg4302.cpp | 18 ++--- 6 files changed, 136 insertions(+), 112 deletions(-) diff --git a/cg/cg0500.cpp b/cg/cg0500.cpp index ba25070e6..f04caca00 100755 --- a/cg/cg0500.cpp +++ b/cg/cg0500.cpp @@ -383,7 +383,7 @@ bool CG0500_application::tipodoc_hndl (TMask_field& f, KEY k) } // Ma davvero esiste il registro ? - TString16 codreg=f.mask().get(F_COD_REG); + TString16 codreg(f.mask().get(F_COD_REG)); if (codreg.not_empty()) { TRegistro registro(codreg, anno_iva()); @@ -404,7 +404,8 @@ bool CG0500_application::tipomov_hndl (TMask_field& f, KEY k) if (k == K_SPACE) { app()->MostraCampi(f); - if (f.focusdirty()) app()->fill_sheet(f.mask()); + if (f.focusdirty()) + app()->fill_sheet(f.mask()); } return TRUE; } @@ -513,7 +514,8 @@ bool CG0500_application::cod_reg_hndl (TMask_field& f, KEY k) i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica const TipoIVA ri = grog.iva(); if (i == iva_generica) i = ri; - if (i != ri) { + if (i != ri) + { return f.warning_box("Tipo documento incompatibile con tipo registro"); i = iva_errata; } @@ -856,7 +858,8 @@ void CG0500_application::array2sheet() } else if (!r->empty_items()) { - if (dfi.not_empty()) { + if (dfi.not_empty()) + { update = TRUE; riga.add(dfi,0); } diff --git a/cg/cg4300.cpp b/cg/cg4300.cpp index 41b5e4c99..469d8850a 100755 --- a/cg/cg4300.cpp +++ b/cg/cg4300.cpp @@ -7,6 +7,9 @@ #include "cg4300.h" #include "cg4300a.h" +inline CG4300_App& app() +{ return (CG4300_App&)main_app(); } + void CG4300_App::user_create() { TProgind pnd(3,"Preparazione archivi\nPrego attendere", @@ -201,27 +204,66 @@ bool CG4300_App::set_print(int n) return FALSE; } +long CG4300_App::select_firm_range(long from, long to, wht freq) +{ + if (to == 0) to = 99999L; + + for (int i = 0; i < _nomiditte.items(); i++) + { + TToken_string& d = (TToken_string&)_nomiditte[i]; + const char vers = d.get_char(2); + if ((freq == mnt && vers == 'T') || (freq == quarter && vers == 'M')) + continue; + const long cod = d.get_long(0); + if (cod >= from && cod <= to) + _selected.set(i); + } + + return _selected.ones(); +} + + +bool CG4300_App::to_ditta_handler(TMask_field& f, KEY key) +{ + if (key == K_TAB && f.focusdirty() || key == K_ENTER) + { + TMask& m = f.mask(); + const long from = m.get_long(CG43_FLD_DFR); + const long to = m.get_long(CG43_FLD_DTO); + const wht freq = (wht)m.get_int(CG43_RDB_VERS); + if (from > 0 || to > 0) + { + const long sel = app().select_firm_range(from, to, freq); + m.set(CG43_FLD_SELECTED, sel); + m.reset(CG43_FLD_DFR); + m.reset(CG43_FLD_DTO); + } + } + return TRUE; +} + bool CG4300_App::set_liquidazione() { TMask m("cg4300a.msk"); + m.set_handler(CG43_FLD_DTO, to_ditta_handler); m.field(CG43_FLD_SELECTED).set("0"); _selected.reset(); - TBit_array selected = _selected; KEY k; // stampa abilitata per default m.set(CG43_CHK_STAMPA,"X"); - do { + do + { k = m.run(); if (k == K_ESC) break; - _what = (wht)atoi(m.get(CG43_RDB_VERS)); - _month = atoi(m.get(CG43_LST_MESE)); + _what = (wht)m.get_int(CG43_RDB_VERS); + _month = m.get_int(CG43_LST_MESE); if (_what == all) { @@ -230,7 +272,7 @@ bool CG4300_App::set_liquidazione() _what = mnt; } else if (_what == quarter) - _month = atoi(m.get(CG43_LST_TRIM)); + _month = m.get_int(CG43_LST_TRIM); _year = m.get(CG43_FLD_ANNO); _date = m.get(CG43_FLD_DATA); @@ -240,109 +282,81 @@ bool CG4300_App::set_liquidazione() if (_isprint) printer().setdate(_date); - TString from = m.get(CG43_FLD_DFR); - TString to = m.get(CG43_FLD_DTO); - - - m.field(CG43_FLD_DFR).set(""); - m.field(CG43_FLD_DTO).set(""); - // ------------------------------------------------ m.first_focus(k); - long j, cnt, chk; int i; + int i; + - if (!from.empty() || !to.empty()) - { - chk = 0l; - if (from.empty()) from = "0"; - if (to.empty()) to = "999999"; - for (i = 0; i < _nomiditte.items(); i++) - { - TToken_string& d = (TToken_string&) _nomiditte[i]; - TString16 cod = d.get(0); - TString16 vers = d.get(2); - if ((_what == mnt && vers == "T") || - (_what == quarter && vers == "M")) - continue; - - if (atol(cod) >= atol(from) && atol(cod) <= atol(to)) - _selected.set(chk++); - } - } - - - switch(k) { case DLG_SELECT: // build sheet - _ditte->destroy(); chk = 0l; + _ditte->destroy(); for (i = 0; i < _nomiditte.items(); i++) { - if (_selected[i]) continue; - TToken_string& d = (TToken_string&) _nomiditte[i]; - TString16 cod = d.get(0); - TString16 vers = d.get(2); - if ((_what == mnt && vers == "T") || - (_what == quarter && vers == "M")) - continue; - - _ditte->add(d); - - // check - if (!from.empty() || !to.empty()) - { - if (from.empty()) from = "0"; - if (to.empty()) to = "999999"; - if (atol(cod) >= atol(from) && atol(cod) <= atol(to)) - { - _ditte->check(chk); - _selected.set(chk++); - } - } + TToken_string* d = new TToken_string(64); + *d = (TToken_string&)_nomiditte[i]; + const char vers = d->get_char(2); + + if ((_what == mnt && vers == 'T') || (_what == quarter && vers == 'M')) + continue; + + d->insert(" |", 0); + const long pos = _ditte->add(d); + if (_selected[i]) _ditte->check(pos); } - // seleziona e aggiungi alle gia' selezionate - if (_ditte->run() == K_ENTER) - { - cnt = 0; - for (j = 0l; j < _n_ditte; j++) + // seleziona e aggiungi alle gia' selezionate + if (_ditte->run() == K_ENTER) { - if (_selected[j]) continue; - if (_ditte->checked(cnt++)) - selected.set(j); + for (long j = 0l; j < _ditte->items(); j++) + { + const long cod = _ditte->row(j).get_long(1); + for (int d = 0; d < _nomiditte.items(); d++) + { + const long firm = ((TToken_string&)_nomiditte[d]).get_long(0); + if (firm == cod) + { + _selected.set(d, _ditte->checked(j)); + break; + } + } +#ifdef DBG + if (d >= _nomiditte.items()) + yesnofatal_box("Non ritrovo piu' la ditta %ld", cod); +#endif + } } - _selected |= selected; - selected.reset(); + m.set(CG43_FLD_SELECTED, _selected.ones()); + break; + case CG43_BUT_ANN: + _selected.reset(); + m.reset(CG43_FLD_SELECTED); + break; + /* + case CG43_BUT_CHK: + { + _ditte->destroy(); + for (i = 0; i < _nomiditte.items(); i++) + { + TToken_string& d = (TToken_string&)_nomiditte[i]; + _ditte->add(d); + if (_selected[i]) _ditte->check(i); + } + _ditte->disable_check(); + _ditte->run(); + _ditte->enable_check(); + } + break; + */ } - m.field(CG43_FLD_SELECTED).set(format("%ld",(long)_selected.ones())); - break; - case CG43_BUT_ANN: - _selected.reset(); - m.field(CG43_FLD_SELECTED).set("0"); - break; - case CG43_BUT_CHK: - { - _ditte->destroy(); - for (i = 0; i < _nomiditte.items(); i++) - { - TToken_string d = (const char*)((TToken_string&)_nomiditte[i]); - _ditte->add(d); - if (_selected[i]) _ditte->check(i); - } - _ditte->disable_check(); - _ditte->run(); - _ditte->enable_check(); - } - break; - } -} -while (k != K_ENTER && k != K_ESC); + } + while (k != K_ENTER && k != K_ESC); -return k == K_ENTER; + return k == K_ENTER; } int cg4300(int argc, char* argv[]) diff --git a/cg/cg4300.h b/cg/cg4300.h index 74e8c1fba..8ba18d4ac 100755 --- a/cg/cg4300.h +++ b/cg/cg4300.h @@ -249,6 +249,10 @@ class CG4300_App : public TPrintapp TRecfield* _del_mese; TRecfield* _del_tipo; +protected: + long select_firm_range(long from, long to, wht freq); + static bool to_ditta_handler(TMask_field& f, KEY key); + public: virtual void user_create(); diff --git a/cg/cg4300a.uml b/cg/cg4300a.uml index b5e52a78d..acc532ae2 100755 --- a/cg/cg4300a.uml +++ b/cg/cg4300a.uml @@ -21,10 +21,11 @@ END NUMBER CG43_FLD_DFR 6 BEGIN PROMPT 24 2 "Da codice " + FLAGS "UR" HELP "Immettere codice ditta di partenza per la selezione" USE LF_NDITTE KEY 1 DISPLAY "Codice" CODDITTA - DISPLAY "Ragione sociale " RAGSOC + DISPLAY "Ragione sociale@50" RAGSOC DISPLAY "Vers" FREQVIVA OUTPUT CG43_FLD_DFR CODDITTA END @@ -32,10 +33,11 @@ END NUMBER CG43_FLD_DTO 6 BEGIN PROMPT 24 3 "A codice " + FLAGS "UR" HELP "Immettere codice ditta di fine selezione" COPY USE CG43_FLD_DFR DISPLAY "Codice" CODDITTA - DISPLAY "Ragione sociale " RAGSOC + DISPLAY "Ragione sociale@50" RAGSOC DISPLAY "Vers" FREQVIVA OUTPUT CG43_FLD_DTO CODDITTA END @@ -46,24 +48,25 @@ BEGIN FLAGS "D" END -BUTTON DLG_SELECT 8 +BUTTON DLG_SELECT 10 2 BEGIN - PROMPT 50 2 "Selezione" + PROMPT 48 2 "~Selezione" MESSAGE EXIT, DLG_SELECT END -BUTTON CG43_BUT_ANN 8 +BUTTON CG43_BUT_ANN 10 BEGIN - PROMPT 50 3 "Annulla" + PROMPT 48 4 "A~zzera" MESSAGE EXIT,CG43_BUT_ANN END +/* BUTTON CG43_BUT_CHK 8 BEGIN PROMPT 50 4 "Verifica" MESSAGE EXIT,CG43_BUT_CHK END - +*/ NUMBER CG43_FLD_ANNO 4 BEGIN diff --git a/cg/cg4301.cpp b/cg/cg4301.cpp index 5e085b014..de2d338c8 100755 --- a/cg/cg4301.cpp +++ b/cg/cg4301.cpp @@ -75,8 +75,8 @@ bool CG4300_App::update_firm(int month, bool recalc) { do { - TString codatt = _nditte->curr(LF_ATTIV).get("CODATT"); - TString desatt = _nditte->curr(LF_ATTIV).get("DESCR"); + TString16 codatt = _nditte->curr(LF_ATTIV).get("CODATT"); + TString80 desatt = _nditte->curr(LF_ATTIV).get("DESCR"); // attivita' mista: ce ne sono in realta' due _mixed = _nditte->curr().get_bool("FLIVA11Q"); diff --git a/cg/cg4302.cpp b/cg/cg4302.cpp index ed5913203..d2849e36d 100755 --- a/cg/cg4302.cpp +++ b/cg/cg4302.cpp @@ -316,19 +316,19 @@ bool CG4300_App::look_del(int month, int type, bool create) bool CG4300_App::look_lia(bool create, int year) { if (year == 0) year = atoi(_year); - TString y(4); y << year; + TString16 y; y << year; _lia->zero(); _lia->put("CODTAB", y); _lia->read(); - bool ok = _lia->good(); + const bool ok = _lia->good(); if (!ok && create) - { - _lia->zero(); - _lia->put("CODTAB", y); - _lia->put("S7", _nditte->curr().get("FREQVIVA")); - _lia->write(); - } + { + _lia->zero(); + _lia->put("CODTAB", y); + _lia->put("S7", _nditte->curr().get("FREQVIVA")); + _lia->write(); + } return ok; } @@ -351,7 +351,7 @@ real CG4300_App::credito_prec(int month) if (_lia->status() == NOERR) { c = _lia->get_real("R0"); - if (!c.iszero()) return c; + if (!c.is_zero()) return c; } int yr = atoi(_year) - 1; _lim->zero();