Gestione causali richiamate e sulle righe
git-svn-id: svn://10.65.10.50/trunk@4623 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
0244542f38
commit
95aab17153
148
mg/mg1100.cpp
148
mg/mg1100.cpp
@ -24,14 +24,18 @@ class TMask_movmag: public TMask {
|
|||||||
real price_quant;
|
real price_quant;
|
||||||
bool price_proposed;
|
bool price_proposed;
|
||||||
real proposed_price(TString codart, real quant);
|
real proposed_price(TString codart, real quant);
|
||||||
static bool handle_righeprezzo(TMask_field &f, KEY k); // handler delle righe
|
bool update_rigamov (int r, const char * old_codcaus);
|
||||||
|
|
||||||
|
static bool notify_righe(TSheet_field & fld_righe, int item, KEY k); // notify delle righe di sheet
|
||||||
|
static bool handle_righe(TMask_field &f, KEY k); // handler delle righe
|
||||||
|
static bool handle_righeprezzo(TMask_field &f, KEY k); // handler del prezzo delle righe
|
||||||
static bool handle_codcaus(TMask_field &fld, KEY k); // handler della causale
|
static bool handle_codcaus(TMask_field &fld, KEY k); // handler della causale
|
||||||
static bool handle_datacomp(TMask_field &, KEY); // handler del numero di registrazione
|
static bool handle_datacomp(TMask_field &, KEY k); // handler del numero di registrazione
|
||||||
|
static void sheetrighe_put(TSheet_field &fld_righe, int item);
|
||||||
|
static void sheetrighe_get(TSheet_field &fld_righe, int item);
|
||||||
public:
|
public:
|
||||||
TMask_movmag(TMag_livelli *l_m,TMov_mag * m_m);
|
TMask_movmag(TMag_livelli *l_m,TMov_mag * m_m);
|
||||||
virtual ~TMask_movmag();
|
virtual ~TMask_movmag();
|
||||||
static void sheetrighe_put(TSheet_field &fld_righe, int item);
|
|
||||||
static void sheetrighe_get(TSheet_field &fld_righe, int item);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -40,21 +44,22 @@ static void sheetrighe_get(TSheet_field &fld_righe, int item);
|
|||||||
TMask_movmag::TMask_movmag(TMag_livelli *l_m,TMov_mag * m_m)
|
TMask_movmag::TMask_movmag(TMag_livelli *l_m,TMov_mag * m_m)
|
||||||
: TMask("mg1100")
|
: TMask("mg1100")
|
||||||
{
|
{
|
||||||
|
|
||||||
// oggetti dell'applicazione
|
// oggetti dell'applicazione
|
||||||
livelli_giac= l_m;
|
livelli_giac= l_m;
|
||||||
mov_mag = m_m;
|
mov_mag = m_m;
|
||||||
|
|
||||||
// setta handler e notify
|
// setta handler e notify
|
||||||
|
TSheet_field & ss=(TSheet_field &)field(F_RIGHE);
|
||||||
set_handler(F_DATACOMP, handle_datacomp);
|
set_handler(F_DATACOMP, handle_datacomp);
|
||||||
set_handler(F_CODCAUS, handle_codcaus);
|
set_handler(F_CODCAUS, handle_codcaus);
|
||||||
((TSheet_field &)field(F_RIGHE)).sheet_mask().field(F_PREZZO).set_handler(handle_righeprezzo);
|
ss.sheet_mask().field(F_PREZZO).set_handler(handle_righeprezzo);
|
||||||
((TSheet_field &)field(F_RIGHE)).sheet_mask().field(F_CODART).set_handler(handle_righeprezzo);
|
ss.sheet_mask().field(F_CODART).set_handler(handle_righeprezzo);
|
||||||
((TSheet_field &)field(F_RIGHE)).sheet_mask().field(F_QUANT).set_handler(handle_righeprezzo);
|
ss.sheet_mask().field(F_QUANT).set_handler(handle_righeprezzo);
|
||||||
((TSheet_field &)field(F_RIGHE)).set_userget(sheetrighe_get);
|
ss.set_notify(notify_righe);
|
||||||
((TSheet_field &)field(F_RIGHE)).set_userput(sheetrighe_put);
|
ss.set_handler(handle_righe);
|
||||||
((TSheet_field &)field(F_RIGHE)).set_lines_record(m_m->body());
|
ss.set_userget(sheetrighe_get);
|
||||||
|
ss.set_userput(sheetrighe_put);
|
||||||
|
ss.set_lines_record(m_m->body());
|
||||||
// setta i campi della maschera
|
// setta i campi della maschera
|
||||||
// per la pagina giacenze
|
// per la pagina giacenze
|
||||||
TSheet_field &fld_righe= (TSheet_field &)field(F_RIGHE);
|
TSheet_field &fld_righe= (TSheet_field &)field(F_RIGHE);
|
||||||
@ -137,6 +142,55 @@ void TMask_movmag::sheetrighe_put(TSheet_field &fld_righe, int item)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TMask_movmag::handle_righe(TMask_field &f, KEY k)
|
||||||
|
{
|
||||||
|
if (k == K_ENTER) {
|
||||||
|
TSheet_field & ss=(TSheet_field & )f;
|
||||||
|
for (int i=0; i< ss.items(); i++)
|
||||||
|
{
|
||||||
|
if (ss.cell(i,ss.cid2index(F_CODMAG))==NULL || *ss.cell(i,ss.cid2index(F_CODMAG)) ==' ')
|
||||||
|
{
|
||||||
|
f.error_box("Nella riga %d manca l'indicazione del magazzino ",i+1);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TMask_movmag::notify_righe(TSheet_field & ss, int r, KEY key)
|
||||||
|
{
|
||||||
|
static TString16 old_codcaus;
|
||||||
|
if ( key == K_DEL ) // Cancellazione
|
||||||
|
{
|
||||||
|
if (*ss.cell(r,ss.cid2index( F_AUTOMATICA))=='A')
|
||||||
|
return FALSE; // can't remove auto lines directly
|
||||||
|
if (r < ss.items()-1)
|
||||||
|
{
|
||||||
|
if (*ss.cell(r+1,ss.cid2index( F_AUTOMATICA))=='A')
|
||||||
|
{
|
||||||
|
ss.destroy(r + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (key == K_INS) { // Inserimento
|
||||||
|
{
|
||||||
|
if (*ss.cell(r,ss.cid2index( F_AUTOMATICA))=='A')
|
||||||
|
return FALSE; // cannot insert between a row and its generated one
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (key == K_SPACE) {
|
||||||
|
old_codcaus=ss.sheet_mask().get(F_CAUSRIG);
|
||||||
|
if (old_codcaus.blank())
|
||||||
|
old_codcaus=ss.mask().get(F_CODCAUS);
|
||||||
|
|
||||||
|
} else if (key == K_ENTER) {
|
||||||
|
TMask_movmag &m=(TMask_movmag &)ss.mask();
|
||||||
|
if (m.update_rigamov(r,old_codcaus))
|
||||||
|
ss.select(r+1);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TMask_movmag::handle_righeprezzo(TMask_field &f, KEY k)
|
bool TMask_movmag::handle_righeprezzo(TMask_field &f, KEY k)
|
||||||
@ -161,6 +215,48 @@ bool TMask_movmag::handle_righeprezzo(TMask_field &f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TMask_movmag::update_rigamov (int r, const char * old_codcaus)
|
||||||
|
{
|
||||||
|
TSheet_field & ss=(TSheet_field & )field(F_RIGHE);
|
||||||
|
TCausale_magazzino cau_riga();
|
||||||
|
|
||||||
|
TString16 new_codcaus(ss.cell(r,ss.cid2index(F_CAUSRIG)));
|
||||||
|
if (new_codcaus.blank())
|
||||||
|
new_codcaus=get(F_CODCAUS);
|
||||||
|
TCausale_magazzino oldcau(old_codcaus);
|
||||||
|
TCausale_magazzino cau(new_codcaus);
|
||||||
|
if (*cau.get_collegata()!='\0')
|
||||||
|
{
|
||||||
|
// deve esserci una riga collegata
|
||||||
|
TString16 codmag,coddep;
|
||||||
|
real prezzo(ss.cell(r,ss.cid2index(F_PREZZO)));
|
||||||
|
if (r < ss.items()-1 && *ss.cell(r+1,ss.cid2index( F_AUTOMATICA)) == ' ')
|
||||||
|
{
|
||||||
|
// manca, la inserisco
|
||||||
|
ss.insert(r+1);
|
||||||
|
ss.row(r+1)=ss.row(r);
|
||||||
|
} else {
|
||||||
|
codmag=ss.cell(r+1,ss.cid2index(F_CODMAG));
|
||||||
|
coddep=ss.cell(r+1,ss.cid2index(F_CODDEP));
|
||||||
|
ss.row(r+1)=ss.row(r);
|
||||||
|
}
|
||||||
|
ss.row(r+1).add(prezzo.string(),ss.cid2index(F_PREZZO));
|
||||||
|
ss.row(r+1).add(codmag,ss.cid2index(F_CODMAG));
|
||||||
|
ss.row(r+1).add(coddep,ss.cid2index(F_CODDEP));
|
||||||
|
ss.row(r+1).add(cau.get_collegata(),ss.cid2index(F_CAUSRIG));
|
||||||
|
ss.row(r+1).add("A",ss.cid2index(F_AUTOMATICA));
|
||||||
|
ss.check_row(r+1);
|
||||||
|
ss.force_update(r+1);
|
||||||
|
return TRUE;
|
||||||
|
} else
|
||||||
|
if (*oldcau.get_collegata()!='\0')
|
||||||
|
{
|
||||||
|
// scollega la vecchia riga
|
||||||
|
ss.destroy(r + 1);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
real TMask_movmag::proposed_price(TString codart,
|
real TMask_movmag::proposed_price(TString codart,
|
||||||
real quant)
|
real quant)
|
||||||
{
|
{
|
||||||
@ -192,6 +288,28 @@ real TMask_movmag::proposed_price(TString codart,
|
|||||||
|
|
||||||
bool TMask_movmag::handle_codcaus(TMask_field &fld, KEY k)
|
bool TMask_movmag::handle_codcaus(TMask_field &fld, KEY k)
|
||||||
{
|
{
|
||||||
|
static TString16 old_codcaus;
|
||||||
|
|
||||||
|
if (k == K_TAB && fld.focusdirty() && old_codcaus!="") {
|
||||||
|
// aggiorna le righe di sheet
|
||||||
|
TMask_movmag &m=(TMask_movmag &)fld.mask();
|
||||||
|
TSheet_field & ss=(TSheet_field & )m.field(F_RIGHE);
|
||||||
|
bool added_some;
|
||||||
|
|
||||||
|
for (int i=0; i< ss.items(); i++)
|
||||||
|
{
|
||||||
|
if (*ss.cell(i,ss.cid2index(F_CAUSRIG)) ==' ')
|
||||||
|
// la riga dipende dalla causale movimento
|
||||||
|
added_some &=(m.update_rigamov(i,old_codcaus));
|
||||||
|
}
|
||||||
|
if (added_some)
|
||||||
|
{
|
||||||
|
ss.dirty();
|
||||||
|
ss.set_focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (k == K_TAB)
|
||||||
|
old_codcaus=fld.get();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,12 +332,6 @@ bool TMask_movmag::handle_datacomp(TMask_field &fld, KEY k)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TApp_movmag: public TRelation_application {
|
class TApp_movmag: public TRelation_application {
|
||||||
TMask_movmag *_msk; // maschera principale
|
TMask_movmag *_msk; // maschera principale
|
||||||
TMag_livelli * _livelli_giac;// oggetto handler per i livelli di giacenza
|
TMag_livelli * _livelli_giac;// oggetto handler per i livelli di giacenza
|
||||||
|
@ -407,9 +407,10 @@ END
|
|||||||
SPREADSHEET F_RIGHE 77 12
|
SPREADSHEET F_RIGHE 77 12
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "RIGHE DI MOVIMENTO"
|
PROMPT 2 7 "RIGHE DI MOVIMENTO"
|
||||||
FLAGS "A"
|
FLAGS "AI"
|
||||||
USE LF_RMOVMAG KEY NRIG
|
USE LF_RMOVMAG KEY NRIG
|
||||||
INPUT NUMREG F_NUMREG
|
INPUT NUMREG F_NUMREG
|
||||||
|
ITEM " @1F"
|
||||||
ITEM "CodArt"
|
ITEM "CodArt"
|
||||||
ITEM "CodMag"
|
ITEM "CodMag"
|
||||||
ITEM "CodDep"
|
ITEM "CodDep"
|
||||||
@ -420,6 +421,7 @@ BEGIN
|
|||||||
ITEM "UM"
|
ITEM "UM"
|
||||||
ITEM "Qta"
|
ITEM "Qta"
|
||||||
ITEM "Prezzo"
|
ITEM "Prezzo"
|
||||||
|
ITEM "Causale"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
26
mg/mg1100a.h
26
mg/mg1100a.h
@ -1,15 +1,16 @@
|
|||||||
// colonne visibili dello Sheet
|
// colonne visibili dello Sheet
|
||||||
#define F_CODART 101
|
#define F_AUTOMATICA 101
|
||||||
#define F_CODMAG 102
|
#define F_CODART 102
|
||||||
#define F_CODDEP 103
|
#define F_CODMAG 103
|
||||||
#define F_LIV1 104
|
#define F_CODDEP 104
|
||||||
#define F_LIV2 105
|
#define F_LIV1 105
|
||||||
#define F_LIV3 106
|
#define F_LIV2 106
|
||||||
#define F_LIV4 107
|
#define F_LIV3 107
|
||||||
#define F_UM 108
|
#define F_LIV4 108
|
||||||
#define F_QUANT 109
|
#define F_UM 109
|
||||||
#define F_PREZZO 110
|
#define F_QUANT 110
|
||||||
|
#define F_PREZZO 111
|
||||||
|
#define F_CAUSRIG 112
|
||||||
|
|
||||||
// colonne non visibili dello Sheet
|
// colonne non visibili dello Sheet
|
||||||
#define F_DESMAG 150
|
#define F_DESMAG 150
|
||||||
@ -18,4 +19,7 @@
|
|||||||
#define H_GESTGIA 153
|
#define H_GESTGIA 153
|
||||||
#define F_UBICAZD 154
|
#define F_UBICAZD 154
|
||||||
#define F_DESART 155
|
#define F_DESART 155
|
||||||
|
#define F_VALORE 156
|
||||||
|
#define F_DESCAUSRIG 157
|
||||||
|
|
||||||
|
#define G_NOAUTO 1
|
@ -20,6 +20,15 @@ ENDPAGE
|
|||||||
|
|
||||||
PAGE "Righe movimenti" -1 -1 80 23
|
PAGE "Righe movimenti" -1 -1 80 23
|
||||||
|
|
||||||
|
STRING F_AUTOMATICA 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "Tipo riga "
|
||||||
|
FIELD AUTOMATICA
|
||||||
|
FLAGS "DG"
|
||||||
|
MESSAGE EMPTY ENABLE,G_NOAUTO@
|
||||||
|
MESSAGE DISABLE,G_NOAUTO@
|
||||||
|
END
|
||||||
|
|
||||||
STRING F_CODART 20
|
STRING F_CODART 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Codice articolo "
|
PROMPT 2 2 "Codice articolo "
|
||||||
@ -32,12 +41,12 @@ BEGIN
|
|||||||
OUTPUT F_CODART CODART
|
OUTPUT F_CODART CODART
|
||||||
OUTPUT F_DESART DESCR
|
OUTPUT F_DESART DESCR
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
|
GROUP G_NOAUTO
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESART 50
|
STRING F_DESART 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Descrizione "
|
PROMPT 2 3 "Descrizione "
|
||||||
FIELD CODART
|
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
USE LF_ANAMAG KEY 2
|
USE LF_ANAMAG KEY 2
|
||||||
INPUT DESCR F_DESART
|
INPUT DESCR F_DESART
|
||||||
@ -45,6 +54,7 @@ BEGIN
|
|||||||
DISPLAY "Codice@20" CODART
|
DISPLAY "Codice@20" CODART
|
||||||
COPY OUTPUT F_CODART
|
COPY OUTPUT F_CODART
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
|
GROUP G_NOAUTO
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CODMAG 3
|
STRING F_CODMAG 3
|
||||||
@ -139,8 +149,8 @@ BEGIN
|
|||||||
DISPLAY "Descr.@30" S0
|
DISPLAY "Descr.@30" S0
|
||||||
OUTPUT F_LIV1 CODTAB[2,12]
|
OUTPUT F_LIV1 CODTAB[2,12]
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
|
|
||||||
MESSAGE EMPTY RESET,F_LIV2|RESET,F_LIV3|RESET,F_LIV4
|
MESSAGE EMPTY RESET,F_LIV2|RESET,F_LIV3|RESET,F_LIV4
|
||||||
|
GROUP G_NOAUTO
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_LIV2 6
|
STRING F_LIV2 6
|
||||||
@ -155,6 +165,7 @@ BEGIN
|
|||||||
OUTPUT F_LIV2 CODTAB[2,12]
|
OUTPUT F_LIV2 CODTAB[2,12]
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
MESSAGE EMPTY RESET,F_LIV3|RESET,F_LIV4
|
MESSAGE EMPTY RESET,F_LIV3|RESET,F_LIV4
|
||||||
|
GROUP G_NOAUTO
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_LIV3 6
|
STRING F_LIV3 6
|
||||||
@ -167,6 +178,7 @@ BEGIN
|
|||||||
COPY DISPLAY F_LIV1
|
COPY DISPLAY F_LIV1
|
||||||
OUTPUT F_LIV3 CODTAB[2,12]
|
OUTPUT F_LIV3 CODTAB[2,12]
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
|
GROUP G_NOAUTO
|
||||||
MESSAGE EMPTY RESET,F_LIV4
|
MESSAGE EMPTY RESET,F_LIV4
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -180,6 +192,7 @@ BEGIN
|
|||||||
COPY DISPLAY F_LIV1
|
COPY DISPLAY F_LIV1
|
||||||
OUTPUT F_LIV4 CODTAB[2,12]
|
OUTPUT F_LIV4 CODTAB[2,12]
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
|
GROUP G_NOAUTO
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_UM 2
|
STRING F_UM 2
|
||||||
@ -195,6 +208,7 @@ BEGIN
|
|||||||
OUTPUT F_CODART CODART
|
OUTPUT F_CODART CODART
|
||||||
OUTPUT F_UM UM
|
OUTPUT F_UM UM
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
|
GROUP G_NOAUTO
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_QUANT 15 5
|
NUMBER F_QUANT 15 5
|
||||||
@ -203,6 +217,7 @@ BEGIN
|
|||||||
FIELD QUANT
|
FIELD QUANT
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "Indicare la quantità"
|
WARNING "Indicare la quantità"
|
||||||
|
GROUP G_NOAUTO
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_PREZZO 18 3
|
NUMBER F_PREZZO 18 3
|
||||||
@ -213,6 +228,34 @@ BEGIN
|
|||||||
WARNING "Indicare il prezzo"
|
WARNING "Indicare il prezzo"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_VALORE 15 5
|
||||||
|
BEGIN
|
||||||
|
FLAGS "D"
|
||||||
|
PROMPT 42 14 "Valore totale "
|
||||||
|
NUM_CALC #F_PREZZO*#F_QUANT
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA F_CAUSRIG 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 "Codice causale "
|
||||||
|
FIELD CAUS
|
||||||
|
USE CAU
|
||||||
|
FLAGS "U"
|
||||||
|
INPUT CODTAB F_CAUSRIG
|
||||||
|
DISPLAY "Codice " CODTAB
|
||||||
|
DISPLAY "Descrizione@50 " S0
|
||||||
|
OUTPUT F_CAUSRIG CODTAB
|
||||||
|
OUTPUT F_DESCAUSRIG S0
|
||||||
|
MESSAGE EMPTY RESET,F_DESCAUSRIG
|
||||||
|
GROUP G_NOAUTO
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_DESCAUSRIG 50 30
|
||||||
|
BEGIN
|
||||||
|
FLAGS "D"
|
||||||
|
PROMPT 42 15 ""
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
Loading…
x
Reference in New Issue
Block a user