1011 lines
50 KiB
Plaintext
1011 lines
50 KiB
Plaintext
<%@language = "javascript" %>
|
||
<% /*
|
||
$Revision$
|
||
$Id$
|
||
|
||
File: mld_edit_opdr.asp (formerly order_input.asp;142)
|
||
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.
|
||
*/ %>
|
||
|
||
<!-- #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/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="../Shared/json2.js" -->
|
||
<!-- #include file="mld.inc" -->
|
||
|
||
<%
|
||
FCLTHeader.Requires({ plugins:["jQuery", "kenmerk"],
|
||
js: ["../mld/mld_edit_opdr.js", "num2curr.js", "jquery.timepicker-table.js"],
|
||
css: ["timePicker-table.css"] });
|
||
/***** 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 opdr_key = getQParamInt("opdr_key", -1);
|
||
var copy = (getQParamInt("opdr_copy", 0) == 1);
|
||
var finish = (getQParamInt("finish", 0) == 1);
|
||
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.
|
||
}
|
||
|
||
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 = mld.mld_opdr_info(opdr_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;
|
||
|
||
if (mld_opdr.contactpersuitv_key == null)
|
||
mld_opdr.contactpersuitv_key = -1;
|
||
}
|
||
//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
|
||
}
|
||
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");
|
||
|
||
// Kijk naar de totale rechten die ik heb.
|
||
var autfunction = ["WEB_ORDBOF", "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 ORDBO2/ORDOAP binnenkomt (FSN#16737/AASA#22871). Dan schakelen we naar ORDBO2/ORDOAP
|
||
if (autfunction == "WEB_ORDBOF" && !(authparams.PRSwritelevel < 9 || authparams.ALGwritelevel < 9))
|
||
{
|
||
autfunction = "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
|
||
|
||
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"
|
||
+ " , 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 || "";
|
||
oRs.close();
|
||
|
||
if (opdr_key < 0 && !copy) // Nu default omschrijving van de opdracht vullen met flexkenmerken
|
||
{
|
||
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") == 1)
|
||
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 die in het verleden ligt, dan is het de opdrachtstartdatum
|
||
if (!copy && mld_opdr.typeopdr_slamode == 1)
|
||
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.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.toSQL(true);
|
||
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.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
|
||
|
||
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)
|
||
? " 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"
|
||
: "");
|
||
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)
|
||
{ // 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;
|
||
}
|
||
}
|
||
|
||
// Aantal lopende opdrachten.
|
||
sql = "SELECT COUNT(mld_opdr_key) nrOpen"
|
||
+ " FROM mld_opdr o"
|
||
+ " WHERE mld_melding_key = " + mld_key
|
||
+ " AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9)"
|
||
+ " AND o.mld_opdr_key != " + opdr_key;
|
||
oRs = Oracle.Execute(sql);
|
||
var nrOpenOpdr = oRs("nrOpen").Value;
|
||
oRs.Close();
|
||
|
||
%>
|
||
|
||
<html>
|
||
<head>
|
||
<% FCLTHeader.Generate(); %>
|
||
|
||
<script type="text/javascript">
|
||
var urole = "<%=urole%>";
|
||
var frontend = "<%=frontend%>";
|
||
var user_key = <%=user_key%>;
|
||
var user_naam = "<%=user.naam()%>";
|
||
var opdr_key = <%=opdr_key%>;
|
||
var mld_key = <%=mld_key%>;
|
||
var prefix = "<%=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 kp_key = <%=mld_opdr.kp_key%>;
|
||
var defkp_key = <%=defkp_key%>;
|
||
var kpnverplicht = (<%=mld_melding.kpnverplicht? 1 : 0%> == 1);
|
||
var opdr_status = <%=mld_opdr.opdr_status%>;
|
||
var typeopdr_matchtype = <%=mld_opdr.typeopdr_matchtype || -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_ord_show_cost = <%=S("mld_ord_show_cost")? 1 : 0%> == 1;
|
||
var mld_enforce_orderdates = <%=S("mld_enforce_orderdates")? 1 : 0%> == 1;
|
||
var copy = (<%=copy? 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||-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%>;
|
||
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 = new Date(<%=mld_opdr.mld_opdr_einddatum.getTime()%>);
|
||
var registratiedatum = new Date(<%=registratiedatum.getTime()%>);
|
||
var kosten_verplicht_afr = <%=mld_opdr.typeopdr_matchtype != 4 && (mld_opdr.typeopdr_kosten_verplicht & 4 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 4))? 1 : 0%> == 1;
|
||
var nrOpenOpdr = <%=nrOpenOpdr%>;
|
||
var opdrachtid = "<%=(mld_opdr.srtdiscprefix||"") + mld_key + "/" + mld_opdr.mld_opdr_bedrijfopdr_volgnr%>";
|
||
var alg_onrgoed_obj_niveau = "<%=alg_onrgoed_obj_niveau%>";
|
||
var melder_key = <%=mld_melding.melder_key%>;
|
||
var perslid_key_voor = <%=mld_melding.perslid_key_voor || -1%>;
|
||
var stdm = <%=mld_melding.stdm%>;
|
||
|
||
jQuery(document).ready(function()
|
||
{
|
||
$('textarea').resize(function () { FcltMgr.resized(window) });
|
||
$('textarea').autogrow();
|
||
});
|
||
</script>
|
||
</head>
|
||
|
||
<body id="editbody">
|
||
<%
|
||
var buttons = [];
|
||
|
||
if (finish && this_opdr.canFinish)
|
||
buttons.push({ title: L("lcl_opdr_closekosten"), icon: "finish.png", action: "opdr_edit_finish()" });
|
||
buttons.push({title: L("lcl_submit"), icon: "opslaan.png", action:"mld_submit()", singlepress: true, id:"btn_mld_submit"});
|
||
buttons.push({title: L("lcl_cancel"), icon: "undo.png", action:"mld_cancel()"});
|
||
|
||
IFRAMER_HEADER((mld_opdr.act_key > 0? L("lcl_opdr_frame_algemeen_actie") : L("lcl_opdr_frame_algemeen")), buttons);
|
||
%>
|
||
|
||
<div id="edit">
|
||
<form name="u2" method="post"
|
||
action="mld_edit_opdr_save.asp?opdr_key=<%=opdr_key%>"
|
||
method="post">
|
||
<input type="hidden" id="mld_key" name="mld_key" value="<%=mld_key%>">
|
||
|
||
<%
|
||
BLOCK_START("opdrOpdracht", L("lcl_opdr_info"), true);
|
||
//<!-- 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%>">
|
||
<% //<!-- UITVOERENDE -->
|
||
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,
|
||
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)
|
||
{
|
||
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,
|
||
gebouwkey: mld_melding.bld_key,
|
||
disciplinekey: mld_melding.disc,
|
||
lutype: mld_opdr.srtdiscbes? "L" : "U", // leverancier of uitvoerende
|
||
urlAdd: [{urlParam: "dienst", field: "dienstfilt"}],
|
||
onChange: "onChangeUitv",
|
||
moreinfo: !frontend,
|
||
required: true,
|
||
readonly: (opdr_key > 0 && !this_opdr.canUitvChange) // TODO: authparamsMLDBO3?? UWVA#13876
|
||
});
|
||
|
||
// <!-- (UITVOERENDE) CONTACTPERSOON -->
|
||
FCLTcontactpersoonselector("contactpers",
|
||
"sgCntPersUitv",
|
||
{ contactpersoonKey: mld_opdr.contactpersuitv_key,
|
||
label: L("lcl_contact_pers"),
|
||
suppressEmpty: true,
|
||
locatiekey: mld_melding.loc_key,
|
||
filtercode: "U",
|
||
urlAdd: [{urlParam: "uitv_key", field: "uitvoerende"}],
|
||
onChange: "onChangePers",
|
||
moreinfo: !frontend,
|
||
readonly: (opdr_key > 0 && !this_opdr.canVeldChange)
|
||
});
|
||
%>
|
||
<script type="text/javascript">
|
||
jQuery(document).ready(function()
|
||
{ // Bij bestaande opdrachten contactpersoon verbergen als uitvoerende een persoon of intern bedrijf is (= intern).
|
||
<% if (opdr_key > 0 && mld_opdr.uitv_intern)
|
||
{ %>
|
||
$("#contactpers").closest("tr").hide();
|
||
<% } %>
|
||
});
|
||
</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"
|
||
+ " AND mo.mld_melding_key = " + mld_key
|
||
+ " AND (cnt.cnt_contract_status IN (0, 1) 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"
|
||
+ " , cnt_disc_params cpa "
|
||
+ " WHERE cnt.cnt_contract_key = cp.cnt_contract_key"
|
||
+ " AND cnt.ins_discipline_key = cpa.cnt_ins_discipline_key"
|
||
+ " 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 (cp.cnt_alg_plaats_key = (SELECT alg_gebouw_key FROM alg_v_onroerendgoed og"
|
||
+ " WHERE og.alg_onroerendgoed_keys = me.mld_alg_onroerendgoed_keys)"
|
||
+ " AND cp.cnt_alg_plaats_code = 'G'))"
|
||
+ " AND cnt.cnt_contract_status IN (0, 1)"
|
||
+ " 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",
|
||
onChange: "onChangeContract()",
|
||
suppressEmpty: true,
|
||
required: mld_opdr.typeopdr_contract & 1,
|
||
readonly: (opdr_key > 0 && !this_opdr.canVeldChange)
|
||
});
|
||
}
|
||
}
|
||
else
|
||
{ // Uitvoerendelijst
|
||
var params = { type: "button",
|
||
html: "title='" + L("lcl_mld_opdr_uitvoerenden_select") + "' onclick='mld_melding_uitvoerenden()'",
|
||
opdr_key: opdr_key
|
||
}
|
||
|
||
var uitvkeystr = "";
|
||
var uitvcpersstr = "";
|
||
var uitvcntstr = "";
|
||
|
||
RWFIELDTR("uitvoerendelist_button",
|
||
"details uitvoerenden required",
|
||
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="<%=uitvkeystr%>">
|
||
<input type="hidden" name="uitvcpersstr" id="uitvcpersstr" value="<%=uitvcpersstr%>">
|
||
<input type="hidden" name="uitvcntstr" id="uitvcntstr" value="<%=uitvcntstr%>">
|
||
</td>
|
||
</tr>
|
||
<%
|
||
}
|
||
|
||
// <!-- (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"}],
|
||
disc_key: mld_melding.disc,
|
||
readonly: (opdr_key > 0 && !this_opdr.canVeldChange),
|
||
suppressEmpty: true
|
||
});
|
||
|
||
// OMSCHRIJVING
|
||
RWTEXTAREATR("opdr_omschr",
|
||
"fldomschr",
|
||
L("lcl_mld_opdr_description"),
|
||
mld_opdr.opdr_omschr,
|
||
{html: "rows='3'" + (opdr_key > 0 && !this_opdr.canVeldChange? "readonly" : "")});
|
||
|
||
// OPDRACHT DATUM
|
||
// 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
|
||
});
|
||
%>
|
||
|
||
<!-- EIND DATUM -->
|
||
<tr><td class="label"><label><%=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,
|
||
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: 8,
|
||
endTime : 18,
|
||
onChange: "DateChanged()",
|
||
readonly: (opdr_key > 0 && !this_opdr.canDatesChange),
|
||
volgnr: 2,
|
||
addClass: (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>
|
||
=<input style="text-align:right;" type="text" id="period" size="4" name="period" readonly value="<%=mld_opdr.period%>"> <%=L("lcl_period_wd")%>
|
||
</td>
|
||
</tr>
|
||
|
||
|
||
<% // TODO: deze invulbaar maken (FSN#30171) [nog overwegen: afhankelijk van de typeopdr-vinkje doen?]
|
||
FCLTcalendar("date_plan",
|
||
{ label: L("lcl_opdr_plandate"),
|
||
datum: mld_opdr.mld_opdr_plandatum,
|
||
timeField: true,
|
||
timeStep: 15,
|
||
startTime: 8,
|
||
endTime: 18,
|
||
initEmpty: !mld_opdr.mld_opdr_plandatum, // initieel leeg, maar als plandatum aanwezig deze ook tonen.
|
||
initTimeEmpty: !mld_opdr.mld_opdr_plandatum, // idem.
|
||
required: false
|
||
} );
|
||
|
||
// AFHANDELING
|
||
RWTEXTAREATR("opdr_opm",
|
||
"fldomschr",
|
||
L("lcl_mld_inf_Opmerking"),
|
||
mld_opdr.opdr_opmerking,
|
||
{html: "rows='3' maxlength='4000'" + (opdr_key > 0 && !this_opdr.canOpmChange? " readonly" : "")});
|
||
BLOCK_END();
|
||
|
||
BLOCK_START("opdrMelding", L("lcl_opdr_info") + " " + (mld_opdr.srtdiscprefix != null? mld_opdr.srtdiscprefix : "") + mld_key + "/" + mld_opdr.mld_opdr_bedrijfopdr_volgnr, true);
|
||
//<!-- OPDRACHT STATUS -->
|
||
if (opdr_key > 0)
|
||
{ // Alleen bij bestaande opdrachten de status van de opdracht tonen
|
||
params = { infoPointer: { Url: "appl/shared/status_info.asp?opdr_key=" + opdr_key + "&urole=" + urole,
|
||
Title: L("lcl_status_details") + " " + (mld_opdr.srtdiscprefix||"") + mld_key + "/" + mld_opdr.mld_opdr_bedrijfopdr_volgnr
|
||
}
|
||
}
|
||
ROFIELDTR("fld" + (mld_opdr.opdr_status == 2? " notapproved" : ""), L("lcl_mld_status"), status.getopdrstatustext(mld_opdr.opdr_status), params); // 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: 1024}); // Afhandeling, reden niet akkoord
|
||
}
|
||
|
||
var fiat_key = mld_opdr.mld_opdr_fiat_user;
|
||
if (mld_opdr.opdr_status == 3) // (nog) ter fiattering
|
||
{
|
||
if (fiat_key)
|
||
fiat_key = mld_opdr.fiatteur_kpg_key; // 1e is geweest
|
||
else
|
||
fiat_key = mld_opdr.fiatteur_kp_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
|
||
});
|
||
}
|
||
}
|
||
|
||
// 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", "fldordernr", L("lcl_opdr_id"), mld_opdr.mld_opdr_id); // Evt. te gebruiken factuurkenmerk
|
||
// <!-- 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
|
||
|
||
// <!-- MELDER -->
|
||
FCLTpersoonselector("sgCaller",
|
||
"sgCaller",
|
||
{ perslidKey: mld_melding.melder_key,
|
||
label: L("lcl_caller"),
|
||
readonly: true,
|
||
moreinfo: true
|
||
});
|
||
|
||
ROFIELDTR ("fld", L("lcl_complain"), mld_opdr.vakgroep + "/" + mld_melding.mld_stdmelding_omschrijving); // Melding
|
||
|
||
// Locatie, gebouw, verdieping, ruimte
|
||
// NB: is nu nog van de melding, maar binnenkort van de opdracht zelf
|
||
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),
|
||
readonly: true,
|
||
suppressEmpty: true,
|
||
no_table: true
|
||
});
|
||
BLOCK_END();
|
||
|
||
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;
|
||
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)
|
||
{
|
||
BLOCK_START("mldIns", L("lcl_gerelateerdeobjecten"));
|
||
// 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_obj_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 "A": alg_key = mld_melding.melder_key;
|
||
break;
|
||
}
|
||
var prs_key = mld_melding.perslid_key_voor;
|
||
var sql = get_objecten_sql(alg_key, alg_onrgoed_obj_niveau, prs_key, null, mld_melding.stdm);
|
||
var oRs = Oracle.Execute(sql);
|
||
while(!oRs.eof)
|
||
{
|
||
aantalobj++;
|
||
oRs.MoveNext();
|
||
}
|
||
}
|
||
|
||
// Als de objecte knop aanwezig is of er zijn geselecteerde objecten te tonen dan objectenblok tonen.
|
||
var objparams = {ins_key: -1,
|
||
canChange: this_opdr.canChange,
|
||
verplicht: mld_melding.srtinst_verplicht,
|
||
disableobjects: disableobjects,
|
||
aantalobj: aantalobj,
|
||
onclickobj: "mld_opdracht_object()"};
|
||
mld.generate_relobject_editblock(mld_key, objparams);
|
||
BLOCK_END();
|
||
}
|
||
} // if (mld_melding.show_ins)
|
||
|
||
// de kostenvelden zijn nogal afhankelijk van mld_opdr.typeopdr_matchtype
|
||
// 1,2 --> alle kosten velden
|
||
// 3 --> alleen uren velden/uurtarief en wel kostenplaats
|
||
// 4 --> geen kosten of kostenplaats en wel uren
|
||
// 5 --> Alleen meerdere materialen invullen en kostenplaats
|
||
// globale setting: S("mld_ord_show_cost")==0 Alleen kostenplaats en (readonly?) totaal
|
||
|
||
var ttl = L("lcl_opdr_kosten");
|
||
if (mld_opdr.typeopdr_matchtype != 3 && mld_opdr.typeopdr_matchtype != 4)
|
||
ttl += " " + (mld_opdr.inclBTW? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW"));
|
||
BLOCK_START("opdrKosten", ttl, true);
|
||
// <!-- KOSTENPLAATS -->
|
||
if (S("mld_ord_show_kostenplaats") >= 1 && (mld_opdr.typeopdr_matchtype != 4 || (mld_opdr.typeopdr_matchtype == 4 && S("mld_use_order_approval") == 1)))
|
||
{ // 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.typeopdr_matchtype == 4)) || 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.typeopdr_matchtype != 4),
|
||
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.typeopdr_matchtype != 4)
|
||
{
|
||
if (defkp_key > 0)
|
||
{ // dan kostenplaats van de melding nemen
|
||
%>
|
||
<input type="hidden" name="account" value="<%=defkp_key%>">
|
||
<% }
|
||
}
|
||
FCLTkostensoortselector("srtkosten",
|
||
"sgSrtkosten",
|
||
{ kostensoortKey: mld_melding.stdm_ksrt_key,
|
||
readonly: true,
|
||
label: L("lcl_charge_type"),
|
||
suppressEmpty: true
|
||
});
|
||
|
||
// <!-- VRIJWILLIG VERZOEK FIATTERING -->
|
||
if (S("mld_use_order_approval") == 1 &&
|
||
(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.typeopdr_matchtype != 4))
|
||
var html = null;
|
||
else
|
||
var html = "onClick='onChangeFiat();'"
|
||
CHECKBOXTR(L("lcl_mld_appr_req"), "fldmldfiat", "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", "fldordernr", L("lcl_mld_inf_Ordernr"), mld_opdr.mld_opdr_ordernr,
|
||
{ html: "onBlur='calcTotal()'",
|
||
readonly: (opdr_key > 0 && !this_opdr.canVeldChange)
|
||
}
|
||
);
|
||
}
|
||
|
||
if (mld_opdr.typeopdr_matchtype == 5)
|
||
{
|
||
// Materiaallijst
|
||
var params = { type: "button",
|
||
html: "title='" + L("lcl_mld_opdr_materials_select") + "' onclick='mld_melding_materiaal("+(S("mld_ordermaterial_editable")?0:1)+")'",
|
||
opdr_key: opdr_key
|
||
}
|
||
|
||
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));
|
||
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", L("lcl_mld_material"), L("lcl_mld_materialen") + " (" + mataantal + ")", params);
|
||
%>
|
||
<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(",")%>">
|
||
<input type="hidden" name="mat_kosten" id="mat_kosten" value="<%=safe.jsfloat(mld_opdr.m_cost)%>">
|
||
<script type='text/javascript'>
|
||
var JSONdata = '(<%=safe.jsstring(JSON.stringify(matdescriptarr))%>)';
|
||
var matdescriptarr = eval('(' + JSONdata + ')')
|
||
</script>
|
||
</td>
|
||
</tr>
|
||
<%
|
||
}
|
||
|
||
if (S("mld_ord_show_cost") == 1 &&
|
||
// mld_opdr.typeopdr_matchtype != 4 && zonder kosten wil AADS nog steeds de uren
|
||
mld_opdr.typeopdr_matchtype != 5) // UREN
|
||
{
|
||
var flduren_label = L("lcl_mld_nrhours");
|
||
switch (mld_opdr.typeopdr_matchtype)
|
||
{
|
||
case 3: {flduren_label = L("lcl_mld_hoursperweek"); break;}
|
||
case 6: {flduren_label = L("lcl_mld_hours_to_spent"); break;}
|
||
case 7: {flduren_label = L("lcl_mlduren_max"); break;}
|
||
}
|
||
RWFIELDTR("uren"
|
||
, "flduren" + (mld_opdr.typeopdr_matchtype == 3? " 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_matchtype == 6 || mld_opdr.typeopdr_matchtype == 7)
|
||
ROFIELDTR("fldgeboekt", L("lcl_mlduren_booked"), safe.curr(mld_opdr.booked), {suppressEmpty: true}); // Geboekte uren
|
||
|
||
if (S("mld_ord_show_cost") == 1 &&
|
||
mld_opdr.typeopdr_matchtype != 3 &&
|
||
mld_opdr.typeopdr_matchtype != 4 &&
|
||
mld_opdr.typeopdr_matchtype != 5)
|
||
{ // UURTARIEF
|
||
RWFIELDTR("uurtarief", "flduurtarief", 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)
|
||
}
|
||
);
|
||
// MATERIAAL
|
||
RWFIELDTR("mat_kosten", "fldmatkosten", L("lcl_mater_cost") + " " + L("lcl_valutasign"),
|
||
safe.curreditable(mld_opdr.m_cost),
|
||
{ datatype: "currency",
|
||
html: "onBlur='calcTotal()'",
|
||
readonly: (opdr_key > 0 && !this_opdr.canUrenMatChange)
|
||
}
|
||
);
|
||
|
||
// CORRECTIE
|
||
RWFIELDTR("corr_kosten", "fldcorrkosten", L("lcl_correct") + " " + L("lcl_valutasign"),
|
||
safe.curreditable(mld_opdr.corr_cost),
|
||
{ datatype: "currency",
|
||
html: "onBlur='calcTotal()'",
|
||
readonly: (opdr_key > 0 && !this_opdr.canUrenMatChange)
|
||
}
|
||
);
|
||
}
|
||
|
||
// TOTAAL
|
||
if (mld_opdr.typeopdr_matchtype != 4)
|
||
{
|
||
// 0 = niet verplicht, 1 = save + 2 = afmelden, 4 = afronden.
|
||
isRequired = (mld_opdr.typeopdr_kosten_verplicht & 1 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 1)) ||
|
||
((mld_opdr.typeopdr_kosten_verplicht & 2 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 2)) &&
|
||
(mld_opdr.opdr_status == 5 || mld_opdr.opdr_status == 8)) ||
|
||
((mld_opdr.typeopdr_kosten_verplicht & 4 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 4)) &&
|
||
mld_opdr.opdr_status == 6)
|
||
RWFIELDTR("tot_kosten", "fldtotkosten" + (isRequired? " required" : ""),
|
||
L("lcl_total_cost") + " " + L("lcl_valutasign"),
|
||
safe.curreditable(mld_opdr.t_cost),
|
||
{ datatype: "currency",
|
||
html: (mld_opdr.typeopdr_matchtype != 5? "onBlur='calcTotal()'" : null),
|
||
readonly: true
|
||
}
|
||
);
|
||
}
|
||
|
||
BLOCK_END();
|
||
|
||
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.canSeeARFlex)),
|
||
copy: copy,
|
||
reado: (opdr_key > 0 && !(this_opdr.canFlexChange || this_opdr.canChangeARFlex)),
|
||
flexcolumns: S("mld_flexcolumns")
|
||
});
|
||
%>
|
||
<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%>">
|
||
<%
|
||
// 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>
|
||
</div>
|
||
</body>
|
||
</html>
|