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;


    
  • 相关阅读:
    绿茶一杯辨蜂蜜
    将Windows桌面扩展到第二个显示器/投影机上
    各种茶的特点和挑选(未完)
    转载一位操盘手的惊人语录 
    大家看看这个资料,有助于你了解股市
    庄家的故事之000503海虹控股
    股本变迁,分红扩股数据调查
    onchange 和 onkeyup,onpropertychange 用法小记
    对范美忠事件的评论
    一位天涯的朋友在星期一晚上发来的留言
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299373.html
Copyright © 2011-2022 走看看