Patch level : 10.0 patch 204

Files correlati     : lv0
Ricompilazione Demo : [ ]
Commento            :
0001006: Gestione più itinerari nello stesso giorno e itinerario stagionale
Prova effettuata:
Cliente 1 contratto 1 per il lunedì ho inserito due volte lo stesso itinerario (in questo caso 001) e il progrmma me lo ha accettato...inoltre sono riuscita anche a generare il planning (doppio ovviamente!)
P.S.: Mentre va bene se inserisco un itinerario diverso.

Adesso le righe COMPLETAMENTE uguali compaiono una sola volta


git-svn-id: svn://10.65.10.50/trunk@17989 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2009-01-07 14:57:47 +00:00
parent 19cd73372b
commit cf4332ac04

View File

@ -68,7 +68,8 @@ class TPass_plan_contr : public TRelation_application
long _codcont;
private:
void genera_giri(const long codli); //richiama la generazione giri in automatico
void genera_giri(const long codli); //richiama la generazione giri in automatico
void kill_duplicates(const TMask& m); //uccide i duplicati e le righe vuote sullo sheet
protected:
virtual void init_query_mode(TMask& m);
@ -149,19 +150,34 @@ void TPass_plan_contr::genera_giri(const long codcli)
}
}
//KILL_DUPLICATES: questa funzione elimina dallo sheet tutte le righe che non contengono dati di interesse...
//...e/o le righe duplicate sullo sheet
void TPass_plan_contr::kill_duplicates(const TMask& m)
{
TSheet_field& pc = m.sfield(F_PASPLAN);
//ciclo che elimina le righe che non contengono dati di interesse dallo sheet
FOR_EACH_SHEET_ROW_BACK (pc, r, row)
if (row->get_int(2) == 0)
pc.destroy(r, false);
//ciclo che elimina tutti i duplicati dallo sheet
FOR_EACH_SHEET_ROW_BACK (pc, r1, row1)
if (pc.rows_array().find(*row1) < r1)
pc.destroy(r1,false);
}
//WRITE: ridefinizione metodo write delle TRelation
int TPass_plan_contr::write(const TMask& m)
{
if (_mask->field(F_CODCF).empty() || _mask->field(F_CODCONT).empty())
return _isnocurkey;
TSheet_field& pc = m.sfield(F_PASPLAN);
kill_duplicates(m);
FOR_EACH_SHEET_ROW_BACK (pc, r, row)
if (row->get_int(2) == 0)
pc.destroy(r, false);
const int err = TRelation_application::write(m);
TSheet_field& pc = m.sfield(F_PASPLAN);
if (err == NOERR && pc.items() > 0)
{
@ -178,13 +194,11 @@ int TPass_plan_contr::rewrite(const TMask& m)
if (_mask->field(F_CODCF).empty() || _mask->field(F_CODCONT).empty())
return _isnocurkey;
TSheet_field& pc = m.sfield(F_PASPLAN);
kill_duplicates(m);
FOR_EACH_SHEET_ROW_BACK (pc, r, row)
if (row->get_int(2) == 0)
pc.destroy(r, false);
const int err = TRelation_application::rewrite(m);
TSheet_field& pc = m.sfield(F_PASPLAN);
if (err == NOERR && pc.items() > 0)
{