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:
luca 2004-06-07 15:37:50 +00:00
parent ed0dc61668
commit ba79bf3f29

View File

@ -629,29 +629,100 @@ void TPag_per_cms::find_commesse(const long nreg, const TRectype& riga_pag)
pn.curr().put(MOV_NUMREG, nreg); pn.curr().put(MOV_NUMREG, nreg);
if (pn.read() == NOERR) if (pn.read() == NOERR)
{ {
//il totale documento deve tener conto delle ritenute fiscali e sociali real totdoc_cms;
const real totdoc = pn.curr().get_real(MOV_TOTDOC) + pn.curr().get_real(MOV_RITFIS) - pn.curr().get_real(MOV_RITSOC); real totdoc;
const real totpagato = riga_pag.get_real(PART_IMPORTO);
const real percentuale = totpagato / totdoc;
TAssoc_array commesse; TAssoc_array commesse;
for (int i = 0; i < pn.iva_items(); i++)
//se movimento iva..
if (pn.iva_items() > 0)
{ {
const TRectype& rmoviva = pn.iva(i); for (int i = 0; i < pn.iva_items(); i++)
const TString& codcms = rmoviva.get(RMI_CODCMS);
const TString& codfase = rmoviva.get(RMI_FASCMS);
if (cms_in_range(codcms, codfase))
{ {
real* imp = (real*)commesse.objptr(codcms); const TRectype& rmoviva = pn.iva(i);
if (imp == NULL) const TString& codcms = rmoviva.get(RMI_CODCMS);
const TString& codfase = rmoviva.get(RMI_FASCMS);
if (cms_in_range(codcms, codfase))
{ {
imp = new real; const real importo = rmoviva.get_real(RMI_IMPONIBILE);
commesse.add(codcms, imp); 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;
}
} }
real importo = rmoviva.get_real(RMI_IMPONIBILE) + rmoviva.get_real(RMI_IMPOSTA); }
*imp += importo;
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);
if (imp == NULL)
{
imp = new real;
commesse.add(codcms, imp);
}
*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) FOR_EACH_ASSOC_OBJECT(commesse, h, k, imp)
{ {
const real& impcms = *(real*)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->_tipo = 0; //movimenti da saldaconto
ppcs->_codforn = riga_pag.get_long(PART_SOTTOCONTO); ppcs->_codforn = riga_pag.get_long(PART_SOTTOCONTO);
ppcs->_datapag = riga_pag.get_date(_campodata); 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->_descrpagamento = riga_pag.get(PART_DESCR);
ppcs->_nreg = nreg; ppcs->_nreg = nreg;
@ -685,7 +756,7 @@ void TPag_per_cms::add_importo(TAssoc_array& assoc, const TRectype& rmov) const
importo = new TImporto; importo = new TImporto;
assoc.add(chiave,importo); 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 char sezione = rmov.get_char(RMV_SEZIONE);
const real valore = rmov.get_real(RMV_IMPORTO); const real valore = rmov.get_real(RMV_IMPORTO);
const TImporto imp(sezione, valore); const TImporto imp(sezione, valore);
@ -710,10 +781,6 @@ void TPag_per_cms::find_commesse_cg(const long nreg)
add_importo(_righecosti, rmov); add_importo(_righecosti, rmov);
else if (cerca_pagamento(conto)) else if (cerca_pagamento(conto))
add_importo(_righepagamenti, rmov); add_importo(_righepagamenti, rmov);
else if (cerca_fiscali(conto))
add_importo(_righefiscali, rmov);
else if (cerca_sociali(conto))
add_importo(_righesociali, rmov);
} }
} }
} }