与信チェックの拡張
与信チェックを変更するには、オーダー管理拡張を使用します。
オーダー改訂の与信チェックのスキップ
オーダー管理拡張のPreCreditCheckedFlag属性を使用して、オーダー入力スペシャリストが販売オーダーを改訂したときに与信チェックをスキップします。 たとえば:
- 販売オーダーが変更オーダーで、与信管理が有効になっていない場合は、PreCreditCheckedFlagをtrueに設定します。
PreCreditCheckedFlagをtrueに設定すると、与信チェックをスキップするようにオーダー管理に指示されます。
これがあなたの拡張機能です。
import oracle.apps.scm.doo.common.extensions.ValidationException;
Boolean isCCMgmtEnabled = false;
BigDecimal refHeaderId = header.getAttribute("ReferenceHeaderId");
if(refHeaderId != null)
{
def lookupVO =context.getViewObject("oracle.apps.financials.assets.shared.publicView.LookupPVO");
def vc = lookupVO.createViewCriteria();
def vcrow = vc.createViewCriteriaRow();
vcrow.setAttribute("LookupType", 'AR_FEATURES');//ACCOUNT_TYPE AR_FEATURES
vcrow.setAttribute("EnabledFlag", 'Y');
vcrow.setAttribute("LookupCode", 'AR_CREDIT_MGMT');
def rowset = lookupVO.findByViewCriteria(vc, -1);
rowset.reset();
if(rowset.hasNext()){
isCCMgmtEnabled = true;
}
if(!isCCMgmtEnabled)
header.setAttribute("PreCreditCheckedFlag", "Y");
}
明細が保留中の場合、与信チェックをスキップ
変更オーダーのオーダー明細が与信チェック保留中の場合、与信チェックをスキップします。 たとえば:
- 販売オーダーが変更オーダーであり、当初オーダーのオーダー明細が与信チェック保留中でない場合で、与信管理が使用可能でない場合は、PreCreditCheckedFlagをtrueに設定します。
これがあなたの拡張機能です。
import oracle.apps.scm.doo.common.extensions.ValidationException;
Boolean isCCMgmtEnabled = false;
BigDecimal refHeaderId = header.getAttribute("ReferenceHeaderId");
Boolean ccHoldFoundOnOriginalLines = false;
if(refHeaderId != null)
{
def holdInstanceVO =context.getViewObject("oracle.apps.scm.doo.publicView.analytics.HoldInstancePVO");
def hodlInstanceVc = holdInstanceVO.createViewCriteria();
def holdInstanceVrow = hodlInstanceVc.createViewCriteriaRow();
holdInstanceVrow.setAttribute("HeaderHeaderId", refHeaderId);
holdInstanceVrow.setAttribute("FulfillLineOnHold", 'Y');
def holdInstanceRowset = holdInstanceVO.findByViewCriteria(hodlInstanceVc, -1);
holdInstanceRowset.reset();
while(holdInstanceRowset.hasNext())
{
def holdInstance = holdInstanceRowset.next();
def holdDefs = holdInstance.getAttribute("HoldDefinition");
String holdCode = holdDefs.getAttribute("HoldHoldCode");
if("DOO_CREDIT_CHECK".equalsIgnoreCase(holdCode))
{
ccHoldFoundOnOriginalLines = true;
break;
}
}
if(!ccHoldFoundOnOriginalLines)
{
def lookupVO =context.getViewObject("oracle.apps.financials.assets.shared.publicView.LookupPVO");
def vc = lookupVO.createViewCriteria();
def vcrow = vc.createViewCriteriaRow();
vcrow.setAttribute("LookupType", 'AR_FEATURES');//ACCOUNT_TYPE AR_FEATURES
vcrow.setAttribute("EnabledFlag", 'Y');
vcrow.setAttribute("LookupCode", 'AR_CREDIT_MGMT');
def rowset = lookupVO.findByViewCriteria(vc, -1);
rowset.reset();
if(rowset.hasNext())
{
isCCMgmtEnabled = true;
}
if(!isCCMgmtEnabled)
header.setAttribute("PreCreditCheckedFlag", "Y");
}
}
承認失効日の管理
与信チェックをスキップするためにオーダー管理拡張でPreCreditCheckedFlagをYに設定した場合は、履行明細のCreditCheckAuthorizationExpiryDate属性をnull
に設定する必要もあります。 null値は、認可が期限切れにならないことを意味します。 これを行わない場合、販売オーダーを改訂すると、Order Managementでは、承認が失効したために与信チェックが再度実行される場合があります。
その方法は次のとおりです。
if ("CC".equals(header.getAttribute("CustomerPONumber"))) {
if ("Y".equals(header.getAttribute("PreCreditCheckedFlag"))) {
def lines = header.getAttribute("Lines");
while (lines.hasNext()) {
def line = lines.next();
def creditAuthExpDate = line.getAttribute("CreditCheckAuthorizationExpiryDate");
if (creditAuthExpDate != null) {
java.sql.Date currentDate = new java.sql.Date((new Date()).getTime());
java.sql.Date creditAuthExpSqlDate = new java.sql.Date((creditAuthExpDate).getTime());
if (creditAuthExpSqlDate < currentDate) {
//line.setAttribute("CreditCheckAuthorizationExpiryDate", null);
line.setAttribute("CreditCheckAuthorizationExpiryDate", currentDate);
}
}
}
}
}
かわりに、顧客アカウントの失効相殺日数属性を大きい値に設定して、販売オーダーの改訂中に承認が失効しないようにすることもできます。 詳細は、「与信チェックの顧客プロファイルの設定方法」を参照してください。