From 99da064ac49beffccf7d545b17527370d029900f Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 26 Jun 2003 10:48:09 +0000 Subject: [PATCH] Patch level : 2.0 512 Files correlati : ve6.exe ve6100a.msk Ricompilazione Demo : [ ] Commento : MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AO20061 Se sul tipo documento interessato per la contabilizzazione dello stesso ho selezionato il campo "Calcolo importi al lordo" non mi contabilizza nessun documento creato con questa modalità, appena tolgo il flag invece mi contabilizza tutto. ATTENZIONE: Non succede in generale, infatti nelle prove fatte funziona sempre. Ne deriva che occorrono importi ben precisi e quindi occorrono i dati specifici per ricreare la situazione di errore. Normalmente basta aumentare i decimali degli importi. AO20062 Per un tipo documento ho specificato "Calcolo importi al lordo"; spostandomi col TAB da un campo all'altro della riga di dettaglio mi toglie sempre il check da "Lordo", inoltre contrariamente alla vecchia versione tale campo degli Importi al Lordo non è più selezionabile tramite tastiera, ciò determina che una volta inserito il prezzo debba rispuntare col mouse tale campo, mentre una volta era sufficiente scorrere i campi col tab e mettere la 'X' quindi l'inserimento degli importi al lordo risultava molto più agevole. ATTENZIONE: Si tratta di una scelta operata con le nuove librerie. Occorre tavola rotonda e decisione al vertice per modificare questo comportamento. AO20063 Su Win98 se scelgo una stampante Generica / solo testo come dimensione carattere mi riporta solo 0. AO20066 Ho provato a stampare una fattura utilizzando il vecchio modulo bmp, in visualizzazione la stampa è corretta ma se lancio la stampa su foglio A4 non mi viene stampata la parte grafica; utilizzando invece il nuovo sfondo bmp esce tutto corretto (questo chiaramente è un errore che va ad influire anche sui vecchi moduli personalizzati); sulla 16bit invece con lo stesso modulo e stesso bmp, stampa corretto. git-svn-id: svn://10.65.10.50/trunk@11288 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/ve6100.cpp | 75 +++++++++++++++++++++++++------------------------ ve/ve6100a.uml | 7 +++-- ve/velib.h | 1 - ve/velib04b.cpp | 6 ++-- ve/velib04c.cpp | 17 ++++------- 5 files changed, 50 insertions(+), 56 deletions(-) diff --git a/ve/ve6100.cpp b/ve/ve6100.cpp index 1928ffc86..bdc723ab6 100755 --- a/ve/ve6100.cpp +++ b/ve/ve6100.cpp @@ -93,15 +93,9 @@ bool TContabilizzazione_app::handle_data_range(TMask_field& f, KEY k) TDate da(m.get_date(F_DATA_INI)); TDate a(m.get_date(F_DATA_FIN)); m.field(F_DATA_REG).set_dirty(); - //if (a == botime || da == botime) return TRUE; - if (a < da) - { - f.error_box("La data di inizio deve essere minore della data di fine."); - return FALSE; - } if ((a - da) > 15) { - f.error_box("L'intervallo tra le date non puo' eccedere i 15 giorni."); + f.error_box(TR("L'intervallo tra le date non puo' eccedere i 15 giorni.")); return FALSE; } if (f.dlg() == F_DATA_FIN) @@ -127,12 +121,12 @@ bool TContabilizzazione_app::handle_data_reg(TMask_field& f, KEY k) TDate da(m.get_date(F_DATA_INI)); if ((data_reg - da) > 15) { - f.error_box("L'intervallo tra la data di registrazione e la data di inizio non puo' eccedere i 15 giorni."); + f.error_box(TR("L'intervallo tra la data di registrazione e la data di inizio non puo' eccedere i 15 giorni.")); return FALSE; } if (data_reg < da) { - f.error_box("La data di registrazione non puo' essere minore della data di inizio."); + f.error_box(TR("La data di registrazione non puo' essere minore della data di inizio.")); return FALSE; } } @@ -297,15 +291,8 @@ void TContabilizzazione_app::contabilize() cont.set_auto(_auto_data); // Setta il flag per il settaggio automatico della data di registrazione del movimento - da.put("DATADOC",_data_ini); - da.put("PROVV","D"); - da.put("ANNO",year_from); - a.put("DATADOC",_data_fine); - a.put("PROVV","D"); - a.put("ANNO",year_to); - - filt_expr << "("; for (long i=0L; ichecked(i)) // Costruisce una espressione sul codice numerazione: "CODNUM="x0" || CODNUM="x1" || ..." { codnum = _num_sheet->row(i).get(1); @@ -313,35 +300,46 @@ void TContabilizzazione_app::contabilize() filt_expr << codnum << "\")||"; nums.add(codnum); } - + } filt_expr.rtrim(2); - filt_expr << ")"; + + da.put(DOC_DATADOC,_data_ini); + da.put(DOC_PROVV,"D"); + da.put(DOC_ANNO,year_from); + a.put(DOC_DATADOC,_data_fine); + a.put(DOC_PROVV,"D"); + a.put(DOC_ANNO,year_to); + + // Se ho una sola numerazione ottimizzo la setregion! + if (nums.items() == 1) + { + da.put(DOC_CODNUM, nums); + a.put(DOC_CODNUM, nums); + filt_expr.cut(0); // Il filtro diventa inutile + } + // Cursore complessivo con limiti di data (chiave 3). Viene sfruttata l'ottimizzazione // sulla costruzione dei cursori nel caso i campi presenti nell'espressione siano campi // chiave, nel nostro caso CODNUM soddisfa i requisiti. TCursor doc_cur(&doc_rel,filt_expr,3,&da,&a); - const long cur_items = doc_cur.items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato - if (cur_items == 0) - { - warning_box("Non vi sono documenti da contabilizzare per le numerazioni selezionate."); - return; - } - doc_cur.freeze(); - - msg = "Selezione documenti dal "; - msg << _data_ini.string() << " al "; - msg << _data_fine.string(); - - TLista_documenti lista_in,lista_out; - if (cur_items > 0) // if inutile tanto per provocare la chiusura della TProgind + const TRecnotype cur_items = doc_cur.items(); + if (cur_items > 0) { + TLista_documenti lista_in,lista_out; + + doc_cur.freeze(); + msg = "Selezione documenti dal "; + msg << _data_ini.string() << " al "; + msg << _data_fine.string(); TProgind p(cur_items,msg,FALSE,TRUE); const TRectype& cur_rec = doc_cur.curr(); + + // Scorre tutti i documenti che rientrano nell'intervallo selezionato for (doc_cur = 0; doc_cur.pos() < cur_items; ++doc_cur) { p.addstatus(1); // controlla che il tipo documento e lo stato siano coerenti con la ELD selezionata - if (nums.find(cur_rec.get("CODNUM")) >= 0 && doc_tipo_stato_ok(cur_rec)) + if (nums.get_pos(cur_rec.get("CODNUM")) >= 0 && doc_tipo_stato_ok(cur_rec)) { TDocumento* doc = new TDocumento; if (doc->read(doc_cur.curr()) == NOERR) // legge il documento @@ -350,10 +348,13 @@ void TContabilizzazione_app::contabilize() delete doc; } } + cont.elabora(lista_in,lista_out,_data_reg); + if (cont.processed_docs() > 0L) + message_box(FR("Totale documenti contabilizzati: %ld"), cont.processed_docs()); } - cont.elabora(lista_in,lista_out,_data_reg); - if (cont.processed_docs() > 0L) - message_box("Totale documenti contabilizzati: %ld", cont.processed_docs()); + else + warning_box(TR("Non vi sono documenti da contabilizzare per le numerazioni selezionate.")); + xvt_statbar_set(""); } diff --git a/ve/ve6100a.uml b/ve/ve6100a.uml index 1a8bfe069..3cc5d3ed6 100755 --- a/ve/ve6100a.uml +++ b/ve/ve6100a.uml @@ -35,15 +35,16 @@ END DATE F_DATA_INI BEGIN PROMPT 2 3 "Inizio " - VALIDATE NOT_EMPTY_FUNC + CHECKTYPE REQUIRED WARNING "La data di inizio intervallo e' obbligatoria" END DATE F_DATA_FIN BEGIN PROMPT 2 4 "Fine " - VALIDATE NOT_EMPTY_FUNC - WARNING "La data di fine intervallo e' obbligatoria" + CHECKTYPE REQUIRED + WARNING "La data di fine intervallo deve essere successiva a quella di inizio" + VALIDATE DATE_CMP_FUNC >= F_DATA_INI END BOOLEAN F_DATA_AUTO diff --git a/ve/velib.h b/ve/velib.h index c7fe9c620..42e5d1a09 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -1235,7 +1235,6 @@ class TGenerazione_effetti : public TElaborazione // velib04c *_cfven, *_tab, *_occas; - TTable *_cpg; // tabella condizioni di pagamento TArray _effetti_array;//Array di effetti (TEffetto) da scrivere protected: // Visualizza l'ultimo errore rilevato diff --git a/ve/velib04b.cpp b/ve/velib04b.cpp index fc905815d..5d73f5f94 100755 --- a/ve/velib04b.cpp +++ b/ve/velib04b.cpp @@ -3734,7 +3734,7 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& /* TPrinter& p = printer(); p.links().add("Movimento Prima Nota |b|w", 0); p.setlinkhandler(link_handler); - _viswin = new TViswin(NULL, "Contabilizzazione documenti", FALSE, TRUE, TRUE); + _viswin = new TViswin(NULL, TR("Contabilizzazione documenti"), FALSE, TRUE, TRUE); _viswin->open_modal(); const clock_t start_time = clock(); @@ -3758,8 +3758,8 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& /* TDocumento& doc = doc_in[i]; - msg = "Elaborazione documento "; - msg << doc.anno() << ' '; + msg = TR("Elaborazione del documento"); + msg << ' ' << doc.anno() << ' '; msg << doc.numerazione() << '/'; msg << doc.numero(); _viswin->add_line(msg); diff --git a/ve/velib04c.cpp b/ve/velib04c.cpp index b22fbe303..b46db0f65 100755 --- a/ve/velib04c.cpp +++ b/ve/velib04c.cpp @@ -1,5 +1,4 @@ #include -#include #include #include @@ -34,7 +33,6 @@ TGenerazione_effetti::TGenerazione_effetti(const char* cod) _tab = new TLocalisamfile(LF_TAB); _efffile = new TLocalisamfile(LF_EFFETTI); _refffile = new TLocalisamfile(LF_REFFETTI); - _cpg = new TTable("%CPG"); _can_write = TRUE; _error = no_error; @@ -59,7 +57,6 @@ TGenerazione_effetti::TGenerazione_effetti(const TRectype& rec) _tab = new TLocalisamfile(LF_TAB); _efffile = new TLocalisamfile(LF_EFFETTI); _refffile = new TLocalisamfile(LF_REFFETTI); - _cpg = new TTable("%CPG"); _can_write = TRUE; _error = no_error; @@ -77,7 +74,6 @@ TGenerazione_effetti::~TGenerazione_effetti() delete _efffile; delete _refffile; delete _tab; - delete _cpg; } void TGenerazione_effetti::display_error(TDocumento& doc) @@ -291,8 +287,8 @@ long TGenerazione_effetti::group_bills(TAssoc_array& group_array) // Ricalcola le scadenze codpag = doc.get(DOC_CODPAG); - _cpg->put("CODTAB",codpag); - if (_cpg->read()!= NOERR) + const TRectype& cpg = cache().get("%CPG", codpag); + if (cpg.empty()) { _error = codpag_error; display_error(doc); @@ -546,10 +542,9 @@ void TGenerazione_effetti::generate_bill(TDocumento& doc) // bill in inglese sig if (!doc.is_nota_credito()) // I documenti immessi come note di credito non generano effetti...(che senso hanno gli effetti con importi negativi?) { - TString16 codpag(doc.get(DOC_CODPAG)); - - _cpg->put("CODTAB",codpag); - if (_cpg->read()!= NOERR) + const TString16 codpag(doc.get(DOC_CODPAG)); + const TRectype& cpg = cache().get("%CPG", codpag); + if (cpg.empty()) { _error = codpag_error; return; @@ -668,8 +663,6 @@ bool TGenerazione_effetti::elabora(TLista_documenti& doc_in, TLista_documenti& d _error = no_error; _total_bills = 0L; - - _cpg->setkey(1); // Setta per sicurezza la chiave 1 nel caso l'elaborazione sia invocata da VE0 const int items = doc_in.items(); // Numero dei documenti in questa elaborazione for (int i = 0; i < items ; i++) // Scorriamo tutti i documenti nella lista {