Оформление заказа не изменяет статус при пропуске

Я пытаюсь пропустить шаг метода доставки на одной странице оформления заказа на magento 1.9.1. У меня есть модуль для работы и пропустить / скрыть шаг, так как это не нужно. Я включил выбор метода на странице корзины.

Моя проблема в том, что моя касса состоит из 4 шагов:

  1. Платежная информация
  2. Информация о доставке
  3. Платежная информация
  4. Обзор заказа

Проблема, с которой я столкнулся, заключается в том, что после того, как клиент ввел свою платежную информацию и щелкнул адрес доставки для оплаты, он перешел к шагу 3. Однако значки прогресса не переходят в завершенное состояние для шага 2, который он пропустил. Если, например, он решает, что он хочет отправить на другой адрес на первом этапе, и переходит к шагу 2, то это меняет состояние на активное и затем завершается при переходе к шагу 3.

Я не могу понять, как я могу решить это. Пожалуйста, помогите с вашей экспертизой. Подробности файла модуля находятся ниже. Я знаю, что это связано с этим модулем, так как когда я его добавляю, прогресс не меняется. Однако, когда не активен, у меня есть шаги, работающие нормально. Надеюсь, вы, ребята, можете помочь. Спасибо

config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<JMAWD_Checkout>
<version>0.0.2</version>
</JMAWD_Checkout>
</modules>
<global>
<models>
<checkout>
<rewrite>
<type_onepage>JMAWD_Checkout_Model_Type_Onepage</type_onepage>
</rewrite>
</checkout>
</models>
<blocks>
<checkout>
<rewrite>
<onepage_shipping_method>JMAWD_Checkout_Block_Onepage_Shipping_Method</onepage_shipping_method>
</rewrite>
</checkout>
</blocks>
</global>
<frontend>
<routers>
<checkout>
<args>
<modules>
<checkoutjmawd before="Mage_Checkout">JMAWD_Checkout</checkoutjmawd>
</modules>
</args>
</checkout>
</routers>
</frontend>
</config>

OnepageController.php

  class JMAWD_Checkout_OnepageController extends Mage_Checkout_OnepageController
{
public function saveShippingAction()
{
if ($this->_expireAjax()) {
return;
}
if ($this->getRequest()->isPost()) {
$data = $this->getRequest()->getPost('shipping', array());
$customerAddressId = $this->getRequest()->getPost('shipping_address_id', false);
$result = $this->getOnepage()->saveShipping($data, $customerAddressId);
if (!isset($result['error'])) {
$result['goto_section'] = 'payment';
$result['update_section'] = array(
'name' => 'payment-method',
'html' => $this->_getPaymentMethodsHtml()
);
}
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
}
}
public function saveBillingAction()
{
if ($this->_expireAjax()) {
return;
}
if ($this->getRequest()->isPost()) {
$data = $this->getRequest()->getPost('billing', array());
$customerAddressId = $this->getRequest()->getPost('billing_address_id', false);
$result = $this->getOnepage()->saveBilling($data, $customerAddressId);
if (!isset($result['error'])) {
/* check quote for virtual */
if ($this->getOnepage()->getQuote()->isVirtual()) {
$result['goto_section'] = 'payment';
$result['update_section'] = array(
'name' => 'payment-method',
'html' => $this->_getPaymentMethodsHtml()
);
}
elseif (isset($data['use_for_shipping']) && $data['use_for_shipping'] == 1)             {
$result['goto_section'] = 'payment';
$result['update_section'] = array(
'name' => 'payment-method',
'html' => $this->_getPaymentMethodsHtml()
);
}
else {
$result['goto_section'] = 'shipping';
}
}                 $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
}
}
}

Onepage.php в папке / Model / Type

<?php
class JMAWD_Checkout_Model_Type_Onepage extends Mage_Checkout_Model_Type_Onepage
{
protected function validateOrder()
{
$helper = Mage::helper('checkout');
if ($this->getQuote()->getIsMultiShipping()) {
Mage::throwException($helper->__('Invalid checkout type.'));
}
$addressValidation = $this->getQuote()->getBillingAddress()->validate();
if ($addressValidation !== true) {
Mage::throwException($helper->__('Please check billing address information.'));
}
if (!($this->getQuote()->getPayment()->getMethod())) {
Mage::throwException($helper->__('Please select valid payment method.'));
}
}
}

Method.php из папки / Block / Onepage / Shipping

<?php
class JMAWD_Checkout_Block_Onepage_Shipping_Method extends  Mage_Checkout_Block_Onepage_Shipping_Method
{
public function isShow()
{
return false;
}
}

И, наконец, модуль XML-файл

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<JMAWD_Checkout>
<active>true</active>
<codePool>local</codePool>
</JMAWD_Checkout>
</modules>
</config>

0

Решение

Я просмотрел код, и все, казалось, работало нормально и выглядело хорошо Поэтому, чтобы добиться прогресса в изменении состояний, я использовал jquery. Так что, если кто-то находится в том же вопросе. Вы можете использовать приведенный ниже код. Просто добавлен в нижний колонтитул.

<script>
jQuery(document).ready(function(){
jQuery('#billing-buttons-container button').click(function(){
if(!jQuery('#billing:use_for_shipping_no').is(':checked')) {
jQuery('#top-opc-shipping').addClass('allow');
}
});
});
</script>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]