Patch level : 12.0 470

Files correlati     : ve
Commento            : Sistemato calcolo doppio durante il controllo del plafond per record già registrati

git-svn-id: svn://10.65.10.50/branches/R_10_00@24144 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2017-10-16 12:13:45 +00:00
parent ed2efa6901
commit ed7f2c696d
2 changed files with 22 additions and 6 deletions

View File

@ -564,7 +564,7 @@ int TMotore_application::rewrite( const TMask& m ) // C 90
d = ((TDocumento_mask&)m).doc(); // Trasferisce il documento da maschera a record
// Aggiunte per il controllo plafond
if(has_module(LIAUT, CHK_DONGLE) && d.tipo().is_fattura() && ini_get_bool(CONFIG_DITTA, "ve", "USELETTERE") && checkPlafondAvaibility(d) == -1)
if(has_module(LIAUT, CHK_DONGLE) && d.tipo().is_fattura() && ini_get_bool(CONFIG_DITTA, "ve", "USELETTERE") && checkPlafondAvaibility(d, true) == -1)
{
return _isnowarning;
}
@ -1296,24 +1296,40 @@ void TMotore_application::preview()
save_and_print(true, screenvis);
}
int TMotore_application::checkPlafondAvaibility(TDocumento d)
int TMotore_application::checkPlafondAvaibility(TDocumento d, bool alreadyExist)
{
TLi_manager plafond(d.tipocf(), d.codcf(), d.data());
if(!plafond.hasValidPlafond()) // Se il cliente non mi interessa
return NOERR;
TAssoc_array tabIva = d.tabella_iva(true);
TDocumento oldDoc;
TAssoc_array oldTabIva;
// Se il documento è già stato scritto nel DB sottraggo solo le modifiche
if(alreadyExist)
{
oldDoc = TDocumento('D', d.anno(), d.numerazione(), d.numero());
oldTabIva = oldDoc.tabella_iva(true);
}
real diff = plafond.getPlaRes();
real diff(ZERO);
for (TRiepilogo_iva * totali = (TRiepilogo_iva *) tabIva.get(); totali != NULL; totali = (TRiepilogo_iva *) tabIva.get())
{
if(plafond.checkIva(totali->cod_iva().codice())) // Se l'iva del documento è diversa non mi interessa
{
diff = plafond.getPlaRes() - (cache().get("%TIP", d.tipo().codice()).get_bool("B7") ? -totali->imp_orig() : totali->imp_orig());
real docVal = cache().get("%TIP", d.tipo().codice()).get_bool("B7") ? -totali->imp_orig() : totali->imp_orig();
if(alreadyExist)
{
TRiepilogo_iva * oldRI = (TRiepilogo_iva *) oldTabIva.objptr(totali->cod_iva().codice());
docVal -= cache().get("%TIP", oldDoc.tipo().codice()).get_bool("B7") ? -oldRI->imp_orig() : oldRI->imp_orig();
}
diff -= docVal;
break;
}
}
if(diff >= 0)
if(diff >= ZERO)
return NOERR;
else
{

View File

@ -108,7 +108,7 @@ public:
virtual const char* get_next_key( );
int checkPlafondAvaibility(TDocumento d); // Controllo aggiunto dal modulo Li per verificare la disponibilità di plafond
int checkPlafondAvaibility(TDocumento d, bool alreadyExist = false); // Controllo aggiunto dal modulo Li per verificare la disponibilità di plafond
};
inline TMotore_application& app() { return (TMotore_application &) main_app(); }