资产新增ccid的问题

这里写图片描述更新gl_ccid字段的时候,会顺带验证是不是存在,即get_gl_ccid这个方法是不是正确的执行,当正确的时候,即更新到里面去,否则,不更新:

FUNCTION get_gl_ccid(p_gl_segments IN VARCHAR2) RETURN VARCHAR2 AS

    l_coa_id   NUMBER;
    l_ccid     VARCHAR2(20);
    l_msg_data VARCHAR2(300);

    l_acc_code VARCHAR2(300);

  BEGIN

    l_coa_id := cux_gl_utl.g_coa_id;

    l_acc_code := p_gl_segments;

    --校验
    IF fnd_flex_keyval.validate_segs('CHECK_COMBINATION',
                                     'SQLGL',
                                     'GL#',
                                     l_coa_id,
                                     l_acc_code,
                                     'V',
                                     SYSDATE,
                                     'ALL',
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL,
                                     FALSE,
                                     FALSE,
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL,
                                     NULL) THEN
      RETURN 'TRUE';

    ELSE

      l_msg_data := l_msg_data || ' .组合科目[' || l_acc_code || ']出错:' ||
                    fnd_flex_keyval.error_message;
      cux_conc_utl.log_msg(l_msg_data);
      RETURN 'FALSE';
    END IF;

  END;

上面的fnd_flex_keyval.validate_segs方法,需要注意的是,当时check的时候,不会创建gl_ccid,但是当是create的时候如果不存在,就回创建一个新的gl_ccid,然后在检验分配行费用账户的时候:
这里写图片描述

fnd_flex_ext.get_ccid(application_short_name => 'SQLGL'
                                ,key_flex_code          => 'GL#'
                                ,structure_number       => cux_gl_utl.g_coa_id
                                ,validation_date        => to_char(sysdate
                                                         ,fnd_flex_ext.date_format)
                                ,concatenated_segments  => t.gl_segment1 || '.' ||
                                                           t.gl_segment2 || '.' ||
                                                           t.gl_segment3 || '.' ||
                                                           t.gl_segment4 || '.' ||
                                                           t.gl_segment5 || '.' ||
                                                           t.gl_segment6 || '.' ||
                                                           t.gl_segment7 || '.' ||
                                                           t.gl_segment8 || '.' ||
                                                           t.gl_segment9) <= 0;

注意当用这个方法验证的时候,当没有ccid的时候,会自动生成一个,这就是为什么第一次导入的时候没有ccid,但是第二次导入的时候又能导进去了,这时是新建了个ccid,当客户不让自动建的时候就会有问题,因为自动建不好管理。

注意下面这个get_key_id的也是这样:

procedure get_key_id(p_key_flex in varchar2
                      ,p_app_name in varchar2
                      ,p_segment  in varchar2
                      ,x_key_id   out number
                      ,x_errmsg   out varchar2) is
    l_id_flex_num  number;
    v_err_msg_temp varchar2(3000);
  begin
    if p_key_flex = 'GL#' then
      l_id_flex_num := cux_gl_utl.g_coa_id;
    else
      l_id_flex_num := 101;
    end if;

    if fnd_flex_keyval.validate_segs(operation        => 'CREATE_COMBINATION'   --注意,这个地方是create的话是错误的,会自动创建没有的ccid,当客户不让自动创建的时候就会有问题
                                    ,appl_short_name  => p_app_name
                                    ,key_flex_code    => p_key_flex
                                    ,structure_number => l_id_flex_num --- Pass your chart of accounts id
                                    ,concat_segments  => p_segment --- Pass your account combination string you want to create
                                    ,validation_date  => sysdate --- effective date by which you want the combination to be validated
                                     ) then
      x_key_id := fnd_flex_keyval.combination_id; --获取ccid
    else
      v_err_msg_temp := fnd_flex_keyval.error_message;
      x_errmsg       := v_err_msg_temp;
      x_key_id       := 0;
    end if;
  end get_key_id;

这里写图片描述

注意这个地方也是会新增ccid的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值