Модуль Commerce Receipt - это платёжный модуль для самого перспективного на данный момент e-commerce решения для CMS Drupal - Drupal Commerce
Модуль занимается тем, что выводит клиенту при оформлении заказа заполненную банковскую квитанцию стандартного (или нестандартного) образца, которую клиент может немедленно употребить, т.е распечатать -> поставить подпись -> отнести кассиру в банк. Это удобно.
Также, впоследствии клиент и админ может просматривать свои или чужие квитанции в формате "квитанция"
Квитанции построены на простейших HTML шаблонах. По дефолту есть 2 готовых шаблона (см. папочку templates в директории модуля), а именно: в российском стандарте ПД-4 и украинском, без маркировки.
Значения в шаблонах подставляются через стандартные токены, кои модуль сам себе определяет.
Установка и настройка:
1) Включаем обыкновенно
2) admin/commerce/config/payment-methods, включаем наш модуль
3) "Редактировать" -> Секция "Действия" -> "Редактировать"
4) Заполняем поля, которые говорят сами за себя
По конвертации валют. По умолчанию в Коммерце все валюты имеют ратио 1, т.е равны доллару, т.к лично сам Коммерц не знает откуда брать курс. К этому нужно относиться с пониманием.
Ратио можно поменять через АПИ или модуль, но это уже другая история. Если вы сами устанавливаете своё ратио обмена, данная опция пересчёта должна работать.
Модуль сделался в приступе энтузиазма, быстро и слабо тестировался, так что возможно его глупое поведение. Сообщите об этом, если не влом.
-----------------------------------------
Ближайшие аналоги данного модуля:
1) uc_receipt от великого glu 2006. Скачать можно где-то здесь на форуме. Под морально устаревший Уберкарт 2+ несколько странный функционал (писался давным давно по моему ТЗ)
2) Commerce Bank Transfer - совершенно дубовый модуль, тупо выводящий реквизиты банка в панель чекаута.
Страница проекта http://drupal.org/sandbox/ymakux/1887390 качать отсюда http://drupalcode.org/sandbox/ymakux/1887390.git наивысший snapshot
Вложение | Размер |
---|---|
commerce_receipt.zip | 20.7 КБ |
Комментарии
Хороший модуль, очень нужен.
Есть проблема с кодировкой при выводе шаблона.
Скриншот прилагаю.
И еще. ИНН нужно указывать банка или предприятия, которое продает в этом магазине?
UPD. У меня на сайте кодировка UTF-8. А в сгенерированном шаблоне кодировка не проставлена. Может, поможет решить проблему.
Странно, у меня всё ок, шаблоны в UTF без BOM.
ИНН как я понимаю получателя.
Вставка этого в head шаблонов помогла браузеру распознать кодировку.
Пожалуйста, вставьте её в исходники. Думаю, будет полезно.
Словил такую ошибку
mod_fcgid: stderr: PHP Fatal error: Cannot use string offset as an array in /sites/all/modules/commerce_receipt/commerce_receipt.module on line 196, referer: http://******.ru/checkout/1/review
В указанной строке имеем
<?php$transaction->status = $settings['status']['#default_value'];?>
Насколько я понял, $settings['status'] в моем случае — строка.
Установлен commerce kickstart, больше ничего не курочил пока.
Постараюсь исправить сегодня
Обновил, пробуйте
Спасибо, прежняя ошибка не появлялась.
Обнаружилась еще одна проблема. Две транзакции (ниже), первая с использованием commerce_receipt, вторая с ипользованием commerce_cheque (для примера). В случае receipt [status] => пусто, отсюда следующая беда — если я редактирую view сommerce_orders и добавляю в список выводимых значений order balance, то получаю ошибку
Notice: Undefined index: in commerce_payment_order_balance() (line 1001 of /var/www/vhosts/edemdv.ru/httpdocs/profiles/commerce_kickstart/modules/commerce/modules/payment/commerce_payment.module).
Строчка 1001 такая
if ($transaction_statuses[$transaction->status]['total']) { ...
Поскольку $transaction->status на этот момент пуст , то отсюда и ошибка. Насколько я понял, status обязан быть, причем один из предопределенных — pending / success/ failure.
Попутно вопрос почти философского толка. Как правильно сделать оплату по квитанции, Cash on Delivery и прочие оффлайновые способы платежа, включая store pick-up? Фактически, никакой транзакции нет и не предполагается, как бы, пока оператор не вколотит платеж руками по факту получения денег.
Вывод print_r($transaction) перед строкой 1001
(
[revision_id] => 3
[revision_uid] => 2
[remote_id] =>
[message] =>
[message_variables] => Array
(
)
[amount] => 4000
[currency_code] => USD
[status] =>
[remote_status] =>
[log] =>
[revision_timestamp] => 1315200992
[data] =>
[transaction_id] => 3
[uid] => 2
[order_id] => 3
[payment_method] => commerce_receipt
[instance_id] => commerce_receipt|commerce_payment_commerce_receipt
[payload] => Array
(
)
[created] => 1315200992
[changed] => 1315200992
[rdf_mapping] => Array
(
)
)
stdClass Object
(
[revision_id] => 2
[revision_uid] => 1
[remote_id] =>
[message] => This order has been paid.
[message_variables] => Array
(
)
[amount] => 3000
[currency_code] => USD
[status] => success
[remote_status] =>
[log] =>
[revision_timestamp] => 1315200895
[data] =>
[transaction_id] => 2
[uid] => 1
[order_id] => 2
[payment_method] => commerce_cheque
[instance_id] => commerce_cheque|commerce_payment_commerce_cheque
[payload] => Array
(
)
[created] => 1315200895
[changed] => 1315200895
[rdf_mapping] => Array
(
)
)
Вдогонку из commerce_payment.module
// Pending is used when a transaction has been initialized but is still awaiting
// resolution; e.g. a CC authorization awaiting capture or an e-check payment
// pending at the payment provider.
define('COMMERCE_PAYMENT_STATUS_PENDING', 'pending');
// Success is used when a transaction has completed resulting in money being
// transferred from the customer to the store or vice versa.
define('COMMERCE_PAYMENT_STATUS_SUCCESS', 'success');
// Failure is used when a transaction cannot be completed or is rejected.
define('COMMERCE_PAYMENT_STATUS_FAILURE', 'failure');
Можно добавить функцию отправки этой офрмы на e-mail пользователя ?
Да, можно. Извините, но не прямо сейчас. недельки через три я планирую зависнуть и поработать над этим и другими ошибками/пожеланиями обозначенными выше
Модуль теперь живёт на Друпал орг (пока в песочнице)
http://drupal.org/sandbox/openstore/1248784
Все багрепорты просьба постить туда. качать новое тоже оттуда.
Будет полноценный проект
Хорошая новость!
При оформлении заказа выдает следующее сообщение:
Notice: Undefined property: stdClass::$commerce_customer_shipping в функции commerce_receipt_tokens() (строка 131 в файле Z:\home\commerce\www\sites\all\modules\commerce_receipt\commerce_receipt.tokens.inc).
Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! в функции DrupalDefaultEntityController->load() (строка 178 в файле Z:\home\commerce\www\includes\entity.inc).
а еще думаю не лишнем было бы не выводить кнопку "Распечатать квитанцию" в тех заказах, для которых выбран другой способ оплаты.
Скачал отсюда:
http://drupal.org/sandbox/openstore/1248784
установил. Нового способа оплаты не появилось. Должно быть?
сделал заказ используя модуль - Commerce Bank Transfer (да модуль дубовый, но его данныем можно было бы использовать для печати данных получателя платежа)
Кнопка в Заказе "печать" появилась (ФФ, пишут что в ИЕ ее не видно), выдает ошибку -
Fatal error: Cannot use string offset as an array in /var/www/nsupplement/sites/all/modules/commerce_receipt/commerce_receipt.module on line 174
А так модуль был бы полезен, т.к. модуль Commerce Invoice - работает тоже специфично... вообще общепринято, что инвойс - это основание для платежа, а он появляется только после того как оплата в статусе завершена... как-то не логично.
Вообщем в Коммерце с оплатой через банка пока все грустно
с кодировкой в темплейтах все равно есть проблемы. Сплошные кракозябли, не смотря на то, что стоит utf-8 в head. Ради интереса скопировал кракозябли и запихнул в декодер Лебедева, только под cp1251 и расшифровал в utf-8. В общем так оно расшифровалось. А на сайте пока никак не хочет.
Патчи принимаются
Проблема кодировки была на стороне локалки. Как только выкинул на живой хостинг все заработало нормально.
мне помогло:
в .htaccess
добавить
AddDefaultCharset UTF-8
Добрый день! Огромное спасибо! Это уже хоть что-то. На странице токенов вываливается куча "нотайсов" вида:
Notice: Undefined index: description в функции _token_token_tree_format_row() (строка 136 в файле .../sites/all/modules/token/token.pages.inc).
И подставляя токены с этой страницы в шаблон, ничего кроме как самих токенов в шаблоне не выводится, кроме тех, которые я заполнил в настройке метода оплаты. Вся та информация выводится корректно.
Пытаясь вставить токен типа [commerce-order:commerce-customer-billing:field-city] - выводится текст токена.
Хотя в токенах есть вроде штатные под заголовком "Квитанция банка" - но откуда они берутся? Например токен типа [commerce-receipt:billing-address-1] или [commerce-receipt:billing-full-name]
Ищу немного другой функционал, возможно, неправильно ищу, потому что странно, если такого ещё нет.
Мне нужна печатная форма заказа, т.е. то, что можно распечатать и положить в коробку с заказом. Основная информация - кто заказчик, что в заказе, адрес, общая стоимость, логотип и координаты магазина. Я так понимаю, что это очень похоже на то, что делает этот модуль, только мне не нужен ещё один способ оплаты - это нужно для любого способа, для всех заказов. В UC, причём, это было из коробки - счёт для печати.. Подскажите, где искать? А то приходится печатать просто тупо из админки заказы...
Может поможет
- http://drupal.org/project/commerce_invoice
- http://drupal.org/project/commerce_invoice_receipt
спасибо, посмотрю!
Спасибо за модуль!
Планируется выход из песочницы?
Модуль http://drupal.org/project/commerce_invoice_receipt не выводит информацию о товарах. Почему?
,
Нужно в настройках отображения включить поля, которые должны показываться.
строка 174:
$filename = $variables['template']['#default_value'];
заменить на:
$filename = $variables['template']['#default_value'][0];
Добрый день!
Планирую использовать модуль commerce_receipt, как одно из средств оплаты,
однако, не могу избавиться от двойной надписи в в способах оплаты при оформлении заказа.
Может, кто разбирался?
Пример в приложенном файле.
Периодически возникает ошибка с предупреждением о несуществующих сущностях.
добавил в commerce_receipt.tokens.inc стр 130-131 условие:
$id_shipping = $order->commerce_customer_shipping ? $order->commerce_customer_shipping['und'][0]['profile_id'] : '';
$id_billing = $order->commerce_customer_billing ? $order->commerce_customer_billing['und'][0]['profile_id'] : '';
вроде помогло... дальше не копал