Дек 10

При написании собственных модулей оплаты для Magento иногда приходится программно изменять статус заказа в состояние “Complete”. Для этого создается invoice и осуществляется оплата по этому инвойсу.
Рассмотрим пример активации заказа после checkout (Place Order). Для этого создадим observer на событие checkout_type_onepage_save_order_after.
В методе обсервера пишем следующее:

<?php
        $order = $observer->getEvent()->getOrder();

        if (!$order->getId()) {
            return false;
        }
        
        if (!$order->canInvoice()) {
            return false;
        }
        
        $savedQtys = array();
        $invoice = Mage::getModel(’sales/service_order’, $order)->prepareInvoice($savedQtys);
        if (!$invoice->getTotalQty()) {
            return false;
        }
        $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
        $invoice->register();

        $invoice->getOrder()->setCustomerNoteNotify(false);
        $invoice->getOrder()->setIsInProcess(true);

        $transactionSave = Mage::getModel(‘core/resource_transaction’)
            ->addObject($invoice)
            ->addObject($invoice->getOrder());

        $transactionSave->save();
?>

Таким образом order будет иметь статус Complete, а также создастся проплаченный invoice.

Следите за обновлениями

Авг 17
Magento блоги
icon1 Snowcore | icon2 Magento, MySQL | icon4 08 17th, 2010| icon31 Comment »

Много разработчиков, которые начинают изучать Magento, жалуются на нехватку документации и наглядных примеров работы с Magento. Большое количество разработчиков интересует подключение классов magento, magento валидация, как создать модуль для magento - это все стандартный набор вопросов новичков.
Я потихоньку создаю свою базу знаний по Magento и хочу поделиться с читателями списком сайтов о Magento.

Официальные источники знаний

  • Magento KnowledgeBase - недавно занимался редизайном данной части сайта, так что добро пожаловать :)
  • Magento Wiki

Сайты о Magento

Русские сайты о Magento

У кого есть что добавить - welcome to comments.
Список буду постепенно пополнять.

Июн 15

Одной из самых популярных проблем у новичков в Magento является проблема входа в админ панель Magento. Форумы насыщены постами типа “Не могу войти в админку Magento“, “Вход в админку Magento“. Я удивляюсь, но многие при установке Magento на локальный компьютер, не используют VirtualHosts, а устанавливают на localhost.
Связано это с вопросом безопасности и невозможностью установить cookie.

Есть два популярных способа решения данной проблемы:

  1. Использовать VirtualHosts, название хоста должно содержать точку
  2. Более корявый способ - внести изменения в коде

Изменения в коде лучше делать перекрытием кода в локальном codePool.
Данный пример приводится для версии Magento 1.4.
Для этого копируем файл /app/code/core/Mage/Core/Model/Session/Abstract/Varien.php в /app/code/local/Mage/Core/Model/Session/Abstract/Varien.php.
И комментруем 3 строчки в методе Mage_Core_Model_Session_Abstract_Varien::start

<?php
// session cookie params
$cookieParams = array(
    ‘lifetime’ => $cookie->getLifetime(),
    ‘path’     => $cookie->getPath(),
    /*
    ’domain’   => $cookie->getConfigDomain(),
    ’secure’   => $cookie->isSecure(),
    ’httponly’ => $cookie->getHttponly()
    */
);
?>

Как видно из примера, первый способ гораздо проще :)

Июн 9

В Magento 1.4 по умолчанию отключено отображение ошибок и exception’ов. Поэтому, часто приходится видеть вот такую надпись:

There has been an error processing your request
Exception printing is disabled by default for security reasons
Error log record number: 385579037

Отчеты об ошибках можно посмотреть в директории /var/report.

Чтобы включить отображение ошибок в Magento, нужно создать файл errors/local.xml и прописать в нем вывод ошибок на экран. Простейший пример:

<?xml version=”1.0″?>
<config>
    <skin>default</skin>
    <report>
        <action>print</action>
        <trash>delete</trash>
    </report>
</config>

Возможные опции

  • action - может иметь 2 значения: print (вывод ошибок на экран) и email - отправление ошибки на email
  • subject - тема письма отчета об ошибке
  • trash - возможны 2 значения: leave - сохраняет трейс ошибки в файл, delete - не сохраняет

Описание доступных опций для настройки отчетов об ошибках можно найти в файле errors/local.xml.sample

« Previous Entries