campo-sirio/pr/pr0500.cpp
angelo 1fe4f39307 Aggiunta prima versione programmi:
- Gestione agenti
  - Gestione provvigioni
  - Gestione tabelle

Da fare:
  stampe varie


git-svn-id: svn://10.65.10.50/trunk@5108 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-08-27 09:18:41 +00:00

131 lines
3.9 KiB
C++
Executable File

// Programma di gestione agenti
#include <relapp.h>
#include "agenti.h"
#include "pr0.h"
#include "pr0500a.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:
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 = 100.0 - 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);
TString ag = f.mask().get(F_CODAGE),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("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("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("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,"Gestione agenti");
return 0;
}