Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento :riportata gestione apertura/chiusura con trattazione dei cespiti alieni git-svn-id: svn://10.65.10.50/trunk@16612 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
e43f78e3ad
commit
06f1cf32e3
@ -68,8 +68,7 @@ int TForce_mov_qmask::calcola_ammo_eliminate()
|
||||
{
|
||||
const int ese = get_int(F_ESERCIZIO);
|
||||
|
||||
TString16 str;
|
||||
str.format("%04d", ese);
|
||||
TString4 str; str.format("%04d", ese);
|
||||
|
||||
const TRectype& curr_cce = cache().get("CCE", str);
|
||||
if (curr_cce.get_bool("B3")) //possibilitá ammortamenti su parti eliminate (si prosegue solo se TRUE)
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "catdi.h"
|
||||
#include "cespi.h"
|
||||
#include "salce.h"
|
||||
#include "movce.h"
|
||||
|
||||
class TOpenesc_mask : public TAutomask
|
||||
{
|
||||
@ -324,8 +325,39 @@ void TOpenesc::incr_riv(TRectype& rec, const char* riv, const char* anni) const
|
||||
}
|
||||
}
|
||||
|
||||
static bool bad_alien(const TDate& dtalien, const TDate& fines)
|
||||
{
|
||||
if (!dtalien.ok() || dtalien == fines)
|
||||
return true;
|
||||
|
||||
if (dtalien < fines && dtalien.is_end_month())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool get_last_cespi(int logicnum, const char* filter, int key,
|
||||
const TString& idcespite, const char* field, TString& value)
|
||||
{
|
||||
bool ok = false;
|
||||
TRelation rel(logicnum);
|
||||
TRectype& rec = rel.curr();
|
||||
rec.put("IDCESPITE", idcespite);
|
||||
TCursor cur(&rel, filter, key, &rec, &rec);
|
||||
const TRecnotype items = cur.items();
|
||||
if (items > 0)
|
||||
{
|
||||
cur.freeze();
|
||||
cur = items-1;
|
||||
value = rec.get(field);
|
||||
ok = value.full();
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TOpenesc::test_alien(const TRectype& salce, const TDate& fines) const
|
||||
{
|
||||
// Il cespite e' senza elementi e senza valore -> Dovrebbe risultare alienato
|
||||
if (null_fields(salce, SALCE_NUMELE, SALCE_CSTO, SALCE_RIV75, SALCE_RIV83,
|
||||
SALCE_RIV90, SALCE_RIV91, SALCE_RIVGF, SALCE_RIVGC))
|
||||
{
|
||||
@ -334,11 +366,46 @@ void TOpenesc::test_alien(const TRectype& salce, const TDate& fines) const
|
||||
cespiti.put(CESPI_IDCESPITE, idcespite);
|
||||
if (cespiti.read() == NOERR)
|
||||
{
|
||||
const TDate dtcomp = cespiti.get_date(CESPI_DTCOMP);
|
||||
if (dtcomp <= fines)
|
||||
const TDate dtcomp = cespiti.get(CESPI_DTCOMP);
|
||||
const TDate dtalien = cespiti.get(CESPI_DTALIEN);
|
||||
// E' stato comprato tempo fa' ... ma ha una data di alienazione nulla o sospetta
|
||||
if (dtcomp <= fines && bad_alien(dtalien, fines))
|
||||
{
|
||||
cespiti.put(CESPI_DTALIEN, fines);
|
||||
cespiti.rewrite();
|
||||
TDate alien2;
|
||||
if (!alien2.ok())
|
||||
{
|
||||
// Cerca ultimo movimento di vendita/eliminazione
|
||||
TString16 value;
|
||||
if (get_last_cespi(LF_MOVCE, "SEGNO=\"-\"", 2,
|
||||
idcespite, MOVCE_DTMOV, value))
|
||||
{
|
||||
const TDate dta(value);
|
||||
if (dta <= fines)
|
||||
alien2 = dta;
|
||||
}
|
||||
}
|
||||
if (!alien2.ok())
|
||||
{
|
||||
// Cerca ultimo saldo non nullo
|
||||
TString4 value;
|
||||
if (get_last_cespi(LF_SALCE, "(TPSALDO=\"2\")&&(NUMELE!=\"0\")", 1,
|
||||
idcespite, SALCE_CODES, value))
|
||||
{
|
||||
const int codes = atoi(value)+1;
|
||||
TEsercizi_contabili esc;
|
||||
TDate dti, dtf; esc.code2range(codes, dti, dtf);
|
||||
if (dtf <= fines)
|
||||
alien2 = dtf;
|
||||
}
|
||||
}
|
||||
if (!alien2.ok())
|
||||
alien2 = fines;
|
||||
// Se ho trovato una data di alienazione diversa, allora la aggiorno
|
||||
if (!dtalien.ok() || alien2 < dtalien)
|
||||
{
|
||||
cespiti.put(CESPI_DTALIEN, alien2);
|
||||
cespiti.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user