Счет на оплату безналичным расчетом для JoomShopping

JoomShopping компании MAXX marketing достойный компонент для создания интернет-магазинов. Но как и любой другой компонент, он имеет свои недостатки и порой требует немалых правок и изменений. В этой статье поговорим о том, как реализовать способ оплаты "Счет на оплату безналичным расчетом".

Сразу хотелось бы оговориться, решение не идеальное, т.к. необходимо будет править код в файлах компонента и в случае его обновления, все изменения будут потеряны.

Совет: Прежде чем производить какие-либо изменения, сделайте резервные копии файлов, с которыми работаете.

Как это работает:

Имеется два варианта решения вопроса.

1 - Свой вариант шаблона PDF

Для начала скачайте файл шаблона PDF (generete_pdf_order.php) из вложения в конце статьи, либо, если Вы не плохо обладаете знаниями PHP можете сами отредактировать имеющийся шаблон.

Итак, скачанный файл загрузите в директорию сайта /components/com_jshopping/lib/ заменив имеющийся.

В административной части сайта в разделе «Опции» создайте новый способ оплаты, если это необходимо.

Перейдите в настройки магазина на вкладку «Заказ» и установите галочку напротив значения «Присылать PDF-счет для заказчика», для того, чтобы счет приходил на почту заказчику в виде вложения.

Также в настройках магазина перейдите на вкладку «Информация о магазине» и заполните все поля в соответствии с пояснениями на изображении ниже

"Счет на оплату безналичным расчетом" для JoomShopping. Способ 1-ый.

После сохранения всех данных, там же на вкладке «Информация о магазине» в самом низу, кликнув на ссылку «Просмотреть PDF», Вы сможете увидеть как примерно будет выглядеть Ваш счет.

Прежде, чем переходить к другим настройкам, давайте разберем второй способ.

2 - Addon RUS Invoice

Данный метод более оптимален, т.к. Вы спокойно сможете обновлять компонент JoomShopping.

Разработчики позаботились и о русскоязычном населении, предложив дополнение для компонента. Скачайте это дополнение по ссылке или из вложения в конце статьи. Установите его с помощью «Установка и обновление» внутри компонента JoomShopping.

Перейдите в «Опции → Дополнения» и нажмите кнопку редактирования напротив установленного дополнения. Укажите все необходимые данные в открывшемся окне.

В административной части сайта в разделе «Опции» создайте новый способ оплаты, если это необходимо.

Перейдите в настройки магазина на вкладку «Заказ» и установите галочку напротив значения «Присылать PDF-счет для заказчика», для того, чтобы счет приходил на почту заказчику в виде вложения.

Также в настройках магазина перейдите на вкладку «Информация о магазине» и заполните все поля в соответствии с пояснениями на изображении ниже

"Счет на оплату безналичным расчетом" для JoomShopping. Способ 2-ой.

Как добавить подпись и штамп (печать)?

Вариант, который использую я - в настройках магазина на вкладке «Информация о магазине» в самом низу есть возможность указать изображения для верхнего и нижнего колонтитула. Добавьте в верхний колонтитул изображение штампа (печати), а в нижний - изображение подписи. Изображения должны быть на белом фоне и в формате JPG.

Теперь необходимо отредактировать файл шаблона PDF. Если Вы воспользовались первым способом, тогда Вам необходимо редактировать файл /components/com_jshopping/lib/generete_pdf_order.pdf, если же второй - /plugins/jshoppingorder/addon_rus_invoices_for_payment/ addon_rus_invoices_for_payment.php

Я использую второй метод, думаю им воспользуются большинство, поэтому опишу как править этот шаблон.

В файле addon_rus_invoices_for_payment.php найдите и закомментируйте следующие строки:

$pdf->Image($jshopConfig->path.'images/header.jpg',1,1,$jshopConfig->pdf_header_width,$jshopConfig->pdf_header_height);
$pdf->Image($jshopConfig->path.'images/footer.jpg',1,265,$jshopConfig->pdf_footer_width,$jshopConfig->pdf_footer_height);

Поднимитесь и найдите следующие строки

$pdf->MultiCell(180, 1 , $this->mb_ucfirst($this->SumProp($this->formatprice($order->order_total),$order->currency_code)),'0','L');
$y = $y + 20;

Эта строка выводит итоговую стомость в счет и делает отступ до подписей директора и бухгалтера. После отступа сделайте вывод изображений:

$pdf->MultiCell(180, 1 , $this->mb_ucfirst($this->SumProp($this->formatprice($order->order_total),$order->currency_code)),'0','L');
$y = $y + 20; 
$pdf->Image($jshopConfig->path.'images/header.jpg',120,$y-13,$jshopConfig->pdf_header_width,$jshopConfig->pdf_header_height);
$pdf->Image($jshopConfig->path.'images/footer.jpg',70,$y-17,$jshopConfig->pdf_footer_width,$jshopConfig->pdf_footer_height);

Где первое изображение - это верхний колонтитул (штамп), а второе - нижний колонтитул (подпись). Откалибруйте позицию для изображений по горизонтали (у меня это 120 и 70, для первого и второго изображений соответственно) и по вертикали (у меня это $y-13 и $y-17).

Наверное Вы заметили, что мы сделали вставку изображений перед выводом блоков для подписей руководителя и бухгалтера. Сделано это для того, чтобы эти блоки прорисовывались после изображений, т.е. поверх них, это позволит изображениям не перекрывать поля и тексты (фон ведь у них белый).

Как отправлять счет только при определенных способах оплаты?

Может получиться так, что Вы не намерены отправлять PDF счет по всем способам оплаты, тогда Вам достаточно отредактировать файл /components/com_jshopping/models/checkout.php

Найдите строки:

$pdfsend = 1;
if ($jshopConfig->send_invoice_manually && !$manuallysend) $pdfsend = 0;

И замените их наследующие:

$pdfsend = 1;
if (($jshopConfig->send_invoice_manually && !$manuallysend) || $order->payment_method_id != 8) $pdfsend = 0;

Где $order->payment_method_id != 8 означает в моём случае, что не нужно отсылать PDF счет, если выбран способ оплаты с ID 8. Узнать свои идентификаторы оплаты Вы можете в административной части сайта, перейдя в «Опции → Способы оплаты» магазина, и просмотрев поле «id» напротив интересующих Вас способов оплаты.

UPDATE:

Начиная с версии 4.11 в Joomshopping была переделана структура функций и моделей, поэтому описанный выше код для отправки счета при определенных методах оплаты отсутствует. Для того, чтобы решить этот вопрос, необходимо открыть файл ordermail.php, расположенный в каталоге /components/com_jshopping/models и найти в нем следующий код:

if ($pdfsendtype){
	$mailer->addAttachment($jshopConfig->pdf_orders_path."/".$this->order->pdf_file);
}

Здесь необходимо исправить условие отправки PDF-счета следующим образом:

if ($pdfsendtype && $this->order->payment_method_id != 8){
	$mailer->addAttachment($jshopConfig->pdf_orders_path."/".$this->order->pdf_file);
}

Как и выше, с помощью $this->order->payment_method_id != 8 мы указали ID метода оплаты, для которого не нужно отправлять PDF-счет.

 

В результате всех проделанных манипуляций получаем примерный результат, изображенный ниже

"Счет на оплату безналичным расчетом" для JoomShopping. PDF счет.

Как выводить правильные единицы измерения?

Те, кто решил воспользоваться дополнением Addon RUS Invoice, думаю обратили внимание, что независимо от настроек магазина в PDF-счете единица измерения остается неизменной, постоянно килограммы. Дело в том, что разработчики не позаботились о корректном отображении единиц измерения. Поэтому предлагаю решить данный вопрос.

Итак, у нас уже установлен интернет-магазин Joomshopping, дополнение Addon RUS Invoice для PDF-счета и всё настроено должным образом. В Joomshopping в настройках имеется возможность изменить единицы измерения, но они применяются ко всем товарам, хотя нам необходимо, чтобы у разного типа товаров были свои единицы измерения (килограммы, литры, метры и т.д.).

Для этого нам необходимо настроить функционал магазина. Переходим в «Joomshopping -> Настройки -> Функции магазина». Отмечаем галочки «Базовая цена» и «Единицы измерения». Также, в настройках необходимо перейти на вкладку «Заказ» и убедиться, что установлена галочка напротив поля «Базовая цена», иначе в таблицу заказов не будет заноситься информация о базовой цене и единицах измерения.

В «Joomshopping –> Опции» появится раздел «Единицы измерения», где мы можем добавить нужные для нас. Теперь переходим в карточку товара и на вкладке «Информация о товаре» в самом низу выбираем необходимую нам единицу измерения. Учитывая, что базовая цена рассчитывается как цена/базовая цена, то в поле «базовая цена» указываем единицу (1). Вам не обязательно работать с базовой ценой товара, этот функционал необходим нам исключительно для единиц измерения.

После того, как мы настроили все товары. Открываем файл /plugins/jshoppingorder/addon_rus_invoices_for_payment/ addon_rus_invoices_for_payment.php и находим следующую строчку:

$pdf->MultiCell(20, 1, _JSHOP_ADDON_RUS_INVOICES_PAYMENT_CHT, 0 , 'C');

Как видите, разработчики выводят единицу измерения обычной текстовой константой. Давайте исправим её на следующую:

$pdf->MultiCell(20, 1, $prod->basicpriceunit, 0 , 'C');

Совет: Для тех, кому интересно, последний символ в строке означает выравнивание и может принимать следующие значения: L – по левому краю; R – по правому краю; C – по центру.

Если Вы сейчас попробуете просмотреть PDF-счет из административной части («Joomshopping -> Настройки -> Информация о магазине»), то увидите, что поле «Единица» пустое. Это связано с тем, что в PDF-счет таким способом добавляются демо-данные. Поэтому, чтобы убедиться в правильности проделанных действий, необходимо с лицевой части сайта произвести покупку товара.

Важно: Помните, что сделанные заказы в Joomshopping заносятся в базу данных единожды. Если Вы произвели какие-либо изменения в товарах и хотите увидеть результат, Вам необходимо сделать новый заказ.

Ничего сложного!

На этом всё. Если у Вас имеются свои методы решения данного вопроса, предлагаю поделиться ими в комментариях.


Оставьте свой комментарий

Оставить комментарий от имени гостя

0 / 2500 Ограничение символов
Ваш текст должен быть в пределах 10-2500 символов
84 Комментарии | Добавить свои
  • Гость - Вассо

    Можете мне за деньги сделать счет нормальный. Тех задание такое:
    1) Вывод названия фирмы или просто ФИО пользователя ( заказчика) в строке плательщик и грузополучатель.
    2) Вывод адреса тоже в строчках плательщик и грузополучатель.
    2) Отдельной строкой тел. получателя.

    Сделал все как у Вас. Проблемы такие : Не получается вывести телефон, и не отображается название фирмы в админке ( В счете есть). Не отображается в грузополучателе имя, фамилия, отчество ( отображается только в плательщике).

    Нравится 0 Короткий URL:
  • Отпишите мне на почту info@blog-about.ru подробно, что сделали, какой метод формирования счета использовали, что нужно добавить, что не получается сделать. Приложите файл, который редактировали и скриншот, где у Вас что-то не отображается. И сообщите версию JoomShopping.

    Комментарий последний раз редактировался в около 5 дней назад Администратор
    Нравится 0 Короткий URL:
  • Приложите скриншот, т.к. я не понимаю в каком месте в админке не отображается название фирмы. Статья описана именно для формирования счета.
    По поводу телефона - парой тройкой комментариев ниже уже задавался подобный вопрос, Вы можете выводить в счете абсолютно любую информацию, которую Вам нужно.

    Комментарий последний раз редактировался в около 5 дней назад Администратор
    Нравится 0 Короткий URL:
  • Гость - Вассо

    Не отображается в админке название фирмы, в счете есть а в админке нет? А дачее получается проблема. Распечатываю почтовые бланки. А там нет названия фирмы... В чем может быть проблема. Спасибо.

    Нравится 0 Короткий URL:
  • Гость - Xem

    Здравствуйте, спасибо!
    Подскажите, как сделать чтоб счет летел только для выбора безналичный расчет?
    А то получается при выборе оплата курьеру, покупателю летит счет на безнал.

    Нравится 0 Короткий URL:
  • Добрый день. В статье описано решение в блоке "Как отправлять счет только при определенных способах оплаты?", в котором описано 2 варианта решения в зависимости от версии JoomShopping.

    Нравится 0 Короткий URL:
  • Я все так и сделал. Но во втором письме, по все видимости администратору, приходит PDF

    Нравится 0 Короткий URL:
  • В Вашем случае нужно условие неравенства (!=) заменить на равенство (==). Про администратора не понял, т.к. метод описан для отправки pdf клиенту. Если Вы пытаетесь это сделать для администратора, то это нужно вообще другой файл править.

    Нравится 0 Короткий URL:
  • Заменил на == Все Ок.
    Спасибо!

    Нравится 0 Короткий URL:
  • Гость - Илья

    Спасибо... Очень полезная информация.

    Нравится 0 Короткий URL:
Загрузить еще