CREATE OR REPLACE FUNCTION transactions.get_journal_view(_user_id integer, _office_id integer, _from date, _to date, _tran_id bigint, _tran_code character varying, _book character varying, _reference_number character varying, _statement_reference character varying, _posted_by character varying, _office character varying, _status character varying, _verified_by character varying, _reason character varying) RETURNS TABLE(transaction_master_id bigint, transaction_code character varying, book character varying, value_date date, reference_number character varying, statement_reference text, posted_by text, office text, status text, verified_by text, verified_on timestamp with time zone, reason character varying, transaction_ts timestamp with time zone, flag_bg text, flag_fg text)
_user_id integer, _office_id integer, _from date, _to date, _tran_id bigint, _tran_code character varying, _book character varying, _reference_number character varying, _statement_reference character varying, _posted_by character varying, _office character varying, _status character varying, _verified_by character varying, _reason character varying
Owner
postgres
Result Type
TABLE(transaction_master_id bigint, transaction_code character varying, book character varying, value_date date, reference_number character varying, statement_reference text, posted_by text, office text, status text, verified_by text, verified_on timestamp with time zone, reason character varying, transaction_ts timestamp with time zone, flag_bg text, flag_fg text)
Description
Implementation: transactions.get_journal_view
CREATE OR REPLACE FUNCTION transactions.get_journal_view(_user_id integer, _office_id integer, _from date, _to date, _tran_id bigint, _tran_code character varying, _book character varying, _reference_number character varying, _statement_reference character varying, _posted_by character varying, _office character varying, _status character varying, _verified_by character varying, _reason character varying)
RETURNS TABLE(transaction_master_id bigint, transaction_code character varying, book character varying, value_date date, reference_number character varying, statement_reference text, posted_by text, office text, status text, verified_by text, verified_on timestamp with time zone, reason character varying, transaction_ts timestamp with time zone, flag_bg text, flag_fg text)
LANGUAGE plpgsql
AS $function$
BEGIN
RETURN QUERY
WITH RECURSIVE office_cte(office_id) AS
(
SELECT _office_id
UNION ALL
SELECT
c.office_id
FROM
office_cte AS p,
office.offices AS c
WHERE
parent_office_id = p.office_id
)
SELECT
transactions.transaction_master.transaction_master_id,
transactions.transaction_master.transaction_code,
transactions.transaction_master.book,
transactions.transaction_master.value_date,
transactions.transaction_master.reference_number,
transactions.transaction_master.statement_reference,
office.get_user_name_by_user_id(transactions.transaction_master.user_id) as posted_by,
office.get_office_name_by_id(transactions.transaction_master.office_id) as office,
core.get_verification_status_name_by_verification_status_id(transactions.transaction_master.verification_status_id) as status,
office.get_user_name_by_user_id(transactions.transaction_master.verified_by_user_id) as verified_by,
transactions.transaction_master.last_verified_on AS verified_on,
transactions.transaction_master.verification_reason AS reason,
transactions.transaction_master.transaction_ts,
core.get_flag_background_color(core.get_flag_type_id(_user_id, 'transactions.transaction_master', 'transaction_master_id', transactions.transaction_master.transaction_master_id::text)) AS flag_bg,
core.get_flag_foreground_color(core.get_flag_type_id(_user_id, 'transactions.transaction_master', 'transaction_master_id', transactions.transaction_master.transaction_master_id::text)) AS flag_fg
FROM transactions.transaction_master
WHERE 1 = 1
AND transactions.transaction_master.value_date BETWEEN _from AND _to
AND office_id IN (SELECT office_id FROM office_cte)
AND (_tran_id = 0 OR _tran_id = transactions.transaction_master.transaction_master_id)
AND lower(transactions.transaction_master.transaction_code) LIKE '%' || lower(_tran_code) || '%'
AND lower(transactions.transaction_master.book) LIKE '%' || lower(_book) || '%'
AND COALESCE(lower(transactions.transaction_master.reference_number), '') LIKE '%' || lower(_reference_number) || '%'
AND COALESCE(lower(transactions.transaction_master.statement_reference), '') LIKE '%' || lower(_statement_reference) || '%'
AND COALESCE(lower(transactions.transaction_master.verification_reason), '') LIKE '%' || lower(_reason) || '%'
AND lower(office.get_user_name_by_user_id(transactions.transaction_master.user_id)) LIKE '%' || lower(_posted_by) || '%'
AND lower(office.get_office_name_by_id(transactions.transaction_master.office_id)) LIKE '%' || lower(_office) || '%'
AND COALESCE(lower(core.get_verification_status_name_by_verification_status_id(transactions.transaction_master.verification_status_id)), '') LIKE '%' || lower(_status) || '%'
AND COALESCE(lower(office.get_user_name_by_user_id(transactions.transaction_master.verified_by_user_id)), '') LIKE '%' || lower(_verified_by) || '%'
ORDER BY value_date ASC, verification_status_id DESC;
END
$function$