0

我的用户注册表单有一个自定义字段Gender。如何让 SCA 将客户的性别写入 NS 数据库?

我应该使用 Commerce API 还是 SuiteScript API?

我想我应该编辑模型Account/SuiteScript/Account.Model.js,但我应该使用 Commerce API(Customer对象或Profile/User对象)还是使用直接写入数据库record.setFieldValue()

Account/SuiteScript/Account.Model::register()功能上:

//@method register
//@param {UserData} user_data
//@param {Account.Model.Attributes} user_data
register: function (user_data)
{
    var customer = session.getCustomer();

    ....default user registration code

    var user = Profile.get();



    // Should I do it like this?
    customer.updateProfile({
        "customfields": {
            "custentity_dev_gender": user_data.gender
        }
    })

    // Should I edit the user object??

    // Should I interact directly with the customer record. Does Commerce API allow this??
    var record = nlapiLoadRecord('customer', user.id);
    record.setFieldValue('custentity_dev_gender', user_data.gender);
    var internalId = nlapiSubmitRecord(record);



    return {
        touchpoints: session.getSiteSettings(['touchpoints']).touchpoints
    ,   user: user
    ,   cart: LiveOrder.get()
    ,   address: Address.list()
    ,   creditcard: CreditCard.list()
    };
}
4

1 回答 1

1

它非常简单实际上不需要写record.setFieldValue()

  1. 第一步是从 Customization--> Entity Field-->New 创建自定义实体字段
  2. 将实体字段应用到客户授予对字段的编辑权限并保存。
  3. 从那里复制实体 ID,在这种情况下说“custentity_gender_field”
  4. 您需要覆盖以下两个文件,如果您不知道单独提出问题,我会在那里回复。

i.Modules/suitecommerce/LoginRegister@2.2.0/Templates/login_register_register.tpl ii.Modules/suitecommerce/Profile@2.3.0/SuiteScript/Profile.Model.js

  1. 转到第一个文件,在您需要放置性别的地方写下代码

<div class="login-register-register-form-controls-group" data validation="control-group">
	<label class="login-register-register-form-label for="custentity_gender_field">{{translate 'Gender: '}}
		<small class="login-register-register-form-optional">{{translate '(optional)'}}</small>
	</label>
	<div class="login-register-register-form-controls" data-validation="control">
		<input type="text" name="custentity_gender_field" id="custentity_gender_field" class="login-register-register-form-input">
	</div>
</div>

  1. 然后转到第二个文件,即 Profile.Model.js

您可以在 get 函数中看到各种字段值,将您的自定义字段值放在那里

this.fields = this.fields || ['isperson', 'email', 'internalid', 'name', 'overduebalance', 'phoneinfo', 'companyname', 'firstname', 'lastname', 'middlename', 'custentity_gender_field', 'emailsubscribe', 'campaignsubscriptions', 'paymentterms', 'creditlimit', 'balance', 'creditholdoverride'];
  1. 在用户角色下部署您的代码和测试--> 管理用户

我在这里又错过了一件事,您需要进行更改

Account@2.2.0/SuiteScript/Account.Model.js 以及在这个模型中找到

register: function (user_data)
{

}

和您的自定义字段

ModelsInit.session.registerCustomer(
{ 
    custentity_gender_field:user_data.custentity_gender_field
});

而已...

于 2017-03-17T06:28:09.530 回答