【问题标题】:How to auto select trans line field sourced from vendor and item如何自动选择来自供应商和项目的跨行字段
【发布时间】:2022-11-02 18:26:51
【问题描述】:

我需要在采购订单中添加检查该项目是否具有供应商设置的任何最小订单数量(起订量)。如果是,请确保订单数量输入大于或等于 moq,如果不提示用户错误。

我创建了一个自定义记录“项目供应商设置”来存储供应商项目起订量,其中包含以下字段

  1. 供应商
  2. 项目
  3. 最小订单数量

    我创建了一个自定义交易行字段“Item Vendor id”,它是来自“item vendor setting”的列表记录,带有过滤器 Vendor = trans Vendor 和 item = trans item。

    当我创建采购订单时,在输入供应商和项目字段后,匹配的 ID 不会在“项目供应商设置”字段中自动选择。我需要任何脚本来实现这一点吗?任何人都可以建议任何示例代码,因为我可以阅读代码但不能从头开始编码:(谢谢!


    我已经添加了客户端脚本,但不确定出了什么问题,没有错误提示,我无法添加任何行。任何人都可以建议吗?

    /**
     *@NApiVersion 2.1
     *@NScriptType ClientScript
     *@NModuleScope Public
     */
    define(['N/currentRecord', 'N/search'],
        function (currentRecord, search) {
    
            function validateLine(context) {
                var currentRecord = context.currentRecord;
                var sublistName = context.sublistId;
    
                if(sublistName === 'item') {
                    var recsub = currentRecord.getField({ fieldId: 'subsidiary' });
                    var reclineitem = currentRecord.getCurrentSublistValue({ sublistId: sublistName, fieldId: 'item'});
                    if (!recsub && !reclineitem) {
                            var subitemlinksearch = search.create({
                                type: "customrecord_fc_item_subsi_fields",
                                filters: [["custrecord_fc_isf_subsidiary", "is", recsub],'and',
                                        ["custrecord_fc_isf_item","is",reclineitem]]
                            });
                            subitemlinksearch.run().each(function (result) {
                                var subitemlink = result.getValue({ name: 'id' });
                                if (subitemlink) {
                                    currentRecord.setCurrentSublistValue({ sublistId: sublistName, fieldId: 'custcol_fc_ir_isf_link', value: subitemlink });
                                };
                                return true;
                            });
                        };
                };
            }
    
            return {
                validateLine: validateLine
            };
        });
    

【问题讨论】:

  • 您将需要一个 ClientScript 并使用 validateLine 挂钩来验证该行。您也可以使用 fieldChanged 在您在线设置项目和数量后立即进行验证。
  • @WS谢谢 !会尝试的。
  • 我创建了以下脚本。但是当我在订单行中选择项目时,字段中没有设置值并且没有错误,并且无法添加项目行。可以让我知道我上面的脚本有什么问题吗?

标签: netsuite user-event


【解决方案1】:

您的 (!) 否定 if (!recsub && !reclineitem) {...} 不正确。应该是相反的。

在这里,您有一个我将如何处理它的示例(没有自定义字段的帮助)。该代码尚未经过测试,因此可能存在一些错误。

/**
 *@NApiVersion 2.1
 *@NScriptType ClientScript
 *@NModuleScope Public
*/
define(["N/search", "N/ui/message", "N/ui/dialog"], function (search, message, dialog) {

    function validateLine(context) {
        var currentRecord = context.currentRecord;
        var sublistId = context.sublistId;

        if (sublistId != 'item') return true;
        
        var subsidiary = currentRecord.getValue({ fieldId: 'subsidiary' });
        var vendor = currentRecord.getValue({ fieldId: 'entity' });
        var item = currentRecord.getCurrentSublistValue({ sublistId: sublistId, fieldId: 'item' });
        var quantity = currentRecord.getCurrentSublistValue({ sublistId: sublistId, fieldId: 'quantity' });
        
        if (!subsidiary) {
            message.create({
                title: 'Missing Field',
                type: message.Type.WARNING,
                message: 'Subsidiary is missing...',
            }).show({ duration: 5000 });
            return false;
        }
        if (!vendor) {
            message.create({
                title: 'Missing Field',
                type: message.Type.WARNING,
                message: 'Vendor is missing...',
            }).show({ duration: 5000 });
            return false;
        }
        if (!item) {
            message.create({
                title: 'Missing Field',
                type: message.Type.WARNING,
                message: 'Item is missing...',
            }).show({ duration: 5000 });
            return false;
        }
        if (!quantity) {
            message.create({
                title: 'Missing Field',
                type: message.Type.WARNING,
                message: 'Quantity is missing...',
            }).show({ duration: 5000 });
            return false;
        }
        var subitemlinksearch = search.create({
            type: "customrecord_fc_item_subsi_fields",
            filters: [
                ["custrecord_fc_isf_subsidiary", "is", subsidiary],
                'and',
                ["custrecord_fc_isf_vendor", "is", vendor], // I don't know how you called this field..
                'and',
                ["custrecord_fc_isf_item", "is", item]
            ]
        });
        var canProceeed = false
        var results = 0
        subitemlinksearch.run().each(function (result) {
            results++;
            var moq = result.getValue({ name: 'custrecord_fc_isf_minimun_order_quantity' }); // I don't know how you called this field..
            if (+moq < +quantity) {
                dialog.confirm({
                    title: 'Minimum Order Quantity',
                    message: "The miniminum order quantity is " + moq + ", while you only order " + quantity + ". Do you want to update the quantity?"
                }).then(function (confirmed) {
                    if (!confirmed) return false;
                    currentRecord.setCurrentSublistValue({ fieldId: 'quantity', sublistId: sublistId, value: moq })
                    currentRecord.commitLine({ sublistId: sublistId });
                });
                return false;
            }
            canProceeed = true
            return true;
        });
        if (!results) return true;
        return canProceeed;
    }

    return {
        validateLine: validateLine
    };
    
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 2022-07-06
    • 2013-12-12
    • 1970-01-01
    相关资源
    最近更新 更多