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:
luca 2009-10-02 10:32:26 +00:00
parent 3928108790
commit 1c6584e817
7 changed files with 508 additions and 2 deletions

View File

@ -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

View File

@ -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;

View File

@ -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
View 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
View 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
View 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
View 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