Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
adesso calcola, checka e dechecka!


git-svn-id: svn://10.65.10.50/trunk@19384 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2009-10-06 15:21:40 +00:00
parent f54528049a
commit 4c1a9eef75

View File

@ -23,14 +23,18 @@ class TAggiorna_listini_edit_mask : public TAutomask
TString8 _curr_grmerc; //iniziale grmerc-sotgrmerc
protected:
//Metodi dello sheet listini figli
void fill_children_list(); //riempie lo sheet dei listini figli (costruttore)
void fill_ricarichi_children_list(); //aggiunge il ricarico nello sheet dei listini figli (on_field)
void save_children_list(); //salva i ricarichi (modificabili) dello sheet dei figli (on_field)
//Metodi dello sheet aggiornamento multilistini
void set_header_multilistini_sheet(); //compila le intestazioni delle colonne dello sheet multilistino (costruttore)
void fill_multilistini_sheet(); //riempie lo sheet multilistino (on_field)
void update_sons_prices(); //aggiorna i prezzi dei listini figli (on_field)
int find_codart(TSheet_field& sf, const TString& codart, const TString& um); //cerca l'articolo nello sheet (on_field)
bool one_checked(); //controlla se nella colonna dei check ce ne è almeno 1 checkato (on_field)
void check_all(const bool checked); //checka-dechecka la colonna dei check (on_field)
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
@ -193,6 +197,7 @@ int TAggiorna_listini_edit_mask::find_codart(TSheet_field& sf, const TString& co
row_alta.add(codum, codum_pos);
TToken_string& row_bassa = sf.row(-1);
row_bassa.add("X");
row_bassa.add(codart, codart_pos);
return sf.items() - 2; //ritorna la penultima riga (riga alta)
@ -209,7 +214,7 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
//..loro ignoranza di tale riga (un padre qualche vantaggio dovrà pur averlo, no?)
TString query;
query << "USE RCONDV\n";
query << "SELECT (TIPORIGA=\"A\")&&((CATVEN=#FATHCATVEN)&&(COD=#FATHCOD))";
query << "SELECT (TIPORIGA=\"A\")&&(ANAMAG.GRMERC=#GRMERC)&&(((CATVEN=#FATHCATVEN)&&(COD=#FATHCOD))";
//giro su tutti i figli nello sheet dei figli
TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI);
TToken_string keys_figli(140, ';');
@ -223,12 +228,15 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
//prosegue la select
query << "||((CATVEN=\"" << key.get(0) << "\")&&(COD=\"" << key.get(1) << "\"))";
}
query << "\n";
query << ")\n";
query << "JOIN ANAMAG INTO CODART==CODRIGA\n";
query << "FROM TIPO=L\n";
query << "TO TIPO=L\n";
TISAM_recordset recset_rows(query);
TString8 grmerc;
grmerc.format("%-3s%-2s", (const char*)get(F_GRMERC),(const char*)get(F_SOTGRMERC));
recset_rows.set_var("#GRMERC", grmerc);
recset_rows.set_var("#FATHCATVEN", get(F_FATHCATVEN));
recset_rows.set_var("#FATHCOD", get(F_FATHCODLIS));
const long recset_rows_items = recset_rows.items();
@ -275,21 +283,50 @@ void TAggiorna_listini_edit_mask::update_sons_prices()
//PrezzoNuovoFiglio = Ricaricofiglio * PrezzoPadre (questo vale per ogni articolo)
TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI);
TSheet_field& sf_listini = sfield(F_MULTILISTINI);
const int prezzo_pos = sf_listini.cid2index(F_PREZZO);
const int fath_prezzo_pos = sf_listini.cid2index(F_PREZZO);
FOR_EACH_SHEET_ROW(sf_figli, r, riga_figlio)
{
const real ricarico = riga_figlio->get(2);
FOR_EACH_SHEET_ROW(sf_listini, i, riga) if (i & 1) //è come dire mod(i,2)=1 (ignoranti!)
const int son_prezzo_pos = fath_prezzo_pos + 1 + r;
FOR_EACH_SHEET_ROW(sf_listini, i, riga) if (riga->get_char(0) > ' ') //è come dire checked (ignoranti!)
{
const real fath_prezzo = riga->get(prezzo_pos);
const TPrice son_prezzo = fath_prezzo * (CENTO + ricarico) / CENTO;
riga->add(son_prezzo.get_num().string(), r + prezzo_pos + 1);
const real old_son_prezzo = sf_listini.cell(r - 1, son_prezzo_pos);
if (old_son_prezzo > ZERO)
{
const real fath_prezzo = riga->get(fath_prezzo_pos);
const TPrice son_prezzo = fath_prezzo * (CENTO + ricarico) / CENTO;
riga->add(son_prezzo.get_num().string(), son_prezzo_pos);
}
}
}
sf_listini.force_update();
}
//controlla sulla colonna delle spunte se almeno una è checkata
bool TAggiorna_listini_edit_mask::one_checked()
{
TSheet_field& sf_listini = sfield(F_MULTILISTINI);
FOR_EACH_SHEET_ROW(sf_listini, i, riga)
{
if ((i & 1) && riga->get_char(0) > ' ')
return true;
}
return false;
}
void TAggiorna_listini_edit_mask::check_all(const bool checked)
{
TSheet_field& sf_listini = sfield(F_MULTILISTINI);
FOR_EACH_SHEET_ROW(sf_listini, i, riga) if (i & 1)
riga->add(checked ? "X" : "", 0);
sf_listini.force_update();
}
bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
@ -318,6 +355,12 @@ bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_even
save_children_list();
}
break;
case DLG_CHECKALL:
if (e == fe_button)
{
check_all(!one_checked());
}
break;
default:
break;
}