JoomShopping компании MAXX marketing достойный компонент для создания интернет-магазинов. Но как и любой другой компонент, он имеет свои недостатки и порой требует немалых правок и изменений. В этой статье поговорим о том, как реализовать способ оплаты «Счет на оплату безналичным расчетом».
Сразу хотелось бы оговориться, решение не идеальное, т.к. необходимо будет править код в файлах компонента и в случае его обновления, все изменения будут потеряны.
Совет: Прежде чем производить какие-либо изменения, сделайте резервные копии файлов, с которыми работаете.
Совет: Если у Вас нет никакого опыта редактирования кода, Вы можете купить полноценное дополнение со всеми изменениями, описанными в данной статье.
Как это работает?
Имеется два варианта решения вопроса.
1 — Свой вариант шаблона PDF
Для начала скачайте файл шаблона PDF (generete_pdf_order.php) из вложения в конце статьи, либо, если Вы не плохо обладаете знаниями PHP можете сами отредактировать имеющийся шаблон.
Итак, скачанный файл загрузите в директорию сайта /components/com_jshopping/lib/ заменив имеющийся.
В административной части сайта в разделе «Опции» создайте новый способ оплаты, если это необходимо.
Перейдите в настройки магазина на вкладку «Заказ» и установите галочку напротив значения «Присылать PDF-счет для заказчика», для того, чтобы счет приходил на почту заказчику в виде вложения.
Также в настройках магазина перейдите на вкладку «Информация о магазине» и заполните все поля в соответствии с пояснениями на изображении ниже
После сохранения всех данных, там же на вкладке «Информация о магазине» в самом низу, кликнув на ссылку «Просмотреть PDF», Вы сможете увидеть как примерно будет выглядеть Ваш счет.
Прежде, чем переходить к другим настройкам, давайте разберем второй способ.
2 — Addon RUS Invoice
Данный метод более оптимален, т.к. Вы спокойно сможете обновлять компонент JoomShopping.
Разработчики позаботились и о русскоязычном населении, предложив дополнение для компонента. Скачайте это дополнение по ссылке или из вложения в конце статьи. Установите его с помощью «Установка и обновление» внутри компонента JoomShopping.
Перейдите в «Опции → Дополнения» и нажмите кнопку редактирования напротив установленного дополнения. Укажите все необходимые данные в открывшемся окне.
В административной части сайта в разделе «Опции» создайте новый способ оплаты, если это необходимо.
Перейдите в настройки магазина на вкладку «Заказ» и установите галочку напротив значения «Присылать PDF-счет для заказчика», для того, чтобы счет приходил на почту заказчику в виде вложения.
Также в настройках магазина перейдите на вкладку «Информация о магазине» и заполните все поля в соответствии с пояснениями на изображении ниже
Как добавить подпись и штамп (печать)?
Вариант, который использую я — в настройках магазина на вкладке «Информация о магазине» в самом низу есть возможность указать изображения для верхнего и нижнего колонтитула. Добавьте в верхний колонтитул изображение штампа (печати), а в нижний — изображение подписи. Изображения должны быть на белом фоне и в формате 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-счет.
В результате всех проделанных манипуляций получаем примерный результат, изображенный ниже
Как выводить правильные единицы измерения?
Те, кто решил воспользоваться дополнением Addon RUS Invoice, обратили внимание, что независимо от настроек в PDF-счете единица измерения остается неизменной, постоянно килограммы. Дело в том, что разработчики не позаботились о корректном отображении единиц измерения.
Итак, у нас уже установлен Joomshopping, Addon RUS Invoice и всё настроено должным образом. В 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 заносятся в базу данных единожды. Если Вы произвели какие-либо изменения в товарах и хотите увидеть результат, Вам необходимо сделать новый заказ.
Ничего сложного!
На этом всё, счет на оплату безналичным расчетом для JoomShopping готов. Если у Вас имеются свои методы решения данного вопроса, предлагаю поделиться ими в комментариях.
Но подписей две, потому их объединяем в одну картинку.
Если Вы хотите разделить их, то загрузите в каталог /components/com_jshopping/images/ две картинки с подписями, например footer1.jpg и footer2.jpg
После этого отредактируйте код
$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);
Например на такой, добавив третью картинку:
$pdf->Image($jshopConfig->path.'images/header.jpg',120,$y-13,$jshopConfig->pdf_header_width,$jshopConfig->pdf_header_height);
$pdf->Image($jshopConfig->path.'images/footer1.jpg',70,$y-17,$jshopConfig->pdf_footer_width,$jshopConfig->pdf_footer_height);
$pdf->Image($jshopConfig->path.'images/footer2.jpg',70,$y-14,$jshopConfig->pdf_footer_width,$jshopConfig->pdf_footer_height);
Возможно Вам придется подкорректировать ширину, высоту, позицию по x, y, собственно можете заменить переменные на конкретные значения $pdf->Image(PATH,X,Y,WIDTH,HEIGHT);
Что касательно отображения старого - как проверяете? Обновляете страницу при просмотре PDF? Если да, то так не сработает, нужно каждый раз формировать новый, для этого либо нажмите "Просмотреть pdf" в разделе "Компоненты - JoomShopping - Настройки - Информация о магазине", либо "Отправить письмо" внутри заказа для которого смотрите счет.
Если же всё так и делали, то проверьте, верная картинка отображается по адресу /components/com_jshopping/images/footer.jpg может не загрузилась.
Если у Вас дублируются письма, проверьте, что у Вас Email магазина не совпадает с Email в заказе, иначе да, Вы будете получать 2 письма, как админ и заказчик.
А где взять сам способ оплаты "Выставить счет"?
Но не как не могу решить вопрос - Присылать PDF-счет по определенному статусу заказа.
То есть, когда статус меняется на Ожидающий например, приходит счет. А при всех остальных статусах заказа не приходит. Это очень часто бывает нужно! Видел настройку вручную отправлять, но лучше бы автоматически при изменении статуса это происходило. Не знаю где копать.
Отправка сообщения вручную и смена статуса это совершенно две разные функции, которые отправляют разные типы писем.
При смене статуса не прикрепляются никакие файлы.
Когда вызываем отправку письма вручную, то вызывается модель checkout, в которой как раз и вносили изменения для отправки PDF по виду оплаты, эта же модель вызывается когда пользователь оформляет заказ, в ней как раз и прописаны все функции для генерации PDF и добавления вложения.
А вот когда меняем статус, тут уже вызывается другая модель - orderChangeStatus, тут даже в коде не за что подцепиться и поправить, чтобы добавлялся файл.
Могу лишь дать направление:
При смене статуса вызывается функция _updateStatus (строка 212 файла orders.php в каталоге /administrator/components/com_jshopping/controllers/)
Внутри этой функции подключается модель orderChangeStatus в которой задаются нужные данные - файл orderchangestatus.php в каталоге /components/com_jshopping/models/ именно в этом файле и нужно что-то и как-то будет реализовать для отправки.
Но тут даже я не могу ничего подсказать.
В идеале конечно же писать плагин, чтобы не вносить изменения в ядро, т.к. после обновления все изменения слетят.
Я даже в принципе не могу сказать, возможно ли что-то подобное реализовать.
По аналогии со способом оплаты, статус заказа можно получить $order->order_status
Локальный сервер никуда не отправляет письма, они хранятся во временной папке на компьютере. Например OpenServer хранит письма в каталоге куда установили его в папке \userdata\temp\email
В остальных не знаю, нужно смотреть документацию.
Может быть много причин, по которым письма не доходят.
По поводу перенаправления. Ни разу не пробовал, да и не сталкивался, сегодня/завтра посмотрю, попробую на тестовом, если что-то получится, сообщу.
В этой функции необходимо сразу после строки:
JDispatcher::getInstance()->trigger('onBeforeDisplayCheckoutFinish', array(&$text, &$order_id));
Добавить свои:
$order = JSFactory::getTable('order', 'jshop');
$order->load($order_id);
И после
$view->assign('text', $text);
Добавить строку
$view->assign('pdf', $order->pdf_file);
Теперь необходимо открыть файл /components/com_jshopping/templates/ВАШ_ШАБЛОН/checkout/finish.php
В этом файле выводится фраза указаная в административной панели, либо фраза по умолчанию. Сразу после условия проверки (в конце файла) добавьте:
<?php if (!empty($this->pdf)) { ?>
<p><a href="/components/com_jshopping/files/pdf_orders/<?php echo $this- rel="nofollow ugc">pdf; ?>" target="_blank">Открыть счет в новом окне</a></p>
<?php } ?>
В этом случае пользователь увидит ссылку для перехода на счет сразу под текстом уведомления о соврешении заказа.
Либо добьавьте код
<?php if (!empty($this->pdf)) { ?>
<script>location.replace("<?php echo '/components/com_jshopping/files/pdf_orders/' . $this->pdf; ?>");</script>
<?php } ?>
В этом случае пользователь не увидит текст уведомления о совершении заказа, а будет сразу перенаправлен на счет, назад он вернуться не сможет уже, поэтому это не очень хороший вариант.
Протестировано, работает.
Подскадите, у меня валют не руб, а грн (UAH) и она вовсе в счете не выводится. Только сумма - 145.00
Как поправить? (падежи рубль/я/ей это уже моя забота) но как вообще отобразит валюту?
Заранее спасибо
В этой функции есть проверка условий:
if($val_rub=='RUR') {
}elseif($val_rub=='USD') {
}elseif($val_rub=='EUR') {
Соответственно Вам необходимо прописать дополнительно своё условие на проверку для UAH.
но все равно валюта не подставляется( хм
Если не поможет, попробую поднять у себя сайт и протестировать сам.
аддон последний - 1.0.7
JoomShopping 4.18.4
(в родном счете все ок)
везде было закомментировано значение currency_code, разкоментил - все ОК
Спасибо!
Вышлите мне бекап Вашего сайта на info@blog-about.ru проверю что может быть не так. По крайней мере в моей тестовой сборке всё корректно отрабатывает.
при заполнении переносил строку если она выходит за рамки и убрать пробелы у плательщика... Я вам скину 500 руб. А то у меня почему то при внесении изменений Грузополучатель заменяет плательщика и пробелы остаются.
Получается, когда я в админке вношу и плательщика и грузополучателя и они разные в счете выглядит:
Плательщик: грузополучатель.
Грузополучатель: грузополучатель.
И пробелы остаются.
Здесь всё сложнее, т.к. строка выводится с помощью текста, а он в PDF не переносится, придется менять функцию.
Открываем файл /plugins/jshoppingorder/addon_rus_invoices_for_payment/addon_rus_invoices_for_payment.php и находим код примерно в 65-ой строке:
$pdf->MultiCell(181, 1, _JSHOP_ADDON_RUS_INVOICES_PAYMENT_PAYER.implode(", ",$adress), 0, "L");
Удаляем её или можно просто закомментировать и вместо этого пишем:
$pdf->SetXY(18,93);
$pdf->MultiCell(181, 1, _JSHOP_ADDON_RUS_INVOICES_PAYMENT_PAYER.implode(", ",$adress));
Это сработает для плательщика, теперь смотрим ниже, примерно в 72-ой строке код:
$pdf->text(13,98,_JSHOP_ADDON_RUS_INVOICES_PAYMENT_CUSTOMER.implode(", ",$adress));
Аналогично удаляем или комментируем и пишем свой:
$pdf->SetXY(18,$pdf->getY());
$pdf->MultiCell(181, 1, _JSHOP_ADDON_RUS_INVOICES_PAYMENT_CUSTOMER.implode(", ",$adress), 0, "L");
Здесь мы исправили перенос для грузополучателя, но из-за этого таблица со списком товаров может наехать на текст, поэтому чуть ниже, примерно в 74-ой строке находим задание позиции по вертикали:
$y = 103;
И меняем на определение позиции:
$y = $pdf->getY();
Юридический адрес:
Перейдите в "Компоненты" - "JoomShopping" - "Настройки" - "Поля регистрации".
Здесь есть возможность задать дополнительные поля (до 3х штук), активируйте к примеру "Дополнительное поле 1" в соответствующих разделах, где это нужно. Предположим, что это поле будет отвечать за юридический адрес.
Открываем файл /components/com_jshopping/lang/ru-RU.php и находим строку:
define('_JSHOP_EXT_FIELD_1', 'Дополнительное поле 1');
Меняем на:
define('_JSHOP_EXT_FIELD_1', 'Юридический адрес');
Открываем файл /administrator/components/com_jshopping/lang/ru-RU.php и находим строку:
define('_JSHOP_EXT_FIELD_1', 'Дополнительное поле 1');
Меняем на:
define('_JSHOP_EXT_FIELD_1', 'Юридический адрес');
Теперь пользователь будет видеть поле "Юридический адрес" при оформлении заказа, и если заполнит его, то администратор в заказе также увидит это поле.
Чтобы выводить юридический адрес в PDF, откройте файл /plugins/jshoppingorder/addon_rus_invoices_for_payment/addon_rus_invoices_for_payment.php и в нужном месте просто добавьте:
$pdf->SetXY(18,$pdf->getY());
$pdf->MultiCell(181, 1, 'Юридический адрес:' . $order->ext_field_1, 0, "L");
ext_field_1 - указывает на поле "Дополнительное поле 1" для блока плащельщика. Если же нужно для грузополучателя, то d_ext_field_1
Исправление данных о грузополучателе:
Не знаю почему, но разработчики решили и в плательщике и грузополучателе выводить одинаковые данные, поэтому нужно исправить это. Откройте файл /plugins/jshoppingorder/addon_rus_invoices_for_payment/addon_rus_invoices_for_payment.php и найдите строку:
$adress=array();
Вы их встретите 2 в файле, первая отвечает за массив данных о плательщике, а вторая за массив данных о грузополучателе. Сразу после этой строки (второй), идет задание данных:
if($order->d_firma_name)$adress[]=$order->firma_name;
if($order->firma_code)$adress[]=_JSHOP_ADDON_RUS_INVOICES_PAYMENT_INN." ".$order->firma_code;
if($order->d_city)$adress[] = _JSHOP_ADDON_RUS_INVOICES_PAYMENT_PRE_CITY.$order->city;
if($order->d_street)$adress[] = $order->street;
if($order->d_home)$adress[] = $order->home;
Все 5 строк меняем на следующие:
if($order->d_firma_name)
$adress[]=$order->d_firma_name;
else
$adress[]=$order->firma_name;
if($order->firma_code)
$adress[]=_JSHOP_ADDON_RUS_INVOICES_PAYMENT_INN." ".$order->firma_code;
else
$adress[]=$order->firma_code;
if($order->d_city)
$adress[] = _JSHOP_ADDON_RUS_INVOICES_PAYMENT_PRE_CITY.$order->d_city;
else
$adress[]=$order->city;
if($order->d_street)
$adress[] = $order->d_street;
else
$adress[]=$order->street;
if($order->d_home)
$adress[] = $order->d_home;
else
$adress[]=$order->home;
Здесь мы указали, что если заполнен раздел для доставки, то будем указывать адрес грузополучателя, а иначе адрес плательщика
Длина поля адреса
Разработчики поскупились на длину строки для адреса, поэтому какой бы длинный адрес Вы не ввели в поле "Адрес", он будет сохранен максимально 100 символов, поэтому здесь потребуется уже изменять базу данных.
Открываем phpMyAdmin, переходим в Вашу базу данных, открываем таблицу #__jshopping_orders и переходим на вкладку "Структура", находим поле "street" и жмем карандаш справа для редактирования. В поле "Длина/Значения" укажите 255 и сохраните изменения. Аналогично сделайте для поля "d_street".
Важное замечание. Некоторые из этих изменений будут утеряны после обновления версии Joomshopping.
Плательщик: Имя покупателя, Московская область, городской округ Мытищи, деревня Грибки,
Коттеджный (пробел, пробел, пробел, пробел) Посёлок (пробел, пробел, пробел,)) Грибки-2
А хотелось бы так:
Плательщик: Имя или название фирмы, Московская область, городской округ Мытищи, деревня Грибки,
коттеджный посёлок Грибки-2
if ($order->d_firma_name) {
$adress[] = $order->d_firma_name;
} else {
if ($order->firma_name) {
$adress[] = $order->firma_name;
}
}
if ($order->firma_code) {
$adress[] = _JSHOP_ADDON_RUS_INVOICES_PAYMENT_INN . " " . $order->firma_code;
}
if ($order->d_city) {
$adress[] = _JSHOP_ADDON_RUS_INVOICES_PAYMENT_PRE_CITY . $order->d_city;
} else {
if ($order->city) {
$adress[] = _JSHOP_ADDON_RUS_INVOICES_PAYMENT_PRE_CITY . $order->city;
}
}
if ($order->d_street) {
$adress[] = $order->d_street;
} else {
if ($order->street) {
$adress[] = $order->street;
}
}
if ($order->d_home) {
$adress[] = $order->d_home;
} else {
if ($order->home) {
$adress[] = $order->home;
}
}
Чтобы убрать, нужно просто удалить часть кода, который дал в комментарии выше:
if ($order->firma_code) {
$adress[] = _JSHOP_ADDON_RUS_INVOICES_PAYMENT_INN . " " . $order->firma_code;
}
Не подскажете, как сделать, что бы в счете, где указана стоимость прописью, отображались копейки? Строка заканчивается валютой (руб в данном случае), однако если в сумме присутсвуют копейки, то в строке их нет.
Спасибо.
Вы используете Аддон? Если да, то он должен выводить копейки. Скорей всего у Вас код валюты указан отличный от того, который в коде аддона.
Откройте файл addon_rus_invoices_for_payment.php расположенный в каталоге /plugins/jshoppingorder/addon_rus_invoices_for_payment/
Найдите примерно в 406-ой строке функцию:
function SumProp($srcsumm,$val_rub='', $val_kop=''){
и сразу после этой строки добавьте следующий код:
$srcsumm = str_replace(' ', '', $srcsumm);
это для перестраховки, на случай, если в качестве тысячного разделителя Вы будете использовать пробел. Теперь, чуть ниже найдите условие:
if($val_rub=='RUR') {
В этой строке RUR замените на код Вашей валюты, например "руб."
Код валюты можно посмотреть в админке в списке валют в поле "код".
Достаточно того что он выводится внизу как это и положенно, я так понимаю это остатки встроенного шаблона по умолчанию.
В вашем примере ндс не представлен
Вообще, в настройках JoomShopping должен быть параметр "Показывать налоги в корзине" или что-то в этом роде, почему-то сам не могу найти его, он как раз и отключает вывод.
Если не получится найти, или Вам нужно показывать налоги, то Вы можете убрать их вывод путем редактирования файла /plugins/jshoppingorder/addon_rus_invoices_for_payment/ addon_rus_invoices_for_payment.php
В 157 и 176 строках есть два блока условий вывода налогов
if ($jshopConfig->show_tax_product_in_cart && $prod->product_tax>0){
Закомментируйте полностью условие, проверьте, то что нужно Вам или нет.
Налог под итоговой суммой меняется в 269 строке, закомментируйте блок условий
if (!$jshopConfig->hide_tax){
Должно пропасть.
Сам проверить на данный момент не могу, т.к. не на чем.
if ($jshopConfig->display_tax_id_in_pdf && $order->tax_number){
Произвёл тестирование компонентов. Joomla 3.9.1 + Joomshopping 4.18.2 + Addon Rus Invoice.
Всё корректно работает, после установки аддона стандартный шаблон PDF счета заменяется на новый. Для тестирования использовалась версия аддона 1.0.5 из вложения к данной статье. Попробуйте скачать и установить более новую версию 1.0.7 https://www.webdesigner-profi.de/joomla-webdesign/shop/addons/rus-invoice.html?lang=ru
Даже представить не могу, в чём может быть у Вас причина. Опишите конкретнее, как проявляется проблема? Именно шаблон PDF не изменяется на новый? Или вообще не отправляет PDF счета?
"Joomshopping" - "Настройки" - "Информация о магазине", если нажать в самом низу "Просмотреть pdf" отображается старый или новый шаблон счета?
спасибо за статью.
методом тыка и опроса умных товарищей было выявлено, что не обязательно лезть в модель для сброса параметров отправки. создаем переопределение для уведомления
\templates\ВАШ_ШАБЛОН\html\com_jshopping\checkout\orderemail.php
и в нем сбрасываем переменные, в зависимости от ID оплаты.
для ленивых, можно вообще дописывать к имени оплаты хвостик "_nopdf"
и делать проверку на наличие подстроки, а не на ID
if($this->order->payment_id == 1){
$this->config->order_send_pdf_client=0; // не шлем счет клиенту
$this->config->order_send_pdf_admin=1; // а шлем себе-любимому!
}
Подскажите, а если не нужно отправлять PDF при нескольких вариантах?
Можно как-то указать при 8 и 7 id не отправлять?
if ($pdfsendtype && $this->order->payment_method_id != 7 && $this->order->payment_method_id != 8){
Здесь по условию счет не будет отправлен, если выбран способ оплаты 7 или 8.