Patch level :4.0 nopatch
Files correlati :cg7.exe Ricompilazione Demo : [ ] Commento :enrichetta personal program git-svn-id: svn://10.65.10.50/trunk@14781 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
71f1b43a1a
commit
a1d8aab0db
@ -281,12 +281,12 @@ protected:
|
||||
int cerca_pagamento(const TBill& bill) const;
|
||||
int cerca_costo(const TBill& bill) const;
|
||||
bool test_swap(TCausale& caus, bool ritsoc) const;
|
||||
real calcola_pagamento(TRectype& curpag_rec);
|
||||
real calcola_pagamento(TRectype& curpag_rec, real& iva_indetraibile);
|
||||
bool sottrai_iva(TMovimentoPN& pn, const TRectype& rigaiva);
|
||||
void stringa_grcosot(TRecord_text& recrighe, const TString& zio);
|
||||
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;
|
||||
real& imponibile, real& totdoc, real& totpagato, real& iva_indetraibile) const;
|
||||
|
||||
public:
|
||||
const real get_importo() {return _importo;}
|
||||
@ -956,7 +956,7 @@ void TInvioP::lettura_conti(TAssoc_array& assoc, const char tipoconto)
|
||||
}
|
||||
}
|
||||
|
||||
bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec, real& imponibile, real& totdoc, real& totpagato) const
|
||||
bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec, real& imponibile, real& totdoc, real& totpagato, real& iva_indetraibile) const
|
||||
{
|
||||
totpagato = pag_rec.get_real(PAGSCA_IMPORTO);
|
||||
|
||||
@ -1017,7 +1017,12 @@ bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec
|
||||
|
||||
imponibile += importo;
|
||||
if (tipodet.full())
|
||||
{
|
||||
//serve per i casi speciali con fdr in regime fidcale diverso da quello..
|
||||
//..della fattura
|
||||
iva_indetraibile += iva;
|
||||
imponibile += iva;
|
||||
}
|
||||
else
|
||||
imposta += iva;
|
||||
}
|
||||
@ -1054,7 +1059,7 @@ bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec
|
||||
return ok;
|
||||
}
|
||||
|
||||
real TInvioP::calcola_pagamento(TRectype& curpag_rec)
|
||||
real TInvioP::calcola_pagamento(TRectype& curpag_rec, real& iva_indetraibile)
|
||||
{
|
||||
//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...
|
||||
@ -1075,29 +1080,37 @@ real TInvioP::calcola_pagamento(TRectype& curpag_rec)
|
||||
//dichiariamo una serie di simpatici real utilizzati in seguito
|
||||
real totdoc,imponibile,totpagato;
|
||||
|
||||
if (calcola_imponibile_totdoc(nreg, curpag_rec, imponibile, totdoc, totpagato))
|
||||
if (calcola_imponibile_totdoc(nreg, curpag_rec, imponibile, totdoc, totpagato, iva_indetraibile))
|
||||
{
|
||||
const real percentuale = totpagato /totdoc;
|
||||
//cerca se esiste una fattura da ricevere anteriore alla fattura da pagare
|
||||
const long fdr = calcola_fattura_originale(nreg);
|
||||
//se la trova deve tenerne conto in quanto la presente fattura (nreg) potrebbe pagare solo..
|
||||
//..una parte della fdr originale
|
||||
if (fdr != nreg)
|
||||
{
|
||||
real imponibile_fdr, totdoc_fdr, totpagato_fdr;
|
||||
if (calcola_imponibile_totdoc(fdr, curpag_rec, imponibile_fdr, totdoc_fdr, totpagato_fdr))
|
||||
real imponibile_fdr, totdoc_fdr, totpagato_fdr, iva_indetraibile_fdr;
|
||||
//riutilizza la calcola_imponibile_totdoc per l'fdr;si fa notare che in questo caso gli..
|
||||
//..ultimi due parametri del metodo sono del tutto inutili
|
||||
if (calcola_imponibile_totdoc(fdr, curpag_rec, imponibile_fdr, totdoc_fdr, totpagato_fdr, iva_indetraibile_fdr))
|
||||
{
|
||||
const real rapporto_pagati = totdoc / totdoc_fdr;
|
||||
const real rapporto_imponibili = imponibile_fdr / imponibile;
|
||||
//la fattura con totdoc paga una parte di una precedente fdr con totdoc maggiore!
|
||||
//in questo caso totpagato e' quello della fattura e deve uscire senza ricalcolare..
|
||||
//..percentuali e cazzi vari
|
||||
//..percentuali e cazzi vari (funziona ststisticamente!)
|
||||
if (rapporto_pagati >= 0.7)
|
||||
imponibile = imponibile_fdr;
|
||||
}
|
||||
} //if(fdr!=nreg..
|
||||
else //se non esiste una fdr eventuali ive indetraibili non sussistono
|
||||
iva_indetraibile = ZERO;
|
||||
|
||||
//calcolo finale del pagato
|
||||
totpagato = imponibile * percentuale;
|
||||
totpagato.round(2);
|
||||
|
||||
}
|
||||
} //if(calcola_imponibile_totdoc(nreg,...
|
||||
|
||||
return totpagato;
|
||||
}
|
||||
@ -1187,17 +1200,20 @@ bool TInvioP::i_proforma_pagamenti()
|
||||
const tipo_movimento tipomov = (tipo_movimento)cur_rec.get_int(MOV_TIPOMOV);
|
||||
if (tipomov == tm_pagamento || tipomov == tm_nota_credito || tipomov == tm_pagamento_insoluto)
|
||||
{
|
||||
//attraverso le partite,noto il MOV_NUMREG,riesce a collegarsi al pagamento in LF_PAGSCA
|
||||
TRelation relpart(LF_PARTITE);
|
||||
TRectype da(LF_PARTITE);
|
||||
da.put(PART_NREG, cur_rec.get(MOV_NUMREG));
|
||||
TCursor curpart(&relpart, "", 2, &da, &da);
|
||||
const long curpart_items = curpart.items();
|
||||
//se trova la partita relativa al numreg...
|
||||
if (curpart_items != 0)
|
||||
{
|
||||
curpart.freeze();
|
||||
TRectype& curpart_rec = curpart.curr();
|
||||
TRelation relpag(LF_PAGSCA);
|
||||
TRectype da(LF_PAGSCA);
|
||||
//..collega i pagamenti filtrando con i parametri estratti dalle partite
|
||||
for (curpart = 0; curpart.pos() < curpart_items; ++(curpart))
|
||||
{
|
||||
da.put(PAGSCA_TIPOC, curpart_rec.get(PART_TIPOCF));
|
||||
@ -1211,6 +1227,10 @@ bool TInvioP::i_proforma_pagamenti()
|
||||
filtro.format("NRIGP == %d", nrigapart);
|
||||
TCursor curpag(&relpag, filtro, 1, &da, &da);
|
||||
const long curpag_items = curpag.items();
|
||||
|
||||
real iva_indet = ZERO; //valore dell'eventuale iva indetraibile
|
||||
|
||||
//se trova i pagamenti,che sono alla fin fine cio' che cerca...
|
||||
if (curpag_items != 0)
|
||||
{
|
||||
TAssoc_array pagame;
|
||||
@ -1230,13 +1250,14 @@ bool TInvioP::i_proforma_pagamenti()
|
||||
pi->_accsal = 'A';
|
||||
pagame.add(indice, pi);
|
||||
}
|
||||
const real importo_pagato = calcola_pagamento(curpag_rec); //aggiunta nuova!!!
|
||||
//ricava l'importo del pagamento e lo aggiunge al memorizzatore
|
||||
const real importo_pagato = calcola_pagamento(curpag_rec, iva_indet);
|
||||
pi->_somma += importo_pagato;
|
||||
if (curpag_rec.get_char(PAGSCA_ACCSAL) == 'S')
|
||||
pi->_accsal = 'S';
|
||||
}
|
||||
|
||||
// scrivo i record risultanti
|
||||
// scrive i record risultanti
|
||||
for (TPay_info* pi = (TPay_info*)pagame.first_item(); pi != NULL; pi = (TPay_info*)pagame.succ_item())
|
||||
{
|
||||
TToken_string keypart;
|
||||
@ -1252,11 +1273,23 @@ bool TInvioP::i_proforma_pagamenti()
|
||||
_nregcosto = calcola_fattura_originale(nregfatt);
|
||||
_importo = pi->_somma;
|
||||
_accsal = pi->_accsal;
|
||||
|
||||
//..e finalmente scrive 'sta minchia di riga
|
||||
TRecord_text recpag;
|
||||
recpag.set_type("G");
|
||||
trasfilepag->autoload(recpag, curpag);
|
||||
trasfilepag->write(recpag);
|
||||
|
||||
//se ha una riga di iva indetraibile dovuta al cambio regime fiscale 2005->2006..
|
||||
//..deve aggiungere una ulteriore riga!!
|
||||
if (iva_indet > ZERO)
|
||||
{
|
||||
_nregcosto = nregfatt;
|
||||
_importo = iva_indet;
|
||||
_accsal = 'S';
|
||||
recpag.set_type("G");
|
||||
trasfilepag->autoload(recpag, curpag);
|
||||
trasfilepag->write(recpag);
|
||||
}
|
||||
}
|
||||
|
||||
}//if curpag_items..
|
||||
|
Loading…
x
Reference in New Issue
Block a user