2015-10-05 78 views
1

我有兩個當前相互衝突的業務需求。我添加了以下邏輯客戶端訂單創建代碼,限制誰可以通過發票訂購:NetSuite:將報價轉換爲銷售訂單

if (type == 'create' && nlapiGetContext().getRoleCenter() == 'CUSTOMER') { 
    if(nlapiGetFieldValue('entity')){// shouldn't be here if no entity 
     var hasTerms = nlapiLookupField('customer', nlapiGetFieldValue('entity'), 'terms'); 
     var neededFormId = hasTerms ? 135 : 134; 
     if (req && !req.getParameter('cf') && neededFormId != nlapiGetFieldValue('customform')) { 
      nlapiSetRedirectURL('RECORD', nlapiGetRecordType(), nlapiGetRecordId(), (type == 'create'), { cf: neededFormId }); 
     } 
    } 
} 

然而,出於某種原因,這已經打破了以下需要使用案例:如果我現在單擊「創建訂單「,它將創建它,但沒有任何訂單中的報價項目。當我註釋掉上述邏輯時,「創建訂單」按鈕正常工作。我怎麼能得到這兩個?我能否以某種方式檢查訂單是否由於現有報價而被創建?

+0

要強制用戶使用特定的形式下,一些標準和重定向是打破報價訂購的功能? – prasun

+0

正確。有4個用例需要工作:(1)來自客戶的新銷售訂單,其中包含條款(2)來自客戶的新訂單,沒有條款(3)將報價轉換爲來自客戶的銷售訂單, 4)將報價轉變爲客戶沒有條款的銷售訂單。我需要同時顯示正確的表格,並且這些項目保留在(3)和(4)的順序中。我可以做下面的建議,但我不認爲它修復了它。我認爲真正的問題是如何重定向而不會丟失項目? –

回答

3

您是否嘗試過在Page Init事件中獲取'createdfrom'字段的值?如果您正在創建獨立SO,則此字段將爲空白。

+0

好的,但我不認爲這完全解決了我的問題(因爲我不清楚!)無論某人如何創建訂單(直接或從報價單),我需要顯示發票表單,如果他們被允許發票和信用卡表格,如果沒有。 「創建訂單」按鈕不能僅默認爲發票。 –

+0

信用卡是自定義發票形式嗎?如果是,那麼您可以在發票上使用前加載用戶事件腳本,並使用'customform'字段將表單設置爲正確的形式。 –

1

按照@rusty的建議使用「createdfrom」檢查,以避免報價轉換SO陷入您的邏輯陷阱。

但是,您仍可能想要使用特定的表單,在這種情況下,您可以在用戶事件腳本中編寫邏輯以更改表單。

如果表單的目的是要求其他表單中沒有出現的不同字段,可以嘗試使用允許訪問nlobjform的「beforeload用戶事件腳本」,您可以嘗試更改形成。

0

請考慮在向客戶提供初始報價單時進行檢查。條款客戶獲得條款報價單。信用卡客戶會收到一份報價單,這將始終引導他們進行現金銷售。

然後只需使用Netsuite固有的報價單。

乾杯

相關問題