From d0a42fb961a20b9aaebe7065d95944c2392538c8 Mon Sep 17 00:00:00 2001 From: luca Date: Thu, 8 Oct 2009 15:45:59 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@19410 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- projects/Bainst.vcproj | 8 + projects/Sc2.vcproj | 224 ++++++++-------------- projects/pd6292.rc | 4 + projects/pd6292.vcproj | 419 +++++++++++++++++++++++++++++++++++++++++ projects/ps.sln | 6 + projects/tc0.vcproj | 10 +- projects/ve0.vcproj | 8 + projects/ve2.vcproj | 28 ++- ve/ve2700.cpp | 209 +++++++++++++++++--- ve/ve2700b.uml | 87 +++++---- 10 files changed, 783 insertions(+), 220 deletions(-) create mode 100755 projects/pd6292.rc create mode 100755 projects/pd6292.vcproj diff --git a/projects/Bainst.vcproj b/projects/Bainst.vcproj index 63672f844..d6b643fe4 100755 --- a/projects/Bainst.vcproj +++ b/projects/Bainst.vcproj @@ -455,6 +455,10 @@ RelativePath="..\ba\bainst23.cpp" > + + @@ -624,6 +628,10 @@ RelativePath="..\ba\bainst23.uml" > + + diff --git a/projects/Sc2.vcproj b/projects/Sc2.vcproj index 4d2d91a1b..16b9e7609 100755 --- a/projects/Sc2.vcproj +++ b/projects/Sc2.vcproj @@ -31,44 +31,59 @@ Name="VCPreBuildEventTool" /> + + + + + + + + + + + - - - + - - - - @@ -163,44 +178,59 @@ Name="VCPreBuildEventTool" /> + + + + + + + + + + + - - - + - - - - @@ -288,6 +318,14 @@ Name="Sources" Filter="cpp" > + + + + @@ -648,110 +686,26 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ps.sln b/projects/ps.sln index 2ea0031bf..27d32d19e 100755 --- a/projects/ps.sln +++ b/projects/ps.sln @@ -81,6 +81,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pg0068", "pg0068.vcproj", " {A1CE9743-A597-4F92-B55A-345A366C9E55} = {A1CE9743-A597-4F92-B55A-345A366C9E55} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pd6292", "pd6292.vcproj", "{BC839F6C-7042-4A5F-B04E-62380CE25912}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -199,6 +201,10 @@ Global {DE9692C8-AD5E-4AD1-A0BB-16B9A4F722F1}.Debug|Win32.Build.0 = Debug|Win32 {DE9692C8-AD5E-4AD1-A0BB-16B9A4F722F1}.Release|Win32.ActiveCfg = Release|Win32 {DE9692C8-AD5E-4AD1-A0BB-16B9A4F722F1}.Release|Win32.Build.0 = Release|Win32 + {BC839F6C-7042-4A5F-B04E-62380CE25912}.Debug|Win32.ActiveCfg = Debug|Win32 + {BC839F6C-7042-4A5F-B04E-62380CE25912}.Debug|Win32.Build.0 = Debug|Win32 + {BC839F6C-7042-4A5F-B04E-62380CE25912}.Release|Win32.ActiveCfg = Release|Win32 + {BC839F6C-7042-4A5F-B04E-62380CE25912}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/projects/tc0.vcproj b/projects/tc0.vcproj index 6b966b95c..0b4cc75e1 100755 --- a/projects/tc0.vcproj +++ b/projects/tc0.vcproj @@ -536,15 +536,7 @@ > - - - - diff --git a/projects/ve0.vcproj b/projects/ve0.vcproj index 0a73c1886..5e799cb36 100755 --- a/projects/ve0.vcproj +++ b/projects/ve0.vcproj @@ -931,6 +931,10 @@ Name="Trr" Filter="trr" > + + @@ -976,6 +980,10 @@ Name="Dir" Filter="dir" > + + diff --git a/projects/ve2.vcproj b/projects/ve2.vcproj index 63f6ca000..ae0331c75 100755 --- a/projects/ve2.vcproj +++ b/projects/ve2.vcproj @@ -577,6 +577,10 @@ RelativePath="..\ve\ve2600.cpp" > + + @@ -652,10 +656,22 @@ RelativePath="..\ve\ve2500a.uml" > + + + + + + - - + + + + 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, codart_pos); - if (_ges_um) - row_alta.add(codum, codum_pos); +//cerca nello sheet la coppia codart+um che gli viene passata restituendo la posizione della riga ALTA.. +//della coppia di righe sheet interessate (è la riga disabilitata); se non trova la coppia articolo+um .. +//..aggiunge la coppia di righe +int TAggiorna_listini_edit_mask::find_or_add_codart(TSheet_field& sf, const TString& codart, const TString& codum) +{ + //cerca la riga nello sheet + int riga = find_codart(sf, codart, codum); - TToken_string& row_bassa = sf.row(-1); - row_bassa.add("X"); - row_bassa.add(codart, codart_pos); + if (riga < 0) + { + const int codart_pos = sf.cid2index(F_CODRIGA); + const int codum_pos = codart_pos + 1; - return sf.items() - 2; //ritorna la penultima riga (riga alta) + //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, codart_pos); + if (_ges_um) + row_alta.add(codum, codum_pos); + + TToken_string& row_bassa = sf.row(-1); + row_bassa.add("X"); + row_bassa.add(codart, codart_pos); + + riga = sf.items() - 2; //ritorna la penultima riga (riga alta) + } + return riga; } -//riempie lo sheet dei multilistini -void TAggiorna_listini_edit_mask::fill_multilistini_sheet() +int TAggiorna_listini_edit_mask::crea_famiglia_listini(TToken_string& keys_listini) const { - //popola il double-deck sheet - //cerca tutte le righe che appartengono a padre e figli; se una riga appartiene ad un figlio e non al padre.. - //..viene aggiunta al padre medesimo (i padri devono sapere tutto dei figli, sennò che genitori sono?) - //se invece la riga appartiene al padre e non a uno o più figli questi ultimi saranno lasciati nella.. - //..loro ignoranza di tale riga (un padre qualche vantaggio dovrà pur averlo, no?) - - TToken_string keys_listini(140, ';'); + keys_listini.separator(';'); TToken_string key; key.add(get(F_FATHCATVEN)); @@ -236,12 +250,28 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet() key.trim(); keys_listini.add(key); } + return keys_listini.items(); +} + + +//riempie lo sheet dei multilistini +void TAggiorna_listini_edit_mask::fill_multilistini_sheet() +{ + //popola il double-deck sheet + //cerca tutte le righe che appartengono a padre e figli; se una riga appartiene ad un figlio e non al padre.. + //..viene aggiunta al padre medesimo (i padri devono sapere tutto dei figli, sennò che genitori sono?) + //se invece la riga appartiene al padre e non a uno o più figli questi ultimi saranno lasciati nella.. + //..loro ignoranza di tale riga (un padre qualche vantaggio dovrà pur averlo, no?) + + TToken_string keys_listini(140, ';'); + const int componenti_famiglia = crea_famiglia_listini(keys_listini); TProgind pi(keys_listini.items(), TR("Creazione righe listini..."), true, true); TSheet_field& sf_multilistini = sfield(F_MULTILISTINI); sf_multilistini.destroy(); const int prezzo_pos = sf_multilistini.cid2index(F_PREZZO); + TToken_string key; FOR_EACH_TOKEN(keys_listini, tok) { @@ -319,7 +349,7 @@ void TAggiorna_listini_edit_mask::update_sons_prices() } //controlla sulla colonna delle spunte se almeno una è checkata -bool TAggiorna_listini_edit_mask::one_checked() +bool TAggiorna_listini_edit_mask::one_checked() const { TSheet_field& sf_listini = sfield(F_MULTILISTINI); @@ -410,6 +440,91 @@ void TAggiorna_listini_edit_mask::add_art() } } +//salva i listini così come li trova sulle righe dello sheet multilistini +void TAggiorna_listini_edit_mask::save_listini() +{ + TSheet_field& sf_listini = sfield(F_MULTILISTINI); + const int prezzo_pos = sf_listini.cid2index(F_PREZZO); + + TToken_string keys_listini; + const int num_listini_da_agg = crea_famiglia_listini(keys_listini); + TProgind pi(num_listini_da_agg, TR("Registrazione listini..."), true, true); + + TToken_string key; + + //giro su tutti i listini che compaiono nello sheet; padre e figli + //prende le righe di un listino alla volta + FOR_EACH_TOKEN(keys_listini, tok) + { + if (!pi.addstatus(1)) + break; + + key = tok; //assegnamento necessario causa tipo (se usasse tok direttamente non funzionerebbe) + const int pos = keys_listini.get_pos(key); + + TString query; + query << "USE RCONDV\n"; + query << "SELECT ANAMAG.GRMERC=#GRMERC\n"; + query << "JOIN ANAMAG INTO CODART==CODRIGA\n"; + query << "FROM TIPO=L CATVEN=#CATVEN COD=#COD TIPORIGA=A\n"; + query << "TO TIPO=L CATVEN=#CATVEN COD=#COD TIPORIGA=A\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); + const TString4 catven = key.get(0); + recset_rows.set_var("#CATVEN", catven); + const TString4 cod = key.get(1); + recset_rows.set_var("#COD", cod); + const long recset_rows_items = recset_rows.items(); + + for (bool ok = recset_rows.move_first(); ok; ok = recset_rows.move_next()) + { + TLocalisamfile& file = recset_rows.cursor()->file(); + + //prende codart e um dal record su file rcondv + const TString& codart = recset_rows.get(RCONDV_CODRIGA).as_string(); + const TString& um = recset_rows.get(RCONDV_UM).as_string(); + //cerca sullo sheet la coppia codart+um + const int riga_alta = find_codart(sf_listini, codart, um); + const real prezzo = sf_listini.row(riga_alta + 1).get(prezzo_pos + pos); + //se non la trova o se il prezzo è 0 elimina la riga dal file + if (riga_alta < 0 || prezzo == ZERO) + { + file.remove(); + continue; + } + + //alla fine della storia registra tutto lo sheet sul file + FOR_EACH_SHEET_ROW(sf_listini, r, riga) + { + //file.zero(); //achtung! se l'articolo è nuovo ci può stare, ma se c'era già no + file.put(RCONDV_TIPO, "L"); + file.put(RCONDV_CATVEN, catven); + file.put(RCONDV_COD, cod); + + file.put(RCONDV_TIPORIGA, "A"); + file.put(RCONDV_CODRIGA, codart); + file.put(RCONDV_UM, um); + file.put(RCONDV_PREZZO, prezzo); + + } + + file.setkey(1); + const int nuovo_articolo = file.read(); + + //alla fine della fiera deve salvare su file veramente! + //se è in inserimento deve fare un write, se in modifica la rewrite + if (nuovo_articolo > 0) + file.rewrite_write(); + else + file.write_rewrite(); + } + } +} + + bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch(o.dlg()) @@ -444,6 +559,26 @@ bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_even } break; + case F_PREZZO: + if (e == fe_modify && real::is_null(o.get())) + { + TSheet_field& sf_listini = sfield(F_MULTILISTINI); + TMask& rowmask = sf_listini.sheet_mask(); + rowmask.field(DLG_USER).on_hit(); + } + break; + case DLG_USER: + if (e == fe_button) + { + if (yesno_box(TR("Si conferma l'eliminazione di questo articolo da tutti i listini collegati?"))) + { + TSheet_field& sf_listini = sfield(F_MULTILISTINI); + const int selected_riga = sf_listini.selected(); + TMask& rowmask = sf_listini.sheet_row_mask(selected_riga); + rowmask.reset(-1); + } + } + break; //applica i cambiamenti dovuti ai ricarichi e salva questi ultimi in gmc case DLG_APPLICA: if (e == fe_button) @@ -466,6 +601,12 @@ bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_even add_art(); } break; + case DLG_SAVEREC: + if (e == fe_button) + { + save_listini(); + } + break; default: break; } @@ -524,10 +665,13 @@ void TAggiorna_listini_edit_mask::set_header_multilistini_sheet() //..secondo la solita catven+codlis; fa sparire le colonne che non servono. Ricordiamo infatti che.. //...si posson avere al massimo 10 figli (controllo demografico sui listini) TSheet_field& sf_multilistini = sfield(F_MULTILISTINI); + TMask& row_mask = sf_multilistini.sheet_row_mask(0); TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI); TString column_header; int num_of_columns = 3; + //giro su tutte le righe dello sheet dei figli per avere intestazioni da mettere nei campi.. + //..dello sheet multilistinico FOR_EACH_SHEET_ROW(sf_figli, r, riga) { column_header.cut(0); @@ -535,12 +679,21 @@ void TAggiorna_listini_edit_mask::set_header_multilistini_sheet() column_header.trim(); column_header << riga->get(1); + //rinomina intestazione colonna dello sheet multilistinico sf_multilistini.set_column_header(num_of_columns, column_header); + //sistema di conseguenza la maschera di riga + row_mask.efield(num_of_columns + 101).set_prompt(column_header); + num_of_columns ++; } //cancella i figli in eccesso for( ;sf_multilistini.exist_column(num_of_columns); num_of_columns++) + { + //colonne sheet sf_multilistini.delete_column(num_of_columns); + //sistema di conseguenza la maschera di riga + row_mask.efield(num_of_columns + 101).hide(); + } } @@ -702,6 +855,6 @@ bool TAggiorna_listini::create() int ve2700(int argc, char* argv[]) { TAggiorna_listini a; - a.run(argc, argv, TR("Aggiornamneto listini multiplo")); + a.run(argc, argv, TR("Sincronizzazione listini")); return 0; } \ No newline at end of file diff --git a/ve/ve2700b.uml b/ve/ve2700b.uml index 03348130a..e7a70b969 100755 --- a/ve/ve2700b.uml +++ b/ve/ve2700b.uml @@ -8,7 +8,7 @@ BEGIN PICTURE TOOL_SAVEREC END -BUTTON DLG_NULL 2 2 +BUTTON DLG_NULL 4 2 BEGIN PROMPT 2 1 "" PICTURE 0 @@ -32,29 +32,29 @@ BEGIN PICTURE TOOL_IMPORT END -BUTTON DLG_NULL 2 2 +BUTTON DLG_NULL 4 2 BEGIN - PROMPT -1 1 "" + PROMPT 6 1 "" PICTURE 0 END BUTTON DLG_INFO 2 2 BEGIN - PROMPT 1 1 "Info" + PROMPT 7 1 "Info" MESSAGE EXIT,K_F2 PICTURE TOOL_INFO END BUTTON DLG_HELP 2 2 BEGIN - PROMPT 2 1 "Help" + PROMPT 8 1 "Help" MESSAGE EXIT,K_F1 PICTURE TOOL_HELP END BUTTON DLG_CANCEL 2 2 BEGIN - PROMPT 3 1 "Annulla" + PROMPT 9 1 "Annulla" MESSAGE EXIT,K_ESC PICTURE TOOL_CANCEL END @@ -238,30 +238,12 @@ ENDMASK /////////////////////////////////////////////// //maschera di riga sheet aggiornamento listini -TOOLBAR "topbar" 0 0 0 2 - -BUTTON DLG_OK 10 2 -BEGIN - PROMPT -13 -1 "" -END - -BUTTON DLG_DELREC 10 2 -BEGIN - PROMPT -23 -1 "" -END - -BUTTON DLG_CANCEL 10 2 -BEGIN - PROMPT -33 -1 "" -END - -ENDPAGE - -PAGE "Riga aggiornamento listini" -1 -1 78 22 +PAGE "Riga aggiornamento listini" -1 -1 40 10 BOOLEAN F_CHECK BEGIN - PROMPT 1 0 "Includere " + PROMPT 1 0 "Applica ricarico " + GROUP 1 END STRING F_CODRIGA 50 20 @@ -274,66 +256,97 @@ STRING F_PREZZO 8 BEGIN PROMPT 1 2 "Prezzo " FLAGS "R" + GROUP 1 END CURRENCY F_LIST1 8 BEGIN - PROMPT 1 4 "List1 " + PROMPT 1 4 "List1 " FLAGS "U" + GROUP 1 END CURRENCY F_LIST2 8 BEGIN - PROMPT 1 5 "List2 " + PROMPT 1 5 "List2 " FLAGS "U" + GROUP 1 END CURRENCY F_LIST3 8 BEGIN - PROMPT 1 6 "List3 " + PROMPT 1 6 "List3 " FLAGS "U" + GROUP 1 END CURRENCY F_LIST4 8 BEGIN - PROMPT 1 7 "List4 " + PROMPT 1 7 "List4 " FLAGS "U" + GROUP 1 END CURRENCY F_LIST5 8 BEGIN - PROMPT 1 8 "List5 " + PROMPT 1 8 "List5 " FLAGS "U" + GROUP 1 END CURRENCY F_LIST6 8 BEGIN - PROMPT 1 9 "List6 " + PROMPT 21 4 "List6 " FLAGS "U" + GROUP 1 END CURRENCY F_LIST7 8 BEGIN - PROMPT 1 10 "List7 " + PROMPT 21 5 "List7 " FLAGS "U" + GROUP 1 END CURRENCY F_LIST8 8 BEGIN - PROMPT 1 11 "List8 " + PROMPT 21 6 "List8 " FLAGS "U" + GROUP 1 END CURRENCY F_LIST9 8 BEGIN - PROMPT 1 12 "List9 " + PROMPT 21 7 "List9 " FLAGS "U" + GROUP 1 END CURRENCY F_LIST10 8 BEGIN - PROMPT 1 13 "List10 " + PROMPT 21 8 "List10 " FLAGS "U" + GROUP 1 +END + +ENDPAGE + +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_OK 2 2 +BEGIN + PROMPT 1 1 "" +END + +BUTTON DLG_USER 2 2 +BEGIN + PROMPT 2 1 "A~zzera" + PICTURE TOOL_CELLULAR +END + +BUTTON DLG_CANCEL 2 2 +BEGIN + PROMPT 3 1 "" END ENDPAGE