Passing Quantity and price values from Reorder page to mini cart

Using this method, we can Pass the Quantity and price values from Reorder page to mini cart by extending the view of add to cart button.

_.extend(ReorderItemsListView.prototype, {
                    
                    events: _.extend({}, ReorderItemsListView.prototype.events, {
                        'change [data-action="ReorderItems"]': 'updateQuantity',
                        'click #addToCartReorder': 'addToCart'
                    }),
                    addToCart: function (e) {
                        debugger
                        console.log(reorderQuantityLists);
                        var itemQuantity = this.model.attributes.item.attributes.quantity;
                        if (itemQuantity) {
                        }else{
                            itemQuantity = this.model.attributes.item.attributes.onlinecustomerprice_detail.priceschedule[0].maximumquantity;
                        }
                        console.log(this);
                        var cart = container.getComponent("Cart");
                        var internalid = this.model.attributes.item.id;
                        console.log(itemQuantity);
                        cart.addLines({
                                lines: [
                                    {
                                        quantity: itemQuantity,
                                        item: {
                                            internalid: internalid
                                        }
                                    }
                                ]
                        });
                    },
                    updateQuantity: function (e) {
                        debugger
                        const $element = this.$(e.target);
                        const quantity_input = $element.parent().parent().find('input[name="quantity"]');
                        //console.log(quantity_input, e.target.value)
                        quantity_input.val(e.target.value).trigger('change')
                    },
                    getContext: _.wrap(ReorderItemsListView.prototype.getContext, function getContext(fn) {
                        var context = fn.apply(this, _.toArray(arguments).slice(1));
                        console.log(this);
                        if (context.line.attributes.item.attributes.custitem_tag_enhc_qty_pricing) {
                            var itemQuantity = this.line.attributes.item.attributes.quantity;
                            if (itemQuantity) {
                            }else{
                                itemQuantity = this.line.attributes.item.attributes.onlinecustomerprice_detail.priceschedule[0].maximumquantity;
                            }
                            this.line.attributes.item.attributes.quantity = itemQuantity;
                            reorderQuantityLists = this;
                        }
                        var self = this;
                        var pricingSchedule = context.line.attributes.item.attributes.onlinecustomerprice_detail.priceschedule
                        
                        var quantities = [];
                        var counter = 0;
                        var quantityFromModel = 0
                        if (context.line.attributes.item.attributes.custitem_tag_enhc_qty_pricing) {
                            quantityFromModel = context.line.attributes.quantity;
                        }
                        console.log(quantityFromModel);
                        _.each(pricingSchedule, function eachScheduled(schedule) {
                            if (schedule.maximumquantity && schedule.maximumquantity <= 50000) {
                                var quantity = parseInt(schedule.maximumquantity);
                                
                                var price = quantity * (pricingSchedule[counter + 1].price * 1000);
                                price = price / 1000;
                                
                                //console.log('price ' + price);
                                //var newPrice = price.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
                                var newPrice = parseFloat(price).toFixed(2);
                                var formattedPrice = "$" + newPrice;
                                
                                //console.log('price ' + pricingSchedule[counter + 1].price, 'quantity ' + quantity + ' product ' + newPrice);
                                
                                var formattedQuantity = quantity.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
                                var dot = formattedQuantity.indexOf('.');
                                formattedQuantity = formattedQuantity.substring(0, dot);
                                
                                var customName = formattedQuantity + '- ' + formattedPrice;
                                if (quantityFromModel > 0) {
                                    if (quantityFromModel == quantity) {
                                        quantities.push({ name: customName, value: quantity, selected: true });
                                    } else {
                                        quantities.push({ name: customName, value: quantity, selected: '' });
                                    }
                                } else {
                                    quantities.push({ name: customName, value: quantity, selected: '' });
                                }
                            }
                            counter++;
                        });
                        
                        if (pricingSchedule) {
                            context.reorderQunatityPricing = true;
                        } else {
                            context.reorderQunatityPricing = false;
                        }
                        
                        context.quantities = quantities;
                        //console.log('contextCart ', context);
                        //console.log(context);
                        return context;
                    })
                });
                
                _.extend(ReorderItemsActionsAddToCartView.prototype, {
                    events: _.extend({}, ReorderItemsListView.prototype.events, {
                        
                    }),
                    
                    getContext: _.wrap(ReorderItemsActionsAddToCartView.prototype.getContext, function getContext(fn) {
                        var context = fn.apply(this, _.toArray(arguments).slice(1));
                        if (this.model.attributes.item.attributes.onlinecustomerprice_detail.priceschedule) {
                            context.quantityPricing = true;

                        }
                        return context
                    })
                });
                
                
TPL:

<div class="reorder-items-actions-add-to-cart-button-container">
	{{#if quantityPricing}}
	<button 
		id="addToCartReorder" 
		{{#if disableButtonAddToCart}} disabled {{/if}} 
		class="reorder-items-actions-add-to-cart">
		{{translate 'Add to Cart'}}	
	</button>
	{{else}}
	<button 
		data-item-id="{{itemId}}" 
		data-line-id="{{lineId}}" 
		data-parent-id="{{parentItemId}}" 
		data-item-options="{{itemOptions}}" 
		data-action="add-to-cart" 
		{{#if disableButtonAddToCart}} disabled {{/if}} 
		class="reorder-items-actions-add-to-cart">
		{{translate 'Add to Cart'}}	
	</button>
	{{/if}}
</div>

Leave a comment

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