From 69427f6b174f9d8626cbbfc83be901c6fe26f114 Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 19 Nov 2009 11:53:45 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : or1.exe Ricompilazione Demo : [ ] Commento : Corretto filtro per articolo nella stampa ordini (Cliente Frasson) git-svn-id: svn://10.65.10.50/trunk@19653 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- or/or1100.cpp | 61 +++++++++++++++++++++++--------------------------- or/or1200.cpp | 4 ++-- or/orlib.h | 4 ++-- or/orlib01.cpp | 24 ++++++++++---------- 4 files changed, 44 insertions(+), 49 deletions(-) diff --git a/or/or1100.cpp b/or/or1100.cpp index 67c3935bf..a5c83a6d0 100755 --- a/or/or1100.cpp +++ b/or/or1100.cpp @@ -8,9 +8,6 @@ #include "../ve/velib.h" -#include "doc.h" -#include "rdoc.h" - // Tipi di stampa per selezionare il form enum tipo_stampa { numero, // or1100a.frm @@ -100,7 +97,7 @@ bool TStampa_ordini::stato_handler(TMask_field& f, KEY k) if (b) // Qualsiasi altro tipo di stampa dettaglio righe puo' essere selezionata m.enable(F_STATORORD); } - return TRUE; + return true; } bool TStampa_ordini::detail_handler(TMask_field& f, KEY k) @@ -137,7 +134,7 @@ bool TStampa_ordini::detail_handler(TMask_field& f, KEY k) m.disable(F_FORCE_EVASE); } } - return TRUE; + return true; } bool TStampa_ordini::create() @@ -218,29 +215,29 @@ bool TStampa_ordini::document_row_filter(const TRectype& row) const if (_TEA_rord == 'E') { if (!evasa) - return FALSE; + return false; if (_force_evase) // Controlla se evasa con residuo { const real qta = row.get(RDOC_QTA); const real qta_evasa = row.get(RDOC_QTAEVASA); if (qta_evasa >= qta) - return FALSE; // Non c'e' residuo + return false; // Non c'e' residuo } } if (_TEA_rord == 'A' && evasa) - return FALSE; + return false; } - if (_from_art.not_empty() || _to_art.not_empty()) + if (_from_art.full() || _to_art.full()) { const TString& codart = row.get(RDOC_CODART); - if (_from_art.not_empty() && codart < _from_art) - return FALSE; - if (_to_art.not_empty() && codart > _to_art) - return FALSE; + if (_from_art.full() && codart < _from_art) + return false; + if (_to_art.full() && codart > _to_art) + return false; } - return TRUE; + return true; } bool TStampa_ordini::document_filter(const TRelation* rel) @@ -256,9 +253,9 @@ bool TStampa_ordini::document_filter(const TRelation* rel) for (int r = righe.rows(); r > 0; r--) { if (app().document_row_filter(righe.row(r))) - return TRUE; + return true; } - return FALSE; + return false; } @@ -719,13 +716,13 @@ void TStampa_ordini::filter_for_clifo_agent() if (_detail_rows) { // Setta i range per il codice articolo - if (_from_art.not_empty()) + if (_from_art.full()) { s.format("&&(%d->CODART>=\"%s\")", LF_RIGHEDOC, (const char*)_from_art); filter_expr << s; } - if (_to_art.not_empty()) + if (_to_art.full()) { filter_expr << "&&"; s.format("(%d->CODART<=\"%s\")", @@ -795,7 +792,7 @@ void TStampa_ordini::filter_for_clifo_agent() if (s.not_empty()) filter_expr << s; - cur->setfilter(filter_expr,TRUE,2); + cur->setfilter(filter_expr,true,2); // Alla fine setta i campi da vedere if (!is_for_cli && _detail_cli) @@ -987,8 +984,13 @@ void TStampa_ordini::filter_for_articolo() t = f; t.put(RDOC_CODART, _to_art); + + int tilde = 0x2; + if (_to_art.empty() || cache().get(LF_ANAMAG, _to_art).empty()) + tilde = 0x0; // Se scrivo un articolo parziale non mettere ~ alla fine della chiave + cur->setkey(2); // Questa chiave rende piu' veloce la costruzione se indicato un range di articoli - cur->setregion(f,t,0x2); // This is the region... + cur->setregion(f,t,tilde); // This is the region... s.format("(%d->TIPOCF==\"",LF_DOC); filter_expr << s << _tipocf << "\")"; // Nel caso di stampa per agenti e' sempre "C" @@ -1089,7 +1091,7 @@ void TStampa_ordini::filter_for_articolo() filter_expr << s; } - cur->setfilter(filter_expr,TRUE,2); // Setta il filtro e serra i ranghi + cur->setfilter(filter_expr,true,2); // Setta il filtro e serra i ranghi // Setta la condizione di raggruppamento principale per articoli TForm_subsection& ssec = (TForm_subsection&) _frm->find_field('B', odd_page, "ARTMAIN"); @@ -1153,8 +1155,6 @@ void TStampa_ordini::show_giac_levels() void TStampa_ordini::main_loop() { - TString form_name; - while (_m->run()!=K_QUIT) { // selezione tipo di stampa per il form appropriato @@ -1230,6 +1230,7 @@ void TStampa_ordini::main_loop() _TEA_ord = _m->get(F_STATOORD)[0]; _TEA_rord = _m->get(F_STATORORD)[0]; + const char* form_name = NULL; switch (_tipo) { case clifo: form_name = "or1100b"; break; @@ -1243,16 +1244,10 @@ void TStampa_ordini::main_loop() // Selezione cursore & filtro switch (_tipo) { - case clifo: - case agente: - filter_for_clifo_agent(); - break; - case articolo: - filter_for_articolo(); - break; - default: - filter_for_number(); - break; + case clifo : + case agente : filter_for_clifo_agent(); break; + case articolo: filter_for_articolo(); break; + default : filter_for_number(); break; } const int hh = 6; diff --git a/or/or1200.cpp b/or/or1200.cpp index aa0e59043..c71f6b82b 100755 --- a/or/or1200.cpp +++ b/or/or1200.cpp @@ -24,7 +24,7 @@ class TStampa_dettaglio_articoli : public TSkeleton_application TString _fromcodnum, _tocodnum; // Range calcolati automaticamente all'inizio del prg int _anno; char _provv; - bool _da_ordinare, // Se TRUE solo gli articoli da ordinare, FALSE tutti. + bool _da_ordinare, // Se true solo gli articoli da ordinare, false tutti. _detail_mag, _detail_dep, _giac_eff, _val_comp; TDate _data_oss; // Data di osservazione @@ -229,7 +229,7 @@ void TStampa_dettaglio_articoli::set_form() filter_expr << s; } - cur->setfilter(filter_expr,TRUE); // Cursor filter expression + cur->setfilter(filter_expr,true); // Cursor filter expression // Una volta settato il cursore del form, pensiamo ai campi del form // ed alle espressioni delle sottosezioni, le colonne da abilitare etc. etc... diff --git a/or/orlib.h b/or/orlib.h index d5770aec3..7d75de073 100755 --- a/or/orlib.h +++ b/or/orlib.h @@ -27,7 +27,7 @@ class TOrdine_form : public TForm TString16 _codmag, _livello; bool _detail_mag, _detail_dep, _giac_eff, _val_comp, - _normale; // Se TRUE e' una stampa normale, ovvero stampa ordini per cli/fo/agente etc. + _normale; // Se true e' una stampa normale, ovvero stampa ordini per cli/fo/agente etc. // Se FALE e' una stampa disponibilita' articoli TArray* _date_array; // Do not delete: e' passato dall'applicazione TArray _totdisp; // Array di elementi per la stampa disponibilita' @@ -41,7 +41,7 @@ protected: public: bool genera_intestazione_supplementare(pagetype p, short y); - void set_options(int lev, bool mag, bool dep, bool giac_eff = FALSE, bool val_comp = FALSE, TArray* da = NULL) + void set_options(int lev, bool mag, bool dep, bool giac_eff = false, bool val_comp = false, TArray* da = NULL) { _level = lev; _detail_mag = mag; _detail_dep = dep; _giac_eff = giac_eff; _val_comp = val_comp; _date_array = da; _normale = da == NULL;} TOrdine_form(const char* name); diff --git a/or/orlib01.cpp b/or/orlib01.cpp index 71707e153..160969bf0 100755 --- a/or/orlib01.cpp +++ b/or/orlib01.cpp @@ -44,11 +44,11 @@ bool TOrdine_form::genera_intestazione_supplementare(pagetype p, short y) CHECK(_date_array, "L'array delle date non e' impostato."); TPrint_section* body = exist('B', p); if (body == NULL || !body->columnwise()) - return FALSE; + return false; TPrint_section* header = exist('H', p); if (header == NULL) - return FALSE; + return false; const int items = _date_array->items();//body->fields(); TForm_string* s; @@ -64,11 +64,11 @@ bool TOrdine_form::genera_intestazione_supplementare(pagetype p, short y) s->set_x(fi.x()); s->y() = y; s->set_prompt(des); - s->temp() = TRUE; + s->temp() = true; header->add_field(s); } - return TRUE; + return true; } bool TOrdine_form::validate(TForm_item &cf, TToken_string &s) @@ -144,9 +144,9 @@ bool TOrdine_form::validate(TForm_item &cf, TToken_string &s) real qtare(qr.get()); // Converte i totali q.ta evasa e ordinata nella unita' di misura principale - qtaor = _art_giac->convert_to_um(qtaor, "", cur_um, TRUE); - qtaev = _art_giac->convert_to_um(qtaev, "", cur_um, TRUE); - qtare = _art_giac->convert_to_um(qtare, "", cur_um, TRUE); + qtaor = _art_giac->convert_to_um(qtaor, "", cur_um, true); + qtaev = _art_giac->convert_to_um(qtaev, "", cur_um, true); + qtare = _art_giac->convert_to_um(qtare, "", cur_um, true); qo.set(qtaor.string()); qe.set(qtaev.string()); @@ -169,7 +169,7 @@ bool TOrdine_form::validate(TForm_item &cf, TToken_string &s) if (_art_giac->read(rdoc.get(RDOC_CODART)) == NOERR) // Perche' non RDOC_CODARTMAG ??? { real qt(cf.get()); - qt = _art_giac->convert_to_um(qt, cur_um, um, TRUE); + qt = _art_giac->convert_to_um(qt, cur_um, um, true); cf.set(qt.string()); } @@ -269,7 +269,7 @@ bool TOrdine_form::validate(TForm_item &cf, TToken_string &s) // Reperisce fattore di conversione per UM principale, // la quantita residua real qtares = rdoc.qtaresidua(); // ZIO PERA! ag völ la riga dal document - qtares = _art_giac->convert_to_um(qtares, "", um, TRUE); + qtares = _art_giac->convert_to_um(qtares, "", um, true); qtares *= segno; // mette a posto il segno... // Trova il periodo giusto const int index = find_period(datacons); @@ -358,7 +358,7 @@ bool TOrdine_form::validate(TForm_item &cf, TToken_string &s) else if (action == "PREZZONS") { - real pns = rdoc.prezzo(TRUE,FALSE); // Prezzo netto scontato + real pns = rdoc.prezzo(true,false); // Prezzo netto scontato cf.set(pns.string()); } else @@ -415,12 +415,12 @@ bool TOrdine_form::validate(TForm_item &cf, TToken_string &s) TString16 annoes; annoes.format("%04d", esc.date2esc(oggi)); const TString16 codmag(rdoc.get("CODMAG")); // Riferito al magazzino indicato sulla riga... const TString16 livello(_level > 0 ? rdoc.get(RDOC_LIVELLO) : ""); - g = _art_giac->disponibilita(annoes, codmag, livello, TRUE); // Giacenza attuale + g = _art_giac->disponibilita(annoes, codmag, livello, true); // Giacenza attuale } cf.set(g.string()); } //Ignore any other command - return TRUE; + return true; } return TForm::validate(cf, s); }