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:
parent
f54528049a
commit
4c1a9eef75
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user