CREATE PROCEDURE “MTC_Print_F_GL_Month_Detail”(
    IN FromDate DATETIME,
    IN BPLID INT
    )
    LANGUAGE SQLSCRIPT
    AS
    BEGIN


    DECLARE StratDate DATETIME; ———开始日期
    DECLARE EndDate DATETIME; ———截止日期



    SELECT YEAR(to_date(FromDate))||’.01.01’ INTO StratDate FROM dummy;
    SELECT YEAR(to_date(FromDate))||’.12.31’ INTO EndDate FROM dummy;

    TEMP=SELECT U0.”NType”,U0.”RefDate”,U0.”Memo”,U0.”AcctCode”,U0.”AcctName”
    ,U0.”U_Number”,U0.”AcctName1”,U0.”SupplCode”
    ,U0.”Debit”,U0.”Credit”,U0.”Balance”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM (
    SELECT 1 AS “NType”,T0.”RefDate”,T0.”Memo”,T2.”AcctCode”,T2.”AcctName”
    ,T0.”U_Number”,T0.”SupplCode”
    ,T1.”ContraAct”||’:’||T3.”AcctName” AS “AcctName1”
    ,T1.”Debit”, T1.”Credit”,T1.”Debit”-T1.”Credit” AS “Balance”
    ,T1.”BPLId”,T1.”BPLName”,T4.”AcctName” AS “FatherName”
    FROM OJDT T0
    INNER JOIN JDT1 T1 ON T0.”TransId”=T1.”TransId”
    LEFT JOIN OACT T2 ON T2.”AcctCode”=T1.”Account”
    LEFT JOIN OACT T3 ON T3.”AcctCode”=T1.”ContraAct”
    LEFT JOIN OACT T4 ON T4.”AcctCode”=LEFT(T2.”AcctCode”,4)
    WHERE 1=1
    AND T0.”RefDate” BETWEEN :StratDate AND :EndDate
    AND T1.”BPLId”=:BPLId

    UNION ALL ——本月合计
    SELECT 2 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年’||MONTH(T3.”T_RefDate”)||’月合计’ AS “Memo”
    ,T2.”AcctCode”,T2.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年’||MONTH(T3.”T_RefDate”)||’月合计’ AS “AcctName1”
    ,SUM(T1.”Debit”),SUM(T1.”Credit”),SUM(T1.”Debit”-T1.”Credit”) AS “Balance”
    ,T1.”BPLId”,T1.”BPLName”,T4.”AcctName” AS “FatherName”
    FROM OJDT T0
    JOIN JDT1 T1 ON T0.”TransId”=T1.”TransId”
    JOIN OACT T2 ON T2.”AcctCode”=T1.”Account”
    JOIN OFPR T3 ON LEFT(T0.”RefDate”,7)=T3.”Code”
    LEFT JOIN OACT T4 ON T4.”AcctCode”=LEFT(T2.”AcctCode”,4)
    WHERE 1=1
    AND T0.”RefDate” BETWEEN :StratDate AND :EndDate
    AND T1.”BPLId”=:BPLId
    GROUP BY T3.”T_RefDate”,T2.”AcctCode”,T2.”AcctName”,T1.”BPLId”,T1.”BPLName”,T4.”AcctName”
    ) U0
    ORDER BY 4,1,2
    ;

    SELECT U0.”NType”,U0.”RefDate”,U0.”Memo”,U0.”AcctCode”,U0.”AcctName”
    ,U0.”U_Number”,U0.”SupplCode”,U0.”AcctName1”
    ,U0.”Debit”,U0.”Credit”,U0.”Balance”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM (
    SELECT U0.”NType”,U0.”RefDate”,U0.”Memo”,U0.”AcctCode”,U0.”AcctName”
    ,U0.”U_Number”,U0.”SupplCode”,U0.”AcctName1”
    ,U0.”Debit”,U0.”Credit”,U0.”Balance”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年1月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年1月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-01’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-01’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年2月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年2月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-02’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-02’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年3月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年3月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-03’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-03’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年4月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年4月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-04’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-04’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年5月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年5月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-05’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-05’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年6月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年6月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-06’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-06’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年7月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年7月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-07’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-07’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年8月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年8月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-08’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-08’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年9月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年9月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-09’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-09’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年10月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年10月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-10’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-10’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年11月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年11月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-11’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-11’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    UNION ALL
    SELECT 3 AS “NType”,T3.”T_RefDate”,YEAR(T3.”T_RefDate”)||’年12月累计’ AS “Memo”
    ,U0.”AcctCode”,U0.”AcctName”
    ,’’ AS “U_Number”,’’ AS “SupplCode”
    ,YEAR(T3.”T_RefDate”)||’年12月累计’ AS “AcctName1”
    ,SUM(U0.”Debit”),SUM(U0.”Credit”),SUM(U0.”Debit”-U0.”Credit”) AS “Balance”
    ,U0.”BPLId”,U0.”BPLName”,U0.”FatherName”
    FROM :TEMP U0
    JOIN OFPR T3 ON YEAR(:StratDate)||’-12’=T3.”Code”
    WHERE U0.”NType”=2
    AND LEFT(U0.”RefDate”,7)<=YEAR(:StratDate)||’-12’
    GROUP BY T3.”T_RefDate”,U0.”AcctCode”,U0.”AcctName”,U0.”BPLId”,U0.”BPLName” ,U0.”FatherName”
    )U0
    WHERE U0.”RefDate” BETWEEN :StratDate AND :EndDate
    ORDER BY U0.”AcctCode”,U0.”RefDate”,U0.”NType”
    ;

    END
    —CALL “MTC_Report_F_GL_Month”(‘20200101’,’20200831’)