Patch level : 12.0 476
Files correlati : ve Commento : Adattata funzione checkPlafondAvaibility() per la nuova gestione git-svn-id: svn://10.65.10.50/branches/R_10_00@24181 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
695d69f859
commit
850c5f4f5a
@ -528,7 +528,7 @@ int TMotore_application::write( const TMask& m ) // C 90
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Aggiunte per il controllo plafond
|
// 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") && checkPlafondAvailability(d) == -1)
|
||||||
{
|
{
|
||||||
return _isnowarning;
|
return _isnowarning;
|
||||||
}
|
}
|
||||||
@ -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
|
d = ((TDocumento_mask&)m).doc(); // Trasferisce il documento da maschera a record
|
||||||
|
|
||||||
// Aggiunte per il controllo plafond
|
// Aggiunte per il controllo plafond
|
||||||
if(has_module(LIAUT, CHK_DONGLE) && d.tipo().is_fattura() && ini_get_bool(CONFIG_DITTA, "ve", "USELETTERE") && checkPlafondAvaibility(d, true) == -1)
|
if(has_module(LIAUT, CHK_DONGLE) && d.tipo().is_fattura() && ini_get_bool(CONFIG_DITTA, "ve", "USELETTERE") && checkPlafondAvailability(d, true) == -1)
|
||||||
{
|
{
|
||||||
return _isnowarning;
|
return _isnowarning;
|
||||||
}
|
}
|
||||||
@ -1296,7 +1296,7 @@ void TMotore_application::preview()
|
|||||||
save_and_print(true, screenvis);
|
save_and_print(true, screenvis);
|
||||||
}
|
}
|
||||||
|
|
||||||
int TMotore_application::checkPlafondAvaibility(TDocumento d, bool alreadyExist)
|
int TMotore_application::checkPlafondAvailability(TDocumento& d, bool alreadyExist)
|
||||||
{
|
{
|
||||||
TLi_manager plafond(d.tipocf(), d.codcf(), d.data());
|
TLi_manager plafond(d.tipocf(), d.codcf(), d.data());
|
||||||
if(!plafond.hasValidPlafond()) // Se il cliente non mi interessa
|
if(!plafond.hasValidPlafond()) // Se il cliente non mi interessa
|
||||||
@ -1304,40 +1304,71 @@ int TMotore_application::checkPlafondAvaibility(TDocumento d, bool alreadyExist)
|
|||||||
|
|
||||||
TAssoc_array tabIva = d.tabella_iva(true);
|
TAssoc_array tabIva = d.tabella_iva(true);
|
||||||
TDocumento oldDoc;
|
TDocumento oldDoc;
|
||||||
TAssoc_array oldTabIva;
|
bool recalc = false;
|
||||||
// Se il documento è già stato scritto nel DB sottraggo solo le modifiche
|
// Se il documento è già stato scritto nel DB sottraggo solo le modifiche
|
||||||
if(alreadyExist)
|
if(alreadyExist)
|
||||||
{
|
{
|
||||||
oldDoc = TDocumento('D', d.anno(), d.numerazione(), d.numero());
|
oldDoc = TDocumento('D', d.anno(), d.numerazione(), d.numero());
|
||||||
oldTabIva = oldDoc.tabella_iva(true);
|
// Prima di tutto controllo che siano modificabili tutti i documenti dopo di lui
|
||||||
|
// Visto che ho delle funzioni già pronti in TLi_manager gli passo il controllo
|
||||||
|
switch(plafond.checkEditability(oldDoc))
|
||||||
|
{
|
||||||
|
case -1:
|
||||||
|
// ERRORE!
|
||||||
|
error_box("Impossibile modificare il documento, ci sono presenti altri documenti non modificabili successivamente");
|
||||||
|
return -1;
|
||||||
|
case 1:
|
||||||
|
// Altri documenti!
|
||||||
|
if(!yesno_box("Attenzione!! Sono presenti altri documenti successivi a questo, per continuare bisogna ricalcolarli tutti!\nVuoi continuare?"))
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
recalc = true;
|
||||||
|
// Notare la mancanza del break
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
plafond.stornaDoc(oldDoc, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
real plaRes = plafond.getPlaRes();
|
||||||
real diff = plafond.getPlaRes();
|
TString asd = plaRes.string();
|
||||||
|
real plaUtil = ZERO;
|
||||||
|
|
||||||
for (TRiepilogo_iva * totali = (TRiepilogo_iva *) tabIva.get(); totali != NULL; totali = (TRiepilogo_iva *) tabIva.get())
|
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
|
if(plafond.checkIva(totali->cod_iva().codice())) // Se l'iva del documento è diversa non mi interessa
|
||||||
{
|
{
|
||||||
real docVal = cache().get("%TIP", d.tipo().codice()).get_bool("B7") ? -totali->imp_orig() : totali->imp_orig();
|
plaUtil += 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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
asd = plaUtil.string();
|
||||||
if(diff >= ZERO)
|
TString used;
|
||||||
return NOERR;
|
if(d.tipo().nota_credito())
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
used << plafond.incrPlaf(d, plaUtil, true);
|
||||||
|
}
|
||||||
|
else if(plaRes - plaUtil >= ZERO)
|
||||||
|
{
|
||||||
|
// Il controllo è andato bene, adesso mi segno i plafond che ho utilizzato nel memo del documento
|
||||||
|
used << plafond.consPlaf(plaUtil, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(used.starts_with("ERRORE"))
|
||||||
|
{
|
||||||
|
plafond.revertModifiche();
|
||||||
TString msg("Attenzione il plafond è stato superato di ");
|
TString msg("Attenzione il plafond è stato superato di ");
|
||||||
msg << TCurrency(-diff).string() << "€";
|
msg << TCurrency(-(plaRes - plaUtil)).string() << "€";
|
||||||
warning_box(msg);
|
warning_box(msg);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(recalc)
|
||||||
|
{
|
||||||
|
// Insert some cool code here
|
||||||
|
}
|
||||||
|
d.put("PLAFOND", used);
|
||||||
|
return NOERR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int ve0100( int argc, char* argv[])
|
int ve0100( int argc, char* argv[])
|
||||||
|
@ -108,7 +108,7 @@ public:
|
|||||||
|
|
||||||
virtual const char* get_next_key( );
|
virtual const char* get_next_key( );
|
||||||
|
|
||||||
int checkPlafondAvaibility(TDocumento d, bool alreadyExist = false); // Controllo aggiunto dal modulo Li per verificare la disponibilità di plafond
|
int checkPlafondAvailability(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(); }
|
inline TMotore_application& app() { return (TMotore_application &) main_app(); }
|
||||||
|
6490
src/ve/velib03.cpp
6490
src/ve/velib03.cpp
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user