Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
1) sistemati nomi campi conai in anamag e campi virtuali in rdoc
2) prosegue la gestione listini del futuro


git-svn-id: svn://10.65.10.50/trunk@19336 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2009-09-25 13:22:32 +00:00
parent 2d0815469f
commit 5ed2688fdd
7 changed files with 301 additions and 82 deletions

View File

@ -77,7 +77,7 @@ ARTLAVCONT|1|4|0|Art. Lavacont (Lavanderie)
MANGDEST|1|3|0|Mangano destinazione (Lavanderie)
LIVPERART|8|1|0|LIvellli di giacenza per articolo
G1|11|10|0|Campi virtuali
SCACONTR|1|24|0|Sottocategorie contributo CONAI (una ogni 4 caratteri)
CONAISC|1|24|0|Sottocategorie contributo CONAI (una ogni 4 caratteri)
USER1|1|40|0|Campo libero 1
USER2|1|20|0|Campo libero 2
USER3|1|20|0|Campo libero 3

View File

@ -610,7 +610,7 @@ END
STRING F_SCAACC 4
BEGIN
PROMPT 1 15 "Acciaio "
FIELD SCACONTR[1,4]
FIELD CONAISC[1,4]
USE &SCC SELECT CODTAB[1,2]=="AC"
INPUT CODTAB F_SCAACC
DISPLAY "Categoria" CODTAB[1,2]
@ -624,7 +624,7 @@ END
STRING F_SCAALL 4
BEGIN
PROMPT 27 15 "Alluminio "
FIELD SCACONTR[5,8]
FIELD CONAISC[5,8]
USE &SCC SELECT CODTAB[1,2]=="AL"
INPUT CODTAB F_SCAALL
COPY DISPLAY F_SCAACC
@ -636,7 +636,7 @@ END
STRING F_SCACAR 4
BEGIN
PROMPT 54 15 "Carta "
FIELD SCACONTR[9,12]
FIELD CONAISC[9,12]
USE &SCC SELECT CODTAB[1,2]=="CA"
INPUT CODTAB F_SCACAR
COPY DISPLAY F_SCAACC
@ -648,7 +648,7 @@ END
STRING F_SCAPLA 4
BEGIN
PROMPT 1 16 "Plastica "
FIELD SCACONTR[13,16]
FIELD CONAISC[13,16]
USE &SCC SELECT CODTAB[1,2]=="PL"
INPUT CODTAB F_SCAPLA
COPY DISPLAY F_SCAACC
@ -660,7 +660,7 @@ END
STRING F_SCALEG 4
BEGIN
PROMPT 27 16 "Legno "
FIELD SCACONTR[17,20]
FIELD CONAISC[17,20]
USE &SCC SELECT CODTAB[1,2]=="LE"
INPUT CODTAB F_SCALEG
COPY DISPLAY F_SCAACC
@ -672,7 +672,7 @@ END
STRING F_SCAVET 4
BEGIN
PROMPT 54 16 "Vetro "
FIELD SCACONTR[21,24]
FIELD CONAISC[21,24]
USE &SCC SELECT CODTAB[1,2]=="VE"
INPUT CODTAB F_SCAVET
COPY DISPLAY F_SCAACC

View File

@ -16,8 +16,12 @@ class TGestione_listini_semplice_mask: public TAutomask
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void crea_listino_da_anagrafica();
void copia_listino();
public:
int find_art(TSheet_field& s, const char tipo, const TString& art, const int tranne = -1) const;
int guess_art(TSheet_field& s, const char tipo, const TString& art) const;
TGestione_listini_semplice_mask();
};
@ -34,15 +38,66 @@ TGestione_listini_semplice_mask::TGestione_listini_semplice_mask() : TAutomask("
efield(F_L_CATVEN).reset_key(1);
}
//metodo per la ricerca al volo di un articolo (serve per posizionare il cursore sullo sheet in tempo reale..
//..mentre si digita il codice articolo nel campo di ricerca
int TGestione_listini_semplice_mask::guess_art(TSheet_field& s, const char tipo, const TString& art) const
{
return 0;
}
//metodo che restituisce l'indice della riga dello sheet che contiene
//la coppia tipo-articolo desiderata (-1 se non lo trova)
int TGestione_listini_semplice_mask::find_art(TSheet_field& s, const char tipo, const TString& art, const int tranne) const
{
int r = -1;
//scorro le righe dello sheet partendo dall'ultima
//tranne serve per evitare una riga specifica;di default è posto =-1 perchè non si usa
for (r = s.items() - 1; r >= 0; r--)
{
if (r != tranne)
{
const char* tiporiga = s.row(r).get(0);
const char* codart = s.row(r).get(1);
if (tipo == tiporiga[0] && art == codart)
break;
}
}
return r;
}
void TGestione_listini_semplice_mask::crea_listino_da_anagrafica()
{
}
void TGestione_listini_semplice_mask::copia_listino()
{
}
bool TGestione_listini_semplice_mask::on_field_event(TOperable_field &o, TField_event e, long jolly)
{
switch(o.dlg())
{
case F_L_CODRIGA_A:
case F_L_CODRIGA_G:
case F_L_CODRIGA_S:
case F_L_CODRIGA_R:
if (e == fe_modify)
{
const char tiporiga = get(F_L_TIPORIGA)[0];
const TString& codriga = o.get();
TSheet_field& sf_righe = sfield(F_L_RIGHE);
const long riga = find_art(sf_righe, tiporiga, codriga);
if (riga >= 0)
sf_righe.select(riga, true);
}
break;
//se abilita la gestione scaglioni nello sheet devono comparire le colonne NSCAGL e QLIM
case F_L_GESTSCAGL:
if (e == fe_init || e == fe_modify)
{
TSheet_field& sf_righe = sfield(F_RIGHE);
TSheet_field& sf_righe = sfield(F_L_RIGHE);
const bool gest_scagl = o.get().full();
sf_righe.enable_column(F_NSCAGL, gest_scagl);
sf_righe.enable_column(F_QLIM, gest_scagl);
@ -54,7 +109,7 @@ bool TGestione_listini_semplice_mask::on_field_event(TOperable_field &o, TField_
case F_L_GESTUM:
if (e == fe_init || e == fe_modify)
{
TSheet_field& sf_righe = sfield(F_RIGHE);
TSheet_field& sf_righe = sfield(F_L_RIGHE);
const bool gest_um = o.get().full();
sf_righe.enable_column(F_UM, gest_um);
@ -65,7 +120,7 @@ bool TGestione_listini_semplice_mask::on_field_event(TOperable_field &o, TField_
case F_L_GESTSCO:
if (e == fe_init || e == fe_modify)
{
TSheet_field& sf_righe = sfield(F_RIGHE);
TSheet_field& sf_righe = sfield(F_L_RIGHE);
const bool gest_sco = o.get().full();
sf_righe.enable_column(F_ADDIVA, gest_sco);
sf_righe.enable_column(F_CODIVA, gest_sco);
@ -78,6 +133,30 @@ bool TGestione_listini_semplice_mask::on_field_event(TOperable_field &o, TField_
sf_righe.force_update();
}
break;
//controllo della unicità del tiporiga+codriga nello sheet
case F_L_RIGHE:
if (e == se_notify_modify)
{
TSheet_field& sf_righe = sfield(F_L_RIGHE);
TToken_string& riga = sf_righe.row(jolly);
const char tipo = riga.get_char(0);
const TString& art = riga.get(1);
const long found_riga = find_art(sf_righe, tipo, art, jolly);
if (found_riga >= 0)
return error_box(TR("Non è possibile inserire lo stesso articolo più di una volta!"));
}
break;
case DLG_CREA:
if (e == fe_button)
{
crea_listino_da_anagrafica();
}
break;
case DLG_COPIA:
{
copia_listino();
}
break;
default:
break;
}
@ -93,9 +172,8 @@ class TGestione_listini_semplice : public TRelation_application
TRelation* _rel;
private:
void save_rows(const TMask& m);
void save_rows();
TString build_query() const;
int find_art(TSheet_field& s, const char tipo, const TString& art) const;
protected:
virtual bool user_create();
@ -121,25 +199,11 @@ public:
};
//FIND_ART: metodo che restituisce l'indice della riga dello sheet che contiene
//la coppia tipo-articolo desiderata (-1 se non lo trova)
int TGestione_listini_semplice::find_art(TSheet_field& s, const char tipo, const TString& art) const
{
int r = -1;
//scorro le righe dello sheet partendo dall'ultima
for (r = s.items() - 1; r >= 0; r--)
{
const char* tiporiga = s.row(r).get(0);
const char* codart = s.row(r).get(1);
if (tipo == tiporiga[0] && art == codart)
break;
}
return r;
}
void TGestione_listini_semplice::save_rows(const TMask& m)
void TGestione_listini_semplice::save_rows()
{
//attenzione!!! fatto questo casino per poter usare la find_art() che è un metodo della maschera listini
const TGestione_listini_semplice_mask& m = *_mask;
//instanzio un TISAM_recordset sulle righe listino e un localisamfile
TISAM_recordset righelist(build_query());
righelist.set_var("#CATVEN", m.get(F_L_CATVEN));
@ -150,7 +214,7 @@ void TGestione_listini_semplice::save_rows(const TMask& m)
TLocalisamfile& file = righelist.cursor()->file();
//sheet righe listino da salvare! (righe panda?)
TSheet_field& righe = m.sfield(F_RIGHE);
TSheet_field& righe = m.sfield(F_L_RIGHE);
//scorro tutte le righe listino ed elimino tutte quelle che non ci sono più sullo sheet (modifiche utonto)
for (bool ok = righelist.move_first(); ok; ok = righelist.move_next())
@ -158,7 +222,7 @@ void TGestione_listini_semplice::save_rows(const TMask& m)
const char tiporiga = righelist.get("TIPORIGA").as_string()[0];
const TString& art = righelist.get("CODRIGA").as_string();
if (find_art(righe, tiporiga, art) < 0)
if (m.find_art(righe, tiporiga, art) < 0)
file.remove();
}
@ -242,7 +306,7 @@ int TGestione_listini_semplice::read(TMask& m)
const TRectype& rec = righelist.cursor()->curr();
//recupero sheet e realtiva mashera di riga
TSheet_field& sf_righe = m.sfield(F_RIGHE);
TSheet_field& sf_righe = m.sfield(F_L_RIGHE);
TMask& msk = sf_righe.sheet_mask();
sf_righe.destroy();
@ -273,7 +337,7 @@ int TGestione_listini_semplice::rewrite(const TMask& m)
int err = TRelation_application::rewrite(m);
if(err == NOERR)
save_rows(m);
save_rows();
return err;
}
@ -283,7 +347,7 @@ int TGestione_listini_semplice::write(const TMask& m)
int err = TRelation_application::write(m);
if(err == NOERR)
save_rows(m);
save_rows();
return err;
}

View File

@ -1,33 +1,42 @@
//maschera gestione listini comprensibile
#define F_L_CATVEN 201
#define F_L_DESVEN 202
#define F_L_COD 203
#define F_L_DESCR 204
#define F_VALINI 205
#define F_VALFIN 206
#define F_L_CATVEN 201
#define F_L_DESVEN 202
#define F_L_COD 203
#define F_L_DESCR 204
#define F_L_VALINI 205
#define F_L_VALFIN 206
#define F_L_TIPORIGA 207
#define F_L_CODRIGA_A 208
#define F_L_DESRIGA_A 209
#define F_L_CODRIGA_G 210
#define F_L_DESRIGA_G 211
#define F_L_CODRIGA_S 212
#define F_L_DESRIGA_S 213
#define F_L_CODRIGA_R 214
#define F_L_DESRIGA_R 215
#define F_RIGHE 207
#define F_L_RIGHE 216
#define F_L_CODVAL 208
#define F_L_CAMBIO 209
#define F_L_CONTROEURO 210
#define F_L_DATACAM 211
#define F_L_GESTSCAGL 212
#define F_L_DECIMALI 213
#define F_L_SEQRIC_1 214
#define F_L_SEQRIC_2 215
#define F_L_SEQRIC_3 216
#define F_L_SEQRIC_4 217
#define F_L_IMPLORDI 218
#define F_L_GESTUM 219
#define F_L_GESTSCO 220
#define F_L_CODSUCC 221
#define F_L_DESSUCC 222
#define F_L_FATHCATVEN 223
#define F_L_FATHDESVEN 224
#define F_L_FATHCOD 225
#define F_L_FATHDESCR 226
#define F_L_ARROTONDA 227
#define F_L_CODVAL 217
#define F_L_CAMBIO 218
#define F_L_CONTROEURO 219
#define F_L_DATACAM 220
#define F_L_GESTSCAGL 221
#define F_L_DECIMALI 222
#define F_L_SEQRIC_1 223
#define F_L_SEQRIC_2 224
#define F_L_SEQRIC_3 225
#define F_L_SEQRIC_4 226
#define F_L_IMPLORDI 227
#define F_L_GESTUM 228
#define F_L_GESTSCO 229
#define F_L_CODSUCC 230
#define F_L_DESSUCC 231
#define F_L_FATHCATVEN 232
#define F_L_FATHDESVEN 233
#define F_L_FATHCOD 234
#define F_L_FATHDESCR 235
#define F_L_ARROTONDA 236
//campi dello sheet delle righe
#define F_TIPORIGA 101
@ -56,6 +65,11 @@
#define F_DATAULTAUM 118
#define F_PERCPROVV 119
//bottoni
#define DLG_CREA 501
#define DLG_COPIA 502

View File

@ -2,6 +2,19 @@
TOOLBAR "Toolbar" 0 0 0 2
#include <relapbar.h>
BUTTON DLG_CREA 2 2
BEGIN
PROMPT 10 -1 "Cr~ea"
PICTURE TOOL_IMPORT
END
BUTTON DLG_COPIA 2 2
BEGIN
PROMPT 11 -1 "Co~pia"
PICTURE TOOL_COPY
END
ENDPAGE
PAGE "Dati generali e Righe" 0 2 0 0
@ -73,26 +86,151 @@ BEGIN
FIELD DESCR
END
DATA F_VALINI
DATA F_L_VALINI
BEGIN
PROMPT 1 3 "Inizio validita` "
FIELD VALIN
END
DATA F_VALFIN
DATA F_L_VALFIN
BEGIN
PROMPT 42 3 "Fine validita` "
FIELD VALFIN
END
TEXT -1
//campi di ricerca parziale sullo sheet
//-------------------------------------
LIST F_L_TIPORIGA 1 13
BEGIN
PROMPT 0 5 "@bRighe listino"
PROMPT 1 5 ""
FLAGS "P"
ITEM "A|Articolo"
MESSAGE HIDE,2@|HIDE,3@|HIDE,4@|SHOW,1@
ITEM "G|Gr. merc."
MESSAGE HIDE,1@|HIDE,3@|HIDE,4@|SHOW,2@
ITEM "S|Sotgr.merc."
MESSAGE HIDE,1@|HIDE,2@|HIDE,4@|SHOW,3@
ITEM "R|Ragg. fisc."
MESSAGE HIDE,1@|HIDE,2@|HIDE,3@|SHOW,4@
END
SPREADSHEET F_RIGHE
STRING F_L_CODRIGA_A 20
BEGIN
PROMPT 1 6 "Righe"
PROMPT 18 5 ""
FLAGS "U"
USE LF_ANAMAG
INPUT CODART F_L_CODRIGA_A
DISPLAY "Articolo@20" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT F_L_CODRIGA_A CODART
OUTPUT F_L_DESRIGA_A DESCR
//CHECKTYPE FORCED
ADD RUN ve2 -3
GROUP 1
END
STRING F_L_DESRIGA_A 50 33
BEGIN
PROMPT 42 5 ""
USE LF_ANAMAG KEY 2
INPUT DESCR F_L_DESRIGA_A
DISPLAY "Descrizione@50" DESCR
DISPLAY "Articolo@20" CODART
COPY OUTPUT F_L_CODRIGA_A
//CHECKTYPE NORMAL
ADD RUN ve2 -3
GROUP 1
END
STRING F_L_CODRIGA_G 20 3
BEGIN
PROMPT 18 5 ""
FLAGS "U"
USE GMC SELECT CODTAB[4,5] == ""
INPUT CODTAB[1,3] F_L_CODRIGA_G
DISPLAY "Gr. merc." CODTAB[1,3]
DISPLAY "Descrizione@50" S0
OUTPUT F_L_CODRIGA_G CODTAB[1,3]
OUTPUT F_L_DESRIGA_G S0
//CHECKTYPE FORCED
GROUP 2
END
STRING F_L_DESRIGA_G 50
BEGIN
PROMPT 25 5 ""
USE GMC KEY 2 SELECT CODTAB[4,5] == ""
INPUT S0 F_DESRIGA_G
DISPLAY "Descrizione@50" S0
DISPLAY "Gr. merc." CODTAB[1,3]
COPY OUTPUT F_L_CODRIGA_G
//CHECKTYPE NORMAL
GROUP 2
END
STRING F_L_CODRIGA_S 20 5
BEGIN
PROMPT 18 5 ""
FLAGS "U"
USE GMC SELECT CODTAB[4,5] != ""
INPUT CODTAB F_L_CODRIGA_S
DISPLAY "Gruppo merc." CODTAB[1,3]
DISPLAY "Sottogr. merc." CODTAB[4,5]
DISPLAY "Descrizione@50" S0
OUTPUT F_L_CODRIGA_S CODTAB
OUTPUT F_L_DESRIGA_S S0
//CHECKTYPE FORCED
GROUP 3
END
STRING F_L_DESRIGA_S 50 48
BEGIN
PROMPT 27 5 ""
USE GMC KEY 2 SELECT CODTAB[4,5] != ""
INPUT S0 F_L_DESRIGA_S
DISPLAY "Descrizione@50" S0
DISPLAY "Gr. merc." CODTAB[1,3]
DISPLAY "Sottogr. merc." CODTAB[4,5]
COPY OUTPUT F_L_CODRIGA_S
//CHECKTYPE NORMAL
GROUP 3
END
STRING F_L_CODRIGA_R 20 5
BEGIN
PROMPT 18 5 ""
FLAGS "U"
USE RFA
INPUT CODTAB F_L_CODRIGA_R
DISPLAY "Ragg. fisc." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_L_CODRIGA_R CODTAB
OUTPUT F_L_DESRIGA_R S0
//CHECKTYPE FORCED
GROUP 4
END
STRING F_L_DESRIGA_R 50 48
BEGIN
PROMPT 27 5 ""
USE RFA KEY 2
INPUT S0 F_L_DESRIGA_R
DISPLAY "Descrizione@50" S0
DISPLAY "Ragg. fisc." CODTAB
COPY OUTPUT F_L_CODRIGA_R
//CHECKTYPE NORMAL
GROUP 4
END
//------------------------------------------
TEXT -1
BEGIN
PROMPT 0 6 "@bRighe listino"
END
SPREADSHEET F_L_RIGHE
BEGIN
PROMPT 1 7 "Righe"
ITEM "Tipo@4"
ITEM "Codice@20"
ITEM "Descrizione@50"
@ -450,6 +588,7 @@ BEGIN
DISPLAY "Descrizione@50" S0
DISPLAY "Gr. merc." CODTAB[1,3]
COPY OUTPUT F_CODRIGA_G
CHECKTYPE NORMAL
GROUP 2
END
@ -478,6 +617,7 @@ BEGIN
DISPLAY "Gr. merc." CODTAB[1,3]
DISPLAY "Sottogr. merc." CODTAB[4,5]
COPY OUTPUT F_CODRIGA_S
CHECKTYPE NORMAL
GROUP 3
END
@ -504,6 +644,7 @@ BEGIN
DISPLAY "Descrizione@50" S0
DISPLAY "Ragg. fisc." CODTAB
COPY OUTPUT F_CODRIGA_R
CHECKTYPE NORMAL
GROUP 4
END

View File

@ -836,7 +836,7 @@ const char* conai_peso_name(TCONAI_class type, int logicnum)
{
if (conai_configured_class(type))
{
const char* const __conai_peso_rdoc[] = {"PUNACC", "PUNALL", "PUNCAR", "PUNPLA", "PUNLEG", "PUNVET"};
const char* const __conai_peso_rdoc[] = {"CONPUACC", "CONPUALL", "CONPUCAR", "CONPUPLA", "CONPULEG", "CONPUVET"};
const char* const __conai_peso_anmg[] = {"CONACC", "CONALL", "CONCAR", "CONPLA", "CONLEG", "CONVET"};
switch (logicnum)
{
@ -854,9 +854,9 @@ const char* conai_sottocat_name(TCONAI_class type, int logicnum)
if (conai_configured_class(type))
{
const char* const __conai_scat_rdoc[CONAI_CLASSES] =
{ "SCAACC", "SCAALL", "SCACAR", "SCAPLA", "SCALEG", "SCAVET" };
{ "CONSCACC", "CONSCALL", "CONSCCAR", "CONSCPLA", "CONSCLEG", "CONSCVET" };
const char* const __conai_scat_anmg[CONAI_CLASSES] =
{ "SCACONTR[1,4]", "SCACONTR[5,8]", "SCACONTR[9,12]", "SCACONTR[13,16]", "SCACONTR[17,20]", "SCACONTR[21,24]" };
{ "CONAISC[1,4]", "CONAISC[5,8]", "CONAISC[9,12]", "CONAISC[13,16]", "CONAISC[17,20]", "CONAISC[21,24]" };
switch (logicnum)
{
case LF_ANAMAG : return __conai_scat_anmg[type];

View File

@ -2096,13 +2096,13 @@ BEGIN
DISPLAY "Sottocategoria" CODTAB[3,4]
DISPLAY "Descrizione@50" S0
OUTPUT FR_SCAACC CODTAB
FIELD SCAACC
FIELD CONSCACC
END
NUMBER FR_PUNACC 13 5
BEGIN
PROMPT 40 1 "Peso unitario "
FIELD PUNACC
FIELD CONPUACC
END
STRING FR_SCAALL 4
@ -2112,13 +2112,13 @@ BEGIN
INPUT CODTAB FR_SCAALL
COPY DISPLAY FR_SCAACC
OUTPUT FR_SCAALL CODTAB
FIELD SCAALL
FIELD CONSCALL
END
NUMBER FR_PUNALL 13 5
BEGIN
PROMPT 40 2 "Peso unitario "
FIELD PUNALL
FIELD CONPUALL
END
STRING FR_SCACAR 4
@ -2128,13 +2128,13 @@ BEGIN
INPUT CODTAB FR_SCACAR
COPY DISPLAY FR_SCAACC
OUTPUT FR_SCACAR CODTAB
FIELD SCACAR
FIELD CONSCCAR
END
NUMBER FR_PUNCAR 13 5
BEGIN
PROMPT 40 3 "Peso unitario "
FIELD PUNCAR
FIELD CONPUCAR
END
STRING FR_SCAPLA 4
@ -2144,13 +2144,13 @@ BEGIN
INPUT CODTAB FR_SCAPLA
COPY DISPLAY FR_SCAACC
OUTPUT FR_SCAPLA CODTAB
FIELD SCAPLA
FIELD CONSCPLA
END
NUMBER FR_PUNPLA 13 5
BEGIN
PROMPT 40 4 "Peso unitario "
FIELD PUNPLA
FIELD CONPUPLA
END
STRING FR_SCALEG 4
@ -2160,13 +2160,13 @@ BEGIN
INPUT CODTAB FR_SCALEG
COPY DISPLAY FR_SCAACC
OUTPUT FR_SCALEG CODTAB
FIELD SCALEG
FIELD CONSCLEG
END
NUMBER FR_PUNLEG 13 5
BEGIN
PROMPT 40 5 "Peso unitario "
FIELD PUNLEG
FIELD CONPULEG
END
STRING FR_SCAVET 4
@ -2176,13 +2176,13 @@ BEGIN
INPUT CODTAB FR_SCAVET
COPY DISPLAY FR_SCAACC
OUTPUT FR_SCAVET CODTAB
FIELD SCAVET
FIELD CONSCVET
END
NUMBER FR_PUNVET 13 5
BEGIN
PROMPT 40 6 "Peso unitario "
FIELD PUNVET
FIELD CONPUVET
END
#endif