#include <tabapp.h>

#include "batbbnp.h" 

////////////////////////////////////////////////////
// Classe per la gestione della Tabella di Ditta  //
// "Banche di presentazione"                      // 
////////////////////////////////////////////////////
class TBnp_table_app : public TTable_application
{
protected: 
  virtual bool user_create() ;
  virtual void init_query_insert_mode(TMask& m) ;             
  virtual void init_insert_mode(TMask& m) ;
  virtual void init_query_mode (TMask&);   

public:
  // @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
  virtual bool check_autorization() const { return FALSE; }
  
  TBnp_table_app() { }
  virtual ~TBnp_table_app() { }
};

HIDDEN inline TBnp_table_app& app() { return (TBnp_table_app&) main_app(); }

void TBnp_table_app::init_query_insert_mode(TMask& m) 
{       
  if (get_tabname() == "BNP")
  {
    m.show(F_CODICEABI);
    m.show(F_CODICECAB);
    m.field(F_CODICEABI).check_type(CHECK_REQUIRED);    
    m.field(F_CODICECAB).check_type(CHECK_REQUIRED);
    m.hide(F_ABI);
    m.hide(F_CAB);  
    m.field(F_ABI).check_type(CHECK_NONE);    
    m.field(F_CAB).check_type(CHECK_NONE);
  }  
}        

void TBnp_table_app::init_insert_mode(TMask& m) 
{       
  if (get_tabname() == "BNP")
  {
    m.show(F_CODICEABI);
    m.show(F_CODICECAB);
    m.field(F_CODICEABI).check_type(CHECK_REQUIRED);    
    m.field(F_CODICECAB).check_type(CHECK_REQUIRED); 
    m.hide(F_ABI);
    m.hide(F_CAB);     
    m.field(F_ABI).check_type(CHECK_NONE);    
    m.field(F_CAB).check_type(CHECK_NONE);
  }
}

void TBnp_table_app::init_query_mode(TMask& m)
{
  TTable_application::init_query_mode(m);
  if (get_tabname() == "BNP")
  {
    m.show(F_ABI); 
    m.show(F_CAB); 
    m.field(F_ABI).check_type(CHECK_REQUIRED);    
    m.field(F_CAB).check_type(CHECK_REQUIRED); 
    m.hide(F_CODICEABI);
    m.hide(F_CODICECAB); 
    //m.field(F_CODICEABI).check_type(CHECK_NONE);    
    m.field(F_CODICECAB).check_type(CHECK_NONE); 
  }
}

bool TBnp_table_app::user_create()
{
  TTable_application::user_create();
  const TString& name = get_tabname();
  if (name.empty()) 
    return error_box("Specificare la tabella sulla linea di comando.");
  return TRUE;
}

int ef0700(int argc, char* argv[])
{
  TBnp_table_app a ;
  a.run(argc, argv, "Gestione tabelle");
  return 0;
}