Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :aggiunta colonna check sullo sheet


git-svn-id: svn://10.65.10.50/trunk@19383 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2009-10-06 14:43:17 +00:00
parent 07eb5f8967
commit f54528049a
3 changed files with 51 additions and 25 deletions

View File

@ -38,7 +38,9 @@ public:
TAggiorna_listini_edit_mask(TMask* query_mask);
};
//METODI ON_FIELD
//---------------
// metodi per F_LISTINI_FIGLI
//metodo per riempire lo sheet dei listini figli con i ricarichi oggi tanto di moda
void TAggiorna_listini_edit_mask::fill_ricarichi_children_list()
{
@ -165,25 +167,33 @@ void TAggiorna_listini_edit_mask::save_children_list()
} //if(grmerc.full())
}
//metodi F_MULTILISTINI
//restituisce la posizione della riga ALTA, quella disabilitata
int TAggiorna_listini_edit_mask::find_codart(TSheet_field& sf, const TString& codart, const TString& um)
int TAggiorna_listini_edit_mask::find_codart(TSheet_field& sf, const TString& codart, const TString& codum)
{
//cerca la riga tra quelle esistenti
const int codart_pos = sf.cid2index(F_CODRIGA);
const int codum_pos = codart_pos + 1;
for (int i = 1; i < sf.items(); i += 2)
{
const char* cod = sf.cell(i, 0);
if (codart == cod)
const char* art = sf.cell(i, codart_pos);
TString4 um = sf.cell(i, codum_pos);
um.trim();
if (codart == art && codum == um)
return i - 1;
}
//non trova la riga nel padre -> la aggiunge
TToken_string& row_alta = sf.row(-1);
sf.disable_cell(sf.items()-1, -1);
const TString& descr = cache().get(LF_ANAMAG, codart, ANAMAG_DESCR);
row_alta.add(descr);
row_alta.add(um);
row_alta.add(descr, codart_pos);
row_alta.add(codum, codum_pos);
TToken_string& row_bassa = sf.row(-1);
row_bassa.add(codart);
row_bassa.add(codart, codart_pos);
return sf.items() - 2; //ritorna la penultima riga (riga alta)
}
@ -225,12 +235,14 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
TProgind pi(recset_rows_items, TR("Creazione righe listini..."), true, true);
TSheet_field& sf_multilistini = sfield(F_MULTILISTINI);
const int prezzo_pos = sf_multilistini.cid2index(F_PREZZO);
//per ogni riga del recordset va ad aggiornare lo sheet sulla maschera (aggiunge la riga)
for (bool ok = recset_rows.move_first(); ok; ok = recset_rows.move_next())
{
if (!pi.addstatus(1))
break;
//dati riga corrente
const TString& codart = recset_rows.get(RCONDV_CODRIGA).as_string();
const TString& um = recset_rows.get(RCONDV_UM).as_string();
@ -246,9 +258,9 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
//mette il prezzo al posto giusto (padre e figlio)
const int pos = keys_figli.get_pos(riga_key);
if (pos < 0)
sf_multilistini.row(riga_alta + 1).add(prezzo.string(), 1);
sf_multilistini.row(riga_alta + 1).add(prezzo.string(), prezzo_pos);
else
sf_multilistini.row(riga_alta).add(prezzo.string(), 2 + pos);
sf_multilistini.row(riga_alta).add(prezzo.string(), prezzo_pos + 1 + pos);
}
//aggiorna i prezzi nuovi dei listini figli
@ -263,15 +275,16 @@ 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);
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 real fath_prezzo = riga->get(1);
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 + 2);
riga->add(son_prezzo.get_num().string(), r + prezzo_pos + 1);
}
}
sf_listini.force_update();
@ -311,6 +324,10 @@ bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_even
return true;
}
//METODI COSTRUTTORE
//------------------
// metodi per F_LISTINI_FIGLI
//metodo per aggiungere i figli allo sheet dei medesimi
void TAggiorna_listini_edit_mask::fill_children_list()
{
@ -350,6 +367,8 @@ void TAggiorna_listini_edit_mask::fill_children_list()
sf_righe.force_update();
}
// metodi per F_MULTILISTINI
//metodo per riempire lo sheet con i dati da aggiornare
void TAggiorna_listini_edit_mask::set_header_multilistini_sheet()
{
@ -360,7 +379,7 @@ void TAggiorna_listini_edit_mask::set_header_multilistini_sheet()
TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI);
TString column_header;
int num_of_columns = 2;
int num_of_columns = 3;
FOR_EACH_SHEET_ROW(sf_figli, r, riga)
{
column_header.cut(0);
@ -368,7 +387,7 @@ void TAggiorna_listini_edit_mask::set_header_multilistini_sheet()
column_header.trim();
column_header << riga->get(1);
sf_multilistini.set_column_header(r + 2, column_header);
sf_multilistini.set_column_header(num_of_columns, column_header);
num_of_columns ++;
}
//cancella i figli in eccesso

View File

@ -23,15 +23,16 @@
#define F_DESLIS 104
//multi-terribile sheet dei multi-listini
#define F_CODRIGA 101
#define F_PREZZO 102
#define F_LIST1 103
#define F_LIST2 104
#define F_LIST3 105
#define F_LIST4 106
#define F_LIST5 107
#define F_LIST6 108
#define F_LIST7 109
#define F_LIST8 110
#define F_LIST9 111
#define F_LIST10 112
#define F_CHECK 101
#define F_CODRIGA 102
#define F_PREZZO 103
#define F_LIST1 104
#define F_LIST2 105
#define F_LIST3 106
#define F_LIST4 107
#define F_LIST5 108
#define F_LIST6 109
#define F_LIST7 110
#define F_LIST8 111
#define F_LIST9 112
#define F_LIST10 113

View File

@ -131,6 +131,7 @@ END
SPREADSHEET F_MULTILISTINI -1 -1
BEGIN
PROMPT 0 8 "Aggiornamento figli"
ITEM "@1"
ITEM "Descrizione\nArticolo@30"
ITEM "U. M. \nPrezzo base@8R"
ITEM "Figlio 1@8"
@ -229,6 +230,11 @@ ENDPAGE
PAGE "Riga aggiornamento listini" -1 -1 78 22
BOOLEAN F_CHECK
BEGIN
PROMPT 1 0 "Includere "
END
STRING F_CODRIGA 50 20
BEGIN
PROMPT 1 1 "Codice "