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:
bonazzi 2018-01-31 19:54:01 +00:00
parent 5c66638271
commit f5b5873eba
2 changed files with 1487 additions and 1477 deletions

File diff suppressed because it is too large Load Diff

View File

@ -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