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
		
			
				
	
	
		
			139 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
// gestione files Contabilita' Analitica: FASI
 | 
						||
#include <execp.h>
 | 
						||
#include <recset.h>
 | 
						||
#include <relapp.h>
 | 
						||
 | 
						||
#include "calib01.h"
 | 
						||
#include "calibmsk.h"
 | 
						||
#include "ca0700a.h"
 | 
						||
#include "fasi.h"
 | 
						||
 | 
						||
////////////////////////////////////////////////////////////////////////
 | 
						||
//MASCHERA
 | 
						||
////////////////////////////////////////////////////////////////////////
 | 
						||
 | 
						||
class TFsc_anal_msk : public TSimple_anal_msk
 | 
						||
{
 | 
						||
protected:
 | 
						||
  virtual int get_logicnum() const { return LF_FASI; } 
 | 
						||
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
						||
 | 
						||
public:
 | 
						||
  TFsc_anal_msk();
 | 
						||
};
 | 
						||
 | 
						||
bool TFsc_anal_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
						||
{
 | 
						||
  const short id = o.dlg();
 | 
						||
  if (id > F_KEY4 && id <= F_KEY4+4)
 | 
						||
  {
 | 
						||
    const int level = id - F_KEY4 - 1;
 | 
						||
    return ca_test_multilevel_field(efield(id), level);
 | 
						||
  }
 | 
						||
  return TSimple_anal_msk::on_field_event(o, e, jolly);
 | 
						||
}
 | 
						||
 | 
						||
TFsc_anal_msk::TFsc_anal_msk()
 | 
						||
{
 | 
						||
	read("ca0700a");
 | 
						||
 | 
						||
	const bool use_pdcc = ca_config().get_bool("UsePdcc");
 | 
						||
	const int nfields = ca_create_fields(*this, 0, use_pdcc ? LF_PCON : LF_PCONANA, 2 + compute_offset(), 8, F_FSCPDA1, F_FSCDES1, 0x0, FASI_CODCONTO);
 | 
						||
	int from = 1;
 | 
						||
 | 
						||
  for (int i = 0; i < nfields; i++)
 | 
						||
	{
 | 
						||
		TEdit_field & e = efield(F_FSCPDA1 + 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 delle fasi
 | 
						||
class TFsc_app : public TAnal_app
 | 
						||
{
 | 
						||
  bool _has_filter;
 | 
						||
 | 
						||
protected:
 | 
						||
  virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM
 | 
						||
 | 
						||
  virtual bool filtered() const;
 | 
						||
  virtual bool protected_record(TRectype& record);
 | 
						||
  virtual TSimple_anal_msk* create_mask() const { return new TFsc_anal_msk; }
 | 
						||
  virtual bool user_create();
 | 
						||
};
 | 
						||
 | 
						||
bool TFsc_app::filtered() const
 | 
						||
{
 | 
						||
  if (_has_filter)
 | 
						||
    return true;
 | 
						||
  return TAnal_app::filtered();
 | 
						||
}
 | 
						||
 | 
						||
//non si pu<70> eliminare una fase se essa appare in un saldo analitico dell'anno in corso o dell'anno precedente
 | 
						||
bool TFsc_app::protected_record(TRectype& record)
 | 
						||
{
 | 
						||
  TString query;
 | 
						||
  query << "USE SALDANA\nSELECT (FASE==#FASE)";
 | 
						||
  //controlla se le fasi sono figlie delle commesse o dei centri di costo o semplici figlie di nessuno
 | 
						||
  const TString& fath_fasi = ca_config().get("FathFasi");
 | 
						||
 | 
						||
  if (fath_fasi == "CMS")
 | 
						||
    query << "&&(COMMESSA==#COMMESSA)";
 | 
						||
 | 
						||
  if (fath_fasi == "CDC")
 | 
						||
    query << "&&(COSTO==#COSTO)";
 | 
						||
    
 | 
						||
  query << "\nFROM ANNO=#ANNO";
 | 
						||
  
 | 
						||
  const TString fase = record.get(FASI_CODFASE);
 | 
						||
  const TDate today(TODAY);
 | 
						||
  const long anno = today.year();
 | 
						||
  const TString codcmsfas = record.get(FASI_CODCMSFAS);
 | 
						||
 | 
						||
  TISAM_recordset saldana_recset(query);
 | 
						||
 | 
						||
  saldana_recset.set_var("#FASE", TVariant(fase));
 | 
						||
  saldana_recset.set_var("#ANNO", TVariant(anno - 1));
 | 
						||
  if (fath_fasi == "CMS")
 | 
						||
    saldana_recset.set_var("#COMMESSA", TVariant(codcmsfas));
 | 
						||
  if (fath_fasi == "CDC")
 | 
						||
    saldana_recset.set_var("#COSTO", TVariant(codcmsfas));
 | 
						||
  
 | 
						||
  const long items = saldana_recset.items();
 | 
						||
  return items > 0;
 | 
						||
}
 | 
						||
 | 
						||
bool TFsc_app::user_create()
 | 
						||
{
 | 
						||
  const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_FASI);
 | 
						||
  if (mci.levels() <= 0)
 | 
						||
    return error_box(TR("Le fasi non sono state configurate"));
 | 
						||
 | 
						||
  //eventuali filtri per utente
 | 
						||
  _has_filter = cache().get("%AUC", user(), "S2").full();
 | 
						||
 | 
						||
  return TAnal_app::user_create();
 | 
						||
}
 | 
						||
 | 
						||
int ca0700(int argc, char* argv[])
 | 
						||
{
 | 
						||
  TFsc_app a;
 | 
						||
  a.run(argc, argv, TR("Fasi"));
 | 
						||
  return 0;
 | 
						||
}
 | 
						||
 |