169 lines
5.2 KiB
C++
Executable File
169 lines
5.2 KiB
C++
Executable File
// cglib03.h
|
|
|
|
#ifndef __CGLIB03_H
|
|
#define __CGLIB03_H
|
|
|
|
#ifndef __CG2103_H
|
|
#include "cg2103.h"
|
|
#endif
|
|
|
|
#ifndef __TABUTIL_H
|
|
#include <tabutil.h>
|
|
#endif
|
|
|
|
// Defines per TInteressi_IVA_table. Servono per comporre i nomi dei campi
|
|
|
|
#define P_1_TRIMESTRE 0
|
|
#define P_2_TRIMESTRE 1
|
|
#define P_3_TRIMESTRE 2
|
|
#define P_4_TRIMESTRE 3
|
|
#define P_ANNUALE 4
|
|
#define I_PERIODICO 5
|
|
#define I_ANNUALE 6
|
|
#define I_ACCONTOIVA 7
|
|
#define I_INTEGRATIVO 8
|
|
#define I_CESSAZIONE 9
|
|
#define I_ART74 10
|
|
#define B_LIQ_DIFF 11
|
|
#define B_LIQ_NORM 12
|
|
|
|
class TInteressi_IVA_table : public TTable
|
|
{
|
|
public:
|
|
int read(int anno, int mese);
|
|
//int status() { return _ver->status();}
|
|
real get(int what);
|
|
TInteressi_IVA_table();
|
|
virtual ~TInteressi_IVA_table();
|
|
};
|
|
|
|
struct TDociva : public TObject
|
|
{
|
|
TString _descrdoc;
|
|
real _totdociva;
|
|
int _ndoc;
|
|
|
|
TDociva(const char* _descrdociva, const real& _importo,const int _natdoc)
|
|
:_descrdoc(_descrdociva),_totdociva(_importo),_ndoc(_natdoc) { }
|
|
virtual ~TDociva() { }
|
|
};
|
|
|
|
class TDociva_array : public TArray
|
|
{
|
|
public:
|
|
bool add_riga(const char* _descrdociva,const real& _importo,const int _natdoc);
|
|
TDociva& riga(int i) { return (TDociva&)(*this)[i]; }
|
|
};
|
|
|
|
struct TRigaiva : public TObject
|
|
{
|
|
real _imponibile, _imposta;
|
|
real _imponibilep, _impostap;
|
|
TString4 _codiva;
|
|
int _tipodet;
|
|
int _tipocr, _tipoatt;
|
|
bool _intra;
|
|
|
|
const TString& descr_det() const;
|
|
|
|
TRigaiva (const real& imponibile, const real& imposta, const real& imponibilep, const real& impostap,
|
|
const char* codiva, int tipodet, int tipocr, bool intra, int tipoatt):
|
|
_imponibile(imponibile),_imposta(imposta),_imponibilep(imponibilep),_impostap(impostap),_codiva(codiva),_tipodet(tipodet),_tipocr(tipocr),_tipoatt(tipoatt),_intra(intra)
|
|
{}
|
|
};
|
|
|
|
// TRigaiva_array
|
|
// Tabella per il calcolo degli imponibili Iva
|
|
class TRigaiva_array : public TArray
|
|
{
|
|
public:
|
|
bool add_riga(const real& imponibile, const real& imposta,
|
|
const real& imponibilep, const real& impostap,
|
|
const char* codiva, int tipodet, int tipocr, bool intra, int tipoatt);
|
|
|
|
bool add_riga(const TRectype& rmi);
|
|
|
|
TRigaiva& riga(int i) { return (TRigaiva&)(*this)[i]; }
|
|
const TRigaiva& riga(int i) const { return (const TRigaiva&)(*this)[i]; }
|
|
};
|
|
|
|
struct TTipodoc : public TObject
|
|
{
|
|
TString4 _tipodoc;
|
|
TString _descrdoc;
|
|
real _totdoc;
|
|
|
|
TTipodoc (const char* tipodoc, const char* descrdoc, const real& totdoc):
|
|
_tipodoc(tipodoc),_descrdoc(descrdoc),_totdoc(totdoc) {}
|
|
};
|
|
|
|
class TTipodoc_array : public TArray
|
|
{
|
|
public:
|
|
bool add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc);
|
|
const TTipodoc& riga(int i) const { return (TTipodoc&)(*this)[i]; }
|
|
};
|
|
|
|
struct TRiga : public TObject
|
|
{
|
|
real _imponibile, _imposta, _implordo; // totali del periodo
|
|
real _imponibilep, _impostap, _implordop; // totali progressivi
|
|
TString4 _codiva;
|
|
|
|
TRiga(const real& imponibile, const real& imposta, const real& implordo, const real& imponibilep, const real& impostap, const real& implordop, const char* codiva):
|
|
_imponibile(imponibile),_imposta(imposta),_implordo(implordo),_imponibilep(imponibilep),_impostap(impostap),_implordop(implordop),_codiva(codiva) {}
|
|
};
|
|
|
|
class TRiga_array : public TArray
|
|
{
|
|
public:
|
|
bool add_riga(const real& imponibile, const real& imposta, const real& implordo, const real& imponibilep, const real& impostap, const real& implordop, const char* codiva);
|
|
bool add_riga(const real& imponibile, const real& imposta, const char* codiva) { return add_riga(imponibile, imposta, ZERO, ZERO, ZERO, ZERO, codiva); }
|
|
|
|
const TRiga& riga(int i) const { return (const TRiga&)(*this)[i]; }
|
|
TRiga& riga(int i) { return (TRiga&)(*this)[i]; }
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Arrotondamenti IVA
|
|
///////////////////////////////////////////////////////////
|
|
|
|
enum TRound_mode { rm_unknown, rm_round, rm_ceil, rm_millelire };
|
|
|
|
class TIva_round : public TObject
|
|
{
|
|
static TRound_mode _def_mode;
|
|
static int _def_decimals;
|
|
|
|
TRound_mode _mode;
|
|
int _decimals;
|
|
|
|
public: // Low level functions (rare usage)
|
|
void set_default_mode(TRound_mode m, int d);
|
|
void set_mode(TRound_mode m, int d);
|
|
|
|
public: // High level functions (common usage)
|
|
virtual bool ok() const { return _mode != rm_unknown; }
|
|
|
|
// Call this before the first call to round!
|
|
void set_default_iva_mode(int year, bool declaration = false, long firm = 0L);
|
|
|
|
void round(real& n) const;
|
|
TIva_round();
|
|
};
|
|
|
|
real indetraibile_al(const TString& codind, const TCausale& caus, int annodoc,
|
|
int& tipodet, const bool is_liq = false);
|
|
int analizza_IVA(const real& imptot, const real& ivatot, const real perc_ind,
|
|
const bool corrispettivo, const bool iva_ind_al_costo, const TString& codiva,
|
|
real& imp_det, real& iva_det, real& imp_ind, real& iva_ind);
|
|
int get_tipodet_from_rmi(const TRectype& rmi, const TRectype& mv, real& percind, const bool is_liq = false);
|
|
|
|
bool gestione_IVAxCassa(const TDate& data, long firm = 0);
|
|
bool is_reverse_charge(const TRectype& mov);
|
|
bool is_split_payment(const TRectype& mov);
|
|
bool is_IVA_diff(const TRectype& mov);
|
|
bool is_IVAxCassa(const TRectype& mov);
|
|
|
|
#endif
|