
#include <applicat.h>
#include <tabapp.h>  
#include <strings.h>
#include <stdtypes.h>
#include <tabutil.h>
#include <utility.h> 
#include <prefix.h>

#include "..\ba\batbtra.h"

class Tabtra_application : public Tab_application
{
private:
  TMask*  _msk;   
  TString _tabname;
  
public:
  bool user_create();
  virtual void init_query_mode(TMask&);
  virtual void init_modify_mode(TMask&);
  virtual void init_insert_mode(TMask&);

  Tabtra_application() {}
  virtual ~Tabtra_application() {}
};

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

HIDDEN bool ultimo_handler(TMask& m, KEY k)
{
  if (k == K_SHIFT+K_F12)
  { 
    m.enable(F_NUMULTRAS);
    m.enable(F_DATAULTRAS);
  }
  
  return TRUE;
}

HIDDEN bool ditta_handler(TMask_field& f, KEY k)
{
  if (k == K_TAB)
  { 
    long codditta = f.mask().get_long(F_CODDITTARIC);
    
    if (codditta != 0)
    {
      if (prefix().exist(codditta))
        return TRUE;
      else
      {
        f.error_box("La ditta selezionata non e' abilitata per la contabilita' ");
        return FALSE;
      }
    }  
  }      
  return TRUE;
}

void Tabtra_application::init_query_mode(TMask& m)
{
  m.disable(F_NUMULTRAS);
  m.disable(F_DATAULTRAS);
}

void Tabtra_application::init_modify_mode(TMask& m)
{
  m.disable(F_NUMULTRAS);
  m.disable(F_DATAULTRAS);
}

void Tabtra_application::init_insert_mode(TMask& m)
{
  m.disable(F_NUMULTRAS);
  m.disable(F_DATAULTRAS);
}

bool Tabtra_application::user_create()
{ 
  Tab_application::user_create();

  _msk     = get_mask();
  _tabname = get_tabname();

  if (_tabname == "%TRA") 
  {  
    _msk->set_handler(ultimo_handler);
    _msk->set_handler(F_CODDITTARIC, ditta_handler);
  }

  return TRUE;
}

cg2300(int argc, char* argv[])
{
  Tabtra_application a;
  
  a.run(argc,argv, "Tabelle");
  return 0;
}


