set the customer subsidiary based on the domain using extension

When a user registers from AU domain, the subsidiary of the user should be set to AU

When a user registers from NZ domain, the subsidiary of the user should be set to NZ

When a user registers from US domain, the subsidiary of the user should be set to Us

JavaScript Entry point file


define(
	'JJ.CustomerRegisterByDomain.customer'
	, [
		'JJ.CustomerRegisterByDomain.customer.View', 'Utils', 'jQuery', "JJ.CustomerRegisterByDomain.customer.Model", 'LoginRegister.Register.View', 'Backbone',
		'Backbone.FormView', 'underscore', 'Profile.Model', 'Account.Register.Model'
	]
	, function (
		customerView, Utils, jQuery, Model, LoginRegisterRegisterView, Backbone, BackboneFormView, _, ProfileModel, AccountRegisterModel
	) {
		'use strict';

		return {
			mountToApp: function mountToApp(container) {
				

				/** @type {LayoutComponent} */
				var layout = container.getComponent('Layout');

				var environment = SC.ENVIRONMENT;
				var baseurl = environment.currentHostString;
				var subsidiary_value;

				if (baseurl.indexOf("usa") > -1) {
					console.log('usa');
					subsidiary_value = '7';
					//	console.log("base subsidiay", subsidiary_value);
				}
				else if (baseurl.indexOf("au") > -1) {
					console.log('au');
					subsidiary_value = '1';
				}
				else if (baseurl.indexOf("nz") > -1) {
					console.log('nz');
					subsidiary_value = '4';
				}
				//	console.log("base subsidiay", subsidiary_value);
				this.subsidiary_value = subsidiary_value;


				_.extend(LoginRegisterRegisterView.prototype, {
					events:
					{

						'submit form': 'submitForm'
					},
					bindings: {
						'[name="firstname"]': 'firstname',
						'[name="lastname"]': 'lastname',
						'[name="company"]': 'company',
						'[name="email"]': 'email',
						'[name="password"]': 'password',
						'[name="password2"]': 'password2'
					},
					submitForm: function (e) {
						e && e.preventDefault();

						//console.log("inside process register", this.subsidiary_value)
						//	console.log("this in process reg model;", this.model);
						this.model.attributes.subsidiary_value = subsidiary_value;
						//console.log("this subsidiary2", this.model.attributes.subsidiary_value);
						BackboneFormView.saveForm.apply(this, arguments);


					},



				})

			}
		};
	});

Suite Script file

// JJ.CustomerRegisterByDomain.customer.js
// Load all your starter dependencies in backend for your extension here
// ----------------

define('JJ.CustomerRegisterByDomain.customer'
	, [
		'customer.ServiceController', 'Account.Model', 'underscore', 'SC.Models.Init', 'Profile.Model',
		'LiveOrder.Model', 'Address.Model', 'CreditCard.Model', 'SiteSettings.Model', 'SC.Model', 'Application', 'Utils'
	]
	, function (
		customerServiceController, AccountModel, _, ModelsInit, Profile, LiveOrder, Address, CreditCard, SiteSettings, SCModel, Application, Utils
	) {
		'use strict';
		_.extend(AccountModel, {

			register: function (user_data) {

				try {
					var customfields = {};

					// console.log("Insiside reg in suite", user_data);
					// console.log("Insiside reg in suite2", this);

					// console.log("register subsidiary", this.subsidiary_value);
					// console.log("register  subsidary user data", user_data.subsidiary_value);
					for (var property in user_data) {
						if (property.substring(0, 10) == 'custentity') {
							customfields[property] = user_data[property];
						}
					}

					if (ModelsInit.customer.isGuest()) {
						var guest_data = ModelsInit.customer.getFieldValues();

						ModelsInit.customer.setLoginCredentials({
							internalid: guest_data.internalid,
							email: user_data.email,
							password: user_data.password
						});

						ModelsInit.session.login({
							email: user_data.email,
							password: user_data.password
						});

						if (Object.keys(customfields).length) {
							ModelsInit.customer.updateProfile({
								internalid: guest_data.internalid,
								firstname: user_data.firstname,
								lastname: user_data.lastname,
								companyname: user_data.company,
								emailsubscribe:
									user_data.emailsubscribe && user_data.emailsubscribe !== 'F'
										? 'T'
										: 'F',
								customfields: customfields
							});
						} else {
							ModelsInit.customer.updateProfile({
								internalid: guest_data.internalid,
								firstname: user_data.firstname,
								lastname: user_data.lastname,
								companyname: user_data.company,
								emailsubscribe:
									user_data.emailsubscribe && user_data.emailsubscribe !== 'F' ? 'T' : 'F',
								customfields: {
									subsidiary: user_data.subsidiary_value
								}
							});
						}
					} else {
						
						user_data.emailsubscribe =
							user_data.emailsubscribe && user_data.emailsubscribe !== 'F' ? 'T' : 'F';
						var result = ModelsInit.session.registerCustomer({
							firstname: user_data.firstname,
							lastname: user_data.lastname,
							companyname: user_data.company,
							email: user_data.email,
							password: user_data.password,
							password2: user_data.password2,
							emailsubscribe:
								user_data.emailsubscribe && user_data.emailsubscribe !== 'F' ? 'T' : 'F',

						});

						//console.log("inside update profile11", user_data.subsidiary_value);
						//	console.log("result.customerid in update profile11", result.customerid);
						ModelsInit.customer.updateProfile({
							internalid: result.customerid,
							customfields: {
								subsidiary: user_data.subsidiary_value
							}

						});

						if (Object.keys(customfields).length && result.customerid) {
							ModelsInit.customer.updateProfile({
								internalid: result.customerid,


								customfields: {
									subsidiary: user_data.subsidiary_value
								}
							});
						}
					}

					var user = Profile.get();
					user.isLoggedIn = ModelsInit.session.isLoggedIn2() ? 'T' : 'F';
					user.isRecognized = ModelsInit.session.isRecognized() ? 'T' : 'F';

					return {
						touchpoints: ModelsInit.session.getSiteSettings(['touchpoints']).touchpoints,
						user: user,
						cart: LiveOrder.get(),
						address: Address.list(),
						creditcard: CreditCard.list()
					};
				} catch (e) {
					// statements
					console.error('register-error', e);

				}

			}

		})
	});

Leave a comment

Your email address will not be published. Required fields are marked *