* Ophalen van gegevens uit get_mld_info_ajax.asp voor req_info= mld_status, calc_opdr_einddatum_sla_lev, show_after_fwd, show_after_upd en promptAI gaat nu met protectQS(). svn path=/Website/trunk/; revision=69910
1340 lines
68 KiB
Plaintext
1340 lines
68 KiB
Plaintext
<%@language = "javascript" %>
|
||
<% /*
|
||
$Revision$
|
||
$Id$
|
||
|
||
File: mld_edit_opdr.asp
|
||
Description: Muteerscherm voor opdrachten bij meldingen
|
||
Ook vanuit BES/rfo_approve.asp
|
||
Parameters:
|
||
urole : fe | fo |bo | mi REQUIRED
|
||
opdr_key: opdrachtkey (optioneel, anders nieuwe opdracht. Dan mld_key verplicht)
|
||
opdr_type: opdrachttype key, alleen bij nieuwe opdrachten die gekozen wordt in popup scherm
|
||
mld_key: meldingkey (optioneel, anders bestaande opdracht)
|
||
close:
|
||
..etc
|
||
Context:
|
||
Note: Submit naar mld_edit_opdr_save.asp
|
||
Sinds FSN#20132 kan type_opdr niet meer hier getoggled worden.
|
||
*/
|
||
var opdr_key = getQParamInt("opdr_key", -1);
|
||
var LOCKED_USER_OK = { "xmlnode": "opdracht", "key": opdr_key };
|
||
|
||
%>
|
||
|
||
<!-- #include file="../Shared/common.inc" -->
|
||
<!-- #include file="../Shared/calendar.inc" -->
|
||
<!-- #include file="../Shared/iface.inc" -->
|
||
<!-- #include file="../Shared/status.inc" -->
|
||
<!-- #include file="../Shared/selector.inc" -->
|
||
<!-- #include file="../Shared/plaatsselector.inc" -->
|
||
<!-- #include file="../Shared/objectselector.inc" -->
|
||
<!-- #include file="../Shared/persoonselector.inc" -->
|
||
<!-- #include file="../Shared/contactpersoonselector.inc" -->
|
||
<!-- #include file="../Shared/uitvoerendeselector.inc" -->
|
||
<!-- #include file="../Shared/kostenplaatsselector.inc" -->
|
||
<!-- #include file="../Shared/kostensoortselector.inc" -->
|
||
<!-- #include file="../Shared/get_objecten_sql.inc" -->
|
||
<!-- #include file="mld_flexkenmerk.inc" -->
|
||
<!-- #include file="mld.inc" -->
|
||
|
||
<%
|
||
FCLTHeader.Requires({ plugins:["jQuery", "kenmerk"],
|
||
js: ["../mld/mld_edit_opdr.js", "../mld/mld.js", "../fac/faq.js"] });
|
||
/***** Get webform parameters *****/
|
||
// Indien geen urole is meegegeven dan bo als ORDBOF rechten anders fe.
|
||
var authparamsORDBOF = user.checkAutorisation("WEB_ORDBOF", true);
|
||
var urole = getQParamSafe("urole", (authparamsORDBOF && (authparamsORDBOF.PRSwritelevel < 9 && authparamsORDBOF.ALGwritelevel < 9))? "bo" : "fe");
|
||
var fronto = urole == "fo";
|
||
var backo = urole == "bo";
|
||
var minfo = urole == "mi";
|
||
var frontend = (urole == "fe" || (!fronto && !backo && !minfo)); // NOT APPLICABLE?
|
||
|
||
// Ik wil een opdrachtnummer weten, anders verplicht een melding_key (= toevoegen opdracht)
|
||
var vervolg = (getQParamInt("opdr_continue", 0) == 1);
|
||
var copy = (vervolg ? true : (getQParamInt("opdr_copy", 0) == 1));
|
||
var fromofferte = (getQParamInt("fromofferte", 0) == 1)
|
||
var finish = (getQParamInt("finish", 0) == 1);
|
||
var mld_parent_opdr;
|
||
var opdr_copy_key = -1;
|
||
if (copy)
|
||
{
|
||
opdr_copy_key = opdr_key;
|
||
if (opdr_copy_key == -1) Response.End;
|
||
opdr_key = -1; // Bij kopieren wordt er een nieuwe opdracht aangemaakt, waarbij de initiele waarden van de invoervelden de waarden van de te kopieren opdracht moeten zijn.
|
||
mld_parent_opdr = mld.mld_opdr_info(opdr_copy_key);
|
||
}
|
||
|
||
var this_opdr;
|
||
if (opdr_key > 0)
|
||
{
|
||
var cnt_key = -1;
|
||
this_opdr = mld.func_enabled_opdracht(opdr_key); // wat mag ik zoal op deze opdracht
|
||
user.auth_required_or_abort(this_opdr.canChange);
|
||
|
||
// Haal de opdrachtgegevens op van de opdracht
|
||
mld_opdr = this_opdr.mld_opdr;
|
||
|
||
if (mld_opdr.uitv_type == "B")
|
||
{ // toevoegen leverancier opmerking. Kan ook in query mld.mld_opdr_info()
|
||
var sql = "SELECT prs_bedrijf_opmerking"
|
||
+ " FROM prs_bedrijf"
|
||
+ " WHERE prs_bedrijf_key = " + mld_opdr.uitvoerende_key;
|
||
var oRs = Oracle.Execute(sql);
|
||
if (!oRs.EOF)
|
||
{
|
||
mld_opdr.uitv_opmerking = oRs("prs_bedrijf_opmerking").Value || "";
|
||
}
|
||
oRs.Close();
|
||
}
|
||
|
||
if (mld_opdr.parent_key > 0)
|
||
mld_parent_opdr = mld.mld_opdr_info(mld_opdr.parent_key);
|
||
|
||
mld_key = mld_opdr.mld_key;
|
||
mld_opdr.opdr_type_org = mld_opdr.opdr_type; // As in/from database
|
||
|
||
if (mld_opdr.contactpersuitv_key == null)
|
||
mld_opdr.contactpersuitv_key = -1;
|
||
}
|
||
else
|
||
{ // Nieuwe opdracht en dus ook bij copy (opdr_key == -1)
|
||
// MGE: NU wordt voor copy de cnt_key uit de gecopieerde opdracht gebruikt!
|
||
var cnt_key = getQParamInt("cnt_key", -1); //TODO: CONN#16529
|
||
var mld_key = getQParamInt("mld_key");
|
||
var opdr_type = getQParamInt("opdr_type");
|
||
var uitvoerende_key = getQParamInt("uitvoerende_key", -1);
|
||
var act_key = getQParamInt("act_key", -1);
|
||
|
||
// Haal gegevens van de opdracht op van waaruit je kopieert,
|
||
// of wat je weet voor een nieuwe opdracht.
|
||
var params = { uitvoerende_key: uitvoerende_key
|
||
, cnt_key: cnt_key
|
||
, opdr_copy_key: opdr_copy_key
|
||
, act_key: act_key
|
||
};
|
||
var mld_opdr = mld.mld_opdr_info_new(mld_key, opdr_type, params);
|
||
if (copy)
|
||
{
|
||
mld_key = mld_opdr.mld_key;
|
||
mld_opdr.parent_key = opdr_copy_key;
|
||
|
||
if (mld_opdr.contactpersuitv_key == null)
|
||
mld_opdr.contactpersuitv_key = -1;
|
||
|
||
if (fromofferte) {
|
||
mld_opdr.opdr_opmerking = null;
|
||
}
|
||
|
||
var this_opdr_copy = mld.func_enabled_opdracht(opdr_copy_key); // wat mag ik zoal op deze opdracht;
|
||
}
|
||
//else // echt nieuw
|
||
|
||
|
||
// Bepaal discipline
|
||
sql = "SELECT sm.mld_ins_discipline_key"
|
||
+ " FROM mld_melding m"
|
||
+ " , mld_stdmelding sm"
|
||
+ " WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key"
|
||
+ " AND m.mld_melding_key = " + mld_key;
|
||
var oRs = Oracle.Execute(sql);
|
||
var this_opdr = mld.func_enabled_mld(oRs("mld_ins_discipline_key").Value, "D"); // wat mag ik zoal op een melding
|
||
oRs.Close();
|
||
}
|
||
var this_mld = mld.func_enabled_melding(mld_key); // wat mag ik zoal op de bijbehorende melding.
|
||
|
||
lcl.set_dialect(mld_opdr.opdr_type, "MLD_TYPEOPDR_KEY");
|
||
mld.dialectIsSet = true;
|
||
|
||
// Kijk naar de totale rechten die ik heb.
|
||
var autfunction = ["WEB_ORDBOF", "WEB_EXTORD", "WEB_ORDBO2", "WEB_MLDORD", "WEB_ORDOAP", "WEB_ORDSUP"];
|
||
/***** End get webform parameters *****/
|
||
|
||
var authparams = user.checkAutorisation(autfunction);
|
||
|
||
// Kan zijn dat ik niet precies de juiste role heb meegekregen, bijvoorbeeld als leverancier met read op ORDBOF
|
||
// en write op EXTORD/ORDBO2/ORDOAP binnenkomt (FSN#16737/AASA#22871). Dan schakelen we naar EXTORD/ORDBO2/ORDOAP
|
||
if (autfunction == "WEB_ORDBOF" && !(authparams.PRSwritelevel < 9 || authparams.ALGwritelevel < 9))
|
||
{
|
||
autfunction = ["WEB_EXTORD","WEB_ORDBO2"];
|
||
authparams1 = user.checkAutorisation(autfunction, true);
|
||
autfunction = "WEB_ORDOAP";
|
||
authparams2 = user.checkAutorisation(autfunction, true);
|
||
if (authparams1)
|
||
{
|
||
urole = "b2"; // voor evt. propagatie
|
||
}
|
||
else if (authparams2)
|
||
{
|
||
urole = "bo"; // voor wijzigen kenmerken met volgnummer > 900
|
||
}
|
||
else // allerlaatste kans
|
||
{
|
||
autfunction = "WEB_ORDSUP";
|
||
authparams = user.checkAutorisation(autfunction);
|
||
}
|
||
}
|
||
// JGL Het omgekeerde, write op ORDBOF maar read ORDBO2 kwam bij ATCH voor: FSN#17306
|
||
|
||
// Haal gerelateerde melding gegevens op
|
||
var mld_melding = mld.mld_melding_info(mld_key); // Globale variabele met alle mld_melding informatie
|
||
var stdm_info = mld.mld_stdmeldinginfo(mld_melding.stdm_key);
|
||
mld_opdr.kpnrequired = (mld_melding.kpnverplicht || (mld_opdr.typeopdr_kosten == 1 && mld_opdr.tonen_totaal));
|
||
|
||
// Kennisbankitems.
|
||
var has_faq = false;
|
||
var popup_faq = false;
|
||
var alg_key_arr = [];
|
||
if (mld_melding.bld_key && mld_melding.bld_key != -1) alg_key_arr.push(mld_melding.bld_key);
|
||
if (mld_melding.flr_key && mld_melding.flr_key != -1) alg_key_arr.push(mld_melding.flr_key);
|
||
if (mld_melding.room_key && mld_melding.room_key != -1) alg_key_arr.push(mld_melding.room_key);
|
||
|
||
// faq_info bepalen voor de vaste kennisbankitems bij de opdracht.
|
||
var faq_info_fixed = mld.faq_info(mld_melding.loc_key, alg_key_arr, mld_opdr.opdr_disc_key, mld_melding.stdm_key, mld_opdr.opdr_type, -1, -1, false, true);
|
||
for (i in faq_info_fixed.fixed_faq)
|
||
{
|
||
faq_info_fixed.fixed_faq[i].safe_answer = safe.fclthtml(faq_info_fixed.fixed_faq[i].answer, { "faqlink": true, "file_params": { "module": "FAQA", "key": faq_info_fixed.fixed_faq[i].faq_key }});
|
||
faq_info_fixed.fixed_faq[i].safe_answer2 = safe.fclthtml(faq_info_fixed.fixed_faq[i].answer2, { "faqlink": true, "file_params": { "module": "FAQB", "key": faq_info_fixed.fixed_faq[i].faq_key }});
|
||
}
|
||
|
||
// faq_info bepalen voor de popup.
|
||
var faq_info_popup = mld.faq_info(mld_melding.loc_key, alg_key_arr, mld_opdr.opdr_disc_key, mld_melding.stdm_key, mld_opdr.opdr_type, -1, -1, true, true);
|
||
has_faq = faq_info_popup.fixed_faq.length > 0;
|
||
popup_faq = faq_info_popup.popup_faq;
|
||
|
||
|
||
sql = "SELECT s.prs_dienst_key"
|
||
+ " , CASE"
|
||
+ " WHEN COALESCE (kp.prs_kostenplaats_eind, SYSDATE + 1) > SYSDATE"
|
||
+ " THEN 1"
|
||
+ " ELSE 0"
|
||
+ " END kpgeldig"
|
||
+ " , s.alg_onrgoed_obj_niveau"
|
||
+ " , s.alg_onrgoed_niveau"
|
||
+ " , m.prs_kostenplaats_key"
|
||
+ " FROM mld_melding m"
|
||
+ " , mld_stdmelding s"
|
||
+ " , prs_kostenplaats kp"
|
||
+ " WHERE m.mld_melding_key = " + mld_key
|
||
+ " AND m.mld_stdmelding_key = s.mld_stdmelding_key"
|
||
+ " AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)";
|
||
oRs = Oracle.Execute(sql);
|
||
var stdm_prs_dienst_key = oRs("prs_dienst_key").Value || -1; // default volgens stdm
|
||
var defkp_key = oRs("kpgeldig").Value == 1? (oRs("prs_kostenplaats_key").Value || -1) : -1; // de defaultwaarde komt van de melding en moet nog wel geldig zijn.
|
||
var alg_onrgoed_obj_niveau = oRs("alg_onrgoed_obj_niveau").Value || "";
|
||
var alg_onrgoed_niveau = oRs("alg_onrgoed_niveau").Value || "";
|
||
oRs.close();
|
||
|
||
if (opdr_key < 0 && !copy) // Nu default omschrijving van de opdracht vullen met flexkenmerken
|
||
{
|
||
mld_opdr.opdr_omschr = "";
|
||
if (S("ai_enabled") & 8) {
|
||
var json = mld.getmldjson(mld_key);
|
||
var result = shared.promptAI(JSON.stringify(json), { "instructions": L("lcl_mld_opdr_ai_descr_instructions").format(mld_opdr.opdr_type_omschr) });
|
||
if (result.success) {
|
||
mld_opdr.opdr_omschr = result.content;
|
||
}
|
||
}
|
||
if (mld_opdr.opdr_omschr == "") { // Geen AI, of fallback voor fouten met AI
|
||
mld_opdr.opdr_omschr = mld_melding.mld_onderwerp? mld_melding.mld_onderwerp : "";
|
||
mld_opdr.opdr_omschr += mld_melding.mld_onderwerp && mld_melding.mld_omschr? "\n" : "";
|
||
mld_opdr.opdr_omschr += mld_melding.mld_omschr? mld_melding.mld_omschr : ""; // initieel melding onderwerp + omschrijving overnemen
|
||
if (S("mld_ord_flexsummary") != 0)
|
||
mld_opdr.opdr_omschr += mld.getFlexSummary(mld_key);
|
||
}
|
||
}
|
||
|
||
if (opdr_key > 0)
|
||
{ // Voor bestaande melding is wellicht andere dienst dan default gekozen
|
||
sql = "SELECT prs_dienst_key"
|
||
+ " FROM prs_bedrijfdienstlocatie"
|
||
+ " WHERE prs_bedrijf_key = " + mld_opdr.uitvoerende_key
|
||
+ " AND (alg_locatie_key = " + mld_melding.loc_key + " OR alg_locatie_key IS NULL)"
|
||
+ " AND (alg_gebouw_key = " + mld_melding.bld_key + " OR alg_gebouw_key IS NULL)"
|
||
|
||
oRs = Oracle.Execute(sql);
|
||
if (!oRs.eof)
|
||
{
|
||
stdm_prs_dienst_key = oRs("prs_dienst_key").Value;
|
||
|
||
oRs.MoveNext();
|
||
|
||
if (!oRs.Eof)
|
||
stdm_prs_dienst_key = -1; // Bij meer dan een geldige waarde geen dienst selecteren
|
||
}
|
||
oRs.Close();
|
||
|
||
// Registratiedatum opdracht bepalen.
|
||
sql = "SELECT fac.gettrackingdate('ORDNEW', " + opdr_key + ") registratiedatum FROM DUAL"
|
||
oRs = Oracle.Execute(sql);
|
||
var registratiedatum = new Date(oRs("registratiedatum").Value);
|
||
oRs.Close();
|
||
}
|
||
else
|
||
var registratiedatum = new Date();
|
||
|
||
if (opdr_key < 0)
|
||
{
|
||
// Voor nieuwe opdrachten is de default Startdatum *vandaag*,
|
||
// tenzij de meldingdatum in de toekomst ligt, dan is het die datum
|
||
mld_opdr.mld_opdr_datumbegin = new Date();
|
||
if (mld_opdr.mld_opdr_datumbegin.midnight() < mld_melding.melddatum.midnight() || S("mld_enforce_orderdates") == 1)
|
||
mld_opdr.mld_opdr_datumbegin = mld_melding.melddatum;
|
||
|
||
// Voor nieuwe opdrachten is de default Einddatum gelijk aan de einddatum van de melding
|
||
// tenzij a) de stdmelding instelling/setting "Einddatum opdracht leeglaten" (mld_stdmelding_enddate_empty) is aangevinkt.
|
||
// b) die in het verleden ligt, dan is het de opdrachtstartdatum
|
||
// c) bij kopi<70>ren, want dan kan de opdracht einddatum direct worden berekend afhankelijk van de SLA-mode.
|
||
// d) de SLA-mode "Melding-SLA" is, want dan kan de opdracht einddatum direct worden bepaald.
|
||
if (stdm_info.enddateempty)
|
||
mld_opdr.mld_opdr_einddatum = null;
|
||
else
|
||
{
|
||
if ((!copy && mld_opdr.typeopdr_slamode == 1) || mld_opdr.typeopdr_slamode == 3)
|
||
mld_opdr.mld_opdr_einddatum = mld_melding.einddatum;
|
||
else
|
||
mld_opdr.mld_opdr_einddatum = mld.geteinddatumopdracht(mld_key, mld_opdr.uitvoertijd, mld_opdr.mld_opdr_datumbegin, mld_opdr.typeopdr_slamode);
|
||
if (S("mld_enforce_orderdates") != 1 && (mld_opdr.mld_opdr_einddatum && mld_opdr.mld_opdr_einddatum.midnight() < mld_opdr.mld_opdr_datumbegin.midnight()))
|
||
mld_opdr.mld_opdr_einddatum = mld_opdr.mld_opdr_datumbegin;
|
||
}
|
||
}
|
||
|
||
// Bepaal het aantal werkdagen
|
||
// De melding_einddatum kan afwijken van melding_datum + uitvoertijd.
|
||
// Dus niet m.mld_melding_t_uitvoertijd nemen als uitvoertijd (Is alleen standaard waarde).
|
||
var ora_date1 = mld_opdr.mld_opdr_datumbegin.toSQL(true);
|
||
var ora_date2 = mld_opdr.mld_opdr_einddatum? mld_opdr.mld_opdr_einddatum.toSQL(true) : null;
|
||
sql = "SELECT fac.count_work_days(" + ora_date1 + ", " + ora_date2 + ") work_days FROM DUAL";
|
||
oRs = Oracle.Execute(sql);
|
||
if (oRs("work_days").Value > 0)
|
||
mld_opdr.period = oRs("work_days").Value;
|
||
oRs.close();
|
||
|
||
if (opdr_key < 0) mld_opdr.mld_opdr_ordernr = mld_melding.mld_ordernr;
|
||
|
||
// Bepaal de initi<74>le kostenplaats
|
||
if (mld_opdr.kpnrequired)
|
||
{
|
||
if (!mld_opdr.kp_key || mld_opdr.kp_key == -1) mld_opdr.kp_key = defkp_key; // initialiseer op de mld_melding-kostenplaats
|
||
if (!mld_opdr.kp_key) mld_opdr.kp_key = -1; // dan was die er dus niet
|
||
}
|
||
//else: zo laten
|
||
|
||
if (mld_opdr.kp_key == -1)
|
||
{ // Kijk dan of er wellicht niks te kiezen valt, d.i. slechts 1 keuze is.
|
||
// Dan is het namelijk gewenst om die als default te nemen.
|
||
// Code/controle gebaseerd op SuggestKostenplaats.asp
|
||
// Check if person is authorized for all accounts
|
||
all_kostenplaats = false;
|
||
sql = " SELECT pk.prs_perslidkostenplaats_key"
|
||
+ " FROM prs_perslidkostenplaats pk"
|
||
+ " WHERE pk.prs_perslid_key = " + user_key
|
||
+ " AND pk.prs_perslidkostenplaats_boeken = 1"
|
||
+ " AND pk.prs_kostenplaats_key IS NULL";
|
||
oRs = Oracle.Execute(sql);
|
||
if (!oRs.eof)
|
||
all_kostenplaats = true;
|
||
oRs.Close();
|
||
if (!all_kostenplaats)
|
||
{ // Er is geen autorisatie bij kostenplaatsen (prs_kostenplaats)
|
||
// Niet persoon of plaats afhankelijk
|
||
sql = "SELECT k.prs_kostenplaats_key "
|
||
+ " FROM prs_perslidkostenplaats pk"
|
||
+ ", prs_v_aanwezigkostenplaats k"
|
||
+ " WHERE pk.prs_kostenplaats_key = k.prs_kostenplaats_key"
|
||
+ " AND pk.prs_perslidkostenplaats_boeken = 1"
|
||
+ " AND pk.prs_perslid_key = " + user_key
|
||
+ ( ((S("prs_dep_default_kpn") & 1) == 1)
|
||
? " UNION"
|
||
+ " SELECT k.prs_kostenplaats_key "
|
||
+ " FROM prs_perslid p"
|
||
+ ", prs_afdeling a"
|
||
+ ", prs_v_aanwezigkostenplaats k"
|
||
+ " WHERE p.prs_afdeling_key = a.prs_afdeling_key"
|
||
+ " AND p.prs_perslid_key = " + user_key
|
||
+ " AND a.prs_kostenplaats_key = k.prs_kostenplaats_key"
|
||
: "")
|
||
+ ( ((S("prs_dep_default_kpn") & 2) == 2)
|
||
? " UNION"
|
||
+ " SELECT k.prs_kostenplaats_key "
|
||
+ " FROM prs_v_aanwezigafdeling a"
|
||
+ " , prs_v_aanwezigkostenplaats k"
|
||
+ " WHERE a.prs_bedrijf_key = " + user.afdeling().prs_bedrijf_key()
|
||
+ " AND a.prs_kostenplaats_key = k.prs_kostenplaats_key"
|
||
: "")
|
||
+ ( ((S("prs_dep_default_kpn") & 4) == 4)
|
||
? " UNION"
|
||
+ " SELECT k.prs_kostenplaats_key"
|
||
+ " FROM prs_perslid p"
|
||
+ " , prs_v_aanwezigkostenplaats k"
|
||
+ " WHERE p.prs_kostenplaats_key = k.prs_kostenplaats_key"
|
||
+ " AND p.prs_perslid_key = " + user_key
|
||
: "");
|
||
oRs = Oracle.Execute(sql);
|
||
if (!oRs.eof)
|
||
{
|
||
mld_opdr.kp_key = oRs("prs_kostenplaats_key").Value;
|
||
oRs.MoveNext();
|
||
// Als er toch meerdere zijn, dan hebben we dus alsnog geen goede default
|
||
if (!oRs.eof) mld_opdr.kp_key = -1;
|
||
}
|
||
oRs.Close();
|
||
}
|
||
var autoGebouwKp = false;
|
||
if (mld_opdr.kp_key == -1 && mld_melding.mld_kk == 0 && mld_melding.bld_key > 0 && mld_melding.bttype == 'B')
|
||
{ // Is er een gebouw kostenplaats die ingevuld kan worden.
|
||
sql = "SELECT COALESCE(prs_kostenplaats_key, -1) prs_kostenplaats_key"
|
||
+ " FROM alg_gebouw"
|
||
+ " WHERE alg_gebouw_key = " + mld_melding.bld_key;
|
||
oRs = Oracle.Execute(sql);
|
||
mld_opdr.kp_key = oRs("prs_kostenplaats_key").Value;
|
||
autoGebouwKp = true;
|
||
}
|
||
}
|
||
|
||
var url_get_mld_info_ajax = "../mld/get_mld_info_ajax.asp?mld_key=" + mld_key;
|
||
%>
|
||
|
||
<html>
|
||
<head>
|
||
<% FCLTHeader.Generate(); %>
|
||
|
||
<script type="text/javascript">
|
||
var protected_mld_info_ajax = "<%=safe.jsstring(protectQS.create(url_get_mld_info_ajax))%>";
|
||
var urole = "<%=urole%>";
|
||
var frontend = <%=frontend ? 1 : 0%>;
|
||
var user_key = <%=user_key%>;
|
||
var user_naam = "<%=safe.jsstring(user.naamfull())%>";
|
||
var opdr_key = <%=opdr_key%>;
|
||
var mld_key = <%=mld_key%>;
|
||
var prefix = "<%=safe.jsstring(mld_melding.prefix)%>";
|
||
var volgnr = "<%=mld_opdr.volgnr%>";
|
||
var cnt_key = <%=cnt_key%>;
|
||
var sla_mode = <%=mld_opdr.typeopdr_slamode%>;
|
||
var act_key = <%=mld_opdr.act_key%>;
|
||
var defkp_key = <%=defkp_key%>;
|
||
var kpnverplicht = (<%=mld_melding.kpnverplicht? 1 : 0%> == 1);
|
||
var opdr_status = <%=mld_opdr.opdr_status%>;
|
||
var typeopdr_uren = <%=mld_opdr.typeopdr_uren || -1%>; // Voor als readonly.
|
||
var typeopdr_materiaal = <%=mld_opdr.typeopdr_materiaal || -1%>; // Voor als readonly.
|
||
var typeopdr_totaal = <%=mld_opdr.typeopdr_totaal || -1%>; // Voor als readonly.
|
||
var typeopdr_factuur = <%=mld_opdr.typeopdr_factuur || -1%>; // Voor als readonly.
|
||
var typeopdr_offertelimiet = <%=mld_opdr.typeopdr_offertelimiet%>;
|
||
var typeopdr_isofferte = <%=mld_opdr.typeopdr_isofferte%>;
|
||
var opdr_type = <%=mld_opdr.opdr_type%>;
|
||
var mld_enforce_orderdates = <%=S("mld_enforce_orderdates")? 1 : 0%> == 1;
|
||
var copy = (<%=copy? 1 : 0%> == 1);
|
||
var fromofferte = (<%=fromofferte? 1 : 0%> == 1);
|
||
var srtdiscbes = <%=mld_opdr.srtdiscbes? 1 : 0%> == 1;
|
||
var autlevel = <%=authparams.PRSwritelevel%>;
|
||
var loc_key = <%=mld_melding.loc_key || -1%>;
|
||
var onrgoed_key = <%=mld_melding.place_key||-1%>;
|
||
var bld_key = <%=mld_melding.bld_key||-1%>;
|
||
var flr_key = <%=mld_melding.flr_key || -1%>;
|
||
var room_key = <%=mld_melding.room_key || -1%>;
|
||
var disckey = <%=mld_melding.disc_key%>;
|
||
var opdr_disc_key = <%=mld_opdr.opdr_disc_key%>; // ter info
|
||
var typeopdr_contract = <%=mld_opdr.typeopdr_contract%>;
|
||
var canDatesChange = (<%=this_opdr.canDatesChange? 1 : 0%> == 1);
|
||
var canWriteDatumsMld = (<%=this_mld.canWriteDatums? 1 : 0%> == 1);
|
||
var mld_startdatum = new Date(<%=mld_melding.melddatum.getTime()%>);
|
||
var mld_einddatum = new Date(<%=mld_melding.einddatum.getTime()%>);
|
||
var mld_opdr_datumbegin = new Date(<%=mld_opdr.mld_opdr_datumbegin.getTime()%>);
|
||
var mld_opdr_einddatum = <% if (mld_opdr.mld_opdr_einddatum) {%> new Date(<%=mld_opdr.mld_opdr_einddatum.getTime()%>) <% } else { %> null <% } %>;
|
||
var startOfWorkDay = parseFloat("<%=safe.jsfloat(S("fac_t_startofworkday"))%>");
|
||
var endOfWorkDay = parseFloat("<%=safe.jsfloat(S("fac_t_endofworkday"))%>");
|
||
var registratiedatum = new Date(<%=registratiedatum.getTime()%>);
|
||
|
||
var kosten_verplicht_afr = <%=mld_opdr.tonen_totaal && (mld_opdr.typeopdr_kosten_verplicht & 4 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 4))? 1 : 0%> == 1;
|
||
var tonen_uren = <%=mld_opdr.tonen_uren? 1 : 0%> == 1;
|
||
var tonen_materiaal_bedrag = <%=mld_opdr.tonen_materiaal_bedrag? 1 : 0%> == 1;
|
||
var tonen_correctie = <%=mld_opdr.tonen_correctie? 1 : 0%> == 1;
|
||
var tonen_kostenplaats = <%=mld_opdr.tonen_kostenplaats? 1 : 0%> == 1;
|
||
var tonen_totaal = <%=mld_opdr.tonen_totaal? 1 : 0%> == 1;
|
||
|
||
var opdrachtid = "<%=safe.jsstring(mld_opdr.srtdiscprefix||"") + mld_key + "/" + mld_opdr.mld_opdr_bedrijfopdr_volgnr%>";
|
||
var alg_onrgoed_obj_niveau = "<%=alg_onrgoed_obj_niveau%>";
|
||
var alg_onrgoed_niveau = "<%=alg_onrgoed_niveau%>";
|
||
var melder_key = <%=mld_melding.melder_key%>;
|
||
var perslid_key_voor = <%=mld_melding.perslid_key_voor || -1%>;
|
||
var stdm = <%=mld_melding.stdm_key%>;
|
||
var mld_ordermaterial_frame = <%=S("mld_ordermaterial_frame")%>;
|
||
var faq_max_results_mld = "<%=S("faq_max_results_mld")%>";
|
||
|
||
var iamBedrijfContact = <%=this_opdr.iamBedrijfContact? 1 : 0%>;
|
||
var canUrenMatChange = <%=this_opdr.canUrenMatChange? 1 : 0%>;
|
||
var mld_max_kosten_extern = "<%=S("mld_max_kosten_extern")%>";
|
||
|
||
$(function()
|
||
{
|
||
updateLev();
|
||
|
||
$('textarea').resize(function () { FcltMgr.resized(window) });
|
||
$('textarea').autogrow();
|
||
|
||
if (opdr_key == -1 && !copy)
|
||
{
|
||
$("#uren").val(null);
|
||
$("#uurtarief").val(null);
|
||
$("#mat_kosten").val(null);
|
||
$("#corr_kosten").val(null);
|
||
if (mld_ordermaterial_frame == 0)
|
||
$("#tot_kosten").val(null);
|
||
}
|
||
else
|
||
calcTotal();
|
||
|
||
// Kennisbankitems vast in beeld.
|
||
var JSONdataFaq = "<%=safe.jsstring(JSON.stringify(faq_info_fixed?faq_info_fixed.fixed_faq:null))%>";
|
||
show_fixed_faq("mldFaq", -1, JSON.parse(JSONdataFaq), faq_max_results_mld);
|
||
|
||
// Kennisbankitems in pop-up.
|
||
if (<%=has_faq? 1 : 0%> == 1 && // Er zijn kennisbankitems.
|
||
<%=popup_faq? 1 : 0%> == 1) // Pop-up tonen.
|
||
{
|
||
var loc = <%=mld_melding.loc_key%>;
|
||
var alg_key_arr = [];
|
||
if (loc > 0)
|
||
{
|
||
var bld = <%=mld_melding.bld_key%>;
|
||
if (bld && bld != -1)
|
||
alg_key_arr.push(bld);
|
||
var flr = <%=mld_melding.flr_key%>;
|
||
if (flr && flr != -1)
|
||
alg_key_arr.push(flr);
|
||
var room = <%=mld_melding.room_key%>;
|
||
if (room && room != -1)
|
||
alg_key_arr.push(room);
|
||
}
|
||
var url = "../mld/mld_faq.asp"
|
||
+ "?loc_key=" + loc_key
|
||
+ "&alg_key_arr=" + alg_key_arr.join(",")
|
||
+ "&stdm_key=<%=mld_melding.stdm_key%>"
|
||
+ "&ins_disc_key=<%=mld_opdr.opdr_disc_key%>"
|
||
+ "&typeopdr_key=<%=mld_opdr.opdr_type%>"
|
||
+ "&changed=-1";
|
||
FcltMgr.openModalDetail(url, L("lcl_mld_faq_stdmanswers"), { height: 200, width: 700, callback: FcltCallbackClose } );
|
||
}
|
||
});
|
||
</script>
|
||
</head>
|
||
|
||
<body class="editmode">
|
||
<%
|
||
function gen_afhandeling()
|
||
{
|
||
// AFHANDELING
|
||
if (S("mld_afhandeling_restrict_edit") == 0 || mld_opdr.opdr_opmerking)
|
||
{
|
||
BLOCK_START("opdrOmschrijving", L("lcl_mld_inf_Opmerking"), { icon: "fa-comment-alt-lines"});
|
||
var afh_rw = (opdr_key == -1 || this_opdr.canOpmChange) && S("mld_afhandeling_restrict_edit") == 0;
|
||
RWTEXTAREATR("opdr_opm",
|
||
"fldtxt",
|
||
"",
|
||
mld_opdr.opdr_opmerking,
|
||
{html: "rows='3' maxlength='4000'", readonly: !afh_rw});
|
||
BLOCK_END();
|
||
}
|
||
}
|
||
|
||
SUBFRAME_START();
|
||
var buttons = [];
|
||
|
||
if (finish && this_opdr.canFinish)
|
||
buttons.push({ title: L("lcl_opdr_closekosten"), icon: "fa-flag", action: "opdr_edit_finish()" });
|
||
buttons.push({title: L("lcl_submit"), icon: "fa-fclt-save", action:"mld_submit()", singlepress: true, id:"btn_mld_submit"});
|
||
if (opdr_key > 0 || mld_opdr.act_key == -1) {
|
||
buttons.push({title: L("lcl_cancel"), icon: "fa-fclt-cancel", action:"mld_cancel()"});
|
||
}
|
||
|
||
IFRAMER_HEADER((mld_opdr.act_key > 0? L("lcl_opdr_frame_algemeen_actie") : L("lcl_opdr_frame_algemeen")), buttons);
|
||
%>
|
||
|
||
<form name="u2" method="post"
|
||
action="mld_edit_opdr_save.asp?opdr_key=<%=opdr_key%>"
|
||
method="post">
|
||
<%
|
||
BLOCK_START("opdrOpdracht", L("lcl_opdr_info"), {icon: "fa-user-tag"});
|
||
%>
|
||
<input type="hidden" id="mld_key" name="mld_key" value="<%=mld_key%>">
|
||
|
||
<% if (fromofferte) { %>
|
||
<input type="hidden" id="fromofferte" name="fromofferte" value="1">
|
||
<input type="hidden" id="mld_opdr_parent_key" name="mld_opdr_parent_key" value="<%=opdr_copy_key%>">
|
||
<% } %>
|
||
|
||
<%
|
||
//<!-- OPDRACHTTYPE -->
|
||
ROFIELDTR("fld", L("lcl_mld_typeopdr"), mld_opdr.opdr_type_omschr); // Opdrachttype
|
||
%> <input type="hidden" id="t_opdr" name="t_opdr" value="<%=mld_opdr.opdr_type%>">
|
||
<%
|
||
|
||
//<!-- OPDRACHT STATUS -->
|
||
if (opdr_key > 0)
|
||
{ // Alleen bij bestaande opdrachten de status van de opdracht tonen
|
||
ROFIELDTR("fld" + (mld_opdr.opdr_status == 2? " notapproved" : ""), L("lcl_mld_status"), mld.getextendedopdrstatustext(mld_opdr.extended_opdr_status, opdr_key)); // Opdrachtstatus omschrijving
|
||
|
||
if (mld_opdr.opdr_status == 2)
|
||
{ // Opdracht Niet akkoord
|
||
ROTEXTAREATR("fldtxt", L("lcl_mld_inf_opmerking_fiat"), mld_opdr.mld_opdr_opmerking_fiat, {suppressEmpty: true, maxlength: 4000}); // Afhandeling, reden niet akkoord
|
||
}
|
||
|
||
// Laatste fiatteur mld_opdr_fiat_user is afgeleid van het veld mld_opdr_fiatbedrag dat wordt leeg gemaakt als de setting "mld_opdr_refiat_preference" op 1 staat
|
||
// en de goedkeurder heeft aangegeven dat de opdracht opnieuw als een nieuwe opdracht moet worden gefiatteerd.
|
||
// Er is dan wel "ORDFOK" tracking aanwezig terwijl de opdracht als nieuw behandeld moet worden (GEEN mld_opdr_fiat_user).
|
||
var fiat_key = mld_opdr.mld_opdr_fiat_user;
|
||
if (mld_opdr.opdr_status == 3) // (nog) ter fiattering
|
||
{
|
||
if (fiat_key)
|
||
fiat_key = prs.getFiatteur(mld_opdr.kp_key, (S("mld_opdr_reapproval_rate") >= 0? -1 : mld_opdr.mld_opdr_fiat_user), mld_opdr.t_cost, mld_opdr.opdr_disc_key, mld_opdr.fiatbedrag);
|
||
else
|
||
{ // Als nieuw fiatteren. Ik kan nu de functie getFirstApprover gebruiken.
|
||
var mld_info = mld.mld_melding_info(mld_opdr.mld_key);
|
||
var approver = mld.getFirstApprover(mld_info, mld_opdr); // vier-ogenprincipe wordt nu ook meegenomen.
|
||
fiat_key = approver.approver_key;
|
||
}
|
||
}
|
||
if (fiat_key)
|
||
{
|
||
FCLTpersoonselector(
|
||
"Fiatteur",
|
||
"sgFiatteur",
|
||
{ perslidKey: fiat_key,
|
||
label: (mld_opdr.opdr_status == 3? L("lcl_mld_toapprove"): L("lcl_mld_approver")),
|
||
readonly: true,
|
||
moreinfo: !frontend
|
||
});
|
||
}
|
||
}
|
||
|
||
// Fast check to see if we have any dienst at all
|
||
sql= "SELECT 1 FROM prs_dienst WHERE ROWNUM = 1";
|
||
oRs = Oracle.Execute(sql);
|
||
var anydienst = !oRs.eof;
|
||
oRs.close();
|
||
|
||
if (anydienst)
|
||
{
|
||
FCLTselector("dienstfilt",
|
||
"SELECT prs_dienst_key, "
|
||
+ lcl.xsqla('prs_dienst_omschrijving', 'prs_dienst_key')
|
||
+ " FROM prs_dienst ORDER BY UPPER(" + lcl.xsql('prs_dienst_omschrijving', 'prs_dienst_key') + ")",
|
||
{ initKey: stdm_prs_dienst_key || -1,
|
||
label: L("lcl_prs_companies_dienst"),
|
||
onChange: "onChangedDienst()",
|
||
suppressEmpty: true, // that does not work (yet)
|
||
emptyOption: L("lcl_select_dienst_filter"),
|
||
readonly: (opdr_key > 0 && !this_opdr.canUitvChange) // TODO: authparamsMLDBO3?? UWVA#13876
|
||
});
|
||
}
|
||
if ((opdr_key > 0 || copy || mld_opdr.typeopdr_isofferte == 0)) // !(opdr_key < 0 && !copy && mld_opdr.typeopdr_isofferte == 1)
|
||
{
|
||
//<!-- UITVOERENDE -->
|
||
FCLTuitvoerendeselector("uitvoerende",
|
||
"sgUitv",
|
||
{ uitvoerendekey: mld_opdr.uitvoerende_key,
|
||
label: mld_opdr.srtdiscbes? L("lcl_bes_Supplier") : L("lcl_ord_company_uit"),
|
||
extraParamField: "internbedrijf",
|
||
extracode: "IB", // extra informatie: is het een intern bedrijf (IB)?
|
||
autlevel: authparams.PRSwritelevel,
|
||
whenEmpty: mld_opdr.srtdiscbes? L("lcl_select_bedrijf") : null,
|
||
locatiekey: mld_melding.loc_key,
|
||
onrgoedkey: mld_melding.place_key,
|
||
gebouwkey: mld_melding.bld_key,
|
||
disciplinekey: mld_opdr.opdr_disc_key,
|
||
lutype: mld_opdr.srtdiscbes? "L" : "U", // leverancier of uitvoerende
|
||
isOfferte: mld_opdr.typeopdr_isofferte == 1,
|
||
urlAdd: [{urlParam: "dienst", field: "dienstfilt"}],
|
||
onChange: "onChangeUitv",
|
||
moreinfo: !frontend,
|
||
required: true,
|
||
readonly: (opdr_key > 0 && !this_opdr.canUitvChange) // TODO: authparamsMLDBO3?? UWVA#13876
|
||
});
|
||
|
||
// Opmerking bij uitvoerende. Alleen zichtbaar voor de opdrachtgever, niet de uitvoerende zelf!
|
||
if (user.has("WEB_ORDBOF"))
|
||
{
|
||
RWTEXTAREATR("uitv_opm",
|
||
"fldtxt",
|
||
L("lcl_prs_companies_opmerking"),
|
||
mld_opdr.uitv_opmerking,
|
||
{ readonly: true, suppressEmpty: (opdr_key > 0 && !this_opdr.canUitvChange)
|
||
});
|
||
}
|
||
|
||
// <!-- (UITVOERENDE) CONTACTPERSOON -->
|
||
FCLTcontactpersoonselector("contactpers",
|
||
"sgCntPersUitv",
|
||
{ contactpersoonKey: mld_opdr.contactpersuitv_key,
|
||
label: L("lcl_contact_pers"),
|
||
suppressEmpty: true,
|
||
locatiekey: mld_melding.loc_key,
|
||
gebouwkey: mld_melding.bld_key,
|
||
aanvragerkey: mld_melding.melder_key,
|
||
filtercode: "U",
|
||
urlAdd: [{urlParam: "uitv_key", field: "uitvoerende"},
|
||
{urlParam: "dienst_key", field: "dienstfilt"}],
|
||
onChange: "onChangePers",
|
||
moreinfo: !frontend,
|
||
readonly: (opdr_key > 0 && !this_opdr.canContactChange)
|
||
});
|
||
|
||
%>
|
||
<script type="text/javascript">
|
||
$(function()
|
||
{ // Bij bestaande opdrachten contactpersoon verbergen als uitvoerende een persoon is.
|
||
<% if (opdr_key > 0 && mld_opdr.uitv_type== "P")
|
||
{ %>
|
||
$("#contactpers").closest("tr").hide();
|
||
FcltMgr.resized();
|
||
<% } %>
|
||
});
|
||
</script>
|
||
|
||
<% // Veld mld_typeopdr_contract met codering
|
||
// &0 = geen contract te kiezen bij opdrachten van dit type
|
||
// &1 = contract verplicht bij opdrachten van dit type
|
||
// &2 = wel contract te kiezen bij opdrachten van dit type (=default)
|
||
if (mld_opdr.typeopdr_contract & 2)
|
||
{
|
||
// <!-- CONTRACT UITVOERENDE -->
|
||
|
||
var sql_contract = "SELECT cnt.cnt_contract_key cnt_key, "
|
||
+ " '* ' || cnt.cnt_contract_nummer_intern "
|
||
+ " || CASE WHEN cnt.cnt_contract_versie IS NOT NULL THEN '.' || cnt.cnt_contract_versie END "
|
||
+ " || '-' || cnt.cnt_contract_omschrijving cnt_name, "
|
||
+ " cnt.cnt_prs_bedrijf_key bedrijf_key, "
|
||
+ " (SELECT b.prs_bedrijf_naam naam "
|
||
+ " FROM prs_bedrijf b "
|
||
+ " WHERE b.prs_bedrijf_key = cnt.cnt_prs_bedrijf_key) "
|
||
+ " bedrijf_naam, "
|
||
+ " 1, "
|
||
+ " cnt.cnt_contract_nummer_intern, "
|
||
+ " cnt.cnt_contract_versie "
|
||
+ " FROM cnt_v_aanwezigcontract cnt, "
|
||
+ " cnt_contract_object co, "
|
||
+ " mld_melding_object mo "
|
||
+ " WHERE cnt.cnt_contract_key = co.cnt_contract_key "
|
||
+ " AND co.cnt_ins_deel_key = mo.ins_deel_key "
|
||
+ (stdm_prs_dienst_key > 0
|
||
? " AND (cnt.prs_dienst_key = " + stdm_prs_dienst_key + " OR cnt.prs_dienst_key IS NULL)"
|
||
: "")
|
||
+ " AND mo.mld_melding_key = " + mld_key
|
||
+ " AND ((cnt.cnt_contract_looptijd_tot >= SYSDATE - " +S("cnt_grace_period")+ ") OR cnt.cnt_contract_key = {0})".format(mld_opdr.contract_key||-1)
|
||
+ (mld_opdr.uitvoerende_key > 0
|
||
? " AND cnt_prs_bedrijf_key = " + mld_opdr.uitvoerende_key
|
||
: "")
|
||
+ " UNION "
|
||
+ "SELECT cnt.cnt_contract_key cnt_key, "
|
||
+ " cnt.cnt_contract_nummer_intern "
|
||
+ " || CASE WHEN cnt.cnt_contract_versie IS NOT NULL THEN '.' || cnt.cnt_contract_versie END "
|
||
+ " || '-' || cnt.cnt_contract_omschrijving cnt_name, "
|
||
+ " cnt.cnt_prs_bedrijf_key bedrijf_key, "
|
||
+ " (SELECT b.prs_bedrijf_naam naam "
|
||
+ " FROM prs_bedrijf b "
|
||
+ " WHERE b.prs_bedrijf_key = cnt.cnt_prs_bedrijf_key) "
|
||
+ " bedrijf_naam, "
|
||
+ " 2, "
|
||
+ " cnt.cnt_contract_nummer_intern, "
|
||
+ " cnt.cnt_contract_versie "
|
||
+ " FROM cnt_v_aanwezigcontract cnt, "
|
||
+ " cnt_contract_plaats cp, "
|
||
+ " mld_melding me, "
|
||
+ " mld_stdmelding sm, "
|
||
+ " cnt_disc_params cpa, "
|
||
+ " ins_tab_discipline td, "
|
||
+ " ins_srtdiscipline sd "
|
||
+ " WHERE cnt.cnt_contract_key = cp.cnt_contract_key "
|
||
+ " AND cnt.ins_discipline_key = cpa.cnt_ins_discipline_key "
|
||
+ " AND sm.mld_stdmelding_key = me.mld_stdmelding_key "
|
||
+ " AND td.ins_discipline_key = sm.mld_ins_discipline_key "
|
||
+ " AND sd.ins_srtdiscipline_key = td.ins_srtdiscipline_key "
|
||
+ (stdm_prs_dienst_key > 0
|
||
? " AND (cnt.prs_dienst_key = " + stdm_prs_dienst_key + " OR cnt.prs_dienst_key IS NULL)"
|
||
: "")
|
||
+ " AND (cnt_contract_status = 0 OR cnt.cnt_contract_key = {0})".format(mld_opdr.contract_key||-1) // actief
|
||
+ " AND ( (cp.cnt_alg_plaats_key = me.mld_alg_locatie_key "
|
||
+ " AND cp.cnt_alg_plaats_code = 'L') "
|
||
+ " OR (me.mld_alg_locatie_key IS NULL) "
|
||
+ " OR (cp.cnt_alg_plaats_key = "
|
||
+ " (SELECT CASE cp.cnt_alg_plaats_code "
|
||
+ " WHEN 'G' THEN alg_gebouw_key "
|
||
+ " WHEN 'T' THEN alg_terreinsector_key "
|
||
+ " WHEN 'V' THEN alg_verdieping_key "
|
||
+ " WHEN 'R' THEN alg_ruimte_key "
|
||
+ " END "
|
||
+ " alg_plaats_key "
|
||
+ " FROM alg_v_onroerendgoed og "
|
||
+ " WHERE og.alg_onroerendgoed_keys = "
|
||
+ " me.mld_alg_onroerendgoed_keys))) "
|
||
+ " AND cnt.cnt_contract_looptijd_tot >= SYSDATE - " + S("cnt_grace_period")
|
||
+ " AND me.mld_melding_key = " + mld_key
|
||
+ (mld_opdr.uitvoerende_key > 0
|
||
? " AND cnt_prs_bedrijf_key = " + mld_opdr.uitvoerende_key
|
||
: "")
|
||
+ " ORDER BY 4, 6, 7 DESC";
|
||
|
||
FCLTselector("contract",
|
||
sql_contract,
|
||
{ initKey: mld_opdr.contract_key,
|
||
label: L("lcl_contract"),
|
||
moreinfo: (!frontend? "showCnt()" : ""),
|
||
emptyOption: "",
|
||
extraParamValue: "bedrijf_key, bedrijf_naam",
|
||
extraParamValueInit: "-1, ",
|
||
onChange: "onChangeContract()",
|
||
suppressEmpty: true,
|
||
required: mld_opdr.typeopdr_contract & 1,
|
||
readonly: (opdr_key > 0 && !this_opdr.canContractChange)
|
||
});
|
||
}
|
||
}
|
||
else
|
||
{ // Uitvoerendelijst
|
||
var params = { datatype: "button",
|
||
html: "title='" + L("lcl_mld_opdr_uitvoerenden_select") + "' onclick='mld_melding_uitvoerenden()'",
|
||
opdr_key: opdr_key,
|
||
required: true,
|
||
endicon: 'fa-calculator'
|
||
}
|
||
|
||
RWFIELDTR("uitvoerendelist_button",
|
||
"button uitvoerenden",
|
||
mld_opdr.srtdiscbes? L("lcl_bes_Supplier") : L("lcl_mld_opdr_bedrijf"),
|
||
"(0) " + (mld_opdr.srtdiscbes? L("lcl_bes_Suppliers") : L("lcl_mld_opdr_bedrijven")),
|
||
params);
|
||
%>
|
||
<tr>
|
||
<td>
|
||
<input type="hidden" name="uitvkeystr" id="uitvkeystr" value="">
|
||
<input type="hidden" name="uitvcpersstr" id="uitvcpersstr" value="">
|
||
<input type="hidden" name="uitvcntstr" id="uitvcntstr" value="">
|
||
<input type="hidden" name="uitvbptstr" id="uitvbptstr" value="">
|
||
<input type="hidden" name="uitvslastr" id="uitvslastr" value="">
|
||
</td>
|
||
</tr>
|
||
<%
|
||
}
|
||
|
||
// Het opdr_id is een extern gevuld nummer en hoeft IMHO niet wijzigbaar te zijn. Kijken hoe houdbaar dat is
|
||
// ongewenste mutaties kunnen tot problemen bij facturatie leiden, daarom eerst maar safe readonly
|
||
ROFIELDTR("fld", L("lcl_opdr_id"), mld_opdr.mld_opdr_id, {suppressEmpty: true}); // Evt. te gebruiken factuurkenmerk
|
||
//RWFIELDTR("opdr_id", "fldshort", L("lcl_opdr_id"), mld_opdr.mld_opdr_id);
|
||
|
||
// Onderscheid uitvoerders m.b.t. contactpersoon en beheerder:
|
||
// 1) Extern bedrijf: Contactpersoon aanwezig en de beheerder is default de user (invoerder).
|
||
// Als de contactpersoon bij accepteren of afmelden leeg is, dan wordt de contactpersoon gevuld met de accepteerder of afmelder.
|
||
// 2) Interne persoon: Geen contactpersoon aanwezig en beheerder is default de user (invoerder).
|
||
// 3) Intern bedrijf: Contactpersoon niet aanwezig, beheerder is default leeg.
|
||
// Als de beheerder bij accepteren of afmelden leeg is, dan wordt de beheerder gevuld met de accepteerder of afmelder (user_key).
|
||
var pbtype = "P";
|
||
if (mld_opdr.uitv_type == "B")
|
||
{
|
||
if (mld_opdr.uitv_intern == 1)
|
||
pbtype = "BI"
|
||
else
|
||
pbtype = "BE";
|
||
}
|
||
|
||
// <!-- (INTERN) BEHANDELAAR -->
|
||
FCLTpersoonselector("behandelaar",
|
||
"sgPerson",
|
||
{ perslidKey: mld_opdr.contactpers_key,
|
||
label: L("lcl_mld_behandelaar"),
|
||
autlevel: authparams.PRSwritelevel,
|
||
moreinfo: true,
|
||
filtercode: "OCP",
|
||
urlAdd: [{urlParam: "pbtype", field: "pbtype", init: pbtype},
|
||
{urlParam: "uitv_key", field: "uitvoerende", init: mld_opdr.uitvoerende_key}],
|
||
disc_key: mld_opdr.opdr_disc_key,
|
||
readonly: (opdr_key > 0 && !this_opdr.canVeldChange),
|
||
suppressEmpty: true
|
||
});
|
||
|
||
if ((urole == "bo" || urole == "fo" || S("mld_performer_can_change_flags")) && (S("mld_opdracht_flags") > 0))
|
||
{
|
||
var sql = [];
|
||
for (var i = 0; i < S("mld_opdracht_flags"); i++)
|
||
{
|
||
sql.push("SELECT " + i + ", " + safe.quoted_sql(L("lcl_opdr_flag" + i)) + " FROM DUAL");
|
||
}
|
||
FCLTselector("opdrflag",
|
||
sql.join(" UNION ALL "),
|
||
{ initKey: mld_opdr.flag,
|
||
label: L("lcl_opdr_flags"),
|
||
flag: mld_opdr.flag
|
||
});
|
||
}
|
||
RWTEXTAREATR("opdr_omschr",
|
||
"fldtxt",
|
||
L("lcl_mld_opdr_description"),
|
||
mld_opdr.opdr_omschr,
|
||
{html: "rows='3'", readonly: (opdr_key > 0 && !this_opdr.canVeldChange)});
|
||
|
||
|
||
BLOCK_END();
|
||
|
||
|
||
BLOCK_START("opdrMelding", L("lcl_mld_frame_algemeen"), {icon: "fa-exclamation-circle"});
|
||
|
||
// <!-- MELDING -->
|
||
var params = { infoPointer: { Url: "appl/mld/mld_melding.asp?urole=" + urole + "&mld_key=" + mld_key }};
|
||
ROFIELDTR("fld", L("lcl_call_number"), (mld_opdr.srtdiscprefix != null? mld_opdr.srtdiscprefix : "") + mld_key, params); // Melding
|
||
if (fromofferte && mld_opdr.parent_key > 0) // link naar voorafgaande offerte (en waarom niet gewoon altijd..)
|
||
{
|
||
var paramsParentOpdr = { infoPointer: { Url: "appl/mld/mld_opdr.asp?opdr_key=" + mld_opdr.parent_key + "&urole=" + urole} };
|
||
ROFIELDTR("fld", L("lcl_mld_opdr_parent"), (mld_parent_opdr.srtdiscprefix != null? mld_parent_opdr.srtdiscprefix : "") + mld_parent_opdr.mld_key + "/" + mld_parent_opdr.volgnr, paramsParentOpdr); // Offer opdr_key
|
||
}
|
||
ROFIELDTR ("fld", L("lcl_complain"), mld_opdr.vakgroep + "/" + mld_melding.mld_stdmelding_omschrijving); // Melding
|
||
// <!-- MELDER -->
|
||
FCLTpersoonselector("sgCaller",
|
||
"sgCaller",
|
||
{ perslidKey: mld_melding.melder_key,
|
||
label: L("lcl_caller"),
|
||
readonly: true,
|
||
moreinfo: true
|
||
});
|
||
|
||
// Locatie, gebouw/terrein, verdieping, ruimte
|
||
FCLTplaatsselector (authparams.ALGwritelevel,
|
||
{ locatiekey: mld_melding.loc_key,
|
||
gebouwkey: mld_melding.bld_key,
|
||
verdiepingkey: mld_melding.flr_key,
|
||
ruimtekey: mld_melding.room_key,
|
||
moreinfo: (backo || fronto),
|
||
terrein: true,
|
||
readonly: true,
|
||
suppressEmpty: true,
|
||
no_table: true
|
||
});
|
||
BLOCK_END();
|
||
BLOCK_START("opdrPlanning", L("lcl_opdr_planning"), {icon: "fa-clock"});
|
||
// OPDRACHTDATUM
|
||
// Volgorde in tijd: maxPast, minPast, sysdate, minFuture, maxFuture
|
||
FCLTcalendar("orderdate",
|
||
{ datum: mld_opdr.mld_opdr_datumbegin,
|
||
minDate: (S("mld_enforce_orderdates") == 1 ? mld_melding.melddatum : registratiedatum),
|
||
maxDate: (S("mld_enforce_orderdates") == 1 ? mld_melding.einddatum : null),
|
||
label: L("lcl_orderdate"),
|
||
onChange: "DateChanged()",
|
||
readonly: (opdr_key > 0 && !this_opdr.canDatesChange),
|
||
saveValue: (opdr_key > 0 && !this_opdr.canDatesChange), // Ondanks readonly moet de waarde toch opgeslagen worden.
|
||
volgnr: 1,
|
||
required: true
|
||
});
|
||
|
||
// Indien de volgende plandata required worden gemaakt ooit; dan ook checkSequence() aanpassen
|
||
FCLTcalendar("date_plan",
|
||
{ label: L("lcl_opdr_plandate"),
|
||
datum: mld_opdr.mld_opdr_plandatum,
|
||
timeField: true,
|
||
timeStep: 15,
|
||
startTime: S("fac_t_startofworkday"),
|
||
endTime : S("fac_t_endofworkday"),
|
||
initEmpty: !mld_opdr.mld_opdr_plandatum, // initieel leeg, maar als plandatum aanwezig deze ook tonen.
|
||
initTimeEmpty: !mld_opdr.mld_opdr_plandatum, // idem.
|
||
onChange: "checkSequence()",
|
||
readonly: (opdr_key > 0 && (!this_opdr.canPlanDatesChange || !(S("mld_ord_edit_plandates") & 1))),
|
||
saveValue: (opdr_key > 0 && (!this_opdr.canPlanDatesChange || !(S("mld_ord_edit_plandates") & 1))), // Ondanks readonly moet de waarde toch opgeslagen worden.
|
||
required: false,
|
||
suppressEmpty: (opdr_key > 0 && (!this_opdr.canPlanDatesChange || !(S("mld_ord_edit_plandates") & 1))) // Alleen suppressEmpty als plandatum readonly is.
|
||
} );
|
||
|
||
%>
|
||
<!-- EIND DATUM -->
|
||
<tr><td class="label"><label for="show_date_done"><%=L("lcl_opdr_enddate")%></label></td>
|
||
<td>
|
||
<span id="span_date_done">
|
||
<% FCLTcalendar("date_done",
|
||
{ //label : handmatig want period komt nog
|
||
datum: (mld_opdr.mld_opdr_einddatum? mld_opdr.mld_opdr_einddatum : null),
|
||
initEmpty: !mld_opdr.mld_opdr_einddatum, // Leeg als einddatum null is.
|
||
initTimeEmpty: !mld_opdr.mld_opdr_einddatum, // idem
|
||
minDate: (S("mld_enforce_orderdates") == 1 ? mld_melding.melddatum : registratiedatum),
|
||
maxDate: (S("mld_enforce_orderdates") == 1 ? mld_melding.einddatum : null),
|
||
timeField: mld_melding.uitvoertijd_eenheid == "U",
|
||
timeStep : 15, // TODO: Is nog wel erg hard. Zie ook mld_edit_opdr.js
|
||
startTime: S("fac_t_startofworkday"),
|
||
endTime : S("fac_t_endofworkday"),
|
||
onChange: "DateChanged()",
|
||
readonly: (opdr_key > 0 && !this_opdr.canDatesChange),
|
||
volgnr: 2,
|
||
addClass: (mld_opdr.mld_opdr_einddatum && mld_melding.einddatum.getTime() < mld_opdr.mld_opdr_einddatum.getTime()? "expired2" : null), // Als de eindatum van de opdracht na de einddatum van de melding valt dan addClass toevoegen.
|
||
required: true
|
||
} );
|
||
%>
|
||
</span>
|
||
=<span id="period"><%=mld_opdr.period%></span> <%=L("lcl_period_wd")%>
|
||
</td>
|
||
</tr>
|
||
<%
|
||
if (S("mld_use_plandate2") & 2)
|
||
FCLTcalendar("date_plan2",
|
||
{ label: L("lcl_opdr_plandate2"),
|
||
datum: mld_opdr.mld_opdr_plandatum2,
|
||
timeField: true,
|
||
timeStep: 15,
|
||
startTime: S("fac_t_startofworkday"),
|
||
endTime : S("fac_t_endofworkday"),
|
||
initEmpty: !mld_opdr.mld_opdr_plandatum2, // initieel leeg, maar als plandatum2 aanwezig deze ook tonen.
|
||
initTimeEmpty: !mld_opdr.mld_opdr_plandatum2, // idem.
|
||
onChange: "checkSequence(2)",
|
||
readonly: (opdr_key > 0 && (!this_opdr.canPlanDatesChange || !(S("mld_ord_edit_plandates") & 1))),
|
||
saveValue: (opdr_key > 0 && (!this_opdr.canPlanDatesChange || !(S("mld_ord_edit_plandates") & 1))), // Ondanks readonly moet de waarde toch opgeslagen worden.
|
||
required: false,
|
||
suppressEmpty: (opdr_key > 0 && (!this_opdr.canPlanDatesChange || !(S("mld_ord_edit_plandates") & 1))) // Alleen suppressEmpty als plandatum2 readonly is.
|
||
} );
|
||
BLOCK_END();
|
||
|
||
var ttl = L("lcl_opdr_kosten");
|
||
if (mld_opdr.tonen_totaal)
|
||
ttl += " " + (mld_opdr.inclBTW? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW"));
|
||
BLOCK_START("opdrKosten", ttl, {icon: "fa-coins"});
|
||
// <!-- KOSTENPLAATS -->
|
||
if (mld_opdr.tonen_kostenplaats)
|
||
{ // Als kostenplaat readonly is, dan kostenplaats niet tonen
|
||
FCLTkostenplaatsselector("account",
|
||
"sgAccount",
|
||
user_key,
|
||
{ kostenplaatsKey: mld_opdr.kp_key,
|
||
readonly: ((opdr_key > 0 &&
|
||
(!this_opdr.canKostChange ||
|
||
!mld_opdr.tonen_totaal)) ||
|
||
S("mld_ord_show_kostenplaats") == 2),
|
||
onChange: "onChangeAccount",
|
||
filtercode: "AA", // Alleen actieve kostenplaatsen kunnen selecteren "All Active". Huidige waarde als initi<74>le waarde kan bij kostenplaatsen altijd.
|
||
extraParamField: "budgeth",
|
||
extracode: "B", // extra informatie is budgethouder (B)
|
||
required: mld_melding.kpnverplicht ||
|
||
(mld_opdr.typeopdr_kosten == 1 &&
|
||
mld_opdr.tonen_totaal),
|
||
label: L("lcl_mld_kosten"),
|
||
suppressEmpty: true,
|
||
checkInit: opdr_key < 0 && autoGebouwKp // Alleen bij nieuwe opdracht checken of kostenplaats wel mag worden ingevuld en als het een gebouw kostenplaats is.
|
||
});
|
||
}
|
||
else if (mld_opdr.tonen_totaal)
|
||
{ // Er zijn kosten velden maar de kostenplaats wordt niet getoond, dan een hidden kostenplaats veld opnemen.
|
||
if (defkp_key > 0)
|
||
{ // dan kostenplaats van de melding nemen
|
||
%>
|
||
<input type="hidden" name="account" value="<%=defkp_key%>">
|
||
<% }
|
||
}
|
||
|
||
|
||
if (S("mld_opdr_alt_kostensoort") == 1)
|
||
{ // Afwijkende kostensoort
|
||
FCLTkostensoortselector("srtkosten",
|
||
"sgSrtkosten",
|
||
{ kostensoortKey: mld_opdr.kostensoort_key,
|
||
label: L("lcl_charge_type"),
|
||
filtercode: "OPD",
|
||
refkey: opdr_key,
|
||
whenEmpty: mld_opdr.kostensoort_def_oms // Kostenplaats van de stdmelding of discipline als placeholder.
|
||
});
|
||
}
|
||
else
|
||
{
|
||
// Toon de default kostensoort
|
||
FCLTkostensoortselector( "srtkostendef"
|
||
, "sgSrtkostendef"
|
||
, { kostensoortKey: mld_opdr.kostensoort_def_key
|
||
, readonly: true
|
||
, label: L("lcl_charge_type")
|
||
, suppressEmpty: true
|
||
});
|
||
}
|
||
|
||
// <!-- VRIJWILLIG VERZOEK FIATTERING -->
|
||
if (S("mld_use_order_approval") == 1 &&
|
||
mld_opdr.typeopdr_fvs <= 0 &&
|
||
(S("mld_ord_show_kostenplaats") == 1 || (S("mld_ord_show_kostenplaats") == 0 && defkp_key > 0) || (S("mld_ord_show_kostenplaats") == 2 && mld_opdr.kp_key > 0)))
|
||
{ // Niet als je geen kostenplaats in kunt vullen en als de melding ook geen kostenplaats heeft.
|
||
if (opdr_key < 0)
|
||
{
|
||
// Alleen bij nieuwe opdrachten en dus ook bij copy.
|
||
if (mld_melding.kpnverplicht ||
|
||
(mld_opdr.typeopdr_kosten == 1 &&
|
||
(mld_opdr.tonen_totaal)))
|
||
var html = null;
|
||
else
|
||
var html = "onClick='onChangeFiat();'"
|
||
CHECKBOXTR(L("lcl_mld_appr_req"), "fld", "fiat", false, {html: html });
|
||
}
|
||
else
|
||
{ // Readonly tonen.
|
||
// Alleen als het vrijwillig vinkje is ingevuld.
|
||
ROCHECKBOXTR("fldmldfiat", L("lcl_mld_appr_req"), mld_opdr.opdr_handfiat, {suppressEmpty: true});
|
||
}
|
||
}
|
||
|
||
if (S("mld_ord_show_ordernr") == 1) // <!-- ORDERNR -->
|
||
{
|
||
RWFIELDTR("opdr_ordernr", "fld", L("lcl_mld_inf_Ordernr"), mld_opdr.mld_opdr_ordernr,
|
||
{ html: "onBlur='calcTotal()'",
|
||
readonly: (opdr_key > 0 && !this_opdr.canVeldChange)
|
||
}
|
||
);
|
||
}
|
||
|
||
if (mld_opdr.typeopdr_materiaal >= 2)
|
||
{
|
||
if (S("mld_ordermaterial_frame") == 0)
|
||
{
|
||
// Materiaallijst
|
||
var params = { datatype: "button",
|
||
html: "title='" + L("lcl_mld_opdr_materials_select") + "' onclick='mld_melding_materiaal(" + (S("mld_ordermaterial_editable")? 0 : 1) + ")'",
|
||
opdr_key: opdr_key,
|
||
endicon: "fa-calculator"
|
||
}
|
||
|
||
var matexistarr = [];
|
||
var matopdrkeyarr = [];
|
||
var matkeyarr = [];
|
||
var matamountarr = [];
|
||
var matunitarr = [];
|
||
var matpricearr = [];
|
||
var matbtwarr = [];
|
||
var matdescriptarr = [];
|
||
var mataantal = 0;
|
||
if (opdr_key > 0)
|
||
{
|
||
sql = "SELECT fac_usrdata_key"
|
||
+ " , mld_opdr_materiaal_key"
|
||
+ " , mld_opdr_materiaal_aantal"
|
||
+ " , mld_opdr_materiaal_eenheid"
|
||
+ " , mld_opdr_materiaal_prijs"
|
||
+ " , fin_btwtabelwaarde_key"
|
||
+ " , mld_opdr_materiaal_omschr"
|
||
+ " FROM mld_opdr_materiaal ud"
|
||
+ " WHERE mld_opdr_key = " + opdr_key;
|
||
oRs = Oracle.Execute(sql);
|
||
while(!oRs.eof)
|
||
{
|
||
mataantal++;
|
||
matexistarr.push(oRs("fac_usrdata_key").Value ? "1" : "0");
|
||
matopdrkeyarr.push(oRs("mld_opdr_materiaal_key").Value);
|
||
matkeyarr.push( oRs("fac_usrdata_key").Value || -1 );
|
||
matamountarr.push(oRs("mld_opdr_materiaal_aantal").Value);
|
||
matunitarr.push(oRs("mld_opdr_materiaal_eenheid").Value);
|
||
matpricearr.push(safe.jsfloat(oRs("mld_opdr_materiaal_prijs").Value || 0));
|
||
matbtwarr.push(oRs("fin_btwtabelwaarde_key").Value);
|
||
matdescriptarr.push(oRs("mld_opdr_materiaal_omschr").Value || "Dummy"); // Voor vaste materialen 'Dummy' gebruiken
|
||
oRs.MoveNext();
|
||
}
|
||
oRs.Close();
|
||
}
|
||
|
||
RWFIELDTR("materiallist_button", "button materiaal" + (mld_opdr.typeopdr_materiaal == 3? " required" : ""), L("lcl_mld_material"), L("lcl_mld_materialen") + " (" + mataantal + ")", params);
|
||
//
|
||
// NB: safe.jsfloat(mld_opdr.m_cost) maakt van de null-waarde de string "null". In de input-value moet echt leeg zijn, anders gaat het bij het bewaren fout!
|
||
%>
|
||
<tr>
|
||
<td>
|
||
<input type="hidden" name="matexiststr" id="matexiststr" value="<%=matexistarr.join(",")%>">
|
||
<input type="hidden" name="matopdrkeystr" id="matopdrkeystr" value="<%=matopdrkeyarr.join(",")%>">
|
||
<input type="hidden" name="matkeystr" id="matkeystr" value="<%=matkeyarr.join(",")%>">
|
||
<input type="hidden" name="matamountstr" id="matamountstr" value="<%=matamountarr.join(",")%>">
|
||
<input type="hidden" name="matunitstr" id="matunitstr" value="<%=matunitarr.join(",")%>">
|
||
<input type="hidden" name="matpricestr" id="matpricestr" value="<%=matpricearr.join(",")%>">
|
||
<input type="hidden" name="matbtwstr" id="matbtwstr" value="<%=matbtwarr.join(",")%>">
|
||
<% /* De materiaalkosten (mat_kosten) is readonly in beeld (kostenvelden hieronder gedefinieerd). */ %>
|
||
<script type='text/javascript'>
|
||
var JSONdata = "<%=safe.jsstring(JSON.stringify(matdescriptarr))%>";
|
||
var matdescriptarr = JSON.parse(JSONdata);
|
||
</script>
|
||
</td>
|
||
</tr>
|
||
<%
|
||
}
|
||
}
|
||
|
||
if (mld_opdr.tonen_uren)
|
||
{ // Uren veld tonen.
|
||
var flduren_label = L("lcl_mld_nrhours");
|
||
switch (mld_opdr.typeopdr_uren)
|
||
{
|
||
case 3: {flduren_label = L("lcl_mld_hours_to_spent"); break;}
|
||
case 4: {flduren_label = L("lcl_mlduren_max"); break;}
|
||
case 5: {flduren_label = L("lcl_mld_hoursperweek"); break;}
|
||
}
|
||
RWFIELDTR("uren"
|
||
, "fldshort" + (mld_opdr.typeopdr_uren == 2 || mld_opdr.typeopdr_uren == 4 || mld_opdr.typeopdr_uren == 5? " required" : "")
|
||
, flduren_label
|
||
, safe.curreditable(mld_opdr.hours)
|
||
, { datatype: "float",
|
||
html: "onBlur='calcTotal()' step='0.01'",
|
||
readonly: (opdr_key > 0 && !this_opdr.canUrenMatChange)
|
||
}
|
||
);
|
||
}
|
||
if (mld_opdr.typeopdr_uren == 3 || mld_opdr.typeopdr_uren == 4)
|
||
// Totaal (geraamd) geregistreerde uren(3) of Maximum geregistreerde uren(4)
|
||
ROFIELDTR("fldgeboekt", L("lcl_mlduren_booked"), safe.curr(mld_opdr.booked), {suppressEmpty: true}); // Geboekte uren
|
||
|
||
if (mld_opdr.tonen_uren)
|
||
// UURTARIEF
|
||
RWFIELDTR("uurtarief", "fldshort", L("lcl_hour_rate") + " " + L("lcl_valutasign"),
|
||
safe.curreditable(mld_opdr.h_rate),
|
||
{ datatype: "currency",
|
||
html: "onBlur='calcTotal()'",
|
||
readonly: (opdr_key > 0 && !this_opdr.canUrenMatChange)
|
||
}
|
||
);
|
||
|
||
if (mld_opdr.tonen_materiaal_bedrag)
|
||
// MATERIAAL
|
||
RWFIELDTR("mat_kosten", "fldshort", L("lcl_mater_cost") + " " + L("lcl_valutasign"),
|
||
safe.curreditable(mld_opdr.m_cost),
|
||
{ datatype: "currency",
|
||
html: "onBlur='calcTotal()'",
|
||
readonly: mld_opdr.typeopdr_materiaal >= 2 || (opdr_key > 0 && !this_opdr.canUrenMatChange),
|
||
suppressEmpty: mld_opdr.typeopdr_materiaal >= 2 && S("mld_ordermaterial_frame") == 1
|
||
}
|
||
);
|
||
|
||
if (mld_opdr.tonen_correctie)
|
||
// CORRECTIE
|
||
RWFIELDTR("corr_kosten", "fldshort", L("lcl_correct") + " " + L("lcl_valutasign"),
|
||
safe.curreditable(mld_opdr.corr_cost),
|
||
{ datatype: "currency",
|
||
html: "onBlur='calcTotal()'",
|
||
readonly: ((opdr_key > 0 && !this_opdr.canUrenMatChange) || mld_opdr.correctie_readonly)
|
||
}
|
||
);
|
||
|
||
// TOTAAL
|
||
if (mld_opdr.tonen_totaal)
|
||
{
|
||
// Zijn de totale kosten verplicht en ingevuld?
|
||
// Opdrachttype - mld_typeopdr_kosten_verplicht (typeopdr kosten): 0 = Niet verplicht, 1 = Save + 2 = Afmelden, 4 = Afronden.
|
||
// Vakgroep - mld_disc_params_opdr_kosten (opdracht kosten): 0 = Niet verplicht, 7 = Aanmaak, 6 = Afmelden, 4 = Afronden.
|
||
isRequired = (mld_opdr.typeopdr_kosten_verplicht & 1 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 1));
|
||
RWFIELDTR("tot_kosten", "fldshort" + (isRequired? " required required0isoke" : ""),
|
||
L("lcl_total_cost") + " " + L("lcl_valutasign"),
|
||
safe.curreditable(mld_opdr.t_cost),
|
||
{ datatype: "currency",
|
||
//html: (mld_opdr.typeopdr_materiaal == 0 || mld_opdr.typeopdr_materiaal == 1? "onBlur='calcTotal()'" : null),
|
||
readonly: true
|
||
}
|
||
);
|
||
}
|
||
BLOCK_END();
|
||
|
||
BLOCK_START("mldFaq", L("lcl_faq_kennisbank"), { hidden: true, icon:"fa-book" });
|
||
// hier komen vaste aanwijzingen
|
||
BLOCK_END();
|
||
|
||
if (mld_opdr.opdr_status == 1 || mld_opdr.opdr_status == 2 || mld_opdr.opdr_status == 6 || mld_opdr.opdr_status == 7)
|
||
gen_afhandeling();
|
||
|
||
if (mld_melding.show_ins)
|
||
{ // Zijn er objecten te tonen?
|
||
var sql = "SELECT m.ins_deel_key"
|
||
+ " FROM mld_melding_object m"
|
||
+ " WHERE m.mld_melding_key = " + mld_key
|
||
+ " ORDER BY m.ins_deel_key";
|
||
oRs = Oracle.Execute(sql);
|
||
var thereAreObjects = !oRs.Eof;
|
||
var thereAreMultipleObjects = false;
|
||
if (thereAreObjects)
|
||
{
|
||
oRs.moveNext();
|
||
thereAreMultipleObjects = !oRs.Eof;
|
||
}
|
||
oRs.close();
|
||
|
||
// Als de objecten knop aanwezig is bij meldingen of er zijn geselecteerde objecten te tonen dan objectenblok tonen.
|
||
if (this_opdr.canChange || thereAreObjects)
|
||
{ // Als de objecten knop aanwezig is bij meldingen dan hier ook de knop tonen.
|
||
// De object button grijs weergeven als de plaats niet is ingevuld tot en met het alg_onrgoed_obj_niveau niveau.
|
||
var disableobjects = ((alg_onrgoed_obj_niveau == "L" && mld_melding.loc_key < 0) ||
|
||
(alg_onrgoed_obj_niveau == "G" && mld_melding.bld_key < 0) ||
|
||
(alg_onrgoed_obj_niveau == "V" && mld_melding.flr_key < 0) ||
|
||
(alg_onrgoed_obj_niveau == "R" && mld_melding.room_key < 0) ||
|
||
(alg_onrgoed_obj_niveau == "A" && mld_melding.melder_key < 0) ||
|
||
(alg_onrgoed_obj_niveau == ""));
|
||
|
||
//$("#r_objs_button").attr('disabled', disableobjects);
|
||
var alg_key = -1;
|
||
var aantalobj = 0;
|
||
if (!disableobjects)
|
||
{
|
||
switch(alg_onrgoed_niveau)
|
||
{
|
||
case "L": alg_key = mld_melding.loc_key;
|
||
break;
|
||
case "G": alg_key = mld_melding.bld_key;
|
||
break;
|
||
case "V": alg_key = mld_melding.flr_key;
|
||
break;
|
||
case "R": alg_key = mld_melding.room_key;
|
||
break;
|
||
case "": alg_key = mld_melding.melder_key;
|
||
break;
|
||
}
|
||
var prs_key = mld_melding.perslid_key_voor;
|
||
var sql = get_objecten_sql(alg_key, alg_onrgoed_niveau, prs_key, null, mld_melding.stdm_key);
|
||
var oRs = Oracle.Execute(sql);
|
||
while(!oRs.eof)
|
||
{
|
||
aantalobj++;
|
||
oRs.MoveNext();
|
||
}
|
||
oRs.Close();
|
||
}
|
||
|
||
// Als de objecte knop aanwezig is of er zijn geselecteerde objecten te tonen dan objectenblok tonen.
|
||
var objparams = {module: "O",
|
||
ins_key: -1,
|
||
canChange: this_opdr.canChange,
|
||
srtinst_verplichtstatus: mld_melding.srtinst_verplichtstatus,
|
||
disableobjects: disableobjects,
|
||
aantalobj: aantalobj,
|
||
hasMultiObj: thereAreMultipleObjects,
|
||
init_obj_key: (mld_melding.room_obj_arr && mld_melding.room_obj_arr.length == 1? mld_melding.room_obj_arr[0].ins_key : -1),
|
||
srtinst_verplichtstatus: mld_melding.srtinst_verplichtstatus,
|
||
onclickobj: "mld_opdracht_object()"};
|
||
|
||
BLOCK_START("mldIns", L("lcl_gerelateerdeobjecten"), { icon: "fa-hand-point-right", hidden: aantalobj == 0 });
|
||
mld.generate_relobject_editblock(mld_key, objparams, mld_melding, this_mld);
|
||
BLOCK_END();
|
||
}
|
||
} // if (mld_melding.show_ins)
|
||
|
||
generateFlexKenmerkBlock({ opdr_key: (copy? opdr_copy_key : opdr_key),
|
||
opdr_type: mld_opdr.opdr_type,
|
||
opdr_type_org: mld_opdr.opdr_type_org,
|
||
opdr_status: mld_opdr.opdr_status,
|
||
mld_key: mld_key,
|
||
stdm_arr: [],
|
||
showClose: (opdr_key > 0 && this_opdr && (this_opdr.canClose || this_opdr.canHervatten || this_opdr.canSeeARFlex)),
|
||
copy: copy,
|
||
reado: (opdr_key > 0 && !(this_opdr.canFlexChange || this_opdr.canChangeARFlex)),
|
||
showConfidential: (copy ? this_opdr_copy.canViewConfidential : this_opdr.canViewConfidential),
|
||
finish: finish
|
||
});
|
||
|
||
if (mld_opdr.opdr_status != 1 && mld_opdr.opdr_status != 2 && mld_opdr.opdr_status != 6 && mld_opdr.opdr_status != 7)
|
||
gen_afhandeling();
|
||
%>
|
||
<input type="hidden" name="copyorder_key" value="<%=copy?opdr_copy_key:'-1'%>">
|
||
<input type="hidden" name="act_key" value="<%=mld_opdr.act_key%>">
|
||
<input type="hidden" name="volgnr" value="<%=mld_opdr.mld_opdr_bedrijfopdr_volgnr%>">
|
||
<input type="hidden" name="vervolg" value="<%=vervolg?1:0%>">
|
||
<%
|
||
// if the mode is copy the original order is used as template but the order will be saved
|
||
// like it was a new added order
|
||
if (opdr_key > 0) // Bij bestaande meldingen, dus ook niet bij copy.
|
||
{ %>
|
||
<input type="hidden" name="opdr_key" value="<%=opdr_key%>">
|
||
<% } %>
|
||
|
||
<% IFACE.FORM_END(); %>
|
||
</form>
|
||
<% SUBFRAME_END(); %>
|
||
</body>
|
||
</html>
|
||
<% ASPPAGE_END(); %>
|