我的用户注册表单包含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()
};
}
答案 0 :(得分:1)
非常简单实际上不需要写record.setFieldValue()
i.Modules/suitecommerce/LoginRegister@2.2.0/Templates/login_register_register.tpl ii.Modules/suitecommerce/Profile@2.3.0/SuiteScript/Profile.Model.js
<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>
&#13;
你可以在get函数中看到各种字段值,将你的自定义字段值放在那里
this.fields = this.fields || ['isperson', 'email', 'internalid', 'name', 'overduebalance', 'phoneinfo', 'companyname', 'firstname', 'lastname', 'middlename', 'custentity_gender_field', 'emailsubscribe', 'campaignsubscriptions', 'paymentterms', 'creditlimit', 'balance', 'creditholdoverride'];
我在这里错过了一件事,你需要在
中做出改变Account@2.2.0/SuiteScript/Account.Model.js以及此模型中的
register: function (user_data)
{
}
和
中的自定义字段ModelsInit.session.registerCustomer(
{
custentity_gender_field:user_data.custentity_gender_field
});
那是......