From fd53008af7a14902b695bfbc609462969d64e229 Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 17 Dec 1996 15:10:50 +0000 Subject: [PATCH] cg2102.cpp Resa piu' robusta la gestione degli sheet in visione dei cambiamenti sul messaggio K_INS cg3100.cpp Aggiustamenti infimi cg3600.cpp COrretta marea di errori e ottimizzata espansione delle righe cg3600a.uml Aggiunti groupbox cg3600b.uml Ristretta colonna della causale cglib01.cpp COrretta gestione progind git-svn-id: svn://10.65.10.50/trunk@4010 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg2102.cpp | 8 +- cg/cg3100.cpp | 1 - cg/cg3600.cpp | 350 +++++++++++++++++++++++++++++-------------------- cg/cg3600a.uml | 176 +++++++++++++++---------- cg/cg3600b.uml | 8 +- cg/cglib01.cpp | 13 +- 6 files changed, 332 insertions(+), 224 deletions(-) diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index a8ee8c43d..53adeb8c4 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -840,6 +840,9 @@ bool TPrimanota_application::cg_notify(TSheet_field& cg, int r, KEY k) return TRUE; // Ritorna subito, altrimenti crea riga vuota } + if (k == K_INS) // La riga non esiste ancora + return TRUE; + TToken_string& row = cg.row(r); const char tipo = row_type(row); // Tipo della riga in esame @@ -1216,7 +1219,10 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k) TPrimanota_application& a = app(); if (a._as400) return TRUE; - + + if (k = K_INS || k == K_CTRL+K_DEL) + return TRUE; + TToken_string& row = iva.row(r); const TCausale& cau = a.causale(); diff --git a/cg/cg3100.cpp b/cg/cg3100.cpp index 075b1c5a6..65893f731 100755 --- a/cg/cg3100.cpp +++ b/cg/cg3100.cpp @@ -22,7 +22,6 @@ #include #include "cglib.h" -//#include "cglib04.h" #include "cglib03.h" #include "cg2103.h" diff --git a/cg/cg3600.cpp b/cg/cg3600.cpp index 8e7ec624e..45dbb0bc6 100755 --- a/cg/cg3600.cpp +++ b/cg/cg3600.cpp @@ -56,7 +56,6 @@ protected: protected: TList_object* detach_lstobj(long index); TList_object* lstobjptr(long index) const; - void change_step(long step); public: long items() const { return _items; } @@ -76,7 +75,8 @@ public: TObject* detach(long pos); bool remove(long pos); - void choose_step(long expected_size); // Sceglie il passo per gli elemnti + void change_step(long step); // Forza il passo per gli elementi + long choose_step(long expected_size); // Sceglie il passo per gli elemnti TList(long expected_size = 128L); virtual ~TList(); @@ -175,10 +175,11 @@ void TList::change_step(long step) } } -void TList::choose_step(long expected_size) +long TList::choose_step(long expected_size) { - long step = expected_size / MAX_SKIP + 1; + const long step = expected_size / MAX_SKIP + 1; change_step(step); + return step; } long TList::insert(TObject* obj, long index) @@ -318,8 +319,8 @@ protected: TImporto& si, TImporto& da, TImporto& av, TImporto& sf) const; public: - void read(int g, int c, long s, int esercizio); - void read(const TBill& b, int esercizio); + void read(int g, int c, long s, int esercizio, bool ignora_movap = FALSE); + void read(const TBill& b, int esercizio, bool ignora_movap = FALSE); void reread(); const TImporto& saldo_iniziale() const; @@ -331,8 +332,8 @@ public: TImporto saldo_finale_chiusura() const; TBalance(); - TBalance(int g, int c, long s, int esercizio); - TBalance(const TBill& b, int esercizio); + TBalance(int g, int c, long s, int esercizio, bool ignora_movap = FALSE); + TBalance(const TBill& b, int esercizio, bool ignora_movap = FALSE); virtual ~TBalance() { } }; @@ -340,14 +341,14 @@ TBalance::TBalance() { } -TBalance::TBalance(int g, int c, long s, int esercizio) +TBalance::TBalance(int g, int c, long s, int esercizio, bool ignora_movap) { - read(g, c, s, esercizio); + read(g, c, s, esercizio, ignora_movap); } -TBalance::TBalance(const TBill& b, int esercizio) +TBalance::TBalance(const TBill& b, int esercizio, bool ignora_movap) { - read(b, esercizio); + read(b, esercizio, ignora_movap); } bool TBalance::find(const TBill& b, int esercizio, @@ -379,13 +380,13 @@ bool TBalance::find(const TBill& b, int esercizio, } -void TBalance::read(int gruppo, int conto, long sottoconto, int esercizio) +void TBalance::read(int gruppo, int conto, long sottoconto, int esercizio, bool ignora_movap) { const TBill zio(gruppo, conto, sottoconto); - read(zio, esercizio); + read(zio, esercizio, ignora_movap); } -void TBalance::read(const TBill& b, int esercizio) +void TBalance::read(const TBill& b, int esercizio, bool ignora_movap) { TImporto si, sf, pd, pa; @@ -416,6 +417,11 @@ void TBalance::read(const TBill& b, int esercizio) } } } + else + { + if (ignora_movap) + _saldo_ini.set('D', ZERO); + } } const TImporto& TBalance::saldo_iniziale() const @@ -553,7 +559,6 @@ public: long last(tipo_riga_mastrino tipo = riga_mastrino) const; void destroy() { _riga.destroy(); } - int esercizio() const { return _esercizio; } const real& progressivo_dare_iniziale() const { return _pdare_ini; } const real& progressivo_avere_iniziale() const { return _pavere_ini; } @@ -567,6 +572,11 @@ public: real progressivo_avere_periodo() const { return _pavere_ini + _pavere_per; } TImporto saldo_periodo() const; + int esercizio() const { return _esercizio; } + const TDate& inizio_periodo() const { return _da_data; } + const TDate& fine_periodo() const { return _a_data; } + void periodo(TDate& dd, TDate& ad) const { dd = _da_data; ad = _a_data; } + bool expandable(long rec) const; bool expand(long rec); bool collapse(long rec); @@ -671,10 +681,8 @@ void TMastrino::read(const TBill& conto, _da_caus = dc; _a_caus = ac.blank() ? "zzz" : ac; // Se vuota sceglie la massima causale - const TDate& min_data_reg = _da_data; - TDate max_data_reg; - - long num_giorni = _a_data - _da_data + 1; + TDate max_data_reg = _a_data; + long num_giorni = _a_data - inizio_esercizio + 1; if (_esercizio > 0) { const int succ = esercizi.next(ae); @@ -686,8 +694,6 @@ void TMastrino::read(const TBill& conto, else max_data_reg = esercizi[ae].fine(); } - else - max_data_reg = _a_data; TString caption(80); caption.format("Caricamento mastrino %03d.%03d.%06ld", @@ -695,7 +701,9 @@ void TMastrino::read(const TBill& conto, TProgind pi(num_giorni, caption, FALSE, TRUE, 48); // Stima dimensione mastrino - _riga.choose_step(num_giorni); + const long step = _riga.choose_step(num_giorni); + if (step < 8) + _riga.change_step(8); // Valori dei saldi fino alla data di inizio stampa: // Vengono inizializzati con i saldi iniziali dell'esercizio, @@ -703,7 +711,7 @@ void TMastrino::read(const TBill& conto, // vanno dall'inizio dell'esercizio al giorno precedente // la data di inizio stampa - const TBalance saldo(_conto, ae); + const TBalance saldo(_conto, ae, TRUE); _pdare_ini = saldo.progressivo_dare_iniziale(); _pavere_ini = saldo.progressivo_avere_iniziale(); _pdare_fin = saldo.progressivo_dare_finale(); @@ -716,7 +724,7 @@ void TMastrino::read(const TBill& conto, _pdare_per = _pavere_per = ZERO; conto.put(rmov_rec); - rmov_rec.put(RMV_DATAREG, min_data_reg); + rmov_rec.put(RMV_DATAREG, inizio_esercizio); const TRecfield rmov_datareg (rmov_rec, RMV_DATAREG); const TRecfield rmov_numreg (rmov_rec, RMV_NUMREG); @@ -754,11 +762,11 @@ void TMastrino::read(const TBill& conto, num_rec++; if ((num_rec & 0x7F) == 0) { - const long sec = (clock() - clock_start) / CLOCKS_PER_SEC; - if (sec > 0) + const double sec = (clock() - clock_start) / CLOCKS_PER_SEC; + if (sec > 0.0) { TString80 msg; - msg.format("%ld records at %ld rec/sec", num_rec, num_rec / sec); + msg.format("%ld records at %ld rec/sec", num_rec, long(num_rec/sec)); pi.set_text(msg); } } @@ -772,21 +780,24 @@ void TMastrino::read(const TBill& conto, const TDate data_corrente = _esercizio <= 0 ? data_reg : (TDate)mov_datacomp; if (data_corrente > _a_data) continue; + + // Aggiorna la barra solo una volta al giorno + if (data_reg > ultimo_giorno) + { + const long giorno = data_reg - inizio_esercizio + 1; + pi.setstatus(giorno); + ultimo_giorno = data_reg; + } const char sezione = *((const char*)rmov_sezione); const real importo((const char*)rmov_importo); if (data_corrente < _da_data) { - if (data_corrente >= inizio_esercizio) - { - if (sezione == 'D') - _pdare_ini += importo; - else - _pavere_ini += importo; - } - else - continue; + if (sezione == 'D') + _pdare_ini += importo; + else + _pavere_ini += importo; } else { @@ -807,13 +818,6 @@ void TMastrino::read(const TBill& conto, rmov().recno(), mov().recno(), _pdare_per, _pavere_per, data_reg); _riga.append(r); - - if (data_reg > ultimo_giorno) - { - const long giorno = data_reg - min_data_reg + 1; - pi.setstatus(giorno); - ultimo_giorno = data_reg; - } } } @@ -878,52 +882,67 @@ bool TMastrino::expandable(long rec) const return e; } +// Genera le righe di contropartita di una riga del mastrino bool TMastrino::expand(long rec) { bool ok = expandable(rec); if (ok) { - const TRectype& head = testata(rec); - const long numreg = head.get_long(MOV_NUMREG); + const TRectype& head = testata(rec); // Testata movimento + const long numreg = head.get_long(RMV_NUMREG); // Numero di registrazione + const int numrig = riga(rec).get_int(RMV_NUMRIG); // Numero riga contabile + const TDate datareg = head.get(MOV_DATAREG); // Data di registrazione - rmov().setkey(1); - TRectype& curr = rmov().curr(); - curr.zero(); - curr.put(RMV_NUMREG, numreg); - for (int err = rmov().read(_isgteq); err == NOERR; err = rmov().next()) + rmov().setkey(1); // Usa chiave NUMREG+NUMRIG + TRectype& curr = rmov().curr(); // Record corrente + + const TRecfield rnumreg (curr, RMV_NUMREG); // Numero di registrazione corrente + const TRecfield rnumrig (curr, RMV_NUMRIG); // Numero di riga corrente + const TRecfield rsezione(curr, RMV_SEZIONE); // Sezione Dare/Avere + const TRecfield rimporto(curr, RMV_IMPORTO); // Importo della riga + + int err = NOERR; + if (numrig != 1) // Se non e' gia' posizionato grazie a riga(rec) { - if (curr.get_long(RMV_NUMREG) != numreg) + curr.zero(); // Azzera record corrente + curr.put(RMV_NUMREG, numreg); // Inizializza la chiave parziale + err = rmov().read(_isgteq); // Cerca la prima riga del movimento + } + for (; err == NOERR; err = rmov().next()) // Scandisce righe movimento + { + if (numreg != (long)rnumreg) // Controlla validita' numero break; - - const TBill bill(curr, TRUE); // Legge il conto di contropartita - if (bill == _conto) + + if (numrig != (int)rnumrig) // Ignora la riga gia' presente { - real dare, avere; - if (curr.get_char(RMV_SEZIONE) == 'D') - dare = curr.get_real(RMV_IMPORTO); + real dare, avere; // Costruisce importo della riga + if (*(const char*)rsezione == 'D') + dare = rimporto; else - avere = curr.get_real(RMV_IMPORTO); - - const TDate data(head.get(MOV_DATAREG)); - + avere = rimporto; + // Aggiunge una riga di contropartita al mastrino TRiga_mastrino* r = new TRiga_mastrino(riga_contropartita, rmov().recno(), mov().recno(), - dare, avere, data); - _riga.append(r, rec); + dare, avere, datareg); + _riga.append(r, rec++); } } } return ok; } +// Elimina le righe di contropartita di una riga del mastrino bool TMastrino::collapse(long rec) -{ - if (row(rec).tipo() != riga_mastrino) - rec = pred(rec, riga_mastrino); - bool ok = !expandable(rec); - if (ok) +{ + bool ok = TRUE; // Posso eliminare? + if (row(rec).tipo() != riga_mastrino) // Se non sono su una riga mastrino ... + rec = pred(rec, riga_mastrino); // ... mi sposto sulla precedente + else + ok = !expandable(rec); // Controlla che sia possibile + + if (ok) // Posso effetivamente procedere { - rec++; + rec++; // Elimino ogni riga contropartita successiva while (rec < items() && row(rec).tipo() != riga_mastrino) _riga.remove(rec); } @@ -936,13 +955,14 @@ bool TMastrino::collapse(long rec) class TGrid_control; -class TGrid_cell : public TObject + +class TGrid_cell : public TFixed_string { XI_EVENT* _xiev; public: - void set(const char* txt); - void set(long num); + TString& set(const char* txt); + TString& set(long num); void set_icon(int id); void show_button(bool on = TRUE); void hide_button() { show_button(FALSE); } @@ -951,10 +971,11 @@ public: void set_colors(COLOR back, COLOR fore); short get_column() const { return _xiev->v.cell_request.col_nbr; } - short get_size() const { return _xiev->v.cell_request.len; } - char* get_buffer() { return _xiev->v.cell_request.s; } + + TString& operator = (const char* str) { return set(str); } + TString& operator = (const TString& str) { return set(str); } - TGrid_cell(XI_EVENT* xiev) : _xiev(xiev) { } + TGrid_cell(XI_EVENT* xiev); virtual ~TGrid_cell() { } }; @@ -1178,7 +1199,7 @@ TGrid_control::TGrid_control( l->movable_columns = TRUE; l->fixed_columns = fixed_columns; l->max_lines_in_cell = lines_in_cell; - l->scroll_bar = TRUE; + l->scroll_bar = TRUE; l->scroll_bar_button = TRUE; l->white_space_color = MASK_DARK_COLOR; l->rule_color = MASK_DARK_COLOR; @@ -1533,8 +1554,13 @@ bool TGrid_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev) } else { - if (cell.get_size() > 2) + if (cell.size() > 2) + { cell.set(rec+1); + // Setto il colore del testo altrimenti verrebbe grigio: + // non uso la set_color perche' ignora NORMAL_COLOR + xiev->v.cell_request.color = NORMAL_COLOR; + } } } else @@ -1745,33 +1771,31 @@ void TGrid_control::save_columns_order() const // TGrid_cell /////////////////////////////////////////////////////////// +TGrid_cell::TGrid_cell(XI_EVENT* xiev) + : TFixed_string(xiev->v.cell_request.s, xiev->v.cell_request.len), + _xiev(xiev) +{ } + + // Setta il testo di una cella (Mai piu' testo troppo lungo!) // Se c'e' gia' un'icona la elimina -void TGrid_cell::set(const char* txt) -{ - char* str = _xiev->v.cell_request.s; - if (txt) - { - const short& max = _xiev->v.cell_request.len; - strncpy(str, txt, max); - str[max-1] = '\0'; - } - else - str[0] = '\0'; - - if (str[0]) +TString& TGrid_cell::set(const char* txt) +{ + strncpy(txt, size()); + if (not_empty()) { int& icon = _xiev->v.cell_request.icon_rid; if (icon) icon = 0; } + return *this; } -void TGrid_cell::set(long num) +TString& TGrid_cell::set(long num) { char buff[16]; sprintf(buff, "%ld", num); - set(buff); + return set(buff); } // Setta l'icona di una cella @@ -2128,6 +2152,8 @@ HIDDEN void set_imp(TMask_field& f, const TImporto& imp) str << ' ' << imp.sezione(); f.set(str); } + else + f.reset(); } void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell) @@ -2140,9 +2166,8 @@ void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell) if (riga.tipo() == riga_mastrino) { const TRectype& mov = _mastrino.testata(rec); - TFixed_string text(cell.get_buffer(), cell.get_size()); - text = riga.data().string(); - text << ' ' << mov.get(MOV_DATACOMP); + cell = riga.data().string(); + cell << ' ' << mov.get(MOV_DATADOC); } break; case 102: @@ -2151,7 +2176,7 @@ void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell) const TRectype& mov = _mastrino.testata(rec); const int anno = _esercizi.date2esc(riga.data()); const int eser = mov.get_int(MOV_ANNOES); - const comp = anno == eser; + const comp = anno != eser; cell.set_icon(comp ? ICO_CHECK_ON : ICO_CHECK_OFF); } break; @@ -2164,8 +2189,7 @@ void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell) else { const TRectype& rmov = _mastrino.riga(rec); - TFixed_string text(cell.get_buffer(), cell.get_size()); - text.format("%03d.%03d.%06ld", + cell.format("%03d.%03d.%06ld", rmov.get_int(RMV_GRUPPO), rmov.get_int(RMV_CONTO), rmov.get_long(RMV_SOTTOCONTO)); @@ -2175,24 +2199,21 @@ void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell) if (riga.tipo() == riga_mastrino) { const TRectype& mov = _mastrino.testata(rec); - - TFixed_string text(cell.get_buffer(), cell.get_size()); - text = mov.get(MOV_DESCR); - if (text.empty()) + cell.set(mov.get(MOV_DESCR)); + if (cell.empty()) { const TRectype& rmov = _mastrino.riga(rec); - text = rmov.get(RMV_DESCR); + cell.set(rmov.get(RMV_DESCR)); } } else { const TRectype& rmov = _mastrino.riga(rec); - TFixed_string text(cell.get_buffer(), cell.get_size()); - text = rmov.get(RMV_DESCR); - if (text.empty()) + cell.set(rmov.get(RMV_DESCR)); + if (cell.empty()) { const TBill conto(rmov); - text = conto.descrizione(); + cell.set(conto.descrizione()); } } break; @@ -2200,31 +2221,29 @@ void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell) { const TRectype& rmov = _mastrino.riga(rec); if (rmov.get_char(RMV_SEZIONE) == 'D') - cell.set(rmov.get_real(RMV_IMPORTO).string(".")); + cell = rmov.get_real(RMV_IMPORTO).string("."); } break; case 106: { const TRectype& rmov = _mastrino.riga(rec); if (rmov.get_char(RMV_SEZIONE) == 'A') - cell.set(rmov.get_real(RMV_IMPORTO).string(".")); + cell = rmov.get_real(RMV_IMPORTO).string("."); } break; case 107: if (riga.tipo() == riga_mastrino) { const TRectype& mov = _mastrino.testata(rec); - TFixed_string text(cell.get_buffer(), cell.get_size()); - text = mov.get(MOV_NUMDOC); text.left_just(7); - text << ' ' << mov.get(MOV_PROTIVA); + cell = mov.get(MOV_NUMDOC); cell.left_just(7); + cell << ' ' << mov.get(MOV_PROTIVA); } break; case 108: { const TRectype& rmov = _mastrino.riga(rec); - TFixed_string text(cell.get_buffer(), cell.get_size()); - text = rmov.get_real(RMV_IMPORTO).string("."); - text << ' ' << rmov.get(RMV_SEZIONE); + cell = rmov.get_real(RMV_IMPORTO).string("."); + cell << ' ' << rmov.get(RMV_SEZIONE); } break; case 109: @@ -2242,9 +2261,8 @@ void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell) TImporto imp = riga.saldo(); imp += _mastrino.saldo_iniziale(); imp.normalize(); - TFixed_string text(cell.get_buffer(), cell.get_size()); - text = imp.valore().string("."); - text << ' ' << imp.sezione(); + cell = imp.valore().string("."); + cell << ' ' << imp.sezione(); } } break; @@ -2297,15 +2315,35 @@ void TMastrini_grid::on_grid_button() const long last_con = _mastrino.last(riga_contropartita); // Se non esistono contropartite devo espandere le righe const bool expand = last_con < 0; + +#ifdef DBG + const clock_t clock_start = clock(); +#endif + if (expand) - { - for (long n = _mastrino.last(riga_mastrino); - n >= 0; n = _mastrino.pred(n, riga_mastrino)) + { + long step = 0; + for (long n = _mastrino.first(riga_mastrino); + n < _mastrino.items(); n = _mastrino.succ(n, riga_mastrino)) { if (_mastrino.expandable(n)) _mastrino.expand(n); if (pi) - pi->setstatus(total - n); + { + pi->setstatus(++step); +#ifdef DBG + if ((step & 0x7F) == 0) + { + const double sec = (clock() - clock_start) / CLOCKS_PER_SEC; + if (sec > 0.0) + { + TString80 msg; + msg.format("%ld records at %ld rec/sec", step, long(step/sec)); + pi->set_text(msg); + } + } +#endif + } } } else @@ -2380,7 +2418,11 @@ void TMastrini_grid::reread() void TMastrini_grid::update_mask() const { - TMask& gm = mask(); + TMask& gm = mask(); + + gm.set(F_ESERCIZIO, _mastrino.esercizio()); + gm.set(F_DADATA, _mastrino.inizio_periodo()); + gm.set(F_ADATA, _mastrino.fine_periodo()); set_imp(gm.field(F_TOTPRO_SAL), _mastrino.saldo_iniziale()); gm.set(F_TOTPRO_DAR, _mastrino.progressivo_dare_iniziale()); @@ -2602,7 +2644,8 @@ void TGrid_mask::handler(WINDOW win, EVENT* ep) class TQuery_mask : public TMask { -protected: +protected: + static bool esercizio_handler(TMask_field& f, KEY k); static bool data_handler(TMask_field& f, KEY k); static bool find_handler(TMask_field& f, KEY k); @@ -2615,16 +2658,42 @@ public: TQuery_mask::TQuery_mask() : TMask("cg3600a") -{ +{ + set_handler(F_ESERCIZIO, esercizio_handler); set_handler(F_DADATA, data_handler); - set_handler(F_ADATA, data_handler); + set_handler(F_ADATA, data_handler); set_handler(DLG_FINDREC, find_handler); } +bool TQuery_mask::esercizio_handler(TMask_field& f, KEY k) +{ + if (k == K_TAB && f.focusdirty()) + { + TEsercizi_contabili esc; + const int anno = atoi(f.get()); + if (esc.exist(anno)) + { + TMask& m = f.mask(); + TDate dd = m.get(F_DADATA); + if (esc.date2esc(dd) != anno) + m.set(F_DADATA, esc[anno].inizio()); + dd = m.get(F_ADATA); + if (esc.date2esc(dd) != anno) + m.set(F_ADATA, esc[anno].fine()); + } + else + { + if (anno > 0) + return error_box("Esercizio inesistente: %d", anno); + } + } + return TRUE; +} + bool TQuery_mask::data_handler(TMask_field& f, KEY k) { bool ok = TRUE; - if (f.to_check(k)) + if (k == K_ENTER) { const TQuery_mask& qm = (const TQuery_mask&)f.mask(); const TEsercizi_contabili esercizi; @@ -2684,23 +2753,17 @@ void TQuery_mask::do_query(TGrid_mask& gm) const int g = get_int(F_GRUPPO); const int c = get_int(F_CONTO); const long s = get_long((t <= ' ') ? F_SOTTOCONTO : ((t == 'C') ? F_CLIENTE : F_FORNITORE)); - const TBill conto(g, c, s, t); - - const int annoes = get_int(F_ESERCIZIO); - - TDate da_data(get(F_DADATA)); - - TDate a_data(get(F_ADATA)); - - TString da_caus(get(F_DACAUSALE)); - TString a_caus(get(F_ACAUSALE)); - + const int annoes = get_int(F_ESERCIZIO); + const TDate da_data(get(F_DADATA)); + const TDate a_data(get(F_ADATA)); + + const TString& da_caus = get(F_DACAUSALE); + const TString& a_caus = get(F_ACAUSALE); + conto.set(gm, F_GRUPPO, F_CONTO, F_SOTTOCONTO, 0, F_DESSOTTOC); - gm.set(F_ESERCIZIO, annoes); - gm.set(F_DADATA, da_data); - gm.set(F_ADATA, a_data); + gm.grid().read(conto, annoes, da_data, a_data, da_caus, a_caus); gm.run(); @@ -2790,8 +2853,7 @@ bool TMastrini_video::menu(MENU_TAG mt) qm.reset(F_SOTTOCONTO); // Azzera sottoconto qm.reset(F_CLIENTE); // Azzera cliente qm.reset(F_FORNITORE); // Azzera fornitore - qm.reset(F_DACAUSALE); // Azzera causali - qm.reset(F_ACAUSALE); + qm.reset(-5); // Azzera causali key = qm.run(); switch (key) diff --git a/cg/cg3600a.uml b/cg/cg3600a.uml index 46239737c..4dea4dea4 100755 --- a/cg/cg3600a.uml +++ b/cg/cg3600a.uml @@ -20,11 +20,16 @@ END ENDPAGE -PAGE "Mastrini" -1 -1 76 20 +PAGE "Mastrini" -1 -1 78 20 + +GROUPBOX DLG_NULL 76 3 +BEGIN + PROMPT 1 1 "@bDitta corrente" +END NUMBER F_CODDITTA 5 BEGIN - PROMPT 1 1 "Ditta " + PROMPT 2 2 "Codice " FLAGS "DF" USE LF_NDITTE INPUT CODDITTA F_CODDITTA @@ -34,13 +39,19 @@ END STRING F_RAGSOC 50 BEGIN - PROMPT 22 1 "" + PROMPT 23 2 "" FLAGS "D" END +GROUPBOX DLG_NULL 76 6 +BEGIN + PROMPT 1 4 "@bConto del mastrino" + FLAGS "R" +END + LIST F_TIPO 10 BEGIN - PROMPT 1 3 "Tipo " + PROMPT 2 5 "Tipo " ITEM " |Conto" MESSAGE SHOW,1@|HIDE,2@|HIDE,3@ ITEM "C|Cliente" MESSAGE HIDE,1@|SHOW,2@|HIDE,3@ ITEM "F|Fornitore" MESSAGE HIDE,1@|HIDE,2@|SHOW,3@ @@ -48,7 +59,7 @@ END NUMBER F_GRUPPO 3 BEGIN - PROMPT 1 4 "Gruppo " + PROMPT 2 6 "Gruppo " USE LF_PCON SELECT (CONTO="") INPUT GRUPPO F_GRUPPO DISPLAY "Gruppo" GRUPPO @@ -56,23 +67,13 @@ BEGIN OUTPUT F_GRUPPO GRUPPO OUTPUT F_DESGRUPPO DESCR CHECKTYPE REQUIRED -END - -STRING F_DESGRUPPO 50 -BEGIN - PROMPT 22 4 "" - USE LF_PCON KEY 2 SELECT (CONTO="") - INPUT DESCR F_DESGRUPPO - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - COPY OUTPUT F_GRUPPO - CHECKTYPE REQUIRED + WARNING "Gruppo assente" END NUMBER F_CONTO 3 BEGIN - PROMPT 1 5 "Conto " - USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="") + PROMPT 2 7 "Conto " + USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")&&(TMCF==#F_TIPO) INPUT GRUPPO F_GRUPPO INPUT CONTO F_CONTO DISPLAY "Gruppo" GRUPPO @@ -84,23 +85,12 @@ BEGIN OUTPUT F_CONTO CONTO OUTPUT F_DESCONTO DESCR CHECKTYPE REQUIRED -END - -STRING F_DESCONTO 50 -BEGIN - PROMPT 22 5 "" - USE LF_PCON KEY 2 SELECT (CONTO!="")&&(SOTTOCONTO="") - INPUT DESCR F_DESCONTO - COPY DISPLAY F_GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Tipo" TMCF - COPY OUTPUT F_CONTO - CHECKTYPE REQUIRED + WARNING "Conto assente" END NUMBER F_SOTTOCONTO 6 BEGIN - PROMPT 1 6 "Sottoconto " + PROMPT 2 8 "Sottoconto " USE LF_PCON SELECT (SOTTOCONTO!="") COPY INPUT F_CONTO INPUT SOTTOCONTO F_SOTTOCONTO @@ -113,24 +103,13 @@ BEGIN OUTPUT F_SOTTOCONTO SOTTOCONTO OUTPUT F_DESSOTTOC DESCR CHECKTYPE REQUIRED - GROUP 1 4 -END - -STRING F_DESSOTTOC 50 -BEGIN - PROMPT 22 6 "" - USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") - INPUT DESCR F_DESSOTTOC - COPY DISPLAY F_DESCONTO - DISPLAY "Sottoconto" SOTTOCONTO - COPY OUTPUT F_SOTTOCONTO - CHECKTYPE REQUIRED + WARNING "Sottoconto assente" GROUP 1 4 END NUMBER F_CLIENTE 6 BEGIN - PROMPT 1 6 "Cliente " + PROMPT 2 8 "Cliente " USE LF_CLIFO INPUT TIPOCF "C" INPUT CODCF F_CLIENTE @@ -139,25 +118,13 @@ BEGIN OUTPUT F_CLIENTE CODCF OUTPUT F_RAGSOCCLI RAGSOC CHECKTYPE REQUIRED - GROUP 2 4 -END - -STRING F_RAGSOCCLI 50 -BEGIN - PROMPT 22 6 "" - USE LF_CLIFO KEY 2 - INPUT TIPOCF "C" - INPUT RAGSOC F_RAGSOCCLI - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Codice" CODCF - COPY OUTPUT F_CLIENTE - CHECKTYPE REQUIRED + WARNING "Cliente assente" GROUP 2 4 END STRING F_FORNITORE 6 BEGIN - PROMPT 1 6 "Fornitore " + PROMPT 2 8 "Fornitore " USE LF_CLIFO INPUT TIPOCF "F" INPUT CODCF F_FORNITORE @@ -165,49 +132,116 @@ BEGIN OUTPUT F_FORNITORE CODCF OUTPUT F_RAGSOCFOR RAGSOC CHECKTYPE REQUIRED + WARNING "Fornitore assente" GROUP 3 4 END +STRING F_DESGRUPPO 50 +BEGIN + PROMPT 23 6 "" + USE LF_PCON KEY 2 SELECT (CONTO="") + INPUT DESCR F_DESGRUPPO + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + COPY OUTPUT F_GRUPPO + CHECKTYPE REQUIRED + WARNING "Gruppo assente" +END + +STRING F_DESCONTO 50 +BEGIN + PROMPT 23 7 "" + USE LF_PCON KEY 2 SELECT (CONTO!="")&&(SOTTOCONTO="")&&(TMCF==#F_TIPO) + INPUT DESCR F_DESCONTO + COPY DISPLAY F_DESGRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Tipo" TMCF + COPY OUTPUT F_CONTO + CHECKTYPE REQUIRED + WARNING "Conto assente" +END + +STRING F_DESSOTTOC 50 +BEGIN + PROMPT 23 8 "" + USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="") + INPUT DESCR F_DESSOTTOC + COPY DISPLAY F_DESCONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT F_SOTTOCONTO + CHECKTYPE REQUIRED + WARNING "Sottoconto assente" + GROUP 1 4 +END + +STRING F_RAGSOCCLI 50 +BEGIN + PROMPT 23 8 "" + USE LF_CLIFO KEY 2 + INPUT TIPOCF "C" + INPUT RAGSOC F_RAGSOCCLI + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + COPY OUTPUT F_CLIENTE + CHECKTYPE REQUIRED + WARNING "Cliente assente" + GROUP 2 4 +END + STRING F_RAGSOCFOR 50 BEGIN - PROMPT 22 6 "" + PROMPT 23 8 "" USE LF_CLIFO KEY 2 INPUT TIPOCF "F" INPUT RAGSOC F_RAGSOCFOR COPY DISPLAY F_RAGSOCCLI COPY OUTPUT F_FORNITORE CHECKTYPE REQUIRED + WARNING "Fornitore assente" GROUP 3 4 END +GROUPBOX DLG_NULL 76 3 +BEGIN + PROMPT 1 10 "@bPeriodo" + FLAGS "R" +END + NUMBER F_ESERCIZIO 4 BEGIN - PROMPT 1 8 "Esercizio " + PROMPT 2 11 "Esercizio " USE ESC INPUT CODTAB F_ESERCIZIO DISPLAY "Codice" CODTAB DISPLAY "Inizio esercizio" D0 DISPLAY "Fine esercizio" D1 OUTPUT F_ESERCIZIO CODTAB + CHECKTYPE NORMAL ADD NONE END DATE F_DADATA BEGIN - PROMPT 22 8 "Dalla data " + PROMPT 23 11 "Dalla data " END DATE F_ADATA BEGIN - PROMPT 51 8 "Alla data " + PROMPT 52 11 "Alla data " VALIDATE DATE_CMP_FUNC >= F_DADATA WARNING "La data finale deve essere maggiore di quella iniziale" END +GROUPBOX DLG_NULL 76 4 +BEGIN + PROMPT 1 13 "@bCausali" + FLAGS "R" +END + STRING F_DACAUSALE 3 BEGIN - PROMPT 1 10 "Da causale " - FLAGS "U" + PROMPT 2 14 "Da causale " + FLAGS "UZ" USE LF_CAUSALI INPUT CODCAUS F_DACAUSALE DISPLAY "Codice" CODCAUS @@ -217,41 +251,45 @@ BEGIN STR_EXPR (#F_ACAUSALE="")||(#F_DACAUSALE<=#F_ACAUSALE) WARNING "La causale iniziale deve precedere quella finale" CHECKTYPE SEARCH + GROUP 5 END STRING F_DADESCAUS 50 BEGIN - PROMPT 22 10 "" + PROMPT 23 14 "" USE LF_CAUSALI KEY 2 INPUT DESCR F_DADESCAUS DISPLAY "Descrizione@50" DESCR DISPLAY "Codice" CODCAUS COPY OUTPUT F_DACAUSALE CHECKTYPE SEARCH + GROUP 5 END STRING F_ACAUSALE 3 BEGIN - PROMPT 1 11 "A causale " - FLAGS "U" + PROMPT 2 15 "A causale " + FLAGS "UZ" COPY USE F_DACAUSALE INPUT CODCAUS F_ACAUSALE COPY DISPLAY F_DACAUSALE OUTPUT F_ACAUSALE CODCAUS OUTPUT F_ADESCAUS DESCR - STR_EXPR (#F_ACAUSALE>=#F_DACAUSALE) + STR_EXPR (#F_ACAUSALE="")||(#F_ACAUSALE>=#F_DACAUSALE) WARNING "La causale finale deve seguire quella iniziale" CHECKTYPE SEARCH + GROUP 5 END STRING F_ADESCAUS 50 BEGIN - PROMPT 22 11 "" + PROMPT 23 15 "" COPY USE F_DADESCAUS INPUT DESCR F_ADESCAUS COPY DISPLAY F_DADESCAUS COPY OUTPUT F_ACAUSALE CHECKTYPE SEARCH + GROUP 5 END ENDPAGE diff --git a/cg/cg3600b.uml b/cg/cg3600b.uml index fb3d56743..57f720240 100755 --- a/cg/cg3600b.uml +++ b/cg/cg3600b.uml @@ -4,7 +4,7 @@ TOOLBAR "" 0 20 0 0 BUTTON DLG_LINK 10 2 BEGIN - PROMPT -12 -11 "" + PROMPT -12 -11 "~Collega" PICTURE BMP_LINK END @@ -63,7 +63,7 @@ SPREADSHEET F_MASTRINI 0 -6 BEGIN PROMPT 1 2 "Mastrini" FLAGS "DM2" - ITEM "Data Op. \nData Com.@10F" + ITEM "Data Op. \nData Doc.@10F" ITEM "C@1F" ITEM "Causale@20F" ITEM "Operazione@20" @@ -71,7 +71,7 @@ BEGIN ITEM "Avere@15R" ITEM "N.Doc. \nN.Prot.@7" ITEM "Importo@17R" - ITEM "Saldo fine\ngiornata@17R" + ITEM "Saldo Fine\nGiornata@17R" END TEXT DLG_NULL @@ -91,7 +91,7 @@ END TEXT DLG_NULL BEGIN - PROMPT 1 -4 "Prog. precedenti" + PROMPT 1 -4 "Progr. precedenti" END STRING F_TOTPRO_SAL 17 diff --git a/cg/cglib01.cpp b/cg/cglib01.cpp index a4299e0f3..983170464 100755 --- a/cg/cglib01.cpp +++ b/cg/cglib01.cpp @@ -261,11 +261,14 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat num_rec++; if ((num_rec & 0x7F) == 0) { - TString80 msg; - const long sec = (clock() - clock_start) / CLOCKS_PER_SEC; - msg.format("%ld records at %ld rec/sec", num_rec, num_rec / sec); - xvt_statbar_set(msg); - do_events(); + const double sec = (clock() - clock_start) / CLOCKS_PER_SEC; + if (sec > 0.0) + { + TString80 msg; + msg.format("%ld records at %ld rec/sec", num_rec, long(num_rec/sec)); + xvt_statbar_set(msg); + do_events(); + } } #endif