Errore aga0045

git-svn-id: svn://10.65.10.50/trunk@5096 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-08-22 13:25:25 +00:00
parent 043926ad37
commit a3fba6a9ad
7 changed files with 408 additions and 270 deletions

View File

@ -853,7 +853,7 @@ bool TDocumento_form::validate(TForm_item &cf, TToken_string &s) {
if (x.is_real(value)) if (x.is_real(value))
{ {
TString picture(cf.picture()); TString picture(cf.picture());
if (x != 0.0) if (x != ZERO)
value = x.string(picture); // Riformatta il valore value = x.string(picture); // Riformatta il valore
else else
value = ""; value = "";
@ -951,6 +951,7 @@ class TStampaDoc_application: public TApplication
TRelation *_firmrel; // puntatore alla relazione che gestisce i dati della ditta corrente TRelation *_firmrel; // puntatore alla relazione che gestisce i dati della ditta corrente
TDocumento_form *_form; // puntatore al form di stampa TDocumento_form *_form; // puntatore al form di stampa
TLocalisamfile * _clifo; TLocalisamfile * _clifo;
TLocalisamfile * _cfven;
TLocalisamfile * _occas; TLocalisamfile * _occas;
protected: protected:
@ -1182,6 +1183,7 @@ bool TStampaDoc_application::create()
_firmrel->add(LF_COMUNI, "COM=STATORES+COMRF", 1, LF_ANAG, 200+LF_COMUNI); _firmrel->add(LF_COMUNI, "COM=STATORES+COMRF", 1, LF_ANAG, 200+LF_COMUNI);
_occas = new TLocalisamfile(LF_OCCAS); _occas = new TLocalisamfile(LF_OCCAS);
_clifo = new TLocalisamfile(LF_CLIFO); _clifo = new TLocalisamfile(LF_CLIFO);
_cfven = new TLocalisamfile(LF_CFVEN);
const int argc = TApplication::argc(); const int argc = TApplication::argc();
_is_lista = argc == 3 && argv(2)[0] == 'L'; _is_lista = argc == 3 && argv(2)[0] == 'L';
@ -1226,6 +1228,7 @@ bool TStampaDoc_application::destroy()
{ {
delete _firmrel; // distruzione della relazione di gestione della ditta corrente delete _firmrel; // distruzione della relazione di gestione della ditta corrente
delete _clifo; delete _clifo;
delete _cfven;
delete _occas; delete _occas;
return TApplication::destroy(); return TApplication::destroy();
} }

View File

@ -8,6 +8,14 @@
#define MAX_REAL "9999999999.99999" //mmmhh.. #define MAX_REAL "9999999999.99999" //mmmhh..
static void key_hide(TMask & m, short id, int key = 1)
{
TEditable_field & e = ((TEditable_field &)m.field(id));
e.reset_key(key);
e.check_type(CHECK_NONE);
e.set_field("");
m.hide(id);
}
static void key_disable(TMask & m, short id, int key = 1) static void key_disable(TMask & m, short id, int key = 1)
{ {
@ -47,7 +55,7 @@ class TTabelle_sconti: public TRelation_application {
virtual void init_query_insert_mode(TMask& m); virtual void init_query_insert_mode(TMask& m);
virtual bool remove(); // metodo usato per rimuovere il record sul file virtual bool remove(); // metodo usato per rimuovere il record sul file
void renumber_sca(const TRectype& r); //metodo per rinumerare gli scaglioni void renumber_sca(const TRectype& r); //metodo per rinumerare gli scaglioni
static void fill_rec(TRectype& r, TMask& m); // static void fill_rec(TRectype& r, TMask& m);
static real find_prev_qta(TRectype& r); static real find_prev_qta(TRectype& r);
static real find_next_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_qta(TMask_field &, KEY); // handler della quantita' limite per scaglione
@ -57,11 +65,11 @@ class TTabelle_sconti: public TRelation_application {
// Risposta, perche quando si clicca su nuovo per andare in modo ricerca/inserimento, tutti i 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 // che hanno CHECKTYPE FORCED risultano non essere validi. Percio' si e' rimesso il CHECKTYPE REQUIRED
// e si controlla la consistenza del campo. // 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_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_check(TMask_field &, KEY); // handler per i check
// static bool handle_sco(TMask_field &, KEY); // handler delle sconto cliente // static bool handle_sco(TMask_field &, KEY); // handler delle sconto cliente
static bool handle_zon(TMask_field &, KEY); // handler delle zone // static bool handle_zon(TMask_field &, KEY); // handler delle zone
static bool handle_cpg(TMask_field &, KEY); // handler delle condizioni di pagamento // static bool handle_cpg(TMask_field &, KEY); // handler delle condizioni di pagamento
public: public:
TTabelle_sconti() {_sca = _scoum = _catven = FALSE;} TTabelle_sconti() {_sca = _scoum = _catven = FALSE;}
@ -72,19 +80,19 @@ inline TTabelle_sconti& app() { return (TTabelle_sconti &) main_app(); }
// Handlers per i campi quantita' limite e scaglione, valgono solo per gli sconti di riga // Handlers per i campi quantita' limite e scaglione, valgono solo per gli sconti di riga
void TTabelle_sconti::fill_rec(TRectype &r, TMask& m) /*void TTabelle_sconti::fill_rec(TRectype &r, TMask& m)
{ {
TString16 tipo(m.get(F_R_TIPO)); TString16 tipo(m.get(F_R_TIPO));
TString16 codcat(m.get(F_R_CODCAT)); TString16 codcat(m.get(F_R_CODCAT));
if (codcat.empty()) codcat = m.get(F_R_RICERCA);
TString codart(m.get(F_R_CODART)); TString codart(m.get(F_R_CODART));
if (codart.empty()) codart = m.get(F_R_RICERCA_A); if (codart.empty()) codart = m.get(F_R_CODART_A);
TString16 um(m.get(F_R_UM)); TString16 um(m.get(F_R_UM));
int sca = m.get_int(F_R_SCA); int sca = m.get_int(F_R_SCA);
r.zero(); r.zero();
r.put("TIPO",tipo);r.put("CODCAT",codcat); r.put("TIPO",tipo);r.put("CODCAT",codcat);
r.put("CODART",codart); r.put("UM",um);r.put("NSCAGL",sca); r.put("CODART",codart); r.put("UM",um);r.put("NSCAGL",sca);
} }
*/
real TTabelle_sconti::find_prev_qta(TRectype& r) real TTabelle_sconti::find_prev_qta(TRectype& r)
{ {
@ -117,8 +125,9 @@ bool TTabelle_sconti::handle_qta(TMask_field &f, KEY k)
TMask& m = f.mask(); TMask& m = f.mask();
real qta_prev,qta_next; real qta_prev,qta_next;
real current_qta(f.get()); real current_qta(f.get());
TRectype r1(LF_SCONTI); TRelation r(LF_SCONTI);
fill_rec(r1,m); m.autosave(r);
TRectype r1(r.curr());
TRectype r2(r1); TRectype r2(r1);
qta_prev = find_prev_qta(r1); qta_prev = find_prev_qta(r1);
@ -154,17 +163,19 @@ bool TTabelle_sconti::handle_sca(TMask_field &f, KEY k)
int sca = atoi(f.get()); int sca = atoi(f.get());
if (sca == 1) return TRUE; if (sca == 1) return TRUE;
TRectype r(LF_SCONTI); TRelation sconti(LF_SCONTI);
fill_rec(r, m);
TLocalisamfile sconti(LF_SCONTI); m.autosave(sconti);
TRectype r(sconti.curr());
sconti.curr() = r;
sconti.read(); sconti.read();
if (sconti.bad()) // se non l'ha trovato significa che e' in inserimento if (sconti.bad()) // se non l'ha trovato significa che e' in inserimento
{ {
sca--; sca--;
r.put("NSCAGL",sca); //cerca quello precedente... sconti.curr() = r;
if (sconti.read(r) != NOERR) // se non lo trova segnala l'errore di errata sequenza sconti.curr().put("NSCAGL",sca); //cerca quello precedente...
if (sconti.read() != NOERR) // se non lo trova segnala l'errore di errata sequenza
{ {
f.error_box("Il numero di scaglione immesso non e' in sequenza."); f.error_box("Il numero di scaglione immesso non e' in sequenza.");
return FALSE; return FALSE;
@ -174,23 +185,20 @@ bool TTabelle_sconti::handle_sca(TMask_field &f, KEY k)
return TRUE; return TRUE;
} }
bool TTabelle_sconti::handle_art(TMask_field &f, KEY k) bool TTabelle_sconti::handle_check(TMask_field &f, KEY k)
{ {
if (f.to_check(k)) if (f.to_check(k))
{ {
TLocalisamfile a(LF_ANAMAG); TEditable_field & check_field = (TEditable_field &) f.mask().field(f.dlg() + 100);
TString art(f.get());
if (art.empty()) return TRUE; check_field.set(f.get());
a.put("CODART",art); if (!check_field.check())
if (a.read() != NOERR) return check_field.error_box(check_field.get_warning());
{
f.error_box("Codice articolo non presente sull'anagrafica");
return FALSE;
}
} }
return TRUE; return TRUE;
} }
/*
bool TTabelle_sconti::handle_um(TMask_field &f, KEY k) bool TTabelle_sconti::handle_um(TMask_field &f, KEY k)
{ {
if (f.to_check(k)) if (f.to_check(k))
@ -209,94 +217,47 @@ bool TTabelle_sconti::handle_um(TMask_field &f, KEY k)
} }
return TRUE; 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) bool TTabelle_sconti::user_create()
{ {
if (f.to_check(k))
{
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");
return FALSE;
}
}
return TRUE;
}
bool TTabelle_sconti::handle_cpg(TMask_field &f, KEY k)
{
if (f.to_check(k))
{
TTable a("%CPG");
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");
return FALSE;
}
}
return TRUE;
}
bool TTabelle_sconti::user_create() {
bool gotcha= FALSE; // booleano di avvenuta inizializzazione bool gotcha= FALSE; // booleano di avvenuta inizializzazione
int i; // indice di ciclo
_sconti= '*'; // inizializzazione dell'indicatore del tipo di tabella _sconti= '*'; // inizializzazione dell'indicatore del tipo di tabella
if (argc()>2) _sconti= toupper((argv(2))[0]); // se c'è, prende il tipo di tabella dalla linea di comando if (argc()>2)
else { _sconti = toupper((argv(2))[0]); // se c'è, prende il tipo di tabella dalla linea di comando
TMask choose("VE2100"); // istanzia la maschera di scelta del tipo di tabella else
if (choose.run() == K_ENTER) _sconti= toupper((choose.get(F_TIPOSC))[0]); // prende il tipo di tabella dalla maschera {
TMask choose("ve2100"); // istanzia la maschera di scelta del tipo di tabella
if (choose.run() == K_ENTER)
_sconti = toupper((choose.get(F_TIPOSC))[0]); // prende il tipo di tabella dalla maschera
else
return FALSE;
} }
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione di ditta TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione di ditta
switch (_sconti) { switch (_sconti) {
case 'D': // sconti documento case 'D': // sconti documento
_msk= new TMask("VE2100D"); // apre la maschera relativa _msk= new TMask("ve2100d"); // apre la maschera relativa
set_search_field(F_D_CODCAT); // setta il campo di ricerca set_search_field(F_D_CODCAT); // setta il campo di ricerca
gotcha= TRUE; gotcha= TRUE;
break; break;
case 'R': // sconti di riga case 'R': // sconti di riga
_gesscoriga = prassid.get("GESSCORIGA"); // legge lo stato del parametro di abilitazione degli sconti riga _gesscoriga = prassid.get("GESSCORIGA"); // legge lo stato del parametro di abilitazione degli sconti riga
if (_gesscoriga == "A") { if (_gesscoriga == "A")
_msk= new TMask("VE2100R"); // apre la maschera relativa {
set_search_field(F_R_RICERCA); // setta il campo di ricerca _msk= new TMask("ve2100r"); // apre la maschera relativa
_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
_sca = prassid.get_bool("GESSCOSCA"); // legge il parametro di abilitazione degli scaglioni
if (!_catven) if (!_catven)
{
key_disable(*_msk, F_R_CODCAT); // se non è 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
} _scoum = prassid.get_bool("GESSCOUM"); // legge il parametro di abilitazione delle unita' di misura
if (!_scoum) if (!_scoum)
key_disable(*_msk, F_R_UM); // se non e' abilitato, viene disabilitato anche il campo key_disable(*_msk, F_R_UM); // se non e' abilitato, viene disabilitato anche il campo
else // else
_msk->set_handler(F_R_UM,handle_um); // _msk->set_handler(F_R_UM,handle_um);
_sca = prassid.get_bool("GESSCOSCA"); // legge il parametro di abilitazione degli scaglioni
if (!_sca) if (!_sca)
{ {
key_disable(*_msk, F_R_SCA); // se non e' abilitato, viene disabilitato anche il campo key_disable(*_msk, F_R_SCA); // se non e' abilitato, viene disabilitato anche il campo
@ -307,15 +268,60 @@ bool TTabelle_sconti::user_create() {
_msk->set_handler(F_R_QLIM, handle_qta); // setta l'handler per controllare la quantita' limite _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_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_CODART_A,handle_check);
_msk->set_handler(F_R_RICERCA_A,handle_art); _msk->set_handler(F_R_RFA_A,handle_check);
_msk->set_handler(F_R_GRM_A,handle_check);
_msk->set_handler(F_R_SGM_A,handle_check);
gotcha= TRUE; gotcha= TRUE;
} else error_box("Gli sconti di riga non sono abilitati nella configurazione");
const char * rigakey = prassid.get("SCORIGAKEY");
_msk->set(F_R_TIPO_RIGA, rigakey);
switch (*rigakey)
{
case 'A' :
key_hide(*_msk, F_R_RFA_A);
key_hide(*_msk, F_R_RFA);
key_hide(*_msk, F_R_GRM_A);
key_hide(*_msk, F_R_GRM);
key_hide(*_msk, F_R_SGM_A);
key_hide(*_msk, F_R_SGM);
break;
case 'R' :
key_hide(*_msk, F_R_CODART_A);
key_hide(*_msk, F_R_CODART);
key_hide(*_msk, F_R_GRM_A);
key_hide(*_msk, F_R_GRM);
key_hide(*_msk, F_R_SGM_A);
key_hide(*_msk, F_R_SGM);
break;
case 'C' :
key_hide(*_msk, F_R_CODART_A);
key_hide(*_msk, F_R_CODART);
key_hide(*_msk, F_R_RFA_A);
key_hide(*_msk, F_R_RFA);
key_hide(*_msk, F_R_GRM_A);
key_hide(*_msk, F_R_GRM);
break;
case 'L' :
key_hide(*_msk, F_R_CODART_A);
key_hide(*_msk, F_R_CODART);
key_hide(*_msk, F_R_RFA_A);
key_hide(*_msk, F_R_RFA);
key_hide(*_msk, F_R_SGM_A);
key_hide(*_msk, F_R_SGM);
break;
default :
break;
}
}
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") {
_msk= new TMask("VE2100I"); // apre la maschera relativa _msk= new TMask("ve2100i"); // apre la maschera relativa
// inizializza l'array dei campi da disabilitare condizionalmente // inizializza l'array dei campi da disabilitare condizionalmente
_sci_k_id[0].normal_field = F_I_CATVEN; _sci_k_id[0].normal_field = F_I_CATVEN;
_sci_k_id[0].search_field = F_I_RICERCA; _sci_k_id[0].search_field = F_I_RICERCA;
@ -329,13 +335,12 @@ bool TTabelle_sconti::user_create() {
_sci_k_id[3].normal_field = F_I_CONDPAG; _sci_k_id[3].normal_field = F_I_CONDPAG;
_sci_k_id[3].search_field = F_I_RICERCA_CO; _sci_k_id[3].search_field = F_I_RICERCA_CO;
_sci_k_id[3].enabled = TRUE; _sci_k_id[3].enabled = TRUE;
// _msk->set_handler(F_I_SCCLIENTI,handle_sco); _msk->set_handler(F_I_RICERCA, handle_check);
_msk->set_handler(F_I_ZONE,handle_zon); _msk->set_handler(F_I_RICERCA_SC, handle_check);
_msk->set_handler(F_I_CONDPAG,handle_cpg); _msk->set_handler(F_I_RICERCA_ZO, handle_check);
// _msk->set_handler(F_I_RICERCA_SC,handle_sco); _msk->set_handler(F_I_RICERCA_CO, handle_check);
_msk->set_handler(F_I_RICERCA_ZO,handle_zon); for (int i = 0; i < 4; i++)
_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... if (!prassid.get_bool("SCOKEY", NULL, i+1)) // se nel file di config. il campo non è abilitato...
{ {
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].normal_field); // il campo non è abilitato viene disabilitato anche sulla maschera
@ -367,7 +372,6 @@ bool TTabelle_sconti::user_destroy() {
} }
void TTabelle_sconti::init_query_mode(TMask& m) { void TTabelle_sconti::init_query_mode(TMask& m) {
int i;
switch (_sconti) switch (_sconti)
{ {
@ -375,67 +379,106 @@ void TTabelle_sconti::init_query_mode(TMask& m) {
set_search_field(F_D_CODCAT); // setta il campo di ricerca set_search_field(F_D_CODCAT); // setta il campo di ricerca
break; break;
case 'I': case 'I':
for (i=0; i<4;i++) {
if (_sci_k_id[i].enabled) for (int i = 0; i < 4 ; i++)
{ {
m.show(_sci_k_id[i].search_field); if (_sci_k_id[i].enabled)
m.hide(_sci_k_id[i].normal_field); {
key_enable(m,_sci_k_id[i].search_field); m.show(_sci_k_id[i].search_field);
key_disable(m,_sci_k_id[i].normal_field); m.hide(_sci_k_id[i].normal_field);
set_search_field(_sci_k_id[i].search_field); key_enable(m,_sci_k_id[i].search_field);
break; key_disable(m,_sci_k_id[i].normal_field);
}
} }
break; set_search_field(F_I_RICERCA);
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 break;
case 'R':
{ {
m.hide(F_R_CODART); const char * rigakey = m.get(F_R_TIPO_RIGA);
m.show(F_R_RICERCA_A);
set_search_field(F_R_RICERCA_A); // setta il campo di ricerca switch (*rigakey)
{
case 'A' :
m.show(F_R_CODART_A);
m.hide(F_R_CODART);
set_search_field(F_R_CODART_A); // setta il campo di ricerca
break;
case 'R' :
m.show(F_R_RFA_A);
m.hide(F_R_RFA);
set_search_field(F_R_RFA_A); // setta il campo di ricerca
break;
case 'C' :
m.show(F_R_SGM_A);
m.hide(F_R_SGM);
set_search_field(F_R_SGM_A); // setta il campo di ricerca
break;
case 'L' :
m.show(F_R_GRM_A);
m.hide(F_R_GRM);
set_search_field(F_R_GRM_A); // setta il campo di ricerca
break;
default :
break;
}
} }
break; break;
default: break; default: break;
} }
} }
void TTabelle_sconti::init_query_insert_mode(TMask& m) { void TTabelle_sconti::init_query_insert_mode(TMask& m)
int i; {
switch (_sconti) switch (_sconti)
{ {
case 'D': case 'D':
set_search_field(F_D_CODCAT); // setta il campo di ricerca set_search_field(F_D_CODCAT); // setta il campo di ricerca
break; break;
case 'I': case 'I':
for (i=0; i<4;i++) {
if (_sci_k_id[i].enabled) for (int i = 0; i < 4; i++)
{ {
m.show(_sci_k_id[i].normal_field); if (_sci_k_id[i].enabled)
m.hide(_sci_k_id[i].search_field); {
key_enable(m,_sci_k_id[i].normal_field); m.show(_sci_k_id[i].normal_field);
key_disable(m,_sci_k_id[i].search_field); m.hide(_sci_k_id[i].search_field);
set_search_field(_sci_k_id[i].normal_field); key_enable(m,_sci_k_id[i].normal_field);
break; key_disable(m,_sci_k_id[i].search_field);
}
} }
set_search_field(F_I_CATVEN);
}
break; break;
case 'R': case 'R':
if (_catven)
{ {
m.hide(F_R_RICERCA); const char * rigakey = m.get(F_R_TIPO_RIGA);
m.show(F_R_CODCAT);
set_search_field(F_R_CODCAT); // setta il campo di ricerca switch (*rigakey)
} {
else case 'A' :
{ m.show(F_R_CODART);
m.hide(F_R_RICERCA_A); m.hide(F_R_CODART_A);
m.show(F_R_CODART); set_search_field(F_R_CODART); // setta il campo di ricerca
set_search_field(F_R_CODART); // setta il campo di ricerca break;
case 'R' :
m.show(F_R_RFA);
m.hide(F_R_RFA_A);
set_search_field(F_R_RFA); // setta il campo di ricerca
break;
case 'C' :
m.show(F_R_SGM);
m.hide(F_R_SGM_A);
set_search_field(F_R_SGM); // setta il campo di ricerca
break;
case 'L' :
m.show(F_R_GRM);
m.hide(F_R_GRM_A);
set_search_field(F_R_GRM); // setta il campo di ricerca
break;
default :
break;
}
} }
break; break;
default: break; default: break;
@ -457,7 +500,6 @@ void TTabelle_sconti::renumber_sca(const TRectype& r)
bool TTabelle_sconti::remove() bool TTabelle_sconti::remove()
{ {
TRectype r(LF_SCONTI); TRectype r(LF_SCONTI);
fill_rec(r,*_msk);
const bool rt = TRelation_application::remove(); const bool rt = TRelation_application::remove();
if (_sca) // rinumera gli scaglioni if (_sca) // rinumera gli scaglioni
renumber_sca(r); renumber_sca(r);

View File

@ -7,7 +7,7 @@ BEGIN
PROMPT 1 2 "Tipo di archivio " PROMPT 1 2 "Tipo di archivio "
ITEM "R|Sconti di riga" ITEM "R|Sconti di riga"
ITEM "D|Sconti documento" ITEM "D|Sconti documento"
ITEM "I|Sconti indondizionati" ITEM "I|Sconti incondizionati"
END END
BUTTON DLG_SELECT 9 2 BUTTON DLG_SELECT 9 2

View File

@ -1,15 +1,16 @@
#define F_I_RICERCA 131 #define F_I_TIPO 132
#define F_I_TIPO 132 #define F_I_SCONTO 137
#define F_I_CATVEN 133 #define F_I_DESVEN 138
#define F_I_SCCLIENTI 134 #define F_I_DESSCCLI 139
#define F_I_ZONE 135 #define F_I_DESZONE 140
#define F_I_CONDPAG 136 #define F_I_DESCONPAG 141
#define F_I_SCONTO 137
#define F_I_DESVEN 138
#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
#define F_I_RICERCA_SC 150
#define F_I_RICERCA_ZO 151
#define F_I_RICERCA_CO 152
#define F_I_RICERCA 153
#define F_I_SCCLIENTI 250
#define F_I_ZONE 251
#define F_I_CONDPAG 252
#define F_I_CATVEN 253

View File

@ -24,17 +24,17 @@ END
STRING F_I_RICERCA 2 STRING F_I_RICERCA 2
BEGIN BEGIN
PROMPT 2 2 "Cat. vendite " PROMPT 2 2 "Cat. vendita "
FIELD CODCAT FIELD CODCAT
FLAG "HU" FLAG "HU"
KEY 1 KEY 1
USE LF_SCONTI SELECT CODCAT != "" USE LF_SCONTI SELECT CODCAT != ""
JOIN CVE ALIAS 201 INTO CODTAB==CODCAT JOIN CVE ALIAS 201 INTO CODTAB==CODCAT
INPUT TIPO F_I_TIPO SELECT INPUT TIPO F_I_TIPO SELECT
INPUT CODCAT F_I_CATVEN INPUT CODCAT F_I_RICERCA
INPUT CODART[1,2] F_I_SCCLIENTI INPUT CODART[1,2] F_I_RICERCA_SC
INPUT CODART[3,4] F_I_ZONE INPUT CODART[3,4] F_I_RICERCA_ZO
INPUT CODART[5,8] F_I_CONDPAG INPUT CODART[5,8] F_I_RICERCA_CO
DISPLAY "Cat.Vend." CODCAT DISPLAY "Cat.Vend." CODCAT
DISPLAY "Cod. sconto" CODART[1,2] DISPLAY "Cod. sconto" CODART[1,2]
DISPLAY "Zona" CODART[3,4] DISPLAY "Zona" CODART[3,4]
@ -42,9 +42,9 @@ BEGIN
DISPLAY "Sconto@25" SCONTO DISPLAY "Sconto@25" SCONTO
OUTPUT F_I_RICERCA CODCAT OUTPUT F_I_RICERCA CODCAT
OUTPUT F_I_DESVEN -201->S0 OUTPUT F_I_DESVEN -201->S0
OUTPUT F_I_SCCLIENTI CODART[1,2] OUTPUT F_I_RICERCA_SC CODART[1,2]
OUTPUT F_I_ZONE CODART[3,4] OUTPUT F_I_RICERCA_ZO CODART[3,4]
OUTPUT F_I_CONDPAG CODART[5,8] OUTPUT F_I_RICERCA_CO CODART[5,8]
END END
STRING F_I_CATVEN 2 STRING F_I_CATVEN 2
@ -74,21 +74,7 @@ BEGIN
FIELD CODART[1,2] FIELD CODART[1,2]
FLAG "HU" FLAG "HU"
KEY 1 KEY 1
USE LF_SCONTI COPY ALL F_I_RICERCA
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 END
STRING F_I_SCCLIENTI 2 STRING F_I_SCCLIENTI 2
@ -98,18 +84,12 @@ BEGIN
KEY 1 KEY 1
FLAG "U" FLAG "U"
USE %SCC USE %SCC
// INPUT TIPO "D"
// INPUT CODCAT F_I_SCCLIENTI
// DISPLAY "Sc. Cliente" CODCAT
// DISPLAY "Descrizione@50" DESCR
// OUTPUT F_I_SCCLIENTI CODCAT
// OUTPUT F_I_DESSCCLI DESCR
INPUT CODTAB F_I_SCCLIENTI INPUT CODTAB F_I_SCCLIENTI
DISPLAY "Sc. Cliente" CODTAB DISPLAY "Sc. Cliente" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_I_SCCLIENTI CODTAB OUTPUT F_I_SCCLIENTI CODTAB
OUTPUT F_I_DESSCCLI S0 OUTPUT F_I_DESSCCLI S0
CHECKTYPE REQUIRED CHECKTYPE FORCED
END END
STRING F_I_DESSCCLI 50 STRING F_I_DESSCCLI 50
@ -124,19 +104,7 @@ BEGIN
FIELD CODART[3,4] FIELD CODART[3,4]
FLAG "HU" FLAG "HU"
KEY 1 KEY 1
USE LF_SCONTI SELECT CODCAT=="" COPY ALL F_I_RICERCA
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 END
STRING F_I_ZONE 2 STRING F_I_ZONE 2
@ -145,13 +113,13 @@ BEGIN
FIELD CODART[3,4] FIELD CODART[3,4]
FLAG "U" FLAG "U"
KEY 1 KEY 1
USE %ZON USE ZON
INPUT CODTAB F_I_ZONE INPUT CODTAB F_I_ZONE
DISPLAY "Zona" CODTAB DISPLAY "Zona" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_I_ZONE CODTAB OUTPUT F_I_ZONE CODTAB
OUTPUT F_I_DESZONE S0 OUTPUT F_I_DESZONE S0
CHECKTYPE REQUIRED CHECKTYPE FORCED
END END
STRING F_I_DESZONE 50 STRING F_I_DESZONE 50
@ -166,17 +134,7 @@ BEGIN
FIELD CODART[5,8] FIELD CODART[5,8]
FLAG "HU" FLAG "HU"
KEY 1 KEY 1
USE LF_SCONTI SELECT CODCAT == "" COPY ALL F_I_RICERCA
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 END
STRING F_I_CONDPAG 4 STRING F_I_CONDPAG 4
@ -191,7 +149,7 @@ BEGIN
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_I_CONDPAG CODTAB OUTPUT F_I_CONDPAG CODTAB
OUTPUT F_I_DESCONPAG S0 OUTPUT F_I_DESCONPAG S0
CHECKTYPE REQUIRED CHECKTYPE FORCED
END END
STRING F_I_DESCONPAG 50 STRING F_I_DESCONPAG 50

View File

@ -1,12 +1,19 @@
#define F_R_RICERCA 121 #define F_R_TIPO 122
#define F_R_TIPO 122 #define F_R_CODCAT 123
#define F_R_CODCAT 123 #define F_R_UM 125
#define F_R_CODART 124 #define F_R_DESART 126
#define F_R_UM 125 #define F_R_SCONTO 127
#define F_R_DESART 126 #define F_R_DESCAT 128
#define F_R_SCONTO 127 #define F_R_SCA 129
#define F_R_DESCAT 128 #define F_R_QLIM 130
#define F_R_SCA 129 #define F_R_TIPO_RIGA 132
#define F_R_QLIM 130
#define F_R_RICERCA_A 131
#define F_R_CODART_A 150
#define F_R_RFA_A 151
#define F_R_GRM_A 152
#define F_R_SGM_A 153
#define F_R_CODART 250
#define F_R_RFA 251
#define F_R_GRM 252
#define F_R_SGM 253

View File

@ -13,32 +13,6 @@ BEGIN
FLAG "R" FLAG "R"
END END
STRING F_R_RICERCA 2
BEGIN
PROMPT 2 2 "Cat. vendita "
FIELD CODCAT
FLAG "HU"
KEY 1
USE LF_SCONTI SELECT CODCAT != ""
JOIN CVE ALIAS 201 INTO CODTAB==CODCAT
INPUT TIPO F_R_TIPO SELECT
INPUT CODCAT F_R_RICERCA
INPUT CODART F_R_CODART
INPUT UM F_R_UM
DISPLAY "Cat.Vend." CODCAT
DISPLAY "Codice art.@20" CODART
DISPLAY "U.M." UM
DISPLAY "N. scaglione" NSCAGL
DISPLAY "Sconto@25" SCONTO
OUTPUT F_R_RICERCA CODCAT
OUTPUT F_R_CODCAT CODCAT
OUTPUT F_R_DESCAT -201->S0
OUTPUT F_R_CODART CODART
OUTPUT F_R_UM UM
OUTPUT F_R_SCA NSCAGL
MESSAGE COPY,F_R_CODCAT
END
LIST F_R_TIPO 20 LIST F_R_TIPO 20
BEGIN BEGIN
PROMPT 100 100 "" PROMPT 100 100 ""
@ -69,7 +43,19 @@ BEGIN
FLAG "D" FLAG "D"
END END
STRING F_R_RICERCA_A 20 LIST F_R_TIPO_RIGA 20
BEGIN
PROMPT 100 100 " "
FIELD TIPORIGA
KEY 1
ITEM "A|Articoli"
ITEM "R|Raggr.fiscale"
ITEM "L|Gruppo merc."
ITEM "C|Sottogr.merc."
FLAGS "DP"
END
STRING F_R_CODART_A 20
BEGIN BEGIN
PROMPT 2 4 "Cod. articolo " PROMPT 2 4 "Cod. articolo "
FIELD CODART FIELD CODART
@ -79,19 +65,23 @@ BEGIN
JOIN LF_ANAMAG INTO CODART==CODART JOIN LF_ANAMAG INTO CODART==CODART
JOIN CVE ALIAS 201 INTO CODTAB==CODCAT JOIN CVE ALIAS 201 INTO CODTAB==CODCAT
INPUT TIPO F_R_TIPO SELECT INPUT TIPO F_R_TIPO SELECT
INPUT CODCAT F_R_RICERCA SELECT INPUT CODCAT F_R_CODCAT SELECT
INPUT CODART F_R_RICERCA_A INPUT TIPORIGA F_R_TIPO_RIGA SELECT
INPUT CODART F_R_CODART_A
INPUT UM F_R_UM INPUT UM F_R_UM
DISPLAY "Cat. merc." CODCAT
DISPLAY "Codice art.@20" CODART DISPLAY "Codice art.@20" CODART
DISPLAY "U.M." UM DISPLAY "U.M." UM
DISPLAY "N. scaglione" NSCAGL DISPLAY "N. scaglione" NSCAGL
DISPLAY "Sconto@25" SCONTO DISPLAY "Sconto@25" SCONTO
OUTPUT F_R_RICERCA_A CODART OUTPUT F_R_CODCAT CODCAT
OUTPUT F_R_CODART CODART OUTPUT F_R_TIPO_RIGA TIPORIGA
OUTPUT F_R_CODART_A CODART
OUTPUT F_R_UM UM OUTPUT F_R_UM UM
OUTPUT F_R_DESART LF_ANAMAG->DESCR OUTPUT F_R_DESART LF_ANAMAG->DESCR
OUTPUT F_R_SCA NSCAGL OUTPUT F_R_SCA NSCAGL
MESSAGE COPY,F_R_CODART CHECKYTPE REQUIRED
GROUP 1
END END
STRING F_R_CODART 20 STRING F_R_CODART 20
@ -106,10 +96,146 @@ 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
VALIDATE REQIF_FUNC 1 F_R_UM CHECKYTPE FORCED
CHECKTYPE REQUIRED WARNING "Articolo assente"
WARNING "Il codice articolo e' necessario se si specifica l'unita' di misura"
ADD RUN VE2 -3 ADD RUN VE2 -3
GROUP 1
END
STRING F_R_RFA_A 5
BEGIN
PROMPT 2 4 "Raggr.fiscale "
FIELD CODART
FLAG "HU"
KEY 1
USE LF_SCONTI
JOIN RFA INTO CODTAB==CODART
JOIN CVE ALIAS 201 INTO CODTAB==CODCAT
INPUT TIPO F_R_TIPO SELECT
INPUT CODCAT F_R_CODCAT SELECT
INPUT TIPORIGA F_R_TIPO_RIGA SELECT
INPUT CODART F_R_RFA_A
INPUT UM F_R_UM
DISPLAY "Cat. merc." CODCAT
DISPLAY "Codice art.@20" CODART
DISPLAY "U.M." UM
DISPLAY "N. scaglione" NSCAGL
DISPLAY "Sconto@25" SCONTO
OUTPUT F_R_CODCAT CODCAT
OUTPUT F_R_TIPO_RIGA TIPORIGA
OUTPUT F_R_RFA_A CODART
OUTPUT F_R_UM UM
OUTPUT F_R_DESART RFA->S0
OUTPUT F_R_SCA NSCAGL
CHECKYTPE REQUIRED
GROUP 2
END
STRING F_R_RFA 5
BEGIN
PROMPT 2 4 "Raggr.fiscale "
FIELD CODART
FLAG "U"
KEY 1
USE RFA
INPUT CODTAB F_R_RFA
DISPLAY "Codice@20" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_R_RFA CODTAB
OUTPUT F_R_DESART S0
CHECKYTPE FORCED
WARNING "Raggruppamento fiscale assente"
GROUP 2
END
STRING F_R_GRM_A 3
BEGIN
PROMPT 2 4 "Gruppo merc. "
FIELD CODART
FLAG "HU"
KEY 1
USE LF_SCONTI
JOIN GMC INTO CODTAB==CODART
JOIN CVE ALIAS 201 INTO CODTAB==CODCAT
INPUT TIPO F_R_TIPO SELECT
INPUT CODCAT F_R_CODCAT SELECT
INPUT TIPORIGA F_R_TIPO_RIGA SELECT
INPUT CODART F_R_GRM_A
DISPLAY "Cat. merc." CODCAT
DISPLAY "Gruppo merc." CODART
DISPLAY "U.M." UM
DISPLAY "N. scaglione" NSCAGL
DISPLAY "Sconto@25" SCONTO
OUTPUT F_R_CODCAT CODCAT
OUTPUT F_R_TIPO_RIGA TIPORIGA
OUTPUT F_R_GRM_A CODART
OUTPUT F_R_UM UM
OUTPUT F_R_DESART GMC->S0
OUTPUT F_R_SCA NSCAGL
CHECKYTPE REQUIRED
GROUP 3
END
STRING F_R_GRM 3
BEGIN
PROMPT 2 4 "Gruppo merc. "
FIELD CODART
FLAG "U"
KEY 1
USE GMC SELECT CODTAB ? '???'
INPUT CODTAB F_R_GRM
DISPLAY "Codice@20" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_R_GRM CODTAB
OUTPUT F_R_DESART S0
CHECKYTPE FORCED
WARNING "Gruppo merceologico assente"
GROUP 3
END
STRING F_R_SGM_A 5
BEGIN
PROMPT 2 4 "Sottog.merc. "
FIELD CODART
FLAG "HU"
KEY 1
USE LF_SCONTI
JOIN GMC INTO CODTAB==CODART
JOIN CVE ALIAS 201 INTO CODTAB==CODCAT
INPUT TIPO F_R_TIPO SELECT
INPUT CODCAT F_R_CODCAT SELECT
INPUT TIPORIGA F_R_TIPO_RIGA SELECT
INPUT CODART F_R_SGM_A
DISPLAY "Cat. merc." CODCAT
DISPLAY "Sottog.merc." CODART
DISPLAY "U.M." UM
DISPLAY "N. scaglione" NSCAGL
DISPLAY "Sconto@25" SCONTO
OUTPUT F_R_CODCAT CODCAT
OUTPUT F_R_TIPO_RIGA TIPORIGA
OUTPUT F_R_SGM_A CODART
OUTPUT F_R_UM UM
OUTPUT F_R_DESART GMC->S0
OUTPUT F_R_SCA NSCAGL
CHECKYTPE REQUIRED
GROUP 3
END
STRING F_R_SGM 5
BEGIN
PROMPT 2 4 "Sottog.merc. "
FIELD CODART
FLAG "U"
KEY 1
COPY USE F_R_GRM
INPUT CODTAB F_R_SGM
DISPLAY "Codice@20" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_R_SGM CODTAB
OUTPUT F_R_DESART S0
CHECKYTPE FORCED
WARNING "Sottogruppo merceologico assente"
GROUP 4
END END
STRING F_R_UM 2 STRING F_R_UM 2
@ -125,7 +251,8 @@ 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
CHECKTYPE REQUIRED CHECKTYPE FORCED
GROUP 1
END END
NUMBER F_R_SCA 1 NUMBER F_R_SCA 1