Patch level : 12.0 344

Files correlati     : ve0
Commento            : 
- Aggiunto il controllo per verificare che il plafond non venga superato durante l'immissione di una fattura, se è presente un esubero verrà mostrata una warning_box che avvisa l'utente.
- Aggiunto caso _isnowarning che non mostra la warning_box con il messaggio di errore, così da non mostrarne più di uno.


git-svn-id: svn://10.65.10.50/branches/R_10_00@23626 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2017-02-16 14:38:37 +00:00
parent 21d878019f
commit 269e2cd65b
5 changed files with 1320 additions and 1286 deletions

View File

@ -95,7 +95,8 @@ enum TIsamerr {
_isreinsert = 224, // @emem Chiave primaria duplicata
_islocked = 225, // @emem Record bloccato
_isbadtrc = 226, // @emem Tracciato Record errato o mancante
_istrcerr = 227 // @emem Tracciato record incoerente
_istrcerr = 227, // @emem Tracciato record incoerente
_isnowarning = 86552 // @emem Il messaggio di errore è già stato visualizzato
};
typedef long TRecnotype;

View File

@ -1206,6 +1206,8 @@ bool TRelation_application::save(bool check_dirty)
case _isreinsert:
warning_box(TR("Esiste già un elemento con la stessa chiave"));
break;
case _isnowarning:
break;
default:
error_box(FR("Impossibile registrare i dati: errore %d"), err);
break;

View File

@ -6,6 +6,7 @@
#include <tabutil.h>
#include <utility.h>
#include <urldefid.h>
#include <lilib01.h>
#include "ve0100.h"
#include "veini.h"
@ -505,7 +506,16 @@ int TMotore_application::write( const TMask& m ) // C 90
}
}
const int err = TRelation_application::write(m);
// Aggiunte per il controllo plafond
int err = NOERR;
if(has_module(LIAUT, CHK_DONGLE) && d.tipo().is_fattura() && ini_get_bool(CONFIG_DITTA, "ve", "USELETTERE"))
{
err = checkPlafondAvaibility(d);
}
if (err == NOERR)
err = TRelation_application::write(m);
if (err == NOERR)
{
@ -533,7 +543,18 @@ int TMotore_application::rewrite( const TMask& m ) // C 90
if (d.bloccato())
return NOERR;
d = ((TDocumento_mask&)m).doc(); // Trasferisce il documento da maschera a record
const int err = TRelation_application::rewrite(m);
// Aggiunte per il controllo plafond
int err = NOERR;
if(has_module(LIAUT, CHK_DONGLE) && d.tipo().is_fattura() && ini_get_bool(CONFIG_DITTA, "ve", "USELETTERE"))
{
err = checkPlafondAvaibility(d);
}
if (err == NOERR)
err = TRelation_application::rewrite(m);
if (err == NOERR)
{
do_elab(d);
@ -1252,6 +1273,24 @@ void TMotore_application::preview()
save_and_print(true, screenvis);
}
int TMotore_application::checkPlafondAvaibility(TDocumento d)
{
int err;
TLi_manager plafond(d.tipocf(), d.codcf(), TDate(TODAY).year());
TAssoc_array tabIva = d.tabella_iva(true);
TRiepilogo_iva * totali = static_cast<TRiepilogo_iva *>(tabIva.get());
real diff = plafond.getPlaRes() - totali->imp_orig();
if(diff >= 0)
return NOERR;
else
{
TString msg("Attenzione il plafond è stato superato di ");
msg << TCurrency(-diff).string() << "";
warning_box(msg);
return _isnowarning;
}
}
int ve0100( int argc, char* argv[])
{
TMotore_application a;

View File

@ -106,6 +106,8 @@ public:
virtual ~TMotore_application( ) { }
virtual const char* get_next_key( );
int checkPlafondAvaibility(TDocumento d); // Controllo aggiunto dal modulo Li per verificare la disponibilità di plafond
};
inline TMotore_application& app() { return (TMotore_application &) main_app(); }

View File

@ -1196,30 +1196,23 @@ void TDocumento_mask::cli2mask(bool force_load)
const TDate datadoc = doc().get(DOC_DATADOC);
const bool split_payment = datadoc.year() >= 2015 && c.get_bool(CLI_SPLITPAY);
const bool ivadiff = !split_payment && alleg == 7;
TMask_field* ld = find_by_id(F_LIQDIFF);
if (ld)
{
const bool ivadiff = !split_payment && ven_rec.get_bool(CFV_FATTSOSP);
if (ivadiff)
{
TMask_field* ld = find_by_id(F_LIQDIFF);
if (ld)
{
const bool gld = ini_get_bool(CONFIG_DITTA, "cg", "GesLiqDiff");
if (gld != ld->active())
ld->enable(gld);
ld->set(gld ? "X" : "");
}
else
{
ld->disable();
ld->set("");
}
}
TMask_field* ixc = find_by_id(F_IVAXCASSA);
if (ixc)
if (ixc && ixc->active())
{
const bool IVAxCassa = !split_payment && !ivadiff && alleg < 5 && gestione_IVAxCassa(datadoc);
ixc->enable(IVAxCassa);
ixc->set(IVAxCassa ? "X" : "");
}
@ -4588,12 +4581,10 @@ void TBarcode_mask::on_idle()
{
_last_key = 0;
const TString& code = efield(DLG_USER).get_window_data();
const int codeType = get_int(DLG_BARCODE_TYPE);
if (code.len() >= codeType)
if (code.len() >= 8)
{
if (on_code_entered(code))
reset(DLG_USER);
field(DLG_USER).set_focus();
}
}
return TAutomask::on_idle();
@ -4608,12 +4599,11 @@ bool TBarcode_mask::on_field_event(TOperable_field& o, TField_event e, long joly
return true;
}
TBarcode_mask::TBarcode_mask(TDocumento_mask& dm) : TAutomask("BAR CODE READER", 1, 40, 10, -1, 4), _dm(dm), _last_key(0)
TBarcode_mask::TBarcode_mask(TDocumento_mask& dm) : TAutomask("BAR CODE READER", 1, 40, 3, -1, 4), _dm(dm), _last_key(0)
{
TButton_tool& bt = add_button_tool(DLG_QUIT, TR("Fine"), TOOL_QUIT);
add_button_tool(DLG_INFO, TR("Info"), TOOL_INFO);
add_string(DLG_USER, 0, PR("Codice "), 1, 1, 128, "", 30);
add_list(DLG_BARCODE_TYPE, 0, PR("Tipo codice"), 1, 3, 20, "P", "8|13", "EAN 8|EAN 13");
set_handlers();
}