FSN#46968 BGT: Deelproject aanmaken lukt niet (TWYN.BGT_PROJECT wordt gemuteerd)

svn path=/Website/branches/v2017.2/; revision=35747
This commit is contained in:
Erik Groener
2017-10-19 09:43:45 +00:00
parent 9e9bf06792
commit 81b70244ee
3 changed files with 96 additions and 57 deletions

View File

@@ -94,6 +94,67 @@ function model_bgt_project()
//this.print = { xmlnode: "budget", where: "project"};
this.hook_pre_edit = function (obj, fld)
{
if (mode != "save")
{
var sql = "SELECT count(*)"
+ " FROM bgt_kostenrubriek"
+ " WHERE bgt_project_key = " + obj.id;
var oRs = Oracle.Execute(sql);
if (oRs(0) == 0) // Een nieuw project, of een project waaraan nog geen rubrieken zijn gekoppeld.
{ // Voeg de selectie voor het standaardproject toe.
fld["import"] = {
"dbs": "fac_usrtab.fac_usrtab_key",
"label": "Standaard projectdata",
"typ": "key",
"foreign": {
"tbl": "(SELECT d.fac_usrdata_key"
+ " , d.fac_usrdata_code"
+ " FROM fac_usrtab t"
+ " , fac_usrdata d"
+ " WHERE d.fac_usrtab_key = t.fac_usrtab_key"
+ " AND t.fac_usrtab_naam = 'project_import')",
"key": "fac_usrdata_key",
"desc": "fac_usrdata_code"
}
};
}
oRs.Close();
if (obj.id > 0)
{
fld["account"].foreign.tbl = bgt_account_foreign_tbl(obj.id);
}
else
{
fld["account"].hidden_fld = true;
}
}
}
this.hook_pre_post = function(params, obj)
{
// Controle op, en wijzigingen aan data voordat het record wordt toegevoegd.
}
this.hook_post_post = function(params, obj, key)
{
// Nadat het project-record is toegevoegd is de key hiervan bekend.
create_default_kostenplaatsgrp(key);
var data_key = getFParamInt("import", -1);
create_default_projectdata(key, data_key);
}
this.hook_pre_put = function(params, obj, key)
{
// Wordt alleen gebruikt bij wijzigen.
create_default_kostenplaatsgrp(key);
var data_key = getFParamInt("import", -1);
create_default_projectdata(key, data_key);
}
// if (!S("bgt_enabled"))
// {
// this.fields.budgetdiscipline.hidden_fld = true
@@ -104,5 +165,37 @@ function model_bgt_project()
this.REST_POST = generic_REST_POST(this);
this.REST_PUT = generic_REST_PUT(this);
this.REST_DELETE = generic_REST_DELETE(this);
function create_default_kostenplaatsgrp(key)
{
var sql_u = "SELECT count(*) aantal"
+ " FROM prs_kostenplaatsgrp"
+ " WHERE bgt_project_key = " + key;
var oRs_u = Oracle.Execute(sql_u);
if (oRs_u("aantal").Value == 0)
{
var sql = "SELECT d.bgt_disc_params_code"
+ " , p.bgt_project_code"
+ " FROM bgt_disc_params d"
+ " , bgt_project p"
+ " WHERE d.bgt_ins_discipline_key = p.ins_discipline_key"
+ " AND p.bgt_project_key = " + key;
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
var sql_i = "INSERT INTO prs_kostenplaatsgrp"
+ " (prs_kostenplaatsgrp_nr, prs_kostenplaatsgrp_oms, bgt_project_key)"
+ " VALUES"
+ " (" + safe.quoted_sql(oRs("bgt_disc_params_code").Value)
+ " ," + safe.quoted_sql(oRs("bgt_project_code").Value)
+ " ," + key
+ " )";
Oracle.Execute(sql_i);
}
oRs.Close();
}
oRs_u.Close();
}
}
%>

View File

@@ -200,6 +200,8 @@ function model_prs_kostenplaats()
}
else
{
delete this.fields.budgetdiscipline;
delete this.fields.budgetproject;
this.REST_GET = generic_REST_GET(this);
}
}

View File

@@ -18,63 +18,6 @@
<%
var this_model = new model_bgt_project();
this_model.hook_pre_edit = function (obj, fld)
{
if (mode != "save")
{
var sql = "SELECT count(*)"
+ " FROM bgt_kostenrubriek"
+ " WHERE bgt_project_key = " + obj.id;
var oRs = Oracle.Execute(sql);
if (oRs(0) == 0) // Een nieuw project, of een project waaraan nog geen rubrieken zijn gekoppeld.
{ // Voeg de selectie voor het standaardproject toe.
fld["import"] = {
"dbs": "fac_usrtab.fac_usrtab_key",
"label": "Standaard projectdata",
"typ": "key",
"foreign": {
"tbl": "(SELECT d.fac_usrdata_key"
+ " , d.fac_usrdata_code"
+ " FROM fac_usrtab t"
+ " , fac_usrdata d"
+ " WHERE d.fac_usrtab_key = t.fac_usrtab_key"
+ " AND t.fac_usrtab_naam = 'project_import')",
"key": "fac_usrdata_key",
"desc": "fac_usrdata_code"
}
};
}
oRs.Close();
if (obj.id > 0)
{
fld["account"].foreign.tbl = bgt_account_foreign_tbl(obj.id);
}
else
{
fld["account"].hidden_fld = true;
}
}
}
this_model.hook_pre_post = function(params, obj)
{
// Controle op, en wijzigingen aan data voordat het record wordt toegevoegd.
}
this_model.hook_post_post = function(params, obj, key)
{
// Nadat het project-record is toegevoegd is de key hiervan bekend.
var data_key = getFParamInt("import", -1);
create_default_projectdata(key, data_key);
}
this_model.hook_pre_put = function(params, obj, key)
{
// Wordt alleen gebruikt bij wijzigen.
var data_key = getFParamInt("import", -1);
create_default_projectdata(key, data_key);
}
scaffolding(this_model,
@@ -103,6 +46,7 @@ scaffolding(this_model,
function create_default_projectdata(p_project_key, default_key)
{
// Deze functie gebruikt het java-scriptbestand "../imp/imp_shared.js" die bij de includes toegevoegd wordt.
// Importeer het genoemde csv-bestand met de default projectindeling
var res = { success: false, warning: "?" };