Patch level : 12.0 996
Files correlati : cg0.exe cg2.exe Commento : - Sistemato enum tipo sospensione (lista progressivi liquidazione stampa registri apertura esercizio iva apertura conti ricostruzione saldi) - Sistemanto enum tiporeg - Sistemato enum tiposal ( conferma movimeni provvisori - Aggiuta cache di registri
This commit is contained in:
parent
d946faf73f
commit
2e185afa29
@ -12,6 +12,7 @@
|
||||
|
||||
#include "cg0.h"
|
||||
#include "cg0400.h"
|
||||
#include "cglib.h"
|
||||
|
||||
#include "cgpim.h"
|
||||
|
||||
@ -26,8 +27,6 @@ enum liste {
|
||||
ListaPerPeriodo=2,
|
||||
};
|
||||
|
||||
enum tipo_sospensione { nessuna, normale, vol_affari, liquidazione };
|
||||
|
||||
struct Importi {
|
||||
real imponibile;
|
||||
real imposta;
|
||||
@ -321,11 +320,9 @@ void TProgressivi_iva::look_pim()
|
||||
if (tabiva.read() == NOERR)
|
||||
soggetto = tabiva.get("S1") != "NS"; // I non soggetti non vanno sempre considerati
|
||||
|
||||
reg.put("CODTAB",codreg);
|
||||
if (reg.read() != NOERR) reg.zero();
|
||||
const bool corrisp = reg.get_bool("B0");
|
||||
|
||||
const tipo_sospensione sosp_imp = reg.get_bool("B1") ? (tipo_sospensione) reg.get_int("I9") : nessuna;
|
||||
const TRegistro & reg = cached_registro(codreg);
|
||||
const bool corrisp = reg.corrispettivi();
|
||||
const tipo_sospensione sosp_imp = reg.sospensione();
|
||||
|
||||
// Se si decide di stampare i progressivi validi per la liquidazione
|
||||
// i PIM validi solo per il volume d'affari vanno scartati
|
||||
@ -413,7 +410,7 @@ void TProgressivi_iva::look_pim()
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (sosp_imp == normale || sosp_imp == nessuna) // Esclude quelli valevoli solo liq o solo vol.aff. dai riepiloghi altri dati
|
||||
if (sosp_imp == sospensione_normale || sosp_imp == nessuna_sospensione) // Esclude quelli valevoli solo liq o solo vol.aff. dai riepiloghi altri dati
|
||||
{
|
||||
if (_mese != 13)
|
||||
_iva_array.add_riga(tipo,imponibile,imposta,ZERO);
|
||||
|
@ -271,17 +271,14 @@ void TProvvisori_app::inizia_saldi(const TRectype& r)
|
||||
|
||||
_saldi.reset();
|
||||
|
||||
tiposal tsal = normale;
|
||||
const TString4 c = r.get(MOV_CODCAUS);
|
||||
if (c.not_empty())
|
||||
tiposal tsal = saldo_normale;
|
||||
const TString4 codcaus = r.get(MOV_CODCAUS);
|
||||
|
||||
if (codcaus.full())
|
||||
{
|
||||
const TRectype& cau = cache().get(LF_CAUSALI, c);
|
||||
if (!cau.empty())
|
||||
{
|
||||
const char movap = cau.get_char(CAU_MOVAP);
|
||||
if (movap == 'A') tsal = apertura; else
|
||||
if (movap == 'C') tsal = chiusura;
|
||||
}
|
||||
const TCausale & cau = cached_causale(codcaus);
|
||||
|
||||
tsal = cau.tipo_saldo();
|
||||
}
|
||||
_saldi.set_tipo_saldo(tsal);
|
||||
|
||||
|
@ -77,8 +77,7 @@ const real INVALID_PRORATA = 1999.0; // A Guy piacciono gli 883... a me p
|
||||
enum recalc { one = 2, 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, sospensione_normale, vol_affari, liquidazione };
|
||||
|
||||
|
||||
// flags per gli items di stampa
|
||||
#define CHG_PARMS 1 // cambiato qualcosa (attivita', ditta...)
|
||||
|
@ -550,9 +550,9 @@ bool TLiquidazione_app::update_att(int month, const char* codatt, TAssoc_array &
|
||||
if (ok && !recalc)
|
||||
return true;
|
||||
bool calc = (_recalc == one && is_month_ok(month,_month));
|
||||
|
||||
if (!calc && _recalc != never)
|
||||
calc = !ok;
|
||||
|
||||
if (calc || !recalc)
|
||||
{
|
||||
zero_att(month,codatt);
|
||||
@ -1154,6 +1154,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
}
|
||||
|
||||
TProgress_monitor pi(items, pimsg, false);
|
||||
|
||||
for (; _cur->pos() < items; ++(*_cur))
|
||||
{
|
||||
if (!pi.set_status(_cur->pos()))
|
||||
@ -1163,7 +1164,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
#ifdef DBG
|
||||
long nr = _mov->get_long(MOV_NUMREG);
|
||||
|
||||
if (nr == 18489 || nr == 27710)
|
||||
if (nr == 41221L || nr == -1L)
|
||||
int i = 1;
|
||||
#endif
|
||||
|
||||
@ -1171,9 +1172,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
const TString4 reg = _mov->get("REG");
|
||||
const bool isreg = look_reg(reg);
|
||||
const TString4 tipodoc = _mov->get(MOV_TIPODOC);
|
||||
const bool corrisp = _reg->get_bool("B0");
|
||||
const tiporeg tipomov = (tiporeg)_reg->get_int("I0"); // 1=Vendite; 2=Acquisti
|
||||
tipo_movimento tm = (tipo_movimento)_mov->get_int(MOV_TIPOMOV);
|
||||
const TRegistro & r = cached_registro(_reg->curr());
|
||||
const bool corrisp = r.corrispettivi();
|
||||
const tiporeg tipomov = r.tipo_registro();
|
||||
// const bool corrisp = _reg->get_bool("B0");
|
||||
// const tiporeg tipomov = (tiporeg)_reg->get_int("I0"); // 1=Vendite; 2=Acquisti
|
||||
tipo_movimento tm = (tipo_movimento) _mov->get_int(MOV_TIPOMOV);
|
||||
real imp_split_payment;
|
||||
|
||||
if (tm == tm_nessuno)
|
||||
@ -1432,10 +1436,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
|
||||
if (!dok || sreg || rs8 || cmt)
|
||||
continue;
|
||||
|
||||
|
||||
const tipo_sospensione sosp_imp = _reg->get_bool("B1") ? (tipo_sospensione) _reg->get_int("I9") : nessuna;
|
||||
|
||||
const tipo_sospensione sosp_imp = cached_registro(_reg->curr()).sospensione();
|
||||
/*
|
||||
* Tipo documento da eliminare (Scudler 1994)
|
||||
* Trattasi per lo piu' di non incassati
|
||||
@ -1547,17 +1549,21 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
real impos_det; // Imposta detraibile
|
||||
char sezfat;
|
||||
TLocalisamfile id(LF_IVADIFF);
|
||||
const tipo_sospensione sosp_imp = _reg->get_bool("B1") ? (tipo_sospensione) _reg->get_int("I9") : nessuna;
|
||||
const tipo_sospensione sosp_imp = cached_registro(_reg->curr()).sospensione();
|
||||
const TString & codcaus = rcs.get(CAU_CODCAUS);
|
||||
TToken_string key = _rmoviva->get(RMI_NUMREG); key.add(1);
|
||||
const bool soloiva = cached_causale(codcaus, atoi(_year)).reg().iva() != nessuna_iva && cache().get(LF_RMOV, key).empty();
|
||||
const TRectype& clifo = cache().get_rec(LF_CLIFO, _mov->get(MOV_TIPO), _mov->get(MOV_CODCF));
|
||||
const int tp = clifo.get_int(CLI_ALLEG);
|
||||
TToken_string key = _rmoviva->get(RMI_NUMREG); key.add(1);
|
||||
const TRectype & rmoviva = cache().get(LF_RMOV, key);
|
||||
const bool soloiva = cached_causale(codcaus, atoi(_year)).reg().iva() != nessuna_iva && rmoviva.empty();
|
||||
const TCli_for & clifo = cached_clifor(LF_MOV, _mov->curr());
|
||||
const int tp = clifo.alleg();
|
||||
// const TRectype& clifo = cache().get_rec(LF_CLIFO, _mov->get(MOV_TIPO), _mov->get(MOV_CODCF));
|
||||
// const int tp = clifo.get_int(CLI_ALLEG);
|
||||
|
||||
#ifdef DBG
|
||||
long nr = _mov->get_long(MOV_NUMREG);
|
||||
|
||||
int i = 1;
|
||||
if (nr == 41221L)
|
||||
int i = 1;
|
||||
#endif
|
||||
|
||||
if ((soloiva &&
|
||||
@ -2060,7 +2066,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
nin_imp = imponibile;
|
||||
nin_iva = imposta;
|
||||
}
|
||||
else if (sosp_imp != nessuna) // sospensione di imposta
|
||||
else if (sosp_imp != nessuna_sospensione) // sospensione di imposta
|
||||
{
|
||||
if (tipomov == vendita)
|
||||
{
|
||||
@ -2075,7 +2081,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
|
||||
switch (sosp_imp)
|
||||
{
|
||||
case normale:
|
||||
case sospensione_normale:
|
||||
assp_imp += asimp_imp;
|
||||
assp_iva += asimp_iva;
|
||||
// no regolarizzazioni e reverse charge
|
||||
@ -2217,7 +2223,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
{
|
||||
if (tipomov == vendita)
|
||||
{
|
||||
if (sosp_imp != normale && sosp_imp != vol_affari) // CM500308
|
||||
if (sosp_imp != sospensione_normale && sosp_imp != vol_affari) // CM500308
|
||||
{
|
||||
if (tipoes_v == "B1")
|
||||
esenti_c1 += imponibile;
|
||||
@ -2396,7 +2402,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
*/
|
||||
const bool sosp_vaf = sosp_imp == vol_affari;
|
||||
const bool sosp_liq = sosp_imp == liquidazione;
|
||||
bool ign = sosp_imp == normale || (fattrit && month != 13) || noninc;
|
||||
bool ign = sosp_imp == sospensione_normale || (fattrit && month != 13) || noninc;
|
||||
|
||||
/*
|
||||
* se liq == false gli importi non contano ai fini
|
||||
@ -3107,30 +3113,31 @@ void TLiquidazione_app::iva11_set_arr_phase_1(const TString& codatt)
|
||||
{
|
||||
// My God! Che 2 palle riestrarre tutte le informazioni
|
||||
const TString4 tipodoc = _mov->get(MOV_TIPODOC);
|
||||
const bool intra = _rmoviva->get_bool(RMI_INTRA);
|
||||
const int tipocr = _rmoviva->get_int(RMI_TIPOCR);
|
||||
const bool intra = _rmoviva->get_bool(RMI_INTRA);
|
||||
const int tipocr = _rmoviva->get_int(RMI_TIPOCR);
|
||||
// A partire dalla versione 3.1 la gestione dell'IVA 11 non viene piu' supportata ...
|
||||
// ... ergo non stiamo a gestire la indetraibilita' parziale
|
||||
real percind;
|
||||
const int tipodet = get_tipodet_from_rmi(_rmoviva->curr(), _mov->curr(), percind);
|
||||
real imponibile = _rmoviva->get_real(RMI_IMPONIBILE);
|
||||
real imposta = _rmoviva->get_real(RMI_IMPOSTA);
|
||||
const int tipodet = get_tipodet_from_rmi(_rmoviva->curr(), _mov->curr(), percind);
|
||||
real imponibile = _rmoviva->get_real(RMI_IMPONIBILE);
|
||||
real imposta = _rmoviva->get_real(RMI_IMPOSTA);
|
||||
|
||||
if (is_split_payment(_mov->curr()))
|
||||
imposta = ZERO;
|
||||
const TString4 codiva = _iva->get("CODTAB");
|
||||
if (is_split_payment(_mov->curr()))
|
||||
imposta = ZERO;
|
||||
const TString4 codiva = _iva->get("CODTAB");
|
||||
const TString4 tipoiva = _iva->get("S1");
|
||||
const real ali = _iva->get_real("R0");
|
||||
const TString4 tipoes_v = _iva->get("S2");
|
||||
const TString4 tipoes_a = _iva->get("S9");
|
||||
const int tipoagr = _iva->get_int("I4"); // 2/9/2015 was S4
|
||||
const TRectype& rcs = _cur->curr(LF_CAUSALI);
|
||||
const bool autofattura = rcs.get_bool("AUTOFATT");
|
||||
const bool valintra = rcs.get_bool("VALINTRA");
|
||||
const bool intracom = rcs.get_bool("INTRACOM");
|
||||
const tipo_sospensione sosp_imp = _reg->get_bool("B1") ? (tipo_sospensione) _reg->get_int("I9") : nessuna;
|
||||
const bool corrisp = _reg->get_bool("B0");
|
||||
const tiporeg tipomov = (tiporeg)_reg->get_long("I0");
|
||||
const real ali = _iva->get_real("R0");
|
||||
const TString4 tipoes_v = _iva->get("S2");
|
||||
const TString4 tipoes_a = _iva->get("S9");
|
||||
const int tipoagr = _iva->get_int("I4"); // 2/9/2015 was S4
|
||||
const TRectype& rcs = _cur->curr(LF_CAUSALI);
|
||||
const bool autofattura = rcs.get_bool("AUTOFATT");
|
||||
const bool valintra = rcs.get_bool("VALINTRA");
|
||||
const bool intracom = rcs.get_bool("INTRACOM");
|
||||
const TRegistro & reg = cached_registro(_reg->curr());
|
||||
const tipo_sospensione sosp_imp = reg.sospensione();
|
||||
const bool corrisp = reg.corrispettivi();
|
||||
const tiporeg tipomov = reg.tipo_registro();
|
||||
const bool is_vendita = tipomov == vendita;
|
||||
const bool is_acquisto = tipomov == acquisto;
|
||||
|
||||
@ -3169,12 +3176,12 @@ void TLiquidazione_app::iva11_set_arr_phase_1(const TString& codatt)
|
||||
}
|
||||
}
|
||||
|
||||
if (sosp_imp == nessuna && tipodet == 0 && (tipocr == 2 || tipocr == 8))
|
||||
if (sosp_imp == nessuna_sospensione && tipodet == 0 && (tipocr == 2 || tipocr == 8))
|
||||
{
|
||||
array.add(imposta,TAB11_R6,LF_TAB1100B);
|
||||
}
|
||||
|
||||
if (sosp_imp == nessuna || sosp_imp == vol_affari)
|
||||
if (sosp_imp == nessuna_sospensione || sosp_imp == vol_affari)
|
||||
{
|
||||
if (tipodoc == "BD" && tipodet == 9)
|
||||
{
|
||||
@ -3354,7 +3361,7 @@ void TLiquidazione_app::iva11_set_arr_phase_1(const TString& codatt)
|
||||
array.add(imponibile,TAB11_R9,LF_TAB1100B);
|
||||
}
|
||||
|
||||
if (tipocr == 4 && tipodoc != "AF" && (sosp_imp == nessuna || sosp_imp == vol_affari))
|
||||
if (tipocr == 4 && tipodoc != "AF" && (sosp_imp == nessuna_sospensione || sosp_imp == vol_affari))
|
||||
array.add(imponibile,TAB11_EC112);
|
||||
}
|
||||
|
||||
@ -3372,7 +3379,7 @@ void TLiquidazione_app::iva11_set_arr_phase_1(const TString& codatt)
|
||||
array.add(imposta,TAB11_L2BIS,LF_TAB1100B);
|
||||
}
|
||||
|
||||
if (!autofattura && (sosp_imp == nessuna || sosp_imp == vol_affari) && intra && tipoes_v == "22")
|
||||
if (!autofattura && (sosp_imp == nessuna_sospensione || sosp_imp == vol_affari) && intra && tipoes_v == "22")
|
||||
array.add(imponibile,TAB11_E52);
|
||||
|
||||
if (_isagricolo && (tipodoc != "CR" && tipodoc != "SC" && tipodoc != "RF" && tipodoc != "FS"))
|
||||
@ -4670,16 +4677,18 @@ void TLiquidazione_app::recalc_annual(const char* att, bool & first)
|
||||
reg = *_pim_codreg;
|
||||
look_iva(codiva); look_reg(reg);
|
||||
tiva = _iva->get("S1");
|
||||
const tiporeg treg = (tiporeg)_reg->get_long("I0");
|
||||
const bool corrisp = _reg->get_bool("B0");
|
||||
const tipo_sospensione simp = _reg->get_bool("B1") ? (tipo_sospensione)_reg->get_int("I9") : nessuna;
|
||||
|
||||
const TRegistro & reg = cached_registro(_reg->curr());
|
||||
const tipo_sospensione simp = reg.sospensione();
|
||||
const tiporeg treg = reg.tipo_registro();
|
||||
const bool corrisp = reg.corrispettivi();
|
||||
|
||||
if ( // ESCLUSI:
|
||||
strcmp(att, *_pim_codatt) != 0 ||
|
||||
treg != vendita || // non vendite
|
||||
tipocr == 4 || // cessioni beni ammortizzabili
|
||||
tiva == "NS" || // non soggetti
|
||||
simp == normale ||
|
||||
simp == sospensione_normale ||
|
||||
simp == liquidazione) // sospensione di imposta
|
||||
continue;
|
||||
|
||||
|
@ -597,10 +597,11 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
||||
diffinciva_acq = tab->get_real("R33");
|
||||
|
||||
const bool is_rit= tipodet != 0 && month == 13 && !rit_imp.is_zero(); //Se fattura in ritardo con tipo detr. != 0 e si sta calcolando l'annuale
|
||||
const tipo_sospensione sosp_imp = _reg->get_bool("B1") ? (tipo_sospensione) _reg->get_int("I9") : nessuna;
|
||||
issosp |= (sosp_imp != nessuna); // Setta il flag di presenza registri in sospensione (qualsiasi tipo: normale, vol_affari, liquidazione)
|
||||
|
||||
// ACHTUNG! Corrispettivi da ventileer possono ventilare ad un altro codiva; in tal caso si scrive quello
|
||||
const TRegistro & reg = cached_registro(_reg->curr());
|
||||
const tipo_sospensione sosp_imp = reg.sospensione();
|
||||
|
||||
issosp |= (sosp_imp != nessuna_sospensione); // Setta il flag di presenza registri in sospensione (qualsiasi tipo: sospensione_normale, vol_affari, liquidazione)
|
||||
// ACHTUNG! Corrispettivi da ventileer possono ventilare ad un altro codiva; in tal caso si scrive quello
|
||||
if (corrisp && other.full())
|
||||
{
|
||||
look_iva(other);
|
||||
|
@ -31,8 +31,6 @@
|
||||
#include <occas.h>
|
||||
#include <unloc.h>
|
||||
|
||||
enum tipo_sospensione { nessuna, sospensione_normale, vol_affari, liquidazione };
|
||||
|
||||
inline TStampa_registri_app& app() { return (TStampa_registri_app&)main_app(); }
|
||||
|
||||
// Righe da saltare nel footer per evitare di scrivere sulla perforazione
|
||||
@ -52,7 +50,10 @@ bool TStampa_registri_app::filter_func (const TRelation * r)
|
||||
const bool regst = mov.get_bool(MOV_REGST);
|
||||
if (regst) //il movimento e' gia'
|
||||
return false; //stato stampato in forma definitiva
|
||||
const tipo_sospensione ts = (tipo_sospensione)r->lfile("REG").get_int("I9");
|
||||
|
||||
const TRegistro & reg = cached_registro(codreg, annoiva);
|
||||
const tipo_sospensione ts = reg.sospensione();
|
||||
|
||||
if (ts == liquidazione) // Movimento valido solo ai fini della liquidazione
|
||||
return false;
|
||||
}
|
||||
@ -1275,25 +1276,28 @@ bool TStampa_registri_app::controlla_mov()
|
||||
{
|
||||
TLocalisamfile mov (LF_MOV);
|
||||
bool ok = true;
|
||||
tiporeg tipo;
|
||||
|
||||
TRecnotype rec = _tabreg->recno();
|
||||
for (mov.first(); ok && !mov.eof(); mov.next())
|
||||
{
|
||||
const TString4 reg = mov.get(MOV_REG);
|
||||
if (reg.empty()) continue; //non e' un movimento iva
|
||||
if (_stampa_tutti_i_registri)
|
||||
tipo = cerca_reg (reg);
|
||||
if ( (_stampa_tutti_i_registri && (tipo == vendita || tipo == acquisto || tipo == riepilogativo))
|
||||
|| (!_stampa_tutti_i_registri && reg == _codreg) )
|
||||
{
|
||||
const TString4 codreg = mov.get(MOV_REG);
|
||||
|
||||
if (codreg.full())
|
||||
{
|
||||
const TDate datareg = mov.get_date(MOV_DATAREG);
|
||||
const bool stampato = mov.get_bool(MOV_REGST);
|
||||
if ( datareg.year() < _annoIVA )
|
||||
{
|
||||
const long numreg = mov.get_long(MOV_NUMREG);
|
||||
if (!stampato)
|
||||
ok = false;
|
||||
const tiporeg tipo = cached_registro(codreg, datareg.year()).tipo_registro();
|
||||
|
||||
if (( _stampa_tutti_i_registri && (tipo == vendita || tipo == acquisto || tipo == riepilogativo)) ||
|
||||
(!_stampa_tutti_i_registri && codreg == _codreg))
|
||||
{
|
||||
const bool stampato = mov.get_bool(MOV_REGST);
|
||||
|
||||
if (datareg.year() < _annoIVA)
|
||||
{
|
||||
// const long numreg = mov.get_long(MOV_NUMREG);
|
||||
if (!stampato)
|
||||
ok = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1301,17 +1305,6 @@ bool TStampa_registri_app::controlla_mov()
|
||||
return ok;
|
||||
}
|
||||
|
||||
tiporeg TStampa_registri_app::cerca_reg(const TString& c)
|
||||
{
|
||||
tiporeg t = vendita;
|
||||
TString8 cod; cod << _annoIVA << c;
|
||||
_tabreg->zero();
|
||||
_tabreg->put("CODTAB", cod);
|
||||
if (_tabreg->read() == NOERR)
|
||||
t = (tiporeg)_tabreg->get_int ("I0");
|
||||
return t;
|
||||
}
|
||||
|
||||
int TStampa_registri_app::stampa_prospetto_IVA(int rr, int tipo_prosp)
|
||||
{
|
||||
const bool print_prec = tipo_prosp == 1;
|
||||
|
@ -21,16 +21,6 @@ enum tipo_stampa {
|
||||
rif_giornale = 4
|
||||
};
|
||||
|
||||
enum tiporeg {
|
||||
vendita = 1,
|
||||
acquisto = 2,
|
||||
riepilogativo = 3,
|
||||
incassi = 4,
|
||||
giornale = 5,
|
||||
sociale = 6,
|
||||
cespiti = 7
|
||||
};
|
||||
|
||||
class TStampa_registri_app : public TPrintapp
|
||||
{
|
||||
TSorted_cursor * _cur;
|
||||
@ -124,7 +114,6 @@ public:
|
||||
void stampa_progressivi(TRiga_array&, TRigaiva_array&, tiporeg, const bool);
|
||||
void set_choice_limits(TMask&);
|
||||
void build_ditte_sheet(int flags);
|
||||
tiporeg cerca_reg(const TString&);
|
||||
void fine_mese();
|
||||
void set_page_tot_reg();
|
||||
void send_message(char,const TFilename&,int);
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include "cg4501.h"
|
||||
#include "cg4500b.h"
|
||||
#include "cglib.h"
|
||||
|
||||
#include <recarray.h>
|
||||
#include <relation.h>
|
||||
@ -13,6 +14,7 @@ bool TAp_iva::mask_annoiva (TMask_field& f, KEY k)
|
||||
{
|
||||
const int annoiva = f.mask().get_int(F_ANNOIVA);
|
||||
const int annoivap = ini_get_int(CONFIG_DITTA, "cg", "AnLiIv");
|
||||
|
||||
if (annoivap > 0 && annoiva != annoivap + 1)
|
||||
return f.error_box(FR("Il nuovo anno esercizio IVA deve essere %d"), (annoivap+1));
|
||||
}
|
||||
@ -112,14 +114,6 @@ bool TAp_iva::apertura_iva()
|
||||
TCursor cur_reg(®, "", 1, &tabreg, &tabreg);
|
||||
|
||||
TRecnotype items = cur_reg.items();
|
||||
/*cur_reg.freeze();
|
||||
for (cur_reg = 0L; cur_reg.pos() < items; ++cur_reg)
|
||||
{
|
||||
const int tiporeg = tabreg.get_int("I0");
|
||||
if ((tiporeg == 1) || (tiporeg == 2) || (tiporeg == 3) || (tiporeg==9))
|
||||
reg.remove();
|
||||
}
|
||||
cur_reg.freeze(FALSE);*/
|
||||
|
||||
tabreg.zero();
|
||||
tabreg.put ("CODTAB", _annop);
|
||||
@ -128,8 +122,9 @@ bool TAp_iva::apertura_iva()
|
||||
cur_reg.freeze();
|
||||
for (cur_reg = 0L; cur_reg.pos() < items; ++cur_reg)
|
||||
{
|
||||
const int tiporeg = tabreg.get_int("I0");
|
||||
if ( (tiporeg == 1)||(tiporeg == 2)||(tiporeg==3)||(tiporeg==9))
|
||||
const tiporeg tipo = cached_registro(cur_reg.curr()).tipo_registro();
|
||||
|
||||
if ( (tipo == vendita) || (tipo == acquisto) || (tipo == riepilogativo) || (tipo == giornale_magazzino))
|
||||
{
|
||||
TString8 cod = tabreg.get("CODTAB");
|
||||
cod.overwrite(annoiva);
|
||||
|
@ -547,7 +547,7 @@ bool TApertura_chiusura::set()
|
||||
(*_cur) = 0L;
|
||||
_sld->set_anno_es(_annoesch);
|
||||
_sld->set_movprovv(FALSE);
|
||||
_sld->set_tipo_saldo(chiusura);
|
||||
_sld->set_tipo_saldo(saldo_chiusura);
|
||||
_sld->set_movimentato(TRUE);
|
||||
|
||||
costi ();
|
||||
@ -565,7 +565,7 @@ bool TApertura_chiusura::set()
|
||||
_totale_saldo = ZERO;
|
||||
|
||||
_sld->set_anno_es(_annoesap);
|
||||
_sld->set_tipo_saldo(apertura);
|
||||
_sld->set_tipo_saldo(saldo_apertura);
|
||||
_sld->set_movimentato(TRUE);
|
||||
|
||||
*_cur = 0l;
|
||||
|
@ -144,6 +144,46 @@ enum cgrowtypes
|
||||
cgrowtype_spese = 'G' // Spese del saladaconto
|
||||
};
|
||||
|
||||
enum tipo_sospensione
|
||||
{
|
||||
nessuna_sospensione,
|
||||
sospensione_normale,
|
||||
vol_affari,
|
||||
liquidazione
|
||||
};
|
||||
|
||||
enum tipobil
|
||||
{
|
||||
DataLimite = 1,
|
||||
UltimaImmissione
|
||||
};
|
||||
|
||||
enum tiposal
|
||||
{
|
||||
saldo_normale,
|
||||
saldo_apertura,
|
||||
saldo_chiusura
|
||||
};
|
||||
|
||||
enum TTipo_data
|
||||
{
|
||||
Registrazione,
|
||||
Competenza,
|
||||
CostiRicavi
|
||||
};
|
||||
|
||||
enum tiporeg
|
||||
{
|
||||
vendita = 1,
|
||||
acquisto = 2,
|
||||
riepilogativo = 3,
|
||||
incassi = 4,
|
||||
giornale = 5,
|
||||
sociale = 6,
|
||||
cespiti = 7,
|
||||
giornale_magazzino = 9
|
||||
};
|
||||
|
||||
inline bool check_mov(const int tipomovprovv, const TString & provvis)
|
||||
{
|
||||
return ((tipomovprovv & 0x1) && provvis.blank()) ||
|
||||
@ -242,10 +282,13 @@ public:
|
||||
|
||||
virtual bool ok() const { return !_rec.empty(); }
|
||||
|
||||
int tipo() const;
|
||||
const TString & codice() const { return _rec.get("CODTAB"); }
|
||||
int tipo() const { return _rec.get_int("I0"); }
|
||||
TipoIVA iva() const;
|
||||
bool corrispettivi() const;
|
||||
bool corrispettivi() const { return _rec.get_bool("B0");}
|
||||
bool sospeso() const { return _rec.get_bool("B1");}
|
||||
tiporeg tipo_registro() const { return (tiporeg) tipo(); }
|
||||
tipo_sospensione sospensione() const { return sospeso() ? (tipo_sospensione) _rec.get_int("I9") : nessuna_sospensione; }
|
||||
const TString& name() const;
|
||||
int year() const;
|
||||
TDate last_reg() const { return _rec.get_date("D2"); }
|
||||
@ -254,7 +297,6 @@ public:
|
||||
long protocol() const { return _rec.get_long("I5"); }
|
||||
const TString& attivita() const { return _rec.get("S8"); }
|
||||
|
||||
|
||||
bool agenzia_viaggi() const;
|
||||
const TString& tipo_attivita() const;
|
||||
bool attivita_mista() const { const char a = tipo_attivita()[0]; return a == 'E'; }
|
||||
@ -271,6 +313,9 @@ public:
|
||||
virtual ~TRegistro() {}
|
||||
};
|
||||
|
||||
const TRegistro & cached_registro(const char * codreg, const int year = 0);
|
||||
inline const TRegistro & cached_registro(const TRectype & reg) { return cached_registro(reg.get("CODTAB").smid(4), atoi(reg.get("CODTAB").sleft(4))); }
|
||||
|
||||
class TLibro_giornale : public TRegistro
|
||||
{
|
||||
public:
|
||||
@ -287,8 +332,7 @@ class TCodiceIVA;
|
||||
class TCausale : public TArray
|
||||
{
|
||||
TRectype _rec;
|
||||
TRegistro _reg;
|
||||
|
||||
int _year;
|
||||
TipoIVA _iva;
|
||||
bool _corrisp;
|
||||
char _sezione_clifo, _sezione_ritsoc, _sezione_ritfis, _sezione_revcharge, _provvisorio;
|
||||
@ -313,8 +357,9 @@ public:
|
||||
bool num_doc() const;
|
||||
bool apertura() const;
|
||||
bool chiusura() const;
|
||||
bool sezionale() const;
|
||||
bool valuta() const;
|
||||
tiposal tipo_saldo() const { return apertura() ? saldo_apertura : (chiusura() ? saldo_chiusura : saldo_normale); } bool sezionale() const;
|
||||
tipo_sospensione sospensione() const { return reg().sospensione(); }
|
||||
bool valuta() const;
|
||||
bool intra() const;
|
||||
bool valintra() const;
|
||||
bool soloiva() const;
|
||||
@ -324,11 +369,11 @@ public:
|
||||
bool ril_fat_em_ric() const;
|
||||
bool datareg_prec() const;
|
||||
char provvisorio() const { return _provvisorio; }
|
||||
const TString& causale_collegata() const;
|
||||
const TString& causale_reg_iva() const;
|
||||
const TString& tipo_doc() const;
|
||||
|
||||
TRegistro& reg() const { return (TRegistro&)_reg; }
|
||||
const TString & causale_collegata() const;
|
||||
const TString & causale_reg_iva() const;
|
||||
const TString & tipo_doc() const;
|
||||
const TString & codice_registro() const { return _rec.get(CAU_REG); }
|
||||
const TRegistro& reg() const { return cached_registro(codice_registro(), _year); }
|
||||
TipoIVA iva() const { return _iva; }
|
||||
int regime_speciale() const;
|
||||
bool corrispettivi() const { return _corrisp; }
|
||||
@ -362,6 +407,8 @@ public:
|
||||
};
|
||||
|
||||
const TCausale & cached_causale(const char * codcaus, const int year = 0);
|
||||
inline const TCausale & cached_causale(const TRectype & caus, const int year = 0) { return cached_causale(caus.get(CAU_CODCAUS), year); }
|
||||
|
||||
|
||||
class TCodiceIVA : public TRectype
|
||||
{
|
||||
@ -548,10 +595,6 @@ public:
|
||||
TRectype* saldi() const;
|
||||
};
|
||||
|
||||
enum tipobil { DataLimite = 1, UltimaImmissione };
|
||||
enum tiposal { normale, apertura, chiusura };
|
||||
enum TTipo_data { Registrazione, Competenza, CostiRicavi };
|
||||
|
||||
const TDate get_date_mov(const TRectype & mov, TTipo_data tipo_data);
|
||||
|
||||
class TSaldo : public TObject
|
||||
@ -962,7 +1005,8 @@ public:
|
||||
const TRectype& cg(int i, bool create = true) const { return (const TRectype &) ((TRecord_array &) cg()).row(i, create); }
|
||||
const TRectype& iva(int i, bool create = true) const { return (const TRectype &)((TRecord_array &) iva()).row(i, create); }
|
||||
int cg_rows() const { return cg().rows(); }
|
||||
int iva_rows() const { return iva().rows(); }
|
||||
int iva_rows() const { return iva().rows(); }
|
||||
bool solo_IVA() const { return iva_rows() > 0 && cg_rows() == 0; }
|
||||
|
||||
virtual int readat(TBaseisamfile& f, TRecnotype nrec, word lockop = _nolock);
|
||||
virtual int read(TBaseisamfile & f, word op = _isequal, word lockop = _nolock);
|
||||
@ -1481,6 +1525,7 @@ public:
|
||||
|
||||
char tipo() const { return get_char(CLI_TIPOCF); }
|
||||
long codice() const { return get_long(CLI_CODCF); }
|
||||
int alleg() const { return get_int(CLI_ALLEG); }
|
||||
bool ok() const { return !empty(); }
|
||||
|
||||
virtual int read(const TRectype& rec, word op = _isequal, word lockop = _nolock);
|
||||
@ -1502,5 +1547,6 @@ public:
|
||||
};
|
||||
|
||||
const TCli_for & cached_clifor(const char tipo, const long codice);
|
||||
const TCli_for & cached_clifor(int file, const TRectype & rec);
|
||||
|
||||
#endif
|
@ -50,13 +50,8 @@ bool TCausale::reread()
|
||||
{
|
||||
const TString4 cod = codice();
|
||||
|
||||
if (cod.full())
|
||||
{
|
||||
const int year = _reg.year();
|
||||
|
||||
if (year > 0)
|
||||
return read(cod, year);
|
||||
}
|
||||
if (cod.full() && _year > 0)
|
||||
return read(cod, _year);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -68,6 +63,7 @@ bool TCausale::read(const char* cod, int year)
|
||||
_iva = iva_errata; // Delete misc info
|
||||
_sezione_clifo = _sezione_ritsoc = _provvisorio = ' ';
|
||||
_corrisp = false;
|
||||
_year = year;
|
||||
|
||||
if (cod && *cod > ' ')
|
||||
{
|
||||
@ -89,18 +85,18 @@ bool TCausale::read(const char* cod, int year)
|
||||
add(rcaus.curr(), riga);
|
||||
}
|
||||
|
||||
const TString4 codreg(_rec.get(CAU_REG));
|
||||
/* const TString4 codreg(_rec.get(CAU_REG));
|
||||
const bool ok = _reg.read(codreg, year); // Read register
|
||||
if (!ok && codreg.not_empty())
|
||||
return error_box(FR("Non esiste il registro '%s' del %d"),
|
||||
(const char*)codreg, year);
|
||||
(const char*)codreg, year); */
|
||||
calcIVA();
|
||||
}
|
||||
else
|
||||
{
|
||||
_iva = nessuna_iva; // Clear IVA data
|
||||
_corrisp = false;
|
||||
_reg.read("", year);
|
||||
// _reg.read("", year);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -359,8 +355,9 @@ void TCausale::calcIVA()
|
||||
const TRectype& tpd = cache().get("%TPD", td);
|
||||
if (!tpd.empty())
|
||||
{
|
||||
i = (TipoIVA)tpd.get_int("I0"); // IVA acquisti, vendite, generica
|
||||
const TipoIVA ri = _reg.iva();
|
||||
i = (TipoIVA) tpd.get_int("I0"); // IVA acquisti, vendite, generica
|
||||
const TipoIVA ri = reg().iva();
|
||||
|
||||
if (i == iva_generica)
|
||||
i = ri;
|
||||
if (i != ri)
|
||||
@ -915,18 +912,6 @@ TRegistro& TRegistro::operator =(const TRegistro& r)
|
||||
return *this;
|
||||
}
|
||||
|
||||
int TRegistro::tipo() const
|
||||
{
|
||||
const int t = _rec.get_int("I0");
|
||||
return t;
|
||||
}
|
||||
|
||||
bool TRegistro::corrispettivi() const
|
||||
{
|
||||
const bool c = _rec.get_bool("B0");
|
||||
return c;
|
||||
}
|
||||
|
||||
TipoIVA TRegistro::iva() const
|
||||
{
|
||||
TipoIVA i = (TipoIVA)tipo();
|
||||
@ -1055,6 +1040,49 @@ bool TRegistro::update(long protiva, const TDate& datareg)
|
||||
return updated;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TCache_registri
|
||||
///////////////////////////////////////////////////////////
|
||||
class TCache_registri : public TCache
|
||||
{
|
||||
protected:
|
||||
virtual TObject* key2obj(const char* key);
|
||||
|
||||
public:
|
||||
const TRegistro & registro(const char* key, const int anno = 0);
|
||||
|
||||
TCache_registri() : TCache() { }
|
||||
virtual ~TCache_registri() { }
|
||||
};
|
||||
|
||||
TObject* TCache_registri::key2obj(const char* key)
|
||||
{
|
||||
TToken_string k(key);
|
||||
TString16 cod;
|
||||
|
||||
k.get(0, cod);
|
||||
cod.trim();
|
||||
int year;
|
||||
|
||||
k.get(1, year);
|
||||
return new TRegistro(cod, year);
|
||||
}
|
||||
|
||||
const TRegistro & TCache_registri::registro(const char* key, const int anno)
|
||||
{
|
||||
TToken_string k(key);
|
||||
|
||||
k.add(anno);
|
||||
return (const TRegistro &)*objptr(k);
|
||||
}
|
||||
|
||||
const TRegistro & cached_registro(const char * codreg, int year)
|
||||
{
|
||||
HIDDEN TCache_registri __cache_registri;
|
||||
|
||||
return __cache_registri.registro(codreg, year);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Libro giornale
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -804,7 +804,7 @@ void TTab_conti::aggiorna_conto(const TBill& tcon,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (movap == apertura)
|
||||
if (movap == saldo_apertura)
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->saldo() += i;
|
||||
@ -813,7 +813,7 @@ void TTab_conti::aggiorna_conto(const TBill& tcon,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (movap == chiusura)
|
||||
if (movap == saldo_chiusura)
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->saldofin() += i;
|
||||
@ -846,7 +846,7 @@ void TTab_conti::aggiorna_conto(const TBill& tcon,
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TSaldo_agg::TSaldo_agg() : _anno_es(0), _data_ulmov(""), _num_ulmov(0l),
|
||||
_movap(normale), _provv(' '), _movimentato(false)
|
||||
_movap(saldo_normale), _provv(' '), _movimentato(false)
|
||||
{}
|
||||
|
||||
void TSaldo_agg::aggiorna(const TBill& tc, const TImporto& imp, bool somma, bool scaricato)
|
||||
|
@ -211,10 +211,8 @@ bool is_IVAxCassa(const TRectype& mov)
|
||||
{
|
||||
if (mov.get_bool(MOV_LIQDIFF) || !mov.get_bool(MOV_IVAXCASSA))
|
||||
return false;
|
||||
|
||||
if (!mov_has_imposte(mov))
|
||||
return false;
|
||||
|
||||
const TDate data_reg = mov.get(MOV_DATAREG);
|
||||
// const TDate data_doc = mov.get(MOV_DATADOC);
|
||||
// const TDate data_rif = data_doc.ok() && data_doc < data_reg ? data_doc : data_reg;
|
||||
|
Loading…
x
Reference in New Issue
Block a user