219 lines
9.2 KiB
PHP
219 lines
9.2 KiB
PHP
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: model_report_columns.inc
|
|
|
|
Description: rapport model voor de kolommen van rapporten.
|
|
|
|
Parameters:
|
|
Context:
|
|
|
|
Notes:
|
|
*/
|
|
|
|
// model_reportcolumns is uitsluitend beschikbaar onder model_reports(x) die de autorisatie dan ook doet
|
|
function model_reportcolumns(usrrap_key, params)
|
|
{
|
|
params = params || {};
|
|
this.table = "fac_usrrap_cols";
|
|
this.primary = "fac_usrrap_cols_key";
|
|
this.records_name = "columns";
|
|
this.record_name = "column";
|
|
this.records_title = L("lcl_rap_columns");
|
|
this.record_title = L("lcl_rap_column");
|
|
this.parent_key = "fac_usrrap_key",
|
|
this.autfunction = "WEB_PRSSYS",
|
|
|
|
this.fields =
|
|
{ "id" : { dbs: "fac_usrrap_cols_key", typ: "key", filter: "exact", seq: "fac_s_fac_usrrap_cols_key" },
|
|
"name" : { dbs: "fac_usrrap_cols_column_name", typ: "varchar", label: L("lcl_rap_column"), insertonly: true },
|
|
"datatype" : { dbs: "fac_usrrap_cols_datatype", typ: "varchar", label: L("lcl_rap_datatype"),
|
|
required: true,
|
|
LOV: L("lcl_rap_datatypeLOV")}, // "varchar;Tekst;date;Datum;datetime;Datumtijd;float;Float;currency;Bedrag;number;Getal"
|
|
"sequence" : { dbs: "fac_usrrap_cols_volgnr", typ: "number", label: L("lcl_rap_sequence") },
|
|
"caption" : { dbs: "fac_usrrap_cols_caption", typ: "varchar", label: L("lcl_rap_caption"), translate: true},
|
|
"filter" : { dbs: "fac_usrrap_cols_filter", typ: "varchar", label: L("lcl_rap_filter"),
|
|
LOV: L("lcl_rap_filterLOV") }, // "A;Automatisch"
|
|
"filterdefault": { dbs: "fac_usrrap_cols_filterdefault", typ: "varchar", label: L("lcl_rap_filterdefault")},
|
|
"visible" : { dbs: "fac_usrrap_cols_visible", typ: "varchar", label: L("lcl_rap_visible"),
|
|
required: true,
|
|
LOV: L("lcl_rap_visibleLOV")}, // "V;Visible;I;Invisible;H;hidden"
|
|
"group" : { dbs: "fac_usrrap_cols_group", typ: "varchar", label: L("lcl_rap_groupby"),
|
|
required: true,
|
|
LOV: L("lcl_rap_groupbyLOV") }
|
|
};
|
|
|
|
this.list = { columns: ["sequence", "name", "caption", "datatype", "visible", "filter", "group"] };
|
|
|
|
this.hook_pre_edit = function (obj)
|
|
{
|
|
switch (obj.datatype.id)
|
|
{
|
|
case "date":
|
|
case "datetime":
|
|
this.fields.group.LOV = api2.filterLOV(L("lcl_rap_groupbyLOV"), "G,D,W,M,Q,Y,H");
|
|
this.fields.datatype.LOV = api2.filterLOV(L("lcl_rap_datatypeLOV"), "date,datetime,time");
|
|
break;
|
|
case "time":
|
|
this.fields.group.LOV = api2.filterLOV(L("lcl_rap_groupbyLOV"), "G,H");
|
|
this.fields.datatype.LOV = api2.filterLOV(L("lcl_rap_datatypeLOV"), "date,datetime,time");
|
|
break;
|
|
case "varchar":
|
|
this.fields.group.LOV = api2.filterLOV(L("lcl_rap_groupbyLOV"), "G");
|
|
this.fields.datatype.readonly = true;
|
|
break;
|
|
case "float":
|
|
case "number":
|
|
case "currency":
|
|
this.fields.group.LOV = api2.filterLOV(L("lcl_rap_groupbyLOV"), "G,S,C,A");
|
|
this.fields.datatype.LOV = api2.filterLOV(L("lcl_rap_datatypeLOV"), "float,currency,number");
|
|
break;
|
|
default:
|
|
this.fields.group.LOV = api2.filterLOV(L("lcl_rap_groupbyLOV"), "G");
|
|
}
|
|
};
|
|
|
|
this._view2columns = function (usrrap_key)
|
|
{
|
|
var sql = "SELECT fac_usrrap_view_name"
|
|
+ " FROM fac_usrrap"
|
|
+ " WHERE fac_usrrap_key = " + usrrap_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
var view_name = oRs("fac_usrrap_view_name").Value;
|
|
oRs.Close();
|
|
// Rapport kan ook zijn XXXX.RAP_YYYYY?
|
|
var view_name_short = view_name;
|
|
var i = view_name_short.indexOf('.');
|
|
if (i != -1)
|
|
view_name_short = view_name_short.substring(i+1);
|
|
|
|
var sequence = 10;
|
|
var sql = "SELECT INITCAP(column_name) column_name"
|
|
+ " , data_type"
|
|
+ " , data_length"
|
|
+ " , data_precision"
|
|
+ " , data_scale"
|
|
+ " FROM user_tab_columns"
|
|
+ " WHERE table_name = UPPER(" + safe.quoted_sql(view_name_short) + ")"
|
|
+ " ORDER BY column_id";
|
|
var oRs = Oracle.Execute(sql);
|
|
while (!oRs.eof)
|
|
{
|
|
var colname = oRs.Fields("column_name").Value.toLowerCase();
|
|
var colpar = { caption: oRs.Fields("column_name").Value, // Met de initcap
|
|
name: colname,
|
|
datatype: "varchar",
|
|
group: 'G',
|
|
sequence: sequence,
|
|
visible: 'V',
|
|
filter: null
|
|
};
|
|
sequence += 10;
|
|
var ucolname = colname.toUpperCase();
|
|
|
|
var special_cols = ucolname.match(/^(HIDE_F_|FCLT_X_|FCLT_3D_|FCLT_KEY|FCLT_F_|HTML_|FCLT_D_|FCLT_C_)/);
|
|
if (special_cols)
|
|
colpar.caption = colpar.caption.substring(special_cols[0].length);
|
|
|
|
if (ucolname.match(/^(HIDE_F_|FCLT_3D_|FCLT_KEY)/))
|
|
colpar.visible = 'H'; // Hidden
|
|
|
|
if (ucolname.match(/^(FCLT_X_)/))
|
|
colpar.visible = 'I'; // Invisible, je mag hem wel aanzetten
|
|
|
|
if (view_name_short.match(/_V_UDR/))
|
|
colpar.visible = 'H'; // Hidden, die hebben te veel kolommen
|
|
|
|
if (ucolname.match(/^(FCLT_F_|FCLT_D_|FCLT_X_)/))
|
|
colpar.filter = 'A';
|
|
|
|
var ora_type = oRs("data_type").Value;
|
|
var ora_length = oRs("data_length").Value;
|
|
var ora_precision = oRs("data_precision").Value;
|
|
var ora_scale = oRs("data_scale").Value;
|
|
|
|
if (ucolname.match("^FCLT_C_")) // Currency
|
|
{
|
|
colpar.datatype = 'currency';
|
|
}
|
|
else if (ucolname.match("^HTML_"))
|
|
{
|
|
colpar.datatype = 'html';
|
|
}
|
|
else if (ora_type == 'NUMBER')
|
|
{
|
|
colpar.datatype = 'number';
|
|
if (ora_scale > 0)
|
|
{
|
|
colpar.datatype = 'float';
|
|
}
|
|
}
|
|
else if (ora_type == "DATE") //
|
|
{
|
|
colpar.datatype = 'date';
|
|
}
|
|
|
|
var params = { internal: true };
|
|
this.REST_POST(params, colpar, usrrap_key);
|
|
oRs.MoveNext();
|
|
}
|
|
oRs.Close();
|
|
},
|
|
|
|
this.REST_GET = function _GET(params)
|
|
{
|
|
var query = api2.sqlfields(params, this );
|
|
var wheres = api2.sqlfilter(params, this);
|
|
query.wheres = query.wheres.concat(wheres);
|
|
|
|
var sql = "SELECT " + query.selects.join(", ")
|
|
+ " FROM " + query.tables.join(", ")
|
|
+ " WHERE " + query.wheres.join(" AND " )
|
|
+ " ORDER BY fac_usrrap_cols_volgnr";
|
|
|
|
var json = api2.sql2json (params, sql, this );
|
|
if (!json.length)
|
|
{
|
|
this._view2columns(parseInt(params.filter.pid,10));
|
|
var json = api2.sql2json (params, sql, this );
|
|
}
|
|
|
|
return json;
|
|
};
|
|
this.REST_PUT = function (params, jsondata, the_key) /* update columns */
|
|
{
|
|
var fields = api2.update_fields(params, this, jsondata); // Build updater
|
|
|
|
var sql = buildUpdate("fac_usrrap_cols", fields) + " fac_usrrap_cols_key = " + the_key;
|
|
var err = Oracle.Execute(sql, true);
|
|
if (err.friendlyMsg)
|
|
abort_with_warning(err.friendlyMsg);
|
|
|
|
return { key: the_key };
|
|
},
|
|
// Only internally used by report_clone
|
|
this.REST_POST = function (params, jsondata, parent_key) /* insert columns */
|
|
{
|
|
var fields = api2.update_fields(params, this, jsondata); // Build updater
|
|
|
|
fields["id"] = this.fields["id"];
|
|
fields["xxx"] = { dbs: "fac_usrrap_key", typ: "key", val: parent_key };
|
|
var rapIns = buildInsert("fac_usrrap_cols", fields, { noValidateToken: true });
|
|
var col_key = rapIns.sequences["fac_usrrap_col_key"];
|
|
|
|
var err = Oracle.Execute(rapIns.sql, true);
|
|
if (err.friendlyMsg)
|
|
abort_with_warning(err.friendlyMsg);
|
|
|
|
return { key: col_key, warning: "" };
|
|
}
|
|
// REST_DELETE: not supported
|
|
|
|
if (!params.internal)
|
|
{
|
|
this.REST_POST = false;
|
|
}
|
|
}
|
|
|
|
%> |