Jump to content

Zmiana ilości produktu o minimalaną wartość


Recommended Posts

Witam,

mam problem związany ze zmianą ilości produktu sprzedawanego w wielopakach (wielokrotności minimalnej ilości potrzebnej do zamówienia). Czyli przy modyfikacji linii koszyka + - . Poradziłem sobie z tym w produkcie i przy używaniu + - zmienia się ta ilość o minimalną ustawiona na produkcie (plik product.js). Czyli jeśli ustawiłem minimalną na 12 sztuk to w danym produkcie skoki +- są wykonywane o 12 w dół lub górę. Nie wiem natomiast gdzie dokonać takich zmian dla linii produktu w koszyku w podsumowaniu zakupów. Tam nadal ilość zmienia się o jeden. Czy modyfikacji takiej można dokonać też z pozycji frontendu, czy trzeba zmienić coś w backendzie?

 

Zmiany w product.js:

    $(document).on('click', '.product_quantity_up', function(e){        e.preventDefault();        fieldName = $(this).data('field-qty');        var currentVal = parseInt($('input[name='+fieldName+']').val());		if (quantityAvailable > 0) {				quantityAvailableT = quantityAvailable;		} else {				quantityAvailableT = 100000000;		}    if (minimalQuantity){     !!!!!!!dodany warunek z minimalQauntity        if (!isNaN(currentVal) && currentVal < quantityAvailableT) {            $('input[name='+fieldName+']').val(currentVal +            minimalQuantity).trigger('keyup');        } else {            $('input[name='+fieldName+']').val(quantityAvailableT);        }    } else{        if (!isNaN(currentVal) && currentVal < quantityAvailableT) {            $('input[name='+fieldName+']').val(currentVal +            1).trigger('keyup');        } else {            $('input[name='+fieldName+']').val(quantityAvailableT);        }    }        });	 // The button to decrement the product value    $(document).on('click', '.product_quantity_down', function(e){        e.preventDefault();        fieldName = $(this).data('field-qty');        var currentVal = parseInt($('input[name='+fieldName+']').val());     if (minimalQuantity){     !!!!!dodany warunek  minimalQuantity        if (!isNaN(currentVal) && currentVal > 1) {            $('input[name='+fieldName+']').val(currentVal -            minimalQuantity).trigger('keyup');        } else {            $('input[name='+fieldName+']').val(minimalQuantity);        }     } else{           if (!isNaN(currentVal) && currentVal > 1) {            $('input[name='+fieldName+']').val(currentVal -            1).trigger('keyup');        } else {            $('input[name='+fieldName+']').val(minimalQuantity);        }     }       });
Edited by osinator (see edit history)
Link to comment
Share on other sites

Znalazłem rozwiązanie, trezba dokonać zmian w pliku classes/cart.php:

 

            /* Update quantity if product already exist */
            if ($result)
            {
                if ($operator == 'up')
                {
                    $sql = 'SELECT stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity
                            FROM '._DB_PREFIX_.'product p
                            '.Product::sqlStock('p', $id_product_attribute, true, $shop).'
                            WHERE p.id_product = '.$id_product;

                    $result2 = Db::getInstance()->getRow($sql);
                    $product_qty = (int)$result2['quantity'];
                    // Quantity for product pack
                    if (Pack::isPack($id_product))
                        $product_qty = Pack::getQuantity($id_product, $id_product_attribute);
                    $new_qty = (int)$result['quantity'] + (int)$quantity;
                    
          if ($minimal_quantity) --- dodany warunek
          {
            $qty = '+ '.(int)$minimal_quantity;
          }
          else
          {
            $qty = '+ '.(int)$quantity;
          }

                    if (!Product::isAvailableWhenOutOfStock((int)$result2['out_of_stock']))
                        if ($new_qty > $product_qty)
                            return false;
                }
                else if ($operator == 'down')
                {
          if ($minimal_quantity) --- dodany warunek
          {
                       $qty = '- '.(int)$minimal_quantity;
          }
          else
          {
             $qty = '- '.(int)$quantity;
          }
          
                    $new_qty = (int)$result['quantity'] - (int)$quantity;
                    if ($new_qty < $minimal_quantity && $minimal_quantity > 1)
                        return -1;
                }
                else
                    return false;

                /* Delete product from cart */
                if ($new_qty <= 0)
                    return $this->deleteProduct((int)$id_product, (int)$id_product_attribute, (int)$id_customization);
                else if ($new_qty < $minimal_quantity)
                    return -1;
                else
                    Db::getInstance()->execute('
                        UPDATE `'._DB_PREFIX_.'cart_product`
                        SET `quantity` = `quantity` '.$qty.', `date_add` = NOW()
                        WHERE `id_product` = '.(int)$id_product.
                        (!empty($id_product_attribute) ? ' AND `id_product_attribute` = '.(int)$id_product_attribute : '').'
                        AND `id_cart` = '.(int)$this->id.(Configuration::get('PS_ALLOW_MULTISHIPPING') && $this->isMultiAddressDelivery() ? ' AND `id_address_delivery` = '.(int)$id_address_delivery : '').'
                        LIMIT 1'
                    );
            }

Link to comment
Share on other sites

×
×
  • Create New...