campo-sirio/ce/celib.cpp
alex 8a05210c2d Patch level : xx.7.054
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
2001-04-30 14:22:43 +00:00

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)
{
}