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
This commit is contained in:
parent
3928108790
commit
1c6584e817
@ -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
|
||||
|
@ -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;
|
||||
|
2
ve/ve2.h
2
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
|
||||
|
||||
|
216
ve/ve2700.cpp
Executable file
216
ve/ve2700.cpp
Executable file
@ -0,0 +1,216 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <config.h>
|
||||
#include <recarray.h>
|
||||
#include <recset.h>
|
||||
#include <relapp.h>
|
||||
|
||||
#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;
|
||||
}
|
51
ve/ve2700.h
Executable file
51
ve/ve2700.h
Executable file
@ -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*/
|
64
ve/ve2700a.uml
Executable file
64
ve/ve2700a.uml
Executable file
@ -0,0 +1,64 @@
|
||||
#include "ve2700.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 0 0 2
|
||||
|
||||
#include <stdbar.h>
|
||||
|
||||
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
|
172
ve/ve2700b.uml
Executable file
172
ve/ve2700b.uml
Executable file
@ -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 <cancelbar.h>
|
||||
|
||||
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
|
Loading…
x
Reference in New Issue
Block a user