campo-sirio/pr/pr0500.cpp
guy b15210d4f6 Patch level : 2.0 470
Files correlati     : pr0.exe
Ricompilazione Demo : [ ]
Commento            :

EP20052
Col mouse: clicco sul bottone ricerca e seleziono un agente inserito,
clicco su annulla i campi codice e ragione sociale non vengono svuotati


git-svn-id: svn://10.65.10.50/trunk@11138 c028cbd2-c16b-5b4b-a496-9718f37d4682
2003-05-15 12:27:42 +00:00

136 lines
4.0 KiB
C++
Executable File

// Programma di gestione agenti
#include <relapp.h>
#include "pr0.h"
#include "pr0500a.h"
#include "agenti.h"
class TGestione_agenti_app:public TRelation_application
{
TMask *_msk;
TRelation *_rel;
TLocalisamfile *_age;
protected:
virtual bool user_create();
virtual bool user_destroy();
virtual TMask* get_mask(int mode) { return _msk; }
virtual bool changing_mask(int mode) { return FALSE; }
virtual TRelation* get_relation() const { return _rel; }
static bool percfat_handler(TMask_field& f, KEY k);
static bool codcapo_handler(TMask_field& f, KEY k);
static bool seqalt_handler(TMask_field& f, KEY k);
static bool codalt_handler(TMask_field& f, KEY k);
public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
TGestione_agenti_app() {};
~TGestione_agenti_app() {};
};
static inline TGestione_agenti_app& app() { return (TGestione_agenti_app&) main_app(); }
bool TGestione_agenti_app::percfat_handler(TMask_field& f, KEY k)
{
if (f.to_check(k,TRUE))
{
const real p = CENTO - real(f.get());
f.mask().set(F_PERCPAG,p);
}
return TRUE;
}
bool TGestione_agenti_app::codcapo_handler(TMask_field& f, KEY k)
{
if (f.to_check(k) && k == K_ENTER) // Solo prima che prema il pulsante di registrazione
{
TLocalisamfile* agenti = app()._age;
TRecfield agente(agenti->curr(),AGE_CODAGE);
TRecfield capo(agenti->curr(),AGE_CODCAPO);
const TString& ag = f.mask().get(F_CODAGE);
TString ca = f.get();
agente = ca;
while (agenti->read() == NOERR)
{
ca = capo;
if (ca == ag)
break;
if (ca.empty())
break;
agente = ca;
}
if (agenti->good() && ca == ag)
return f.error_box(TR("Il codice del capozona inserito non e' valido, in quanto e' stato rilevato nella catena un codice capozona corrispondente al presente codice agente."));
}
return TRUE;
}
bool TGestione_agenti_app::seqalt_handler(TMask_field& f, KEY k)
{
if (f.to_check(k) && k == K_ENTER) // Solo prima che prema il pulsante di registrazione
{
if (f.get() == "A")
{
TMask& m = f.mask();
if (m.get(F_SEQRIC1) == "A" || m.get(F_SEQRIC2) == "A" ||
m.get(F_SEQRIC3) == "A" || m.get(F_SEQRIC4) == "A")
return f.error_box(TR("La percentuale definita nell'agente non puo' essere usata nella indicazione "
"di percentuale aggiuntiva se gia' utilizzata nella sequenza di ricerca della percentuale di provvigione"));
}
}
return TRUE;
}
bool TGestione_agenti_app::codalt_handler(TMask_field& f, KEY k)
{
if (f.to_check(k) && k == K_ENTER) // Solo prima che prema il pulsante di registrazione
{
TString16 cod = f.get();
if (cod.not_empty())
{
TMask& m = f.mask();
if (m.get(F_CODRICPR1) == cod || m.get(F_CODRICPR2) == cod ||
m.get(F_CODRICPR3) == cod || m.get(F_CODRICPR4) == cod)
return f.error_box(FR("L'archivio provvigioni %s definito nella indicazione di percentuale aggiuntiva non puo' essere utilizzato "
"se gia' impostato nella sequenza di ricerca della percentuale di provvigione"), (const char*)cod);
}
}
return TRUE;
}
bool TGestione_agenti_app::user_create()
{
_msk = new TMask("pr0500a") ;
_rel = new TRelation(LF_AGENTI);
_msk->set_handler(F_CODCAPO,codcapo_handler);
_msk->set_handler(F_SEQALT1,seqalt_handler);
_msk->set_handler(F_SEQALT2,seqalt_handler);
_msk->set_handler(F_SEQALT3,seqalt_handler);
_msk->set_handler(F_SEQALT4,seqalt_handler);
_msk->set_handler(F_CODALTPR1,codalt_handler);
_msk->set_handler(F_CODALTPR2,codalt_handler);
_msk->set_handler(F_CODALTPR3,codalt_handler);
_msk->set_handler(F_CODALTPR4,codalt_handler);
_msk->set_handler(F_PERCFATT,percfat_handler);
_age = new TLocalisamfile (LF_AGENTI);
return TRUE;
}
bool TGestione_agenti_app::user_destroy()
{
delete _msk;
delete _rel;
delete _age;
return TRUE;
}
int pr0500(int argc, char** argv)
{
TGestione_agenti_app a;
a.run(argc,argv, TR("Gestione agenti"));
return 0;
}