public function getDeliveryPrice(order $order) { $objects = umiObjectsCollection::getInstance(); $deliveryAddress = $objects->getObject($order->delivery_address); if (!$deliveryAddress) { return "Невозможно автоматически определить стоимость"; } $orderPrice = $order->getActualPrice(); $weight = 0; $items = $order->getItems(); foreach ($items as $item) { $element = $item->getItemElement(); $itemWeight = (int) $element->getValue("weight"); if ($itemWeight != 0) { $weight += $itemWeight * $item->getAmount(); } else { return "Невозможно автоматически определить стоимость"; } } $viewPost = $objects->getObject($this->object->viewpost)->getValue("identifier"); if ($viewPost == 44 || $viewPost == 45) { $weight = $weight / 1000; $departureCity = $objects->getObject($this->object->departure_city); $departureCity = $departureCity instanceof umiObject ? $departureCity->getName() : "Москва"; $city = $deliveryAddress->getValue("city"); $response = $this->calculateSumEMS($price, $departureCity, $city, $weight, $min, $max, $flag); if ($flag == 'ok') { $price = $response->price; $min = $response->term->min; $max = $response->term->max; $flag = " {$price} руб. (займет от {$min} до {$max} дней)"; } return $flag; } else { $typePost = $objects->getObject($this->object->typepost)->getValue("identifier"); $value = $this->object->setpostvalue ? ceil($order->getActualPrice()) : 0; $zip = $deliveryAddress->getValue("index"); $url = "http://www.russianpost.ru/autotarif/Autotarif.aspx?viewPost={$viewPost}&countryCode=643&typePost={$typePost}&weight={$weight}&value1={$value}&postOfficeId={$zip}"; $content = umiRemoteFileGetter::get($url); if (preg_match("/<input id=\"key\" name=\"key\" value=\"(\\d+)\"\\/>/i", $content, $match)) { $key = trim($match[1]); $content = umiRemoteFileGetter::get($url, false, array('Content-type' => 'application/x-www-form-urlencoded'), array('key' => $key)); $content = umiRemoteFileGetter::get($url); } if (preg_match("/span\\s+id=\"TarifValue\">([^<]+)<\\/span/i", $content, $match)) { $price = floatval(str_replace(",", ".", trim($match[1]))); if ($price > 0) { return $price; } elseif (preg_match("/span\\s+id=\"lblErrStr\">([^<]+)<\\/span/i", $content, $match)) { return $match[1]; } } return "Не определено. Свяжитесь с менеджером для уточнения информации."; } }
public function getDeliveryPrice(order $order) { $deliveryPrice = $this->object->price; $minOrderPrice = $this->object->order_min_price; if (is_null($minOrderPrice)) { return $deliveryPrice; } $orderPrice = $order->getActualPrice() - $order->getDeliveryPrice(); return $orderPrice < $minOrderPrice ? $deliveryPrice : 0; }
public function renderBonusPayment(order $order, $template) { list($tpl_block) = def_module::loadTemplates("emarket/payment/" . $template, 'bonus_block'); $customer = customer::get($order->getCustomerId()); $block_arr = array('bonus' => $this->formatCurrencyPrice(array('reserved_bonus' => $order->getBonusDiscount(), 'available_bonus' => $customer->bonus, 'spent_bonus' => $customer->spent_bonus, 'actual_total_price' => $order->getActualPrice()))); $block_arr['void:reserved_bonus'] = $this->parsePriceTpl($template, $this->formatCurrencyPrice(array('actual' => $order->getBonusDiscount()))); $block_arr['void:available_bonus'] = $this->parsePriceTpl($template, $this->formatCurrencyPrice(array('actual' => $customer->bonus))); $block_arr['void:spent_bonus'] = $this->parsePriceTpl($template, $this->formatCurrencyPrice(array('actual' => $customer->spent_bonus))); $block_arr['void:actual_total_price'] = $this->parsePriceTpl($template, $this->formatCurrencyPrice(array('actual' => $order->getActualPrice()))); return def_module::parseTemplate($tpl_block, $block_arr); }
public function sendManagerNotification(order $order) { $regedit = regedit::getInstance(); $cmsController = cmsController::getInstance(); $domains = domainsCollection::getInstance(); $domainId = $cmsController->getCurrentDomain()->getId(); $defaultDomainId = $domains->getDefaultDomain()->getId(); if ($regedit->getVal("//modules/emarket/manager-email/{$domainId}")) { $emails = $regedit->getVal("//modules/emarket/manager-email/{$domainId}"); $fromMail = $regedit->getVal("//modules/emarket/from-email/{$domainId}"); $fromName = $regedit->getVal("//modules/emarket/from-name/{$domainId}"); } elseif ($regedit->getVal("//modules/emarket/manager-email/{$defaultDomainId}")) { $emails = $regedit->getVal("//modules/emarket/manager-email/{$defaultDomainId}"); $fromMail = $regedit->getVal("//modules/emarket/from-email/{$defaultDomainId}"); $fromName = $regedit->getVal("//modules/emarket/from-name/{$defaultDomainId}"); } else { $emails = $regedit->getVal('//modules/emarket/manager-email'); $fromMail = $regedit->getVal("//modules/emarket/from-email"); $fromName = $regedit->getVal("//modules/emarket/from-name"); } $letter = new umiMail(); $recpCount = 0; foreach (explode(',', $emails) as $recipient) { $recipient = trim($recipient); if (strlen($recipient)) { $letter->addRecipient($recipient); $recpCount++; } } if (!$recpCount) { return; } list($template) = def_module::loadTemplatesForMail("emarket/mail/default", "neworder_notification"); try { $payment = payment::get($order->payment_id); $paymentName = $payment->name; $paymentStatus = order::getCodeByStatus($order->getPaymentStatus()); } catch (coreException $e) { $paymentName = ""; $paymentStatus = ""; } $param = array(); $param["order_id"] = $order->id; $param["order_name"] = $order->name; $param["order_number"] = $order->number; $param["payment_type"] = $paymentName; $param["payment_status"] = $paymentStatus; $param["price"] = $order->getActualPrice(); $param["domain"] = cmsController::getInstance()->getCurrentDomain()->getHost(); $content = def_module::parseTemplateForMail($template, $param); $langs = cmsController::getInstance()->langs; $letter->setFrom($fromMail, $fromName); $letter->setSubject($langs['notification-neworder-subject'] . " (#{$order->number})"); $letter->setContent($content); $letter->commit(); $letter->send(); }