zoukankan      html  css  js  c++  java
  • 会计期间

    获取会计期间状态

     /*=======================================================
      *  FUNCTION / PROCEDURE
      *       get_period_status
      *   DESCRIPTION:
      *      得到当前日期所在期间的状态
      *   ARGUMENT:
      *   RETURN:  
      *       N/A
      *   HISTORY:
      *     1.00 2013-10-31 cxy
      =========================================================*/
      FUNCTION get_period_status(p_org_id IN NUMBER, p_gl_date IN DATE)
        RETURN VARCHAR2 IS
        l_closing_status VARCHAR2(1); --O:打开 C:关闭 N:未打开,F:将来期间
      BEGIN
        SELECT gps.closing_status
          INTO l_closing_status
          FROM gl_period_statuses gps,
               gl_periods         gp,
               hr_operating_units hou,
               gl_sets_of_books   gsob
         WHERE gps.application_id = 101 --GL  /*模块的id*/
           AND gps.adjustment_period_flag = 'N'--排除调整期
           AND gps.set_of_books_id = hou.set_of_books_id
           AND hou.set_of_books_id = gsob.set_of_books_id
           AND gp.period_set_name = gsob.period_set_name
           AND gps.period_name = gp.period_name
           AND (trunc(p_gl_date) BETWEEN gp.start_date AND gp.end_date)--时间
           AND hou.organization_id = p_org_id;--OU
        RETURN l_closing_status;
      EXCEPTION
        WHEN no_data_found THEN
          cux_conc_utl.log_msg('FUNCTION get_period_status ERROR:' ||
                               'NO_DATA_FOUND');
          RAISE fnd_api.g_exc_error;
        WHEN too_many_rows THEN
          cux_conc_utl.log_msg('FUNCTION get_period_status ERROR:' ||
                               'TOO_MANY_ROWS');
          RAISE fnd_api.g_exc_error;
        WHEN OTHERS THEN
          cux_conc_utl.log_msg('FUNCTION get_period_status ERROR:' || SQLERRM);
          RAISE fnd_api.g_exc_error;
      END get_period_status;


    注意

    取会计期间的时候处理不好会有 too_many_rows 的异常  应为会计期间有一个调整期,例如下图

    12月31日这天就会有两个符合的,这时候我们就需要把2013-12-31到2013-12-31这个排除掉,应为这天是调整期

    处理办法就是加上条件


    获取会计期间名称

    FUNCTION get_period_name(p_org_id IN NUMBER, p_gl_date IN DATE)
        RETURN VARCHAR2 IS
        l_period_name VARCHAR2(15); --期间名称
      BEGIN
        SELECT gp.period_name
          INTO l_period_name
          FROM gl_periods gp, hr_operating_units hou, gl_sets_of_books gsob
         WHERE hou.set_of_books_id = gsob.set_of_books_id
           AND gp.period_set_name = gsob.period_set_name
           AND (trunc(p_gl_date) BETWEEN gp.start_date AND gp.end_date)
           AND hou.organization_id = p_org_id
           AND gp.adjustment_period_flag = 'N'; --有调整期的把调整期排除
        RETURN l_period_name;
      EXCEPTION
        WHEN no_data_found THEN
          cux_conc_utl.log_msg('FUNCTION get_period_name ERROR:' ||
                               'NO_DATA_FOUND');
          RAISE fnd_api.g_exc_error;
        WHEN too_many_rows THEN
          cux_conc_utl.log_msg('FUNCTION get_period_name ERROR:' ||
                               'TOO_MANY_ROWS');
          RAISE fnd_api.g_exc_error;
        WHEN OTHERS THEN
          cux_conc_utl.log_msg('FUNCTION get_period_name ERROR:' || SQLERRM);
          RAISE fnd_api.g_exc_error;
      END get_period_name;


    
  • 相关阅读:
    计算公式以及参数数量计算
    sqlmap查找SQL注入漏洞入门
    动态密码卡TOTP算法
    使用windbg分析iis崩溃的一个实例
    windbg加载sos.dll
    wndbg下载与安装
    windbg入门
    IIS崩溃时自动抓取Dump
    net组件转化成COM组件
    dokuwiki安装部署
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299373.html
Copyright © 2011-2022 走看看