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