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_pagamento(const TBill& bill) const;
|
||||||
int cerca_costo(const TBill& bill) const;
|
int cerca_costo(const TBill& bill) const;
|
||||||
bool test_swap(TCausale& caus, bool ritsoc) 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);
|
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,
|
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:
|
public:
|
||||||
const real get_importo() {return _importo;}
|
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);
|
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;
|
imponibile += importo;
|
||||||
if (tipodet.full())
|
if (tipodet.full())
|
||||||
|
{
|
||||||
|
//serve per i casi speciali con fdr in regime fidcale diverso da quello..
|
||||||
|
//..della fattura
|
||||||
|
iva_indetraibile += iva;
|
||||||
imponibile += iva;
|
imponibile += iva;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
imposta += iva;
|
imposta += iva;
|
||||||
}
|
}
|
||||||
@ -1054,7 +1059,7 @@ bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec
|
|||||||
return ok;
|
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
|
//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...
|
//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
|
//dichiariamo una serie di simpatici real utilizzati in seguito
|
||||||
real totdoc,imponibile,totpagato;
|
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;
|
const real percentuale = totpagato /totdoc;
|
||||||
|
//cerca se esiste una fattura da ricevere anteriore alla fattura da pagare
|
||||||
const long fdr = calcola_fattura_originale(nreg);
|
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)
|
if (fdr != nreg)
|
||||||
{
|
{
|
||||||
real imponibile_fdr, totdoc_fdr, totpagato_fdr;
|
real imponibile_fdr, totdoc_fdr, totpagato_fdr, iva_indetraibile_fdr;
|
||||||
if (calcola_imponibile_totdoc(fdr, curpag_rec, imponibile_fdr, totdoc_fdr, totpagato_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_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!
|
//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..
|
//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)
|
if (rapporto_pagati >= 0.7)
|
||||||
imponibile = imponibile_fdr;
|
imponibile = imponibile_fdr;
|
||||||
}
|
}
|
||||||
} //if(fdr!=nreg..
|
} //if(fdr!=nreg..
|
||||||
|
else //se non esiste una fdr eventuali ive indetraibili non sussistono
|
||||||
|
iva_indetraibile = ZERO;
|
||||||
|
|
||||||
//calcolo finale del pagato
|
//calcolo finale del pagato
|
||||||
totpagato = imponibile * percentuale;
|
totpagato = imponibile * percentuale;
|
||||||
totpagato.round(2);
|
totpagato.round(2);
|
||||||
|
|
||||||
}
|
} //if(calcola_imponibile_totdoc(nreg,...
|
||||||
|
|
||||||
return totpagato;
|
return totpagato;
|
||||||
}
|
}
|
||||||
@ -1187,17 +1200,20 @@ bool TInvioP::i_proforma_pagamenti()
|
|||||||
const tipo_movimento tipomov = (tipo_movimento)cur_rec.get_int(MOV_TIPOMOV);
|
const tipo_movimento tipomov = (tipo_movimento)cur_rec.get_int(MOV_TIPOMOV);
|
||||||
if (tipomov == tm_pagamento || tipomov == tm_nota_credito || tipomov == tm_pagamento_insoluto)
|
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);
|
TRelation relpart(LF_PARTITE);
|
||||||
TRectype da(LF_PARTITE);
|
TRectype da(LF_PARTITE);
|
||||||
da.put(PART_NREG, cur_rec.get(MOV_NUMREG));
|
da.put(PART_NREG, cur_rec.get(MOV_NUMREG));
|
||||||
TCursor curpart(&relpart, "", 2, &da, &da);
|
TCursor curpart(&relpart, "", 2, &da, &da);
|
||||||
const long curpart_items = curpart.items();
|
const long curpart_items = curpart.items();
|
||||||
|
//se trova la partita relativa al numreg...
|
||||||
if (curpart_items != 0)
|
if (curpart_items != 0)
|
||||||
{
|
{
|
||||||
curpart.freeze();
|
curpart.freeze();
|
||||||
TRectype& curpart_rec = curpart.curr();
|
TRectype& curpart_rec = curpart.curr();
|
||||||
TRelation relpag(LF_PAGSCA);
|
TRelation relpag(LF_PAGSCA);
|
||||||
TRectype da(LF_PAGSCA);
|
TRectype da(LF_PAGSCA);
|
||||||
|
//..collega i pagamenti filtrando con i parametri estratti dalle partite
|
||||||
for (curpart = 0; curpart.pos() < curpart_items; ++(curpart))
|
for (curpart = 0; curpart.pos() < curpart_items; ++(curpart))
|
||||||
{
|
{
|
||||||
da.put(PAGSCA_TIPOC, curpart_rec.get(PART_TIPOCF));
|
da.put(PAGSCA_TIPOC, curpart_rec.get(PART_TIPOCF));
|
||||||
@ -1211,6 +1227,10 @@ bool TInvioP::i_proforma_pagamenti()
|
|||||||
filtro.format("NRIGP == %d", nrigapart);
|
filtro.format("NRIGP == %d", nrigapart);
|
||||||
TCursor curpag(&relpag, filtro, 1, &da, &da);
|
TCursor curpag(&relpag, filtro, 1, &da, &da);
|
||||||
const long curpag_items = curpag.items();
|
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)
|
if (curpag_items != 0)
|
||||||
{
|
{
|
||||||
TAssoc_array pagame;
|
TAssoc_array pagame;
|
||||||
@ -1230,13 +1250,14 @@ bool TInvioP::i_proforma_pagamenti()
|
|||||||
pi->_accsal = 'A';
|
pi->_accsal = 'A';
|
||||||
pagame.add(indice, pi);
|
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;
|
pi->_somma += importo_pagato;
|
||||||
if (curpag_rec.get_char(PAGSCA_ACCSAL) == 'S')
|
if (curpag_rec.get_char(PAGSCA_ACCSAL) == 'S')
|
||||||
pi->_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())
|
for (TPay_info* pi = (TPay_info*)pagame.first_item(); pi != NULL; pi = (TPay_info*)pagame.succ_item())
|
||||||
{
|
{
|
||||||
TToken_string keypart;
|
TToken_string keypart;
|
||||||
@ -1252,11 +1273,23 @@ bool TInvioP::i_proforma_pagamenti()
|
|||||||
_nregcosto = calcola_fattura_originale(nregfatt);
|
_nregcosto = calcola_fattura_originale(nregfatt);
|
||||||
_importo = pi->_somma;
|
_importo = pi->_somma;
|
||||||
_accsal = pi->_accsal;
|
_accsal = pi->_accsal;
|
||||||
|
//..e finalmente scrive 'sta minchia di riga
|
||||||
TRecord_text recpag;
|
TRecord_text recpag;
|
||||||
recpag.set_type("G");
|
recpag.set_type("G");
|
||||||
trasfilepag->autoload(recpag, curpag);
|
trasfilepag->autoload(recpag, curpag);
|
||||||
trasfilepag->write(recpag);
|
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..
|
}//if curpag_items..
|
||||||
|
Loading…
x
Reference in New Issue
Block a user