Patch level :2.1 nopatch
Files correlati : Ricompilazione Demo : [ ] Commento :aggiunto trattamento del prorata alla stampa pagato git-svn-id: svn://10.65.10.50/trunk@12162 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
ed0dc61668
commit
ba79bf3f29
@ -629,17 +629,72 @@ void TPag_per_cms::find_commesse(const long nreg, const TRectype& riga_pag)
|
||||
pn.curr().put(MOV_NUMREG, nreg);
|
||||
if (pn.read() == NOERR)
|
||||
{
|
||||
//il totale documento deve tener conto delle ritenute fiscali e sociali
|
||||
const real totdoc = pn.curr().get_real(MOV_TOTDOC) + pn.curr().get_real(MOV_RITFIS) - pn.curr().get_real(MOV_RITSOC);
|
||||
const real totpagato = riga_pag.get_real(PART_IMPORTO);
|
||||
const real percentuale = totpagato / totdoc;
|
||||
|
||||
real totdoc_cms;
|
||||
real totdoc;
|
||||
TAssoc_array commesse;
|
||||
|
||||
//se movimento iva..
|
||||
if (pn.iva_items() > 0)
|
||||
{
|
||||
for (int i = 0; i < pn.iva_items(); i++)
|
||||
{
|
||||
const TRectype& rmoviva = pn.iva(i);
|
||||
const TString& codcms = rmoviva.get(RMI_CODCMS);
|
||||
const TString& codfase = rmoviva.get(RMI_FASCMS);
|
||||
if (cms_in_range(codcms, codfase))
|
||||
{
|
||||
const real importo = rmoviva.get_real(RMI_IMPONIBILE);
|
||||
real imposta = rmoviva.get_real(RMI_IMPOSTA);
|
||||
real* imp = (real*)commesse.objptr(codcms);
|
||||
if (imp == NULL)
|
||||
{
|
||||
imp = new real;
|
||||
commesse.add(codcms, imp);
|
||||
}
|
||||
*imp += importo;
|
||||
totdoc_cms += importo;
|
||||
|
||||
if (imposta != ZERO)
|
||||
{
|
||||
//controllo prorata
|
||||
const TRectype& pla = cache().get("CMS", codcms);
|
||||
const bool prorata = pla.get_bool("B4");
|
||||
if (prorata)
|
||||
{
|
||||
const TDate datareg = pn.curr().get_date(MOV_DATAREG);
|
||||
const int anno = datareg.year();
|
||||
TRegistro registro(pn.curr().get(MOV_REG), anno);
|
||||
|
||||
imposta *= (CENTO - registro.prorata(anno))/CENTO;
|
||||
imposta.round(TCurrency::get_firm_dec()); //ci vanno i decimali della ditta
|
||||
}
|
||||
|
||||
*imp += imposta;
|
||||
totdoc_cms += imposta;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
totdoc = pn.curr().get_real(MOV_TOTDOC);
|
||||
}
|
||||
else //..movimento NON iva
|
||||
{
|
||||
for (int i = 0; i < pn.cg_items(); i++)
|
||||
{
|
||||
const TRectype& rmov = pn.cg(i);
|
||||
const TBill conto(rmov);
|
||||
if (conto.tipo() > ' ')
|
||||
continue;
|
||||
if (cerca_fiscali(conto) || cerca_sociali(conto))
|
||||
continue;
|
||||
|
||||
TImporto importo(rmov.get_char(RMV_SEZIONE), rmov.get_real(RMV_IMPORTO));
|
||||
importo.normalize('D');
|
||||
|
||||
const TString& codcms = rmov.get(RMV_CODCMS);
|
||||
const TString& codfase = rmov.get(RMV_FASCMS);
|
||||
|
||||
if (cms_in_range(codcms,codfase))
|
||||
{
|
||||
real* imp = (real*)commesse.objptr(codcms);
|
||||
@ -648,10 +703,26 @@ void TPag_per_cms::find_commesse(const long nreg, const TRectype& riga_pag)
|
||||
imp = new real;
|
||||
commesse.add(codcms, imp);
|
||||
}
|
||||
real importo = rmoviva.get_real(RMI_IMPONIBILE) + rmoviva.get_real(RMI_IMPOSTA);
|
||||
*imp += importo;
|
||||
*imp += importo.valore();
|
||||
totdoc_cms += importo.valore();
|
||||
}
|
||||
|
||||
totdoc += importo.valore();
|
||||
}
|
||||
}
|
||||
|
||||
const real totpagato = riga_pag.get_real(PART_IMPORTO);
|
||||
const real percentuale = totpagato / totdoc;
|
||||
|
||||
TGeneric_distrib distributore(totdoc_cms * percentuale, TCurrency::get_firm_dec());
|
||||
{
|
||||
FOR_EACH_ASSOC_OBJECT(commesse, h, k, imp)
|
||||
{
|
||||
const real& impcms = *(real*)imp;
|
||||
distributore.add(impcms);
|
||||
}
|
||||
}
|
||||
|
||||
FOR_EACH_ASSOC_OBJECT(commesse, h, k, imp)
|
||||
{
|
||||
const real& impcms = *(real*)imp;
|
||||
@ -659,7 +730,7 @@ void TPag_per_cms::find_commesse(const long nreg, const TRectype& riga_pag)
|
||||
ppcs->_tipo = 0; //movimenti da saldaconto
|
||||
ppcs->_codforn = riga_pag.get_long(PART_SOTTOCONTO);
|
||||
ppcs->_datapag = riga_pag.get_date(_campodata);
|
||||
ppcs->_importopagato.set_num(impcms * percentuale); //pagamento nella partita
|
||||
ppcs->_importopagato.set_num(distributore.get()); //pagamento nella partita
|
||||
ppcs->_descrpagamento = riga_pag.get(PART_DESCR);
|
||||
|
||||
ppcs->_nreg = nreg;
|
||||
@ -685,7 +756,7 @@ void TPag_per_cms::add_importo(TAssoc_array& assoc, const TRectype& rmov) const
|
||||
importo = new TImporto;
|
||||
assoc.add(chiave,importo);
|
||||
}
|
||||
//incremento l'importo del conto commessa con l'importo movimento (iportocontocms += importormov)
|
||||
//incremento l'importo del conto commessa con l'importo movimento (importocontocms += importormov)
|
||||
const char sezione = rmov.get_char(RMV_SEZIONE);
|
||||
const real valore = rmov.get_real(RMV_IMPORTO);
|
||||
const TImporto imp(sezione, valore);
|
||||
@ -710,10 +781,6 @@ void TPag_per_cms::find_commesse_cg(const long nreg)
|
||||
add_importo(_righecosti, rmov);
|
||||
else if (cerca_pagamento(conto))
|
||||
add_importo(_righepagamenti, rmov);
|
||||
else if (cerca_fiscali(conto))
|
||||
add_importo(_righefiscali, rmov);
|
||||
else if (cerca_sociali(conto))
|
||||
add_importo(_righesociali, rmov);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user