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
This commit is contained in:
guy 2009-11-19 11:53:45 +00:00
parent 6bd9bb36d5
commit 69427f6b17
4 changed files with 44 additions and 49 deletions

View File

@ -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;

View File

@ -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...

View File

@ -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);

View File

@ -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);
}