Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Вывести сумму заказа на странице "Заказ поступил в обработку"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 2
Просмотров: 3793
Последний ответ 07 Ноября 2014, 23:46:49
от Axiomateria
Перенаправление на страницу регистрации покупателя перед оформлением заказа

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 16
Просмотров: 10083
Последний ответ 11 Марта 2013, 11:54:29
от Axiomateria
Проблемы уведомления клиента при смене статуса заказа и доставки

Автор stud_maiРаздел Шаблоны XSLT

Ответов: 7
Просмотров: 4288
Последний ответ 05 Января 2016, 00:59:01
от admin
Не суммировать скидку на товар с общей скидкой от суммы заказа

Автор smartwebРаздел Шаблоны TPL

Ответов: 3
Просмотров: 2653
Последний ответ 19 Декабря 2016, 12:29:09
от aghigay
статус заказа - с отображением цветом в списке заказов

Автор kroxaРаздел Шаблоны XSLT

Ответов: 0
Просмотров: 2394
Последний ответ 10 Ноября 2011, 16:01:14
от kroxa

0 Пользователей и 1 Гость просматривают эту тему.

*

shoto

  • ***
  • 235
  • +4/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #30 : 20 Июня 2012, 12:49:54 »
Что то я не понимаю логики.
если $deliveryId равно 27255
то запускаем сохранение адреса доставки.
Зачем?! если нам наоборот надо сохранять адрес только в том случае если выбран НЕ самовывоз.

Про решение на уровне default, там просто строка "Самовывоз" выводится на шаге "Адрес доставки".

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #31 : 20 Июня 2012, 12:52:08 »
все верно, надо исправить условие с == на != в итоге в функции public function saveinfo() надо кусок

//сохранение адреса доставки
  $addressId = getRequest('delivery-address');
  if($addressId == 'new') {
    $collection = umiObjectsCollection::getInstance();
    $types      = umiObjectTypesCollection::getInstance();
    $typeId     = $types->getBaseType("emarket", "delivery_address");
    $customer   = customer::get();
    $addressId  = $collection->addObject("Address for customer #".$customer->id, $typeId);
    $dataModule = $cmsController->getModule("data");
    if($dataModule) {
      $dataModule->saveEditedObject($addressId, true, true);
    }
    $customer->delivery_addresses = array_merge( $customer->delivery_addresses, array($addressId) );
  }
  $order->delivery_address = $addressId;


заменить на

if($deliveryId != 27255){
 //сохранение адреса доставки
  $addressId = getRequest('delivery-address');
  if($addressId == 'new') {
    $collection = umiObjectsCollection::getInstance();
    $types      = umiObjectTypesCollection::getInstance();
    $typeId     = $types->getBaseType("emarket", "delivery_address");
    $customer   = customer::get();
    $addressId  = $collection->addObject("Address for customer #".$customer->id, $typeId);
    $dataModule = $cmsController->getModule("data");
    if($dataModule) {
      $dataModule->saveEditedObject($addressId, true, true);
    }
    $customer->delivery_addresses = array_merge( $customer->delivery_addresses, array($addressId) );
  }
  $order->delivery_address = $addressId;

}

*

shoto

  • ***
  • 235
  • +4/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #32 : 20 Июня 2012, 12:56:02 »
Это я уже пробовала. и написала что не работает.
При выбранном Самовывозе, методом JS у меня не выводятся поля для заполнения адреса (они скрыты), но при этом сохраняются пустые адреса для пользователя (проверку на обязательное заполнение этих полей я убрала).

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #33 : 20 Июня 2012, 13:12:44 »
shoto, покажите код шаблонов для вывода форм для оформления заказа в один шаг и покажите код custom функций, с которым вы работаете

*

shoto

  • ***
  • 235
  • +4/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #34 : 20 Июня 2012, 13:26:35 »
<xsl:template match="/result[@method = 'fast_purchasing_xslt']">
<xsl:apply-templates select="document('udata://emarket/fast_purchasing_xslt')" mode="onstep"/>
</xsl:template>

<xsl:template match="udata[@module='emarket' and @method = 'fast_purchasing_xslt']" mode="onstep">
<form enctype="multipart/form-data" method="post" action="{$lang-prefix}/emarket/saveinfo/">

<xsl:apply-templates select="document(concat('udata://data/getEditForm/', customer/object/@id))" />

<!-- Выбор способа доставки -->
<h4>
<xsl:text>&delivery-agent;:</xsl:text>
</h4>
<div class="city">
<select class="txt" name="city" id="city-id">
<option value="">--Выберите город--</option>
<option value="5" dm="447,18628,18606,18979">Санкт-Петербург</option>
<option value="6" dm="18627,18979,18607,18633">Пригород Санкт-Петербурга и ЛО</option>
<option value="4" dm="18607,18633">Другой город</option>
</select>
</div>
<div class="sposob_dostavki">
<dl id="delivery-id">
<xsl:apply-templates select="delivery_choose/items" mode="delivery-choose" />

</dl>
<script type="text/javascript">
$(function() {
$("#city-id").change(function() {
$("#delivery-id input").attr("disabled", true);
$("#delivery-id dd").addClass("disabled");
$("#delivery-address").hide();

if (dm = $(":selected", this).attr("dm")) {
var validDeliveries = dm.split(",");

for (x in validDeliveries) {
$("#delivery-" + validDeliveries[x]).attr("disabled", false);
$("#delivery-" + validDeliveries[x] + "-description").removeClass("disabled");
}
}
});

});
</script>
</div>
<!-- /end Выбор способа доставки -->
<!-- Выбор адреса доставки -->
<div class="delivery_block">
<h4>
<xsl:text>&delivery;:</xsl:text>
</h4>
<div class="dostavka">
<xsl:apply-templates select="delivery/items" mode="delivery-address" />
<script>
jQuery('#delivery_address').submit(function(){
var input = jQuery('input:radio:checked', this);
if (typeof input.val() == 'undefined' || input.val() == 'new') {
if (typeof input.val() == 'undefined') {
jQuery('input:radio[value=new]', this).attr('checked','checked');
}
return site.forms.data.check(this);
}
});
</script>
</div>
</div>
<!-- /end Выбор адреса доставки -->
<!-- Способ оплаты-->
<h4>
<xsl:text>&payment-type;:</xsl:text>
</h4>
<div class="oplata">
<xsl:apply-templates select="payment/items/item" mode="payment" />
</div>
<div style="text-align:center;">
<input type="submit" class="button" value="&kupit;" />
</div>
<!-- /end Способ оплаты-->
</form>
</xsl:template>

кастом функции:
public function fast_purchasing_xslt(){
  $order = $this->getBasketOrder();
  $orderId = $order->id;
  $customer = selector::get('object')->id($order->customer_id);
 
  $result = array(
  'attribute:id' => ($orderId),
  'xlink:href' => ('uobject://' . $orderId));
 
  if(!permissionsCollection::getInstance()->isAuth()){
    $result['customer'] = array('full:object' => $customer);
  }
 
    $result['delivery'] = $this->customerDeliveryList('notemplate');
  $result['delivery_choose'] = $this->renderDeliveryList($order, 'notemplate');
  $result['payment'] = $this->renderPaymentsList_custom($order, 'notemplate');
  return  $result;
}
 
public function renderPaymentsList_custom(order $order, $template) {
  list($tpl_block, $tpl_item) = def_module::loadTemplates("./tpls/emarket/payment/{$template}.tpl", 'payment_block', 'payment_item');
 
  $payementIds = payment::getList(); $items_arr = array();
  $currentPaymentId = $order->getValue('payment_id');
 
  foreach($payementIds as $paymentId) {
    $payment = payment::get($paymentId);
    if($payment->validate($order) == false) continue;
    $paymentObject = $payment->getObject();
    $paymentTypeId = $paymentObject->getValue('payment_type_id');
    $paymentTypeName = umiObjectsCollection::getInstance()->getObject($paymentTypeId)->getValue('class_name');
 
    if( $paymentTypeName == 'social') continue;
 
    $item_arr = array(
    'attribute:id' => $paymentObject->id,
    'attribute:name' => $paymentObject->name,
    'attribute:type-name' => $paymentTypeName,
    'xlink:href' => $paymentObject->xlink
    );
 
    if($paymentId == $currentPaymentId) {
      $item_arr['attribute:active'] = 'active';
    }
 
    $items_arr[] = def_module::parseTemplate($tpl_item, $item_arr, false, $paymentObject->id);
  }
 
    return array('items' => array('nodes:item' => $items_arr));
 
}
 
 
public function saveinfo(){
  $order = $this->getBasketOrder(false);
  //сохранение регистрационных данных
  $cmsController = cmsController::getInstance();
  $data = $cmsController->getModule('data');
  $data->saveEditedObject(customer::get()->id, false, true);
 
  //сохранение способа доставки
  $deliveryId = getRequest('delivery-id');
  if($deliveryId){
    $delivery = delivery::get($deliveryId);
    $deliveryPrice = (float) $delivery->getDeliveryPrice($order);
    $order->setValue('delivery_id', $deliveryId);
    $order->setValue('delivery_price', $deliveryPrice);
  }
  //сохранение адреса доставки
  if($deliveryId != 18979) {
  $addressId = getRequest('delivery-address');
  if($addressId == 'new') {
    $collection = umiObjectsCollection::getInstance();
    $types      = umiObjectTypesCollection::getInstance();
    $typeId     = $types->getBaseType("emarket", "delivery_address");
    $customer   = customer::get();
    $addressId  = $collection->addObject("Address for customer #".$customer->id, $typeId);
    $dataModule = $cmsController->getModule("data");
    if($dataModule) {
      $dataModule->saveEditedObject($addressId, true, true);
    }
    $customer->delivery_addresses = array_merge( $customer->delivery_addresses, array($addressId) );
  }
  $order->delivery_address = $addressId;
}
  //сохранение способа оплаты и редирект на итоговую страницу, либо страницу подтверждения оплаты.
  $order->setValue('payment_id', getRequest('payment-id'));
  $order->refresh();
 
  $paymentId = getRequest('payment-id');
  if(!$paymentId) {
    $this->errorNewMessage(getLabel('error-emarket-choose-payment'));
    $this->errorPanic();
  }
  $payment = payment::get($paymentId);
 
  if($payment instanceof payment) {
    $paymentName = $payment->getCodeName();
    $url = "{$this->pre_lang}/".cmsController::getInstance()->getUrlPrefix()."emarket/purchase/payment/{$paymentName}/";
  } else {
    $url = "{$this->pre_lang}/".cmsController::getInstance()->getUrlPrefix()."emarket/cart/";
  }
  $this->redirect($url);
}

*

bosya

  • *
  • 25
  • +1/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #35 : 20 Июня 2012, 16:21:27 »
shoto а у Вас заказ создается?
столкнулся с проблемой на 2.8.5.2 на последнем шаге редиректит
emarket/purchase/payment/{$paymentName} и молчок..
доставка курьером или самовывозом,  оплата курьером.

*

shoto

  • ***
  • 235
  • +4/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #36 : 20 Июня 2012, 16:25:49 »
bosya, у меня заказ создается. Все оформляется, только и дополнительный (пустой)адрес доставки создается, если указан Самовывоз. либо если поставлено значение "поле обязательное" то ругается что надо заполнить поля Адреса.
и у меня все шаги на одной странице /emarket/fast_purchasing_xslt/
« Последнее редактирование: 20 Июня 2012, 16:27:49 от shoto »

*

bosya

  • *
  • 25
  • +1/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #37 : 20 Июня 2012, 16:26:44 »
а у Вас какая версия юми?

*

shoto

  • ***
  • 235
  • +4/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #38 : 20 Июня 2012, 16:46:27 »
а у Вас какая версия юми?
2.8.5.1

*

bosya

  • *
  • 25
  • +1/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #39 : 20 Июня 2012, 17:03:59 »
Странно, может из за бонусов что то изменили в системе оформления заказа.все устанавливает и адрес и способ оплаты, но не хочет добавлять заказ

*

bosya

  • *
  • 25
  • +1/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #40 : 21 Июня 2012, 10:44:30 »
И снова вопрос снимается...сам дурак...Спасибо)

*

shoto

  • ***
  • 235
  • +4/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #41 : 21 Июня 2012, 12:22:02 »
И снова вопрос снимается...сам дурак...Спасибо)
т.е. и в новой версии все нормально работает?
а что было?

*

shoto

  • ***
  • 235
  • +4/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #42 : 29 Июня 2012, 11:26:21 »
Хэлп! что же не так с моим скриптом что у меня создается адрес с пустыми полями?!

*

ktoxot

  • *
  • 2
  • +0/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #43 : 16 Июля 2012, 16:07:27 »
Шаблоны оформил, но заказ не добавляется и все останавливается на моменте редиректа на страницу подтверждения оплаты. Когда оплата не активирована в системе управления выводит ошибку.

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Оформление заказа за один шаг.
« Ответ #44 : 16 Июля 2012, 21:27:47 »
Хэлп! что же не так с моим скриптом что у меня создается адрес с пустыми полями?!
На первый взгляд у админа в примере я вижу строчку
if($deliveryId != 27255){
а в вашем коде я такого условия не вижу. Может, потому и создается пустой адрес?