1
Настройка системы и модулей / Re:Заказа в 1 клик
« : 30 Июня 2014, 11:26:49 »
есть идеи?
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
new umiEventListener('order-status-changed', 'events', 'onEmarketOrderAdded');
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 клик
* @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;
}
<?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;
}
}
};
?>
<?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;
}
}
};
?>