134 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			4.0 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:
 | 
						|
  // @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 = 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;
 | 
						|
}
 |