wdrożenia PrestaShop

Nie działają zakresy cenowe. Dostępne wszystkie opcje wysyłek.

  • 3 Odpowiedzi
  • 4091 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline bogulom

  • Użytkownik
  • **
  • 25
  • 0
    • Kosmetyki z mleka
Przypadkiem dodałem testowy towar o masie 0kg i zlożyłem spore zamówienie na ok 15tys zl. Ku mojemu zdziwieniu w opcjach wysyłki pojawiły się wszystkie możliwości dostawy. Gdy zwiększyłem masę towaru to oczywiście opcje się pokurczyły, ale co zrobić gdy towar jest lekki i nie chcemy by był dostęny dla opcji wysyłki poleconym za kwotę jak na zrzutach 100zł. Nie wiem czemu to nei działa...zakresy wagowe ładnie blokują opcje wysyłki, ale zakresy cenowe nie chcą. Co jest nie tak???









Jak to naprawić??? Mam ustawione w wysyłkach by wyłączał opcję gdy wyskoczy poza zakres, ale chyba dotyczy to tylko zakresu wagowego :(

*

Offline bogulom

  • Użytkownik
  • **
  • 25
  • 0
    • Kosmetyki z mleka
Odp: Nie działają zakresy cenowe. Dostępne wszystkie opcje wysyłek.
« Odpowiedź #1 dnia: Marzec 16, 2010, 12:50:35 pm »
Nikt nic nie poradzi??? w pliku carrier.php mam taki fragment w którym trzeba pewnie pogrzebać, może ktoś mi pomoże. Mam moduł shipTOpay i pewnie on namieszał...

/**
* Get delivery prices for a given order
*
* @param floatval $orderTotal Order total to pay
* @param integer $id_zone Zone id (for customer delivery address)
* @return float Delivery price
*/
public function getDeliveryPriceByPrice($orderTotal, $id_zone)
{

if (isset(self::$priceByPrice[$this->id]))
return self::$priceByPrice[$this->id];
$result = Db::getInstance()->getRow('
SELECT d.`price`
FROM `'._DB_PREFIX_.'delivery` d
LEFT JOIN `'._DB_PREFIX_.'range_price` r ON d.`id_range_price` = r.`id_range_price`
WHERE d.`id_zone` = '.intval($id_zone).'
AND '.floatval($orderTotal).' >= r.`delimiter1`
AND '.floatval($orderTotal).' < r.`delimiter2`
AND d.`id_carrier` = '.intval($this->id).'
ORDER BY r.`delimiter1` ASC');
if (!isset($result['price']))
return $this->getMaxDeliveryPriceByPrice($id_zone);
return $result['price'];
}

static public function checkDeliveryPriceByPrice($id_carrier, $orderTotal, $id_zone)
{
$result = Db::getInstance()->getRow('
SELECT d.`price`
FROM `'._DB_PREFIX_.'delivery` d
LEFT JOIN `'._DB_PREFIX_.'range_price` r ON d.`id_range_price` = r.`id_range_price`
WHERE d.`id_zone` = '.intval($id_zone).'
AND '.floatval($orderTotal).' >= r.`delimiter1`
AND '.floatval($orderTotal).' < r.`delimiter2`
AND d.`id_carrier` = '.intval($id_carrier).'
ORDER BY r.`delimiter1` ASC');
if (!isset($result['price']))
return false;
return true;
}

public function getMaxDeliveryPriceByPrice($id_zone)
{
$result = Db::getInstance()->ExecuteS('
SELECT d.`price`
FROM `'._DB_PREFIX_.'delivery` d
INNER JOIN `'._DB_PREFIX_.'range_price` r ON d.`id_range_price` = r.`id_range_price`
WHERE d.`id_zone` = '.intval($id_zone).'
AND d.`id_carrier` = '.intval($this->id).'
ORDER BY r.`delimiter2` DESC LIMIT 1');
if (!isset($result[0]['price']))
return false;
return $result[0]['price'];
}

/**
* Get delivery prices for a given shipping method (price/weight)
*
* @param string $rangeTable Table name (price or weight)
* @return array Delivery prices
*/
public static function getDeliveryPriceByRanges($rangeTable)
{
$rangeTable = pSQL($rangeTable);
return Db::getInstance()->ExecuteS('
SELECT d.`id_'.$rangeTable.'`, d.`id_carrier`, d.`id_zone`, d.`price`
FROM `'._DB_PREFIX_.'delivery` d
LEFT JOIN `'._DB_PREFIX_.$rangeTable.'` r ON r.`id_'.$rangeTable.'` = d.`id_'.$rangeTable.'`
WHERE (d.`id_'.$rangeTable.'` IS NOT NULL AND d.`id_'.$rangeTable.'` != 0)
ORDER BY r.`delimiter1` ASC');

*

Offline drzejb

  • Nowy
  • *
  • 3
  • 0
Odp: Nie działają zakresy cenowe. Dostępne wszystkie opcje wysyłek.
« Odpowiedź #2 dnia: Czerwiec 27, 2010, 01:15:40 am »
ale masz zaznaczone ze ma wybrać zakres wagowy

*

Offline lkolodziejczyk

  • Nowy
  • *
  • 1
  • 0
Odp: Nie działają zakresy cenowe. Dostępne wszystkie opcje wysyłek.
« Odpowiedź #3 dnia: Wrzesień 09, 2010, 01:48:54 pm »
Mam podobny problem więc się podpinam.

Zasadniczo chcę ustalać cenę wysyłki na podstawie wagi produktów, ale jednocześnie chcę zablokować możliwość wyboru wysyłki Pocztą Polską dla droższych przesyłek, ze względu na brak ubezpieczenia w standardzie i dużą dopłatę do niego.

Problem w tym, że kiedy mam włączone ustalenie ceny wysyłki na podstawie zakresów wagowych to zakresy cenowe są całkowicie. Czy komuś udało się wykonać hack na Preście, który uwzględniałby zakresy cenowe i przy ich przekroczeniu wyłączał dany typ wysyłki?