Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la version 1.7 patch 054 aga sul main trunk git-svn-id: svn://10.65.10.50/trunk@9655 c028cbd2-c16b-5b4b-a496-9718f37d4682
236 lines
5.3 KiB
C++
Executable File
236 lines
5.3 KiB
C++
Executable File
#include <prefix.h>
|
|
#include <recarray.h>
|
|
|
|
#include "celib.h"
|
|
|
|
#include "../cg/cglib01.h"
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Ditta cespiti
|
|
///////////////////////////////////////////////////////////
|
|
|
|
// Carica i dati relativi alla ditta corrente dei cespiti
|
|
void TDitta_cespiti::load_default()
|
|
{
|
|
_ditta = prefix().get_codditta();
|
|
|
|
TConfig dit(CONFIG_DITTA);
|
|
_esercizio = dit.get_int("CODESCORR");
|
|
if (_esercizio <= 0)
|
|
{
|
|
const TDate oggi(TODAY);
|
|
_esercizio = oggi.year();
|
|
}
|
|
|
|
_gruppo = dit.get("GRUPPOCORR");
|
|
|
|
TString16 str = dit.get("SPECIECORR");
|
|
str.strip("\"");
|
|
_specie = str;
|
|
|
|
_data_primi_ricavi = dit.get("CADTR");
|
|
_anno_tuir = dit.get_int("CATSU");
|
|
|
|
str.format("%04d", _esercizio);
|
|
_cce = cache().get("CCE", str);
|
|
}
|
|
|
|
void TDitta_cespiti::update_when_needed()
|
|
{
|
|
if (_ditta != prefix().get_codditta())
|
|
load_default();
|
|
}
|
|
|
|
void TDitta_cespiti::set_attivita(int esercizio, const TString& gruppo, const TString& specie)
|
|
{
|
|
if (esercizio <= 0)
|
|
{
|
|
const TDate oggi(TODAY);
|
|
_esercizio = oggi.year();
|
|
}
|
|
else
|
|
_esercizio = esercizio;
|
|
_gruppo = gruppo;
|
|
_specie = specie;
|
|
|
|
TConfig dit(CONFIG_DITTA);
|
|
dit.set("CODESCORR", _esercizio);
|
|
dit.set("GRUPPOCORR", _gruppo);
|
|
TString16 str; str << '"' << _specie << '"';
|
|
dit.set("SPECIECORR", str);
|
|
|
|
_data_primi_ricavi = dit.get("CADTR");
|
|
_anno_tuir = dit.get_int("CATSU");
|
|
|
|
_ditta = prefix().get_codditta();
|
|
str.format("%d", _esercizio);
|
|
_cce = cache().get("CCE", str);
|
|
}
|
|
|
|
void TDitta_cespiti::get_attivita(int& esercizio, TString& gruppo, TString& specie)
|
|
{
|
|
esercizio = _esercizio;
|
|
gruppo = _gruppo;
|
|
specie = _specie;
|
|
}
|
|
|
|
int TDitta_cespiti::esercizio_corrente(TDate& inies, TDate& fines) const
|
|
{
|
|
TEsercizi_contabili esc;
|
|
const TEsercizio& e = esc[_esercizio];
|
|
inies = e.inizio();
|
|
fines = e.fine();
|
|
return _esercizio;
|
|
}
|
|
|
|
void TDitta_cespiti::init_mask(TMask& m)
|
|
{
|
|
update_when_needed();
|
|
|
|
TBit_array found;
|
|
bool started = FALSE;
|
|
bool finished = FALSE;
|
|
for (int i = 0; !finished && i < 12; i++)
|
|
{
|
|
TMask_field& f = m.fld(i);
|
|
if (started)
|
|
{
|
|
switch (f.size())
|
|
{
|
|
case 4:
|
|
if (f.is_kind_of(CLASS_REAL_FIELD))
|
|
{
|
|
if (!found[1]) // Non ho ancora trovato l'esercizio
|
|
{
|
|
f.set(_esercizio);
|
|
found.set(1, TRUE);
|
|
}
|
|
} else
|
|
if (f.is_edit())
|
|
{
|
|
if (found[4] && !found[5]) // Ho trovato gruppo ma non specie
|
|
{
|
|
f.set(_specie);
|
|
found.set(5);
|
|
finished = TRUE;
|
|
}
|
|
}
|
|
break;
|
|
case 2:
|
|
if (!found[4] && f.is_kind_of(CLASS_REAL_FIELD)) // Non ho ancora trovato il gruppo
|
|
{
|
|
f.set(_gruppo);
|
|
found.set(4);
|
|
}
|
|
break;
|
|
default:
|
|
if (f.is_kind_of(CLASS_GROUPBOX_FIELD))
|
|
finished = TRUE;
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
started = f.dlg() <= 0 && f.class_id() == CLASS_GROUPBOX_FIELD;
|
|
}
|
|
CHECK(started && found.ones(), "Maschera in formato scandaloso");
|
|
}
|
|
|
|
// Arrotonda un numero in base ai parametri ditta
|
|
void TDitta_cespiti::arrotonda(real& n) const
|
|
{
|
|
const char tipo = _cce.get_char("S6");
|
|
const int dec = TCurrency::get_firm_dec();
|
|
switch (tipo)
|
|
{
|
|
case '+': n.ceil(dec); break;
|
|
case '-': n.floor(dec); break;
|
|
default : n.round(dec); break;
|
|
}
|
|
}
|
|
|
|
bool TDitta_cespiti::professionista() const
|
|
{
|
|
return _cce.get_bool("B0");
|
|
}
|
|
|
|
bool TDitta_cespiti::esercizio_costituzione() const
|
|
{
|
|
return _cce.get_bool("B1");
|
|
}
|
|
|
|
real TDitta_cespiti::coefficiente_durata_esercizio() const
|
|
{
|
|
return _cce.get_real("S5");
|
|
}
|
|
|
|
|
|
bool TDitta_cespiti::rinvio_ammortamento_ai_primi_ricavi() const
|
|
{
|
|
return _cce.get_bool("B2");
|
|
}
|
|
|
|
bool TDitta_cespiti::ammortamento_parti_vendute() const
|
|
{
|
|
return _cce.get_bool("B3");
|
|
}
|
|
|
|
bool TDitta_cespiti::ragguaglio_ammortamenti_parti_vendute() const
|
|
{
|
|
return _cce.get_bool("B4");
|
|
}
|
|
|
|
bool TDitta_cespiti::esente_art14() const
|
|
{
|
|
return _cce.get_bool("B7");
|
|
}
|
|
|
|
// Inizializza una ditta cespiti vuota
|
|
TDitta_cespiti::TDitta_cespiti() : _cce(LF_TAB)
|
|
{
|
|
load_default();
|
|
}
|
|
|
|
// Ritorna la ditta cespiti corrente
|
|
// Creandola la prima volta
|
|
TDitta_cespiti& ditta_cespiti()
|
|
{
|
|
static TDitta_cespiti* _firm = NULL;
|
|
if (_firm == NULL)
|
|
_firm = new TDitta_cespiti;
|
|
return *_firm;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Form cespiti
|
|
///////////////////////////////////////////////////////////
|
|
|
|
bool TForm_cespiti::validate(TForm_item& fld, TToken_string& val)
|
|
{
|
|
const TString16 code = val.get(0);
|
|
if (code == "_DESCAT")
|
|
{
|
|
const TString8 fgr = val.get();
|
|
const TString8 fsp = val.get();
|
|
const TString8 fca = val.get();
|
|
|
|
TString4 gruppo = fld.find_field(fgr).get(); gruppo.right_just(2, '0');
|
|
TString4 specie = fld.find_field(fsp).get();
|
|
TString4 categoria = fld.find_field(fca).get(); categoria.right_just(2, '0');
|
|
TString16 key; key << gruppo << specie << categoria;
|
|
const TRectype& cac = cache().get("%CAC", key);
|
|
if (cac.empty())
|
|
{
|
|
key.overwrite(" ");
|
|
const TRectype& cac2 = cache().get("%CAC", key);
|
|
fld.set(cac2.get("S0"));
|
|
}
|
|
else
|
|
fld.set(cac.get("S0"));
|
|
}
|
|
return TForm::validate(fld,val);
|
|
}
|
|
|
|
TForm_cespiti::TForm_cespiti(const char* name) : TForm(name)
|
|
{
|
|
}
|