Untitled

 avatar
unknown
mysql
6 months ago
3.1 kB
4
Indexable
CREATE OR REPLACE FUNCTION fzi_r_report_montly_cashbank_out(character varying, bigint, bigint, bigint, character varying, bigint, bigint, character varying, character varying)
RETURNS SETOF refcursor
LANGUAGE plpgsql
AS $function$
DECLARE
    pRefHeader          REFCURSOR := 'refHeader';
    pRefDetail          REFCURSOR := 'refDetail';
    pSessionId         ALIAS FOR $1;
    pTenantId          ALIAS FOR $2;
    pUserId            ALIAS FOR $3;
    pRoleId            ALIAS FOR $4;
    pDatetime          ALIAS FOR $5;
    pOuId              ALIAS FOR $6;
    pCashbankId        ALIAS FOR $7;
    pYearMonth         ALIAS FOR $8;
    pStatusDoc         ALIAS FOR $9;

    vStatusReleased  varchar := 'R';

BEGIN

    CREATE TEMP TABLE ttzi_montly_cashbank_out ON COMMIT DROP AS
    SELECT fzi_get_week_of_month(A.doc_date) AS week_index, '' AS week_desc, 0 AS saldo_weekly_start,
           0 AS total_weekly, A.doc_date, ' ' AS coa_first_line, ' ' AS coa_desc_first_line,
           0 AS amount_first_line, 0 AS total_daily, 0 AS saldo_daily,
           D.main_acc || '.' || D.sub_acc AS coa_item, D.coa_desc AS coa_desc_item,
           B.receive_amount AS amount
    FROM cb_transfer_cashbank A
    JOIN cb_transfer_cashbank_receive B ON A.transfer_cashbank_id = B.transfer_cashbank_id
    JOIN m_cashbank C ON A.cashbank_id = C.cashbank_id
    JOIN m_coa D ON C.coa_id = D.coa_id
    WHERE A.cashbank_id = pCashbankId
        AND LEFT(doc_date, 6) = pYearMonth
        AND A.status_doc = pStatusDoc
    ORDER BY A.doc_date ASC;

    INSERT INTO ttzi_montly_cashbank_out (week_index, week_desc, saldo_weekly_start, total_weekly, doc_date, coa_first_line, coa_desc_first_line,
                                            amount_first_line, total_daily, saldo_daily, coa_item, coa_desc_item, amount)

    SELECT fzi_get_week_of_month(A.doc_date) AS week_index, '' AS week_desc, 0 AS saldo_weekly_start,
           0 AS total_weekly, A.doc_date, '' AS coa_first_line, '' AS coa_desc_first_line,
           0 AS amount_first_line, 0 AS total_daily, 0 AS saldo_daily,
           D.main_acc || '.' || D.sub_acc AS coa_item, D.coa_desc AS coa_desc_item,
           B.cost_amount AS amount
    FROM cb_transfer_cashbank A
    JOIN cb_transfer_cashbank_cost B ON B.transfer_cashbank_id  = A.transfer_cashbank_id
    JOIN m_activity_gl C ON C.activity_gl_id = B.activity_gl_id
    JOIN m_coa D ON C.coa_id = D.coa_id
    WHERE A.cashbank_id = pCashbankId
        AND LEFT(doc_date, 6) = pYearMonth
        AND doc_type_id = 631
        AND A.status_doc = pStatusDoc
    ORDER BY A.doc_date ASC;

    
    OPEN pRefHeader FOR
    SELECT
        TO_CHAR(TO_DATE(pYearMonth, 'YYYYMM'), 'MONTH YYYY') AS year_month,
        balance_date,
        saldo_awal,
        kas
    FROM (
        VALUES
        ('20240801', '20240731', 13100, 'CASHBANK')
    ) AS header (year_month, balance_date, saldo_awal, kas);

    RETURN NEXT pRefHeader;

    OPEN pRefDetail FOR
    SELECT *
    FROM ttzi_montly_cashbank_out;

    RETURN NEXT pRefDetail;

END;
$function$;
/
Editor is loading...
Leave a Comment