Corretta la gestione sconti incondizionati. Necessita ancora della
possibilita' di cambiare filtro sulla ricerca, in modo da decidere a run-time le informazioni ed i campi da far visualizzare. git-svn-id: svn://10.65.10.50/trunk@3400 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
49b8af5ae1
commit
bf07aaa89e
115
ve/ve2100.cpp
115
ve/ve2100.cpp
@ -19,6 +19,11 @@ static void key_enable(TMask & m, short id, int key = 1)
|
||||
((TEditable_field &)m.field(id)).set_key(key);
|
||||
m.enable(id);
|
||||
}
|
||||
struct enable_key_info
|
||||
{
|
||||
bool enabled;
|
||||
short normal_field,search_field;
|
||||
};
|
||||
|
||||
class TTabelle_sconti: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
@ -26,8 +31,9 @@ class TTabelle_sconti: public TRelation_application {
|
||||
|
||||
char _sconti; // carattere che indica il tipo di tabella
|
||||
bool _catven; // abilitazione della gestione della categoria di vendita
|
||||
bool _scoum; // abilitazione della gestione della unita' di misura
|
||||
bool _scoum; // abilitazione della gestione delle unita' di misura
|
||||
bool _sca; // abilitazione della gestione degli scaglioni
|
||||
enable_key_info _sci_k_id[4]; // struct contenente informazioni sull'abilitazione degli sconti incondizionati
|
||||
TString _gessco; // indicatore di abilitazione degli sconti incondizionati
|
||||
TString _gesscoriga; // indicatore di abilitazione degli sconti di riga
|
||||
|
||||
@ -52,6 +58,7 @@ class TTabelle_sconti: public TRelation_application {
|
||||
// e si controlla la consistenza del campo.
|
||||
static bool handle_um(TMask_field &, KEY); // handler delle unita' di misura per gli sconti di riga
|
||||
static bool handle_art(TMask_field &, KEY); // handler dei codici articoli per sconti di riga
|
||||
static bool handle_sco(TMask_field &, KEY); // handler delle sconto cliente
|
||||
static bool handle_zon(TMask_field &, KEY); // handler delle zone
|
||||
static bool handle_cpg(TMask_field &, KEY); // handler delle condizioni di pagamento
|
||||
|
||||
@ -68,7 +75,9 @@ void TTabelle_sconti::fill_rec(TRectype &r, TMask& m)
|
||||
{
|
||||
TString16 tipo(m.get(F_R_TIPO));
|
||||
TString16 codcat(m.get(F_R_CODCAT));
|
||||
if (codcat.empty()) codcat = m.get(F_R_RICERCA);
|
||||
TString codart(m.get(F_R_CODART));
|
||||
if (codart.empty()) codart = m.get(F_R_RICERCA_A);
|
||||
TString16 um(m.get(F_R_UM));
|
||||
int sca = m.get_int(F_R_SCA);
|
||||
r.zero();
|
||||
@ -169,7 +178,9 @@ bool TTabelle_sconti::handle_art(TMask_field &f, KEY k)
|
||||
if (f.to_check(k))
|
||||
{
|
||||
TLocalisamfile a(LF_ANAMAG);
|
||||
a.put("CODART",f.get());
|
||||
TString art(f.get());
|
||||
if (art.empty()) return TRUE;
|
||||
a.put("CODART",art);
|
||||
if (a.read() != NOERR)
|
||||
{
|
||||
f.error_box("Codice articolo non presente sull'anagrafica");
|
||||
@ -198,12 +209,32 @@ bool TTabelle_sconti::handle_um(TMask_field &f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TTabelle_sconti::handle_sco(TMask_field &f, KEY k)
|
||||
{
|
||||
if (f.to_check(k))
|
||||
{
|
||||
TLocalisamfile a(LF_SCONTI);
|
||||
TString sco(f.get());
|
||||
if (sco.empty()) return TRUE;
|
||||
a.put("TIPO","D");
|
||||
a.put("CODCAT",sco);
|
||||
if (a.read() != NOERR)
|
||||
{
|
||||
f.error_box("Sconto cliente non presente");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TTabelle_sconti::handle_zon(TMask_field &f, KEY k)
|
||||
{
|
||||
if (f.to_check(k))
|
||||
{
|
||||
TTable a("%ZON");
|
||||
a.put("CODTAB",f.get());
|
||||
TTable a("%ZON");
|
||||
TString zon(f.get());
|
||||
if (zon.empty()) return TRUE;
|
||||
a.put("CODTAB",zon);
|
||||
if (a.read() != NOERR)
|
||||
{
|
||||
f.error_box("Zona non presente");
|
||||
@ -218,7 +249,9 @@ bool TTabelle_sconti::handle_cpg(TMask_field &f, KEY k)
|
||||
if (f.to_check(k))
|
||||
{
|
||||
TTable a("%CPG");
|
||||
a.put("CODTAB",f.get());
|
||||
TString con(f.get());
|
||||
if (con.empty()) return TRUE;
|
||||
a.put("CODTAB",con);
|
||||
if (a.read() != NOERR)
|
||||
{
|
||||
f.error_box("Condizione di pagamento non presente");
|
||||
@ -230,7 +263,6 @@ bool TTabelle_sconti::handle_cpg(TMask_field &f, KEY k)
|
||||
|
||||
bool TTabelle_sconti::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
short sci_k_id[4]; // vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati
|
||||
int i; // indice di ciclo
|
||||
|
||||
_sconti= '*'; // inizializzazione dell'indicatore del tipo di tabella
|
||||
@ -281,24 +313,41 @@ bool TTabelle_sconti::user_create() {
|
||||
case 'I': // sconti incondizionati
|
||||
_gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti
|
||||
if (_gessco=="A") {
|
||||
_catven = TRUE;
|
||||
_msk= new TMask("VE2100I"); // apre la maschera relativa
|
||||
set_search_field(F_I_RICERCA); // setta il campo di ricerca
|
||||
sci_k_id[0]= F_I_CATVEN; // inizializza l'array dei campi da disabilitare condizionalmente
|
||||
sci_k_id[1]= F_I_SCCLIENTI;
|
||||
sci_k_id[2]= F_I_ZONE;
|
||||
sci_k_id[3]= F_I_CONDPAG;
|
||||
// inizializza l'array dei campi da disabilitare condizionalmente
|
||||
_sci_k_id[0].normal_field = F_I_CATVEN;
|
||||
_sci_k_id[0].search_field = F_I_RICERCA;
|
||||
_sci_k_id[0].enabled = TRUE;
|
||||
_sci_k_id[1].normal_field = F_I_SCCLIENTI;
|
||||
_sci_k_id[1].search_field = F_I_RICERCA_SC;
|
||||
_sci_k_id[1].enabled = TRUE;
|
||||
_sci_k_id[2].normal_field = F_I_ZONE;
|
||||
_sci_k_id[2].search_field = F_I_RICERCA_ZO;
|
||||
_sci_k_id[2].enabled = TRUE;
|
||||
_sci_k_id[3].normal_field = F_I_CONDPAG;
|
||||
_sci_k_id[3].search_field = F_I_RICERCA_CO;
|
||||
_sci_k_id[3].enabled = TRUE;
|
||||
_msk->set_handler(F_I_SCCLIENTI,handle_sco);
|
||||
_msk->set_handler(F_I_ZONE,handle_zon);
|
||||
_msk->set_handler(F_I_CONDPAG,handle_cpg);
|
||||
_msk->set_handler(F_I_RICERCA_SC,handle_sco);
|
||||
_msk->set_handler(F_I_RICERCA_ZO,handle_zon);
|
||||
_msk->set_handler(F_I_RICERCA_CO,handle_cpg);
|
||||
for (i=0; i<4; i++) {
|
||||
if (!prassid.get_bool("SCOKEY", NULL, i+1)) // se nel file di config. il campo non è abilitato...
|
||||
{
|
||||
key_disable(*_msk, sci_k_id[i]); // il campo non è abilitato viene disabilitato anche sulla maschera
|
||||
if (i == 0) _catven = FALSE;
|
||||
key_disable(*_msk, _sci_k_id[i].normal_field); // il campo non è abilitato viene disabilitato anche sulla maschera
|
||||
key_disable(*_msk, _sci_k_id[i].search_field);
|
||||
_sci_k_id[i].enabled = FALSE;
|
||||
}
|
||||
else gotcha = TRUE;
|
||||
}
|
||||
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
||||
////
|
||||
////
|
||||
//// Necessito della possibilita' di cambiare il filtro alla browse di un TEdit_field!!
|
||||
//// Cosi' posso far vedere solo i record editabili.
|
||||
////
|
||||
} else error_box("Gli sconti incondizionati non sono abilitati nella configurazione");
|
||||
break;
|
||||
default: // messaggio di errore se si indica una tabella non valida
|
||||
@ -316,18 +365,24 @@ bool TTabelle_sconti::user_destroy() {
|
||||
}
|
||||
|
||||
void TTabelle_sconti::init_query_mode(TMask& m) {
|
||||
int i;
|
||||
|
||||
switch (_sconti)
|
||||
{
|
||||
case 'D':
|
||||
set_search_field(F_D_CODCAT); // setta il campo di ricerca
|
||||
break;
|
||||
case 'I':
|
||||
if (_catven)
|
||||
{
|
||||
m.show(F_I_RICERCA);
|
||||
m.hide(F_I_CATVEN);
|
||||
set_search_field(F_I_RICERCA); // setta il campo di ricerca
|
||||
}
|
||||
for (i=0; i<4;i++)
|
||||
if (_sci_k_id[i].enabled)
|
||||
{
|
||||
m.show(_sci_k_id[i].search_field);
|
||||
m.hide(_sci_k_id[i].normal_field);
|
||||
key_enable(m,_sci_k_id[i].search_field);
|
||||
key_disable(m,_sci_k_id[i].normal_field);
|
||||
set_search_field(_sci_k_id[i].search_field);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'R':
|
||||
if (_catven)
|
||||
@ -348,18 +403,24 @@ void TTabelle_sconti::init_query_mode(TMask& m) {
|
||||
}
|
||||
|
||||
void TTabelle_sconti::init_query_insert_mode(TMask& m) {
|
||||
int i;
|
||||
|
||||
switch (_sconti)
|
||||
{
|
||||
case 'D':
|
||||
set_search_field(F_D_CODCAT); // setta il campo di ricerca
|
||||
break;
|
||||
case 'I':
|
||||
if (_catven)
|
||||
{
|
||||
m.hide(F_I_RICERCA);
|
||||
m.show(F_I_CATVEN);
|
||||
set_search_field(F_I_CATVEN); // setta il campo di ricerca
|
||||
}
|
||||
for (i=0; i<4;i++)
|
||||
if (_sci_k_id[i].enabled)
|
||||
{
|
||||
m.show(_sci_k_id[i].normal_field);
|
||||
m.hide(_sci_k_id[i].search_field);
|
||||
key_enable(m,_sci_k_id[i].normal_field);
|
||||
key_disable(m,_sci_k_id[i].search_field);
|
||||
set_search_field(_sci_k_id[i].normal_field);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'R':
|
||||
if (_catven)
|
||||
@ -369,7 +430,7 @@ void TTabelle_sconti::init_query_insert_mode(TMask& m) {
|
||||
set_search_field(F_R_CODCAT); // setta il campo di ricerca
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
m.hide(F_R_RICERCA_A);
|
||||
m.show(F_R_CODART);
|
||||
set_search_field(F_R_CODART); // setta il campo di ricerca
|
||||
|
@ -9,4 +9,7 @@
|
||||
#define F_I_DESSCCLI 139
|
||||
#define F_I_DESZONE 140
|
||||
#define F_I_DESCONPAG 141
|
||||
#define F_I_RICERCA_SC 142
|
||||
#define F_I_RICERCA_ZO 143
|
||||
#define F_I_RICERCA_CO 144
|
||||
|
||||
|
102
ve/ve2100i.uml
102
ve/ve2100i.uml
@ -16,38 +16,41 @@ END
|
||||
LIST F_I_TIPO 30
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FIELD LF_SCONTI->TIPO
|
||||
FIELD TIPO
|
||||
FLAG "D"
|
||||
KEY 1
|
||||
ITEM "I|Sconti incondizionati"
|
||||
END
|
||||
|
||||
STRING F_I_RICERCA 1
|
||||
STRING F_I_RICERCA 2
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FLAG "D"
|
||||
USE LF_SCONTI
|
||||
PROMPT 2 2 "Cat. vendite "
|
||||
FIELD CODCAT
|
||||
FLAG "HU"
|
||||
KEY 1
|
||||
USE LF_SCONTI SELECT CODCAT != ""
|
||||
JOIN %CVE ALIAS 201 INTO CODTAB==CODCAT
|
||||
INPUT TIPO F_I_TIPO SELECT
|
||||
INPUT CODCAT F_I_CATVEN
|
||||
INPUT CODART[1,2] F_I_SCCLIENTI
|
||||
INPUT CODART[3,4] F_I_ZONE
|
||||
INPUT CODART[5,8] F_I_CONDPAG
|
||||
DISPLAY "CV" CODCAT
|
||||
DISPLAY "SC" CODART[1,2]
|
||||
DISPLAY "ZN" CODART[3,4]
|
||||
DISPLAY "C.P." CODART[5,8]
|
||||
DISPLAY "Cat.Vend." CODCAT
|
||||
DISPLAY "Cod. sconto" CODART[1,2]
|
||||
DISPLAY "Zona" CODART[3,4]
|
||||
DISPLAY "Cod.pag." CODART[5,8]
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_I_CATVEN CODCAT
|
||||
OUTPUT F_I_RICERCA CODCAT
|
||||
OUTPUT F_I_DESVEN -201->S0
|
||||
OUTPUT F_I_SCCLIENTI CODART[1,2]
|
||||
OUTPUT F_I_ZONE CODART[3,4]
|
||||
OUTPUT F_I_CONDPAG CODART[5,8]
|
||||
OUTPUT F_I_SCONTO SCONTO
|
||||
END
|
||||
|
||||
STRING F_I_CATVEN 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cat. vendite "
|
||||
FIELD LF_SCONTI->CODCAT
|
||||
FIELD CODCAT
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %CVE
|
||||
@ -56,7 +59,7 @@ BEGIN
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_CATVEN CODTAB
|
||||
OUTPUT F_I_DESVEN S0
|
||||
CHECKTYPE REQUIRED
|
||||
CHECKTYPE FORCED
|
||||
END
|
||||
|
||||
STRING F_I_DESVEN 50
|
||||
@ -65,10 +68,33 @@ BEGIN
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_I_RICERCA_SC 2
|
||||
BEGIN
|
||||
PROMPT 2 4 "Sconto cliente "
|
||||
FIELD CODART[1,2]
|
||||
FLAG "HU"
|
||||
KEY 1
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO F_I_TIPO SELECT
|
||||
INPUT CODCAT F_I_CATVEN SELECT
|
||||
INPUT CODART[1,2] F_I_RICERCA_SC
|
||||
INPUT CODART[3,4] F_I_ZONE
|
||||
INPUT CODART[5,8] F_I_CONDPAG
|
||||
DISPLAY "Cod. sconto" CODART[1,2]
|
||||
DISPLAY "Zona" CODART[3,4]
|
||||
DISPLAY "Cond.Pag." CODART[5,8]
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_I_RICERCA_SC CODART[1,2]
|
||||
OUTPUT F_I_SCCLIENTI CODART[1,2]
|
||||
OUTPUT F_I_ZONE CODART[3,4]
|
||||
OUTPUT F_I_CONDPAG CODART[5,8]
|
||||
MESSAGE COPY,F_I_SCCLIENTI
|
||||
END
|
||||
|
||||
STRING F_I_SCCLIENTI 2
|
||||
BEGIN
|
||||
PROMPT 2 4 "Sconto cliente "
|
||||
FIELD LF_SCONTI->CODART[1,2]
|
||||
FIELD CODART[1,2]
|
||||
KEY 1
|
||||
FLAG "U"
|
||||
USE LF_SCONTI
|
||||
@ -87,10 +113,31 @@ BEGIN
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_I_RICERCA_ZO 2
|
||||
BEGIN
|
||||
PROMPT 2 6 "Zona "
|
||||
FIELD CODART[3,4]
|
||||
FLAG "HU"
|
||||
KEY 1
|
||||
USE LF_SCONTI SELECT CODCAT==""
|
||||
INPUT TIPO F_I_TIPO SELECT
|
||||
INPUT CODCAT F_I_CATVEN SELECT
|
||||
INPUT CODART[1,2] F_I_SCCLIENTI SELECT
|
||||
INPUT CODART[3,4] F_I_RICERCA_ZO
|
||||
INPUT CODART[5,8] F_I_CONDPAG
|
||||
DISPLAY "Zona" CODART[3,4]
|
||||
DISPLAY "Cond.Pag." CODART[5,8]
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_I_RICERCA_ZO CODART[3,4]
|
||||
OUTPUT F_I_ZONE CODART[3,4]
|
||||
OUTPUT F_I_CONDPAG CODART[5,8]
|
||||
MESSAGE COPY,F_I_ZONE
|
||||
END
|
||||
|
||||
STRING F_I_ZONE 2
|
||||
BEGIN
|
||||
PROMPT 2 6 "Zona "
|
||||
FIELD LF_SCONTI->CODART[3,4]
|
||||
FIELD CODART[3,4]
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %ZON
|
||||
@ -108,10 +155,29 @@ BEGIN
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_I_RICERCA_CO 4
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cond. pagam. "
|
||||
FIELD CODART[5,8]
|
||||
FLAG "HU"
|
||||
KEY 1
|
||||
USE LF_SCONTI SELECT CODCAT == ""
|
||||
INPUT TIPO F_I_TIPO SELECT
|
||||
INPUT CODCAT F_I_CATVEN SELECT
|
||||
INPUT CODART[1,2] F_I_SCCLIENTI SELECT
|
||||
INPUT CODART[3,4] F_I_ZONE SELECT
|
||||
INPUT CODART[5,8] F_I_RICERCA_CO
|
||||
DISPLAY "Cond.Pag." CODART[5,8]
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_I_RICERCA_CO CODART[5,8]
|
||||
OUTPUT F_I_CONDPAG CODART[5,8]
|
||||
MESSAGE COPY,F_I_CONDPAG
|
||||
END
|
||||
|
||||
STRING F_I_CONDPAG 4
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cond. pagam. "
|
||||
FIELD LF_SCONTI->CODART[5,8]
|
||||
PROMPT 2 8 "Cond. pagam. "
|
||||
FIELD CODART[5,8]
|
||||
KEY 1
|
||||
FLAG "U"
|
||||
USE %CPG
|
||||
@ -132,7 +198,7 @@ END
|
||||
STRING F_I_SCONTO 25
|
||||
BEGIN
|
||||
PROMPT 2 12 "Sconto "
|
||||
FIELD LF_SCONTI->SCONTO
|
||||
FIELD SCONTO
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
Loading…
x
Reference in New Issue
Block a user