問題の説明
AR がアカウントを閉鎖したときにこの問題が発生しました。根本的な原因は、ユーザーが別のクレジット請求書を入力し、償却を行い、後で償却をキャンセルしたこと、会計仕訳を作成しなかった、総勘定元帳を転送しなかった、およびこのクレジットは必要ありませんでした。請求書は発行されましたが、フロント デスクが請求書を削除できなかったため、バックグラウンドでバックアップおよび削除され、次のテーブルが削除されました。
--事务头
DELETE FROM ra_customer_trx_all trx
WHERE trx.customer_trx_id = 871860;
--事务行
DELETE FROM ra_customer_trx_lines_all l
WHERE l.customer_trx_id = 871860;
--分配表
DELETE FROM ra_cust_trx_line_gl_dist_all d
WHERE d.customer_trx_id = 871860
AND d.customer_trx_line_id IN (739451, 739452);
--子分类账事件表
DELETE FROM xla.xla_events xe
WHERE xe.event_id = 3129795;
--子分类账事务表
DELETE FROM xla.xla_transaction_entities xte
WHERE xte.entity_id = 2963232;
実際には、次の 2 つのテーブルにデータが残っています:
支払計画テーブル AR_PAYMENT_SCHEDULES_ALL
消込テーブル AR_RECEIVABLE_APPLICATIONS
トランザクション マスター テーブルのデータはクリーンアップされていると思います。クロージング チェック レポートは後で確認する必要はありません。削除後、閉鎖チェック レポートを実行します。案の定、チェックアウトされておらず、アカウントが閉鎖されたときに次のエラーが報告されました。
問題分析
そこで、Oracle が提供する分析プログラム、EBS Receivables Period Close Analyzer (Doc ID 2019636.1)を実行しました。
2 つの主な効果が見つかりました。
- AR_RECEIVABLE_APPLICATIONS_ALL 消込テーブルに未送信の総勘定元帳データがあります
- AR_PAYMENT_SCHEDULES_ALL にデータがありません (トランザクション マスター テーブルにはデータがありますが、プラン テーブルにはありません)
最初の問題はデータがクリーンアップされていないという感覚によって引き起こされますが、確かに Oracle の設計はより厳格で、ミスは許されないようです。
2 番目の問題は、図に示すように、請求書のクレジットを作成するときに、構成 [未決済債権] に対応する選択された [トランザクション タイプ] がチェックされないことです。クレジットが完了した後、AR_PAYMENT_SCHEDULES_ALL テーブルには自動支払いがありません。
生成されたデータは、下の図に示すように、最終的にクレジットノートが請求書から消されるときにエラーを引き起こしました:FRM40738 パラメータ 1 (ユーザーの内部 NAME_ID を空にすることはできません):
問題解決
質問1:
バックアップ後、消込テーブル AR_RECEIVABLE_APPLICATIONS_ALL のデータを削除します。
質問2
バックグラウンドで ra_cust_trx_types_all テーブルの対応するフィールドを N から Y に
支払いスケジュール テーブル AR_PAYMENT_SCHEDULES_ALL に更新して、クレジット請求書に対応するデータを補足します。
上記2つの手順を経て再度口座を閉鎖するとスムーズに口座を閉鎖することができ、元のクレジットノートで請求書を償却できない場合でも、請求書を償却することができます。
付録: 関連する SQL
SQLでデータの整合性をチェックする
select distinct ct.customer_trx_id, ct.trx_number, ct.trx_date
from ra_customer_trx_all ct ,
ra_cust_trx_types_all ctt ,
ra_cust_trx_line_gl_dist_all gld
where ct.cust_trx_type_id = ctt.cust_trx_type_id
and ctt.type in ('INV', 'DM', 'CM', 'CB')
AND ctt.org_id = ct.org_id
and ctt.accounting_affect_flag = 'Y'
and gld.customer_trx_id = ct.customer_trx_id
and ct.complete_flag = 'Y'
and gld.customer_trx_id = ct.customer_trx_id
and gld.account_class = 'REC'
and gld.account_set_flag = 'N'
and not exists
(select 'x'
from ar_payment_schedules_all ps
where ps.customer_trx_id = ct.customer_trx_id )
and gld.gl_date between to_date('01-APR-2023','DD-MON-YYYY') and
to_date('30-APR-2023','DD-MON-YYYY')
and gld.org_id = 3867
order by 1
未ポストのロジックをチェックするSQL
SELECT ' ' "Unposted Items in AR"
FROM dual
WHERE EXISTS
(SELECT 'Y'
FROM AR_ADJUSTMENTS_ALL
WHERE posting_control_id = -3
AND gl_date BETWEEN to_date('01-APR-2023', 'DD-MON-YYYY') AND to_date('30-APR-2023', 'DD-MON-YYYY')
AND NVL(postable, 'Y') = 'Y'
AND NVL(org_id, -99) = 3867
AND rownum < 2
UNION
SELECT 'Y'
FROM AR_RECEIVABLE_APPLICATIONS_ALL RA
WHERE ra.posting_control_id = -3
AND ra.application_type = 'CM'
AND ra.gl_date BETWEEN to_date('01-APR-2023', 'DD-MON-YYYY') AND to_date('30-APR-2023', 'DD-MON-YYYY')
AND NVL(ra.postable, 'Y') = 'Y'
AND NVL(ra.org_id, -99) = 3867
AND rownum < 2
UNION
SELECT 'Y'
FROM AR_CASH_RECEIPT_HISTORY_ALL a
WHERE a.posting_control_id = -3
AND a.gl_date BETWEEN to_date('01-APR-2023', 'DD-MON-YYYY') AND to_date('30-APR-2023', 'DD-MON-YYYY')
AND a.postable_flag = 'Y'
AND NVL(a.org_id, -99) = 3867
AND rownum < 2
UNION
SELECT 'Y'
FROM RA_CUST_TRX_LINE_GL_DIST_ALL a, RA_CUSTOMER_TRX_ALL b
WHERE a.posting_control_id = -3
AND a.gl_date BETWEEN to_date('01-APR-2023', 'DD-MON-YYYY') AND to_date('30-APR-2023', 'DD-MON-YYYY')
AND b.complete_flag = 'Y'
AND a.account_set_flag = 'N'
AND b.customer_trx_id = a.customer_trx_id
AND NVL(a.org_id, -99) = 3867
AND rownum < 2
UNION
SELECT 'Y'
FROM ar_misc_cash_distributions_all mcd
WHERE mcd.posting_control_id = -3
AND mcd.gl_date BETWEEN to_date('01-APR-2023', 'DD-MON-YYYY') AND to_date('30-APR-2023', 'DD-MON-YYYY')
AND mcd.org_id = 3867
AND rownum < 2
UNION
SELECT 'Y'
FROM AR_RECEIVABLE_APPLICATIONS_ALL RA
WHERE ra.posting_control_id = -3
AND ra.application_type = 'CASH'
AND ra.gl_date BETWEEN to_date('01-APR-2023', 'DD-MON-YYYY') AND to_date('30-APR-2023', 'DD-MON-YYYY')
AND NVL(ra.postable, 'Y') = 'Y'
AND NVL(ra.org_id, -99) = 3867
AND rownum < 2
UNION
SELECT 'Y'
FROM AR_TRANSACTION_HISTORY_ALL a, RA_CUSTOMER_TRX_ALL b
WHERE a.posting_control_id = -3
AND a.gl_date BETWEEN to_date('01-APR-2023', 'DD-MON-YYYY') AND to_date('30-APR-2023', 'DD-MON-YYYY')
AND a.postable_flag = 'Y'
AND b.customer_trx_id = a.customer_trx_id
AND NVL(a.org_id, -99) = 3867
AND rownum < 2)
AND rownum < 2