diff --git a/APPL/API/api_opdrsoap.asp b/APPL/API/api_opdrsoap.asp index 99af4f52e7..b9d9557eea 100644 --- a/APPL/API/api_opdrsoap.asp +++ b/APPL/API/api_opdrsoap.asp @@ -556,24 +556,45 @@ for (i=0; i < opdrachten.length; i++) if (opdrkosten != null) opdr_fields.push({ dbs: "mld_opdr_kosten", typ: "float", val: opdrkosten, track: L("lcl_total_cost") }); - if (plandatum != null) - { - var plandatumdate = XMLtoJsDate(plandatum); - opdr_fields.push({ dbs: "mld_opdr_plandatum", typ: "datetime", val: plandatumdate, track: L("lcl_opdr_plandate") }); - } - - if (plandatum2 != null) - { - var plandatumdate2 = XMLtoJsDate(plandatum2); - opdr_fields.push({ dbs: "mld_opdr_plandatum2", typ: "datetime", val: plandatumdate2, track: L("lcl_opdr_plandate2") }); - } + var ins_srtdiscipline_prefix = mld.mld_prefix(mld_key); + var formattedID = ins_srtdiscipline_prefix + opdrid; + var orddat_tracking = ""; if (opdrgereed != null) { - var opdrgereeddate = XMLtoJsDate(opdrgereed); - opdr_fields.push({ dbs: "mld_opdr_einddatum", typ: "date", val: opdrgereeddate, track: L("lcl_opdr_enddate") }); + var old_einddatum = mld_opdr.mld_opdr_einddatum; + var new_einddatum = XMLtoJsDate(opdrgereed); + if (old_einddatum == null || old_einddatum.midnight().getTime() != new_einddatum.midnight().getTime()) // Difference? (Check Date only) + { + opdr_fields.push({ dbs: "mld_opdr_einddatum", typ: "date", val: new_einddatum }); + orddat_tracking = L("lcl_ord_is_orddattrack").format(formattedID) + ": " + buildTrackText("date", old_einddatum, new_einddatum); + } if (autoorder) // Ooit: net als appendRemark via json configureerbaar maken? - mld_fields.push({ dbs: "mld_melding_einddatum", typ: "date", val: opdrgereeddate, track: L("lcl_mld_enddate") }); + mld_fields.push({ dbs: "mld_melding_einddatum", typ: "date", val: new_einddatum, track: L("lcl_mld_enddate") }); + } + + var ordpld_tracking = ""; + if (plandatum != null) + { + var old_plandatum = mld_opdr.mld_opdr_plandatum; + var new_plandatum = XMLtoJsDate(plandatum); + if (old_plandatum == null || old_plandatum.getTime() != new_plandatum.getTime()) // Difference? + { + opdr_fields.push({ dbs: "mld_opdr_plandatum", typ: "datetime", val: new_plandatum }); + ordpld_tracking = L("lcl_ord_is_ordpldtrack").format(formattedID) + ": " + buildTrackText("datetime", old_plandatum, new_plandatum); + } + } + + var ordpl2_tracking = ""; + if (plandatum2 != null) + { + var old_plandatum2 = mld_opdr.mld_opdr_plandatum2; + var new_plandatum2 = XMLtoJsDate(plandatum2); + if (old_plandatum2 == null || old_plandatum2.getTime() != new_plandatum2.getTime()) // Difference? + { + opdr_fields.push({ dbs: "mld_opdr_plandatum2", typ: "datetime", val: new_plandatum2 }); + ordpl2_tracking = L("lcl_ord_is_ordpl2track").format(formattedID) + ": " + buildTrackText("datetime", old_plandatum2, new_plandatum2); + } } // Flag, ignore if invalid @@ -662,6 +683,21 @@ for (i=0; i < opdrachten.length; i++) var sql = "BEGIN fac.backtrackaction('ORDUPD', " + opdr_key + ", " + user_key + ", " + mut_datum.toSQL(true) +"); END;" Oracle.Execute(sql); } + // Tracken en notificeren van de einddatum (ORDDAT) (notificeren aan de gebouwverantwoordelijke van het betreffende gebouw van de onderliggende melding). + if (orddat_tracking != "") + { + mld.trackopdreinddatumupdate(opdr_key, orddat_tracking); + } + // Tracken en notificeren van de geplande aanvang datum (ORDPLD) (notificeren aan interne contactpersoon). + if (ordpld_tracking != "") + { + mld.trackopdrplandatumupdate(opdr_key, ordpld_tracking); + } + // Tracken en notificeren van de geplande einddatum (ORDPL2) (notificeren aan interne contactpersoon). + if (ordpl2_tracking != "") + { + mld.trackopdrplandatum2update(opdr_key, ordpl2_tracking); + } } } diff --git a/APPL/MLD/mld.inc b/APPL/MLD/mld.inc index 25f7c9b201..8cac85ebd3 100644 --- a/APPL/MLD/mld.inc +++ b/APPL/MLD/mld.inc @@ -151,6 +151,18 @@ mld = {setmeldingstatus: shared.trackaction("ORDUPD", opdr_key, ptxt); }, + trackopdrplandatumupdate: + function (opdr_key, ptxt) + { + shared.trackaction("ORDPLD", opdr_key, ptxt); + }, + + trackopdrplandatum2update: + function (opdr_key, ptxt) + { + shared.trackaction("ORDPL2", opdr_key, ptxt); + }, + trackopdreinddatumupdate: function (opdr_key, ptxt) { diff --git a/APPL/MLD/mld_edit_opdr_save.asp b/APPL/MLD/mld_edit_opdr_save.asp index ad8de5d72a..9e649eb671 100644 --- a/APPL/MLD/mld_edit_opdr_save.asp +++ b/APPL/MLD/mld_edit_opdr_save.asp @@ -657,8 +657,6 @@ for (var u = 0; u < uitvkeyArray.length; u++) { dbs: "mld_opdr_kosten", typ: "float", frm: "tot_kosten", track: L("lcl_total_cost") + " " + L("lcl_valutasign") }, { dbs: "mld_opdr_ordernr", typ: "varchar", frm: "opdr_ordernr", track: L("lcl_mld_inf_Ordernr") }, { dbs: "cnt_contract_key", typ: "key", frm: "contract", track: L("lcl_contract"), foreign: "cnt_contract" }, - { dbs: "mld_opdr_plandatum", typ: "datetime",frm: "date_plan", track: L("lcl_opdr_plandate") }, - { dbs: "mld_opdr_plandatum2", typ: "datetime",frm: "date_plan2", track: L("lcl_opdr_plandate2") }, { dbs: "mld_opdr_id", typ: "varchar", frm: "opdr_id", track: L("lcl_opdr_id") }, { dbs: "prs_kostensoort_key", typ: "key", frm: "srtkosten", track: L("lcl_mld_opdr_alt_charge_type"), foreign: "prs_kostensoort" } ]; @@ -744,7 +742,12 @@ for (var u = 0; u < uitvkeyArray.length; u++) oRs.Close(); fields.push({ dbs: "mld_opdr_datumbegin", typ: "datetime", val: startdate, track: L("lcl_orderdate") }); // Opdrachtdatum (begindatum) - var new_einddatum = getFParamDate("date_done", null); + var new_einddatum = getFParamDate("date_done", null); + var old_plandatum = mld_opdr.mld_opdr_plandatum; + var new_plandatum = getFParamDate("date_plan", null); + var old_plandatum2 = mld_opdr.mld_opdr_plandatum2; + var new_plandatum2 = getFParamDate("date_plan2", null); + if (!new_einddatum && mld_info.uitvoertijd_eenheid == 'U') { var extra_einddatum = getFParamFloat("extra_einddatum", null); // extra uren erbij @@ -754,6 +757,31 @@ for (var u = 0; u < uitvkeyArray.length; u++) new_einddatum.setMinutes(new_einddatum.getMinutes() + extra_einddatum * 60); } } + var ins_srtdiscipline_prefix = mld.mld_prefix(mld_key); + var formattedID = ins_srtdiscipline_prefix + mld_key + "/" + volgnr; + + var diff = (old_plandatum != null || new_plandatum != null) + && (( old_plandatum == null && new_plandatum != null) + || (old_plandatum != null && new_plandatum == null) + || (old_plandatum.getTime() != new_plandatum.getTime())); + var ordpld_tracking = ""; + if (diff) + { + fields.push({ dbs: "mld_opdr_plandatum", typ: "datetime", val: new_plandatum }); + ordpld_tracking = L("lcl_ord_is_ordpldtrack").format(formattedID) + ": " + buildTrackText("datetime", old_plandatum, new_plandatum); + } + + diff = (old_plandatum2 != null || new_plandatum2 != null) + && (( old_plandatum2 == null && new_plandatum2 != null) + || (old_plandatum2 != null && new_plandatum2 == null) + || (old_plandatum2.getTime() != new_plandatum2.getTime())); + var ordpl2_tracking = ""; + if (diff) + { + fields.push({ dbs: "mld_opdr_plandatum2", typ: "datetime", val: new_plandatum2 }); + ordpl2_tracking = L("lcl_ord_is_ordpl2track").format(formattedID) + ": " + buildTrackText("datetime", old_plandatum2, new_plandatum2); + } + if (new_einddatum) { // Einddatum, wijzigen bestaande opdracht (AALB#32981 en WTCA#38303). @@ -769,8 +797,6 @@ for (var u = 0; u < uitvkeyArray.length; u++) // Als het tijdsveld niet aanwezig is en de datum is aangepast, dan de eindtijd op einde van de werkdag zetten (fac_t_endofworkday). // Dan moet ik eerst weten of het tijdsveld aanwezig was. // Of het tijdsveld van de einddatum aanwezig was is afhankelijk van de uitvoertijd type van de melding. - var ins_srtdiscipline_prefix = mld.mld_prefix(mld_key); - var formattedID = ins_srtdiscipline_prefix + mld_key + "/" + volgnr; if (mld_info.uitvoertijd_eenheid == 'U') { // Als uitvoertijd in uren is, dan is er een tijdsveld aanwezig geweest en dan wordt de tijd automatisch opgeslagen. @@ -1035,6 +1061,16 @@ if (!isNew) { mld.trackopdreinddatumupdate(opdr_key, orddat_tracking); } + // Tracken en notificeren van de geplande aanvang datum (ORDPLD) (notificeren aan interne contactpersoon). + if (ordpld_tracking != "") + { + mld.trackopdrplandatumupdate(opdr_key, ordpld_tracking); + } + // Tracken en notificeren van de geplande einddatum (ORDPL2) (notificeren aan interne contactpersoon). + if (ordpl2_tracking != "") + { + mld.trackopdrplandatum2update(opdr_key, ordpl2_tracking); + } // Bij update van uitvoerende en als status 5 is, dan uitvoerende tracken (ORDMLI (intern) of ORDMLE (extern) // Tekstueel is dit (ook) wel wel vermeld i trackopdrachtupdate maar de ORDMLI of MLE notificatie moet nog if (uitvoerende > -1 && old_uitvoerende != uitvoerende && opdr_status == 5) diff --git a/APPL/Shared/status.inc b/APPL/Shared/status.inc index 6481701503..dbb6be6933 100644 --- a/APPL/Shared/status.inc +++ b/APPL/Shared/status.inc @@ -150,6 +150,8 @@ var status = { case "ORDNEW" : tekst = L("lcl_ord_is_ordnew") ; break; case "ORDUPD" : tekst = L("lcl_ord_is_ordupd") ; break; case "ORDDAT" : tekst = L("lcl_ord_is_orddat") ; break; + case "ORDPLD" : tekst = L("lcl_ord_is_ordpld") ; break; + case "ORDPL2" : tekst = L("lcl_ord_is_ordpl2") ; break; case "ORDAFM" : tekst = L("lcl_ord_is_ordafm") ; break; case "ORDFIA" : tekst = L("lcl_ord_is_ordfia") ; break; case "ORDFOK" : tekst = L("lcl_ord_is_ordfok") ; break;