Patch level : 10.0 patch 236
Files correlati : lv3, lvbollac.msk Ricompilazione Demo : [ ] Commento : Corretta gestione date di inizio e fine dotazione temporanea in base alla causale git-svn-id: svn://10.65.10.50/trunk@18241 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4e25bb275d
commit
582182837d
126
lv/lv3100.cpp
126
lv/lv3100.cpp
@ -168,14 +168,14 @@ real TGiac_per_cli::giac_att(TRiga_documento& rdoc, bool odierna)
|
|||||||
//movimento o meno la dotazione temporanea/odierna a seconda di cosa prevede la causale
|
//movimento o meno la dotazione temporanea/odierna a seconda di cosa prevede la causale
|
||||||
if (cau.get_bool("B0"))
|
if (cau.get_bool("B0"))
|
||||||
{
|
{
|
||||||
const TCausale_magazzino & rit = cached_causale_magazzino(cau.get("S1"));
|
const TCausale_magazzino& rit = cached_causale_magazzino(cau.get("S1"));
|
||||||
const int s = rit.sgn(odierna ? s_dotod : s_dottm);
|
const int s = rit.sgn(odierna ? s_dotod : s_dottm);
|
||||||
|
|
||||||
saldo += real(s) * rdoc.get_real(RDOC_QTAGG1);
|
saldo += real(s) * rdoc.get_real(RDOC_QTAGG1);
|
||||||
}
|
}
|
||||||
if (cau.get_bool("B1"))
|
if (cau.get_bool("B1"))
|
||||||
{
|
{
|
||||||
const TCausale_magazzino & con = cached_causale_magazzino(cau.get("S2"));
|
const TCausale_magazzino& con = cached_causale_magazzino(cau.get("S2"));
|
||||||
const int s = con.sgn(odierna ? s_dotod : s_dottm);
|
const int s = con.sgn(odierna ? s_dotod : s_dottm);
|
||||||
|
|
||||||
saldo += real(s) * rdoc.get_real(RDOC_QTA);
|
saldo += real(s) * rdoc.get_real(RDOC_QTA);
|
||||||
@ -229,7 +229,7 @@ class TGestione_bolle_msk : public TDocumento_mask
|
|||||||
long _stcodcont;
|
long _stcodcont;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void arrotonda(const TMask& msk, real& quantita);
|
static void arrotonda(const TMask& msk, real& quantita);
|
||||||
//hanlder di documento:
|
//hanlder di documento:
|
||||||
static bool lv_bolla_handler(TMask_field& f, KEY k);
|
static bool lv_bolla_handler(TMask_field& f, KEY k);
|
||||||
//handler di riga:
|
//handler di riga:
|
||||||
@ -237,7 +237,6 @@ protected:
|
|||||||
static bool lv_consegnato_handler(TMask_field& f, KEY k);
|
static bool lv_consegnato_handler(TMask_field& f, KEY k);
|
||||||
static bool lv_codart_handler(TMask_field& f, KEY k);
|
static bool lv_codart_handler(TMask_field& f, KEY k);
|
||||||
static bool lv_causale_handler(TMask_field& f, KEY k);
|
static bool lv_causale_handler(TMask_field& f, KEY k);
|
||||||
static bool lv_dotmp_handler(TMask_field& f, KEY k);
|
|
||||||
|
|
||||||
static bool ss_notify(TSheet_field& ss, int r, KEY key);
|
static bool ss_notify(TSheet_field& ss, int r, KEY key);
|
||||||
|
|
||||||
@ -420,26 +419,6 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
|||||||
rdoc.put(RDOC_CODAGG1,causale);
|
rdoc.put(RDOC_CODAGG1,causale);
|
||||||
rdoc.put(RDOC_CODIVA,anamag.get(ANAMAG_CODIVA));
|
rdoc.put(RDOC_CODIVA,anamag.get(ANAMAG_CODIVA));
|
||||||
|
|
||||||
//setto le date di inizio e fine della dotazione temporanea
|
|
||||||
TDate dadata = rcont.get(LVRCONDV_INDTTMP).as_date();
|
|
||||||
TDate adata = rcont.get(LVRCONDV_FIDTTMP).as_date();
|
|
||||||
if (dadata.ok() && adata.ok())
|
|
||||||
{
|
|
||||||
rdoc.put("DADATATMP", dadata);
|
|
||||||
if (adata < datadoc)
|
|
||||||
rdoc.put("ADATATMP", adata);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//instanzio in TRecordset sui giri
|
|
||||||
TISAM_recordset giri("USE LVRCONSPLAN KEY 3\nSELECT DTCONS>#DATADOC\nFROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT");
|
|
||||||
giri.set_var("#DATADOC", datadoc);
|
|
||||||
giri.set_var("#CODCF", codcf);
|
|
||||||
giri.set_var("#CODCONT", codcont);
|
|
||||||
if (giri.move_first())
|
|
||||||
rdoc.put("ADATATMP", giri.get(LVRCONSPLAN_DTCONS).as_date());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//elaborazione per il prezzo: o lo prendo dalle righe contratto, o dall'anagrafica magazzino
|
//elaborazione per il prezzo: o lo prendo dalle righe contratto, o dall'anagrafica magazzino
|
||||||
const TString& sconto = rcont.get(LVRCONDV_SCONTPERC).as_string();
|
const TString& sconto = rcont.get(LVRCONDV_SCONTPERC).as_string();
|
||||||
rdoc.put(RDOC_SCONTO, sconto);
|
rdoc.put(RDOC_SCONTO, sconto);
|
||||||
@ -653,8 +632,70 @@ bool TGestione_bolle_msk::lv_causale_handler(TMask_field& f, KEY k)
|
|||||||
//trovo il contratto utlizzato e la riga contratto specifica che mi serve
|
//trovo il contratto utlizzato e la riga contratto specifica che mi serve
|
||||||
const TLaundry_contract cont(codcf, indsped, datadoc);
|
const TLaundry_contract cont(codcf, indsped, datadoc);
|
||||||
const TRectype& rcont = cont.row(codart);
|
const TRectype& rcont = cont.row(codart);
|
||||||
//instanzio una cache sulla tabella delle causali
|
|
||||||
|
//instanzio una cache sulle causali
|
||||||
const TRectype& cau = cache().get("&CAU", causale);
|
const TRectype& cau = cache().get("&CAU", causale);
|
||||||
|
//movimento o meno la dotazione temporanea/odierna a seconda di cosa prevede la causale
|
||||||
|
int sgn_rit = 0;
|
||||||
|
int sgn_con = 0;
|
||||||
|
if (cau.get_bool("B0"))
|
||||||
|
{
|
||||||
|
const TCausale_magazzino& rit = cached_causale_magazzino(cau.get("S1"));
|
||||||
|
sgn_rit = rit.sgn(s_dottm);
|
||||||
|
}
|
||||||
|
if (cau.get_bool("B1"))
|
||||||
|
{
|
||||||
|
const TCausale_magazzino& con = cached_causale_magazzino(cau.get("S2"));
|
||||||
|
sgn_con = con.sgn(s_dottm);
|
||||||
|
}
|
||||||
|
|
||||||
|
//scrivo le date di dotazione temporanea solo se lo prevede la causale
|
||||||
|
if (sgn_rit == ZERO && sgn_con == ZERO)
|
||||||
|
{
|
||||||
|
rdoc.put("DADATATMP", "");
|
||||||
|
msk.field(FR_JOLLY3).set("");
|
||||||
|
rdoc.put("ADATATMP", "");
|
||||||
|
msk.field(FR_JOLLY4).set("");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//setto le date di inizio e fine della dotazione temporanea
|
||||||
|
TDate dadata = rcont.get_date(LVRCONDV_INDTTMP);
|
||||||
|
TDate adata = rcont.get_date(LVRCONDV_FIDTTMP);
|
||||||
|
if (dadata.ok() && adata.ok())
|
||||||
|
{
|
||||||
|
rdoc.put("DADATATMP", dadata);
|
||||||
|
msk.field(FR_JOLLY3).set(dadata);
|
||||||
|
if (adata <= datadoc)
|
||||||
|
{
|
||||||
|
rdoc.put("ADATATMP", adata);
|
||||||
|
msk.field(FR_JOLLY4).set(adata);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//instanzio in TRecordset sui giri
|
||||||
|
TISAM_recordset giri("USE LVRCONSPLAN KEY 3\nSELECT DTCONS>#DATADOC\nFROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT");
|
||||||
|
giri.set_var("#DATADOC", datadoc);
|
||||||
|
giri.set_var("#CODCF", codcf);
|
||||||
|
giri.set_var("#CODCONT", cont.get_long(LVCONDV_CODCONT));
|
||||||
|
if (giri.move_first())
|
||||||
|
{
|
||||||
|
rdoc.put("ADATATMP", giri.get(LVRCONSPLAN_DTCONS).as_date());
|
||||||
|
msk.field(FR_JOLLY4).set(giri.get(LVRCONSPLAN_DTCONS).as_date());
|
||||||
|
|
||||||
|
TLocalisamfile rcondv(LF_LVRCONDV);
|
||||||
|
rcondv.put(LVRCONDV_CODCF,codcf);
|
||||||
|
rcondv.put(LVRCONDV_CODCONT,cont.get_int(LVCONDV_CODCONT));
|
||||||
|
rcondv.put(LVRCONDV_CODART,msk.get(FR_CODART));
|
||||||
|
if (rcondv.read() == NOERR)
|
||||||
|
{
|
||||||
|
rcondv.put(LVRCONDV_FIDTTMP, giri.get(LVRCONSPLAN_DTCONS).as_date());
|
||||||
|
rcondv.rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//abilito o disabilito azzerandolo il campo "Ritirato" a seconda di cosa prevede la causale
|
//abilito o disabilito azzerandolo il campo "Ritirato" a seconda di cosa prevede la causale
|
||||||
if (cau.get_bool("B0"))
|
if (cau.get_bool("B0"))
|
||||||
@ -679,40 +720,6 @@ bool TGestione_bolle_msk::lv_causale_handler(TMask_field& f, KEY k)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//LV_DOTMP_HANDLER: handler che aggiorna la data di fine dotazione temporanea sul contratto se l'utente lo richiede
|
|
||||||
bool TGestione_bolle_msk::lv_dotmp_handler(TMask_field& f, KEY k)
|
|
||||||
{
|
|
||||||
if (f.to_check(k, true))
|
|
||||||
{
|
|
||||||
TDate finetmp = f.get();
|
|
||||||
TMask& msk = f.mask();
|
|
||||||
TSheet_field* sheet = msk.get_sheet();
|
|
||||||
TGestione_bolle_msk& dmsk = (TGestione_bolle_msk&)sheet->mask();
|
|
||||||
|
|
||||||
if (!finetmp.empty() && finetmp > msk.get_date(F_DATADOC) &&
|
|
||||||
yesno_box(TR("La data di fine dotazione temporanea è diversa da quella presente sul contratto."
|
|
||||||
"Si desidera aggiornarla con quella attuale?")))
|
|
||||||
{
|
|
||||||
//ricerco la riga contratto che mi interessa
|
|
||||||
const long codcf = dmsk.get_long(F_CODCF);
|
|
||||||
const int indsped = dmsk.get_int(F_CODINDSP);
|
|
||||||
const TDate datadoc = dmsk.get_date(F_DATADOC);
|
|
||||||
|
|
||||||
TLaundry_contract cont(codcf,indsped,datadoc);
|
|
||||||
TLocalisamfile rcondv(LF_LVRCONDV);
|
|
||||||
rcondv.put(LVRCONDV_CODCF,codcf);
|
|
||||||
rcondv.put(LVRCONDV_CODCONT,cont.get_int(LVCONDV_CODCONT));
|
|
||||||
rcondv.put(LVRCONDV_CODART,msk.get(FR_CODART));
|
|
||||||
if (rcondv.read() == NOERR)
|
|
||||||
{
|
|
||||||
rcondv.put(LVRCONDV_FIDTTMP, finetmp);
|
|
||||||
rcondv.rewrite();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//metodo che setta gli handler sui campi di riga
|
//metodo che setta gli handler sui campi di riga
|
||||||
void TGestione_bolle_msk::user_set_row_handler(TMask& rm, short field, int index)
|
void TGestione_bolle_msk::user_set_row_handler(TMask& rm, short field, int index)
|
||||||
{
|
{
|
||||||
@ -722,7 +729,6 @@ void TGestione_bolle_msk::user_set_row_handler(TMask& rm, short field, int index
|
|||||||
case 4102: rm.set_handler(field, lv_consegnato_handler); break;
|
case 4102: rm.set_handler(field, lv_consegnato_handler); break;
|
||||||
case 4103: rm.set_handler(field, lv_codart_handler); break;
|
case 4103: rm.set_handler(field, lv_codart_handler); break;
|
||||||
case 4104: rm.set_handler(field, lv_causale_handler); break;
|
case 4104: rm.set_handler(field, lv_causale_handler); break;
|
||||||
case 4105: rm.set_handler(field, lv_dotmp_handler); break;
|
|
||||||
default : TDocumento_mask::user_set_row_handler(rm, field, index); break;
|
default : TDocumento_mask::user_set_row_handler(rm, field, index); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,5 +9,4 @@ NHANDLER = 4
|
|||||||
1 = 133|4101
|
1 = 133|4101
|
||||||
2 = 112|4102
|
2 = 112|4102
|
||||||
3 = 105|4103
|
3 = 105|4103
|
||||||
4 = 152|4104
|
4 = 152|4104
|
||||||
5 = 158|4105
|
|
Loading…
x
Reference in New Issue
Block a user