how to add the email address from website to netsuite custom records with checking the validation

To add the email address from the website to Netsuite we need to create a custom records and we need to store the value in custom records by help of suite script

Fs file :


define(
    'JJ.orderoffer.orderoffer'
,   [
    'Facets.Browse.View','JJ.orderoffer.orderoffer.View'
    ]
,   function (
    FacetsBrowseView,PromotionpopupView
    )
{
    'use strict';


    return  {
        mountToApp: function mountToApp (container)
        {
            
            _.extend(FacetsBrowseView.prototype, {
                initialize:_.wrap(FacetsBrowseView.prototype.initialize,function(fn){
                    fn.apply(this,_.toArray(arguments).slice(1));
                    console.log('thisss',this);
                    this.on('afterViewRender', this.showPopupModel, this);
                }),
                showPopupModel:function () {
                    //var showPopupPLP = cookie.get("showPopupPLP");
                    //  if (showPopupPLP !== true && showPopupPLP !== "true") {
                        console.log('thisssshow',this);
                        let view = new PromotionpopupView();
                        view.useLayoutError = true;
                        container.getLayout().showInModal(view);
                //      cookie.set("showPopupPLP", true, { expires: null });
                //  }
            },
        });
        }
    };
});

Model file:

// Model.js
// -----------------------
// @module Case
define("JJ.orderoffer.orderoffer.Model", ["Backbone", "Utils"], function(
    Backbone,
    Utils
) {
    "use strict";


    // @class Case.Fields.Model @extends Backbone.Model
    return Backbone.Model.extend({


        
        //@property {String} urlRoot
        urlRoot: Utils.getAbsoluteUrl(
            getExtensionAssetsPath(
                "services/orderoffer.Service.ss"
            )
        )
        
});
});

view file

// @module JJ.orderoffer.orderoffer
define('JJ.orderoffer.orderoffer.View'
,   [
    'jj_orderoffer_orderoffer.tpl',"JJ.orderoffer.orderoffer.Model"
    
    ,   'Backbone'
    ]
, function (
    jj_orderoffer_orderoffer_tpl,orderoffer_orderoffer_Model
    
    ,   Backbone
)
{
    'use strict';


    // @class JJ.orderoffer.orderoffer.View @extends Backbone.View
    return Backbone.View.extend({


        template: jj_orderoffer_orderoffer_tpl


    ,   initialize: function (options) {
        this.ordermodel = new orderoffer_orderoffer_Model();
        }


    ,   events: {
        'click [data-action="ooga-booga"]': 'sangiiscapitalsade'
        },
        sangiiscapitalsade :function sangiiscapitalsade() {
            let inputEmail = $('#in-modal-couponEmail').val();
            let data = {email : inputEmail}
            console.log('data',data);
            this.ordermodel.save({data: (data)}).done(function (result) {
                console.log('RES', result);
            })
            .catch(error=>{
                console.log(error);
            })
             
        }


    ,   bindings: {
        }


    ,   childViews: {


        }


        //@method getContext @return JJ.orderoffer.orderoffer.View.Context
    ,   getContext: function getContext()
        {
            //@class JJ.orderoffer.orderoffer.View.Context
            this.message = this.message || 'Hello World!!'
            return {
                message: this.message
            };
        }
    });
});

tpl file:

<div class="promocode-container">
    <div class="promocode-container-2">
        <h1 class="first-order">Get 20% Off<br>Your First Order</h1>
        <p class="email-code">Enter your email for your code.<br> plus the latest Bombas news.</p>
        <div class="email-container">
            <div class="email-label"></div>
            <input id="couponEmail" type="email" placeholder="Email address" name="email" class="inputemail" value="" required>
        </div>
        <div class="offer-button">
            <a href="" >
            <button type="submit" class="accept-offer" data-action="ooga-booga">Get My 20% Off</button></a>
        </div>
    </div>
    <button type="button" class="continue-shopping-button">Continue Shopping</button>
</div>

suite script file

js file:

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


define('JJ.orderoffer.orderoffer'
,   [
        'JJ.orderoffer.orderoffer.ServiceController',"SC.Model"
    ]
,   function (
        orderofferServiceController,SCModel
    )
{
    'use strict';
    return SCModel.extend({
        name: 'JJ.orderoffer.orderoffer',
        newcustomer: function (data) {
            console.error('suitejs',data);
            // return { success: true, message: 'Promocode is applied' }
            try {
                var firstOrderSearch = nlapiSearchRecord("customrecord_jj_first_order_offer", null,
                    [
                        ["custrecord_jj_sub_email", "is", data.email],
                        "AND",
                        ["custrecord_jj_first_order_offer", "is", "T"]
                    ],
                    [
                        new nlobjSearchColumn("name").setSort(false),
                        new nlobjSearchColumn("scriptid")
                    ]
                );
                if (firstOrderSearch && firstOrderSearch.length && firstOrderSearch !== null) {
                    return { success: false, message: 'Promocode is already applied for given email' }
                } else {
                    var firstorderRecord = nlapiCreateRecord('customrecord_jj_first_order_offer', true);
                    firstorderRecord.setFieldValue('custrecord_jj_sub_email', data.email);
                    firstorderRecord.setFieldValue('custrecord_jj_first_order_offer', 'T');
                    firstorderRecord.setFieldValue('name', data.email.split('@')[0]);
                    var recordID = nlapiSubmitRecord(firstorderRecord);
                    return { success: true, message: 'Promocode is applied' }
                }
            } catch (error) {
                console.error("Error @ " , error);
            }
        }
    })
});

controller.js

define("JJ.orderoffer.orderoffer.ServiceController",
 ["ServiceController",'JJ.orderoffer.orderoffer'], 
function(
  ServiceController ,FirstOrderOffer
) {
  "use strict";


  return ServiceController.extend({
    name: "JJ.orderoffer.orderoffer.ServiceController",


    // The values in this object are the validation needed for the current service.
    options: {
      common: {}
    },


    get: function get() {
     
    },


    post: function post() {
      try {
        console.error('this.data',this.data);
        this.data = this.request.getBody() ? JSON.parse(this.request.getBody()).data : JSON.parse('{}');
        console.error('this.dataafter',this.data);
        var response = FirstOrderOffer.newcustomer(this.data);
        console.error('responbhgg',response);
        return response
      }
      catch (e) {
        return JSON.stringify({
          success: false, message: "Error"
        })
      }
    },


    put: function put() {
      // not implemented
    },


    delete: function() {
      // not implemented
    }
  });
});

Leave a comment

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