Files
Facilitor/APPL/API2/model_bgt_project.inc
Erik Groener 17751156f5 FSN#39055 BCS/2000 functionaliteit in FACILITOR - customization
svn path=/Website/branches/v2017.2/; revision=36169
2017-11-30 11:37:36 +00:00

202 lines
6.6 KiB
PHP

<% /*
$Revision$
$Id$
File: model_bgt_project.inc
Description: Model voor bgt_project
Context:
Notes:
*/
%>
<!-- #include file="../api2/model_bgt_kostenrubriek.inc" -->
<!-- #include file="../bgt/bgt_tools.inc" -->
<%
function model_bgt_project()
{
this.records_name = "budgetprojects";
this.record_name = "budgetproject";
this.table = "bgt_project";
this.primary = "bgt_project_key";
this.soft_delete = "bgt_project_verwijder";
this.autfunction = "WEB_BGTMGT";
this.record_title = L("bgt_project");
this.records_title = L("bgt_project_m");
this.fields = {
"id": {
"dbs": "bgt_project_key",
"label": L("lcl_key"),
"typ": "key",
"required": true,
"hidden_fld": true,
"filter": "exact",
"seq": "bgt_s_bgt_project_key",
"defaultvalue": null
},
"budgetdiscipline": { /* TODO linkt nu naar algemene discpline, moet bgt-variant in scf zijn? */
"dbs": "ins_discipline_key",
"label": L("bgt_discipline_omschrijving"),
"typ": "key",
"required": true,
"insertonly": true,
"foreign": {
"tbl": "ins_tab_discipline",
"key": "ins_discipline_key",
"desc": "ins_discipline_omschrijving",
"where": "ins_discipline_module = 'BGT' AND ins_discipline_verwijder IS NULL"
},
"showtransit": true
},
"name": {
"dbs": "bgt_project_omschrijving",
"label": L("bgt_project_omschrijving"),
"typ": "varchar",
"required": true,
"translate": true
},
"code": {
"dbs": "bgt_project_code",
"label": L("bgt_project_code"),
"typ": "varchar",
"required": true
},
"sequence": {
"dbs": "bgt_project_volgnr",
"label": L("bgt_project_volgnr"),
"typ": "number"
},
"account": {
"dbs": "prs_kostenplaats_key",
"label": L("bgt_budget_account"),
"typ": "key",
"foreign": bgt_account_foreign()
},
"pricedate": {
"dbs": "bgt_project_prijspeildatum",
"label": L("bgt_project_prijspeildatum"),
"typ": "date"
},
"info": {
"dbs": "bgt_project_info",
"label": L("bgt_project_info"),
"typ": "memo"
},
"notes": {
"dbs": "bgt_project_notes",
"label": L("bgt_project_notes"),
"typ": "memo"
}
};
//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
// this.fields.budgetdiscipline.default_value = 1
// }
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);
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();
}
}
%>