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;


    
  • 相关阅读:
    自动支持图片webp格式压缩,图片服务器升级webserver
    长江商学院介绍及名人校友名单
    恒大许家印靠斗着地主,当上首富
    用GitLab搭建自己的私有GitHub
    vim快速定位到某一行的几种方法和显示行号,定位匹配字符串,显示当前行信息的命令
    mysql数据库表上百万记录优化思路杂谈
    Java打印输出数组的三种方式:传统的for循环方式,for each循环,利用Arrays类中的toString方法
    个人快速成长之系统方法,最小化成长系统
    程序员应该了解的常见软件开发定律
    用python修改文件内容修改txt内容的3种方法
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299373.html
Copyright © 2011-2022 走看看