GL科目余额获取脚本

CREATE OR REPLACE PACKAGE BODY MEW_GET_GL_BALANCE_PKG IS

  FUNCTION MEW_GET_BEGIN_BALANCE_F(P_CONCATENATED_SEGMENTS IN VARCHAR2
                                  ,P_CURRENCY_CODE         IN VARCHAR2
                                  ,P_SET_OF_BOOKS_ID       IN NUMBER
                                  ,P_PERIOD_NAME           IN VARCHAR2
                                  ,P_CURRENCY_TYPE         IN VARCHAR2 --'B'为本币‘C'为原币)
                                  ,P_BEGIN_OR_END          IN VARCHAR2 --'B'为begin 'E'为END
                                   ) --
   RETURN NUMBER IS
    V_BEGIN_BALANCE NUMBER;
  BEGIN
    --期初
    IF P_BEGIN_OR_END = 'B'
    THEN
   
      IF P_CURRENCY_TYPE = 'B' --本币
      THEN
     
        SELECT SUM(GB.BEGIN_BALANCE_DR_BEQ - GB.BEGIN_BALANCE_CR_BEQ)
          INTO V_BEGIN_BALANCE
          FROM GL_BALANCES          GB
              ,GL_CODE_COMBINATIONS GCC
         WHERE GCC.CODE_COMBINATION_ID = GB.CODE_COMBINATION_ID
              --AND GB.CODE_COMBINATION_ID = P_CODE_COMBINATION_ID
           AND GCC.SEGMENT2 || '.' || GCC.SEGMENT4 || '.' || GCC.SEGMENT5 =
               P_CONCATENATED_SEGMENTS
           AND GCC.SEGMENT1 <> 'T'
           AND GCC.SEGMENT2 <> 'T'
           AND GCC.SEGMENT3 <> 'T'
           AND GCC.SEGMENT4 <> 'T'
           AND GCC.SEGMENT5 <> 'T'
           AND GCC.SEGMENT6 <> 'T'
           AND GCC.SEGMENT7 <> 'T'
              /*         AND GB.PERIOD_YEAR || '-' || LPAD(GB.PERIOD_NUM
              ,2
              ,'0') = P_PERIOD_NAME*/
           AND GB.PERIOD_NAME =
               TO_CHAR(TO_DATE(P_PERIOD_NAME
                              ,'yyyy-mm')
                      ,'Mon-YY'
                      ,'NLS_DATE_LANGUAGE = AMERICAN')
           AND GB.SET_OF_BOOKS_ID = P_SET_OF_BOOKS_ID
           AND GB.CURRENCY_CODE = P_CURRENCY_CODE;
     
      ELSE
        --原币
     
        SELECT SUM(GB.BEGIN_BALANCE_DR - GB.BEGIN_BALANCE_CR)
          INTO V_BEGIN_BALANCE
          FROM GL_BALANCES          GB
              ,GL_CODE_COMBINATIONS GCC
         WHERE GCC.CODE_COMBINATION_ID = GB.CODE_COMBINATION_ID
              --  AND GB.CODE_COMBINATION_ID = P_CODE_COMBINATION_ID
           AND GCC.SEGMENT2 || '.' || GCC.SEGMENT4 || '.' || GCC.SEGMENT5 =
               P_CONCATENATED_SEGMENTS
           AND GCC.SEGMENT1 <> 'T'
           AND GCC.SEGMENT2 <> 'T'
           AND GCC.SEGMENT3 <> 'T'
           AND GCC.SEGMENT4 <> 'T'
           AND GCC.SEGMENT5 <> 'T'
           AND GCC.SEGMENT6 <> 'T'
           AND GCC.SEGMENT7 <> 'T'
              /*           AND GB.PERIOD_YEAR || '-' || LPAD(GB.PERIOD_NUM
              ,2
              ,'0') = P_PERIOD_NAME*/
           AND GB.PERIOD_NAME =
               TO_CHAR(TO_DATE(P_PERIOD_NAME
                              ,'yyyy-mm')
                      ,'Mon-YY'
                      ,'NLS_DATE_LANGUAGE = AMERICAN')
           AND GB.SET_OF_BOOKS_ID = P_SET_OF_BOOKS_ID
           AND GB.CURRENCY_CODE = P_CURRENCY_CODE;
     
      END IF;
      --期末
    ELSE
   
      IF P_CURRENCY_TYPE = 'B' --本币
      THEN
     
        SELECT SUM(GB.BEGIN_BALANCE_DR_BEQ - GB.BEGIN_BALANCE_CR_BEQ +
                   GB.PERIOD_NET_DR_BEQ - GB.PERIOD_NET_CR_BEQ)
          INTO V_BEGIN_BALANCE
          FROM GL_BALANCES          GB
              ,GL_CODE_COMBINATIONS GCC
         WHERE GCC.CODE_COMBINATION_ID = GB.CODE_COMBINATION_ID
              --AND GB.CODE_COMBINATION_ID = P_CODE_COMBINATION_ID
           AND GCC.SEGMENT2 || '.' || GCC.SEGMENT4 || '.' || GCC.SEGMENT5 =
               P_CONCATENATED_SEGMENTS
           AND GCC.SEGMENT1 <> 'T'
           AND GCC.SEGMENT2 <> 'T'
           AND GCC.SEGMENT3 <> 'T'
           AND GCC.SEGMENT4 <> 'T'
           AND GCC.SEGMENT5 <> 'T'
           AND GCC.SEGMENT6 <> 'T'
           AND GCC.SEGMENT7 <> 'T'
              /* AND GB.PERIOD_YEAR || '-' || LPAD(GB.PERIOD_NUM
              ,2
              ,'0') = P_PERIOD_NAME*/
           AND GB.PERIOD_NAME =
               TO_CHAR(TO_DATE(P_PERIOD_NAME
                              ,'yyyy-mm')
                      ,'Mon-YY'
                      ,'NLS_DATE_LANGUAGE = AMERICAN')
           AND GB.SET_OF_BOOKS_ID = P_SET_OF_BOOKS_ID
           AND GB.CURRENCY_CODE = P_CURRENCY_CODE;
     
      ELSE
        --原币
     
        SELECT SUM(GB.BEGIN_BALANCE_DR - GB.BEGIN_BALANCE_CR +
                   GB.PERIOD_NET_DR - GB.PERIOD_NET_CR)
          INTO V_BEGIN_BALANCE
          FROM GL_BALANCES          GB
              ,GL_CODE_COMBINATIONS GCC
         WHERE GCC.CODE_COMBINATION_ID = GB.CODE_COMBINATION_ID
              --AND GB.CODE_COMBINATION_ID = P_CODE_COMBINATION_ID
           AND GCC.SEGMENT2 || '.' || GCC.SEGMENT4 || '.' || GCC.SEGMENT5 =
               P_CONCATENATED_SEGMENTS
           AND GCC.SEGMENT1 <> 'T'
           AND GCC.SEGMENT2 <> 'T'
           AND GCC.SEGMENT3 <> 'T'
           AND GCC.SEGMENT4 <> 'T'
           AND GCC.SEGMENT5 <> 'T'
           AND GCC.SEGMENT6 <> 'T'
           AND GCC.SEGMENT7 <> 'T'
              /* AND GB.PERIOD_YEAR || '-' || LPAD(GB.PERIOD_NUM
              ,2
              ,'0') = P_PERIOD_NAME*/
           AND GB.PERIOD_NAME =
               TO_CHAR(TO_DATE(P_PERIOD_NAME
                              ,'yyyy-mm')
                      ,'Mon-YY'
                      ,'NLS_DATE_LANGUAGE = AMERICAN')
           AND GB.SET_OF_BOOKS_ID = P_SET_OF_BOOKS_ID
           AND GB.CURRENCY_CODE = P_CURRENCY_CODE;
     
      END IF;
    END IF;
 
    RETURN V_BEGIN_BALANCE;
  EXCEPTION
    WHEN OTHERS THEN
      RETURN NULL;
  END;
END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值