// gestione files Contabilita' Analitica: COMMESSE
#include <execp.h>
#include <relapp.h>

#include "calib01.h"
#include "ca0600a.h"

////////////////////////////////////////////////////////////////////////
//MASCHERA
////////////////////////////////////////////////////////////////////////
class TCms_anal_msk : public TSimple_anal_msk
{
protected:
  virtual int get_logicnum() const { return LF_COMMESSE; } 

public:
  TCms_anal_msk() { read("ca0600a"); }
};

////////////////////////////////////////////////////////////////////////
//APPLICAZIONE
////////////////////////////////////////////////////////////////////////
// applicazione per la gestione delle commesse
class TCms_app : public TAnal_app
{  
	int _maxlev;

protected:          
	virtual void init_modify_mode(TMask& mask);
	virtual void init_insert_mode(TMask& mask);
  virtual TSimple_anal_msk* create_mask() const { return new TCms_anal_msk; }
  virtual bool user_create();
};

void TCms_app::init_modify_mode(TMask& mask)
{
	const short id = ((TCms_anal_msk &)mask).get_field_id(_maxlev - 1 , 1);
	mask.enable(-1, mask.get(id).not_empty());

  TAnal_app::init_modify_mode(mask);
}

void TCms_app::init_insert_mode(TMask& mask)
{
	const short id = ((TCms_anal_msk &)mask).get_field_id(_maxlev - 1, 1);
	mask.enable(-1, mask.get(id).not_empty());

  TAnal_app::init_insert_mode(mask);
}

bool TCms_app::user_create()
{
  const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_COMMESSE);

	_maxlev = mci.levels();
  if (_maxlev <= 0)
    return error_box(TR("Le commesse non sono state configurate"));

  return TAnal_app::user_create();
}

int ca0600(int argc, char* argv[])
{
  TCms_app a;
  a.run(argc, argv, TR("Commesse"));
  return 0;
}