Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - rellai

Страницы: [1] 2 3 4
1
есть идеи?

2
блин тогда совсем не понимаю почему это событие не вызывается?
заказ то я оформляю...и в заказы оно попадает нормально...

3
ну вот адрес доставки я взял со стандартного демодизи...
а можете сказазать где вызывается 'order-status-changed' в коде я догнать не могу...

4
вот в файле events.php
new umiEventListener('order-status-changed', 'events', 'onEmarketOrderAdded');

а вот в файле __events_handlers.php
	public function onEmarketOrderAdded(iUmiEventPoint $event) {
if ($event->getMode() == "after" && $event->getParam("old-status-id") != $event->getParam("new-status-id")) {

if ($event->getParam("new-status-id") == order::getStatusByCode('waiting') && $event->getParam("old-status-id") != order::getStatusByCode('editing')) {
$module = cmsController::getInstance()->getModule('emarket');
$order = $event->getRef("order");
$link = $module->getObjectEditLink($order->getId(), 'order');
$this->registerEvent('emarket-order-add', array($link, $order->getName()), null, $order->getId());
}
}
}

то-есть вроде все есть...
при обычном оформлении заказа все отправляется
при заказе в 1 клик нет...

5
вот функции::
		/**
* Оформление заказа в 1 клик
* @param bool $itemType
* @param bool $elementId
* @return array
* @throws publicException
*/
public function getOneClickOrder($itemType = false, $elementId = false) {
$params = array();
      $customer = customer::get();
$types = umiObjectTypesCollection::getInstance();
$form = $types->getTypeByGUID('emarket-purchase-oneclick');

$dataModule = cmsController::getInstance()->getModule('data');
$errors = $dataModule->checkRequiredFields($form->getId());
if ($errors !== true) {
throw new publicException(getLabel('error-required_one_click_list') . $dataModule->assembleErrorFields($errors));
}

$errors = $this->validOneClickInfo();

if (count($errors) > 0) {
return $errors;
}

if ($itemType && $elementId) {
$_REQUEST['no-redirect'] = 1;
$this->basket('put', 'element', $elementId);
}
$order = self::getBasketOrder();

$this->saveOneClickInfo($order);

if ($order->getTotalAmount() < 1) {
throw new publicException('%error-market-empty-basket%');
}

$order->setValue('order_date', time());
$numOrder = $order->generateNumber();
$order->setOrderStatus('waiting');
$order->commit();
$params['orderId'] = $numOrder;

return $params;
}

/**
* Валидация данных о покупателе в 1 клик
* @return array
*/
public function validOneClickInfo() {
$dataForm = getRequest('data');
$emarketOneClick = umiObjectTypesCollection::getInstance()->getTypeByGUID('emarket-purchase-oneclick');

$errors = array();
foreach ($emarketOneClick->getAllFields() as $field) {
$value = $dataForm['new'][$field->getName()];

if($restrictionId = $field->getRestrictionId()) {
$restriction = baseRestriction::get($restrictionId);
if($restriction instanceof baseRestriction) {
if($restriction instanceof iNormalizeInRestriction) {
$value = $restriction->normalizeIn($value);
}

if($restriction->validate($value) == false) {
$fieldTitle = $field->getTitle();

$errstr = getLabel('error-wrong-field-value');
$errstr .=  " \"{$fieldTitle}\" - " . $restriction->getErrorMessage();

$errors['nodes:error'][] = $errstr;
}
}
}

if (count($errors) > 0) {
return $errors;
}
}
}

/**
* Сохранение информации о покупателе, совершившем заказ в 1 клик
* @param $order
* @return array
*/
public function saveOneClickInfo($order) {
$dataForm = getRequest('data');
$objects = umiObjectsCollection::getInstance();

$emarketOneClick = umiObjectTypesCollection::getInstance()->getTypeByGUID('emarket-purchase-oneclick');
$objectId = $objects->addObject($order->getName(), $emarketOneClick->getId());
$object = $objects->getObject($objectId);
 
foreach ($emarketOneClick->getAllFields() as $field) {
$value = $dataForm['new'][$field->getName()];
$object->setValue($field->getName(), $value);
}
  $object->commit();
     
if (!customer::get()->isFilled()) {
foreach ($emarketOneClick->getAllFields() as $field) {
$value = $dataForm['new'][$field->getName()];
customer::get()->setValue($field->getName(), $value);
}
}

$order->setValue('purchaser_one_click', $objectId);
$order->commit();

return;
}

6
Спасибо :)
В общем я все сделал единственное что не приходит письмо с подтверждением заказа что нужно прописать?

8
о спасибо! попробую к себе применить

9
Еще вопрос, потребовалось модифицировать скидку: вместо скидки на корзину делать скидку на конкретные товары. код моего правила:
<?php
class countsDiscountRule extends discountRule implements orderDiscountRule {
 
  public function validateOrder(order $order) {
    $customer = customer::get();
  $personal_discount = $customer->getValue("personal_discount");
if($personal_discount=='1'){
return true;
} else {
return false;
}
  }
};
?>

но она почему то на товары каталога не распостраняется......
во первых какие бы товары каталога я не выбрал, скидка всегда применяется

во вторых скидка работает и без 1 у пользователя в соответствующей настройке

10
Доработал, чтобы человек вводил номер купона, и если он совпадает с тем что прописан в скидке человек получал ее...



12
Вот объявил эту скидку и сделал активной.
Поле параметров скидки пустое. я никаких доп полей не заводил, так как фактически она лезет в кустомер и сравнивает с 1 правильно?

Тип скидки - на заказ
Модификатор - процент от суммы
Правила валидации указал только свое.

13
<?php
class countsDiscountRule extends discountRule implements orderDiscountRule {
 
  public function validateOrder(order $order) {
    $customer = customer::get();
  $personal_discount = $customer->getValue("personal_discount");
if($personal_discount=='1'){
return true;
} else {
return false;
}
  }
};
?>

вот в таком виде скидка должна быть?

14
Вот ссылка
http://wiki.umisoft.ru/Добавление_новых_(кастомных)_полей_для_модуля_Комментарии

15
Сам реализовал.
Посмотрел в вики. как реализуется доп поле.
Единственное что доработал загрузку фотографий и в шаблоне прописал создание превьюшек, чтобы не грузились гиганского размера.

Страницы: [1] 2 3 4