FSN#31698 Rapportgenerator beter automatisch COLS aanmakaen

svn path=/Website/trunk/; revision=24495
This commit is contained in:
Jos Groot Lipman
2015-03-18 11:54:40 +00:00
parent db16f5ad0f
commit 5163913652
12 changed files with 202 additions and 66 deletions

View File

@@ -71,6 +71,97 @@ model_reportcolumns =
}
},
_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_)/))
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_F_|FCLT_X_")) // Filter, altijd varchar
{
colpar.filter = 'A';
}
else 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 = { };
model_reportcolumns._REST_POST(params, colpar, usrrap_key);
oRs.MoveNext();
}
oRs.Close();
},
REST_GET: function _GET(params)
{
var query = api2.sqlfields(params, model_reportcolumns );
@@ -83,6 +174,11 @@ model_reportcolumns =
+ " ORDER BY fac_usrrap_cols_volgnr";
var json = api2.sql2json (params, sql, model_reportcolumns );
if (!json.length)
{
model_reportcolumns._view2columns(parseInt(params.filter.pid,10));
var json = api2.sql2json (params, sql, model_reportcolumns );
}
return json;
},
@@ -98,10 +194,8 @@ model_reportcolumns =
return { key: the_key };
},
// Only internally used by report_clone
REST_POST: function (params, jsondata, parent_key) /* insert columns */
_REST_POST: function (params, jsondata, parent_key) /* insert columns */
{
if (!params.internal)
INTERNAL_ERROR_INTERNAL_ONLY;
var fields = api2.update_fields(params, model_reportcolumns, jsondata); // Build updater
fields["id"] = model_reportcolumns.fields["id"];