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);
|
const int ese = get_int(F_ESERCIZIO);
|
||||||
|
|
||||||
TString16 str;
|
TString4 str; str.format("%04d", ese);
|
||||||
str.format("%04d", ese);
|
|
||||||
|
|
||||||
const TRectype& curr_cce = cache().get("CCE", str);
|
const TRectype& curr_cce = cache().get("CCE", str);
|
||||||
if (curr_cce.get_bool("B3")) //possibilitá ammortamenti su parti eliminate (si prosegue solo se TRUE)
|
if (curr_cce.get_bool("B3")) //possibilitá ammortamenti su parti eliminate (si prosegue solo se TRUE)
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include "catdi.h"
|
#include "catdi.h"
|
||||||
#include "cespi.h"
|
#include "cespi.h"
|
||||||
#include "salce.h"
|
#include "salce.h"
|
||||||
|
#include "movce.h"
|
||||||
|
|
||||||
class TOpenesc_mask : public TAutomask
|
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
|
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,
|
if (null_fields(salce, SALCE_NUMELE, SALCE_CSTO, SALCE_RIV75, SALCE_RIV83,
|
||||||
SALCE_RIV90, SALCE_RIV91, SALCE_RIVGF, SALCE_RIVGC))
|
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);
|
cespiti.put(CESPI_IDCESPITE, idcespite);
|
||||||
if (cespiti.read() == NOERR)
|
if (cespiti.read() == NOERR)
|
||||||
{
|
{
|
||||||
const TDate dtcomp = cespiti.get_date(CESPI_DTCOMP);
|
const TDate dtcomp = cespiti.get(CESPI_DTCOMP);
|
||||||
if (dtcomp <= fines)
|
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);
|
TDate alien2;
|
||||||
cespiti.rewrite();
|
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