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 Imp. non soggetti"));
set_descr(i++, TR("C Ritenute fiscali")); set_descr(i++, TR("C Ritenute fiscali"));
set_descr(i++, TR("C Ritenute soc.")); set_descr(i++, TR("C Ritenute soc."));
set_descr(i++, TR("C Iva ad esig.diff."));
_tipo_des = vendita; _tipo_des = vendita;
carica_righe_libere(i); 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 Imp. non soggetti"));
set_descr(i++, TR("C Ritenute fiscali")); set_descr(i++, TR("C Ritenute fiscali"));
set_descr(i++, TR("C Ritenute soc.")); set_descr(i++, TR("C Ritenute soc."));
set_descr(i++, TR("C Iva ad esig.diff."));
_tipo_des = acquisto; _tipo_des = acquisto;
carica_righe_libere(i); 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_CORRVALUTA, corrvaluta_handler);
m->set_handler(F_DATAINTRA, dataintra_handler); m->set_handler(F_DATAINTRA, dataintra_handler);
m->set_handler(F_CODIVA, main_codiva_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_OCCASEDIT, occas_handler);
m->set_handler(F_SOLAIVA, solaiva_handler); m->set_handler(F_SOLAIVA, solaiva_handler);
m->set_handler(F_SHEETIVA, iva_handler); m->set_handler(F_SHEETIVA, iva_handler);
@ -384,7 +386,7 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
} }
else else
{ {
if (nriga >= 2 && nriga <= 9) if (nriga >= 2 && nriga <= RIGA_IVA_DIFFERITA)
continue; // Conti per IVA detraibile e non, ritenute sociali e fiscali continue; // Conti per IVA detraibile e non, ritenute sociali e fiscali
const char tipo = nriga == 1 ? 'T' : ' '; 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); oldposiva[d] = type2pos(tipod);
if (oldposiva[d] < 0 && !oldiva[d].is_zero()) if (oldposiva[d] < 0 && !oldiva[d].is_zero())
{ {
const int ri = d ? RIGA_IVA_DETRAIBILE : RIGA_IVA_NON_DETRAIBILE; TBill c;
TBill c; cau.bill(ri, 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()) if (c.ok())
{ {
const TString80 desc(cau.desc_agg(ri)); 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 ... if (!imposta.is_zero()) // Se c'e' imposta ...
{ // ... crea nuova riga per l'IVA { // ... crea nuova riga per l'IVA
const int ri = d ? RIGA_IVA_DETRAIBILE : RIGA_IVA_NON_DETRAIBILE; 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)); const TString desc(cau.desc_agg(ri));
TBill contoiva; cau.bill(ri, contoiva); cau.bill(ri, contoiva);
newposiva = a.set_cgs_row(-1, newiva, contoiva, desc, tipod); newposiva = a.set_cgs_row(-1, newiva, contoiva, desc, tipod);
} }
} }
else else
{ {
@ -2653,6 +2674,51 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
return true; 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 // Riempie i campi valuta a zero in base agli altri
void TPrimanota_application::gioca_cambi(int force) 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 ritfis_handler(TMask_field& f, KEY key);
static bool ritsoc_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 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 dataintra_handler(TMask_field& f, KEY key);
static bool corrlire_handler(TMask_field& f, KEY key); static bool corrlire_handler(TMask_field& f, KEY key);
static bool corrvaluta_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_DETRAIBILE 3
#define RIGA_IVA_NON_DETRAIBILE 4 #define RIGA_IVA_NON_DETRAIBILE 4
#define RIGA_IVA_DIFFERITA 10
// Fatture // Fatture
#define RIGA_RITENUTE_FISCALI 8 #define RIGA_RITENUTE_FISCALI 8

View File

@ -242,10 +242,17 @@ void TMovimentoPN_VE::enter_row(int i, const TString & descr_cr)
if (newposiva < 0) if (newposiva < 0)
{ {
const TString80 d(_caus->desc_agg(RIGA_IVA_DETRAIBILE)); int ri;
TBill contoiva; 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()) if (contoiva.ok())
newposiva = set_cg_rec(-1, val, contoiva, d, 'D'); newposiva = set_cg_rec(-1, val, contoiva, d, 'D');
} }