Patch level : 12.0 520
Files correlati : ve6.exe richieste da CRPA Non aggiornava il protocollo IVA se preso dal registro git-svn-id: svn://10.65.10.50/branches/R_10_00@24327 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5c66638271
commit
f5b5873eba
2433
src/cg/cglib01.cpp
2433
src/cg/cglib01.cpp
File diff suppressed because it is too large
Load Diff
531
src/cg/cglib01.h
531
src/cg/cglib01.h
@ -1,264 +1,267 @@
|
|||||||
#ifndef __CGLIB01_H
|
#ifndef __CGLIB01_H
|
||||||
#define __CGLIB01_H
|
#define __CGLIB01_H
|
||||||
|
|
||||||
#ifndef __ISAM_H
|
#ifndef __ISAM_H
|
||||||
#include <isam.h>
|
#include <isam.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Gestione esercizi contabili, registri e libro giornale
|
// Gestione esercizi contabili, registri e libro giornale
|
||||||
|
|
||||||
class TEsercizio : public TSortable
|
class TEsercizio : public TSortable
|
||||||
{
|
{
|
||||||
int _codice;
|
int _codice;
|
||||||
TDate _inizio, _fine, _scarico, _chiusura, _chiusura_mag;
|
TDate _inizio, _fine, _scarico, _chiusura, _chiusura_mag;
|
||||||
|
|
||||||
protected: // TSortable
|
protected: // TSortable
|
||||||
virtual int compare(const TSortable& s) const;
|
virtual int compare(const TSortable& s) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int codice() const { return _codice; }
|
int codice() const { return _codice; }
|
||||||
const TDate& inizio() const { return _inizio; }
|
const TDate& inizio() const { return _inizio; }
|
||||||
const TDate& fine() const { return _fine; }
|
const TDate& fine() const { return _fine; }
|
||||||
const TDate& scarico() const { return _scarico; }
|
const TDate& scarico() const { return _scarico; }
|
||||||
const TDate& chiusura() const;
|
const TDate& chiusura() const;
|
||||||
const TDate& chiusura_mag() const { return _chiusura_mag; }
|
const TDate& chiusura_mag() const { return _chiusura_mag; }
|
||||||
|
|
||||||
TEsercizio(const TRectype& rec);
|
TEsercizio(const TRectype& rec);
|
||||||
virtual ~TEsercizio() {}
|
virtual ~TEsercizio() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class TEsercizi_contabili : public TObject
|
class TEsercizi_contabili : public TObject
|
||||||
{
|
{
|
||||||
static TArray _esercizi;
|
static TArray _esercizi;
|
||||||
static long _firm;
|
static long _firm;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void check();
|
static void check();
|
||||||
|
|
||||||
const TEsercizio& esc(int i) const
|
const TEsercizio& esc(int i) const
|
||||||
{ return (const TEsercizio&)_esercizi[i]; }
|
{ return (const TEsercizio&)_esercizi[i]; }
|
||||||
|
|
||||||
int date2index(const TDate& d) const;
|
int date2index(const TDate& d) const;
|
||||||
int esc2index(int codice) const;
|
int esc2index(int codice) const;
|
||||||
int items() const { return _esercizi.items(); }
|
int items() const { return _esercizi.items(); }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void update();
|
static void update();
|
||||||
|
|
||||||
const TEsercizio& esercizio(int codice) const;
|
const TEsercizio& esercizio(int codice) const;
|
||||||
const TEsercizio& operator [](int codice) const { return esercizio(codice); }
|
const TEsercizio& operator [](int codice) const { return esercizio(codice); }
|
||||||
const TEsercizio& esercizio(const TDate& date) const { return esercizio(date2esc(date)); }
|
const TEsercizio& esercizio(const TDate& date) const { return esercizio(date2esc(date)); }
|
||||||
|
|
||||||
int date2esc(const TDate& date) const;
|
int date2esc(const TDate& date) const;
|
||||||
int date2prevesc(const TDate& date) const;
|
int date2prevesc(const TDate& date) const;
|
||||||
int date2nextesc(const TDate& date) const;
|
int date2nextesc(const TDate& date) const;
|
||||||
int pred(int codice) const;
|
int pred(int codice) const;
|
||||||
int next(int codice) const;
|
int next(int codice) const;
|
||||||
int first() const;
|
int first() const;
|
||||||
int last() const;
|
int last() const;
|
||||||
int last_mag() const;
|
int last_mag() const;
|
||||||
bool exist(int codice) const;
|
bool exist(int codice) const;
|
||||||
bool code2range(int codice, TDate& dal, TDate& al) const;
|
bool code2range(int codice, TDate& dal, TDate& al) const;
|
||||||
|
|
||||||
TEsercizi_contabili();
|
TEsercizi_contabili();
|
||||||
virtual ~TEsercizi_contabili() {}
|
virtual ~TEsercizi_contabili() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
TEsercizi_contabili& esercizi();
|
TEsercizi_contabili& esercizi();
|
||||||
|
|
||||||
enum TipoIVA
|
enum TipoIVA
|
||||||
{
|
{
|
||||||
iva_errata = -1,
|
iva_errata = -1,
|
||||||
nessuna_iva = 0,
|
nessuna_iva = 0,
|
||||||
iva_vendite = 1,
|
iva_vendite = 1,
|
||||||
iva_acquisti = 2,
|
iva_acquisti = 2,
|
||||||
libro_giornale = 5,
|
libro_giornale = 5,
|
||||||
iva_generica = 9
|
iva_generica = 9
|
||||||
};
|
};
|
||||||
|
|
||||||
const char* iva2name(TipoIVA i);
|
const char* iva2name(TipoIVA i);
|
||||||
const TString& cap2comune(const TString& cap, const TString& denom);
|
const TString& cap2comune(const TString& cap, const TString& denom);
|
||||||
|
|
||||||
class TMask_field;
|
class TMask_field;
|
||||||
|
|
||||||
class TRegistro : public TObject
|
class TRegistro : public TObject
|
||||||
{
|
{
|
||||||
bool read_att();
|
bool read_att();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
TRectype _rec, _att;
|
TRectype _rec, _att;
|
||||||
TAssoc_array _prorata;
|
TAssoc_array _prorata;
|
||||||
|
|
||||||
real* read_prorata(int anno) const;
|
real* read_prorata(int anno) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool read(const char* code, int year);
|
bool read(const char* code, int year);
|
||||||
bool force_read(const char* code, int year);
|
bool force_read(const char* code, int year);
|
||||||
bool reread();
|
bool reread();
|
||||||
TRegistro& operator =(const TRegistro& r);
|
TRegistro& operator =(const TRegistro& r);
|
||||||
|
|
||||||
virtual bool ok() const { return !_rec.empty(); }
|
virtual bool ok() const { return !_rec.empty(); }
|
||||||
|
|
||||||
int tipo() const;
|
int tipo() const;
|
||||||
TipoIVA iva() const;
|
TipoIVA iva() const;
|
||||||
bool corrispettivi() const;
|
bool corrispettivi() const;
|
||||||
bool sospeso() const { return _rec.get_bool("B1");}
|
bool sospeso() const { return _rec.get_bool("B1");}
|
||||||
const TString& name() const;
|
const TString& name() const;
|
||||||
int year() const;
|
int year() const;
|
||||||
TDate last_reg() const { return _rec.get_date("D2"); }
|
TDate last_reg() const { return _rec.get_date("D2"); }
|
||||||
TDate last_print() const { return _rec.get_date("D3"); }
|
TDate last_print() const { return _rec.get_date("D3"); }
|
||||||
long mese_stampa_ultima_liq() const { return _rec.get_long("I4"); }
|
long mese_stampa_ultima_liq() const { return _rec.get_long("I4"); }
|
||||||
long protocol() const { return _rec.get_long("I5"); }
|
long protocol() const { return _rec.get_long("I5"); }
|
||||||
const TString& attivita() const { return _rec.get("S8"); }
|
const TString& attivita() const { return _rec.get("S8"); }
|
||||||
|
|
||||||
|
|
||||||
bool agenzia_viaggi() const;
|
bool agenzia_viaggi() const;
|
||||||
const TString& tipo_attivita() const;
|
const TString& tipo_attivita() const;
|
||||||
bool attivita_mista() const { const char a = tipo_attivita()[0]; return a == 'E'; }
|
bool attivita_mista() const { const char a = tipo_attivita()[0]; return a == 'E'; }
|
||||||
|
|
||||||
void set_prorata(int annodoc, const real& pro);
|
void set_prorata(int annodoc, const real& pro);
|
||||||
real prorata(int annodoc);
|
real prorata(int annodoc);
|
||||||
#ifdef PRORATA100
|
#ifdef PRORATA100
|
||||||
bool prorata100(int annodoc) { return prorata(annodoc) >= CENTO; }
|
bool prorata100(int annodoc) { return prorata(annodoc) >= CENTO; }
|
||||||
#endif
|
#endif
|
||||||
bool update(long uprotiva, const TDate& lastreg);
|
bool update(long uprotiva, const TDate& lastreg);
|
||||||
|
|
||||||
TRegistro(const char* code = "", int year = 0);
|
TRegistro(const char* code = "", int year = 0);
|
||||||
TRegistro(const TRegistro & reg);
|
TRegistro(const TRegistro & reg);
|
||||||
virtual ~TRegistro() {}
|
virtual ~TRegistro() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class TLibro_giornale : public TRegistro
|
class TLibro_giornale : public TRegistro
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool read(int year);
|
bool read(int year);
|
||||||
TDate global_last_print() const;
|
TDate global_last_print() const;
|
||||||
|
|
||||||
TLibro_giornale(int year = 0);
|
TLibro_giornale(int year = 0);
|
||||||
virtual ~TLibro_giornale() {}
|
virtual ~TLibro_giornale() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class TCodiceIVA : public TRectype
|
class TCodiceIVA : public TRectype
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
void copy(const TRectype & iva) { TRectype::operator =(iva); }
|
void copy(const TRectype & iva) { TRectype::operator =(iva); }
|
||||||
void round(real& n, int ndec, const char* codval) const;
|
void round(real& n, int ndec, const char* codval) const;
|
||||||
|
|
||||||
public: // TObject
|
public: // TObject
|
||||||
virtual bool ok() const { return !empty(); }
|
virtual bool ok() const { return !empty(); }
|
||||||
TCodiceIVA& operator =(const TCodiceIVA & iva) { copy(iva) ; return *this;}
|
TCodiceIVA& operator =(const TCodiceIVA & iva) { copy(iva) ; return *this;}
|
||||||
TObject* dup() const { return new TCodiceIVA(*this); }
|
TObject* dup() const { return new TCodiceIVA(*this); }
|
||||||
bool read(const char* codice);
|
bool read(const char* codice);
|
||||||
const TString& codice() const { return get("CODTAB"); }
|
const TString& codice() const { return get("CODTAB"); }
|
||||||
const TString& descrizione() const { return get("S0"); }
|
const TString& descrizione() const { return get("S0"); }
|
||||||
const real percentuale() const { return get_real("R0"); }
|
const real percentuale() const { return get_real("R0"); }
|
||||||
const TString& tipo() const { return get("S1"); }
|
const TString& tipo() const { return get("S1"); }
|
||||||
const TString& indetraibilita() const { return get("S4"); } // Codice indetraibilità alfanumerico (ex. 1, 3, 9)
|
const TString& indetraibilita() const { return get("S4"); } // Codice indetraibilità alfanumerico (ex. 1, 3, 9)
|
||||||
int tipo_indetraibilita() const; // Tipo indetraibilità: 1,3,9
|
int tipo_indetraibilita() const; // Tipo indetraibilità: 1,3,9
|
||||||
bool senza_imposta() { return percentuale() == ZERO;}
|
bool senza_imposta() { return percentuale() == ZERO;}
|
||||||
|
|
||||||
int allegato(char tipocf) const { return get_int(tipocf == 'F' ? "S8" : "S7"); }
|
int allegato(char tipocf) const { return get_int(tipocf == 'F' ? "S8" : "S7"); }
|
||||||
bool has_plafond() const { return get_int("S3") > 0; }
|
bool has_plafond() const { return get_int("S3") > 0; }
|
||||||
|
|
||||||
real imposta(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola l'imposta sull'imponibile l'imposta e la ritorna
|
real imposta(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola l'imposta sull'imponibile l'imposta e la ritorna
|
||||||
real scorpora(real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Scorpora dall'imponibile l'imposta e la ritorna
|
real scorpora(real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Scorpora dall'imponibile l'imposta e la ritorna
|
||||||
real lordo(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola il lordo dell'imponibile l'imposta e la ritorna
|
real lordo(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola il lordo dell'imponibile l'imposta e la ritorna
|
||||||
|
|
||||||
TCodiceIVA(const char* codice = NULL);
|
bool reverse_charge() const;
|
||||||
TCodiceIVA(const TRectype & rec) : TRectype(rec) {}
|
int regime_speciale() const { return get_int("I5");}
|
||||||
TCodiceIVA(const TCodiceIVA & iva) : TRectype(iva) {}
|
|
||||||
virtual ~TCodiceIVA() {}
|
TCodiceIVA(const char* codice = NULL);
|
||||||
};
|
TCodiceIVA(const TRectype & rec) : TRectype(rec) {}
|
||||||
|
TCodiceIVA(const TCodiceIVA & iva) : TRectype(iva) {}
|
||||||
#ifndef __MASK_H
|
virtual ~TCodiceIVA() {}
|
||||||
class TMask;
|
};
|
||||||
#endif
|
|
||||||
|
#ifndef __MASK_H
|
||||||
class TBill : public TSortable
|
class TMask;
|
||||||
{
|
#endif
|
||||||
char _tipo; // ' ' = Conto, 'C' = Cliente, 'F' = 'Fornitore'
|
|
||||||
int _gruppo, _conto;
|
class TBill : public TSortable
|
||||||
long _sottoconto; // Sottoconto, codice cliente o fornitore
|
{
|
||||||
TString* _descrizione; // Vuota fino alla chiamata di describe
|
char _tipo; // ' ' = Conto, 'C' = Cliente, 'F' = 'Fornitore'
|
||||||
int _tipo_cr; // Tipo costo/ricavo
|
int _gruppo, _conto;
|
||||||
char _sezione;
|
long _sottoconto; // Sottoconto, codice cliente o fornitore
|
||||||
bool _sospeso;
|
TString* _descrizione; // Vuota fino alla chiamata di describe
|
||||||
|
int _tipo_cr; // Tipo costo/ricavo
|
||||||
protected:
|
char _sezione;
|
||||||
void set_description(const char* d);
|
bool _sospeso;
|
||||||
const TBill& copy(const TBill& b);
|
|
||||||
const char* field_name(int n, const TRectype& rec, bool contro) const;
|
protected:
|
||||||
|
void set_description(const char* d);
|
||||||
public: // TObject
|
const TBill& copy(const TBill& b);
|
||||||
virtual int compare(const TSortable& s) const;
|
const char* field_name(int n, const TRectype& rec, bool contro) const;
|
||||||
virtual const char* class_name() const { return "Conto"; }
|
|
||||||
virtual bool ok() const; // Gruppo, Conto e Sottoconto non nulli
|
public: // TObject
|
||||||
|
virtual int compare(const TSortable& s) const;
|
||||||
public:
|
virtual const char* class_name() const { return "Conto"; }
|
||||||
TBill(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL, int r = -1)
|
virtual bool ok() const; // Gruppo, Conto e Sottoconto non nulli
|
||||||
: _tipo(t), _gruppo(g), _conto(c), _sottoconto(s), _descrizione(NULL),
|
|
||||||
_sezione(' '), _sospeso(false)
|
public:
|
||||||
{ set(g,c,s,t,d,r);}
|
TBill(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL, int r = -1)
|
||||||
|
: _tipo(t), _gruppo(g), _conto(c), _sottoconto(s), _descrizione(NULL),
|
||||||
TBill(TToken_string& tgcsd, int from, int mode = 0)
|
_sezione(' '), _sospeso(false)
|
||||||
: _descrizione(NULL), _sezione(' '), _sospeso(false)
|
{ set(g,c,s,t,d,r);}
|
||||||
{ get(tgcsd, from, mode); }
|
|
||||||
|
TBill(TToken_string& tgcsd, int from, int mode = 0)
|
||||||
TBill(const TRectype& rec, bool contro = false)
|
: _descrizione(NULL), _sezione(' '), _sospeso(false)
|
||||||
: _descrizione(NULL), _sezione(' '), _sospeso(false)
|
{ get(tgcsd, from, mode); }
|
||||||
{ get(rec, contro); }
|
|
||||||
|
TBill(const TRectype& rec, bool contro = false)
|
||||||
TBill(const TBill& b)
|
: _descrizione(NULL), _sezione(' '), _sospeso(false)
|
||||||
: _descrizione(NULL)
|
{ get(rec, contro); }
|
||||||
{ copy(b); }
|
|
||||||
|
TBill(const TBill& b)
|
||||||
virtual ~TBill();
|
: _descrizione(NULL)
|
||||||
|
{ copy(b); }
|
||||||
const TBill& set(int g = 0, int c = 0, long s = 0L, char t = ' ',
|
|
||||||
const char* d = NULL, int r = -1);
|
virtual ~TBill();
|
||||||
|
|
||||||
const TBill& get(TToken_string& ts, int from, int mode = 0);
|
const TBill& set(int g = 0, int c = 0, long s = 0L, char t = ' ',
|
||||||
const TBill& add_to(TToken_string& ts, int from, int mode = 0);
|
const char* d = NULL, int r = -1);
|
||||||
const TBill& operator=(const TBill& b) { return copy(b); }
|
|
||||||
|
const TBill& get(TToken_string& ts, int from, int mode = 0);
|
||||||
bool empty() const { return _gruppo==0 && _conto==0 && _sottoconto == 0; }
|
const TBill& add_to(TToken_string& ts, int from, int mode = 0);
|
||||||
|
const TBill& operator=(const TBill& b) { return copy(b); }
|
||||||
char tipo() const { return _tipo; }
|
|
||||||
int gruppo() const { return _gruppo; }
|
bool empty() const { return _gruppo==0 && _conto==0 && _sottoconto == 0; }
|
||||||
int conto() const { return _conto; }
|
|
||||||
long sottoconto() const { return _sottoconto; }
|
char tipo() const { return _tipo; }
|
||||||
long codclifo() const { return _sottoconto; }
|
int gruppo() const { return _gruppo; }
|
||||||
long& codclifo() { return _sottoconto; }
|
int conto() const { return _conto; }
|
||||||
|
long sottoconto() const { return _sottoconto; }
|
||||||
bool find();
|
long codclifo() const { return _sottoconto; }
|
||||||
const TString& descrizione() const;
|
long& codclifo() { return _sottoconto; }
|
||||||
int tipo_cr() const;
|
|
||||||
void tipo_cr(int tcr) { _tipo_cr = tcr; }
|
bool find();
|
||||||
int indicatore_bilancio() const;
|
const TString& descrizione() const;
|
||||||
|
int tipo_cr() const;
|
||||||
int tipo_att();
|
void tipo_cr(int tcr) { _tipo_cr = tcr; }
|
||||||
bool read(TRectype& r);
|
int indicatore_bilancio() const;
|
||||||
bool sospeso() const;
|
|
||||||
char sezione() const;
|
int tipo_att();
|
||||||
|
bool read(TRectype& r);
|
||||||
void put(TRectype& r, bool contro = false) const;
|
bool sospeso() const;
|
||||||
bool get(const TRectype& r, bool contro = false);
|
char sezione() const;
|
||||||
|
|
||||||
void set(TMask& m, short g, short c, short s, short t = 0, short d = 0) const;
|
void put(TRectype& r, bool contro = false) const;
|
||||||
void get(const TMask& m, short g, short c, short s, short t = 0, short d = 0);
|
bool get(const TRectype& r, bool contro = false);
|
||||||
|
|
||||||
const char* string(int mode = 0) const;
|
void set(TMask& m, short g, short c, short s, short t = 0, short d = 0) const;
|
||||||
|
void get(const TMask& m, short g, short c, short s, short t = 0, short d = 0);
|
||||||
bool required_cdc() const;
|
|
||||||
bool default_cdc(TString& cdc, TString& fas) const;
|
const char* string(int mode = 0) const;
|
||||||
bool is_analitico() const;
|
|
||||||
};
|
bool required_cdc() const;
|
||||||
|
bool default_cdc(TString& cdc, TString& fas) const;
|
||||||
enum TIndbil { ib_null, ib_attivita, ib_passivita, ib_costi, ib_ricavi, ib_conti_ordine };
|
bool is_analitico() const;
|
||||||
|
};
|
||||||
enum tipo_movimento { tm_nessuno = 0, tm_fattura = 1, tm_nota_credito = 2,
|
|
||||||
tm_pagamento = 3, tm_insoluto = 5, tm_pagamento_insoluto = 6 };
|
enum TIndbil { ib_null, ib_attivita, ib_passivita, ib_costi, ib_ricavi, ib_conti_ordine };
|
||||||
|
|
||||||
const char* num2str(const TString & s);
|
enum tipo_movimento { tm_nessuno = 0, tm_fattura = 1, tm_nota_credito = 2,
|
||||||
|
tm_pagamento = 3, tm_insoluto = 5, tm_pagamento_insoluto = 6 };
|
||||||
#endif
|
|
||||||
|
const char* num2str(const TString & s);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user