a2de8ed91a
Files correlati : cg4.exe cg5.exe cg5300a.uml cg5500b.uml cg5500d.uml cg5500a.rep cg5500b.rep Ricompilazione Demo : [ ] Commento : Modifiche al prospetto della liquidazione iva. Implementare la gestione del credito iva infrannuale e modifiche a quello dell'anno precedente. Aggiunta stampa dei prospetti di liquidazione. Considerato il credito utilizzato a inizio anno come utilizzato e solo se il credito è compensabile in F24 a Gennaio. In realtà era già così git-svn-id: svn://10.65.10.50/branches/R_10_00@23221 c028cbd2-c16b-5b4b-a496-9718f37d4682
692 lines
26 KiB
C++
Executable File
692 lines
26 KiB
C++
Executable File
// dear emacs, this is -*-C++-*-
|
||
// Questa e' la famosa palla della liquidazione IVA
|
||
|
||
#ifndef __MASK_H
|
||
#include <mask.h>
|
||
#endif
|
||
|
||
#ifndef __PRINTAPP_H
|
||
#include <printapp.h>
|
||
#endif
|
||
|
||
#ifndef __CGLIB03_H
|
||
#include "cglib03.h"
|
||
#endif
|
||
|
||
class TProgind;
|
||
|
||
// ------------------------------------------------------------------
|
||
// Parametri modificabili
|
||
// ------------------------------------------------------------------
|
||
|
||
// Fucked aliases to complain with new agricoltural rules
|
||
#define AGR_PCON1 201
|
||
#define AGR_PCON2 202
|
||
|
||
// picture default per i reali
|
||
// in caso di inflazione polacca occorrera' modificare la lunghezza
|
||
// e quindi cambiare le set_row in cg4304.cpp onde evitare overlap
|
||
#define REAL_PICTURE "###.###.###.###"
|
||
|
||
// IVA a debito da non pagare ma riportare al mese successivo
|
||
// #define IVA_DA_RIPORTARE real(50500.0)
|
||
|
||
// detrazione per detraibili 6%
|
||
#define DETRAZIONE_6PERCENTO real(0.06)
|
||
|
||
// soglia che da' diritto alla liquidazione trimestrale per servizi
|
||
// currently trecentsesantamiliu'
|
||
#define SOGLIA_TRIM_SERVIZI real(360000000.0)
|
||
|
||
// soglia che da' diritto alla liquidazione trimestrale per altri
|
||
// currently un miliardun
|
||
#define SOGLIA_TRIM_ALTRE real(1000000000.0)
|
||
|
||
// minima percentuale di operazioni esenti per aver diritto al rimborso
|
||
// infrannuale
|
||
#define MIN_PARTE_ESENTE real(0.25)
|
||
|
||
// percentuale degli imponibili da usare nel calcolo aliquota
|
||
// media acquisti e vendite per controllo diritto al rimborso
|
||
// infraanuuale secondo norme 1994
|
||
// ANNULLATO ANCOR PRIMA DI ESISTERE; LO LASCIO PER MEMORIA FUTURA
|
||
// (due giorni di lavoro)
|
||
#define PERC_IMP_RIMBORSABILE real(0.51)
|
||
|
||
// NUOVO ENNESIMO CRITERIO RIMBORSO; mi si scusera' un minimo di
|
||
// risentimento
|
||
#define SOGLIA_MAGGIORE_ALIQUOTA_DEL_CAZZO_PER_AVER_DIRITTO_AL_RIMBORSO real(0.1)
|
||
|
||
// Macro per riconoscere una eventuale percentuale pro-rata non presente in tabella
|
||
// Siccome le % vanno da 0 a 100 vengono usati numeri a piacere.
|
||
const real INVALID_PRORATA = 1999.0; // A Guy piacciono gli 883... a me piace Spazio 1999
|
||
#define INVALID_PRORATA_ASSERT real(883.0) // ...A little tribute 2 Max Pezzali
|
||
|
||
//
|
||
// ------------------------------------------------------------------
|
||
// Fine parametri modificabili
|
||
// do not change below this line if you want me to work
|
||
// and you to keep your fucking ass healty
|
||
// ------------------------------------------------------------------
|
||
|
||
// per il campo I0 di pim
|
||
#define NETTO "1"
|
||
#define LORDO "2"
|
||
|
||
enum recalc { needed = 1, one = 2, ever = 3, never = 4 };
|
||
enum wht { all = 1, mnt = 2, trimestre = 3};
|
||
enum tbc { precedente = 1, incorso = 2};
|
||
enum tiporeg { vendita = 1, acquisto = 2 };
|
||
enum tipo_sospensione { nessuna, normale, vol_affari, liquidazione };
|
||
|
||
// flags per gli items di stampa
|
||
#define CHG_PARMS 1 // cambiato qualcosa (attivita', ditta...)
|
||
#define PIM_ROW 2 // riga totali parziali per codiva
|
||
#define PLAFOND 3 // prospetto plafond
|
||
#define THE_END 4 // riepilogo finale
|
||
#define TOT_ROW 5 // totale dei pim (plm)
|
||
#define MISC_LIQ 6 // altri dati dichiarazione (ptm)
|
||
#define SET_FIRM 7 // dati ditta (senza attivita')
|
||
#define ANNUAL 8 // prospetto annuale (prorata etc.)
|
||
#define VENTILA 9 // prospetto ventilazione
|
||
#define REGAGR 10 // prospetto regime agricolo
|
||
#define REGVIA 11 // prospetto agenzie viaggio
|
||
#define RIMBORSO 12 // prospetto rimborso infraannuale
|
||
#define ACCONTO 13 // riga prospetto acconti
|
||
#define ACCHEAD 14 // header prospetto acconti
|
||
#define DELDEB 15 // righe tabulato deleghe ditte a debito
|
||
#define DELCRED 16 // header tabulato deleghe ditte a credito
|
||
#define DELEGA 17 // descrizione versamenti
|
||
#define PIM_HEAD 18 // bytes sprecati per far vedere l'intestazione pim
|
||
#define LIQACC 19 // prospetto liquidazione acconto
|
||
#define PROGAGR 20 // progressivi per prospetto agricolo dal 1998
|
||
#define PIS_HEAD 21 // intestazione per i PIS (stampa cappelletto iniziale)
|
||
#define PIS_ROW 22 // riga totali parziali per codiva (tabella progressivi di cui da periodo successivo)
|
||
#define PIS_HEAD_D 23 // intestazione per i PIS (stampa cappelletto iniziale) differita
|
||
#define PIS_HEAD_DI 24 // intestazione per i PIS (stampa cappelletto iniziale) differita incassati
|
||
#define PIM_HEAD_D 25 // intestazione per i PIM (stampa cappelletto iniziale) differita
|
||
#define PIM_HEAD_DI 26 // intestazione per i PIM (stampa cappelletto iniziale) differita incassati
|
||
#define PIS_ROW_D 27 // riga totali parziali per codiva (tabella progressivi di cui da periodo successivo) differita
|
||
#define PIS_ROW_DI 28 // riga totali parziali per codiva (tabella progressivi di cui da periodo successivo) differita incassati
|
||
#define PIM_ROW_D 29 // riga totali parziali per codiva differita
|
||
#define PIM_ROW_DI 30 // riga totali parziali per codiva differita incassati
|
||
#define TOT_ROW_D 31 // totale dei pim (plm) differita
|
||
#define TOT_ROW_DI 32 // totale dei pim (plm) differita incassate
|
||
// ...............................................................
|
||
// support structs
|
||
// ...............................................................
|
||
|
||
class _VentItem : public TObject
|
||
{
|
||
public: // non e' bello, ma non e' bello neanche dover fare un
|
||
// TObject per poter mettere una struct in un TArray
|
||
real _imposta; // per comodita'
|
||
real _aliquota; // aliquota iva
|
||
real _totale; // totale acquisti
|
||
TString4 _codiva; // codice iva
|
||
TString4 _other; // codice iva a cui ventilare
|
||
_VentItem() {}
|
||
virtual ~_VentItem() {}
|
||
};
|
||
|
||
class _VendItem : public TObject
|
||
{
|
||
public: // vedi sopra per le fisime morali
|
||
real _totale; // totale vendite per registro/tipo det.
|
||
TString4 _codreg; // codice registro
|
||
int _month; // mese
|
||
int _tipodet; // tipo detraibilita'
|
||
_VendItem() {}
|
||
virtual ~_VendItem() {}
|
||
};
|
||
|
||
class _CorrItem : public TObject
|
||
{
|
||
public: // vedi sopra per le fisime morali
|
||
real _totale; // totale vendite per registro
|
||
real _totale_vf; // usato nella describe_pim(), per includere TUTTI i movimenti anche quelli validi solo per Vol. affari
|
||
TString4 _codreg; // codice registro
|
||
int _month; // mese
|
||
real _aliquota; // aliquota iva
|
||
TString4 _codiva; // codice iva
|
||
TString8 _codatt; // codice attivita'
|
||
int _tipodet; // tipo detraibilita'
|
||
virtual TObject* dup() const { return new _CorrItem(*this); }
|
||
_CorrItem() {}
|
||
};
|
||
|
||
class _DescrItem : public TObject
|
||
// Sembra triste e brutto esattamente come i files tabella
|
||
// Ma la verita' e' che non e' affatto inefficiente
|
||
// e che mi piace, nei limiti dell'entusiasmo concessomi, moltissimo
|
||
{
|
||
public:
|
||
word _flags;
|
||
word _f0, _f1, _f2, _f3;
|
||
TString _s0, _s1, _s2, _s3, _s4, _s5, _s6;
|
||
real _r0, _r1, _r2, _r3, _r4, _r5, _r6, _r7, _r8, _r9,
|
||
_r10, _r11, _r12, _r13, _r14, _r15, _r16, _r17, _r18, _r19,
|
||
_r20, _r21, _r22, _r23, _r24, _r25, _r26, _r27, _r28, _r29,
|
||
_r30, _r31, _r32, _r33;
|
||
TArray _arr;
|
||
TDate _d0, _d1;
|
||
real _diff_ven_ap, _diff_ven_ap_iva, _diff_acq_ap, _diff_acq_ap_iva;
|
||
|
||
_DescrItem(word f) : _flags(f), _f0(0), _f1(0), _f2(0) { }
|
||
virtual ~_DescrItem() { }
|
||
};
|
||
|
||
class _ErrItem : public TObject
|
||
{
|
||
|
||
public:
|
||
|
||
TString _err;
|
||
TString8 _att, _firm;
|
||
_ErrItem(const char* err, const char* att, const char* firm)
|
||
{ _err = err; _att = att; _firm = firm; }
|
||
virtual ~_ErrItem() {}
|
||
};
|
||
|
||
// _Iva11Item serve per memorizzare gli elementi da trasferire su tab1100
|
||
class _Iva11Item : public TObject
|
||
{
|
||
real _value;
|
||
int _file;
|
||
public:
|
||
virtual TObject* dup() const { return new _Iva11Item(*this); }
|
||
real& value() { return _value; }
|
||
int& file() { return _file; }
|
||
void zero() { _value = 0.0; _file = LF_TAB1100A; }
|
||
_Iva11Item() { _file = LF_TAB1100A; }
|
||
virtual ~_Iva11Item() {}
|
||
};
|
||
|
||
// Definisco solo i metodi add e sub, per aggiungere elementi _Iva11Item
|
||
// per il resto e' un normalissimo TAssoc_array
|
||
class _Iva11Array : public TAssoc_array
|
||
{
|
||
public:
|
||
bool add(const real& val, const char* fld_name, int num_file = LF_TAB1100A);
|
||
bool sub(const real& val, const char* fld_name, int num_file = LF_TAB1100A);
|
||
void zero(const char* fld_name);
|
||
_Iva11Array() {}
|
||
virtual ~_Iva11Array() {}
|
||
};
|
||
|
||
// _ProrataItem serve per calcolare prorata dal 1998
|
||
// E' un po' bruttino, perche' il caricamento delle percentuali
|
||
// e' obbligato a farlo dentro all'applicazione.
|
||
class _ProrataItem : public TObject
|
||
{
|
||
TAssoc_array _percentuali; // Elenco delle percentuali prorata memorizzate per anno
|
||
|
||
public:
|
||
TAssoc_array& perc_array() { return _percentuali; }
|
||
real calc_prorata(const real& acq, const char* year);
|
||
const real& percentuale(const char* year) const;
|
||
};
|
||
|
||
// ------------------------------------------------------------------------
|
||
// Application
|
||
// ------------------------------------------------------------------------
|
||
|
||
class TLiquidazione_app : public TPrint_application
|
||
{
|
||
TArray_sheet* _ditte;
|
||
wht _what;
|
||
TBit_array _selected;
|
||
int _menu; // 1 = Liquidazione, 2 = Deleghe, 3 = Acconti
|
||
TString4 _year; // anno di calcolo
|
||
int _month; // mese da calcolare
|
||
TDate _date; // data di stampa
|
||
bool _isprint; // vuoi stampare o no?
|
||
bool _canprint; // PUOI stampare o no?
|
||
bool _printonly; // calcolo definitivo
|
||
recalc _recalc; // tipo ricalcolo scelto
|
||
bool _isplafond; // plafond importatori abituali
|
||
bool _isvent; // ventilazione
|
||
bool _isagricolo; // regime agricolo
|
||
bool _isviaggio; // regime agenzie viaggio
|
||
bool _isdiff; // liquidazione differita attiva
|
||
bool _isbenzinaro; // regime benzinaro
|
||
bool _gest4; // gestione 4<> trim. per benzinaro
|
||
bool _isannual; // dichiarazione annuale
|
||
bool _mixed; // attivita' mista
|
||
bool _isriepilogo; // 13a liq
|
||
bool _isendliq; // annuale o riepilogo
|
||
bool _isservizio; // servizi, professionisti, artisti
|
||
bool _isrimborso; // vuole il rimborso infraannuale
|
||
bool _isricacq; // ricalcolo imposte acq. riv (par. ditta)
|
||
bool _isdifferita; // liquidazione differita e mese != 13
|
||
bool _isdiffacc; // liq. differita (usato per stampa registri)
|
||
bool _recalc_only; // solo ricalcolo progressivi
|
||
bool _recalc_regis; // solo ricalcolo progressivi per registri
|
||
bool _calcall; // tutte le ditte nessuna esclusa
|
||
bool _isbase; // stampa base di calcolo acconto
|
||
bool _isfinal; // stampa definitiva (su registro bollato)
|
||
bool _isregis; // stampa per registro
|
||
bool _isintr; // calcola interessi per trimestrali
|
||
bool _stampa_vers; // stampa trafiletto versamento;
|
||
bool _stampa_acc; // stampa trafiletto saldo/acconto
|
||
bool _riepilogo; // stampa riepilogo sul registro
|
||
bool _sind11; // somma imposte non detraibili in trasferimento IVA11 (da configurazione dati studio)
|
||
tbc _basecalc; // tipo base di calcolo acconto
|
||
TString4 _freqviva; // frequenza versamenti (M|T)
|
||
long _n_ditte; // numero ditte
|
||
bool _comp_acconto; // stiamo calcolando l'acconto
|
||
TArray _nomiditte; // array descr. ditte per sheet
|
||
|
||
TProgind* _prind;
|
||
int _row;
|
||
TArray _vend_arr; // tabella vendite per ventilazione
|
||
TArray _corr_arr; // tabella corrispettivi
|
||
TArray _vent_arr; // tabella acquisti per ventilazione
|
||
TArray _descr_arr; // things to be printed
|
||
TArray _errors; // errors to notify
|
||
|
||
|
||
TAssoc_array _codiva_arr; // cache dei codici IVA.
|
||
TAssoc_array _reg_arr; // cache dei registri.
|
||
TAssoc_array _iva11_arr; // array contenente le informazioni da trasferire.
|
||
// La chiave di ordinamento e' sul codice attivita'.
|
||
// Ogni elemento dell'array e' un _Iva11Array
|
||
// La cui chiave e' a sua volta sul nome campo
|
||
|
||
// totali vari per attivita'
|
||
real _p8, _p8b, _p9; // totali plafond
|
||
_ProrataItem _prorata; // Mini cazzetto per calcoli prorata
|
||
long __firm; // ditta selezionata all'inizio
|
||
bool _is_interactive; // lanciata da menu o da altro prog
|
||
bool _is_visliq; // lanciata da visualizzazione liquidazione
|
||
int _monthinatt; // mese inizio attivita' (serve per differita)
|
||
|
||
real _diff_ven_ap, _diff_ven_ap_iva, _diff_acq_ap, _diff_acq_ap_iva;
|
||
|
||
// main cursor
|
||
TRelation* _rel;
|
||
TCursor* _cur;
|
||
|
||
// files, tables
|
||
TRelation* _tab11; // un giorno tab1100a e tab1100b saranno un unico file!
|
||
TRelation* _nditte;
|
||
TLocalisamfile* _mov;
|
||
TLocalisamfile* _rmoviva;
|
||
TLocalisamfile* _pcon_1;
|
||
TLocalisamfile* _pcon_2;
|
||
|
||
TInteressi_IVA_table* _ver;
|
||
|
||
TTable* _pim;
|
||
TTable* _pis;
|
||
TTable* _prm;
|
||
TTable* _prp;
|
||
TTable* _pum;
|
||
TTable* _pam;
|
||
TTable* _pom;
|
||
TTable* _plm;
|
||
TTable* _pia;
|
||
TTable* _lam;
|
||
TTable* _pla;
|
||
TTable* _ppa;
|
||
TTable* _reg;
|
||
TTable* _iva;
|
||
TTable* _del;
|
||
|
||
// a reference rectype per file/table
|
||
TRectype* _mov_r;
|
||
TRectype* _rmoviva_r;
|
||
TRectype* _pcon_1_r;
|
||
TRectype* _pcon_2_r;
|
||
TRectype* _iva_r;
|
||
TRectype* _pim_r;
|
||
TRectype* _pis_r;
|
||
TRectype* _prm_r;
|
||
TRectype* _prp_r;
|
||
TRectype* _pum_r;
|
||
TRectype* _pam_r;
|
||
TRectype* _pom_r;
|
||
TRectype* _reg_r;
|
||
TRectype* _nditte_r;
|
||
TRectype* _pla_r;
|
||
TRectype* _plm_r;
|
||
TRectype* _pia_r;
|
||
TRectype* _ppa_r;
|
||
TRectype* _lam_r;
|
||
TRectype* _del_r;
|
||
TRectype* _att_r;
|
||
|
||
// recfields for each stronz codtab
|
||
TRecfield* _pim_anno;
|
||
TRecfield* _pim_codatt;
|
||
TRecfield* _pim_codreg;
|
||
TRecfield* _pim_mese;
|
||
TRecfield* _pim_tipocr;
|
||
TRecfield* _pim_codiva;
|
||
TRecfield* _pim_tipodet;
|
||
TRecfield* _pis_anno;
|
||
TRecfield* _pis_codatt;
|
||
TRecfield* _pis_codreg;
|
||
TRecfield* _pis_mese;
|
||
TRecfield* _pis_tipocr;
|
||
TRecfield* _pis_codiva;
|
||
TRecfield* _pis_tipodet;
|
||
TRecfield* _prm_anno;
|
||
TRecfield* _prm_codatt;
|
||
TRecfield* _prm_codreg;
|
||
TRecfield* _prm_mese;
|
||
TRecfield* _prm_tipocr;
|
||
TRecfield* _prm_codiva;
|
||
TRecfield* _prm_tipodet;
|
||
TRecfield* _prp_anno;
|
||
TRecfield* _prp_codatt;
|
||
TRecfield* _prp_codreg;
|
||
TRecfield* _prp_mese;
|
||
TRecfield* _prp_tipocr;
|
||
TRecfield* _prp_codiva;
|
||
TRecfield* _prp_tipodet;
|
||
TRecfield* _pum_anno;
|
||
TRecfield* _pum_codatt;
|
||
TRecfield* _pum_mese;
|
||
TRecfield* _pam_anno;
|
||
TRecfield* _pam_codatt;
|
||
TRecfield* _pam_mese;
|
||
TRecfield* _pom_anno;
|
||
TRecfield* _pom_codatt;
|
||
TRecfield* _pom_mese;
|
||
TRecfield* _ppa_year;
|
||
TRecfield* _ppa_codatt;
|
||
TRecfield* _ppa_month;
|
||
TRecfield* _ppa_kind;
|
||
TRecfield* _plm_anno;
|
||
TRecfield* _plm_codatt;
|
||
TRecfield* _plm_mese;
|
||
TRecfield* _pia_anno;
|
||
TRecfield* _pia_codatt;
|
||
TRecfield* _pia_mese;
|
||
TRecfield* _pia_codord;
|
||
TRecfield* _pia_codcom;
|
||
|
||
TRecfield* _pla_ditta;
|
||
TRecfield* _pla_anno;
|
||
TRecfield* _pla_codatt;
|
||
|
||
TRecfield* _del_ditta;
|
||
TRecfield* _del_anno;
|
||
TRecfield* _del_mese;
|
||
TRecfield* _del_tipo;
|
||
TRecfield* _lam_anno;
|
||
TRecfield* _lam_mese;
|
||
|
||
// supporto per l'ultima figata
|
||
int _firm_bookmark;
|
||
int _att_bookmark;
|
||
|
||
protected:
|
||
|
||
long select_firm_range(long from, long to, wht freq);
|
||
|
||
static bool ch_year_handler(TMask_field& f, KEY key);
|
||
static bool to_ditt_handler(TMask_field& f, KEY key);
|
||
static bool fr_ditt_handler(TMask_field& f, KEY key);
|
||
static bool what_freq_handler(TMask_field& f, KEY key);
|
||
static bool lst_tm_handler(TMask_field& f, KEY key);
|
||
static bool select_button(TMask_field& f, KEY key);
|
||
static bool reset_button(TMask_field& f, KEY key);
|
||
static bool chk_final_handler(TMask_field& f, KEY key);
|
||
|
||
static TLiquidazione_app& app() { return (TLiquidazione_app&)main_app(); }
|
||
|
||
bool residuo_da_liquidare(const TRectype& lastid, real& importo_res, real& imponibile_res, real& imposta_res) const;
|
||
bool print_inc_diff_log(int& rw, int tipoatt, int tipoiva);
|
||
bool print_dainc_diff_log(int& rw, int tipoatt, int tipoiva);
|
||
bool ivadiff_chiusa(const TRectype& mov, const TDate& fine) const;
|
||
bool sarebbe_maturata(const TRectype& mov, const TDate& inizio, const TDate& fine) const;
|
||
|
||
public:
|
||
|
||
virtual bool user_create();
|
||
virtual bool user_destroy();
|
||
virtual bool set_print(int i);
|
||
|
||
// cazzatelle per handlers
|
||
TArray_sheet* get_ditte_sheet() { return _ditte; }
|
||
TBit_array& get_selected() { return _selected; }
|
||
void build_ditte_sheet(wht);
|
||
void reset_choices(TMask&);
|
||
void set_choice_limits(TMask&);
|
||
void build_nomiditte();
|
||
void set_year(const char* y) { _year = y; }
|
||
void set_month(const int m) { _month = m; }
|
||
|
||
bool set_liquidazione();
|
||
bool recalc_all();
|
||
|
||
// ricalcolo progressivi mese
|
||
bool update_firm (int month, bool recalc = true);
|
||
bool update_att (int month, const char* codatt, bool recalc = true);
|
||
void zero_att (int month, const char* codatt);
|
||
void zero_annual (int month);
|
||
void recalc_att (int month, const char* codatt);
|
||
void recalc_annual (const char* codatt);
|
||
_DescrItem* recalc_rimborso(int month, const char* codatts, bool print);
|
||
|
||
// Le funzioni che hanno come prefisso iva11 sono per creare il file di trasferimento per IVA11
|
||
// Viene chiamata quando vengono scorsi tutti i movimenti, settando gli elementi di _iva11_arr.
|
||
void iva11_set_arr_phase_1 (const TString& codatt);
|
||
// Scorre tutti i PIM della ditta, per completare _iva11_arr prima di chiamare write_IVA11()
|
||
void iva11_set_arr_phase_2 (const TString& codatt);
|
||
// Scrive per la ditta/attivita' corrente, i dati relativi al trasferimento IVA11
|
||
// Se viene passato true come parametro, azzera i campi R1 ed R2.
|
||
void iva11_write (bool reset_r1r2 = false);
|
||
|
||
// ricalcolo liquidazioni dai progressivi mensili
|
||
void write_liq (int month, const char* atts);
|
||
|
||
// ritorna l'eventuale ma sempre appropriato debito (< 50.000)
|
||
real debt_prec(int month);
|
||
// ritorna il risultato della liquidazione del mese
|
||
// non considera il conguaglio prorata (annuale)
|
||
real result_liq(int month);
|
||
// ritorna l'appropriato credito precedente al mese in corso
|
||
real credito_prec(int month);
|
||
// ritorna l'appropriato credito di costo precedente al mese in corso
|
||
// (travel agency only)
|
||
real credito_costo_prec(int month);
|
||
// ritorna i versamenti effettuati nel mese per
|
||
// i tipi delega passati (stile tokenstring) sommando
|
||
// gli interessi se interesse = true
|
||
real versamenti_IVA(int month, const char* types, bool interesse = false);
|
||
// Ritorna il valore dell'iva da riportare (solitamente 50500)
|
||
real iva_da_riportare(int month);
|
||
|
||
// Funzione personale di arrotondamento all'euro.
|
||
void round_imposta(real& d) const;
|
||
// Funzione personale di arrotondamento alla lira o centesimo di euro.
|
||
void round_al_centesimo(real& d) const;
|
||
|
||
// supporto stampa
|
||
void describe_firm(int month);
|
||
void describe_att(int month, const char* codatt, bool isresult, char flags);
|
||
void describe_name(int month, const TToken_string& atts, char flags);
|
||
void describe_plafond(int month, const char* codatt);
|
||
void describe_ventilation(int month, const char* codatt);
|
||
void describe_agricolo(int month, const char* codatt);
|
||
void describe_viaggio(int month, const char* codatt);
|
||
void describe_pims(int month, const char* codatt, const bool describe_pis);
|
||
void describe_liq(int month, const char* codatts, _DescrItem* d = NULL);
|
||
void describe_error(const char* errstr, const char* codatt);
|
||
void describe_annual(const char* codatt);
|
||
void describe_consistence(const char* codatt);
|
||
void describe_liqacc();
|
||
|
||
_DescrItem* describe_deleghe(int month);
|
||
|
||
// corrispettivi
|
||
void recalc_corrispettivi (int month, const char* codatt);
|
||
|
||
// ventilasiun
|
||
void recalc_ventilation (int month, const char* codatt);
|
||
|
||
// ag. viaggio
|
||
void recalc_viaggio (int month, const char* codatt);
|
||
|
||
// plafond
|
||
void zero_plafond (int month, const char* codatt);
|
||
void add_plafond (int month, const char* codatt, int type,
|
||
const real& howmuch, bool intra);
|
||
|
||
// IVA differita e per cassa
|
||
void zero_diff(int month, const char* codatt); // Azzera tabella IVA x Cassa
|
||
|
||
// Ritorna il parametro della liquidazione differita per la ditta corrente, cosi come
|
||
// e' scritto sui parametri liquidazione (LIA)
|
||
// Se si passa 0 (default) vede prende la ditta correntemente in corso di calcolo
|
||
// Analogamente per l'anno
|
||
bool is_acconto_differito(long firm = 0, int year = 0);
|
||
|
||
// ritorna l'aliquota ordinaria dal
|
||
// codice IVA apposito immesso nei parametri studio
|
||
real aliquota_agvia();
|
||
|
||
// ritorna l'interesse per il mese in questione (dai parametri studio)
|
||
real interesse_trimestrale(int month);
|
||
|
||
// minchia di puro suino
|
||
void add_vendite (int month, const char* codreg, int tipoind, const real& imp);
|
||
void add_ventilation (real iva, real sum, const char* codiva, const char* other);
|
||
void add_corrisp (int month, const char* codreg, const real& r,
|
||
const real& p, int tipodet, const char* codiva, const char* codatt);
|
||
|
||
//vergine immacolata, richiamata per scorporare l'iva nei corrispettivi peccatori
|
||
void lordo2netto(const real& totale, real& imponibile, real& imposta, const real& aliquota);
|
||
void lordo2netto(real& imponibile, real& imposta, const real& aliquota);
|
||
|
||
// printappings
|
||
virtual void set_page(int file, int counter);
|
||
virtual bool preprocess_page(int file, int counter);
|
||
virtual print_action postprocess_page(int file, int counter);
|
||
|
||
// settaggio righe per ogni elemento di _descr_arr
|
||
void set_plafond(_DescrItem& d);
|
||
void set_ventila(_DescrItem& d);
|
||
void set_regagr(_DescrItem& d);
|
||
void set_viaggio(_DescrItem& d);
|
||
void set_firm(_DescrItem& d);
|
||
void set_att(_DescrItem& d);
|
||
void set_pim(_DescrItem& d);
|
||
void set_pumpam(const _DescrItem& d);
|
||
void set_plm_diff(const _DescrItem& d);
|
||
void set_plm(_DescrItem& d);
|
||
bool set_annual(_DescrItem& d);
|
||
void set_iva_succ(int& rw);
|
||
void set_grand(_DescrItem& d);
|
||
// void set_grand_1999(_DescrItem& d, int &rw);
|
||
void set_grand_2000(_DescrItem& d, int &rw);
|
||
void set_pim_head(_DescrItem& d);
|
||
// void set_liqacc_1999(_DescrItem& d);
|
||
|
||
int calc_inc_diff(int tipoiva, real& imponibile_diff, real& imposta_diff, real& imponibile_xcas, real& imposta_xcas) const;
|
||
int print_acc_diff_xcassa(const _DescrItem& d);
|
||
void set_liqacc_2000(_DescrItem& d);
|
||
|
||
// Utility per stampare nella colonna debito o credito
|
||
void print_importo(int rw, const char* prompt, real imp, bool red = false);
|
||
|
||
// cercapalle in tabelle con opzione di creazione se serve
|
||
bool look_pim(int m, const char* a, const char* r, const char* cr,
|
||
const char* i, int tipodet = 0, bool create = false);
|
||
bool look_pis(int m, const char* a, const char* r, const char* cr,
|
||
const char* i, int tipodet = 0, bool create = false);
|
||
bool look_prm(int m, const char* a, const char* r, const char* cr,
|
||
const char* i, int tipodet = 0, bool create = false);
|
||
bool look_prp(int m, const char* a, const char* r, const char* cr,
|
||
const char* i, int tipodet = 0, bool create = false);
|
||
bool look_pum(int m, const char* a, bool create = false);
|
||
bool look_pam(int m, const char* a, bool create = false);
|
||
bool look_pem(TTable & pem, int codreg);
|
||
bool look_pom(int m, const char* a, bool create = false);
|
||
bool look_plm(int m, const char* a, bool create = false);
|
||
bool look_pia(int m, const char* a, const char* cod1, const char* cod2, bool create = false);
|
||
const TRectype & get_lim(int month, bool create = false);
|
||
const int put_lim(const TRectype & lim, bool re = true);
|
||
bool look_lam(int m, bool create = false);
|
||
bool look_pla(const char* a, bool create = false);
|
||
bool look_ppa(int m, const char* a, int t, bool create = false);
|
||
bool look_del(int month, int type, bool create = false);
|
||
bool look_iva(const char* cod);
|
||
bool look_reg(const char* reg);
|
||
const TRectype & get_lia(long ditta = 0l, bool create = false, int anno = 0);
|
||
const int put_lia(const TRectype & lia, bool re = true);
|
||
|
||
int count_activities() const;
|
||
|
||
// trova il mytical ufficio concessione da mettere nelle deleghe
|
||
bool look_conc(TString& uffcon, TString& uffiva);
|
||
|
||
_VendItem* look_vendita(int m, const char* codreg);
|
||
_VentItem* look_ventilation(int m, const char* codreg);
|
||
|
||
// tutti i controlli del mondo sui mesi da calcolare
|
||
static bool is_trim (int x);
|
||
// ritorna il mese corrispondente alla scadenza del trimestre relativo
|
||
// senza considerare la frequenza versamenti
|
||
int next_trim(int x);
|
||
// is_month_ok controlla che il mese passato sia
|
||
// da prendere in considerazione per la liquidazione
|
||
// controllando il regime trimestrale o mensile e
|
||
// il ricalcolo annuale
|
||
bool is_month_ok(int x, int mtocalc) const;
|
||
// is_month_ok_strict controlla che il mese sia OK per la
|
||
// liquidazione, ma ritorna true per le trimestrali solo
|
||
// se il mese cade ESATTAMENTE su un trimestre
|
||
bool is_month_ok_strict(int x, int month = -1) const;
|
||
// questa e' la piu' semplice, per vedere se devo
|
||
// calcolare il mese fottendomene dell'annuale
|
||
bool is_month_plain(int x) const;
|
||
// questa serve per i progressivi: la data passata va bene
|
||
// se il movimento deve essere considerato in calcolo e riepilogo
|
||
// per la liquidazione di month
|
||
bool is_date_ok (const TDate& d, int month, int liqmonth, int year) const;
|
||
bool is_in_liq_period(const TDate& d);
|
||
bool is_first_month (int m);
|
||
int liq_month(int x);
|
||
|
||
int previous_month (int m) const;
|
||
|
||
/* Funzioni accessorie: estrazione deleghe
|
||
bool set_deleghe();
|
||
bool extract_deleghe();
|
||
bool extract_delega(int m, TArray& desc);
|
||
bool video_conferma(const real&, const real&, const real&, bool to_del = false);
|
||
*/
|
||
|
||
// stampa
|
||
void set_deltab(_DescrItem& d, bool iscred);
|
||
|
||
// Funzioni accessorie: calcolo acconto dicembre
|
||
// i real passati sono due cazzi di correzioni iva che
|
||
// vanno settate nella maschera anche se non potranno
|
||
// mai riguardare tutte le ditte
|
||
|
||
bool set_acconto (real&, real&);
|
||
bool recalc_acconti(real&, real&);
|
||
bool recalc_acconto(real&, real&);
|
||
// stampa
|
||
void set_acconto_p(_DescrItem& d);
|
||
void set_acchead_p(_DescrItem& d);
|
||
|
||
|
||
const real credito_utilizzato_F24(int month) const;
|
||
const real credito_utilizzato_IVA(int month) const;
|
||
const real credito_utilizzato(int month) const { return credito_utilizzato_F24(month) + credito_utilizzato_IVA(month);}
|
||
const real credito_autorizzato(int month) const;
|
||
|
||
// cippiuppiu'
|
||
TLiquidazione_app(int men);
|
||
|
||
};
|
||
|
||
|
||
|