因此,我目前正在尝试从前端的输入更新NetSuite报价记录上的标题字段,以便用户可以自己添加标题。
当提交报价时,我可以设置标题,并看到它已经更新了 Backbone.js 模型,但是当页面加载时,模型已经将标题设置回空。
该功能已经存在与备忘录区,我已经复制了所有的功能,以复制这一标题,但备忘录继续更新,但标题没有。
我对SuiteScripting相当陌生,并尽量避免使用它,但我认为该字段没有更新,因此在其他页面的模型中不可用。
enter , update: function (record_type, id, data_model)
{
if (record_type && id)
{
this.recordId = id;
this.data = data_model;
this.record = this.getTransactionRecord(record_type, id);
//@property {Transaction.Model.Get.Result} currentRecord This property is used so when performing any update
//operation you can know what is the current state
//This property is only present when performing an update operation
this.currentRecord = this.get(record_type, id);
this.setPaymentMethod();
this.setLines();
this.setAddress('ship', this.data.shipaddress, 'billaddress');
this.setAddress('bill', this.data.billaddress, 'shipaddress');
this.setMemo();
// Set's our Quote title
this.setTitle();
// Set's our PO Number and SLC Number
this.setCustomFields();
}
}
/**
* Adds fields to the Sales Order when generated via Quotes (possibly via other methods as well)
*/
, setCustomFields: function ()
{
if (this.data.custbody_slc_number) {
this.record.setFieldValue('custbody_slc_number', this.data.custbody_slc_number);
}
if (this.data.otherrefnum) {
this.record.setFieldValue('otherrefnum', this.data.otherrefnum);
}
}
/**
* @method setTitle Sets the title attribute into the current transaction
* @return {Void}
*/
, setTitle: function ()
{
this.record.setFieldValue('title', null);
if (this.data.title)
{
this.record.setFieldValue('title', this.data.title);
}
}
//@method setMemo Sets the memo attribute into the current transaction
//This method does not use any parameters as it use this.data and this.record
//@return {Void}
, setMemo: function ()
{
this.record.setFieldValue('memo', null);
if (this.data.memo)
{
this.record.setFieldValue('memo', this.data.memo);
}
}
这是创建setTitle()函数并在更新时调用的位置。
, submit: function () {
this.wizard.model.set('memo', this.$('[data-type="memo-input"]').val());
this.wizard.model.set('title', this.$('[data-type="title-input"]').val());
console.log(this.wizard.model);
return jQuery.Deferred().resolve();
}
这是提交函数。
因此,在提交时,模型将使用.set()函数进行更新,但是它不会将此字段保存到记录中。
我已经把我的头撞到这个上面有一段时间了,我看不出setMemo和setTitle之间有什么不同。
任何帮助将是惊人的,我很想了解如何添加数据到记录从前端,但它是一个相当迷宫,以解决发生了什么事。
谢谢你!
更新
我已经追溯了数据路径,从视图提交函数到配置,然后再到提交到服务器。
我可以看到,当通过这些阶段记录变量时,标题字段将被设置并保存,直到页面重新加载到报价确认页面,在该页面中,模型的“已更改”部分中的标题被重新定义为“空”。
下面是提交模型的submit函数:
, save: function ()
{
_.first(this.moduleInstances).trigger('change_label_continue', _('Processing...').translate());
var self = this
, submit_opreation = this.wizard.model.submit();
submit_opreation.always(function ()
{
_.first(self.moduleInstances).trigger('change_label_continue', _('Submit Quote Request').translate());
});
return submit_opreation;
}
}
我认为这是一个suitescript问题,而且我对suitescript没有太多经验
setTitle: function ()
{
// this.record.setFieldValue('title', null);
if (this.data.title)
{
this.record.setFieldValue('title', this.data.title);
}
}
此函数将标题设置为'null',但在此处硬编码值或仅删除if语句时,标题仍设置为'null'。
由于我是SuiteScripting的新手,有人能指出我如何记录“this.data”吗?
1条答案
按热度按时间dm7nw8vv1#
从我所看到的来看,submit-function将input-values正确地Map到(本地)模型(“我可以[...]看到它已经更新了 Backbone.js 模型”),但是在单击submit按钮之后,它并没有最终将该模型保存到(远程)数据库中(“然而,当页面加载时,模型已经将标题设置回了null。") www.example.com -方法。
因此,您可以尝试将submit-function更改为以下内容: