Correzione stampa liquidazione in presenza di note di credito su fatture con iva differita e di prorata (CRPA e Bellegotti)

git-svn-id: svn://10.65.10.50/branches/R_10_00@22614 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-03-27 15:23:23 +00:00
parent 432bb34728
commit cfb80ca474
6 changed files with 35 additions and 35 deletions

@ -1,6 +1,5 @@
#include <xvt.h>
#define __MAIN__
#include "cg4.h"
int main(int argc,char** argv)

@ -1,10 +1,6 @@
#ifndef __CG4_H
#define __CG4_H
#ifndef __STRINGS_H
#include <strings.h>
#endif
int cg4100(int argc, char* argv[]);
int cg4200(int argc, char* argv[]);
int cg4300(int argc, char* argv[]);

@ -178,7 +178,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
look_lim(liq_month(month), TRUE);
_isdiffacc = is_differita();
_isdifferita = _isdiffacc;
_isdifferita = _isdiffacc;
look_lia();
_isintr = _freqviva == "T" && !_lia->get_bool("B3"); // was CNF_DITTA->InTrtr
@ -862,7 +862,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
if (has_sc && movdiff && (!datainc.ok() || datainc > inizio))
{
arrpart.add_numreg(numreg);
if (arrpart.utilizzata(numreg, 1))
{
@ -875,7 +874,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
if (row >= 0)
{
TRiga_partite rp = p->riga(row);
const TRiga_partite& rp = p->riga(row);
TImporto importo(rp.get_char(PART_SEZ), rp.get_real(PART_IMPORTO)); importo.normalize(); importo.swap_section();
totfat += importo.valore();
@ -891,13 +890,18 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
if ((diffpayed && dok) || (pag.valore() > totfat))
pag.set(sez, totfat);
pagatt = pag.valore() - pagprec.valore();
if (pagatt > ZERO)
dok = true;
// Spostato sotto 26/03/2012
//if (pagatt > ZERO)
// dok = true;
// Inizio aggiunte di Bonazzi del 16/02/2012
ncatt = nc.valore() - ncprec.valore();
pagatt -= ncatt;
// Fine aggiunte di Bonazzi del 16/02/2012
if (pagatt > ZERO)
dok = true;
}
}
@ -2175,17 +2179,11 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
const real prorata_diff = _prorata.calc_prorata(aaa, _year);
// Somma i vari prorata calcolati per gli anni precedenti
prorata += prorata_precedente1 + prorata_precedente2;
prorata += prorata_precedente1 + prorata_precedente2;
if (!fdiffinc_iva_acq.is_zero())
{
// Calcolo prorata su pagamenti con IVA per cassa
const real prorata_diffinc_acq = _prorata.calc_prorata(fdiffinc_iva_acq, _year);
prorata += prorata_diffinc_acq;
fdiffinc_iva_acq -= prorata_diffinc_acq;
}
acquisti_iva -= prorata; // Rettifica acquisti_iva
prorata += prorata_diff;
fdiffinc_iva_acq -= prorata_diff; // Rettifica acquisti_iva differiti incassati
}
look_plm(month, codatt, TRUE);

@ -979,10 +979,10 @@ bool TLiquidazione_app::is_differita(long firm, int year)
{
long d = (firm == 0) ? _nditte->lfile().get_long("CODDITTA") : firm;
int y = (year == 0) ? atoi(_year) : year;
if (look_lia(d, atoi(_year) > 0))
if (look_lia(d, atoi(_year) > 0), y) // 26/03/2012 aggiunto ,y)
return _lia->get_bool("B1");
else
return FALSE;
return false;
}
real TLiquidazione_app::aliquota_agvia()

@ -2316,7 +2316,7 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
if (!_is_visliq)
iva_acq += rett_cred;
set_row(rw++,FR("@11gIva che si detrae per il periodo@58g%r"), &iva_acq);
if (diffinc_iva_acq != ZERO)
if (!diffinc_iva_acq.is_zero())
set_row(rw++,FR("@11gIVA a liquidazione differita pagata@58g%r"), &diffinc_iva_acq);
if (_is_visliq)
set_row(rw++,FR("@11g$[r]Rettifiche IVA a credito$[n]@58g%r"), &rett_cred);

@ -313,20 +313,19 @@ TImporto TRiga_scadenze::importo_pagato_al(bool val, const TDate & al, int mode)
if (datapag <= al)
{
const char sez = sum.sezione();
// Inizio aggiunte di Bonazzi del 16/02/2012
if (mode & 0x10) // solo le note di credito
{
const tipo_movimento tm = (tipo_movimento)sum.get_int(PART_TIPOMOV);
if (tm != tm_nota_credito)
continue;
}
// Fine aggiunte di Bonazzi del 16/02/2012
const char sez = sum.sezione();
if (mode & 0x1)
{
// Inizio aggiunte di Bonazzi del 16/02/2012
if (mode & 0x10) // solo le note di credito
{
const tipo_movimento tm = (tipo_movimento)sum.get_int(PART_TIPOMOV);
if (tm == tm_nota_credito)
totale += TImporto(sez, pag.get_real(imp_field));
}
else // tutto
totale += TImporto(sez, pag.get_real(imp_field));
// Fine aggiunte di Bonazzi del 16/02/2012
totale += TImporto(sez, pag.get_real(imp_field));
}
if (!in_val && (mode & 0x8)) // Le ritenute non esistono nei pagamenti in valuta
@ -824,7 +823,15 @@ int TRiga_partite::write(TBaseisamfile& f) const
// Certified 100%
int TRiga_partite::rewrite(TBaseisamfile& f) const
{
const int err = is_fattura() ? TTree_rectype::rewrite(f) : TRectype::rewrite(f);
int err = NOERR;
if (is_fattura())
err = TTree_rectype::rewrite(f);
else
{
err = TRectype::rewrite(f);
if (err == NOERR && rows_array().rows() > 0) // Elimina rate se riga trasformata da fattura a nota di credito
rows_array().remove();
}
return err;
}