Patch level :4.0 nopatch x ora

Files correlati     :cg7.exe
Ricompilazione Demo : [ ]
Commento            :tentativo di correggere errori enrichettici


git-svn-id: svn://10.65.10.50/trunk@14699 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-01-02 14:24:22 +00:00
parent e9a4e4b36b
commit d11ebcd2ea

View File

@ -285,6 +285,8 @@ protected:
bool sottrai_iva(TMovimentoPN& pn, const TRectype& rigaiva); bool sottrai_iva(TMovimentoPN& pn, const TRectype& rigaiva);
void stringa_grcosot(TRecord_text& recrighe, const TString& zio); void stringa_grcosot(TRecord_text& recrighe, const TString& zio);
long calcola_fattura_originale(long nreg) const; long calcola_fattura_originale(long nreg) const;
bool calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec,
real& imponibile, real& totdoc, real& totpagato) const;
public: public:
const real get_importo() {return _importo;}; const real get_importo() {return _importo;};
@ -909,34 +911,14 @@ void TInvioP::lettura_conti(TAssoc_array& assoc, const char tipoconto)
} }
} }
real TInvioP::calcola_pagamento(TRectype& curpag_rec) bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec, real& imponibile, real& totdoc, real& totpagato) const
{ {
real totpagato = curpag_rec.get_real(PAGSCA_IMPORTO) + curpag_rec.get_real(PAGSCA_RITENUTE); totpagato = pag_rec.get_real(PAGSCA_IMPORTO) + pag_rec.get_real(PAGSCA_RITENUTE);
//deve costruirsi la riga di partita che riguarda il documento di origine
//per prima cosa crea tale riga a partire dal pagamento, che ha una chiave lunghissima...
TToken_string key_part;
key_part.add(curpag_rec.get(PAGSCA_TIPOC));
key_part.add(curpag_rec.get(PAGSCA_GRUPPO));
key_part.add(curpag_rec.get(PAGSCA_CONTO));
key_part.add(curpag_rec.get(PAGSCA_SOTTOCONTO));
key_part.add(curpag_rec.get(PAGSCA_ANNO));
key_part.add(curpag_rec.get(PAGSCA_NUMPART));
key_part.add(curpag_rec.get(PAGSCA_NRIGA));
//..ecco il record delle partite..
const TRectype& rec_partite = cache().get(LF_PARTITE, key_part);
//..da cui prende nreg
const long nreg = rec_partite.get_long(PART_NREG);
//se nreg esiste...
if (nreg != 0)
{
TMovimentoPN pn; TMovimentoPN pn;
pn.curr().put(MOV_NUMREG, nreg); pn.curr().put(MOV_NUMREG, nreg);
if (pn.read() == NOERR) bool ok = nreg > 0 && pn.read() == NOERR;
if (ok)
{ {
//dichiariamo una serie di simpatici real utilizzati in seguito
real totdoc,imponibile;
//Movimenti CON SALDACONTO //Movimenti CON SALDACONTO
//se movimento IVA.. //se movimento IVA..
if (pn.iva_items() > 0) if (pn.iva_items() > 0)
@ -948,7 +930,7 @@ real TInvioP::calcola_pagamento(TRectype& curpag_rec)
totpagato += ritfis; totpagato += ritfis;
//Le ritenute sociali invece vanno testate con la test_swap.. //Le ritenute sociali invece vanno testate con la test_swap..
real ritsoc = curpag_rec.get_real(PAGSCA_RITSOC); real ritsoc = pag_rec.get_real(PAGSCA_RITSOC);
ritsoc += movfat.get_real(MOV_RITSOC); ritsoc += movfat.get_real(MOV_RITSOC);
if (!ritsoc.is_zero()) if (!ritsoc.is_zero())
@ -1014,13 +996,47 @@ real TInvioP::calcola_pagamento(TRectype& curpag_rec)
totdoc = totdoc_testata; totdoc = totdoc_testata;
} //end di else pn.iva_items()... } //end di else pn.iva_items()...
} //if (pn.read() == NOERR
return ok;
}
real TInvioP::calcola_pagamento(TRectype& curpag_rec)
{
//deve costruirsi la riga di partita che riguarda il documento di origine
//per prima cosa crea tale riga a partire dal pagamento, che ha una chiave lunghissima...
TToken_string key_part;
key_part.add(curpag_rec.get(PAGSCA_TIPOC));
key_part.add(curpag_rec.get(PAGSCA_GRUPPO));
key_part.add(curpag_rec.get(PAGSCA_CONTO));
key_part.add(curpag_rec.get(PAGSCA_SOTTOCONTO));
key_part.add(curpag_rec.get(PAGSCA_ANNO));
key_part.add(curpag_rec.get(PAGSCA_NUMPART));
key_part.add(curpag_rec.get(PAGSCA_NRIGA));
//..ecco il record delle partite..
const TRectype& rec_partite = cache().get(LF_PARTITE, key_part);
//..da cui prende nreg
const long nreg = rec_partite.get_long(PART_NREG);
//se nreg esiste...
//dichiariamo una serie di simpatici real utilizzati in seguito
real totdoc,imponibile,totpagato;
if (calcola_imponibile_totdoc(nreg, curpag_rec, imponibile, totdoc, totpagato))
{
const real percentuale = totpagato /totdoc;
const long fdr = calcola_fattura_originale(nreg);
if (fdr != nreg)
{
real imponibile_fdr, totdoc_fdr, totpagato_fdr;
if (calcola_imponibile_totdoc(fdr, curpag_rec, imponibile_fdr, totdoc_fdr, totpagato_fdr))
imponibile = imponibile_fdr;
}
//calcolo finale del pagato //calcolo finale del pagato
real percentuale = totpagato /totdoc;
totpagato = imponibile * percentuale; totpagato = imponibile * percentuale;
totpagato.round(2);
}
}
}
return totpagato; return totpagato;
} }
@ -1056,7 +1072,9 @@ long TInvioP::calcola_fattura_originale(long nreg) const
//..come nreg da ritornare (attenzione che se il doc originale non e' stato contabilizzato.. //..come nreg da ritornare (attenzione che se il doc originale non e' stato contabilizzato..
//..nreg diventa 0!) //..nreg diventa 0!)
if (!original_doc.empty()) if (!original_doc.empty())
{
nreg = original_doc.get_long(DOC_NUMREG); nreg = original_doc.get_long(DOC_NUMREG);
}
} }
break; break;
} }
@ -1155,9 +1173,10 @@ bool TInvioP::i_proforma_pagamenti()
keypart.add(curpart_rec.get(PART_SOTTOCONTO)); keypart.add(curpart_rec.get(PART_SOTTOCONTO));
keypart.add(pagame.get_hashobj()->key()); keypart.add(pagame.get_hashobj()->key());
const TRectype& fattura = cache().get(LF_PARTITE, keypart); const TRectype& fattura = cache().get(LF_PARTITE, keypart);
_nregpag = cur_rec.get_long(MOV_NUMREG); _nregpag = cur_rec.get_long(MOV_NUMREG); //registrazione del movimento di pagamento
//deve cercare la prima registrazione da cui deriva il pagamento.. //deve cercare la prima registrazione da cui deriva il pagamento..
_nregcosto = calcola_fattura_originale(fattura.get_long(PART_NREG)); const long nregfatt = fattura.get_long(PART_NREG);
_nregcosto = calcola_fattura_originale(nregfatt);
_importo = *cp; _importo = *cp;
_chiusa = fattura.get_bool(PART_CHIUSA); _chiusa = fattura.get_bool(PART_CHIUSA);
TRecord_text recpag; TRecord_text recpag;