Scripting 如何使用NetSuite中的脚本检查特定客户的历史记录信息?

Scripting 如何使用NetSuite中的脚本检查特定客户的历史记录信息?,scripting,netsuite,Scripting,Netsuite,我想在NetSuite中创建一个脚本,它需要客户提供一些历史信息。事实上,我需要的信息是知道用户是否购买了商品。 为此,我需要以某种方式访问该客户的历史记录 Pablo.您可以使用保存的搜索nlapiLoadSearch或nlapiCreateSearch来搜索发票,按客户筛选,并报告发票项目(或仅报告特定项目)。使用nlapiCreateSearch可能会很棘手,因此我建议使用UI构建保存的搜索,然后使用nlapiLoadSeach(type,id) 这将为您提供一系列购买您的商品的发票/客户

我想在NetSuite中创建一个脚本,它需要客户提供一些历史信息。事实上,我需要的信息是知道用户是否购买了商品。 为此,我需要以某种方式访问该客户的历史记录


Pablo.

您可以使用保存的搜索
nlapiLoadSearch
nlapiCreateSearch
来搜索
发票
,按客户筛选,并报告发票项目(或仅报告特定项目)。使用
nlapiCreateSearch
可能会很棘手,因此我建议使用UI构建保存的搜索,然后使用
nlapiLoadSeach(type,id)


这将为您提供一系列购买您的商品的发票/客户。

尝试包括此功能并传递客户的internalID和商品internalID

function hasPurchasedBefore(customerInternalID, itemInternalID){
    var results = [];
    var filters = [];
    var columns = [];

    filters.push(new nlobjSearchFilter('internalidnumber', 'customermain', 'equalto', [customerInternalID]))
    filters.push(new nlobjSearchFilter('anylineitem', null, 'anyof', [itemInternalID]));
    filters.push(new nlobjSearchFilter('type', null, 'anyof', ['CustInvc']));
    columns.push(new nlobjSearchColumn('internalid', null, 'GROUP'));

    results = nlapiSearchRecord('transaction', null, filters, columns);

    if (results && results.length){
        return true;
    }
    return false;
}
例如:

var record = nlapiLoadRecord(nlapiGetRecordType(),nlapiGetRecordId());
var customerInternalID = record.getFieldValue('entity');
var itemInternalID = record.getLineItemValue('item', 'item', 1); //Gets line 1 item Internal ID

if( hasPurchasedBefore(customerInternalID, itemInternalID) ) {
    //Has bought something before
}

如果您在客户记录上适当地使用了Stage字段,那么任何具有Stage of Customer的客户记录都应该购买了一些东西。如果您没有以这种方式使用Stage字段,那么这似乎不是一个难以构建的搜索。您对“用户已购买物品”的定义是什么?是否存在针对该客户的销售订单?发票?现金拍卖?嗨,阿道夫,谢谢你的剧本,它实际上不起作用。顾客从来没有买过一件商品,这总是让人吃惊。顺便问一下,从哪里可以找到所有要搜索的实体?比如客户、销售、交易等?再次感谢,伙计,这里有一些类型,你可以把它们添加到你的过滤器上:谢谢阿道夫。。我会检查一下,让你知道。