From 1c6584e817c9f4d7090dc23fd0a87bdc073ee534 Mon Sep 17 00:00:00 2001 From: luca Date: Fri, 2 Oct 2009 10:32:26 +0000 Subject: [PATCH] Patch level :10.0 Files correlati : Ricompilazione Demo : [ ] Commento : iniziato programma aggiornamento multiplo listini...un casino infernalissimo! git-svn-id: svn://10.65.10.50/trunk@19366 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/condv.h | 3 + ve/ve2.cpp | 2 +- ve/ve2.h | 2 +- ve/ve2700.cpp | 216 +++++++++++++++++++++++++++++++++++++++++++++++++ ve/ve2700.h | 51 ++++++++++++ ve/ve2700a.uml | 64 +++++++++++++++ ve/ve2700b.uml | 172 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 508 insertions(+), 2 deletions(-) create mode 100755 ve/ve2700.cpp create mode 100755 ve/ve2700.h create mode 100755 ve/ve2700a.uml create mode 100755 ve/ve2700b.uml diff --git a/ve/condv.h b/ve/condv.h index be51d5ba2..fdbaea592 100755 --- a/ve/condv.h +++ b/ve/condv.h @@ -21,5 +21,8 @@ #define CONDV_CODLISSUCC "CODLISSUCC" #define CONDV_SEQRIC "SEQRIC" #define CONDV_DECIMALI "DECIMALI" +#define CONDV_FATHCATVEN "FATHCATVEN" +#define CONDV_FATHCOD "FATHCOD" +#define CONDV_ARROTONDA "ARROTONDA" #endif diff --git a/ve/ve2.cpp b/ve/ve2.cpp index 9db3ab203..e9d0113c4 100755 --- a/ve/ve2.cpp +++ b/ve/ve2.cpp @@ -11,7 +11,7 @@ int main( int argc, char** argv) case 3: ve2400(argc, argv); break; case 4: ve2500(argc, argv); break; case 5: ve2600(argc, argv); break; - //case 6: ve2700(argc, argv); break; + case 6: ve2700(argc, argv); break; default: ve2100(argc, argv); break; } return 0; diff --git a/ve/ve2.h b/ve/ve2.h index 3d42cfe0b..683e7e482 100755 --- a/ve/ve2.h +++ b/ve/ve2.h @@ -7,7 +7,7 @@ int ve2300(int argc, char* argv[]); // righe listini/contratti/offerte int ve2400(int argc, char* argv[]); // anagrafica di magazzino int ve2500(int argc, char* argv[]); // gestione semplificata (ovvero comprensibile) listini int ve2600(int argc, char* argv[]); // relazioni articoli livelli di giacenza -//int ve2700(int argc, char* argv[]); // aggirnamento multiplo listini figli +int ve2700(int argc, char* argv[]); // aggirnamento multiplo listini figli #endif diff --git a/ve/ve2700.cpp b/ve/ve2700.cpp new file mode 100755 index 000000000..6e014cdd4 --- /dev/null +++ b/ve/ve2700.cpp @@ -0,0 +1,216 @@ +#include +#include +#include +#include +#include +#include + +#include "condv.h" +#include "rcondv.h" + +#include "ve2.h" +#include "ve2700.h" + +/////////////////////////////////////////////////////////////////////////////// +// MASCHERA DI EDIT (aggiorna i listini figghi 'u patre!) +/////////////////////////////////////////////////////////////////////////////// +class TAggiorna_listini_edit_mask : public TAutomask +{ + TMask* _query_mask; //puntatore alla maschera di query + +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + +public: + TAggiorna_listini_edit_mask(TMask* query_mask); + void aggiorna_listini_figli(); +}; + + +bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch(o.dlg()) + { + case F_GRMERC: + case F_SOTGRMERC: + //una volta selezionati grmerc/sotgrmerc riempie la colonna ricarico dello sheet + if (e == fe_close) + { + TString8 grmerc; + grmerc.format("%-3s%-2s", (const char*)get(F_GRMERC),(const char*)get(F_SOTGRMERC)); + } + break; + default: + break; + } + return true; +} + +TAggiorna_listini_edit_mask::TAggiorna_listini_edit_mask(TMask* query_mask) + : TAutomask("ve2700b"), _query_mask(query_mask) +{ + //aggiorna campi listino padre + set(F_FATHCATVEN, _query_mask->get(F_FATHCATVEN)); + set(F_FATHDESVEN, _query_mask->get(F_FATHDESVEN)); + set(F_FATHCODLIS, _query_mask->get(F_FATHCODLIS)); + set(F_FATHDESLIS, _query_mask->get(F_FATHDESLIS)); + //aggiorna sheet con i listini figli + TString query; + query << "USE CONDV\n"; + query << "SELECT (FATHCATVEN=#FATHCATVEN)&&(FATHCOD=#FATHCOD)\n"; + query << "FROM TIPO=L\n"; + query << "TO TIPO=L\n"; + TISAM_recordset recset_figli(query); + recset_figli.set_var("#FATHCATVEN", get(F_FATHCATVEN)); + recset_figli.set_var("#FATHCOD", get(F_FATHCODLIS)); + const int recset_figli_items = recset_figli.items(); + + const TRectype& rec = recset_figli.cursor()->curr(); + + //recupero sheet e realtiva mashera di riga + TSheet_field& sf_righe = sfield(F_LISTINI_FIGLI); + TMask& msk = sf_righe.sheet_mask(); + sf_righe.destroy(); + + //per ogni riga del recordset va ad aggiornare lo sheet sulla maschera (aggiunge la riga) + for (bool ok = recset_figli.move_first(); ok; ok = recset_figli.move_next()) + { + TToken_string& row = sf_righe.row(-1); //riga sheet da riempire + + const TString& catven = rec.get(CONDV_CATVEN); + const TString& codlis = rec.get(CONDV_COD); + const TString& deslis = rec.get(CONDV_DESCR); + row.add(catven); + row.add(codlis); + row.add(""); + row.add(deslis); + + sf_righe.check_row(sf_righe.items()-1, 3); + } + sf_righe.force_update(); +} + +void TAggiorna_listini_edit_mask::aggiorna_listini_figli() +{ +} + +/////////////////////////////////////////////////////////////////////////////// +// MASCHERA DI QUERY (seleziona il listino padre tra i listini con paternità) +/////////////////////////////////////////////////////////////////////////////// +class TAggiorna_listini_query_mask : public TAutomask +{ +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + +public: + 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_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) + { + //riempie la maschera di query + 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)); + + //lancia la maschera di edit + TAggiorna_listini_edit_mask edit_mask(this); //gli passa la maschera principale + if (edit_mask.run() == K_ENTER) + edit_mask.aggiorna_listini_figli(); + } + } + break; + default: + break; + } + return true; +} + +TAggiorna_listini_query_mask::TAggiorna_listini_query_mask() : TAutomask("ve2700a") +{ + //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); +} + +//////////////////////////////////////////////////////// +// APPLICAZIONE +//////////////////////////////////////////////////////// +class TAggiorna_listini : public TSkeleton_application +{ +public: + virtual void main_loop(); +}; + + +void TAggiorna_listini::main_loop() +{ + TAggiorna_listini_query_mask mask; + while (mask.run() == K_ENTER) + { + } +} + + +int ve2700(int argc, char* argv[]) +{ + TAggiorna_listini a; + a.run(argc, argv, TR("Aggiornamneto listini multiplo")); + return 0; +} \ No newline at end of file diff --git a/ve/ve2700.h b/ve/ve2700.h new file mode 100755 index 000000000..d4957b9b8 --- /dev/null +++ b/ve/ve2700.h @@ -0,0 +1,51 @@ +//campi maschera ve2700a.uml e ve2700b.uml (query ed edit di aggiornamento multiplo listini) +//comuni alle 2 maschere +#define F_FATHCATVEN 201 +#define F_FATHDESVEN 202 +#define F_FATHCODLIS 203 +#define F_FATHDESLIS 204 + +//Scomuni alle 2 maschere (solo ve2700b) +#define F_GRMERC 205 +#define F_SOTGRMERC 206 +#define F_DESGRMERC 207 +#define F_LISTINI_FIGLI 208 + +//#define F_MULTILISTINI 280 + +//primo sheet con i listini figli +#define F_CATVEN 101 +#define F_CODLIS 102 +#define F_RICARICO 103 +#define F_DESLIS 104 + +//multi-terribile sheet dei multi-listini +/*#define F_TIPORIGA 101 +#define F_CODRIGA_A 102 +#define F_DESRIGA_A 103 +#define F_CODRIGA_G 202 +#define F_DESRIGA_G 203 +#define F_CODRIGA_S 302 +#define F_DESRIGA_S 303 +#define F_CODRIGA_R 402 +#define F_DESRIGA_R 403 +#define F_PREZZO 104 +#define F_UM 105 +#define F_OLDPRZ1 106 +#define F_NEWPRZ1 107 +#define F_OLDPRZ2 108 +#define F_NEWPRZ2 109 +#define F_OLDPRZ3 110 +#define F_NEWPRZ3 111 +#define F_OLDPRZ4 112 +#define F_NEWPRZ4 113 +#define F_OLDPRZ5 114 +#define F_NEWPRZ5 115 +#define F_OLDPRZ6 116 +#define F_NEWPRZ6 117 +#define F_OLDPRZ7 118 +#define F_NEWPRZ7 119 +#define F_OLDPRZ8 120 +#define F_NEWPRZ8 121 +#define F_OLDPRZ9 122 +#define F_NEWPRZ9 123*/ diff --git a/ve/ve2700a.uml b/ve/ve2700a.uml new file mode 100755 index 000000000..146dd17c0 --- /dev/null +++ b/ve/ve2700a.uml @@ -0,0 +1,64 @@ +#include "ve2700.h" + +TOOLBAR "Toolbar" 0 0 0 2 + +#include + +ENDPAGE + +PAGE "Ricerca listino padre" 0 2 0 0 + +GROUPBOX DLG_NULL 78 4 +BEGIN + PROMPT 0 0 "@bDati listino padre" +END + +LIST DLG_NULL 1 7 +BEGIN + PROMPT 100 100 "" + ITEM "L|Listino" + FLAGS "D" + FIELD TIPO + KEY 1 +END + +STRING F_FATHCATVEN 2 +BEGIN + PROMPT 1 1 "Cat. ven. " + FLAGS "U" + 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 +END + +STRING F_FATHCODLIS 3 +BEGIN + PROMPT 1 2 "Listino " + FLAGS "B" +END + +STRING F_FATHDESLIS 50 +BEGIN + PROMPT 18 2 "" + FLAGS "D" +END + +ENDPAGE + +ENDMASK diff --git a/ve/ve2700b.uml b/ve/ve2700b.uml new file mode 100755 index 000000000..ce1c3d9af --- /dev/null +++ b/ve/ve2700b.uml @@ -0,0 +1,172 @@ +#include "ve2700.h" + +TOOLBAR "Toolbar" 0 0 0 2 + +BUTTON DLG_SAVEREC 2 2 +BEGIN + PROMPT 10 -1 "~Salva" + PICTURE TOOL_SAVEREC +END + +#include + +ENDPAGE + +PAGE "Aggiornamento listini" 0 2 0 0 + +GROUPBOX DLG_NULL 78 4 +BEGIN + PROMPT 0 0 "@bDati listino padre" +END + +LIST DLG_NULL 1 7 +BEGIN + PROMPT 100 100 "" + ITEM "L|Listino" + FLAGS "D" + FIELD TIPO + KEY 1 +END + +STRING F_FATHCATVEN 2 +BEGIN + PROMPT 1 1 "Cat. ven. " + FLAGS "D" +END + +STRING F_FATHDESVEN 50 +BEGIN + PROMPT 18 1 "" + FLAGS "D" +END + +STRING F_FATHCODLIS 3 +BEGIN + PROMPT 1 2 "Listino " + FLAGS "D" +END + +STRING F_FATHDESLIS 50 +BEGIN + PROMPT 18 2 "" + FLAGS "D" +END + +STRING F_GRMERC 3 +BEGIN + PROMPT 1 4 "Gr. merc. " + FLAGS "U" + USE GMC SELECT CODTAB[4,5] == "" + INPUT CODTAB[1,3] F_GRMERC + DISPLAY "Gruppo" CODTAB[1,3] + DISPLAY "Descrizione@50" S0 + OUTPUT F_GRMERC CODTAB[1,3] + OUTPUT F_DESGRMERC S0 + CHECKTYPE NORMAL + GROUP 2 +END + +STRING F_SOTGRMERC 5 +BEGIN + PROMPT 20 4 "" + FLAGS "U" + USE GMC + COPY INPUT F_GRMERC + INPUT CODTAB[4,5] F_SOTGRMERC + DISPLAY "Gruppo" CODTAB[1,3] + DISPLAY "Sottogruppo" CODTAB[4,5] + DISPLAY "Descrizione@50" S0 + COPY OUTPUT F_GRMERC + OUTPUT F_SOTGRMERC CODTAB[4,5] + CHECKTYPE NORMAL + GROUP 2 +END + +STRING F_DESGRMERC 50 45 +BEGIN + PROMPT 28 4 "" + USE GMC KEY 2 + INPUT S0 F_DESGRMERC + DISPLAY "Descrizione@50" S0 + DISPLAY "Gruppo" CODTAB[1,3] + DISPLAY "Sottogruppo" CODTAB[4,5] + COPY OUTPUT F_SOTGRMERC + CHECKTYPE NORMAL + GROUP 2 +END + +TEXT DLG_NULL +BEGIN + PROMPT 1 5 "@bListini figli" +END + +SPREADSHEET F_LISTINI_FIGLI 78 4 +BEGIN + PROMPT 0 6 "@bListini figli" + ITEM "Cat.Ven." + ITEM "Codice" + ITEM "Ricarico@8" + ITEM "Descrizione@50" +END + +ENDPAGE + +ENDMASK + +///////////////////////////////////////// +//maschera di riga +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 listino figlio" -1 -1 78 22 + +STRING F_CATVEN 2 +BEGIN + PROMPT 1 1 "Cat. ven. " + FLAGS "U" + KEY 1 + USE CVE + INPUT CODTAB F_CATVEN + DISPLAY "Cat." CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CATVEN CODTAB + //OUTPUT F_DESVEN S0 + //CHECKTYPE FORCED +END + +STRING F_CODLIS 3 +BEGIN + PROMPT 1 2 "Listino " + FLAGS "U" +END + +STRING F_RICARICO 5 +BEGIN + PROMPT 1 3 "Ricarico " +END + +STRING F_DESLIS 50 +BEGIN + PROMPT 18 2 "" + FLAGS "" +END + +ENDPAGE + +ENDMASK \ No newline at end of file