Модуль Commerce Receipt - оплата по банковским квитанциям для Drupal Commerce

Главные вкладки

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 14 августа 2011 в 9:06

Модуль 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.zip20.7 КБ

Комментарии

Аватар пользователя vitg vitg 10 ноября 2015 в 11:47

Хороший модуль, очень нужен.

Есть проблема с кодировкой при выводе шаблона.

Скриншот прилагаю.

И еще. ИНН нужно указывать банка или предприятия, которое продает в этом магазине?

UPD. У меня на сайте кодировка UTF-8. А в сгенерированном шаблоне кодировка не проставлена. Может, поможет решить проблему.

Аватар пользователя vitg vitg 30 августа 2011 в 19:04

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Странно, у меня всё ок, шаблоны в UTF без BOM.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Вставка этого в head шаблонов помогла браузеру распознать кодировку.

Пожалуйста, вставьте её в исходники. Думаю, будет полезно.

Аватар пользователя zanami zanami 30 августа 2011 в 9:59

Словил такую ошибку

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, больше ничего не курочил пока.

Аватар пользователя zanami zanami 5 сентября 2011 в 10:45

Спасибо, прежняя ошибка не появлялась.

Обнаружилась еще одна проблема. Две транзакции (ниже), первая с использованием 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

stdClass Object
(
    [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
        (
        )

)

Аватар пользователя zanami zanami 5 сентября 2011 в 10:57

Вдогонку из 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');

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 14 сентября 2011 в 8:51

Да, можно. Извините, но не прямо сейчас. недельки через три я планирую зависнуть и поработать над этим и другими ошибками/пожеланиями обозначенными выше

Аватар пользователя aa2007 aa2007 26 ноября 2011 в 15:54

При оформлении заказа выдает следующее сообщение:

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).

Аватар пользователя aa2007 aa2007 27 ноября 2011 в 14:08

а еще думаю не лишнем было бы не выводить кнопку "Распечатать квитанцию" в тех заказах, для которых выбран другой способ оплаты.

Аватар пользователя kodo kodo 27 марта 2012 в 16:40

Скачал отсюда:
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 - работает тоже специфично... вообще общепринято, что инвойс - это основание для платежа, а он появляется только после того как оплата в статусе завершена... как-то не логично.

Вообщем в Коммерце с оплатой через банка пока все грустно

Аватар пользователя TurboPixel TurboPixel 18 июля 2012 в 18:05

с кодировкой в темплейтах все равно есть проблемы. Сплошные кракозябли, не смотря на то, что стоит utf-8 в head. Ради интереса скопировал кракозябли и запихнул в декодер Лебедева, только под cp1251 и расшифровал в utf-8. В общем так оно расшифровалось. А на сайте пока никак не хочет.

Аватар пользователя vic551 vic551 29 марта 2013 в 20:03

TurboPixel wrote:
Проблема кодировки была на стороне локалки. Как только выкинул на живой хостинг все заработало нормально.

мне помогло:
в .htaccess
добавить
AddDefaultCharset UTF-8

Аватар пользователя realovich realovich 23 июля 2012 в 18:28

Добрый день! Огромное спасибо! Это уже хоть что-то. На странице токенов вываливается куча "нотайсов" вида:
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]

Аватар пользователя keereel@drupal.org keereel@drupal.org 27 января 2013 в 22:42

Ищу немного другой функционал, возможно, неправильно ищу, потому что странно, если такого ещё нет.

Мне нужна печатная форма заказа, т.е. то, что можно распечатать и положить в коробку с заказом. Основная информация - кто заказчик, что в заказе, адрес, общая стоимость, логотип и координаты магазина. Я так понимаю, что это очень похоже на то, что делает этот модуль, только мне не нужен ещё один способ оплаты - это нужно для любого способа, для всех заказов. В UC, причём, это было из коробки - счёт для печати.. Подскажите, где искать? А то приходится печатать просто тупо из админки заказы...

Аватар пользователя anolem anolem 10 ноября 2015 в 11:49

Добрый день!
Планирую использовать модуль commerce_receipt, как одно из средств оплаты,
однако, не могу избавиться от двойной надписи в в способах оплаты при оформлении заказа.
Может, кто разбирался?
Пример в приложенном файле.

Аватар пользователя alias612 alias612 11 апреля 2014 в 10:48

Периодически возникает ошибка с предупреждением о несуществующих сущностях.

добавил в 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'] : '';

вроде помогло... дальше не копал