campo-sirio/ca/ca0500.cpp
alex f362b8f434 Patch level : 10.0 patch 776
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
2010-07-15 06:42:48 +00:00

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;
}