From b2667c6cde15a51246cccf6278e0fc90a4e9f342 Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 4 Nov 2009 15:58:12 +0000 Subject: [PATCH] Patch level : 10.0 500 Files correlati : ve2.exe ve2700a.msk Ricompilazione Demo : [ ] Commento : Corretta selezione nuovi articoli da aggiungere al listino git-svn-id: svn://10.65.10.50/trunk@19575 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/ve2700.cpp | 143 ++++++++++++++++++++++++++++++++----------------- ve/ve2700a.uml | 15 +----- 2 files changed, 95 insertions(+), 63 deletions(-) diff --git a/ve/ve2700.cpp b/ve/ve2700.cpp index fa0785af3..9969a03c2 100755 --- a/ve/ve2700.cpp +++ b/ve/ve2700.cpp @@ -515,7 +515,7 @@ void TAggiorna_listini_edit_mask::add_art() TString query; query << "USE ANAMAG\n"; query << "SELECT ((GRMERC?=#GRMERC)||(GRMERC=\"\"))&&(RCONDV.CODRIGA=\"\")\n"; - query << "JOIN RCONDV INTO TIPO=\"L\" CATVEN=#CATVEN COD=#COD TIPORIGA=\"A\" CODRIGA=CODART\n"; + query << "JOIN RCONDV INTO TIPO=\"L\" CATVEN==#CATVEN COD==#COD TIPORIGA=\"A\" CODRIGA==CODART\n"; query << "JOIN UMART INTO CODART=CODART\n"; TISAM_recordset recset(query); TString8 grmerc, grmerc_filter; @@ -748,7 +748,6 @@ bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_even } } break; - case S2_PREZZO: if (e == fe_modify && jolly == 2) { @@ -818,7 +817,8 @@ bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_even 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); + rowmask.reset(-1); // Azzera tutto ma ... + rowmask.set(S2_CHECK, "X"); // ... forza spunta della riga } } break; @@ -979,68 +979,54 @@ TAggiorna_listini_edit_mask::TAggiorna_listini_edit_mask(TMask* query_mask) /////////////////////////////////////////////////////////////////////////////// class TAggiorna_listini_query_mask : public TAutomask { + TArray_sheet* _sheet; + protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TAggiorna_listini_query_mask(); + virtual ~TAggiorna_listini_query_mask(); }; bool TAggiorna_listini_query_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch(o.dlg()) { + case F_FATHCATVEN: + if (e == fe_button) + { + TArray_sheet sheet_catven(-1, -1, 78, 10, TR("Categorie di vendita"), HR("Codice|Descrizione@50")); + TString4 catven; + FOR_EACH_SHEET_ROW(*_sheet, t, riga) + { + const char* cv = riga->get(0); + if (catven != cv) + { + catven = cv; + TToken_string r; + r.add(catven); + r.add(cache().get("CVE", catven, "S0")); + sheet_catven.add(r); + } + } + if (sheet_catven.run() == K_ENTER) + { + TToken_string& r = sheet_catven.row(-1); + o.set(r.get(0)); + e = fe_modify; + } + } + if ((e == fe_init || e == fe_modify) && !o.empty()) + set(F_FATHDESVEN, cache().get("CVE", o.get(), "S0")); + break; case F_FATHCODLIS: if (e == fe_button) { - TString query; - query << "USE CONDV\n"; - query << "SELECT (FATHCOD!='')&&(BETWEEN(FATHCATVEN,#CATVEN,#CATVEN))\n"; - query << "FROM TIPO=L\n"; - query << "TO TIPO=L\n"; - //ottiene tutti i listini che hanno un padre - TISAM_recordset listini_figli(query); - listini_figli.set_var("#CATVEN", get(F_FATHCATVEN)); - const int listini_figli_items = listini_figli.items(); - //adesso deve crearsi la lista dei padri - TAssoc_array listini_padri; - for (bool ok = listini_figli.move_first(); ok; ok = listini_figli.move_next()) - { - //quale è il padre del figlio? - TToken_string key; - key.add(listini_figli.get(CONDV_FATHCATVEN).as_string(), 0); - key.add(listini_figli.get(CONDV_FATHCOD).as_string(), 1); - //se non esiste già nella lista dei padri deve essere aggiunto! - if (!listini_padri.is_key(key)) - { - //necessita della descrizione del padre - TToken_string chiave; - chiave.add("L"); - chiave.add(key.get(0)); - chiave.add(""); - chiave.add(""); - chiave.add(key.get(1)); - const TString& descr_padre = cache().get(LF_CONDV, chiave, CONDV_DESCR); - listini_padri.add(key, descr_padre); - } - } //for(bool ok =... - //utilizzando l'assoc_array dei padri propone uno sheet di ricerca dei soli listini che hanno paternità - //maschera volante di ricerca (è una display) - TArray_sheet sheet(-1, -1, 78, 10, TR("Listini padri"), HR("Cat.Ven.|Codice|Descrizione@50")); - //riempimento dello sheet - FOR_EACH_ASSOC_STRING(listini_padri, obj, key, descr) - { - TToken_string row; - row = key; - row.add(descr); - sheet.add(row); - } - sheet.rows_array().sort(); //riordina le righe attualmente scombinate - - if (sheet.run() == K_ENTER) + if (_sheet->run() == K_ENTER) { //riempie la maschera di query - TToken_string& row = sheet.row(sheet.selected()); + TToken_string& row = _sheet->row(-1); set(F_FATHCATVEN, row.get(0), true); set(F_FATHCODLIS, row.get(1)); set(F_FATHDESLIS, row.get(2)); @@ -1067,10 +1053,67 @@ TAggiorna_listini_query_mask::TAggiorna_listini_query_mask() : TAutomask("ve2700 //in base alla cervellotica configurazione impostata dall'utonto abilita/disabilita campi const bool gesliscv = ini_get_bool(CONFIG_DITTA, "ve", "GESLISCV"); enable(F_FATHCATVEN, gesliscv); - enable(F_FATHDESVEN, gesliscv); //attenzione!!! il campo CATVEN è in chiave 1! per disabilitarlo ci vuole questo trucco! if (!gesliscv) efield(F_FATHCATVEN).reset_key(1); + + _sheet = new TArray_sheet(-1, -1, 78, 10, TR("Listini padri"), HR("Cat.Ven.|Codice|Descrizione@50")); + TString query; + query << "USE CONDV\n"; + query << "SELECT (FATHCOD!='')&&(BETWEEN(FATHCATVEN,#CATVEN,#CATVEN))\n"; + query << "FROM TIPO=L\n"; + query << "TO TIPO=L\n"; + //ottiene tutti i listini che hanno un padre + TISAM_recordset listini_figli(query); + listini_figli.set_var("#CATVEN", get(F_FATHCATVEN)); + const int listini_figli_items = listini_figli.items(); + //adesso deve crearsi la lista dei padri + TAssoc_array listini_padri; + for (bool ok = listini_figli.move_first(); ok; ok = listini_figli.move_next()) + { + //quale è il padre del figlio? + TToken_string key; + key.add(listini_figli.get(CONDV_FATHCATVEN).as_string(), 0); + key.add(listini_figli.get(CONDV_FATHCOD).as_string(), 1); + //se non esiste già nella lista dei padri deve essere aggiunto! + if (!listini_padri.is_key(key)) + { + //necessita della descrizione del padre + TToken_string chiave; + chiave.add("L"); + chiave.add(key.get(0)); + chiave.add(""); + chiave.add(""); + chiave.add(key.get(1)); + const TString& descr_padre = cache().get(LF_CONDV, chiave, CONDV_DESCR); + listini_padri.add(key, descr_padre); + } + } //for(bool ok =... + //utilizzando l'assoc_array dei padri propone uno sheet di ricerca dei soli listini che hanno paternità + //maschera volante di ricerca (è una display) + //riempimento dello sheet + FOR_EACH_ASSOC_STRING(listini_padri, obj, key, descr) + { + TToken_string row; + row = key; + row.add(descr); + _sheet->add(row); + } + + if (_sheet->items() > 0) + { + _sheet->rows_array().sort(); //riordina le righe attualmente scombinate + + TToken_string& row = _sheet->row(0); + set(F_FATHCATVEN, row.get(0), true); + set(F_FATHCODLIS, row.get(1)); + set(F_FATHDESLIS, row.get(2)); + } +} + +TAggiorna_listini_query_mask::~TAggiorna_listini_query_mask() +{ + delete _sheet; } //////////////////////////////////////////////////////// diff --git a/ve/ve2700a.uml b/ve/ve2700a.uml index 6494fd797..22aff4296 100755 --- a/ve/ve2700a.uml +++ b/ve/ve2700a.uml @@ -25,26 +25,15 @@ END STRING F_FATHCATVEN 2 BEGIN PROMPT 1 1 "Cat. ven. " - FLAGS "U" + FLAGS "BU" KEY 1 - USE CVE - INPUT CODTAB F_FATHCATVEN - DISPLAY "Cat." CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_FATHCATVEN CODTAB - OUTPUT F_FATHDESVEN S0 CHECKTYPE FORCED END STRING F_FATHDESVEN 50 BEGIN PROMPT 18 1 "" - USE CVE KEY 2 - INPUT S0 F_FATHDESVEN - DISPLAY "Descrizione@50" S0 - DISPLAY "Cat." CODTAB - COPY OUTPUT F_FATHCATVEN - CHECKTYPE NORMAL + FLAGS "D" END STRING F_FATHCODLIS 3