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
);
}
}
}
}
};
}
});
}
};
});