GL_沖銷日記賬

DECLARE
  l_request_id NUMBER;
  --等待請求字段
  l_bl_result  BOOLEAN;
  l_phase      VARCHAR2(240);
  l_status     VARCHAR2(240);
  l_dev_phase  VARCHAR2(240);
  l_dev_status VARCHAR2(240);
  l_message    VARCHAR2(240);

  l_period_status VARCHAR2(1);
  l_start_date    DATE;
  l_end_date      DATE;
  l_period_num    NUMBER;
  l_period_year   NUMBER;


  CURSOR chk_sec_header_status IS
    SELECT 1
    FROM   gl_ledgers    gl
          ,gl_je_headers gh
    WHERE  gl.ledger_id = gh.ledger_id
    AND    gh.je_header_id = 2
    AND    gl.ledger_category_code = 'PRIMARY'
    AND    EXISTS (SELECT 1
            FROM   gl_je_headers gh1
                  ,gl_ledgers    gl1
            WHERE  gh1.parent_je_header_id = gh.je_header_id
            AND    gl1.ledger_id = gh1.ledger_id
            AND    gl1.ledger_category_code = 'SECONDARY'
            AND    gl1.automate_sec_jrnl_rev_flag IN ('Y'
                                                     ,'A')
            AND    gh1.status != 'P');
  l_has_sec_unpost_hdr_jrnl NUMBER;
BEGIN

  fnd_global.apps_initialize(user_id      => 1110
                            ,resp_id      => 50719
                            ,resp_appl_id => 20007);

  --校驗期間
  gl_period_statuses_pkg.select_columns(101
                                       ,2023
                                       ,'2018-07'
                                       ,l_period_status
                                       ,l_start_date
                                       ,l_end_date
                                       ,l_period_num
                                       ,l_period_year);

  IF (nvl(l_period_status
         ,'X') NOT IN ('O'
                       ,'F')) THEN
    fnd_message.set_name(application => 'SQLGL'
                        ,NAME        => 'GL_JE_NO_REV_HEADER_BAD_PERIOD');
    dbms_output.put_line('Error Message  = ' || fnd_message.get);
  END IF;

  OPEN chk_sec_header_status;
  FETCH chk_sec_header_status
    INTO l_has_sec_unpost_hdr_jrnl;
  IF chk_sec_header_status%FOUND THEN
    l_has_sec_unpost_hdr_jrnl := 1;
  END IF;
  CLOSE chk_sec_header_status;

  IF nvl(l_has_sec_unpost_hdr_jrnl
        ,0) = 1 THEN
    fnd_message.set_name(application => 'SQLGL'
                        ,NAME        => 'GL_COR_SEC_UNPOSTED_ERROR');
    dbms_output.put_line('Error Message  = ' || fnd_message.get);
  END IF;

  UPDATE gl_je_headers b
  SET    b.accrual_rev_flag             = 'Y'
        ,b.accrual_rev_change_sign_flag = 'Y'
        ,b.accrual_rev_period_name      = '2018-07'
  WHERE  b.je_header_id = 2;
  COMMIT;

  l_request_id := fnd_request.submit_request(application => 'SQLGL' --應用簡稱
                                            ,program     => 'GLPREV' --併發簡稱:日記帳導入
                                            ,description => '' --說明
                                            ,start_time  => '' --請求開始時間,格式爲標準日期格式,爲空表示立即開始
                                            ,sub_request => FALSE --是否子請求
                                            ,argument1   => fnd_profile.value('GL_ACCESS_SET_ID') --帳套標識或者數據訪問權限集
                                            ,argument2   => to_char(2) --日記賬頭ID
                                            ,argument3   => chr(0) --參數結束
                                             );
  IF l_request_id <= 0 THEN
    dbms_output.put_line('提交沖銷日記賬請求失敗 !');
  ELSE
    COMMIT;
    dbms_output.put_line('請求編號:' || l_request_id);
 
    l_bl_result := fnd_concurrent.wait_for_request(request_id => l_request_id
                                                  ,INTERVAL   => 1
                                                  , -- interval second for check
                                                   max_wait   => 360
                                                  , -- max_wait, Max amount of time to wait (in seconds)
                                                   phase      => l_phase
                                                  ,status     => l_status
                                                  ,dev_phase  => l_dev_phase
                                                  ,dev_status => l_dev_status
                                                  ,message    => l_message);
 
    dbms_output.put_line('  l_phase = ' || l_phase);
    dbms_output.put_line('  l_status = ' || l_status);
    dbms_output.put_line('  l_dev_phase = ' || l_dev_phase);
    dbms_output.put_line('  l_dev_status = ' || l_dev_status);
    dbms_output.put_line('  l_message = ' || l_message);
 
    --請求的狀態爲完成並且爲正常
    IF l_dev_phase <> 'COMPLETE'
       OR l_dev_status <> 'NORMAL' THEN
      dbms_output.put_line('Reverse Journal :  沖銷日記賬出現異常錯誤,查看請求: ' || l_request_id);
      dbms_output.put_line('Reverse Journal :  沖銷日記賬出現異常錯誤,錯誤消息: ' || l_message);
    ELSE
      dbms_output.put_line('------>03.Reverse Journal :  沖銷日記賬成功');
    END IF;
  END IF;
END;


日記賬沖銷分爲 紅字沖銷 和 借貸相反 兩種,上例爲紅字沖銷日記賬。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章