/** * Get the Ranges for this carrier * * @return array */ public function getRange() { if ($this->getRangeBehaviour() == "weight") { $list = new Carrier\RangeWeight\Listing(); } else { $list = new Carrier\RangeWeight\Listing(); } $list->setCondition("carrier=?", array($this->getId())); $list->load(); $data = $list->getData(); $returnData = array(); foreach ($data as $entry) { $price = Carrier\DeliveryPrice::getByCarrierAndRange($this->getId(), $entry->getId()); $returnData[] = array("id" => $entry->getId(), "delimiter1" => $entry->getDelimiter1(), "delimiter2" => $entry->getDelimiter2(), "price" => $price ? $price->getPrice() : 0); } return $returnData; }
public function saveAction() { $id = $this->getParam("id"); $data = $this->getParam("data"); $carrier = Carrier::getById($id); if ($data && $carrier instanceof Carrier) { $data = \Zend_Json::decode($this->getParam("data")); $carrier->setValues($data['settings']); $carrier->save(); $ranges = $data['range']; if (is_array($ranges)) { foreach ($ranges as $range) { $rangeObject = null; $deliveryPriceObject = null; if ($range['id']) { $rangeObject = Carrier\RangeWeight::getById($range['id']); } if (is_null($rangeObject)) { $rangeObject = new Carrier\RangeWeight(); } $rangeObject->setCarrier($id); $rangeObject->setDelimiter1($range['delimiter1']); $rangeObject->setDelimiter2($range['delimiter2']); $rangeObject->save(); $deliveryPriceObject = Carrier\DeliveryPrice::getByCarrierAndRange($id, $rangeObject->getId()); if (is_null($deliveryPriceObject)) { $deliveryPriceObject = new Carrier\DeliveryPrice(); } $deliveryPriceObject->setRange($rangeObject->getId()); $deliveryPriceObject->setPrice($range['price']); $deliveryPriceObject->setCarrier($id); $deliveryPriceObject->setRangeType($carrier->getShippingMethod()); $deliveryPriceObject->save(); } } $this->_helper->json(array("success" => true, "carrier" => $carrier)); } else { $this->_helper->json(array("success" => false)); } }