IP record ID view
Материал из iDempiere ru
iP_record_ID_view
В системе есть функционал с кнопкой RECORD_ID, когда указывается таблица и по этой кнопке можно перейти на конкретную запись из указанной таблицы. Для скорости работы хочется понимать какую запись откроет кнопка до нажатия на нее.
С помощью функции iP_record_ID_view можно визуализировать содержимое кнопки.
Вариант использования :
Создается виртуальное поле с ColumnSQL = (SELECT iP_record_ID_view(AD_Table_ID, RECORD_ID)) рядом с кнопкой RECORD_ID.
Например:
SELECT iP_record_ID_view(207, 50001); //Результат: 'Fertilizer'
SELECT iP_record_ID_view(208, 125); //Результат: 'Grass - Grass Seed Container'
CREATE OR REPLACE FUNCTION iP_record_ID_view(NUMERIC, NUMERIC)
RETURNS SETOF CHARACTER VARYING AS
$BODY$
/** @author @kinerix Anna Smirnova */
DECLARE P_ad_table_ID NUMERIC := $1;
DECLARE P_record_ID NUMERIC := $2;
DECLARE P_tablename CHARACTER VARYING;
DECLARE P_columnsnames CHARACTER VARYING;
DECLARE StringSQL CHARACTER VARYING(1000);
BEGIN
P_tablename = (SELECT TableName FROM AD_Table WHERE AD_Table_ID = P_ad_table_ID);
P_columnsnames = (SELECT ARRAY_TO_STRING(ARRAY_AGG(a0.ColumnName), ', ')::CHARACTER VARYING
FROM (SELECT ColumnName
FROM AD_Column
WHERE AD_Table_ID = P_ad_table_ID
AND IsIdentifier = 'Y'
ORDER BY SeqNo) a0);
StringSQL= ' SELECT ARRAY_TO_STRING(ARRAY['||P_columnsnames||'], '' - '')::CHARACTER VARYING'
' FROM '||P_tablename||
' WHERE '||P_tablename||'_ID = '||P_record_ID||' ;';
RETURN QUERY
EXECUTE StringSQL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION iP_record_ID_view(NUMERIC, NUMERIC)
OWNER TO adempiere;
