diff --git a/lv/lv3100.cpp b/lv/lv3100.cpp index 1a3a2fbcf..86ccf7aaf 100755 --- a/lv/lv3100.cpp +++ b/lv/lv3100.cpp @@ -389,7 +389,7 @@ bool TGestione_bolle_msk::ss_notify(TSheet_field& ss, int r, KEY key) return TDocumento_mask::ss_notify(ss, r, key); } -//LV_TESTATA_HANDLER: handler che si occupa di decodificare i campi data in testata +//LV_DATA_HANDLER: handler che si occupa di decodificare i campi data in testata bool TGestione_bolle_msk::lv_data_handler(TMask_field& f, KEY k) { bool ok = true; @@ -409,6 +409,12 @@ bool TGestione_bolle_msk::lv_data_handler(TMask_field& f, KEY k) if (dmsk.insert_mode()) dmsk.set(F_DATADOC,oggi); + else //permette la decodifica corretta della data nel caso stia guardando una bolla vecchia + { + oggi = dmsk.get_date(F_DATADOC); + TDate primo = oggi; + primo.set_day(1); + } //decodifica del giorno della settimana dmsk.set(F_LVGIORNO, itow(oggi.wday())); @@ -641,12 +647,7 @@ bool TGestione_bolle_msk::lv_ritirato_handler(TMask_field& f, KEY k) real dotmp = giac.giac_att(rdoc, false); msk.set(FR_JOLLY2, dotmp); rdoc.put("DOTMP", dotmp); - } - else - { - msk.set(FR_JOLLY2, ""); - rdoc.put("DOTMP", 0); - } + } } return true; } @@ -684,12 +685,7 @@ bool TGestione_bolle_msk::lv_consegnato_handler(TMask_field& f, KEY k) real dotmp = giac.giac_att(rdoc, false); msk.set(FR_JOLLY2, dotmp); rdoc.put("DOTMP", dotmp); - } - else - { - msk.set(FR_JOLLY2, ""); - rdoc.put("DOTMP", 0); - } + } } return ok; @@ -866,77 +862,78 @@ bool TGestione_bolle_msk::lv_causale_handler(TMask_field& f, KEY k) coddep = con.default_dep(); } sgn_con = con.sgn(s_dottm); - } + } + + //setto il valore della dotazione temporanea + TGiac_per_cli& giac = gbapp().giacenza(); + giac.preset(doc); + real dotmp = giac.giac_att(rdoc, false); + rdoc.put("DOTMP", dotmp); + TString16 tmp; + tmp << dotmp; + msk.field(FR_JOLLY2).set(tmp); + //setto le date di inizio e fine della dotazione temporanea + TDate dadata = rcont.get_date(LVRCONDV_INDTTMP); + TDate adata = rcont.get_date(LVRCONDV_FIDTTMP); - //scrivo le date di dotazione temporanea solo se lo prevede la causale + 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 (rdoc.get_date("DADATATMP").empty()) + { + if (!dadata.ok() && rcondv.read() == NOERR) + { + dadata = TODAY; + rcondv.put(LVRCONDV_INDTTMP, dadata); + rcondv.rewrite(); + } + + rdoc.put("DADATATMP", dadata); + msk.field(FR_JOLLY3).set(dadata); + } + + if (rdoc.get_date("ADATATMP").empty()) + { + if (adata.ok() && 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()); + + if (rcondv.read() == NOERR) + { + rcondv.put(LVRCONDV_FIDTTMP, giri.get(LVRCONSPLAN_DTCONS).as_date()); + rcondv.rewrite(); + } + } + } + } + + //disabilito i campi di dotazione temporanea se la causel non prevede la loro movimentazione if (sgn_rit == 0 && sgn_con == 0) { - rdoc.put("DOTMP", ""); - msk.field(FR_JOLLY2).set(""); - rdoc.put("DADATATMP", ""); - msk.field(FR_JOLLY3).set(""); - rdoc.put("ADATATMP", ""); - msk.field(FR_JOLLY4).set(""); + msk.field(FR_JOLLY2).disable(); + msk.field(FR_JOLLY3).disable(); + msk.field(FR_JOLLY4).disable(); } else { - //setto il valore della dotazione temporanea - TGiac_per_cli& giac = gbapp().giacenza(); - giac.preset(doc); - real dotmp = giac.giac_att(rdoc, false); - rdoc.put("DOTMP", dotmp); - TString16 tmp; - tmp << dotmp; - msk.field(FR_JOLLY2).set(tmp); - //setto le date di inizio e fine della dotazione temporanea - TDate dadata = rcont.get_date(LVRCONDV_INDTTMP); - TDate adata = rcont.get_date(LVRCONDV_FIDTTMP); - - 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 (rdoc.get_date("DADATATMP").empty()) - { - if (!dadata.ok() && rcondv.read() == NOERR) - { - dadata = TODAY; - rcondv.put(LVRCONDV_INDTTMP, dadata); - rcondv.rewrite(); - } - - rdoc.put("DADATATMP", dadata); - msk.field(FR_JOLLY3).set(dadata); - } - - if (rdoc.get_date("ADATATMP").empty()) - { - if (adata.ok() && 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()); - - if (rcondv.read() == NOERR) - { - rcondv.put(LVRCONDV_FIDTTMP, giri.get(LVRCONSPLAN_DTCONS).as_date()); - rcondv.rewrite(); - } - } - } - } + msk.field(FR_JOLLY2).enable(); + msk.field(FR_JOLLY3).enable(); + msk.field(FR_JOLLY4).enable(); } //abilito o disabilito azzerandolo il campo "Ritirato" a seconda di cosa prevede la causale