自定义用户注册:如何将性别写入客户记录

时间:2017-03-17 05:11:46

标签: netsuite suitescript suitecommerce

我的用户注册表单包含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()
    };
}

1 个答案:

答案 0 :(得分:1)

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

  1. 第一步是从Customization创建自定义实体字段 - >实体字段 - >新
  2. 将实体字段应用于客户,允许对字段进行编辑访问并保存。
  3. 从那里复制实体ID,在这种情况下说' custentity_gender_field'
  4. 您需要覆盖以下两个文件,如果您不知道提出单独的问题,我会在那里回复。
  5. i.Modules/suitecommerce/LoginRegister@2.2.0/Templates/login_register_register.tpl  ii.Modules/suitecommerce/Profile@2.3.0/SuiteScript/Profile.Model.js

    1. 转到第一个文件,在下面的代码中写下你需要放置性别的地方
    2. 
      
      <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;
      &#13;
      &#13;

      1. 然后转到第二个文件,即Profile.Model.js
      2. 你可以在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. 部署代码并在用户角色下进行测试 - &gt;管理用户
        2. 我在这里错过了一件事,你需要在

          中做出改变

          Account@2.2.0/SuiteScript/Account.Model.js以及此模型中的

          register: function (user_data)
          {
          
          }
          

          中的自定义字段
          ModelsInit.session.registerCustomer(
          { 
              custentity_gender_field:user_data.custentity_gender_field
          });
          

          那是......