Files correlati : ca0.exe ca2.exe Ricompilazione Demo : [ ] Commento : Bug 0001669: Aggiungere un conto di contabilità di default alle commesse Aggiungere un conto di contabilità di default alle commesse git-svn-id: svn://10.65.10.50/trunk@20665 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			128 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
// gestione files Contabilita' Analitica: CENTRI DI COSTO
 | 
						|
#include <execp.h>
 | 
						|
#include <recset.h>
 | 
						|
#include <relapp.h>
 | 
						|
 | 
						|
#include "calib01.h"
 | 
						|
#include "ca0500a.h"
 | 
						|
#include "cdc.h"
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////
 | 
						|
//MASCHERA
 | 
						|
////////////////////////////////////////////////////////////////////////
 | 
						|
class TCdC_anal_msk : public TSimple_anal_msk
 | 
						|
{
 | 
						|
protected:
 | 
						|
  virtual int get_logicnum() const { return LF_CDC; } 
 | 
						|
 | 
						|
public:
 | 
						|
  TCdC_anal_msk();
 | 
						|
};
 | 
						|
 | 
						|
TCdC_anal_msk::TCdC_anal_msk()
 | 
						|
{
 | 
						|
	read("ca0500a");
 | 
						|
 | 
						|
	const bool use_pdcc = ca_config().get_bool("UsePdcc");
 | 
						|
	const int nfields = ca_create_fields(*this, 1, use_pdcc ? LF_PCON : LF_PCONANA, 2, 2, F_CDCPDA1, F_CDCDES1, 0x0, CDC_CODCONTO);
 | 
						|
	int from = 1;
 | 
						|
 | 
						|
  for (int i = 0; i < nfields; i++)
 | 
						|
	{
 | 
						|
		TEdit_field & e = efield(F_CDCPDA1 + i);
 | 
						|
 | 
						|
    e.check_type(CHECK_NORMAL);
 | 
						|
		TFieldref * fr = (TFieldref *) e.field();
 | 
						|
		if (fr != NULL)
 | 
						|
		{
 | 
						|
			fr->set_from(from);
 | 
						|
			if (i < 2)
 | 
						|
				from += 3;
 | 
						|
			else
 | 
						|
				from += 6;
 | 
						|
			fr->set_to(from - 1);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////
 | 
						|
//APPLICAZIONE
 | 
						|
////////////////////////////////////////////////////////////////////////
 | 
						|
// applicazione per la gestione dei Centri di Costo
 | 
						|
class TCdC_app : public TAnal_app
 | 
						|
{  
 | 
						|
	int _maxlev;
 | 
						|
  bool _has_filter;
 | 
						|
 | 
						|
protected:
 | 
						|
  virtual bool filtered() const;
 | 
						|
 | 
						|
	virtual void init_modify_mode(TMask& mask);
 | 
						|
	virtual void init_insert_mode(TMask& mask);
 | 
						|
  virtual bool protected_record(TRectype& record);
 | 
						|
  virtual TSimple_anal_msk* create_mask() const { return new TCdC_anal_msk; }
 | 
						|
  virtual bool user_create();
 | 
						|
};
 | 
						|
 | 
						|
bool TCdC_app::filtered() const
 | 
						|
{
 | 
						|
  if (_has_filter)
 | 
						|
    return true;
 | 
						|
  return TAnal_app::filtered();
 | 
						|
}
 | 
						|
 | 
						|
//non si può eliminare un cdc se esso appare in un saldo analitico dell'anno in corso o dell'anno precedente
 | 
						|
bool TCdC_app::protected_record(TRectype& record)
 | 
						|
{
 | 
						|
  TString query;
 | 
						|
  query << "USE SALDANA\nSELECT COSTO==#COSTO\nFROM ANNO=#ANNO\n";
 | 
						|
  const TString cdc = record.get(CDC_CODCOSTO);
 | 
						|
  const TDate today(TODAY);
 | 
						|
  const long anno = today.year();
 | 
						|
 | 
						|
  TISAM_recordset saldana_recset(query);
 | 
						|
  saldana_recset.set_var("#COSTO", TVariant(cdc));
 | 
						|
  saldana_recset.set_var("#ANNO", TVariant(anno - 1));
 | 
						|
  
 | 
						|
  const long items = saldana_recset.items();
 | 
						|
  return items > 0;
 | 
						|
}
 | 
						|
 | 
						|
void TCdC_app::init_modify_mode(TMask& mask)
 | 
						|
{
 | 
						|
	const short id = ((TCdC_anal_msk &)mask).get_field_id(_maxlev - 1, 1);
 | 
						|
	mask.enable(-1, mask.get(id).not_empty());
 | 
						|
 | 
						|
  TAnal_app::init_modify_mode(mask);
 | 
						|
}
 | 
						|
 | 
						|
void TCdC_app::init_insert_mode(TMask& mask)
 | 
						|
{
 | 
						|
	const short id = ((TCdC_anal_msk &)mask).get_field_id(_maxlev - 1, 1);
 | 
						|
	mask.enable(-1, mask.get(id).not_empty());
 | 
						|
 | 
						|
  TAnal_app::init_insert_mode(mask);
 | 
						|
}
 | 
						|
 | 
						|
bool TCdC_app::user_create()
 | 
						|
{
 | 
						|
  const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_CDC);
 | 
						|
 | 
						|
	_maxlev = mci.levels();
 | 
						|
  if (_maxlev <= 0)
 | 
						|
    return error_box(TR("I centri di costo non sono stati configurati"));
 | 
						|
 | 
						|
  //eventuali filtri per utente
 | 
						|
  _has_filter = cache().get("%AUC", user(), "S1").full();
 | 
						|
 | 
						|
  return TAnal_app::user_create();
 | 
						|
}
 | 
						|
 | 
						|
int ca0500(int argc, char* argv[])
 | 
						|
{
 | 
						|
  TCdC_app a;
 | 
						|
  a.run(argc, argv, TR("Centri di Costo"));
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 |