Files
Facilitor/APPL/API2/model_prs_kostenplaats.inc
Jos Groot Lipman a7cb79f3eb Hier nog: mgt/mgt_tools naar api2/api2_tools verplaatst
svn path=/Website/trunk/; revision=35798
2017-10-24 09:34:39 +00:00

260 lines
10 KiB
PHP

<% /*
$Revision$
$Id$
File: model_prs_kostenplaats.inc
Description: Vanuit CodeCharge gegenereerd model voor prs_kostenplaats
Context:
Notes:
*/
%>
<!-- #include file="../bgt/bgt_tools.inc" -->
<!-- #include file="../api2/api2_tools.inc" -->
<%
function model_prs_kostenplaats()
{
this.records_name = "costcentres";
this.record_name = "costcentre";
this.table = "prs_kostenplaats";
this.primary = "prs_kostenplaats_key";
this.autfunction = (S("bgt_enabled")==1 ? ["WEB_FINMSU", "WEB_BGTMGT"] : ["WEB_FINMSU"]);
this.record_title = (S("bgt_enabled")==1 ? L("bgt_kostenplaats") : L("prs_kostenplaats"));
this.records_title = (S("bgt_enabled")==1 ? L("bgt_kostenplaats_m") : L("prs_kostenplaats_m"));
this.soft_delete = "prs_kostenplaats_verwijder";
this.fields = {
"id": {
"dbs": "prs_kostenplaats_key",
"label": L("lcl_key"),
"typ": "key",
"hidden_fld": true,
"required": true,
"filter": "exact",
"seq": "prs_s_prs_kostenplaats_key"
},
"budgetdiscipline": {
"dbs": "bgt_project.ins_discipline_key",
"label": L("bgt_discipline_omschrijving"),
"typ": "key",
"required": true,
"foreign": bgt_budgetdiscipline_foreign(),
"showtransit": true
},
"budgetproject": {
"dbs": "bgt_project.bgt_project_key",
"label": L("bgt_project_omschrijving"),
"typ": "key",
"required": true,
"foreign": bgt_budgetproject_foreign(),
"showtransit": true
},
"costgroup": {
"dbs": "prs_kostenplaatsgrp_key",
"label": L("lcl_prs_kostenpl_group"),
"typ": "key",
"required": true,
"foreign": bgt_accountgroup_foreign(),
"showtransit": true
},
"name": {
"dbs": "prs_kostenplaats_nr",
"label": L("lcl_prs_dept_name"),
"typ": "varchar",
"translate": true,
"required": true,
"filter": "like"
},
"module": {
"dbs": "prs_kostenplaats_module",
"label": L("lcl_prs_type"),
"typ": "varchar",
"LOV": "ALG;" + L("lcl_prs_kosttype_alg")
+ ";PRJ;" + L("lcl_prs_kosttype_prj")
+ ";PRS;" + L("lcl_prs_kosttype_prs"),
"hidden_fld": true,
"defaultvalue": "PRJ"
},
"description": {
"dbs": "prs_kostenplaats_omschrijving",
"label": L("lcl_prs_descr"),
"typ": "varchar",
"translate": true,
"required": true,
"filter": "like"
},
"person": {
"dbs": "prs_perslid_key",
"label": L("lcl_prs_budgethouder"),
"typ": "key",
"foreign" : "prs_perslid"
},
"external": {
"dbs": "prs_kostenplaats_extern",
"label": L("lcl_prs_kpnextern"),
"typ": "check0"
},
"approval": {
"dbs": "prs_kostenplaats_fiat",
"label": L("lcl_prs_kpnfiat"),
"typ": "check0"
},
"begin": {
"dbs": "prs_kostenplaats_begin",
"label": "Startdatum", // L("lcl_start_date"),
"typ": "date"
},
"end": {
"dbs": "prs_kostenplaats_eind",
"label": L("lcl_end_date"),
"typ": "date"
},
"costlimit": {
"dbs": "prs_kostenplaats_limiet",
"label": L("lcl_prs_budget") + "&nbsp;(" + L("lcl_valutasign")+")",
"typ": "number"
},
"limitperiod": {
"dbs": "prs_kostenplaats_limietperiode",
"label": L("lcl_prs_budgetperiode"),
"typ": "number",
"LOV": "0;" + L("lcl_prs_none") +
";1;" + L("lcl_prs_month") +
";2;" + L("lcl_prs_year")
}
};
if (S("bgt_enabled")) // alleen voor budgetcontrole, de rest nog even readonly
{
// Deze hoeven ze niet voor BGT te zien:
delete this.fields.begin;
delete this.fields.end;
delete this.fields.person;
delete this.fields.costlimit;
delete this.fields.limitperiod;
delete this.fields.external;
delete this.fields.approval;
this.fields.costgroup.hidden_fld = true; // Deze wordt bepaald uit de gekozen project/deelproject.
this.hook_pre_edit = function (obj, fld)
{
%>
<script>
<% if (obj.budgetdiscipline) { %> var budgetdiscipline = "<%=obj.budgetdiscipline.id%>"; <% } %>
<% if (obj.budgetproject) { %> var budgetproject = "<%=obj.budgetproject.id%>"; <% } %>
</script>
<%
}
this.hook_pre_post = function (params, jsondata)
{
var v_discipline_key = jsondata.budgetdiscipline || getQParamInt("budgetdiscipline", -1);
var v_project_key = jsondata.budgetproject || getQParamInt("budgetproject", -1);
if (v_discipline_key > 0 && v_project_key > 0)
{
var sql_e = "SELECT prs_kostenplaatsgrp_key"
+ " FROM prs_kostenplaatsgrp kpg"
+ " WHERE kpg.bgt_project_key = " + v_project_key;
var oRs_e = Oracle.Execute(sql_e);
var v_kostenplaatsgrp_key = (!oRs_e.eof ? oRs_e("prs_kostenplaatsgrp_key").Value : -1);
oRs_e.Close();
//
if (v_kostenplaatsgrp_key == -1 && v_project_key > 0)
{
// Ontbrekende verwijzing tussen kostenplaats en project toevoegen.
var sql = "INSERT INTO prs_kostenplaatsgrp"
+ " (bgt_project_key, prs_kostenplaatsgrp_nr, prs_kostenplaatsgrp_oms)"
+ " SELECT " + v_project_key
+ " , d.bgt_disc_params_code"
+ " , p.bgt_project_code"
+ " FROM bgt_project p"
+ " , bgt_disc_params d"
+ " WHERE p.ins_discipline_key = d.bgt_ins_discipline_key"
+ " AND p.bgt_project_key = " + v_project_key;
Oracle.Execute(sql);
//
oRs_e = Oracle.Execute(sql_e);
v_kostenplaatsgrp_key = (!oRs_e.eof ? oRs_e("prs_kostenplaatsgrp_key").Value : -1);
oRs_e.Close();
//
if (v_kostenplaatsgrp_key == -1)
abort_with_warning("Er is een fout opgetreden bij het aanmaken van de kostenplaatsgroep");
}
//
jsondata.costgroup = v_kostenplaatsgrp_key;
}
}
this.REST_GET = generic_REST_GET(this, {
"GET": {
"tables": [ "prs_kostenplaatsgrp"
, "bgt_project"
],
"wheres": [ "prs_kostenplaatsgrp.bgt_project_key = bgt_project.bgt_project_key"
, "prs_kostenplaatsgrp.prs_kostenplaatsgrp_key = prs_kostenplaats.prs_kostenplaatsgrp_key"
]
}
});
this.REST_POST = generic_REST_POST(this);
this.REST_PUT = generic_REST_PUT(this);
this.REST_DELETE = generic_REST_DELETE(this);
}
else
{
delete this.fields.budgetdiscipline;
delete this.fields.budgetproject;
delete this.fields.begin;
delete this.fields.module.hidden_fld;
delete this.fields.module.defaultvalue;
this.hook_pre_edit = function (obj, fld)
{
var sql = "SELECT kp.prs_kostenplaats_limietperiode"
+ " , kpg.prs_kostenplaatsgrp_limperiode"
+ " , kpg.prs_perslid_key"
+ " FROM prs_kostenplaats kp"
+ " , prs_kostenplaatsgrp kpg"
+ " WHERE kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)"
+ " AND kp.prs_kostenplaats_key = " + obj.id;
var oRs = Oracle.Execute(sql);
var kpngrp_prs_key = oRs("prs_perslid_key").Value? oRs("prs_perslid_key").Value : -1;
var kpg_limperiode = oRs("prs_kostenplaatsgrp_limperiode").Value ? oRs("prs_kostenplaatsgrp_limperiode").Value : 0;
var kpn_limietperiode = kpg_limperiode ? kpg_limperiode : (oRs("prs_kostenplaats_limietperiode").Value ? oRs("prs_kostenplaats_limietperiode").Value : 0);
oRs.Close();
// Wijzigen van de kostenplaats(groep)? Setting prs_restrict_kpedit {0=volgens autorisatie (default) | 1=alleen eigen kp/kpg wijzigen}.
// WEB_FINMSU rechten of budgethouder.
var authparams = user.checkAutorisation("WEB_FINMSU", true);
var canChangeAlg = (authparams && authparams.ALGwritelevel < 9);
var canChange = (canChangeAlg ||
(S("prs_restrict_kpedit") == 1 && (obj.person == user_key || kpngrp_prs_key == user_key))) // Alleen eigen kp/kpg wijzigen
user.auth_required_or_abort(canChange);
fld.name.readonly = !canChangeAlg;
fld.module.readonly = !canChangeAlg;
fld.description.readonly = !canChangeAlg;
fld.person.readonly = !canChangeAlg;
fld.costgroup.readonly = !canChangeAlg;
fld.external.readonly = !canChangeAlg;
fld.approval.readonly = !canChangeAlg;
fld.end.readonly = !canChangeAlg;
fld.limitperiod.readonly = kpg_limperiode;
%>
<script type="text/javascript">
// Deze variabelen zijn nodig in prs_kostenplaats.js
var p_kpn_limietperiode = <%=kpn_limietperiode%>;
</script>
<%
}
this.REST_GET = generic_REST_GET(this);
this.REST_POST = generic_REST_POST(this);
this.REST_PUT = generic_REST_PUT(this);
this.REST_DELETE = generic_REST_DELETE(this);
}
}
%>