Tip- 27: Add More Customer Information in NetSuite SuiteCommerce Website Checkout Page

Hello friends,

There was a requirement, where client wanted us to add some more Customer Information fields in website checkout in Suite Commerce.

But as we all know, we can’t add any customer custom fields in Checkout page. Now what????

I came up with an idea, where we can add custom Transaction fields in Checkout page where each custom Transaction field will have respective custom Customer field. So, when we enter value in custom Transaction field in Checkout page and create Sales Order, a script will be developed which will take custom transaction field value from the Sales Order and save it in respective custom fields in Customer.

Now Let’s see the steps to achieve this.

 

Step #1: Create Custom Transaction Fields:

Field 1: Customer Additional Info 1 (custbody_customer_additional_info1)

Field 2: Customer Additional Info 2 (custbody_customer_additional_info2)

Field 3: Customer Additional Info 3 (custbody_customer_additional_info3)

Field 4: Customer Additional Info 4 (custbody_customer_additional_info4)

 

Step #2: Create Custom Customer Fields:

Field 1: Customer Additional Info 1 (custentity_customer_additional_info1)

Field 2: Customer Additional Info 2 (custentity_customer_additional_info2)

Field 3: Customer Additional Info 3 (custentity_customer_additional_info3)

Field 4: Customer Additional Info 4 (custentity_customer_additional_info4)

 

Step #3: Add 4 Custom Transaction fields in Website Configuration:

Go To Setup -> Suite Commerce Advanced -> Configuration

Under Advanced tab, click Custom Fields. Now add all 4 custom transaction fields as below:

config

Now save the Configuration.

Step #4: Add custom field in Theme to show it in Checkout Page:

Decide on which theme module, you want to add those custom Transaction fields in Theme.

Then add those custom fields as below in the selected module template.

For reference I have decided to add it in OrderWizard.Module.CartSummary@sco-2018.1.0 module in template “order_wizard_cart_summary.tpl”.

{{#if model.__customFieldsMetadata.custbody_customer_additional_info1}}
<br/>


{{model.__customFieldsMetadata.custbody_customer_additional_info1.label}}:



{{model.__customFieldsMetadata.custbody_customer_additional_info2.label}}:



{{model.__customFieldsMetadata.custbody_customer_additional_info3.label}}:



{{model.__customFieldsMetadata.custbody_customer_additional_info4.label}}:


{{/if}}

Now deploy your theme with this customization and activate this theme.

Refresh your Website and you should see these custom fields in your website.

Step #5: Create Script to set Customer Additional Info from Sales Order:

Now the very last thing to do. Create a User Event script on Sales Order.

function AutoMapCustomerInfo(context) {
var recObj = context.newRecord;
var custAddInfo1 = recObj.getValue(“custbody_customer_additional_info1”);
var custAddInfo2 = recObj.getValue(“custbody_customer_additional_info2”);
var custAddInfo3 = recObj.getValue(“custbody_customer_additional_info3”);
var custAddInfo4 = recObj.getValue(“custbody_customer_additional_info4”);
var customerId = recObj.getValue(“entity”);

if(customerId){
var objCustomer = record.load({
type: “customer”,
id: customerId,
isDynamic: true
});

objCustomer.setValue(“custentity_customer_additional_info1”, custAddInfo1);
objCustomer.setValue(“custentity_customer_additional_info2”, custAddInfo2);
objCustomer.setValue(“custentity_customer_additional_info3”, custAddInfo3);
objCustomer.setValue(“custentity_customer_additional_info4”, custAddInfo4);
var recordId = objCustomer.save({
enableSourcing: true,
ignoreMandatoryFields: true
});
log.debug(“Customer info updated”, recordId);
}

This script will fetch custom Transaction information and will set those values in Customer’s custom fields.

Hope this tip will help you when you have similar kind of requirements.

 

Regards,

Asha