Corretti definitivamente gli sconti di riga.
git-svn-id: svn://10.65.10.50/trunk@3398 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
09d52f7af1
commit
bd25c5a620
310
ve/ve2100.cpp
310
ve/ve2100.cpp
@ -1,9 +1,13 @@
|
|||||||
|
// Gestione sconti di Riga/Incondizionati/Documenti
|
||||||
#include <relapp.h>
|
#include <relapp.h>
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
|
||||||
#include "ve2100.h"
|
#include "ve2100.h"
|
||||||
|
|
||||||
|
#define MAX_REAL "9999999999.99999" //mmmhh..
|
||||||
|
|
||||||
|
|
||||||
static void key_disable(TMask & m, short id, int key = 1)
|
static void key_disable(TMask & m, short id, int key = 1)
|
||||||
{
|
{
|
||||||
((TEditable_field &)m.field(id)).reset_key(key);
|
((TEditable_field &)m.field(id)).reset_key(key);
|
||||||
@ -12,7 +16,7 @@ static void key_disable(TMask & m, short id, int key = 1)
|
|||||||
|
|
||||||
static void key_enable(TMask & m, short id, int key = 1)
|
static void key_enable(TMask & m, short id, int key = 1)
|
||||||
{
|
{
|
||||||
((TEditable_field &)m.field(id)).reset_key(key);
|
((TEditable_field &)m.field(id)).set_key(key);
|
||||||
m.enable(id);
|
m.enable(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,13 +36,197 @@ class TTabelle_sconti: public TRelation_application {
|
|||||||
virtual TMask *get_mask(int) { return _msk; }
|
virtual TMask *get_mask(int) { return _msk; }
|
||||||
virtual bool changing_mask(int) { return FALSE; }
|
virtual bool changing_mask(int) { return FALSE; }
|
||||||
virtual TRelation *get_relation() const { return _rel; }
|
virtual TRelation *get_relation() const { return _rel; }
|
||||||
|
virtual void init_query_mode(TMask& m);
|
||||||
|
virtual void init_query_insert_mode(TMask& m);
|
||||||
|
virtual bool remove(); // metodo usato per rimuovere il record sul file
|
||||||
|
void renumber_sca(const TRectype& r); //metodo per rinumerare gli scaglioni
|
||||||
|
static void fill_rec(TRectype& r, TMask& m);
|
||||||
|
static real find_prev_qta(TRectype& r);
|
||||||
|
static real find_next_qta(TRectype& r);
|
||||||
|
static bool handle_qta(TMask_field &, KEY); // handler della quantita' limite per scaglione
|
||||||
|
static bool handle_sca(TMask_field &, KEY); // handler dello scaglione
|
||||||
|
// Gli handler seguenti sono necessari solo per controllare l'esistenza effettiva del campo immesso
|
||||||
|
// Si dira' perche' non e' stato messo un bel CHECKTYPE FORCED su tali campi?
|
||||||
|
// Risposta, perche quando si clicca su nuovo per andare in modo ricerca/inserimento, tutti i campi
|
||||||
|
// che hanno CHECKTYPE FORCED risultano non essere validi. Percio' si e' rimesso il CHECKTYPE REQUIRED
|
||||||
|
// 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_zon(TMask_field &, KEY); // handler delle zone
|
||||||
|
static bool handle_cpg(TMask_field &, KEY); // handler delle condizioni di pagamento
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TTabelle_sconti() {}
|
TTabelle_sconti() {_sca = _scoum = _catven = FALSE;}
|
||||||
virtual ~TTabelle_sconti() {}
|
virtual ~TTabelle_sconti() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline TTabelle_sconti& app() { return (TTabelle_sconti &) main_app(); }
|
||||||
|
|
||||||
|
// Handlers per i campi quantita' limite e scaglione, valgono solo per gli sconti di riga
|
||||||
|
|
||||||
|
void TTabelle_sconti::fill_rec(TRectype &r, TMask& m)
|
||||||
|
{
|
||||||
|
TString16 tipo(m.get(F_R_TIPO));
|
||||||
|
TString16 codcat(m.get(F_R_CODCAT));
|
||||||
|
TString codart(m.get(F_R_CODART));
|
||||||
|
TString16 um(m.get(F_R_UM));
|
||||||
|
int sca = m.get_int(F_R_SCA);
|
||||||
|
r.zero();
|
||||||
|
r.put("TIPO",tipo);r.put("CODCAT",codcat);
|
||||||
|
r.put("CODART",codart); r.put("UM",um);r.put("NSCAGL",sca);
|
||||||
|
}
|
||||||
|
|
||||||
|
real TTabelle_sconti::find_prev_qta(TRectype& r)
|
||||||
|
{
|
||||||
|
TLocalisamfile f(LF_SCONTI);
|
||||||
|
real qta = 0.0;
|
||||||
|
f.curr() = r;
|
||||||
|
int nscagl = r.get_int("NSCAGL");
|
||||||
|
f.put("NSCAGL", nscagl-1);
|
||||||
|
if (f.read() == NOERR)
|
||||||
|
qta = f.get_real("QLIM");
|
||||||
|
return qta;
|
||||||
|
}
|
||||||
|
|
||||||
|
real TTabelle_sconti::find_next_qta(TRectype& r)
|
||||||
|
{
|
||||||
|
TLocalisamfile f(LF_SCONTI);
|
||||||
|
real qta(MAX_REAL);
|
||||||
|
f.curr() = r;
|
||||||
|
int nscagl = r.get_int("NSCAGL");
|
||||||
|
f.put("NSCAGL", nscagl+1);
|
||||||
|
if (f.read() == NOERR)
|
||||||
|
qta = f.get_real("QLIM");
|
||||||
|
return qta;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TTabelle_sconti::handle_qta(TMask_field &f, KEY k)
|
||||||
|
{
|
||||||
|
if (f.to_check(k))
|
||||||
|
{
|
||||||
|
TMask& m = f.mask();
|
||||||
|
real qta_prev,qta_next;
|
||||||
|
real current_qta(f.get());
|
||||||
|
TRectype r1(LF_SCONTI);
|
||||||
|
fill_rec(r1,m);
|
||||||
|
TRectype r2(r1);
|
||||||
|
|
||||||
|
qta_prev = find_prev_qta(r1);
|
||||||
|
qta_next = find_next_qta(r2);
|
||||||
|
int sca = m.get_int(F_R_SCA);
|
||||||
|
if (sca == 1 && current_qta == 0.0)
|
||||||
|
{
|
||||||
|
f.error_box("La quantita' limite deve essere maggiore di 0");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (sca == 9 && current_qta == 0.0) return TRUE;
|
||||||
|
if (qta_next <= current_qta)
|
||||||
|
{
|
||||||
|
f.error_box("La quantita' limite deve essere minore di %s.",
|
||||||
|
(const char*)qta_next.string());
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (qta_prev >= current_qta)
|
||||||
|
{
|
||||||
|
f.error_box("La quantita' limite deve maggiore di %s.",
|
||||||
|
(const char*)qta_prev.string());
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TTabelle_sconti::handle_sca(TMask_field &f, KEY k)
|
||||||
|
{
|
||||||
|
TMask& m = f.mask();
|
||||||
|
if (f.to_check(k))
|
||||||
|
{
|
||||||
|
int sca = atoi(f.get());
|
||||||
|
if (sca == 1) return TRUE;
|
||||||
|
|
||||||
|
TRectype r(LF_SCONTI);
|
||||||
|
fill_rec(r, m);
|
||||||
|
TLocalisamfile sconti(LF_SCONTI);
|
||||||
|
|
||||||
|
sconti.curr() = r;
|
||||||
|
sconti.read();
|
||||||
|
if (sconti.bad()) // se non l'ha trovato significa che e' in inserimento
|
||||||
|
{
|
||||||
|
sca--;
|
||||||
|
r.put("NSCAGL",sca); //cerca quello precedente...
|
||||||
|
if (sconti.read(r) != NOERR) // se non lo trova segnala l'errore di errata sequenza
|
||||||
|
{
|
||||||
|
f.error_box("Il numero di scaglione immesso non e' in sequenza.");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TTabelle_sconti::handle_art(TMask_field &f, KEY k)
|
||||||
|
{
|
||||||
|
if (f.to_check(k))
|
||||||
|
{
|
||||||
|
TLocalisamfile a(LF_ANAMAG);
|
||||||
|
a.put("CODART",f.get());
|
||||||
|
if (a.read() != NOERR)
|
||||||
|
{
|
||||||
|
f.error_box("Codice articolo non presente sull'anagrafica");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TTabelle_sconti::handle_um(TMask_field &f, KEY k)
|
||||||
|
{
|
||||||
|
if (f.to_check(k))
|
||||||
|
{
|
||||||
|
TMask& m = f.mask();
|
||||||
|
TString art(m.get(F_R_CODART));
|
||||||
|
TLocalisamfile a(LF_UMART);
|
||||||
|
a.setkey(2);
|
||||||
|
a.put("UM",f.get());
|
||||||
|
a.put("CODART",art);
|
||||||
|
if (a.read() != NOERR)
|
||||||
|
{
|
||||||
|
f.error_box("Unita' di misura non presente per l'articolo indicato");
|
||||||
|
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());
|
||||||
|
if (a.read() != NOERR)
|
||||||
|
{
|
||||||
|
f.error_box("Zona non presente");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TTabelle_sconti::handle_cpg(TMask_field &f, KEY k)
|
||||||
|
{
|
||||||
|
if (f.to_check(k))
|
||||||
|
{
|
||||||
|
TTable a("%CPG");
|
||||||
|
a.put("CODTAB",f.get());
|
||||||
|
if (a.read() != NOERR)
|
||||||
|
{
|
||||||
|
f.error_box("Condizione di pagamento non presente");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
bool TTabelle_sconti::user_create() {
|
bool TTabelle_sconti::user_create() {
|
||||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||||
@ -66,24 +254,48 @@ bool TTabelle_sconti::user_create() {
|
|||||||
_catven= prassid.get_bool("GESSCORIGACV"); // legge il parametro di abilitazione delle categorie di vendita
|
_catven= prassid.get_bool("GESSCORIGACV"); // legge il parametro di abilitazione delle categorie di vendita
|
||||||
_scoum = prassid.get_bool("GESSCOUM"); // legge il parametro di abilitazione delle unita' di misura
|
_scoum = prassid.get_bool("GESSCOUM"); // legge il parametro di abilitazione delle unita' di misura
|
||||||
_sca = prassid.get_bool("GESSCOSCA"); // legge il parametro di abilitazione degli scaglioni
|
_sca = prassid.get_bool("GESSCOSCA"); // legge il parametro di abilitazione degli scaglioni
|
||||||
if (!_catven) key_disable(*_msk, F_R_CODCAT); // se non è abilitato, viene disabilitato anche il campo
|
if (!_catven)
|
||||||
if (!_scoum) key_disable(*_msk, F_R_UM); // se non e' abilitato, viene disabilitato anche il campo
|
{
|
||||||
if (!_sca) key_disable(*_msk, F_R_SCA); // se non e' abilitato, viene disabilitato anche il campo
|
key_disable(*_msk, F_R_CODCAT); // se non è abilitato, viene disabilitato anche il campo
|
||||||
|
set_search_field(F_R_RICERCA_A); // setta il campo di ricerca
|
||||||
|
}
|
||||||
|
if (!_scoum)
|
||||||
|
key_disable(*_msk, F_R_UM); // se non e' abilitato, viene disabilitato anche il campo
|
||||||
|
else
|
||||||
|
_msk->set_handler(F_R_UM,handle_um);
|
||||||
|
if (!_sca)
|
||||||
|
{
|
||||||
|
key_disable(*_msk, F_R_SCA); // se non e' abilitato, viene disabilitato anche il campo
|
||||||
|
_msk->disable(F_R_QLIM); // disabilita pure la qta' limite
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_msk->set_handler(F_R_QLIM, handle_qta); // setta l'handler per controllare la quantita' limite
|
||||||
|
_msk->set_handler(F_R_SCA, handle_sca); // setta l'handler per controllare la sequenza degli scaglioni
|
||||||
|
}
|
||||||
|
_msk->set_handler(F_R_CODART,handle_art);
|
||||||
|
_msk->set_handler(F_R_RICERCA_A,handle_art);
|
||||||
gotcha= TRUE;
|
gotcha= TRUE;
|
||||||
} else error_box("Gli sconti di riga non sono abilitati nella configurazione");
|
} else error_box("Gli sconti di riga non sono abilitati nella configurazione");
|
||||||
break;
|
break;
|
||||||
case 'I': // sconti incondizionati
|
case 'I': // sconti incondizionati
|
||||||
_gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti
|
_gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti
|
||||||
if (_gessco=="A") {
|
if (_gessco=="A") {
|
||||||
|
_catven = TRUE;
|
||||||
_msk= new TMask("VE2100I"); // apre la maschera relativa
|
_msk= new TMask("VE2100I"); // apre la maschera relativa
|
||||||
set_search_field(F_I_RICERCA); // setta il campo di ricerca
|
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[0]= F_I_CATVEN; // inizializza l'array dei campi da disabilitare condizionalmente
|
||||||
sci_k_id[1]= F_I_SCCLIENTI;
|
sci_k_id[1]= F_I_SCCLIENTI;
|
||||||
sci_k_id[2]= F_I_ZONE;
|
sci_k_id[2]= F_I_ZONE;
|
||||||
sci_k_id[3]= F_I_CONDPAG;
|
sci_k_id[3]= F_I_CONDPAG;
|
||||||
|
_msk->set_handler(F_I_ZONE,handle_zon);
|
||||||
|
_msk->set_handler(F_I_CONDPAG,handle_cpg);
|
||||||
for (i=0; i<4; i++) {
|
for (i=0; i<4; i++) {
|
||||||
if (!prassid.get_bool("SCOKEY", NULL, i+1)) // se nel file di config. il campo non è abilitato...
|
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
|
{
|
||||||
|
key_disable(*_msk, sci_k_id[i]); // il campo non è abilitato viene disabilitato anche sulla maschera
|
||||||
|
if (i == 0) _catven = FALSE;
|
||||||
|
}
|
||||||
else gotcha = TRUE;
|
else gotcha = TRUE;
|
||||||
}
|
}
|
||||||
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
||||||
@ -103,7 +315,91 @@ bool TTabelle_sconti::user_destroy() {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TTabelle_sconti::init_query_mode(TMask& m) {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'R':
|
||||||
|
if (_catven)
|
||||||
|
{
|
||||||
|
m.show(F_R_RICERCA);
|
||||||
|
m.hide(F_R_CODCAT);
|
||||||
|
set_search_field(F_R_RICERCA); // setta il campo di ricerca
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m.hide(F_R_CODART);
|
||||||
|
m.show(F_R_RICERCA_A);
|
||||||
|
set_search_field(F_R_RICERCA_A); // setta il campo di ricerca
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TTabelle_sconti::init_query_insert_mode(TMask& m) {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'R':
|
||||||
|
if (_catven)
|
||||||
|
{
|
||||||
|
m.hide(F_R_RICERCA);
|
||||||
|
m.show(F_R_CODCAT);
|
||||||
|
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
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TTabelle_sconti::renumber_sca(const TRectype& r)
|
||||||
|
{
|
||||||
|
TRectype from(r);
|
||||||
|
from.zero("NSCAGL");
|
||||||
|
TRecord_array rec_arr(from,"NSCAGL");
|
||||||
|
if (rec_arr.read(from) == NOERR)
|
||||||
|
{
|
||||||
|
rec_arr.pack();
|
||||||
|
rec_arr.rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TTabelle_sconti::remove()
|
||||||
|
{
|
||||||
|
TRectype r(LF_SCONTI);
|
||||||
|
fill_rec(r,*_msk);
|
||||||
|
const bool rt = TRelation_application::remove();
|
||||||
|
if (_sca) // rinumera gli scaglioni
|
||||||
|
renumber_sca(r);
|
||||||
|
return rt;
|
||||||
|
}
|
||||||
|
|
||||||
int ve2100(int argc, char* argv[]) {
|
int ve2100(int argc, char* argv[]) {
|
||||||
TTabelle_sconti a;
|
TTabelle_sconti a;
|
||||||
|
@ -7,3 +7,6 @@
|
|||||||
#define F_R_SCONTO 127
|
#define F_R_SCONTO 127
|
||||||
#define F_R_DESCAT 128
|
#define F_R_DESCAT 128
|
||||||
#define F_R_SCA 129
|
#define F_R_SCA 129
|
||||||
|
#define F_R_QLIM 130
|
||||||
|
#define F_R_RICERCA_A 131
|
||||||
|
|
||||||
|
@ -13,24 +13,30 @@ BEGIN
|
|||||||
FLAG "R"
|
FLAG "R"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_RICERCA 1
|
STRING F_R_RICERCA 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 100 100 ""
|
PROMPT 2 2 "Cat. vendita "
|
||||||
FLAG "H"
|
FIELD CODCAT
|
||||||
|
FLAG "HU"
|
||||||
|
KEY 1
|
||||||
USE LF_SCONTI
|
USE LF_SCONTI
|
||||||
JOIN %UMS INTO CODTAB=UM
|
JOIN %CVE ALIAS 201 INTO CODTAB==CODCAT
|
||||||
INPUT TIPO F_R_TIPO SELECT
|
INPUT TIPO F_R_TIPO SELECT
|
||||||
INPUT CODCAT F_R_CODCAT
|
INPUT CODCAT F_R_RICERCA
|
||||||
INPUT CODART F_R_CODART
|
INPUT CODART F_R_CODART
|
||||||
INPUT UM F_R_UM
|
INPUT UM F_R_UM
|
||||||
DISPLAY "C.V." CODCAT
|
DISPLAY "C.V." CODCAT
|
||||||
DISPLAY "Codice art.@20" CODART
|
DISPLAY "Codice art.@20" CODART
|
||||||
DISPLAY "U.M." UM
|
DISPLAY "U.M." UM
|
||||||
|
DISPLAY "N. scaglione" NSCAGL
|
||||||
DISPLAY "Sconto@25" SCONTO
|
DISPLAY "Sconto@25" SCONTO
|
||||||
OUTPUT F_R_CODCAT CODCAT
|
OUTPUT F_R_RICERCA CODCAT
|
||||||
|
OUTPUT F_R_DESCAT -201->S0
|
||||||
OUTPUT F_R_CODART CODART
|
OUTPUT F_R_CODART CODART
|
||||||
OUTPUT F_R_UM UM
|
OUTPUT F_R_UM UM
|
||||||
|
OUTPUT F_R_SCA NSCAGL
|
||||||
OUTPUT F_R_SCONTO SCONTO
|
OUTPUT F_R_SCONTO SCONTO
|
||||||
|
OUTPUT F_R_QLIM QLIM
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_R_TIPO 20
|
LIST F_R_TIPO 20
|
||||||
@ -54,8 +60,7 @@ BEGIN
|
|||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_R_CODCAT CODTAB
|
OUTPUT F_R_CODCAT CODTAB
|
||||||
OUTPUT F_R_DESCAT S0
|
OUTPUT F_R_DESCAT S0
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE FORCED
|
||||||
// VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_DESCAT 50
|
STRING F_R_DESCAT 50
|
||||||
@ -64,6 +69,32 @@ BEGIN
|
|||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_R_RICERCA_A 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Cod. articolo "
|
||||||
|
FIELD CODART
|
||||||
|
FLAG "HU"
|
||||||
|
KEY 1
|
||||||
|
USE LF_SCONTI
|
||||||
|
JOIN LF_ANAMAG INTO CODART==CODART
|
||||||
|
INPUT TIPO F_R_TIPO SELECT
|
||||||
|
INPUT CODCAT F_R_RICERCA
|
||||||
|
INPUT CODART F_R_RICERCA_A
|
||||||
|
INPUT UM F_R_UM
|
||||||
|
DISPLAY "Codice art.@20" CODART
|
||||||
|
DISPLAY "U.M." UM
|
||||||
|
DISPLAY "N. scaglione" NSCAGL
|
||||||
|
DISPLAY "Sconto@25" SCONTO
|
||||||
|
OUTPUT F_R_RICERCA_A CODART
|
||||||
|
OUTPUT F_R_CODART CODART
|
||||||
|
OUTPUT F_R_UM UM
|
||||||
|
OUTPUT F_R_DESART LF_ANAMAG->DESCR
|
||||||
|
OUTPUT F_R_SCA NSCAGL
|
||||||
|
OUTPUT F_R_SCONTO SCONTO
|
||||||
|
OUTPUT F_R_QLIM QLIM
|
||||||
|
MESSAGE COPY,F_R_CODART
|
||||||
|
END
|
||||||
|
|
||||||
STRING F_R_CODART 20
|
STRING F_R_CODART 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Cod. articolo "
|
PROMPT 2 4 "Cod. articolo "
|
||||||
@ -76,16 +107,15 @@ BEGIN
|
|||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
OUTPUT F_R_CODART CODART
|
OUTPUT F_R_CODART CODART
|
||||||
OUTPUT F_R_DESART DESCR
|
OUTPUT F_R_DESART DESCR
|
||||||
CHECKTYPE SEARCH
|
|
||||||
VALIDATE REQIF_FUNC 1 F_R_UM
|
VALIDATE REQIF_FUNC 1 F_R_UM
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
WARNING "Il codice articolo e' necessario se si specifica l'unita' di misura"
|
WARNING "Il codice articolo e' necessario se si specifica l'unita' di misura"
|
||||||
// VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
|
||||||
ADD RUN VE2 -3
|
ADD RUN VE2 -3
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_UM 2
|
STRING F_R_UM 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 50 4 "U.M. "
|
PROMPT 40 4 "U.M. "
|
||||||
FIELD UM
|
FIELD UM
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
KEY 1
|
KEY 1
|
||||||
@ -96,7 +126,15 @@ BEGIN
|
|||||||
DISPLAY "U.M." UM
|
DISPLAY "U.M." UM
|
||||||
DISPLAY "Descrizione@50" %UMS->S0
|
DISPLAY "Descrizione@50" %UMS->S0
|
||||||
OUTPUT F_R_UM UM
|
OUTPUT F_R_UM UM
|
||||||
// VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_R_SCA 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 50 4 "N.ro scaglione "
|
||||||
|
FIELD NSCAGL
|
||||||
|
KEY 1
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_DESART 50
|
STRING F_R_DESART 50
|
||||||
@ -105,10 +143,16 @@ BEGIN
|
|||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_R_QLIM 15 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "Q.ta' limite scagl. "
|
||||||
|
FIELD QLIM
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
STRING F_R_SCONTO 25
|
STRING F_R_SCONTO 25
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "Sconto "
|
PROMPT 2 12 "Sconto "
|
||||||
FIELD SCONTO
|
FIELD SCONTO
|
||||||
END
|
END
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user