在NetSuite保存的搜索

时间:2017-08-15 20:06:19

标签: netsuite

如何将按钮添加到已保存搜索的结果列?

我有一个工作流程,可以在更新某个字段时向ITEM记录添加按钮。单击时,该按钮将启动另一个工作流程。

是否可以将此按钮作为链接添加到“已保存的搜索”列中。当用户单击该链接时,它将启动按钮操作。这与Case Management中的“GRAB”按钮类似。

2 个答案:

答案 0 :(得分:0)

需要更多信息才能完全回答,但简而言之:是的,你可以。您可以创建文本公式来构建锚元素以创建链接 - 例如,下面是一个公式,可用于在项目搜索的每一行上放置打印标签链接:

'<a href="/app/accounting/print/barcodeprinter.nl?itemid=' || {internalid} || '">Print Label</a>'

您仍然需要创建显示条件(可能使用CASE语句)并使用正确的路径和参数构建网址,但这应该可以帮助您入门。

答案 1 :(得分:0)

您可以使用“公式(文本)”字段并向以下输入公式,将按钮添加到“保存的搜索结果”列中:

'<button onclick="window.open(`/app/site/hosting/scriptlet.nl?script=123&deploy=1&rec_id=' || {internalid} || '`);">Do Action</button>'

以上操作将在屏幕上放置一个实际按钮,该按钮将打开Suitelet执行操作并编写一些响应页面。如果您希望它停留在该页面上,则可以对xhr请求进行处理,如下所示:

'<button onclick="var xhr = new XMLHttpRequest(); xhr.open(`GET`, `/app/site/hosting/scriptlet.nl?script=123&deploy=1&rec_id=' || {internalid} || '`); xhr.onload = function(oEvent) { var response = JSON.parse(xhr.response); if (xhr.status == 200 && response) { console.log(xhr.response); window.open(`https://system.netsuite.com/app/accounting/transactions/estimate.nl?e=T&id=` + response); } else { console.log(xhr.response); alert(`Issue Doing Button Action`) } };xhr.send(null);this.style.display = `none`;this.parentElement.append(`Button Clicked`);">Do Action</button>'

在两种情况下,您都需要将那里的URL更新为Suitelet的适当URL。对于您的情况,您想创建一个使用N /工作流程模块来启动或触发第二个工作流程的Suitelet。

要处理“何时更新某些字段”部分,您可以执行case语句,如下所示:

CASE WHEN {custbody_your_field} IS NULL THEN 'No Action Available' ELSE '<one of the code snippets above>' END

别忘了END语句:)

用于启动工作流程的样本Suitelet:

define(['N/workflow'], function (wf) {
    /**
     * Initiates a workflow
     * 
     * @NApiVersion 2.x
     * @NScriptType Suitelet
     * @author Stephen Lemp (SuiteRep)
     */
    var exports = {};

    var WORKFLOW_ID = 1234;
    /**
     * @function onRequest Definition of the Suitelet script trigger point.
     * @governance XXX
     * 
     * @param {Object} params
     * @param {http.ServerRequest} params.request The incoming request.
     * @param {http.ServerResponse} params.response The Suitelet response.
     *
     * @return {void}
     * @since 2015.2
     */
    function onRequest(context) {
        var rec_id = context.request.parameters.rec_id
        var workflowInstanceId = wf.initiate({
            recordType: 'some_record_type', // The record type that the workflow is deployed on.
            recordId: rec_id, // The record ID of some record.
            workflowId: 'customworkflow_some_workflow'
        });
    }

    exports.onRequest = onRequest;
    return exports;
});