Correzione errori

git-svn-id: svn://10.65.10.50/trunk@2077 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1995-11-03 09:44:29 +00:00
parent 0dc01b5fff
commit 64affc68db
8 changed files with 680 additions and 105 deletions

View File

@ -278,7 +278,7 @@ void CG0400_application::look_pim()
if (tipoiva == "VE") continue; //i codici iva di tipo "VE"
//Fine //non devono essere stampati
while (classify_pim(pim.curr(), imponibile, imposta, tipo))
while (classify_pim(pim.curr(), imponibile, imposta, tipo, TRUE))
{
switch(tipo)
{
@ -352,7 +352,7 @@ void CG0400_application::cerca_i_pim()
impo = impos = ZERO;
while (classify_pim(pim.curr(), imponibile, imposta, tipo))
while (classify_pim(pim.curr(), imponibile, imposta, tipo, FALSE))
{
switch(tipo)
{
@ -1014,7 +1014,7 @@ void CG0400_application::preprocess_header()
/*
set_header (soh++, "Riepilogo progressivi IVA del periodo %s %d Cod. Att. %s %s", itom(_mese), _anno, (const char*) _cod_att, (const char*) descr);
set_header (soh++, (const char *) sep);
*/
*/
if (_st_inizio_anno)
{
if (_prima_pagina)

View File

@ -130,6 +130,7 @@ public:
bool calcola(int,int,long);
void leggi_pcon(); // Inizializza i TArray C/F
void crea_sort_clifo();
void leggi_clifo(const TArray&);
void init_sort();
void leggi_sort();
void riempi_record(char,int,int,long,const char*,const real&,
@ -1646,7 +1647,7 @@ bool CG1500_application::calcola(int g, int c, long s)
}
}
else if (_datada > _dataini) //calcolo i progressivi precedenti
if ( (data_reg >= _dataini) && (data_reg <= _datada) )
if ( (data_reg >= _dataini) && (data_reg < _datada) )
{
if (sezione == 'D')
_prg_prec_dare += importo;
@ -1977,6 +1978,7 @@ void CG1500_application::riempi_record(char t,int g,int c,long s,
_sort->sort((const char*)_cf);
}
/*
void CG1500_application::crea_sort_clifo()
{
TSaldo sld;
@ -2217,11 +2219,258 @@ void CG1500_application::crea_sort_clifo()
riempi_record(tipocfp,_gp,_cp,999999L,"zzzz",prg_conto_dare,prg_conto_avere,
mov_conto_dare,mov_conto_avere,saldo_conto);
}
*/
void CG1500_application::leggi_clifo(const TArray& gccf)
{
TSaldo sld;
TLocalisamfile saldi(LF_SALDI, FALSE);
int g=0, c=0;
long codcf=0l;
TString80 ragsoc;
char tipocf,tipocfp,tipoa;
real saldo_finale, saldo_conto, saldo_iniziale, saldodare, saldoavere,
movdare, movavere;
real mov_conto_dare, mov_conto_avere, prg_conto_dare, prg_conto_avere;
bool esiste_sc = FALSE, movimentato = FALSE;
TRecnotype items = _cur->items();
_gp=-1;
_cp=-1;
tipocfp = ' ';
_saldo_ini_conto_dare = ZERO;
_saldo_ini_conto_avere = ZERO;
saldo_conto = ZERO;
mov_conto_dare = ZERO;
mov_conto_avere = ZERO;
prg_conto_dare = ZERO;
prg_conto_avere = ZERO;
_u_max = 0l;
int anno;
if (_tipo_stampa1 == 1)
anno = _annoapp;
else anno = _annoes;
for (int i=0; i < gccf.items(); i++)
{
int g = ((TToken_string&)gccf[i]).get_int(0);
int c = ((TToken_string&)gccf[i]).get_int(1);
*_cur = 0l;
for (int i = 0; i < items; i++,++(*_cur))
{
_prog->addstatus(1);
codcf = _cur->curr().get_long(CLI_CODCF);
tipocf = _cur->curr().get(CLI_TIPOCF)[0];
ragsoc = _cur->curr().get(CLI_RAGSOC);
tipoa = _cur->curr().get_char(CLI_TIPOAPER);
if (tipoa == 'F') //persona fisica
{
TString80 cognome, nome;
cognome = ragsoc.mid(0,30);
nome = ragsoc.mid(30,20);
cognome.trim(); nome.trim();
ragsoc = cognome;
ragsoc << " " << nome;
}
int aprec = EsePre(anno);
saldi.zero();
saldi.put(SLD_ANNOES, anno);
saldi.put(SLD_GRUPPO, g);
saldi.put(SLD_CONTO, c);
saldi.put(SLD_SOTTOCONTO, codcf);
if (saldi.read() != NOERR)
if (_tipo_stampa1 == 1) //bilancio per data limite
continue;
else if (_stampac == 2) //se sono richiesti i conti movimentati
{ //esco, se no...
_indbil = cerca_indbil(g,c);
if (_indbil == 1 || _indbil == 2 || _indbil == 5)
{
saldi.zero();
saldi.put(SLD_ANNOES, aprec);
saldi.put(SLD_GRUPPO, g);
saldi.put(SLD_CONTO, c);
saldi.put(SLD_SOTTOCONTO, codcf);
if (saldi.read() != NOERR)
continue;
}
}
if ( (((_cp != -1) && (c != _cp)) || ((_gp != -1) && (g != _gp))) &&
esiste_sc )
{
//scrivo il record del conto;
riempi_record(tipocfp,_gp,_cp,999999L,"zzzz",prg_conto_dare,
prg_conto_avere,mov_conto_dare,mov_conto_avere,saldo_conto);
tipocfp = tipocf;
_cp = c;
esiste_sc = FALSE;
_saldo_ini_conto_dare = ZERO;
_saldo_ini_conto_avere = ZERO;
saldo_conto = ZERO;
mov_conto_dare = ZERO;
mov_conto_avere = ZERO;
prg_conto_dare = ZERO;
prg_conto_avere = ZERO;
}
saldo_finale = ZERO;
saldodare = ZERO;
saldoavere = ZERO;
movdare = ZERO;
movavere = ZERO;
if (_tipo_stampa1 == 1) //bilancio di verifica per data limite
{
//modifica del 19/06/95
_indbil = cerca_indbil(g,c);
movimentato = calcola(g,c,codcf);
if (_stampa_mov_prov != 3)
if (!movimentato && _stampac!=1)
if (_indbil == 1 || _indbil == 2 || _indbil == 5)
if (_annoes != 0) //cioe' se sto ragionando per competenza
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,codcf);
if (movimentato)
{
saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere;
TLocalisamfile saldi(LF_SALDI);
saldi.zero();
saldi.put(SLD_ANNOES,_annoes);
saldi.put(SLD_GRUPPO,g);
saldi.put(SLD_CONTO,c);
saldi.put(SLD_SOTTOCONTO,codcf);
if (saldi.read() == NOERR)
{
real s = saldi.get_real(SLD_SALDO);
if (_stampa_mov_prov != 3)
if (_indbil == 1 || _indbil == 2 || _indbil == 5)
if (s == ZERO && _annoes != 0) //competenza!!!
saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,codcf);
}
}
//fine modifica
//movimentato = calcola(g,c,codcf);
if (movimentato || _stampac != 1)
{
if (_datada == _dataini)
saldo_finale = saldo_iniziale+_mov_periodo_dare-_mov_periodo_avere;
else if (_datada > _dataini)
{
//modifica del 19/06
if (saldo_iniziale > 0)
_prg_prec_dare += saldo_iniziale;
else _prg_prec_avere -= saldo_iniziale;
//fine modifica
saldo_finale = _prg_prec_dare-_prg_prec_avere+_mov_periodo_dare
-_mov_periodo_avere;
}
}
//if (saldo_finale == ZERO)
// if (_stampac == 2)
// continue;
//se saldo_finale < 0 verra' stampato con una A, se no con una D
}
else //bilancio di verifica all'ultima immissione
{
_indbil = cerca_indbil(g,c);
movimentato = sld.ultima_immissione_verifica(anno,g,c,codcf,_indbil,_stampa_mov_prov);
if (_stampa_mov_prov != 3)
if (!movimentato && _stampac!=1)
if (_indbil == 1 || _indbil == 2 || _indbil == 5)
saldo_iniziale = sld.saldofin_esprec(anno,g,c,codcf);
if (movimentato)
saldo_iniziale = sld.saldoini();
if (movimentato || _stampac != 1)
{
_mov_periodo_dare = sld.prgdare();
_mov_periodo_avere = sld.prgavere();
_prg_prec_dare = ZERO;
_prg_prec_avere = ZERO;
saldo_finale = saldo_iniziale+_mov_periodo_dare-_mov_periodo_avere;
}
//if (saldo_finale == ZERO)
// if (_stampac == 2)
// continue;
}
if (movimentato || _stampac != 1)
if (!(saldo_finale == ZERO && _stampac == 2))
{
esiste_sc = TRUE;
if (saldo_iniziale < ZERO)
_saldo_ini_conto_avere += saldo_iniziale;
else
_saldo_ini_conto_dare += saldo_iniziale;
mov_conto_dare += _mov_periodo_dare;
mov_conto_avere += _mov_periodo_avere;
prg_conto_dare += _prg_prec_dare;
prg_conto_avere += _prg_prec_avere;
saldo_conto += saldo_finale; // somma algebrica!!!
if ( (_datada == _dataini)||(_tipo_stampa1 != 1) )
{
if (saldo_iniziale > ZERO) //va stampato in Dare
saldodare = saldo_iniziale;
else if (saldo_iniziale < ZERO)
{
saldo_iniziale = -saldo_iniziale;
saldoavere = saldo_iniziale;
}
}
else if (_datada > _dataini)
{
saldodare = _prg_prec_dare;
saldoavere = _prg_prec_avere;
}
movdare = _mov_periodo_dare;
movavere = _mov_periodo_avere;
riempi_record(tipocf,g,c,codcf,ragsoc,saldodare,saldoavere,movdare,
movavere,saldo_finale);
tipocfp = tipocf;
_gp = g;
_cp = c;
}
}
}
if (esiste_sc)
riempi_record(tipocfp,_gp,_cp,999999L,"zzzz",prg_conto_dare,prg_conto_avere,
mov_conto_dare,mov_conto_avere,saldo_conto);
}
void CG1500_application::crea_sort_clifo()
{
long ncur = _cur->items();
//serve solo per la progind: stima alla meno peggio
if (_situazione.empty()) ncur /= 2;
long nitems = ncur*(_clienti.items()+_fornitori.items());
_prog = new TProgind(nitems,"Elaborazione in corso... prego attendere",FALSE);
_prog->addstatus(1);
init_sort();
if (_situazione == "C") leggi_clifo(_clienti);
else if (_situazione == "F") leggi_clifo(_fornitori);
else
{
_cur->setfilter("TIPOCF = \"C\"");
leggi_clifo(_clienti);
_cur->setfilter("TIPOCF = \"F\"");
leggi_clifo(_fornitori);
}
}
int CG1500_application::cerca_indbil(int g, int c)
{
TLocalisamfile pconti(LF_PCON);
pconti.zero();
pconti.put(PCN_GRUPPO,g);
if (c != 0)
@ -3320,18 +3569,20 @@ void CG1500_application::leggi_pcon()
if ( (sottoconto == 0l) && (conto != 0) ) //si tratta di un conto
{
char tipocf = pconti.get_char(PCN_TMCF);
if (tipocf == 'C')
if ( tipocf == 'C' &&
(_situazione.empty() || _situazione == "C") )
{
gc.add(gruppo,0);
gc.add(conto,1);
_clienti.add(gc);
}
else if (tipocf == 'F')
gc.add(gruppo,0);
gc.add(conto,1);
_clienti.add(gc);
}
else if ( tipocf == 'F' &&
(_situazione.empty() || _situazione == "F") )
{
gc.add(gruppo,0);
gc.add(conto,1);
_fornitori.add(gc);
}
}
}
}
}
@ -3347,7 +3598,7 @@ bool CG1500_application::set_print(int)
_causale_ap = conf.get("CoCaAp");
_causale_chi = conf.get("CoCaCh");
}
*/
*/
m.set_handler (F_VERIFICA, my_handler);
m.set_handler (F_BILANCIO, mask_bilancio);
m.set_handler (F_STAMPA1, mask_bilancio);
@ -3383,6 +3634,7 @@ bool CG1500_application::set_print(int)
}
else
{
printer().footerlen(5);
_stampa_width = atoi(m.get(F_MODULO));
if (_stampa_width == 1)
_stampa_width = 132;
@ -3418,7 +3670,7 @@ bool CG1500_application::set_print(int)
else
_cur->setfilter("");
_prog = new TProgind(_cur->items(),"Elaborazione in corso... prego attendere",FALSE);
//_prog = new TProgind(_cur->items(),"Elaborazione in corso... prego attendere",FALSE);
_clienti.destroy();
_fornitori.destroy();

View File

@ -2824,52 +2824,54 @@ void TMastrini_application::calcola_progressivi_al()
real importo;
TDate data;
record = rmov.recno();
rmov.zero();
rmov.put(RMV_GRUPPO, _gruppo);
rmov.put(RMV_CONTO, _conto);
rmov.put(RMV_SOTTOCONTO, _sottoc);
for (rmov.read();!rmov.eof() ;rmov.next())
_totale_prima_dare = ZERO;
_totale_prima_avere = ZERO;
record = rmov.recno();
rmov.zero();
rmov.put(RMV_GRUPPO, _gruppo);
rmov.put(RMV_CONTO, _conto);
rmov.put(RMV_SOTTOCONTO, _sottoc);
for (rmov.read();!rmov.eof() ;rmov.next())
{
annoes = rmov.get_int (RMV_ANNOES);
datareg = rmov.get_date(RMV_DATAREG);
sezione = rmov.get (RMV_SEZIONE)[0];
importo = rmov.get_real(RMV_IMPORTO);
long numreg = rmov.get_long(RMV_NUMREG);
_mov->setkey(1);
_mov->curr().zero();
_mov->curr().put(MOV_NUMREG,numreg);
_mov->read();
if (_mov->bad())
_mov->zero();
datacomp = (_mov->curr().get(MOV_DATACOMP));
if (_annomsk == 0)
{
annoes = rmov.get_int (RMV_ANNOES);
datareg = rmov.get_date(RMV_DATAREG);
sezione = rmov.get (RMV_SEZIONE)[0];
importo = rmov.get_real(RMV_IMPORTO);
long numreg = rmov.get_long(RMV_NUMREG);
_mov->setkey(1);
_mov->curr().zero();
_mov->curr().put(MOV_NUMREG,numreg);
_mov->read();
if (_mov->bad())
_mov->zero();
datacomp = (_mov->curr().get(MOV_DATACOMP));
if (_annomsk == 0)
datareg = rmov.get_date(RMV_DATAREG);
data = _inizioes;
}
else
if (_annomsk != 0)
{
datareg = rmov.get_date(RMV_DATAREG);
data = _inizioes;
}
else
if (_annomsk != 0)
{
datareg = datacomp;
data = _data_inizioese;
}
datareg = datacomp;
data = _data_inizioese;
}
gruppo = rmov.get_int(RMV_GRUPPO);
conto = rmov.get_int(RMV_CONTO);
sottoc = rmov.get_long(RMV_SOTTOCONTO);
if ((gruppo != _gruppo)||(conto != _conto)||(sottoc != _sottoc))
break;
else if (((annoes==_annomsk)||(_annomsk == 0))&&(datareg >= data)&&(datareg < _data_ini)) //Legge movimenti con data < data iniziale
if (sezione == 'D')
_totale_prima_dare += importo;
else if (sezione == 'A')
_totale_prima_avere += importo;
}
rmov.readat(record);
gruppo = rmov.get_int(RMV_GRUPPO);
conto = rmov.get_int(RMV_CONTO);
sottoc = rmov.get_long(RMV_SOTTOCONTO);
if ((gruppo != _gruppo)||(conto != _conto)||(sottoc != _sottoc))
break;
else if (((annoes==_annomsk)||(_annomsk == 0))&&(datareg >= data)&&(datareg < _data_ini)) //Legge movimenti con data < data iniziale
if (sezione == 'D')
_totale_prima_dare += importo;
else if (sezione == 'A')
_totale_prima_avere += importo;
}
rmov.readat(record);
}
void TMastrini_application::calcola_progressivi()

View File

@ -1678,8 +1678,9 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
* Ulteriormente smentito e rettificato
*/
//if (_isintr && month < 13)
if ((_isintr && ( (month == 13 && !(_isbenzinaro && _gest4)) ||
(month != 12 || (_isbenzinaro && _gest4)) )))
bool true_trim = (month == 3 || month == 6 || month == 9);
if (_isintr && ( true_trim || (month == 12 && _isbenzinaro && _gest4)
|| (month == 13 && !(_isbenzinaro && _gest4)) ))
{
real interesse = interesse_trimestrale(_month);
real ivi = risultato * (interesse / CENTO);
@ -1689,8 +1690,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
//questo serve anche per la visualizzazione e per l'estrazione deleghe
//if (_isintr && month < 13)
if ((_isintr && ( (month == 13 && !(_isbenzinaro && _gest4)) ||
(month != 12 || (_isbenzinaro && _gest4)) )))
if (_isintr && ( true_trim || (month == 12 && _isbenzinaro && _gest4)
|| (month == 13 && !(_isbenzinaro && _gest4)) ))
_lim->put("R10",interesse_trimestrale(_month));
// totale conguaglio su tutte le attivita'

View File

@ -854,6 +854,7 @@ _DescrItem* TLiquidazione_app::describe_deleghe(int month)
if (look_del(month,month == 13 ? 2 : 1,TRUE))
{
d->_f0 = (_del->get("S7").not_empty() || _del->get("S8").not_empty());
if (_del->get_bool("B0"))
{
d->_s0 = _del->get("S2"); // ufficio iva/concessione
@ -869,7 +870,8 @@ _DescrItem* TLiquidazione_app::describe_deleghe(int month)
|| (_isannual && _freqviva == "T" && !(_isbenzinaro && _gest4)) )
if (look_del(12,7,TRUE))
{
d->_s4 = "ACC";
d->_s4 = "ACC";
d->_f0 = (_del->get("S7").not_empty() || _del->get("S8").not_empty());
TToken_string t;
if (_del->get_bool("B0"))
{
@ -1641,7 +1643,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
set_row(rw, "Versamento di L. %s effettuato il %s",
(const char*)vr,
(const char*)dt);
if (abi.not_empty() || cab.not_empty())
if (di._f0)
{
set_row(rw++, "@68gdiretto all'ufficio IVA di %s", (const char*)loc);
set_row(rw++, "@68gtramite %s", (const char*)ban);
@ -1661,7 +1663,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
set_row(rw, "Versamento di L. %s effettuato il %s",
(const char*)vr,
(const char*)dt);
if ((di._s2).not_empty() || (di._s3).not_empty())
if (di._f0)
{
set_row(rw++, "@68gdiretto all'ufficio IVA di %s",
(const char*)(di._s0));

View File

@ -58,9 +58,11 @@ public:
void costi ();
void ricavi();
void chiudi_attivita();
void chiudi_passivita();
void chiudi_passivita();
void chiudi_conti_ordine();
void apri_attivita();
void apri_passivita();
void apri_passivita();
void apri_conti_ordine();
void rmov_proper (int, long, TDate&, TRectype&, TConto&, real&, bool);
void ultima_registrazione();
void compila_testata(int,TDate&,TString&);
@ -563,7 +565,7 @@ bool CG4600_application::set()
_tcutile.set (gutile,cutile,sutile);
_tcperde.set (gperde,cperde,sperde);
long cicli = (_cur->items() * 6) + 4;
long cicli = (_cur->items() * 8) + 4;
_prog = new TProgind(cicli,"Chiusura/Apertura conti in corso... Prego attendere",FALSE);
//ultima_registrazione();
@ -576,13 +578,13 @@ bool CG4600_application::set()
_sld->set_anno_es(_annoesch);
_sld->set_movprovv(FALSE);
_sld->set_movap(FALSE);
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
// _pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
costi ();
//_sld->reset(); //Azzera la tabella dei conti dell'oggetto TSaldo_agg
//ultima_registrazione();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
// _pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
*_cur = 0l;
ricavi();
@ -593,33 +595,44 @@ bool CG4600_application::set()
//_sld->reset();
//ultima_registrazione();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
// _pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
*_cur = 0l;
chiudi_attivita();
//_sld->reset();
//ultima_registrazione();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
// _pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
*_cur = 0l;
chiudi_passivita();
//_sld->reset();
//_sld->reset();
// _pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
*_cur = 0l;
chiudi_conti_ordine();
chiusura_conto_patrimoniale();
_totale_saldo = ZERO;
_sld->set_anno_es(_annoesap);
_sld->set_movap(TRUE);
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
// _pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
*_cur = 0l;
apri_attivita();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
// _pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
*_cur = 0l;
apri_passivita();
// _pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
*_cur = 0l;
apri_conti_ordine();
apertura_capitale_netto();
_sld->registra();
@ -774,7 +787,7 @@ void CG4600_application::costi()
if (tot_saldo != ZERO)
rmov_proper (_annoesch,numrig,_dataregch,_pn->cg(j),_tcproper,tot_saldo,FALSE);
_pn->write();
_pn->destroy_rows(0); //Azzero l'oggetto pn.
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
j = 0;
numrig = 1;
@ -834,7 +847,7 @@ void CG4600_application::costi()
_pn->write();
//_sld->registra();
j = 0;
_pn->destroy_rows(0); //Azzero l'oggetto pn.
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
}
} // if (indbil == 3)
} // for pcon
@ -926,7 +939,7 @@ void CG4600_application::ricavi()
if (tot_saldo != ZERO)
rmov_proper (_annoesch,numrig,_dataregch,_pn->cg(j),_tcproper,tot_saldo,FALSE);
_pn->write();
_pn->destroy_rows(0); //Azzero l'oggetto pn.
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
j = 0;
numrig = 1;
@ -986,7 +999,7 @@ void CG4600_application::ricavi()
_pn->write();
//_sld->registra();
j = 0;
_pn->destroy_rows(0); //Azzero l'oggetto pn.
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
}
} // if (indbil == 4)
} // for pcon
@ -1015,7 +1028,8 @@ void CG4600_application::chiusura_conto_economico()
TRectype& rmov2 = _pn->cg(j);
rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperde,_totale_saldo,FALSE);
_pn->write();
_pn->write();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
//_sld->registra();
//_sld->reset();
@ -1024,7 +1038,6 @@ void CG4600_application::chiusura_conto_economico()
j = 0;
ultima_registrazione();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 Chiusura Capitale netto
@ -1037,6 +1050,7 @@ void CG4600_application::chiusura_conto_economico()
rmov_proper(_annoesch,numrig,_dataregch,rmov4,_tcperdp,_totale_saldo,FALSE);
_pn->write();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
}
else
if (_totale_saldo < ZERO)
@ -1048,7 +1062,6 @@ void CG4600_application::chiusura_conto_economico()
j = 0;
ultima_registrazione();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3 Chiusura Conto Economico
TRectype& rmov1 = _pn->cg(j);
@ -1059,7 +1072,8 @@ void CG4600_application::chiusura_conto_economico()
TRectype& rmov2 = _pn->cg(j);
rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcproper,_totale_saldo,TRUE);
_pn ->write();
_pn ->write();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
//_sld->registra();
//_sld->reset();
@ -1068,7 +1082,6 @@ void CG4600_application::chiusura_conto_economico()
j = 0;
ultima_registrazione();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 Chiusura Capitale netto
TRectype& rmov3 = _pn->cg(j);
@ -1079,7 +1092,8 @@ void CG4600_application::chiusura_conto_economico()
TRectype& rmov4 = _pn->cg(j);
rmov_proper(_annoesch,numrig,_dataregch,rmov4,_tcutile,_totale_saldo,TRUE);
_pn ->write();
_pn ->write();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
}
}
@ -1172,7 +1186,7 @@ void CG4600_application::chiudi_attivita()
if (tot_saldo != ZERO)
rmov_proper (_annoesch,numrig,_dataregch,_pn->cg(j),_tcbilch,tot_saldo,FALSE); //Chiusura
_pn->write();
_pn->destroy_rows(0); //Azzero l'oggetto pn.
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
j = 0;
numrig = 1;
@ -1234,7 +1248,7 @@ void CG4600_application::chiudi_attivita()
//_sld->registra();
//_sld->reset();
j = 0;
_pn->destroy_rows(0); //Azzero l'oggetto pn.
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
}
} // if (indbil == 1)
} // for pcon
@ -1324,7 +1338,7 @@ void CG4600_application::chiudi_passivita()
if (tot_saldo != ZERO)
rmov_proper (_annoesch,numrig,_dataregch,_pn->cg(j),_tcbilch,tot_saldo,FALSE); //Chiusura
_pn->write();
_pn->destroy_rows(0); //Azzero l'oggetto pn.
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
j = 0;
numrig = 1;
@ -1386,12 +1400,162 @@ void CG4600_application::chiudi_passivita()
//_sld->registra();
//_sld->reset();
j = 0;
_pn->destroy_rows(0);
_pn->destroy_rows(_numreg);
}
} // if (indbil == 2)
} // for pcon
}
void CG4600_application::chiudi_conti_ordine()
{
bool compila_mov = TRUE;
long s;
char sez_rmov = ' ', sezione = ' ';
real tot_saldo;
long numrig = 0;
TSaldo& sale = *_sale;
int j = 0;
tot_saldo = ZERO;
TRecnotype items_pcon = _cur->items();
for (int i = 0; i < items_pcon; i++, ++(*_cur))
{
int indbil = _cur->curr().get_int(PCN_INDBIL);
int g = _cur->curr().get_int(PCN_GRUPPO);
int c = _cur->curr().get_int(PCN_CONTO);
TString tmcf = _cur->curr().get (PCN_TMCF);
_prog->addstatus(1);
if (indbil == 5)
{
compila_mov = TRUE;
_saldi->setkey(1);
_saldi->zero();
_saldi->put(SLD_ANNOES, _annoesch);
_saldi->put(SLD_GRUPPO, g);
_saldi->put(SLD_CONTO, c);
// TRectype rec (_saldi->curr());
*_rec = _saldi->curr();
j = 0;
numrig = 0;
for (_saldi->read(_isgteq); ; _saldi->next())
{
if (_saldi->curr() > (*_rec) || _saldi->eof())
{
// Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso conto, indicandola
// con una sezione opposta al risultato (della somma).
if (j >= 1)
{
numrig++;
if (tot_saldo != ZERO)
rmov_proper(_annoesch,numrig,_dataregch,_pn->cg(j),_tcbilch,tot_saldo,FALSE); //Chiusura
tot_saldo = ZERO;
}
break;
}
if (compila_mov)
{
ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch);
compila_mov = FALSE;
}
s = _saldi->get_long(SLD_SOTTOCONTO);
sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1);
_saldo = sale.saldo();
const int dbkey = _saldi->getkey();
_saldi->setkey(1);
if (_saldo == ZERO) continue;
numrig++;
if (j >= MAX || _saldi->eof())
{
// Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso sottoconto, indicandola
// con una sezione opposta al risultato (della somma).
if (tot_saldo != ZERO)
rmov_proper (_annoesch,numrig,_dataregch,_pn->cg(j),_tcbilch,tot_saldo,FALSE); //Chiusura
_pn->write();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
j = 0;
numrig = 1;
ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 5 Chiusura Attivita'
compila_mov = FALSE;
tot_saldo = ZERO;
}
if (_saldo > ZERO)
sezione = 'D';
else
if (_saldo < ZERO)
{
sezione = 'A';
_saldo = -_saldo;
}
if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli
{ // importi trovati sui saldi. Quando ho
sez_rmov = 'A'; // finito di leggere i sottoconti, oppure
tot_saldo += _saldo; // quando ho raggiunto un massimo di 99
_totale_saldo += _saldo;
} // righe di movimento, genero un' altra
else // riga con importo di sezione opposta
if (sezione == 'A') // alla somma, mandando a zero
{ // il saldo di quel movimento.
sez_rmov = 'D';
tot_saldo -= _saldo;
_totale_saldo -= _saldo;
}
if (!_saldi->eof())
{
TRectype& rmov = _pn->cg(j);
rmov.zero();
rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento
rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo
rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste
rmov.put(RMV_CONTO, c); //righe servono per mandare a 0
rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la
rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a
rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi.
rmov.put(RMV_NUMREG, _numreg);
rmov.put(RMV_NUMRIG, numrig);
rmov.put(RMV_TIPOC, tmcf);
TBill tc(g,c,s);
_sld->aggiorna(tc,TImporto(sez_rmov,_saldo)); //l'oggetto TSaldo_agg
j++;
}
if (_saldi->eof()) break;
} //for saldi
if (j >= 1)
{
_pn->write();
j = 0;
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
}
} // if (indbil == 1)
} // for pcon
}
void CG4600_application::chiusura_conto_patrimoniale()
{
int j;
@ -1404,7 +1568,6 @@ void CG4600_application::chiusura_conto_patrimoniale()
j = 0;
ultima_registrazione();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 Chiusura Conto Patrimoniale
TRectype& rmov1 = _pn->cg(j);
@ -1415,7 +1578,8 @@ void CG4600_application::chiusura_conto_patrimoniale()
TRectype& rmov2 = _pn->cg(j);
rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcbilch,_totale_saldo,TRUE);
_pn->write();
_pn->write();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
//_sld->registra();
}
@ -1427,7 +1591,6 @@ else
j = 0;
ultima_registrazione();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 Chiusura Conto Patrimoniale
TRectype& rmov1 = _pn->cg(j);
@ -1438,7 +1601,8 @@ else
TRectype& rmov2 = _pn->cg(j);
rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperdp,_totale_saldo,FALSE);
_pn ->write();
_pn ->write();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
//_sld->registra();
}
}
@ -1525,7 +1689,7 @@ void CG4600_application::apri_attivita()
if (tot_saldo != ZERO)
rmov_proper (_annoesap,numrig,_dataregap,_pn->cg(j),_tcbilap,tot_saldo,TRUE); //Chiusura
_pn->write();
_pn->destroy_rows(0); //Azzero l'oggetto pn.
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
j = 0;
numrig = 1;
@ -1583,7 +1747,7 @@ void CG4600_application::apri_attivita()
{
_pn->write();
j = 0;
_pn->destroy_rows(0); //Azzero l'oggetto pn.
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
}
} // if (indbil == 1)
} // for pcon
@ -1671,7 +1835,7 @@ void CG4600_application::apri_passivita()
if (tot_saldo != ZERO)
rmov_proper (_annoesap,numrig,_dataregap,_pn->cg(j),_tcbilap,tot_saldo,TRUE); //Apertura
_pn->write();
_pn->destroy_rows(0); //Azzero l'oggetto pn.
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
j = 0;
numrig = 1;
@ -1729,12 +1893,158 @@ void CG4600_application::apri_passivita()
{
_pn->write();
j = 0;
_pn->destroy_rows(0);
_pn->destroy_rows(_numreg);
}
} // if (indbil == 2)
} // for pcon
}
void CG4600_application::apri_conti_ordine()
{
bool compila_mov = TRUE;
long s;
char sezione = ' ';
real tot_saldo;
long numrig = 0;
TSaldo& sale = *_sale;
int j = 0;
tot_saldo = ZERO;
TRecnotype items_pcon = _cur->items();
for (int i = 0; i < items_pcon; i++, ++(*_cur))
{
int indbil = _cur->curr().get_int(PCN_INDBIL);
int g = _cur->curr().get_int(PCN_GRUPPO);
int c = _cur->curr().get_int(PCN_CONTO);
TString tmcf = _cur->curr().get (PCN_TMCF);
_prog->addstatus(1);
if (indbil == 5)
{
compila_mov = TRUE;
_saldi->setkey(1);
_saldi->zero();
_saldi->put(SLD_ANNOES, _annoesch);
_saldi->put(SLD_GRUPPO, g);
_saldi->put(SLD_CONTO, c);
TRectype rec (_saldi->curr());
j = 0;
numrig = 0;
for (_saldi->read(); ; _saldi->next())
{
if (_saldi->curr() > rec || _saldi->eof())
{
// Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso conto, indicandola
// con una sezione opposta al risultato (della somma).
if (j >= 1)
{
numrig++;
if (tot_saldo != ZERO)
rmov_proper(_annoesap,numrig,_dataregap,_pn->cg(j),_tcbilap,tot_saldo,TRUE); //Apertura
tot_saldo = ZERO;
}
break;
}
if (compila_mov)
{
ultima_registrazione();
compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 8 Apertura Attivita'
compila_mov = FALSE;
}
//numrig++;
s = _saldi->get_long(SLD_SOTTOCONTO);
sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1);
_saldo = sale.saldo();
if (_saldo == ZERO) continue;
numrig++;
if (j >= MAX || _saldi->eof())
{
// Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso sottoconto, indicandola
// con una sezione opposta al risultato (della somma).
if (tot_saldo != ZERO)
rmov_proper (_annoesap,numrig,_dataregap,_pn->cg(j),_tcbilap,tot_saldo,TRUE); //Chiusura
_pn->write();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
j = 0;
numrig = 1;
ultima_registrazione();
compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 8 Apertura Attivita'
compila_mov = FALSE;
tot_saldo = ZERO;
}
if (_saldo > ZERO)
sezione = 'D';
else
if (_saldo < ZERO)
{
sezione = 'A';
_saldo = -_saldo;
}
if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli
{ // importi trovati sui saldi. Quando ho
tot_saldo += _saldo; // quando ho raggiunto un massimo di 99
_totale_saldo += _saldo;
} // righe di movimento, genero un' altra
else // riga con importo di sezione opposta
if (sezione == 'A') // alla somma, mandando a zero
{ // il saldo di quel movimento.
tot_saldo -= _saldo;
_totale_saldo -= _saldo;
}
if (!_saldi->eof())
{
TRectype& rmov = _pn->cg(j);
rmov.zero();
rmov.put(RMV_ANNOES, _annoesap); //Compilo una riga di movimento
rmov.put(RMV_DATAREG, _dataregap); //per ogni sottoconto che leggo
rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste
rmov.put(RMV_CONTO, c); //righe servono per mandare a 0
rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la
rmov.put(RMV_SEZIONE, sezione); //sezione sara' opposta a
rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi.
rmov.put(RMV_NUMREG, _numreg);
rmov.put(RMV_NUMRIG, numrig);
rmov.put(RMV_TIPOC, tmcf);
TBill tc(g,c,s);
_sld->aggiorna(tc,TImporto(sezione,_saldo)); //l'oggetto TSaldo_agg
j++;
}
if (_saldi->eof()) break;
} //for saldi
if (j >= 1)
{
_pn->write();
j = 0;
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
}
} // if (indbil == 1)
} // for pcon
}
void CG4600_application::apertura_capitale_netto()
{
int numrig;
@ -1746,7 +2056,6 @@ void CG4600_application::apertura_capitale_netto()
int j = 0;
ultima_registrazione();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 10 Apertura Capitale netto
@ -1758,7 +2067,8 @@ void CG4600_application::apertura_capitale_netto()
TRectype& rmov2 = _pn->cg(j);
rmov_proper(_annoesap,numrig,_dataregap,rmov2,_tcperdp,_capitale_netto,FALSE);
_pn->write();
_pn->write();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
}
else
if (_capitale_netto < ZERO)
@ -1768,7 +2078,6 @@ void CG4600_application::apertura_capitale_netto()
int j = 0;
ultima_registrazione();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 10 Apertura Capitale netto
@ -1780,7 +2089,8 @@ void CG4600_application::apertura_capitale_netto()
TRectype& rmov2 = _pn->cg(j);
rmov_proper(_annoesap,numrig,_dataregap,rmov2,_tcutilp,_capitale_netto,FALSE);
_pn->write();
_pn->write();
_pn->destroy_rows(_numreg); //Azzero l'oggetto pn.
}
}

View File

@ -3,7 +3,7 @@
#include "classpim.h"
#include <stdlib.h>
bool classify_pim(TRectype& pimr, real& imp, real& iva, tiporec& t)
bool classify_pim(TRectype& pimr, real& imp, real& iva, tiporec& t, bool tipost)
{
static int last_checked = -1;
@ -38,8 +38,16 @@ bool classify_pim(TRectype& pimr, real& imp, real& iva, tiporec& t)
tipodet == 5 || tipodet == 9 */);
if (found)
{
imp = pimr.get_real("R0") /* - pimr.get_real("R9") */; // comprese BD!
iva = pimr.get_real("R1") /* - pimr.get_real("R10") */; // yuk yuk!
if (tipost) //stampa
{
imp = pimr.get_real("R0") - pimr.get_real("R9");
iva = pimr.get_real("R1") - pimr.get_real("R10");
}
else //visualizza
{
imp = pimr.get_real("R0");
iva = pimr.get_real("R1");
}
}
break;
case vend_norm:

View File

@ -81,6 +81,6 @@ const int MAX_TIPOREC = 18;
// CONTENTA? ciao, f. :)
// -----------------------------------------------------------
bool classify_pim(TRectype& pimr, real& imp, real& iva, tiporec& t);
bool classify_pim(TRectype& pimr, real& imp, real& iva, tiporec& t, bool ts);
#endif