Uso dell'oggetto tmagazzini

Magazzini e depositi di default e gestione magazzino singolo


git-svn-id: svn://10.65.10.50/trunk@5078 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1997-08-20 09:39:42 +00:00
parent 9a3ddc9d33
commit 0b3e4f296e
4 changed files with 92 additions and 53 deletions

View File

@ -37,6 +37,7 @@ class TMask_movmag: public TMask {
static void sheetrighe_put(TSheet_field &fld_righe, int item); static void sheetrighe_put(TSheet_field &fld_righe, int item);
static void sheetrighe_get(TSheet_field &fld_righe, int item); static void sheetrighe_get(TSheet_field &fld_righe, int item);
public: public:
TMagazzini magazzini;
TMask_movmag(TCodgiac_livelli *l_m,TMov_mag * m_m); TMask_movmag(TCodgiac_livelli *l_m,TMov_mag * m_m);
virtual ~TMask_movmag(); virtual ~TMask_movmag();
}; };
@ -79,6 +80,9 @@ TMask_movmag::TMask_movmag(TCodgiac_livelli *l_m,TMov_mag * m_m)
field(F_CATVEN).show(prassid.get_bool("GESLISCV")); field(F_CATVEN).show(prassid.get_bool("GESLISCV"));
else else
field(F_CATVEN).hide(); field(F_CATVEN).hide();
ss.sheet_mask().field(F_DESMAG).enable(magazzini.gestmultimag());
ss.enable_column(ss.cid2index(F_CODMAG),magazzini.gestmultimag());
} }
@ -137,6 +141,7 @@ bool TMask_movmag::handle_righe(TMask_field &f, KEY k)
bool TMask_movmag::notify_righe(TSheet_field & ss, int r, KEY key) bool TMask_movmag::notify_righe(TSheet_field & ss, int r, KEY key)
{ {
TMask_movmag &m=(TMask_movmag &)ss.mask();
static TString16 old_codcaus; static TString16 old_codcaus;
if ( key == K_DEL ) // Cancellazione if ( key == K_DEL ) // Cancellazione
{ {
@ -151,18 +156,20 @@ bool TMask_movmag::notify_righe(TSheet_field & ss, int r, KEY key)
} }
} else if (key == K_INS) { // Inserimento } else if (key == K_INS) { // Inserimento
if (*ss.cell(r,ss.cid2index( F_AUTOMATICA))==riga_automatica)
return FALSE; // cannot insert between a row and its generated one
} else if (key == K_CTRL + K_INS) { // Inserimento accordato
if (m.magazzini.standardmag().not_empty())
{ {
if (*ss.cell(r,ss.cid2index( F_AUTOMATICA))==riga_automatica) ss.row(r).add(m.magazzini.standardmag(),ss.cid2index(F_CODMAG));
return FALSE; // cannot insert between a row and its generated one ss.row(r).add(m.magazzini.standarddep(),ss.cid2index(F_CODDEP));
} }
} else if (key == K_SPACE) { } else if (key == K_SPACE) {
old_codcaus=ss.sheet_mask().get(F_CAUSRIG); old_codcaus=ss.sheet_mask().get(F_CAUSRIG);
if (old_codcaus.blank()) if (old_codcaus.blank())
old_codcaus=ss.mask().get(F_CODCAUS); old_codcaus=ss.mask().get(F_CODCAUS);
} else if (key == K_ENTER) { } else if (key == K_ENTER) {
TMask_movmag &m=(TMask_movmag &)ss.mask();
if (m.update_rigamov(r,old_codcaus)) if (m.update_rigamov(r,old_codcaus))
ss.select(r+1); ss.select(r+1);
} }

View File

@ -61,7 +61,7 @@ END
STRING F_CODMAG 3 STRING F_CODMAG 3
BEGIN BEGIN
PROMPT 2 5 "Magazzino " PROMPT 2 5 "Magazzino "
FLAGS "U" FLAGS "UG"
FIELD CODMAG[1,3] FIELD CODMAG[1,3]
USE MAG SELECT CODTAB[4,5]=="" USE MAG SELECT CODTAB[4,5]==""
INPUT CODTAB F_CODMAG INPUT CODTAB F_CODMAG
@ -80,8 +80,8 @@ BEGIN
PROMPT 2 6 "Deposito " PROMPT 2 6 "Deposito "
FLAGS "U" FLAGS "U"
FIELD CODMAG[4,5] FIELD CODMAG[4,5]
USE MAG USE MAG SELECT CODTAB[4,5]!=""
INPUT CODTAB[1,3] F_CODMAG INPUT CODTAB[1,3] F_CODMAG SELECT
INPUT CODTAB[4,5] F_CODDEP INPUT CODTAB[4,5] F_CODDEP
DISPLAY "Cod. magazzino" CODTAB[1,3] DISPLAY "Cod. magazzino" CODTAB[1,3]
DISPLAY "Cod. deposito" CODTAB[4,5] DISPLAY "Cod. deposito" CODTAB[4,5]
@ -97,13 +97,14 @@ END
STRING F_DESMAG 50 STRING F_DESMAG 50
BEGIN BEGIN
PROMPT 22 5 "" PROMPT 22 5 ""
USE MAG KEY 2 USE MAG KEY 2 SELECT CODTAB[4,5]==""
INPUT S0 F_DESMAG INPUT S0 F_DESMAG
DISPLAY "Denominazione mag.@50" S0 DISPLAY "Denominazione mag.@50" S0
DISPLAY "Cod. magazzino" CODTAB[1,3] DISPLAY "Cod. magazzino" CODTAB[1,3]
DISPLAY "Cod. deposito" CODTAB[4,5] DISPLAY "Cod. deposito" CODTAB[4,5]
OUTPUT F_CODMAG CODTAB[1,3] OUTPUT F_CODMAG CODTAB[1,3]
OUTPUT F_CODDEP CODTAB[4,5] CHECKTYPE NORMAL
MESSAGE EMPTY CHECK,F_CODMAG
// GUIDO!!!!!!!!!!!!!!!!! in che ordine vengono eseguiti gli output // GUIDO!!!!!!!!!!!!!!!!! in che ordine vengono eseguiti gli output
// a cascata??? perchè mi ritrovo il coddep cancellato??? // a cascata??? perchè mi ritrovo il coddep cancellato???
END END
@ -113,18 +114,20 @@ STRING F_DESDEP 50
BEGIN BEGIN
PROMPT 22 6 "" PROMPT 22 6 ""
FLAGS "H" FLAGS "H"
COPY USE F_DESMAG USE MAG KEY 2 SELECT (CODTAB[4,5]!="")&&(CODTAB[1,3]==#F_CODMAG)
INPUT S0 F_DESDEP INPUT S0 F_DESDEP
COPY DISPLAY F_DESMAG COPY DISPLAY F_DESMAG
COPY OUTPUT F_DESMAG OUTPUT F_CODDEP CODTAB[4,5]
// MESSAGE K_TAB,F_CODDEP OUTPUT F_DESDEP S0
CHECKTYPE NORMAL
MESSAGE EMPTY CHECK,F_CODDEP
END END
STRING H_DESMAG 50 STRING H_DESMAG 50
BEGIN BEGIN
PROMPT 22 5 "" PROMPT 22 5 ""
FLAGS "D" FLAGS "DH"
END END
//Abilitazione/disabil. dei campi relativi al deposito //Abilitazione/disabil. dei campi relativi al deposito
@ -132,8 +135,8 @@ BOOLEAN H_GESTGIA
BEGIN BEGIN
PROMPT 1 1 "" PROMPT 1 1 ""
FLAGS "HG" FLAGS "HG"
MESSAGE TRUE ENABLE,F_CODDEP|CHECK,F_CODDEP|SHOW,F_DESDEP|SHOW,H_DESMAG|HIDE,F_DESMAG MESSAGE TRUE ENABLE,F_CODDEP|CHECK,F_CODDEP|SHOW,F_DESDEP
MESSAGE FALSE RESET,F_CODDEP|RESET,F_DESDEP|DISABLE,F_CODDEP|HIDE,F_DESDEP|HIDE,H_DESMAG|SHOW,F_DESMAG MESSAGE FALSE RESET,F_CODDEP|RESET,F_DESDEP|DISABLE,F_CODDEP|HIDE,F_DESDEP
END END
//Livelli giacenza //Livelli giacenza

View File

@ -46,7 +46,9 @@ class TMask_anamag: public TMask {
bool check_totali_storico(); bool check_totali_storico();
public: public:
void ricalcola_giacenze(); void ricalcola_giacenze();
TString16 um_principale; TString16 um_principale;
TMagazzini magazzini;
TEsercizi_contabili esercizi_contabili; TEsercizi_contabili esercizi_contabili;
TMask_anamag(TRelation * rel,bool mg_autorized); TMask_anamag(TRelation * rel,bool mg_autorized);
@ -94,17 +96,17 @@ TMask_anamag::TMask_anamag(TRelation * rel,bool mg_autorized) : TMask("ve2400")
// *************************************************** // ***************************************************
// ABILITAZIONI PARAMETRICHE // ABILITAZIONI PARAMETRICHE
TConfig mgconfig(CONFIG_DITTA, "mg");
// Abilita la pagina delle giacenze // Abilita la pagina delle giacenze
if (mg_autorized && mgconfig.get_bool("GESMAG")) if (mg_autorized && magazzini.gestmag())
{ {
enable_page(3,TRUE); enable_page(3,TRUE);
enable_page(4,TRUE); enable_page(4,TRUE);
// setta i campi della maschera per la pagina giacenze // setta i campi della maschera per la pagina giacenze
TSheet_field &fld_stomag= (TSheet_field &)field(F_SHEETSTOMAG);
TSheet_field &fld_giac= (TSheet_field &)field(F_SHEETGIAC); TSheet_field &fld_giac= (TSheet_field &)field(F_SHEETGIAC);
// disabilita le colonne quando non sono utilizzati i livelli di giacenza // disabilita le colonne quando non sono utilizzati i livelli di giacenza
for (int i=0; i<4; i++) for (int i=0; i<4; i++)
{ {
livelli_giac->set_sheetcolumn(fld_giac,F_LIV1+i,i+1); livelli_giac->set_sheetcolumn(fld_giac,F_LIV1+i,i+1);
} }
@ -114,7 +116,7 @@ TMask_anamag::TMask_anamag(TRelation * rel,bool mg_autorized) : TMask("ve2400")
fld_giac.sheet_mask().field(F_NDIST).enable(FALSE); fld_giac.sheet_mask().field(F_NDIST).enable(FALSE);
} }
// abilita la gestione delle ubicazioni (manuale/su tabella) // abilita la gestione delle ubicazioni (manuale/su tabella)
if (mgconfig.get("GESUBICAZ")=="M") { if (magazzini.gestubi_man()) {
fld_giac.sheet_mask().field(F_UBICAZ).show(FALSE); fld_giac.sheet_mask().field(F_UBICAZ).show(FALSE);
fld_giac.sheet_mask().field(F_UBICAZD).show(FALSE); fld_giac.sheet_mask().field(F_UBICAZD).show(FALSE);
fld_giac.sheet_mask().field(F_UBICAZ2).show(TRUE); fld_giac.sheet_mask().field(F_UBICAZ2).show(TRUE);
@ -123,6 +125,11 @@ TMask_anamag::TMask_anamag(TRelation * rel,bool mg_autorized) : TMask("ve2400")
fld_giac.sheet_mask().field(F_UBICAZD).show(TRUE); fld_giac.sheet_mask().field(F_UBICAZD).show(TRUE);
fld_giac.sheet_mask().field(F_UBICAZ2).show(FALSE); fld_giac.sheet_mask().field(F_UBICAZ2).show(FALSE);
} }
// abilita la gestione del monomagazzino
fld_giac.sheet_mask().field(F_DESMAG).enable(magazzini.gestmultimag());
fld_giac.enable_column(fld_giac.cid2index(F_CODMAG),magazzini.gestmultimag());
fld_stomag.enable_column(fld_stomag.cid2index(F_STOCODMAG),magazzini.gestmultimag());
} else { } else {
enable_page(4,FALSE); enable_page(4,FALSE);
enable_page(3,FALSE); enable_page(3,FALSE);
@ -619,9 +626,11 @@ bool TMask_anamag::check_totali_storico()
bool TMask_anamag::notify_sheet_giac(TSheet_field &f, int i, KEY k) bool TMask_anamag::notify_sheet_giac(TSheet_field &f, int i, KEY k)
{ {
TMask_anamag & m=(TMask_anamag &)f.mask();
switch (k) switch (k)
{ {
case (K_ENTER): // fine modifica case (K_ENTER): // fine modifica
{
real ck(f.cell(i,f.cid2index(F_RIM))); real ck(f.cell(i,f.cid2index(F_RIM)));
ck+=f.cell(i,f.cid2index(F_ACQ)); ck+=f.cell(i,f.cid2index(F_ACQ));
ck+=f.cell(i,f.cid2index(F_ENTR)); ck+=f.cell(i,f.cid2index(F_ENTR));
@ -639,6 +648,19 @@ bool TMask_anamag::notify_sheet_giac(TSheet_field &f, int i, KEY k)
f.error_box("La giacenza deve essere pari a RIM+(ACQ+ENTR)-(VEN+USC)-(ACL-INCL)-(PRODF-PRODC) - SCARTI)"); f.error_box("La giacenza deve essere pari a RIM+(ACQ+ENTR)-(VEN+USC)-(ACL-INCL)-(PRODF-PRODC) - SCARTI)");
return FALSE; return FALSE;
} }
}
break;
case (K_CTRL + K_INS): // richiesta di inserimento
case (K_TAB): // modifica
if (*f.cell(i,f.cid2index(F_CODMAG))==' ')
{
if (m.magazzini.standardmag().not_empty())
{
f.row(i).add(m.magazzini.standardmag(),f.cid2index(F_CODMAG));
f.row(i).add(m.magazzini.standarddep(),f.cid2index(F_CODDEP));
}
}
break;
} }
return TRUE; return TRUE;
} }
@ -677,7 +699,7 @@ bool TMask_anamag::notify_sheet_sto(TSheet_field &s, int r, KEY k)
} else { } else {
m.remove_totali_storico(oldcodmag); m.remove_totali_storico(oldcodmag);
} }
case (K_CTRL + K_INS ): case (K_CTRL + K_INS ): // fine inserimento
newcodmag=(s.cell(r,s.cid2index(F_STOCODMAG))); newcodmag=(s.cell(r,s.cid2index(F_STOCODMAG)));
newanno=(s.cell(r,s.cid2index(F_STOANNOES))); newanno=(s.cell(r,s.cid2index(F_STOANNOES)));
if (newcodmag != " ") if (newcodmag != " ")
@ -702,6 +724,14 @@ bool TMask_anamag::notify_sheet_sto(TSheet_field &s, int r, KEY k)
s.force_update(); s.force_update();
} }
break; break;
case (K_INS): // richiesta di inserimento
if (m.magazzini.standardmag().not_empty())
{
s.row(r).add(m.magazzini.standardmag(),s.cid2index(F_STOCODMAG));
}
break;
} }
return TRUE; return TRUE;
} }

View File

@ -23,7 +23,7 @@ PAGE "Giacenze" -1 -1 80 23
STRING F_CODMAG 3 STRING F_CODMAG 3
BEGIN BEGIN
PROMPT 2 0 "Magazzino " PROMPT 2 0 "Magazzino "
FLAGS "U" FLAGS "UG"
FIELD CODMAG[1,3] FIELD CODMAG[1,3]
USE MAG SELECT CODTAB[4,5]=="" USE MAG SELECT CODTAB[4,5]==""
INPUT CODTAB F_CODMAG INPUT CODTAB F_CODMAG
@ -42,60 +42,59 @@ BEGIN
PROMPT 2 1 "Deposito " PROMPT 2 1 "Deposito "
FLAGS "U" FLAGS "U"
FIELD CODMAG[4,5] FIELD CODMAG[4,5]
USE MAG USE MAG SELECT CODTAB[4,5]!=""
INPUT CODTAB[1,3] F_CODMAG INPUT CODTAB[1,3] F_CODMAG SELECT
INPUT CODTAB[4,5] F_CODDEP INPUT CODTAB[4,5] F_CODDEP
DISPLAY "Cod. magazzino" CODTAB[1,3] DISPLAY "Cod. magazzino" CODTAB[1,3]
DISPLAY "Cod. deposito" CODTAB[4,5] DISPLAY "Cod. deposito" CODTAB[4,5]
DISPLAY "Denominazione dep.@50" S0 DISPLAY "Denominazione dep.@50" S0
OUTPUT F_CODDEP CODTAB[4,5] OUTPUT F_CODDEP CODTAB[4,5]
OUTPUT F_DESDEP S0 OUTPUT F_DESDEP S0
OUTPUT F_CODMAG CODTAB[1,3] // OUTPUT F_CODMAG CODTAB[1,3]
CHECKTYPE NORMAL CHECKTYPE NORMAL
STR_EXPR ((#H_GESTGIA=="X")&&(#F_CODDEP!=""))||(#H_GESTGIA!="X") STR_EXPR ((#H_GESTGIA=="X")&&(#F_CODDEP!=""))||(#H_GESTGIA!="X")
// WARNING "Indicare il deposito" // WARNING "Indicare il deposito"
END END
STRING F_DESMAG 50
BEGIN
PROMPT 22 0 ""
USE MAG KEY 2
INPUT S0 F_DESMAG
DISPLAY "Denominazione mag.@50" S0
DISPLAY "Cod. magazzino" CODTAB[1,3]
DISPLAY "Cod. deposito" CODTAB[4,5]
OUTPUT F_CODMAG CODTAB[1,3]
OUTPUT F_CODDEP CODTAB[4,5]
// GUIDO!!!!!!!!!!!!!!!!! in che ordine vengono eseguiti gli output
// a cascata??? perchè mi ritrovo il coddep cancellato???
END
STRING F_DESDEP 50
BEGIN
PROMPT 22 1 ""
FLAGS "H"
COPY USE F_DESMAG
INPUT S0 F_DESDEP
COPY DISPLAY F_DESMAG
COPY OUTPUT F_DESMAG
// MESSAGE K_TAB,F_CODDEP
END
STRING H_DESMAG 50 STRING H_DESMAG 50
BEGIN BEGIN
PROMPT 22 0 "" PROMPT 22 0 ""
FLAGS "D" FLAGS "D"
END END
STRING F_DESMAG 50
BEGIN
PROMPT 22 0 ""
USE MAG KEY 2 SELECT CODTAB[4,5]==""
INPUT S0 F_DESMAG
DISPLAY "Denominazione mag.@50" S0
DISPLAY "Cod. magazzino" CODTAB[1,3]
DISPLAY "Cod. deposito" CODTAB[4,5]
OUTPUT F_CODMAG CODTAB[1,3]
// GUIDO!!!!!!!!!!!!!!!!! in che ordine vengono eseguiti gli output
// a cascata??? perchè mi ritrovo il coddep cancellato???
END
STRING F_DESDEP 50
BEGIN
PROMPT 22 1 ""
FLAGS "H"
USE MAG KEY 2 SELECT (CODTAB[1,3]==#F_CODMAG)&&(CODTAB[4,5]!="")
INPUT S0 F_DESDEP
COPY DISPLAY F_DESMAG
// OUTPUT F_CODMAG CODTAB[1,3]
OUTPUT F_CODDEP CODTAB[4,5]
// MESSAGE K_TAB,F_CODDEP
END
//Abilitazione/disabil. dei campi relativi al deposito //Abilitazione/disabil. dei campi relativi al deposito
BOOLEAN H_GESTGIA BOOLEAN H_GESTGIA
BEGIN BEGIN
PROMPT 1 1 "" PROMPT 1 1 ""
FLAGS "HG" FLAGS "HG"
MESSAGE TRUE ENABLE,F_CODDEP|CHECK,F_CODDEP|SHOW,F_DESDEP|SHOW,H_DESMAG|HIDE,F_DESMAG MESSAGE TRUE ENABLE,F_CODDEP|CHECK,F_CODDEP|SHOW,F_DESDEP
MESSAGE FALSE RESET,F_CODDEP|RESET,F_DESDEP|DISABLE,F_CODDEP|HIDE,F_DESDEP|HIDE,H_DESMAG|SHOW,F_DESMAG MESSAGE FALSE RESET,F_CODDEP|RESET,F_DESDEP|DISABLE,F_CODDEP|HIDE,F_DESDEP
END END
//Livelli giacenza //Livelli giacenza