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;

 

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