首页 > 解决方案 > SuiteScript 向客户保存信用卡在到期日失败

问题描述

我正在尝试将一些客户详细信息保存到客户记录中。我已经创建了这个方法,但是当我输入到期日期时它失败了。

function addCreditCard(rec, data){
    rec.selectNewLine({
        sublistId: 'creditcards',
    });
    rec.setCurrentSublistValue({
        sublistId   : 'creditcards',
        fieldId     : 'paymentmethod',
        value       : data.paymentmethod
    });
    rec.setCurrentSublistValue({
        sublistId   : 'creditcards',
        fieldId     : 'ccnumber',
        value       : data.ccnumber
    });
    rec.setCurrentSublistValue({
        sublistId   : 'creditcards',
        fieldId     : 'ccname',
        value       : data.ccname
    });
    log.debug("CC Expire Date", "'" + data.ccexpiredate + "'")
    rec.setCurrentSublistValue({
        sublistId   : 'creditcards',
        fieldId     : 'ccexpiredate',
        value       : data.ccexpiredate
    });
    rec.commitLine({
        sublistId: 'creditcards'
    });
}

我收到的错误是

{
    "type": "error.SuiteScriptError",
    "name": "INVALID_FLD_VALUE",
    "message": "You have entered an Invalid Field Value 08/2023 for the following field: ccexpiredate",
    "stack": [
        REDACTED
    ],
    "cause": {
        "type": "intenal error",
        "code": "INVALID_FLD_VALUE",
        "details": "You have entered an Invalid Field Value 08/2023 for the following field: ccexpiredate",
        "userEvent": null,
        "stackTrace": [
            REDACTED
        ],
        "notifyOff": false
    },
    "id": "",
    "notifyOff": false,
    "userFacing": true
}

我可以看到保存到 NetSuite 中的信用卡格式为 MM/YYYY,在 NetSuite 帮助文件中我可以看到它是一个字符串字段。我错过了什么?为什么我的过期日期没有保存?

标签: suitescript2.0

解决方案


要使其正常工作,您需要将日期格式化为 Netsuite 接受的日期。'N/format'模块对此有所帮助。

format.parse(expirationDate, format.Type.MMYYDATE)

上面返回 Date 对象,请注意 SuiteScript 记录浏览器概述了ccexpiredate字段是mmyydate类型并且(不清楚它是否接受 String 或 Date 对象)但上面的代码适用于它。前段时间我遇到了类似的问题,所以该代码帮助我解决了这个问题。请让我知道它是否适合您。


推荐阅读