From f54528049af0c31fdf9d9f25fbcda1d7a1bfb028 Mon Sep 17 00:00:00 2001 From: luca Date: Tue, 6 Oct 2009 14:43:17 +0000 Subject: [PATCH] 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 --- ve/ve2700.cpp | 45 ++++++++++++++++++++++++++++++++------------- ve/ve2700.h | 25 +++++++++++++------------ ve/ve2700b.uml | 6 ++++++ 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/ve/ve2700.cpp b/ve/ve2700.cpp index d5f623908..2d478edf6 100755 --- a/ve/ve2700.cpp +++ b/ve/ve2700.cpp @@ -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 diff --git a/ve/ve2700.h b/ve/ve2700.h index d0fc1a536..d9800bdb1 100755 --- a/ve/ve2700.h +++ b/ve/ve2700.h @@ -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 diff --git a/ve/ve2700b.uml b/ve/ve2700b.uml index 5dfe54e26..f9d6b3100 100755 --- a/ve/ve2700b.uml +++ b/ve/ve2700b.uml @@ -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 "