Files correlati : Ricompilazione Demo : [ ] Commento : riportate modifiche dalla 5.0 per stampa bilancio alla data git-svn-id: svn://10.65.10.50/trunk@19054 c028cbd2-c16b-5b4b-a496-9718f37d4682
113 lines
3.0 KiB
C++
Executable File
113 lines
3.0 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() { read("ca0700a"); }
|
|
};
|
|
|
|
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);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//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ò 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(), "S0").full();
|
|
|
|
return TAnal_app::user_create();
|
|
}
|
|
|
|
int ca0700(int argc, char* argv[])
|
|
{
|
|
TFsc_app a;
|
|
a.run(argc, argv, TR("Fasi"));
|
|
return 0;
|
|
}
|
|
|