Patch level : 12.0 1030

Files correlati     : cg1.exe
Commento            :

Corretta stampa bilanci di verifica
This commit is contained in:
Alessandro Bonazzi 2021-02-09 03:30:49 +01:00
parent 0bc9462312
commit e5c7066e37

View File

@ -245,8 +245,8 @@ bool TStampa_bilanci::mask_datalim (TMask_field& f, KEY k)
if (!esercizi().exist(data) || (esercizio(data).codice() != anno)) if (!esercizi().exist(data) || (esercizio(data).codice() != anno))
return f.error_box (TR("La data limite deve appartenere all'esercizio indicato")); return f.error_box (TR("La data limite deve appartenere all'esercizio indicato"));
} }
else // else
m.field(F_DATALIM).set(esercizio(anno).fine()); // m.field(F_DATALIM).set(esercizio(anno).fine());
app()._annoapp = anno; app()._annoapp = anno;
} }
else //anno == 0 else //anno == 0
@ -280,8 +280,8 @@ bool TStampa_bilanci::mask_dataini(TMask_field& f, KEY k)
if (!esercizi().exist(data) || (esercizio(data).codice() != anno)) if (!esercizi().exist(data) || (esercizio(data).codice() != anno))
return f.error_box(TR("La data iniziale deve appartenere all'esercizio indicato")); return f.error_box(TR("La data iniziale deve appartenere all'esercizio indicato"));
} }
else // else
m.field(F_DATALIM).set(esercizio(anno).inizio()); // m.field(F_DATAINI).set(esercizio(anno).inizio());
app()._annoapp = anno; app()._annoapp = anno;
} }
else //anno == 0 else //anno == 0
@ -707,7 +707,7 @@ bool TStampa_bilanci::bil_sez_contr()
if (_tipo_stampa == 1) //bil. a sez. contrapposte per data limite if (_tipo_stampa == 1) //bil. a sez. contrapposte per data limite
{ {
#ifdef CONT_SEP #ifdef CONT_SEP
movimentato = sld.saldo_cont_sep(_tipo_data,g, c, s, _annoes, _datalim, indbil_conto, _cont_sep, _stampa_mov_prov) ; movimentato = sld.saldo_cont_sep(_tipo_data,g, c, s, _annoes, _al, indbil_conto, _cont_sep, _stampa_mov_prov) ;
#else #else
movimentato = sld.data_limite_bilancio(_tipo_data, g, c, s, _dataini, _al, indbil_conto, _stampa_mov_prov); movimentato = sld.data_limite_bilancio(_tipo_data, g, c, s, _dataini, _al, indbil_conto, _stampa_mov_prov);
#endif #endif
@ -881,7 +881,7 @@ bool TStampa_bilanci::ricerca_sottoc_clifo(int g,int c, bool compensa, int indbi
if (_tipo_stampa == 1) //bil. a sez. contrapposte per data limite if (_tipo_stampa == 1) //bil. a sez. contrapposte per data limite
{ {
#ifdef CONT_SEP #ifdef CONT_SEP
movimentato = sld.saldo_cont_sep(_tipo_data, g, c, s, _annoes, _datalim, indbil_conto, _cont_sep, _stampa_mov_prov); movimentato = sld.saldo_cont_sep(_tipo_data, g, c, s, _annoes, _al, indbil_conto, _cont_sep, _stampa_mov_prov);
#else #else
movimentato = sld.data_limite_bilancio(_tipo_data ,g,c,s,_dataini,_al,indbil_conto,_stampa_mov_prov); movimentato = sld.data_limite_bilancio(_tipo_data ,g,c,s,_dataini,_al,indbil_conto,_stampa_mov_prov);
#endif #endif
@ -1212,7 +1212,7 @@ bool TStampa_bilanci::bil_verifica()
_indbil = indbil_conto; _indbil = indbil_conto;
if (_tipo_stampa == 1) //bil. di verifica per data limite if (_tipo_stampa == 1) //bil. di verifica per data limite
{ {
//modifica del 21/11/95
_mov_ap = false; _mov_ap = false;
//modifica del 19/06/95 //modifica del 19/06/95
movimentato = calcola(g,c,s); movimentato = calcola(g,c,s);
@ -1225,67 +1225,31 @@ bool TStampa_bilanci::bil_verifica()
saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere; saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere;
else //discorso flag "movimentato" (video) else //discorso flag "movimentato" (video)
{ {
TLocalisamfile saldi(LF_SALDI); // W96SALDI sld.ultima_immissione_verifica(_annoes, g, c, s, _indbil, _stampa_mov_prov);
saldi.zero(); // Modifica SALDI per movimenti saldo_iniziale = sld.saldoini();
saldi.put(SLD_ANNOES, _annoes); // scaricati del 05-06-96 if (saldo_iniziale > ZERO)
saldi.put(SLD_FLSCA, false); // Ho aggiunto saldi.put(SLD_FLSCA, false); _saldo_ini_dare = saldo_iniziale;
saldi.put(SLD_GRUPPO, g); // In questo modo considero il record con else
saldi.put(SLD_CONTO, c); // la somma fra progressivi normali e scaricati _saldo_ini_avere = -saldo_iniziale;
saldi.put(SLD_SOTTOCONTO, s); }
if (saldi.read() == NOERR)
{
const real ss = saldi.get_real(SLD_SALDO);
if (ss.is_zero())
{
if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5))
{
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov);
//modifica del 21/11/95
if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale;
else
_saldo_ini_avere = -saldo_iniziale;
//fine
}
}
else
{
const char fsi = saldi.get_char(SLD_FLAGSALINI);
if (fsi == 'D')
{
saldo_iniziale = ss;
_saldo_ini_dare = ss;
}
else
{
saldo_iniziale = -ss;
_saldo_ini_avere = ss;
}
}
}
}
} }
else // !movimentato -> _mov_ap e' di sicuro false else // !movimentato -> _mov_ap e' di sicuro false
{ {
if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5)) if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5))
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov); sld.ultima_immissione_verifica(g, c, s, _indbil, _stampa_mov_prov);
//modifica del 21/11/95 saldo_iniziale = sld.saldoini();
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
else _saldo_ini_avere = -saldo_iniziale; else
//fine _saldo_ini_avere = -saldo_iniziale;
if (_stampav == 1 && sld.significativo()) if (_stampav == 1 && sld.significativo())
movimentato = true; movimentato = true;
} }
} }
} }
if (movimentato || _stampav != 1) if (movimentato || _stampav != 1)
{ {
_nuovo_tot_saldo_d += _mov_periodo_dare; _nuovo_tot_saldo_d += _mov_periodo_dare;
_nuovo_tot_saldo_a += _mov_periodo_avere; _nuovo_tot_saldo_a += _mov_periodo_avere;
_nuovo_tot_saldo_d += _saldo_ini_dare; _nuovo_tot_saldo_d += _saldo_ini_dare;
@ -1474,6 +1438,7 @@ bool TStampa_bilanci::calcola(int g, int c, long s)
int annoe; int annoe;
bool conto_mov = false; bool conto_mov = false;
TDecoder causali(LF_CAUSALI, CAU_MOVAP); TDecoder causali(LF_CAUSALI, CAU_MOVAP);
_mov_periodo_dare = ZERO; _mov_periodo_dare = ZERO;
_mov_periodo_avere = ZERO; _mov_periodo_avere = ZERO;
@ -1486,12 +1451,14 @@ bool TStampa_bilanci::calcola(int g, int c, long s)
// TDate data_start = _dataini; // TDate data_start = _dataini;
// Calcolo progressivi precedenti: // Calcolo progressivi precedenti:
// e non è indicato l'anno esercizio, prende il primo giorno dell'anno indicato da _datada // e non è indicato l'anno esercizio, prende il primo giorno dell'anno indicato da _datada
if (_annoes == 0 && !_dataini.ok()) if (_annoes == 0)
{ {
_dataini = _dal; _dataini = _dal;
_dataini.set_day(1); _dataini.set_day(1);
_dataini.set_month(1); _dataini.set_month(1);
} }
else
_dataini = esercizi().esercizio(_annoes).inizio();
TCursor cur(new TRelation(LF_RMOV), "", 2); TCursor cur(new TRelation(LF_RMOV), "", 2);
TRectype& rmov = cur.file().curr(); TRectype& rmov = cur.file().curr();
@ -1517,67 +1484,55 @@ bool TStampa_bilanci::calcola(int g, int c, long s)
const TDate data = get_date_mov(mov, _tipo_data); const TDate data = get_date_mov(mov, _tipo_data);
const TString4 provvis = mov.get(MOV_PROVVIS); const TString4 provvis = mov.get(MOV_PROVVIS);
const TString& codcaus = mov.get(MOV_CODCAUS); const TString& codcaus = mov.get(MOV_CODCAUS);
const TCausale & caus = cached_causale(codcaus);
const char causap = causali.decode(codcaus)[0]; const char causap = causali.decode(codcaus)[0];
if (!_quadratura && causap == 'C') if (_quadratura || !caus.chiusura())
{ {
// Si tratta di causale di chiusura: const char sezione = rmov.get_char(RMV_SEZIONE);
// Non e' richiesta la quadratura con il Libro Giornale (Modifica const real importo = rmov.get_real(RMV_IMPORTO);
// del 18-06-96 richiesta da Patrizia in seguito alla modifica dei SALDI)
continue;
}
const char sezione = rmov.get_char(RMV_SEZIONE); if (importo != ZERO)
const real importo = rmov.get_real(RMV_IMPORTO);
if (importo.is_zero())
continue;
//calcolo i movimenti del periodo
if ( data >= _dal && data <= _al)
if ((causap == 'A' && _dataini.ok() && _dataini != _dal) ||
(causap != 'A'))
if (check_mov(_stampa_mov_prov, provvis))
{
conto_mov = true;
if (sezione == 'D')
_mov_periodo_dare += importo;
else
_mov_periodo_avere += importo;
_u_max = fnc_max(_u_max, data);
if (causap == 'A')
_mov_ap = true;
}
//il saldo inizio es. e' dato dall'importo dare - importo avere di quei movimenti che hanno causale == apertura e data reg >= data inizio es. e <= data limite sup.
if (_dal == _dataini) //calcolo il saldo iniziale
{
if ((_stampa_mov_prov & 0x1) && (causap == 'A'))
{ {
if ( (data >= _dataini) && (data <= _al) ) //calcolo i movimenti del periodo
if (check_mov(_stampa_mov_prov, provvis))
{ {
if (sezione == 'D') conto_mov = true;
_saldo_ini_dare += importo;
else
_saldo_ini_avere += importo;
_u_max = fnc_max(_u_max, data); _u_max = fnc_max(_u_max, data);
conto_mov = _mov_ap = true; if ((data >= _dataini) && (data < _dal)) //calcolo i progressivi precedenti
{
_mov_ap |= caus.apertura();
if (sezione == 'D')
_prg_prec_dare += importo;
else
_prg_prec_avere += importo;
}
else
if (data >= _dal && data <= _al && !caus.apertura())
{
if (sezione == 'D')
_mov_periodo_dare += importo;
else
_mov_periodo_avere += importo;
}
} }
} //il saldo inizio es. e' dato dall'importo dare - importo avere di quei movimenti che hanno causale == apertura e data reg >= data inizio es. e <= data limite sup.
} if (_dal == _dataini) //calcolo il saldo iniziale
else {
if ( (data >= _dataini) && (data < _dal) ) //calcolo i progressivi precedenti if ((_stampa_mov_prov & 0x1) && caus.apertura() &&
if (check_mov(_stampa_mov_prov, provvis)) (data >= _dataini) && (data <= _al))
{ {
if (sezione == 'D') _mov_ap = true;
_prg_prec_dare += importo; conto_mov = true;
else _u_max = fnc_max(_u_max, data);
_prg_prec_avere += importo; if (sezione == 'D')
_u_max = fnc_max(_u_max, data); _saldo_ini_dare += importo;
conto_mov = true; else
if (causap == 'A') _saldo_ini_avere += importo;
_mov_ap = true; }
} }
}
}
} }
return conto_mov; return conto_mov;
} }
@ -1603,9 +1558,8 @@ bool TStampa_bilanci::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_fin
if (_tipo_stampa == 1) //bil. di verifica per data limite if (_tipo_stampa == 1) //bil. di verifica per data limite
{ {
//modifica del 21/11/1995
_mov_ap = false; _mov_ap = false;
//modifica del 19/06. Vedi appunti per capire
bool movimentato = calcola(g,c,s); bool movimentato = calcola(g,c,s);
if (_stampa_mov_prov & 0x1) if (_stampa_mov_prov & 0x1)
@ -1613,77 +1567,27 @@ bool TStampa_bilanci::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_fin
if (movimentato) if (movimentato)
{ {
if (_mov_ap) if (_mov_ap)
{
saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere; saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere;
}
else else
{ {
TLocalisamfile saldi(LF_SALDI); sld.ultima_immissione_verifica(_annoes, g, c, s, _indbil, _stampa_mov_prov);
saldi.zero(); saldo_iniziale = sld.saldoini();
saldi.put(SLD_ANNOES,_annoes); if (saldo_iniziale > ZERO)
saldi.put(SLD_FLSCA, false); // W96SALDI del 05-06-96 _saldo_ini_dare = saldo_iniziale;
saldi.put(SLD_GRUPPO,g); // Ho aggiunto in chiave saldi.put(SLD_FLSCA, false); else
saldi.put(SLD_CONTO,c); // in questa maniera reperisco il record dei saldi _saldo_ini_avere = -saldo_iniziale;
saldi.put(SLD_SOTTOCONTO,s); // contenente la somma degli scaricati e non scaricati
if (saldi.read() == NOERR)
{
//se il saldo iniziale e' diverso da zero non lo devo considerare
//perche' l'ho gia' considerato nella funzione calcola
const real ss = saldi.get_real(SLD_SALDO);
if (ss.is_zero())
{
if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5))
{
saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov);
//modifica del 21/11/1995
if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale;
else
_saldo_ini_avere = -saldo_iniziale;
//fine
}
}
else
{
const char fsi = saldi.get_char(SLD_FLAGSALINI);
if (fsi == 'D')
{
saldo_iniziale = ss;
_saldo_ini_dare = ss;
}
else
{
saldo_iniziale = -ss;
_saldo_ini_avere = ss;
}
}
}
else
if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5))
{
saldo_iniziale += sld.saldofin_esprec(_annoes, g, c, s, false, _stampa_mov_prov);
//modifica del 21/11/1995
if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale;
else
_saldo_ini_avere = -saldo_iniziale;
//fine
}
} }
} }
else else
{ {
if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5)) if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5))
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov); sld.ultima_immissione_verifica(g, c, s, _indbil, _stampa_mov_prov);
//modifica del 21/11/1995 saldo_iniziale = sld.saldoini();
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
else else
_saldo_ini_avere = -saldo_iniziale; _saldo_ini_avere = -saldo_iniziale;
//fine
movimentato = sld.significativo(); movimentato = sld.significativo();
} }
} }
@ -2109,9 +2013,8 @@ void TStampa_bilanci::leggi_clifo(const TArray& gccf)
if (_tipo_stampa == 1) //bilancio di verifica per data limite if (_tipo_stampa == 1) //bilancio di verifica per data limite
{ {
//modifica del 21/11/1995
_mov_ap = false; _mov_ap = false;
//modifica del 19/06/95 //modifica del 19/06/95
_indbil = cerca_indbil(g,c); _indbil = cerca_indbil(g,c);
movimentato = calcola(g,c,codcf); movimentato = calcola(g,c,codcf);
@ -2120,12 +2023,13 @@ void TStampa_bilanci::leggi_clifo(const TArray& gccf)
if (_indbil == 1 || _indbil == 2 || _indbil == 5) if (_indbil == 1 || _indbil == 2 || _indbil == 5)
if (_annoes != 0) //cioe' se sto ragionando per competenza if (_annoes != 0) //cioe' se sto ragionando per competenza
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,codcf,false,_stampa_mov_prov); sld.ultima_immissione_verifica(_annoes, g, c, codcf, _indbil, _stampa_mov_prov);
if (saldo_iniziale > ZERO) saldo_iniziale = sld.saldoini();
_saldo_ini_dare = saldo_iniziale; if (saldo_iniziale > ZERO)
else _saldo_ini_avere = -saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
else
_saldo_ini_avere = -saldo_iniziale;
} }
if (movimentato) if (movimentato)
{ {
//modifica del 21/11/1995 //modifica del 21/11/1995
@ -2133,33 +2037,14 @@ void TStampa_bilanci::leggi_clifo(const TArray& gccf)
saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere; saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere;
else else
{ {
TLocalisamfile saldi(LF_SALDI); sld.ultima_immissione_verifica(g, c, codcf, _indbil, _stampa_mov_prov);
saldi.zero(); saldo_iniziale = sld.saldoini();
saldi.put(SLD_ANNOES, _annoes); // W96SALDI del 05-06-96 if (saldo_iniziale > ZERO)
saldi.put(SLD_FLSCA, false); _saldo_ini_dare = saldo_iniziale;
saldi.put(SLD_GRUPPO, g); else
saldi.put(SLD_CONTO, c); _saldo_ini_avere = -saldo_iniziale;
saldi.put(SLD_SOTTOCONTO, codcf);
if (saldi.read() == NOERR)
{
const real s = saldi.get_real(SLD_SALDO);
if (_stampa_mov_prov & 0x1)
if (_indbil == 1 || _indbil == 2 || _indbil == 5)
if (s.is_zero() && _annoes != 0) //competenza!!!
{
saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,codcf,false,_stampa_mov_prov);
//modifica del 21/11/1995
if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale;
else _saldo_ini_avere = -saldo_iniziale;
//fine
}
}
} }
} }
//fine modifica del 19/06/95
//movimentato = calcola(g,c,codcf);
if (movimentato || _stampac != 1 || saldo_iniziale != ZERO) if (movimentato || _stampac != 1 || saldo_iniziale != ZERO)
{ {
if (_dal == _dataini) if (_dal == _dataini)
@ -3468,11 +3353,7 @@ void TStampa_bilanci::stampa_un_bilancio(const TMask& m)
_verifica = m.get_int(F_VERIFICA); //tipo di bilancio di verifica da stampare _verifica = m.get_int(F_VERIFICA); //tipo di bilancio di verifica da stampare
_print_full_code = _verifica == 1 && m.get_bool(F_PRINT_FULL_CODE); _print_full_code = _verifica == 1 && m.get_bool(F_PRINT_FULL_CODE);
_tipo_stampa = m.get_int(F_STAMPA); _tipo_stampa = m.get_int(F_STAMPA);
if (_tipo_stampa == 1)
{
_dal = m.get_date(F_DATAINI);
_al = m.get_date(F_DATALIM);
}
if ((_verifica == 1) || (_verifica == 2)) //bilancio di verifica:1bilancio,2saldi mastro if ((_verifica == 1) || (_verifica == 2)) //bilancio di verifica:1bilancio,2saldi mastro
{ {
_stampav = atoi(m.get(F_STAMPAV)); _stampav = atoi(m.get(F_STAMPAV));
@ -3527,6 +3408,16 @@ bool TStampa_bilanci::set_print(int)
_quadratura = m.get_bool(F_QUADRATURA); _quadratura = m.get_bool(F_QUADRATURA);
_hide_clifo = m.get_bool(F_HIDE_CLIFO); _hide_clifo = m.get_bool(F_HIDE_CLIFO);
_noseparator = m.get_bool(F_SEPARATOR); _noseparator = m.get_bool(F_SEPARATOR);
_dal = m.get_date(F_DATAINI);
_al = m.get_date(F_DATALIM);
if (_annoes != 0)
{
if (!_dal.ok())
_dal = esercizi().esercizio(_annoes).inizio();
if (!_al.ok())
_al = esercizi().esercizio(_annoes).fine();
}
_tipo_data = (_annoes == 0 ? Registrazione : (m.get_bool(F_COMPCR) ? CostiRicavi : Competenza)); _tipo_data = (_annoes == 0 ? Registrazione : (m.get_bool(F_COMPCR) ? CostiRicavi : Competenza));
#ifdef CONT_SEP #ifdef CONT_SEP
_cont_sep = m.get(F_CONTSEP); _cont_sep = m.get(F_CONTSEP);