与信チェックのスキップ
Order Managementで与信チェックを実装したが、販売オーダーの改訂時にオーダー明細で与信チェックに失敗した場合は、オーダー明細のステータスが「与信レビュー保留中」でスタックし、明細が販売オーダーの他の明細と履行して移動しないことがわかります。 この問題を解決できます。
次のいずれかを実行できます:
- 支払いまたは修正。
- 販売オーダーにある請求先顧客の請求書に支払を送信します。
- 与信限度額を修正します。
- 改訂を下書きステータスに変更し、再送信します。
- 販売オーダーの与信チェックを完全にスキップします。 これを行うには、2つの異なる方法があります。
- オーダー・インポートを使用して、改訂済販売オーダーのソースで承認されたクレジット属性をYに設定します。 詳細は、「与信チェックを含むソース・オーダーのインポート」を参照してください。
-
オーダー管理拡張を使用して、改訂済販売オーダーのPreCreditCheckedFlag属性をYに設定します。 拡張により、拡張で指定した条件に従って、オーダー管理で改訂の与信チェックのコールがスキップされます。
承認が失効し、オーダー明細がクローズされていない場合、PreCreditCheckedFlagをYに設定した場合でも、Order Managementは与信チェックを実行します。
このトピックでは、オーダー管理拡張を使用して、単一の販売オーダーの与信チェックをスキップする様々な方法について説明します。 オーダー管理拡張の作成方法の詳細は、「Order Management拡張の作成の概要」を参照してください。
オーダーの改訂に対する与信チェックのスキップ
- 保存時イベントに拡張を作成し、オーダー改訂の与信チェックをスキップという名前を付けます。
- このコードを内線番号に追加します。
import oracle.apps.scm.doo.common.extensions.ValidationException; if (header.isRevisionDraftOrder()) { def row = context.getDbAdapter().getLookupRow("AR_FEATURES", "AR_CREDIT_MGMT"); boolean isFeatureEnabled = row != null && "Y".equals(row.getAttribute("EnabledFlag")); header.setAttribute("PreCreditCheckedFlag", isFeatureEnabled ? "N" : "Y"); }
これが機能です。
if(refHeaderId != null)は、販売オーダーが当初オーダーであるか改訂であるかを決定します。-
与信管理で与信チェックが使用可能かどうかを決定します。 そうでない場合は、
header.setAttribute("PreCreditCheckedFlag", "Y"によって有効になります。
この例では、最初の改訂および後続の改訂を含むすべての改訂の与信チェックをスキップします。 最新の改訂についてのみ与信チェックをスキップする必要がある場合は、この例を変更するか、新しい拡張を作成する必要がある場合があります。
改訂によってオーダー合計が変更された場合は、オーダーの改訂拡張で「与信チェックのスキップ」を使用しないでください。合計にはまだオープンな与信承認が含まれ、後続の与信チェックが失敗する可能性があるためです。 オーダーに合計$1500があり、与信チェックで承認が作成されると、オーダーの数量が改訂され、新しい合計が$1000になります。 拡張機能では、PreCreditCheckedFlagがYに設定されるため、合計は考慮されず、新しい$1000金額のクレジットはチェックされません。 オーダー明細に$1000を請求すると、$500の承認が開いたままになります。 顧客が$250の別のオーダーを行いましたが、$500の未回収残高がまだあると考えているため、与信チェックに失敗します。 この問題を回避するには、改訂の合計拡張に従って与信チェックのスキップを使用します。
改訂合計に従って与信チェックをスキップ
- 保存時イベントに拡張機能を作成し、オーダー合計が変更されない場合に与信チェックをスキップという名前を付けます。
- このコードを内線番号に追加します。
import oracle.apps.scm.doo.common.extensions.ValidationException; if (header.isFirstDraftOrder()) return; def currentTotal = header.getOrderTotalsPrimaryRow(); def currentTotalAmount = currentTotal.getAttribute("TotalAmount"); def processingOrder = header.getOrderInProcessing(); def processingTotal = processingOrder.getOrderTotalsPrimaryRow(); def processingTotalAmount = processingTotal.getAttribute("TotalAmount"); if(currentTotalAmount.compareTo(processingTotalAmount) == 0) { //If the total is the same, then skip credit check. header.setAttribute("PreCreditCheckedFlag","Y"); } else { header.setAttribute("PreCreditCheckedFlag","N"); }
これが機能です。
- 販売オーダーが当初オーダーか改訂かを決定します。
- 改訂の合計が当初販売オーダーの合計と一致するかどうかを決定します。 はいの場合、オーダー管理は改訂に対して与信チェックを実行します。 いいえの場合、オーダー管理ではチェックがスキップされます。
- この拡張は、与信管理が使用可能かどうかを決定しません。
当初オーダーの与信チェックのスキップ
- 保存時イベントに拡張機能を作成し、販売オーダーの与信チェックをスキップという名前を付けます。
- このコードを内線番号に追加します。
import oracle.apps.scm.doo.common.extensions.ValidationException; if (header.isRevisionDraftOrder()) { boolean ccHoldExists = header.activeHoldExistsOnProcessingLines("DOO_CREDIT_CHECK"); if (!ccHoldExists) { def row = context.getDbAdapter().getLookupRow("AR_FEATURES", "AR_CREDIT_MGMT"); boolean isCreditMgmtFeatureEnabled = row != null && "Y".equals(row.getAttribute("EnabledFlag")); header.setAttribute("PreCreditCheckedFlag", isCreditMgmtFeatureEnabled ? "N" : "Y"); } else { header.setAttribute("PreCreditCheckedFlag", "N"); } }
これが機能です。
- 当初販売オーダーに与信チェックが保留されている明細があるかどうかを決定します。 そうでない場合は、拡張子を終了します。
- 与信管理で与信チェックを使用可能にするかどうかを決定します。 そうでない場合は、
header.setAttribute("PreCreditCheckedFlag", "Y"によって有効になります。
拡張可能フレックスフィールドを使用する場合の与信チェックのスキップ
- フレックスフィールドを設定します。
- 事前定義済のヘッダー情報拡張可能フレックスフィールドを編集します。
- 「拡張可能フレックスフィールドの編集」ページのカテゴリ領域で「追加ヘッダー情報」を選択します。
- 関連コンテキスト領域で、新しいコンテキストを作成します。
属性 値 表示名 フレックスフィールドがある販売オーダーの与信チェックをスキップ 関連カテゴリ 追加ヘッダー情報 動作 単一行 - 追加したコンテキストにセグメントを作成します。
このフレックスフィールドの編集方法の詳細は、「拡張可能フレックスフィールドを使用したOrder Managementでの属性の追加」を参照してください。属性 値 順序 10 名前 クレジット・チェックのスキップ 表の列 ATTRIBUTE_CHAR1 コード クレジット・チェックのスキップ
- 保存時イベントに拡張機能を作成し、フレックスフィールドがある販売オーダーの与信チェックをスキップという名前を付けます。
- このコードを内線番号に追加します。
import oracle.apps.scm.doo.common.extensions.ValidationException; if (header.isRevisionDraftOrder()) { def pccFlag = null; def row = context.getDbAdapter().getLookupRow("AR_FEATURES", "AR_CREDIT_MGMT"); boolean isCreditMgmtFeatureEnabled = row != null && "Y".equals(row.getAttribute("EnabledFlag")); if (!isCreditMgmtFeatureEnabled) { def headerEFF = header.getContextRow("Override Credit Failure for Revision"); if(headerEFF != null) { def segmentCode = headerEFF.getAttribute("skipCreditCheck"); pccFlag = "Y".equals(segmentCode) ? "Y" : "N"; } } header.setAttribute("PreCreditCheckedFlag", pccFlag == null ? "N" : pccFlag); }
これが機能です。
- 販売オーダーが当初オーダーか改訂かを決定します。
- 与信管理で与信チェックを使用可能にするかどうかを決定します。 そうでない場合は、オーダー・ヘッダーの改訂の与信失敗の上書きフレックスフィールド・コンテキストを読み取り、与信チェックのスキップ・セグメントの値を読み取ります。 セグメントに次のものが含まれている場合:
- Yのコードでは、与信チェックをスキップするためにPreCreditCheckedFlagをYに設定します。
- Yではなく、コードはPreCreditCheckedFlagをNに設定し、オーダー管理は与信チェックを実行します。
改訂の支払条件に従って与信チェックをスキップ
- 保存時イベントに拡張を作成し、支払条件に従って与信チェックをスキップという名前を付けます。
- このコードを内線番号に追加します。
import oracle.apps.scm.doo.common.extensions.ValidationException; if (header.isFirstDraftOrder()) return; def currentTotal = header.getOrderTotalsRowByCode("QP_TOTAL_PAY_NOW"); def currentTotalAmount = currentTotal.getAttribute("TotalAmount"); def processingOrder = header.getOrderInProcessing(); def processingTotal = processingOrder.getOrderTotalsRowByCode("QP_TOTAL_PAY_NOW"); def processingTotalAmount = processingTotal.getAttribute("TotalAmount"); if(currentTotalAmount.compareTo(processingTotalAmount) == 0) { def hasPaymentTermChange = false; def lines = header.getAttribute("Lines"); while ( lines.hasNext() ) { def line = lines.next(); if (line.isNewLineInDraftOrder() || line.isClosed() || line.isCanceled()) continue; def currPaymentTermId = line.getAttribute("PaymentTermCode"); def refLine = line.getLineInProcessing(); def refPaymentTermId = refLine.getAttribute("PaymentTermCode"); if (isSame(currPaymentTermId, refPaymentTermId)) continue; hasPaymentTermChange = true; break; } if (hasPaymentTermChange) { header.setAttribute("PreCreditCheckedFlag","N"); } else { header.setAttribute("PreCreditCheckedFlag","Y"); } } boolean isSame(def o1, def o2) { if (o1 == null && o2 == null) return true; if (o1 != null && o2 != null && o1.equals(o2)) return true; return false; }
これが機能です。
- 販売オーダーが当初オーダーか改訂かを決定します。
- 改訂の合計が元の販売オーダーの合計と一致するかどうか、および改訂のオーダー・ヘッダーの支払条件が元のオーダーの支払条件と一致するかどうかを決定します。
- 合計または支払条件が一致しない場合、オーダー管理は与信チェックを実行します。
- 合計と支払条件が一致する場合、オーダー管理は与信チェックをスキップします。
- この拡張は、与信管理が使用可能かどうかを決定しません。
CustomerPONumberには、テスト目的でRD_TESTが含まれます。 この値を削除するか、独自の値を使用する必要があります。
すべての販売オーダーのクレジット・チェックを無効にします
すべての販売オーダーの与信チェックを無効にできます。
- 「設定および保守」作業領域に移動してから、タスクに移動します:
- オファリング: 財務
- 機能領域: 売掛/未収金
- タスク: 売掛/未収金参照の管理
- 「売掛/未収金参照の管理」ページで、値を検索します。
属性 値 参照タイプ AR_FEATURES - 検索結果の財務一般参照タイプ領域の参照コード列にAR_CREDIT_MGMTがある行で、使用可能属性からチェック・マークを削除します。