Corretta gestione note di credito 2012 e provati inferiori a 3600 Euro

git-svn-id: svn://10.65.10.50/branches/R_10_00@22644 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-04-24 10:21:12 +00:00
parent fa23d3722d
commit 225725bb5a
2 changed files with 25 additions and 13 deletions

View File

@ -132,13 +132,13 @@ TExclusion_mode TDati_rilevanti_array::add(const TRectype& alleg, bool send_all,
if (a.codice_fiscale().blank() && a.partita_IVA().blank() && a.italiano()) if (a.codice_fiscale().blank() && a.partita_IVA().blank() && a.italiano())
return segnala_riga(alleg, em_no_allegato, log); return segnala_riga(alleg, em_no_allegato, log);
const int anno = alleg.get_int(ALL_ANNO);
if (fe_is_nota_variazione(alleg)) if (fe_is_nota_variazione(alleg))
{ {
TRectype& a = (TRectype&)alleg; // Triste necessità TRectype& a = (TRectype&)alleg; // Triste necessità
if (!send_all && ignora <= em_importo_limite) if (!send_all && ignora <= em_importo_limite)
{ {
const int anno = alleg.get_int(ALL_ANNO);
const real importo = abs(alleg.get_real(ALL_IMPORTO)); const real importo = abs(alleg.get_real(ALL_IMPORTO));
if (importo < fe_importo_limite(anno)) if (importo < fe_importo_limite(anno))
{ {
@ -147,19 +147,22 @@ TExclusion_mode TDati_rilevanti_array::add(const TRectype& alleg, bool send_all,
} }
} }
if (ignora == em_incluso) if (ignora <= em_importo_limite)
{ {
TDate datarett = a.get(ALL_DATARETT); TDate datarett = a.get(ALL_DATARETT);
if (datarett.ok()) if (datarett.ok())
{ {
if (datarett.year() < 2010) const int a = datarett.year();
if (a < 2010 || a > anno)
ignora = segnala_riga(alleg, em_data_limite, log); ignora = segnala_riga(alleg, em_data_limite, log);
} }
else else
{ {
const int anno = alleg.get_int(ALL_ANNO) - 1; const TDate datareg = a.get(ALL_DATAREG);
a.put(ALL_DATARETT, TDate(31, 12, anno)); const int ar = datareg.year();
if (anno < 2010) if (ar == anno)
a.put(ALL_DATARETT, TDate(31, 12, anno-1));
else
ignora = segnala_riga(alleg, em_data_limite, log); ignora = segnala_riga(alleg, em_data_limite, log);
} }
@ -173,7 +176,6 @@ TExclusion_mode TDati_rilevanti_array::add(const TRectype& alleg, bool send_all,
const TString80 contratto = get_base_contract(alleg); const TString80 contratto = get_base_contract(alleg);
if (ignora <= em_importo_limite) if (ignora <= em_importo_limite)
{ {
const int anno = alleg.get_int(ALL_ANNO);
TExclusion_mode new_mode = (alleg.get_real(ALL_IMPORTO) < fe_importo_limite(anno)) ? em_importo_limite : em_incluso; TExclusion_mode new_mode = (alleg.get_real(ALL_IMPORTO) < fe_importo_limite(anno)) ? em_importo_limite : em_incluso;
if (new_mode == em_importo_limite && contratto.full()) if (new_mode == em_importo_limite && contratto.full())
{ {
@ -187,7 +189,7 @@ TExclusion_mode TDati_rilevanti_array::add(const TRectype& alleg, bool send_all,
} }
} }
if (!send_all && ignora != em_incluso) if (ignora > em_importo_limite || (!send_all && ignora == em_importo_limite))
return ignora; return ignora;
// Creo un nuovo record // Creo un nuovo record
@ -260,6 +262,7 @@ void TDati_rilevanti_array::add(TArray& fatture, TArray& note, bool send_all, TL
const TRectype& fatt = *(const TRectype*)pfatt; const TRectype& fatt = *(const TRectype*)pfatt;
add(fatt, send_all, log); add(fatt, send_all, log);
} }
// Aggiunge note // Aggiunge note
FOR_EACH_ARRAY_ITEM(note, nn, pnot) FOR_EACH_ARRAY_ITEM(note, nn, pnot)
{ {
@ -774,6 +777,7 @@ TRecnotype TDati_rilevanti_msk::genera_alleg()
} }
controlla_mov(mov_rec); controlla_mov(mov_rec);
const TDate datareg = mov_rec.get(MOV_DATAREG);
if (fe_is_nota_variazione(mov_rec)) if (fe_is_nota_variazione(mov_rec))
{ {
const TDate datarett = mov_rec.get(MOV_DATARETT); const TDate datarett = mov_rec.get(MOV_DATARETT);
@ -782,7 +786,6 @@ TRecnotype TDati_rilevanti_msk::genera_alleg()
} }
else else
{ {
const TDate datareg = mov_rec.get(MOV_DATAREG);
if (datareg.year() == anno) // Scarta fatture dell'anno dopo if (datareg.year() == anno) // Scarta fatture dell'anno dopo
elabora_movimento(mov_rec, falleg); elabora_movimento(mov_rec, falleg);
} }
@ -968,11 +971,14 @@ bool TDati_rilevanti_msk::send_fatt(const TRectype& alleg, TDati_rilevanti_set&
const TString& paiv = anag.partita_IVA(); const TString& paiv = anag.partita_IVA();
if (paiv.blank()) if (paiv.blank())
{ {
const real tot = real(importo+imposta);
if (tot < 3600) // Limite imposto dal programma di controllo dal 2011 in poi
return false;
operaz.new_rec("1"); // Operazioni con soggetti residenti non titolari di partita IVA operaz.new_rec("1"); // Operazioni con soggetti residenti non titolari di partita IVA
operaz.set(2, anag.codice_fiscale()); operaz.set(2, anag.codice_fiscale());
operaz.set(3, alleg.get(ALL_DATAREG)); operaz.set(3, alleg.get(ALL_DATAREG));
operaz.set(4, alleg.get(ALL_MODPAG)); operaz.set(4, alleg.get(ALL_MODPAG));
operaz.set(5, real(importo+imposta)); operaz.set(5, tot);
} }
else else
{ {
@ -1113,7 +1119,8 @@ bool TDati_rilevanti_msk::send_alleg()
{ {
if (!pi.addstatus(1)) if (!pi.addstatus(1))
break; break;
if (send_all || !data[a].get_int(ALL_IGNORA)) const TExclusion_mode em = (TExclusion_mode)data[a].get_int(ALL_IGNORA);
if (em == em_incluso || (em == em_importo_limite && send_all))
send_rec(data[a], recset); send_rec(data[a], recset);
} }
} }

View File

@ -299,6 +299,11 @@ bool TAnagrafica::init(const TRectype& rec)
_cofi = rec.get(CLI_COFI); _cofi = rec.get(CLI_COFI);
if (rec.get(CLI_PAIV).not_empty()) if (rec.get(CLI_PAIV).not_empty())
_paiv = rec.get(CLI_PAIV); _paiv = rec.get(CLI_PAIV);
// Ci sono anagrafiche con codice fiscale numerico e partita IVA vuota!
if (_paiv.blank() && pi_check("", _cofi))
_paiv = _cofi;
build_ind_res(rec, CLI_INDCF, CLI_CIVCF); build_ind_res(rec, CLI_INDCF, CLI_CIVCF);
// Prevale sempre la ragione sociale del cliente: "Il cliente ha sempre ragione". // Prevale sempre la ragione sociale del cliente: "Il cliente ha sempre ragione".