Patch level : 10.0 642

Files correlati     : cg0.exe cg2.exe ve0.exe ve6.exe
Ricompilazione Demo : [ ]
Commento            :

Bug 0001506: iva per cassa e causale contabile


è richiesto di poter inserire un conto di iva per cassa/ad esigibilità differita nella causale contabile.


git-svn-id: svn://10.65.10.50/trunk@20138 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2010-02-17 18:05:44 +00:00
parent 8a95f43ce6
commit e6e65d3096
6 changed files with 90 additions and 11 deletions

View File

@ -201,6 +201,7 @@ void TCaus_app::causale_vendite()
set_descr(i++, TR("C Imp. non soggetti"));
set_descr(i++, TR("C Ritenute fiscali"));
set_descr(i++, TR("C Ritenute soc."));
set_descr(i++, TR("C Iva ad esig.diff."));
_tipo_des = vendita;
carica_righe_libere(i);
}
@ -221,6 +222,7 @@ void TCaus_app::causale_acquisti()
set_descr(i++, TR("C Imp. non soggetti"));
set_descr(i++, TR("C Ritenute fiscali"));
set_descr(i++, TR("C Ritenute soc."));
set_descr(i++, TR("C Iva ad esig.diff."));
_tipo_des = acquisto;
carica_righe_libere(i);
}

View File

@ -87,6 +87,8 @@ TMask* TPrimanota_application::load_mask(int n)
m->set_handler(F_CORRVALUTA, corrvaluta_handler);
m->set_handler(F_DATAINTRA, dataintra_handler);
m->set_handler(F_CODIVA, main_codiva_handler);
if (_liqdiff)
m->set_handler(F_LIQDIFF, liqdiff_handler);
m->set_handler(F_OCCASEDIT, occas_handler);
m->set_handler(F_SOLAIVA, solaiva_handler);
m->set_handler(F_SHEETIVA, iva_handler);
@ -384,7 +386,7 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
}
else
{
if (nriga >= 2 && nriga <= 9)
if (nriga >= 2 && nriga <= RIGA_IVA_DIFFERITA)
continue; // Conti per IVA detraibile e non, ritenute sociali e fiscali
const char tipo = nriga == 1 ? 'T' : ' ';

View File

@ -1467,8 +1467,18 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
oldposiva[d] = type2pos(tipod);
if (oldposiva[d] < 0 && !oldiva[d].is_zero())
{
const int ri = d ? RIGA_IVA_DETRAIBILE : RIGA_IVA_NON_DETRAIBILE;
TBill c; cau.bill(ri, c);
TBill c;
int ri;
if (d)
{
if (iva.mask().get_bool(F_LIQDIFF))
cau.bill(ri = RIGA_IVA_DIFFERITA, c);
if (!c.ok())
cau.bill(ri = RIGA_IVA_DETRAIBILE, c);
}
else
cau.bill(ri = RIGA_IVA_NON_DETRAIBILE, c);
if (c.ok())
{
const TString80 desc(cau.desc_agg(ri));
@ -1587,12 +1597,23 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
{
if (!imposta.is_zero()) // Se c'e' imposta ...
{ // ... crea nuova riga per l'IVA
const int ri = d ? RIGA_IVA_DETRAIBILE : RIGA_IVA_NON_DETRAIBILE;
const TString desc(cau.desc_agg(ri));
TBill contoiva; cau.bill(ri, contoiva);
newposiva = a.set_cgs_row(-1, newiva, contoiva, desc, tipod);
}
TBill contoiva;
int ri;
if (d)
{
if (iva.mask().get_bool(F_LIQDIFF))
cau.bill(ri = RIGA_IVA_DIFFERITA, contoiva);
if (!contoiva.ok())
cau.bill(ri = RIGA_IVA_DETRAIBILE, contoiva);
}
else
cau.bill(ri = RIGA_IVA_NON_DETRAIBILE, contoiva);
const TString desc(cau.desc_agg(ri));
cau.bill(ri, contoiva);
newposiva = a.set_cgs_row(-1, newiva, contoiva, desc, tipod);
}
}
else
{
@ -2653,6 +2674,51 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
return true;
}
// Handler of the F_LIQDIFF
// Certified 99%
bool TPrimanota_application::liqdiff_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE && f.mask().is_running())
{
TSheet_field & cgs = app().cgs();
const bool liqdiff = f.get().full();
const TCausale& cau = app().causale();
TBill contoiva;
int ri;
if (f.mask().get_bool(F_LIQDIFF))
cau.bill(ri = RIGA_IVA_DIFFERITA, contoiva);
if (!contoiva.ok())
cau.bill(ri = RIGA_IVA_DETRAIBILE, contoiva);
TToken_string conto(contoiva.string(0x3));
const TString80 descragg(cau.desc_agg(ri));
int rowtype = cgs.cid2index(CG_ROWTYPE);
int tp = cgs.cid2index(CG_TIPO);
int gr = cgs.cid2index(CG_GRUPPO);
int co = cgs.cid2index(CG_CONTO);
int sc = cgs.cid2index(CG_SOTTOCONTO);
int des = cgs.cid2index(CG_DESCR);
FOR_EACH_SHEET_ROW(cgs, r, row)
{
const TString4 type(row->get(rowtype));
if (type == "D")
{
row->add(conto.get(0), tp);
row->add(conto.get(), gr);
row->add(conto.get(), co);
row->add(conto.get(), sc);
row->add(conto.get(), sc + 1);
row->add(descragg, des);
}
}
cgs.force_update();
}
return true;
}
// Riempie i campi valuta a zero in base agli altri
void TPrimanota_application::gioca_cambi(int force)
{

View File

@ -104,6 +104,7 @@ class TPrimanota_application : public TRelation_application
static bool ritfis_handler(TMask_field& f, KEY key);
static bool ritsoc_handler(TMask_field& f, KEY key);
static bool main_codiva_handler(TMask_field& f, KEY key);
static bool liqdiff_handler(TMask_field& f, KEY key);
static bool dataintra_handler(TMask_field& f, KEY key);
static bool corrlire_handler(TMask_field& f, KEY key);
static bool corrvaluta_handler(TMask_field& f, KEY key);

View File

@ -75,6 +75,7 @@ public:
#define RIGA_IVA_DETRAIBILE 3
#define RIGA_IVA_NON_DETRAIBILE 4
#define RIGA_IVA_DIFFERITA 10
// Fatture
#define RIGA_RITENUTE_FISCALI 8

View File

@ -241,11 +241,18 @@ void TMovimentoPN_VE::enter_row(int i, const TString & descr_cr)
const TImporto val(real2imp(iva, 'I'));
if (newposiva < 0)
{
const TString80 d(_caus->desc_agg(RIGA_IVA_DETRAIBILE));
{
int ri;
TBill contoiva;
const TRectype & head = lfile().curr();
if (head.get_bool(MOV_LIQDIFF))
_caus->bill(ri = RIGA_IVA_DIFFERITA, contoiva);
if (!contoiva.ok())
_caus->bill(ri = RIGA_IVA_DETRAIBILE, contoiva);
const TString80 d(_caus->desc_agg(ri));
_caus->bill(RIGA_IVA_DETRAIBILE, contoiva);
if (contoiva.ok())
newposiva = set_cg_rec(-1, val, contoiva, d, 'D');
}