Extension to change the quantity validation message in PDP page.


define(
	'JJ.Quantitymessage.quantitymessage'
,   [
		'JJ.Quantitymessage.quantitymessage.View','Product.Model','Cart.AddToCart.Button.View','Utils'
	]
,   function (
		quantitymessageView,ProductModel,CartAddToCartButtonView,Utils
	)
{
	'use strict';

	return  {
		mountToApp: function mountToApp (container)
		{
			// using the 'Layout' component we add a new child view inside the 'Header' existing view 
			// (there will be a DOM element with the HTML attribute data-view="Header.Logo")
			// more documentation of the Extensibility API in
			// https://system.netsuite.com/help/helpcenter/en_US/APIs/SuiteCommerce/Extensibility/Frontend/index.html
			
			/** @type {LayoutComponent} */
			// var layout = container.getComponent('Layout');
			
			// if(layout)
			// {
			// 	layout.addChildView('Header.Logo', function() { 
			// 		return new quantitymessageView({ container: container });
			// 	});
			// }

			   _.extend(ProductModel.prototype,{




                    validation: {
                        quantity: {
                            fn: function quantityValidator(new_quantity) {
                            	console.log("ddsdfgsdg");
                                const current_quantity = parseInt(new_quantity, 10);
                                const maximum_quantity = this.getItem().get('_maximumQuantity');
                                const minimum_quantity = this.getItem().get('_minimumQuantity');
                                let item_quantity_in_cart = this._getItemQuantityInCart();

                                if (
                                    !_.isNumber(current_quantity) ||
                                    _.isNaN(current_quantity) ||
                                    current_quantity < 1
                                ) {
                                    return Utils.translate('Invalid quantity value');
                                }
                                if (typeof item_quantity_in_cart === 'string') {
                                    item_quantity_in_cart = parseInt(item_quantity_in_cart, 10);
                                }
                                if (item_quantity_in_cart + current_quantity < minimum_quantity) {
                                    return Utils.translate(
                                        'This is below this products minimum order quantity. Please add $(0) or more of this item',
                                        minimum_quantity
                                    );
                                }
                                if (
                                    maximum_quantity &&
                                    item_quantity_in_cart + current_quantity > maximum_quantity
                                ) {
                                    return Utils.translate(
                                        'This is below this products minimum order quantity. Please add $(0) or less of this item',
                                        maximum_quantity - item_quantity_in_cart
                                    );
                                }
                            }
                        }

                    }

                }),


			   _.extend(CartAddToCartButtonView.prototype,{
			     getAddToCartValidators: function getAddToCartValidators() {

        const self = this;

        return {
            quantity: {
                fn: function() {
                    const line_on_cart = self.cart.findLine(self.model);
                    const quantity = self.model.get('quantity');
                    const minimum_quantity = self.model.getItem().get('_minimumQuantity') || 1;
                    let maximum_quantity = self.model.getItem().get('_maximumQuantity');

                    if (!_.isNumber(quantity) || _.isNaN(quantity) || quantity < 1) {
                        return Utils.translate('Invalid quantity value');
                    }

                    if (!line_on_cart && quantity < minimum_quantity) {
                        return Utils.translate(
                            'This is below this products minimum order quantity. Please add $(0) or less of this item',
                            minimum_quantity
                        );
                    }

                    if (maximum_quantity) {
                        maximum_quantity = !line_on_cart
                            ? maximum_quantity
                            : maximum_quantity - line_on_cart.get('quantity');

                        if (quantity > maximum_quantity) {
                            return Utils.translate(
                                'This is below this products minimum order quantity. Please add $(0) or less of this item',
                                maximum_quantity
                            );
                        }
                    }

                }
            }
        };
    }
});




		}
	};
});

Leave a comment

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