Email Subscription for Non-Acc Holders

Email Subscription for not log-in customers

SUITE SCRIPT
    return SCModel.extend({
        getcustomer: function(details) {
            try {
                var emailid = details.emailid;
                console.log('details.listid', emailid)

                var customerSearch = nlapiSearchRecord("customer", null,
                    [
                        ["email", "is", emailid]
                    ],
                    [
                        new nlobjSearchColumn("entityid").setSort(false),
                        new nlobjSearchColumn("altname"),
                        new nlobjSearchColumn("email"),
                        new nlobjSearchColumn("subscriptionstatus"),
                        new nlobjSearchColumn("subscription"),
                        new nlobjSearchColumn("internalid")
                    ]
                );
                var sublist = []
                var customer = []
                if (customerSearch) {
                    for (var i = 0; i < customerSearch.length; i++) {
                        var result = customerSearch[i];
                        sublist.push({
                            subscription: result.getText("subscription"),
                            status: result.getValue("subscriptionstatus"),
                        });
                    }
                    var result = customerSearch[0];
                    customer.push({
                        entityid: result.getValue("altname"),
                        email: result.getValue("email"),
                        subscriptions: sublist,
                        internalid: result.getValue("internalid"),

                    });
                    console.log('customer', customer)
                } else {
                    customer = this.CreateLead({ emailid: emailid })
                }
                return customer
            } catch (e) {
                console.log(e);
            }
        },
        CreateLead: function(data) {
            console.error('In@Model: Forms', JSON.stringify(data))
            try {
                data.firstname = "Guest"
                data.lastname = "Shopper"
                var firstname, lastname, company, email, comments;
                var customerRecord = nlapiCreateRecord('lead', { recordmode: 'dynamic' });
                customerRecord.setFieldValue('isperson', 'T');
                customerRecord.setFieldValue('entitystatus', 6); //LEAD-Unqualified 
                if (data.firstname) {
                    firstname = Utils.sanitizeString(data.firstname);
                    customerRecord.setFieldValue('firstname', firstname);
                }
                if (data.lastname) {
                    lastname = Utils.sanitizeString(data.lastname);
                    customerRecord.setFieldValue('lastname', lastname);
                }
                if (data.company) {
                    company = Utils.sanitizeString(data.company);
                    customerRecord.setFieldValue('companyname', company);
                }
                if (data.emailid) {
                    email = Utils.sanitizeString(data.emailid);
                    customerRecord.setFieldValue('email', email);
                }
                customerRecord.setFieldValue('phone', 1234567890);
                customerRecord.setFieldValue('subsidiary', 2);​

                var custid = nlapiSubmitRecord(customerRecord);
                console.log('custid', custid)

                var customerSearch = nlapiSearchRecord("customer", null,
                    [
                        ["internalidnumber", "equalto", custid]
                    ],
                    [
                        new nlobjSearchColumn("entityid").setSort(false),
                        new nlobjSearchColumn("altname"),
                        new nlobjSearchColumn("email"),
                        new nlobjSearchColumn("subscriptionstatus"),
                        new nlobjSearchColumn("subscription")
                    ]
                );
                var sublist = []
                var customer = []

                if (customerSearch) {
                    for (var i = 0; i < customerSearch.length; i++) {
                        var result = customerSearch[i];
                        sublist.push({
                            subscription: result.getText("subscription"),
                            status: result.getValue("subscriptionstatus"),
                        });
                    }
                    var result = customerSearch[0];
                    customer.push({
                        entityid: result.getValue("altname"),
                        email: result.getValue("email"),
                        subscriptions: sublist,
                        internalid: custid,

                    });
                    console.log('customer', customer)

                    return customer
                }
            } catch (e) {
                // statements
                console.error('err@creatinglead', e);
                return {
                    status: 500,
                    code: 'ERR_FORM',
                    message: 'There was an error'
                }
            }

        },
        updatesub: function(data) {
            try {
                var subsc = JSON.parse(data.subs)

                var record = nlapiLoadRecord('customer', data.internalid)
                record.setFieldValue('globalsubscriptionstatus', 1);
                record.setLineItemValue('subscriptions', 'subscribed', 4, "F");
                record.setLineItemValue('subscriptions', 'subscribed', 1, "F");
                record.setLineItemValue('subscriptions', 'subscribed', 3, "F");
                record.setLineItemValue('subscriptions', 'subscribed', 2, "F");

                if (subsc.farmmails == "T") {
                    record.setLineItemValue('subscriptions', 'subscribed', 4, "T");
                }
                if (subsc.equinemails == "T") {
                    record.setLineItemValue('subscriptions', 'subscribed', 1, "T");
                }
                if (subsc.petmails == "T") {
                    record.setLineItemValue('subscriptions', 'subscribed', 3, "T");
                }
                if (subsc.Goatmails == "T") {
                    record.setLineItemValue('subscriptions', 'subscribed', 2, "T");
                }

                nlapiSubmitRecord(record);

                return true
            } catch (e) {
                // statements
                console.log(e);
            }

        }
    });

VIEW     return Backbone.View.extend({

        template: cd_emailsubnonaccuser_emailsubnonaccuser_tpl

            ,
        initialize: function(options) {
                this.application = options.application
                this.model = new CDEmailSubNonAccUserModel();
            }

            ,
        events: {
            'click .email_sub_button': 'getsubscription',
            // 'keypress #email': "validateemail",
            'change #email1': "validateemail",
        }

        ,
        bindings: {
            '[name="email"]': 'getsubscription'
        }

        ,
        childViews: {},
        getsubscription: function getContext() {
            var count= 0;
                var emailid = jQuery('#email1').val()
                var application = this.application
                var model = new CDEmailSubNonAccUserModel();
                var equine, ranch, pet, goat
                var subarray = []
                model.fetch({ data: { emailid: emailid } }).done(function(result) {
                    // console.log('result', result)
                    _.each(result[0].subscriptions, function(line) {
                        
                        if(count < 4){
                        if (line.subscription == "Equine Offers") {
                            equine = line.status
                            count=count+1;
                            subarray.push({ "EquineOffers": equine })
                        } else if (line.subscription == "Ranch/Livestock Offers") {
                            ranch = line.status
                            count=count+1;
                            subarray.push({ "LivestockOffers": ranch })
                        } else if (line.subscription == "Pet Offers") {
                            pet = line.status
                            count=count+1;
                            subarray.push({ "PetOffers": pet })
                        } else if (line.subscription == "Goat Offers") {
                            goat = line.status
                            count=count+1;
                            subarray.push({ "GoatOffers": goat })
                        } else {}
                    }
// console.log("count",count)
                    })
                    // console.log("subarray",subarray)
                    var internalid = result[0].internalid
                    var view = new CDEmailSubNonAccUserForm({ application: application, subarray: subarray, internalid: internalid, emailid: emailid })
                    view.showContent();

                });


            }
            //@method getContext @return CD.EmailSubNonAccUser.EmailSubNonAccUser.View.Context
            ,
        validateemail: function() {
            var email = jQuery('#email1').val()
            // console.log('email', email)
            var re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
            var valid = re.test(String(email).toLowerCase());
            // console.log('email', email)
            if (valid) {
                jQuery('.email_sub_button').prop('disabled', false);
            } else {
                jQuery('.email_sub_button').prop('disabled', true);
            }

        },
        getContext: function getContext() {}
    });

Leave a comment

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