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
|
TString8 _curr_grmerc; //iniziale grmerc-sotgrmerc
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
//Metodi dello sheet listini figli
|
||||||
void fill_children_list(); //riempie lo sheet dei listini figli (costruttore)
|
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 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)
|
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 set_header_multilistini_sheet(); //compila le intestazioni delle colonne dello sheet multilistino (costruttore)
|
||||||
void fill_multilistini_sheet(); //riempie lo sheet multilistino (on_field)
|
void fill_multilistini_sheet(); //riempie lo sheet multilistino (on_field)
|
||||||
void update_sons_prices(); //aggiorna i prezzi dei listini figli (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)
|
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);
|
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);
|
row_alta.add(codum, codum_pos);
|
||||||
|
|
||||||
TToken_string& row_bassa = sf.row(-1);
|
TToken_string& row_bassa = sf.row(-1);
|
||||||
|
row_bassa.add("X");
|
||||||
row_bassa.add(codart, codart_pos);
|
row_bassa.add(codart, codart_pos);
|
||||||
|
|
||||||
return sf.items() - 2; //ritorna la penultima riga (riga alta)
|
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?)
|
//..loro ignoranza di tale riga (un padre qualche vantaggio dovrà pur averlo, no?)
|
||||||
TString query;
|
TString query;
|
||||||
query << "USE RCONDV\n";
|
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
|
//giro su tutti i figli nello sheet dei figli
|
||||||
TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI);
|
TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI);
|
||||||
TToken_string keys_figli(140, ';');
|
TToken_string keys_figli(140, ';');
|
||||||
@ -223,12 +228,15 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
|
|||||||
//prosegue la select
|
//prosegue la select
|
||||||
query << "||((CATVEN=\"" << key.get(0) << "\")&&(COD=\"" << key.get(1) << "\"))";
|
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 << "FROM TIPO=L\n";
|
||||||
query << "TO TIPO=L\n";
|
query << "TO TIPO=L\n";
|
||||||
|
|
||||||
TISAM_recordset recset_rows(query);
|
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("#FATHCATVEN", get(F_FATHCATVEN));
|
||||||
recset_rows.set_var("#FATHCOD", get(F_FATHCODLIS));
|
recset_rows.set_var("#FATHCOD", get(F_FATHCODLIS));
|
||||||
const long recset_rows_items = recset_rows.items();
|
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)
|
//PrezzoNuovoFiglio = Ricaricofiglio * PrezzoPadre (questo vale per ogni articolo)
|
||||||
TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI);
|
TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI);
|
||||||
TSheet_field& sf_listini = sfield(F_MULTILISTINI);
|
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)
|
FOR_EACH_SHEET_ROW(sf_figli, r, riga_figlio)
|
||||||
{
|
{
|
||||||
const real ricarico = riga_figlio->get(2);
|
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 real old_son_prezzo = sf_listini.cell(r - 1, son_prezzo_pos);
|
||||||
const TPrice son_prezzo = fath_prezzo * (CENTO + ricarico) / CENTO;
|
if (old_son_prezzo > ZERO)
|
||||||
riga->add(son_prezzo.get_num().string(), r + prezzo_pos + 1);
|
{
|
||||||
|
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();
|
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)
|
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();
|
save_children_list();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DLG_CHECKALL:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
check_all(!one_checked());
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user