Patch level : 10.0 patch 356

Files correlati     : lv0
Ricompilazione Demo : [ ]
Commento            :
0001389: Clifogiac non pulito annullando il contratto
Descrizione  Annullando il contratto non mi ha cancellato i campi del clifogiac

Da accordi telefonici cancello solo se qta modificabili


git-svn-id: svn://10.65.10.50/trunk@19074 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2009-06-23 15:04:23 +00:00
parent 5e4df878a9
commit f8697c90e2

View File

@ -3,6 +3,9 @@
#include <execp.h>
#include <progind.h>
#include "lvcondv.h"
#include "lvrcondv.h"
#include "lvlib.h"
#include "../cg/cglib01.h"
#include "../mg/clifogiac.h"
@ -346,18 +349,6 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
}
}
break;
/*
case F_CALCCONS:
//Abilito/disabilito il conguaglio sulle righe nel caso opportuno
if (e == fe_modify || e == fe_init)
{
TSheet_field& ss = sfield(F_RIGHE);
const bool on = atoi(o.get()) == 1;
ss.enable_cell(ss.selected(), ss.cid2index(S_CONG), on);
ss.force_update(ss.selected());
}
break;
*/
case S_CODART:
if (!o.empty()) //se il campo risulta pieno
{
@ -501,7 +492,7 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
}
}
}
break;
break;
default:
//se sto modificando un campo con indice > 500 e diverso da F_CAUSLAVDESCRIG
//allora forzo l'update dello sheet sulla riga selezionata
@ -844,9 +835,16 @@ bool TContratti_app::protected_record(TRectype & rec)
return !cont.can_be_deleted();
}
//REMOVE: ridefinizione del metodo remove() delle TRelartion_application
//REMOVE: ridefinizione del metodo remove() delle TRelation_application
bool TContratti_app::remove()
{
//recupero i dati dalla testata del contratto prima di cancellarla
const TRectype& tcont = get_relation()->curr();
const int daanno = tcont.get_date(LVCONDV_DATAIN).year();
const int aanno = TDate(TODAY).year();
const long clifo = tcont.get_long(LVCONDV_CODCF);
const long indsp = tcont.get_long(LVCONDV_CODINDSP);
//eseguo la remove standard
bool ok = TRelation_application::remove();
@ -854,11 +852,30 @@ bool TContratti_app::remove()
if(ok)
{
TISAM_recordset righeset(build_query(*_msk));
TLocalisamfile& file=righeset.cursor()->file();
for (bool ok = righeset.move_first(); ok; ok = righeset.move_next())
TLocalisamfile& rcont = righeset.cursor()->file();
//elimino le giacenze per cliente SOLO se le quantità sono modificabili
if (ini_get_bool(CONFIG_DITTA, "lv", "Qtamodi"))
{
file.remove();
TLocalisamfile magcli(LF_CLIFOGIAC);
for (bool ok = righeset.move_first(); ok; ok = righeset.move_next())
{
//con questo ciclo elimino tutte le giacenze per cliente dall'anno di inizio validità
//del contratto all'anno attuale (essendo nel ciclo che scorre le righe contratto
//elimino tutti gli articoli presenti per quel contratto)
for (int y = daanno; y <= aanno; y++)
{
magcli.put(CLIFOGIAC_ANNOES, y);
magcli.put(CLIFOGIAC_TIPOCF, 'C');
magcli.put(CLIFOGIAC_CODCF, clifo);
magcli.put(CLIFOGIAC_INDSPED, indsp);
magcli.put(CLIFOGIAC_CODART, righeset.get(LVRCONDV_CODART).as_string());
magcli.put(CLIFOGIAC_NRIGA, 1);
magcli.remove();
}
}
rcont.remove();
}
//elimino i planning esistenti per quel cliente - contratto
elimina_planning(_msk->get_long(F_CODCONT),_msk->get_long(F_CODCF));