189 lines
7.2 KiB
PHP
189 lines
7.2 KiB
PHP
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: model_reservationconsumables.inc
|
|
|
|
Description: reserveren delen model.
|
|
Parameters:
|
|
Context:
|
|
|
|
Notes:
|
|
*/
|
|
|
|
%>
|
|
<!-- #include file="../Shared/discxalg3d.inc"-->
|
|
<%
|
|
function status_bo(json)
|
|
{
|
|
var status_bo_key = json;
|
|
var status_bo = res.getbostatustext(status_bo_key) || "";
|
|
|
|
return status_bo;
|
|
}
|
|
|
|
function model_reservationconsumables()
|
|
{
|
|
this.table = "res_rsv_artikel";
|
|
this.primary = "res_rsv_artikel_key";
|
|
this.records_name = "reservationconsumables";
|
|
this.record_name = "reservationconsumable";
|
|
|
|
this.fields = {
|
|
"id" : { dbs: "res_rsv_artikel_key", typ: "key" , seq:"res_s_res_rsv_artikel_key"},
|
|
"reservation": { dbs: "res_rsv_ruimte_key", typ: "key", foreign: "res_rsv_ruimte" },
|
|
"consumable" : { dbs: "res_artikel_key", typ: "key", foreign: "res_artikel" },
|
|
"freename" : { dbs: "res_rsv_artikel_omschrijving", typ: "varchar" },
|
|
"amount" : { dbs: "res_rsv_artikel_aantal", typ: "number"},
|
|
"status" : { dbs: "res_status_bo_key", typ: "key", foreign: status_bo },
|
|
"from" : { dbs: "res_rsv_artikel_levering", typ: "datetime" },
|
|
//"to" : { dbs: "res_rsv_artikel_tot", typ: "date" },
|
|
"price" : { dbs: "res_rsv_artikel_prijs", typ: "float", "iscurrency": true },
|
|
"processed" : { dbs: "res_rsv_artikel_verwerkt", typ: "datetime" },
|
|
"closed" : { dbs: "res_rsv_artikel_afgemeld", typ: "datetime" },
|
|
"changed" : { dbs: "res_rsv_artikel_mutatie", typ: "datetime" },
|
|
"dirtlevel" : { dbs: "res_rsv_artikel_dirtlevel", typ: "number" },
|
|
"delivered" : { dbs: "res_rsv_artikel_geleverd", typ: "datetime" },
|
|
"pickup" : { dbs: "res_rsv_artikel_afhalen", typ: "datetime" },
|
|
"externnr" : { dbs: "res_rsv_artikel_externnr", typ: "varchar", readonly: !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) },
|
|
"externsyncdate": { dbs: "res_rsv_artikel_externsyncdate", typ: "datetime", readonly: !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) }
|
|
};
|
|
|
|
this.list = {
|
|
columns: [
|
|
"id",
|
|
"from",
|
|
"amount",
|
|
"consumable",
|
|
"price"
|
|
]
|
|
};
|
|
|
|
|
|
this._validate_fields = function (dbfields, params, jsondata)
|
|
{
|
|
var scope = params.filter.scope || "fe";
|
|
this.autfunction = { fe : "WEB_RESUSE", fo : "WEB_RESFOF", bo : "WEB_RESBOF", mi : "WEB_RESBAC" } [scope];
|
|
params.authparams = user.checkAutorisation(this.autfunction, null, null, true); // pessimistisch
|
|
}
|
|
|
|
this.REST_GET = function _GET(params)
|
|
{
|
|
this._validate_fields({}, params, {});
|
|
|
|
var query = api2.sqlfields(params, this);
|
|
|
|
if (params.filter.id > 0)
|
|
{
|
|
var this_res = {canReadAny: false};
|
|
var sql = "SELECT res_rsv_ruimte_key"
|
|
+ " FROM res_rsv_artikel"
|
|
+ " WHERE res_rsv_artikel_key = " + params.filter.id;
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.eof)
|
|
{
|
|
var rsv_ruimte_key = oRs("res_rsv_ruimte_key").Value;
|
|
var this_res = res.func_enabled(rsv_ruimte_key);
|
|
}
|
|
oRs.Close();
|
|
user.auth_required_or_abort(this_res.canReadAny);
|
|
|
|
query.wheres.push("res_rsv_artikel_key = " + params.filter.id);
|
|
}
|
|
|
|
if (params.filter.api2 && params.filter.api2 != this.records_name)
|
|
{
|
|
query.wheres.push("res_rsv_artikel_verwijder IS NULL");
|
|
|
|
query.tables.push("res_rsv_ruimte");
|
|
query.wheres.push("res_rsv_ruimte.res_rsv_ruimte_key = res_rsv_artikel.res_rsv_ruimte_key");
|
|
query.wheres.push(user_key + " IN (res_rsv_ruimte_host_key, res_rsv_ruimte_contact_key)"); // Altijd fe vooralnog
|
|
query.wheres.push("res_rsv_ruimte_van BETWEEN SYSDATE - " + S("facilitiespast_res") + " AND SYSDATE + " + S("facilitiesfuture_res"));
|
|
|
|
var wheres = api2.sqlfilter(params, this);
|
|
query.wheres = query.wheres.concat(wheres);
|
|
}
|
|
var sql = "SELECT " + query.selects.join(", ")
|
|
+ " FROM " + query.tables.join(", ")
|
|
+ (query.wheres.length ? " WHERE " + query.wheres.join(" AND " ) : "")
|
|
+ " ORDER BY res_rsv_artikel_key";
|
|
|
|
var json = api2.sql2json (params, sql, this);
|
|
|
|
return json;
|
|
};
|
|
|
|
this.REST_POST = function (params, jsondata) /* new reservable consumable */
|
|
{
|
|
this._validate_fields({}, params, jsondata);
|
|
|
|
var sql = "SELECT ra.res_artikel_vrije_omschrijving"
|
|
+ " FROM res_artikel ra"
|
|
+ " WHERE ra.res_artikel_key = " + jsondata.consumable.id;
|
|
var oRs = Oracle.Execute(sql);
|
|
var hasFreename = (oRs("res_artikel_vrije_omschrijving").Value == 1);
|
|
oRs.Close();
|
|
|
|
if (hasFreename)
|
|
{
|
|
var newFreename = sharedTrim(jsondata.freename || "");
|
|
if (newFreename == "")
|
|
abort_with_warning(L("lcl_res_rsv_art_name"));
|
|
}
|
|
else
|
|
{ // Geen vrije omschrijving, deze dus veld leeg maken.
|
|
delete jsondata.freename;
|
|
}
|
|
|
|
if (jsondata.amount == 0)
|
|
abort_with_warning(L("lcl_res_rsv_art_count"));
|
|
|
|
return generic_REST_POST(this)(params, jsondata);
|
|
}
|
|
|
|
this.REST_PUT = function (params, jsondata, the_key) /* update reservable consumables */
|
|
{
|
|
this._validate_fields({}, params, jsondata);
|
|
|
|
var sql = "SELECT ra.res_artikel_vrije_omschrijving"
|
|
+ " , rra.res_rsv_artikel_omschrijving"
|
|
+ " FROM res_artikel ra"
|
|
+ " , res_rsv_artikel rra"
|
|
+ " WHERE ra.res_artikel_key = rra.res_artikel_key"
|
|
+ " AND rra.res_rsv_artikel_key = " + the_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
var hasFreename = (oRs("res_artikel_vrije_omschrijving").Value == 1);
|
|
var curFreename = oRs("res_rsv_artikel_omschrijving").Value;
|
|
oRs.Close();
|
|
|
|
if (hasFreename)
|
|
{
|
|
if (jsondata.freename)
|
|
{
|
|
var newFreename = sharedTrim(jsondata.freename || "");
|
|
if (newFreename == "")
|
|
abort_with_warning(L("lcl_res_rsv_art_name"));
|
|
}
|
|
}
|
|
else
|
|
{ // Geen vrije omschrijving, dus verwijderen als er toch wat staat.
|
|
if (curFreename)
|
|
jsondata.freename = "";
|
|
else
|
|
delete jsondata.freename;
|
|
}
|
|
|
|
if (jsondata.amount == 0)
|
|
abort_with_warning(L("lcl_res_rsv_art_count"));
|
|
|
|
return generic_REST_PUT(this)(params, jsondata, the_key);
|
|
}
|
|
|
|
this.REST_DELETE = function (params, the_key) /* delete reservable consumable */
|
|
{
|
|
this._validate_fields({}, params, {});
|
|
return generic_REST_DELETE(this)(params, the_key);
|
|
}
|
|
}
|
|
%>
|