FCLT-SUP#43507 Rubriek verplicht bij kostensoortgroepen

svn path=/Website/branches/v2017.2/; revision=35523
This commit is contained in:
Erik Groener
2017-10-03 10:07:10 +00:00
parent 2591a5ac0a
commit bfa44f3c29
6 changed files with 250 additions and 57 deletions

View File

@@ -35,8 +35,11 @@ function model_prs_kostensoort()
this.record_title = L("prs_kostensoort");
this.records_title = L("prs_kostensoort_m");
var fields_main = {};
var fields_ext = {};
this.fields = {
fields_main = {
"id": {
"dbs": "prs_kostensoort_key",
"label": L("lcl_key"),
@@ -52,14 +55,11 @@ function model_prs_kostensoort()
"required": true,
//"insertonly" : true,
"typ": "key",
"foreign": {
"tbl": "prs_kostensoortgrp",
"key": "prs_kostensoortgrp_key",
"desc": "prs_kostensoortgrp_oms"
},
"foreign": bgt_costtypegroup_foreign(),
"LOVinit": "",
"filter": "exact",
"multiedit": true
"multiedit": true,
"showtransit": true
},
"name": {
"dbs": "prs_kostensoort_oms",
@@ -88,7 +88,6 @@ function model_prs_kostensoort()
"typ": "varchar",
"translate": true
},
"charge": {
"dbs": "prs_kostensoort_doorbelasten",
"label": L("prs_kostensoort_doorbelasten"),
@@ -123,6 +122,35 @@ function model_prs_kostensoort()
if (S("bgt_enabled")) // alleen voor budgetcontrole
{
// Via Admin moet de context discipline/project toegevoegd worden.
fields_ext = {
"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
},
"budgetcostcategory": {
"dbs" : "bgt_kostenrubriek.bgt_kostenrubriek_key",
"label": L("bgt_kostenrubriek"),
"typ": "key",
"required": true,
"foreign": bgt_budgetcostcategory_foreign(),
"showtransit": true
}
};
this.fields = object_merge({}, fields_ext, fields_main);
delete this.fields.charge;
delete this.fields.refcode;
this.fields.inclvat.hidden_fld = true;
@@ -135,6 +163,75 @@ function model_prs_kostensoort()
}
};
// this.print = { xmlnode: "budget", where: "kostensoort"};
this.hook_pre_edit = function (obj, fld)
{
if ((obj.id > -1) || (obj.costtypegroup && obj.costtypegroup.id > -1))
{
this.fields.budgetdiscipline.hidden_fld = false;
this.fields.budgetdiscipline.readonly = true;
this.fields.budgetproject.hidden_fld = false;
this.fields.budgetproject.readonly = true;
this.fields.budgetcostcategory.hidden_fld = false;
this.fields.budgetcostcategory.readonly = true;
}
if (obj.costtypegroup && obj.costtypegroup.id != -1)
{ // Nog even de parent gegevens erbij halen zodat deze readonly getoond worden.
var sql = "SELECT p.ins_discipline_key"
+ " , p.bgt_project_key"
+ " , r.bgt_kostenrubriek_key"
+ " , dp.bgt_disc_params_code ||' - '|| di.ins_discipline_omschrijving oms_disc"
+ " , p.bgt_project_code ||' - '|| p.bgt_project_omschrijving oms_proj"
+ " , r.bgt_kostenrubriek_oms oms_rubr"
+ " FROM bgt_disc_params dp"
+ " , ins_tab_discipline di"
+ " , bgt_project p"
+ " , bgt_kostenrubriek r"
+ " , prs_kostensoortgrp g"
+ " WHERE dp.bgt_ins_discipline_key = p.ins_discipline_key"
+ " AND di.ins_discipline_key = p.ins_discipline_key"
+ " AND p.bgt_project_key = r.bgt_project_key"
+ " AND r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key"
+ " AND g.prs_kostensoortgrp_key = " + obj.costtypegroup.id
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
obj.budgetdiscipline = {id:oRs("ins_discipline_key").Value, name: oRs("oms_disc").Value};
obj.budgetproject = {id: oRs("bgt_project_key").Value, name: oRs("oms_proj").Value};
obj.budgetcostcategory = {id: oRs("bgt_kostenrubriek_key").Value, name: oRs("oms_rubr").Value};
}
oRs.Close();
}
var prj_key = (obj.budgetproject ? obj.budgetproject.id : -1);
fld["costcentre"].foreign.tbl = bgt_account_foreign_tbl(prj_key);
fld["costcentre"].multiedit = false;
%>
<script type="text/javascript">
<% if (obj.budgetdiscipline) { %> var budgetdiscipline = "<%=obj.budgetdiscipline.id%>"; <% } %>
<% if (obj.budgetproject) { %> var budgetproject = "<%=obj.budgetproject.id%>"; <% } %>
<% if (obj.budgetcostcategory) { %> var budgetcostcategory = "<%=obj.budgetcostcategory.id%>"; <% } %>
<% if (obj.costtypegroup) { %> var costtypegroup = "<%=obj.costtypegroup.id%>"; <% } %>
</script>
<%
}
this.REST_GET = generic_REST_GET(this, {
"GET": {
"tables": [
"bgt_project",
"bgt_kostenrubriek",
"prs_kostensoortgrp"
],
"wheres": [
"bgt_project.bgt_project_key = bgt_kostenrubriek.bgt_project_key",
"bgt_kostenrubriek.bgt_kostenrubriek_key = prs_kostensoortgrp.bgt_kostenrubriek_key",
"prs_kostensoortgrp.prs_kostensoortgrp_key = prs_kostensoort.prs_kostensoortgrp_key"
]
}
});
}
else
{
@@ -147,10 +244,8 @@ function model_prs_kostensoort()
"multiadd": "group"
}
};
this.REST_GET = generic_REST_GET(this);
}
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);

View File

@@ -11,6 +11,7 @@
Notes:
*/
%>
<!-- #include file="../api2/model_bgt_budget.inc" -->
<!-- #include file="../api2/model_prs_kostensoort.inc" -->
<%
@@ -24,7 +25,11 @@ function model_prs_kostensoortgrp()
this.record_title = L("prs_kostensoortgrp");
this.records_title = L("prs_kostensoortgrp_m");
this.fields = {
var fields_main = {};
var fields_ext = {};
fields_main = {
"id": {
"dbs": "prs_kostensoortgrp_key",
"label": L("lcl_key"),
@@ -38,13 +43,10 @@ function model_prs_kostensoortgrp()
"dbs" : "bgt_kostenrubriek_key",
"label": L("bgt_kostenrubriek"),
"typ": "key",
"required": true, /* TODO alleen als BGT */
"required": true,
"insertonly": true,
"foreign": {
"tbl": "bgt_kostenrubriek",
"key": "bgt_kostenrubriek_key",
"desc": "bgt_kostenrubriek_oms"
}
"foreign": bgt_budgetcostcategory_foreign(),
"showtransit": true
},
"name": {
"dbs": "prs_kostensoortgrp_oms",
@@ -62,12 +64,93 @@ function model_prs_kostensoortgrp()
}
};
// if (S("bgt_enabled")) // alleen voor budgetcontrole
// {
// this.print = { xmlnode: "budget", where: "kostengroep"};
// }
if (S("bgt_enabled"))
{
// Via Admin moet de context discipline/project toegevoegd worden.
fields_ext = {
"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
}
};
this.fields = object_merge({}, fields_ext, fields_main);
this.REST_GET = generic_REST_GET(this);
this.hook_pre_edit = function (obj, fld)
{
if ((obj.id > -1) || (obj.budgetcostcategory && obj.budgetcostcategory.id > -1))
{
this.fields.budgetdiscipline.hidden_fld = false;
this.fields.budgetdiscipline.readonly = true;
this.fields.budgetproject.hidden_fld = false;
this.fields.budgetproject.readonly = true;
}
if (obj.budgetcostcategory && obj.budgetcostcategory.id != -1)
{ // Nog even de parent gegevens erbij halen zodat deze readonly getoond worden.
var sql = "SELECT p.ins_discipline_key"
+ " , p.bgt_project_key"
+ " , r.bgt_kostenrubriek_key"
+ " , dp.bgt_disc_params_code ||' - '|| di.ins_discipline_omschrijving oms_disc"
+ " , p.bgt_project_code ||' - '|| p.bgt_project_omschrijving oms_proj"
+ " FROM bgt_disc_params dp"
+ " , ins_tab_discipline di"
+ " , bgt_project p"
+ " , bgt_kostenrubriek r"
+ " WHERE dp.bgt_ins_discipline_key = p.ins_discipline_key"
+ " AND di.ins_discipline_key = p.ins_discipline_key"
+ " AND p.bgt_project_key = r.bgt_project_key"
+ " AND r.bgt_kostenrubriek_key = " + obj.budgetcostcategory.id;
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
obj.budgetdiscipline = {id:oRs("ins_discipline_key").Value, name: oRs("oms_disc").Value};
obj.budgetproject = {id: oRs("bgt_project_key").Value, name: oRs("oms_proj").Value};
}
oRs.Close();
}
%>
<script type="text/javascript">
<% if (obj.budgetdiscipline) { %> var budgetdiscipline = "<%=obj.budgetdiscipline.id%>"; <% } %>
<% if (obj.budgetproject) { %> var budgetproject = "<%=obj.budgetproject.id%>"; <% } %>
<% if (obj.budgetcostcategory) { %> var budgetcostcategory = "<%=obj.budgetcostcategory.id%>"; <% } %>
<% if (obj.costtypegroup) { %> var costtypegroup = "<%=obj.costtypegroup.id%>"; <% } %>
</script>
<%
}
this.REST_GET = generic_REST_GET(this, {
"GET": {
"tables": [
"bgt_project",
"bgt_kostenrubriek"
],
"wheres": [
"bgt_kostenrubriek.bgt_kostenrubriek_key = prs_kostensoortgrp.bgt_kostenrubriek_key",
"bgt_kostenrubriek.bgt_project_key = bgt_project.bgt_project_key"
]
}
});
}
else
{
this.fields = fields_main;
delete this.fields.budgetcostcategory;
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);

View File

@@ -68,7 +68,7 @@ function init_budget()
$.getJSON( "../bgt/get_bgt_info_ajax.asp",
{ req_info: "initsearch",
niveau: init_niveau,
parent_key: v_budgetproject,
parent_key: (v_budgetproject ? v_budgetproject : -1),
init_key: init_key
},
re_init_plaats);

View File

@@ -12,6 +12,13 @@
*/
%>
<%
function object_merge(){
for (var i=1; i<arguments.length; i++)
for (var a in arguments[i])
arguments[0][a] = arguments[i][a];
return arguments[0];
}
function bgt_budgetdiscipline_foreign()
{
return {

View File

@@ -15,19 +15,33 @@
<!-- #include file="../scf/scaffolding.inc" -->
<!-- #include file="../api2/model_prs_kostensoort.inc" -->
<%
var discipline_key = getQParamInt("budgetdiscipline", -1);
var project_key = getQParamInt("budgetproject", -1);
var kostenrubriek_key = getQParamInt("budgetcostcategory", -1);
var kostensoortgrp_key = getQParamInt("costtypegroup", -1);
var kostensoort_key = getQParamInt("costtype", -1);
var this_model = new model_prs_kostensoort();
var model_params = {
"search": {
"autosearch": true,
"filters": [
"budgetdiscipline",
"budgetproject",
"budgetcostcategory",
"costtypegroup",
"name",
"remark",
"altcode"
]
],
"transit": [
"budgetdiscipline",
"budgetproject",
"budgetcostcategory",
"costtypegroup"
],
"requires": {
"js": ["../bgt/bgt_budget.js"]
}
},
"list": {
"columns": [
@@ -36,34 +50,20 @@ var model_params = {
"remark",
"altcode"
]
},
"edit": {
"requires": {
"js": ["../bgt/bgt_budget.js"]
}
}
};
if (S("bgt_enabled"))
{
model_params.transit = { "costtypegroup": kostensoortgrp_key};
model_params.wrap = {
"no_default_frames": true,
"frames": [ { url: "../bgt/bgt_budget.asp?mode=list&costtype={0}" } ]
}
this_model.hook_pre_edit = function (obj, fld)
{
var v_kostensoort_key = (kostensoort_key > -1 ? kostensoort_key : obj.id);
var sql = "SELECT DISTINCT r.bgt_project_key"
+ " FROM bgt_kostenrubriek r"
+ " , prs_kostensoortgrp g"
+ " , prs_kostensoort s"
+ " WHERE r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key"
+ " AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key"
+ (kostensoortgrp_key > -1 ? " AND g.prs_kostensoortgrp_key = " + kostensoortgrp_key : "")
+ (v_kostensoort_key > -1 ? " AND s.prs_kostensoort_key = " + v_kostensoort_key : "");
var oRs = Oracle.Execute(sql);
var prj_key = (!oRs.eof ? oRs("bgt_project_key").Value : -1);
oRs.Close();
fld["costcentre"].foreign.tbl = bgt_account_foreign_tbl(prj_key);
fld["costcentre"].multiedit = false;
}
};
}
else
{

View File

@@ -15,15 +15,27 @@
<!-- #include file="../scf/scaffolding.inc" -->
<!-- #include file="../api2/model_prs_kostensoortgrp.inc" -->
<%
var discipline_key = getQParamInt("budgetdiscipline", -1);
var project_key = getQParamInt("budgetproject", -1);
var kostenrubriek_key = getQParamInt("budgetcostcategory", -1);
var this_model = new model_prs_kostensoortgrp();
var model_params = {
"search": {
"autosearch": true,
"filters": [
"name",
"budgetdiscipline",
"budgetproject",
"budgetcostcategory",
"name"
],
"transit": [
"budgetdiscipline",
"budgetproject",
"budgetcostcategory"
]
],
"requires": {
"js": ["../bgt/bgt_budget.js"]
}
},
"list": {
"columns": [
@@ -32,6 +44,11 @@ var model_params = {
"altcode"
]
},
"edit": {
"requires": {
"js": ["../bgt/bgt_budget.js"]
}
},
"wrap": {
"frames": [{ url: "prs_kostensoort.asp?mode=list&costtypegroup={0}",
autfunction: (S("bgt_enabled")==1 ? ["WEB_FINMSU", "WEB_BGTMGT"] : ["WEB_FINMSU"])
@@ -39,14 +56,5 @@ var model_params = {
}
};
if (S("bgt_enabled"))
{
model_params.transit = { "budgetcostcategory": kostenrubriek_key };
}
else
{
delete this_model.fields.budgetcostcategory;
}
scaffolding(this_model, model_params);
%>