Patch level : 12.0 428

Files correlati     :

Corretta l'impostazione del flag split payment nella contabilizzazione fatture.
Gestita la concorrenza nell'attribuzione del protocollo IVA sempre in contabilizzazione

git-svn-id: svn://10.65.10.50/branches/R_10_00@24026 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
bonazzi 2017-08-04 17:52:35 +00:00
parent d0696d8126
commit 53df66542c
5 changed files with 454 additions and 438 deletions

View File

@ -907,6 +907,8 @@ public:
const TString & codesiva() const;
void get_protocolli_esenzione(TString & esenzione, TString & data_esenzione,
TString & registrazione, TString & data_registrazione) const;
bool is_split_payment() const;
void cli2doc() { clifor().cli2doc(*this); }
TDocumento ();
TDocumento (const TDocumento& d);

View File

@ -14,6 +14,8 @@
#include "../sv/svlib01.h"
#endif
#include <causali.h>
#include "veini.h"
#include "velib.h"
#include "sconti.h"
@ -3240,3 +3242,27 @@ void TDocumento::get_protocolli_esenzione(TString& esenzione, TString& data_esen
data_registrazione = c.vendite().get(CFV_NSDATAREG);
}
}
bool TDocumento::is_split_payment() const
{
bool yes = get_int(DOC_ANNO) >= 2015 && clifor().get_bool(CLI_SPLITPAY) &&
(is_fattura() || is_nota_credito()) && !imposta().is_zero() && ritenute().is_zero();
if (yes)
{
const TRectype& causale = cache().get(LF_CAUSALI, tipo().causale());
const int rsi = causale.get_int(CAU_REGSPIVA);
yes = rsi != 13 && rsi != 50 && rsi != 51; // No reverse charge
if(yes && physical_rows() > 0)
{
TAssoc_array& table = ((TDocumento*)this)->tabella_iva();
for (TRiepilogo_iva * ri = (TRiepilogo_iva *) table.get(); ri != NULL && yes;
ri = (TRiepilogo_iva *) table.get())
{
TString ivaPA = cache().get("%IVA", ri->cod_iva().codice()).get("S12");
yes = ivaPA != "N6" && ivaPA != "N5";
}
}
}
return yes;
}

View File

@ -1212,11 +1212,10 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
{
if (_nump_iva) // Reperisce l'ultimo numero di protocollo dal registro IVA
{
static int _ult_prot = -1;
if (_ult_prot < 0)
_ult_prot = registro.protocol();
_ult_prot++;
ult_prot = _ult_prot;
TRegistro reg(registro);
ult_prot = registro.protocol();
ult_prot++;
if (ult_prot <= 0)
{
_error = ultprot_error;
@ -1428,6 +1427,7 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
if (_caus->valintra())
mov_rec.put(MOV_CORRVALUTA, corrval.get_num());
TDate dataintra = data_reg;
if (doc.tipo().nota_credito())
{
@ -1438,11 +1438,7 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
mov_rec.put(MOV_DATACOMPI, dataintra);
}
else
{
// Imposta nelle fatture di vendita normali il flag di split payment
if (mov_rec.get_char(MOV_SPLITPAY) <= ' ')
mov_rec.put(MOV_SPLITPAY, is_split_payment(mov_rec) ? 'S': 'N');
}
mov_rec.put(MOV_SPLITPAY, doc.is_split_payment() ? 'S': 'N'); // Imposta nelle fatture di vendita normali il flag di split payment
}
}

View File

@ -356,16 +356,8 @@ void TDocumentoEsteso::set_riga_tic()
}
}
bool TDocumentoEsteso::is_split_payment() const
{/*
const long numregcg = get_long(DOC_NUMREG);
if (numregcg > 0)
{
const TRectype& mov = cache().get(LF_MOV, numregcg);
if (!mov.empty())
return ::is_split_payment(mov);
}
*/
/*bool TDocumentoEsteso::is_split_payment() const
{
bool yes = get_int(DOC_ANNO) >= 2015 && clifor().get_bool(CLI_SPLITPAY) &&
(is_fattura() || is_nota_credito()) && !imposta().is_zero() && ritenute().is_zero();
if (yes)
@ -386,7 +378,7 @@ bool TDocumentoEsteso::is_split_payment() const
}
}
return yes;
}
}*/
void TDocumentoEsteso::set_riga_split()
{

View File

@ -52,7 +52,7 @@ public:
int summary_items() { return tabella_iva().items();} // ritorna il numero di righe in totale della tabellina
const TAssoc_array& summary() const { return _summary_table; }
const TArray& summary_array() const { return _summary_array;}
bool is_split_payment() const;
// bool is_split_payment() const;
// Funzioni per il ricalcolo delle scadenze
void scadenze_reset(); // riposiziona sulla prima scadenza