/ Плагины / Счет на оплату

Счет на оплату

HIT

12.03.2019

4168

2

Дорабатываем стандартный функционал Woocommerce, добавляя в него генерацию и отправку счета на оплату. А также прочие способы дополнительных автоматических вложений: накладная, квитанция.

Плагин WooCommerce PDF Invoices & Packing Slips

У плагина более 100 000 установок.

Зависимость отправки счета от статуса заказа.

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

Только один вариант счета и Packing Slip (счет-фактуры), т.е. нельзя для одного магазина создать несколько разных счетов.

Отсутствует настройка шаблона. Но буду пытаться сделать это через файлы плагина.

WooCommerce Print Invoice & Delivery Note

Еще один любопытный плагин (40 000) по данной тематике.

Еще меньше настроек чем в предыдущем плагине, фактически создание документов pdf в админке и отправка по почте. Отсутствует настройка шаблона.

WooCommerce PDF Invoices, Packing Slips, Delivery Notes & Shipping Labels

5000 установок.

Настройка статуса заказа, при котором формируется счет. Очень примитивная кастомизация.

Премиум версия за 59$ (10.03.2019) предлагает:

  • Разнообразные потрясающие шаблоны на выбор!
  • Простые варианты для настройки и персонализации шаблонов.
  • Различные варианты упаковки — упаковка в коробке, индивидуальная упаковка для каждого заказа и упаковка элементов индивидуально.
  • Массовая печать.
  • Возможность настроить политику возврата и нижний колонтитул.
  • Настройте номер счета.
  • Адресные метки Возможность отправить счет вашему Клиенту по электронной почте.
  • Поддерживает оформление заказа, заказ и мета-поля продукта (SSN, НДС и т. Д.).

WooCommerce PDF Invoices

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

Можно формировать и обновлять счет в панели заказа.

В версию Премиум ($ 49 10.03.2019) этого плагина включены следующие функции:

  • Добавьте PDF-счета ко многим другим типам электронной почты, включая электронные письма сторонних плагинов.
  • Отправлять кредитные и аннулированные PDF-счета при возврате или отмене заказа.
  • Полная настройка всего содержимого таблицы счета, измените элементы столбцов и все строки.
  • Автоматическая отправка PDF-счетов в виде напоминания, которое можно настроить на определенный период времени.
  • Позвольте покупателю при оформлении заказа выбрать, нужен ли ему PDF-счет или нет.
  • Изменить шрифт PDF-счетов.
  • Создавать PDF-счета на нескольких языках (совместимо с WPML и Polylang).
  • Массовое создание PDF-счетов.
  • Групповой экспорт и/или загрузка PDF-счетов.
  • Создание и отправка общих счетов для нескольких заказов.
  • Добавьте дополнительные PDF-файлы к PDF-счетам.
  • Отправлять PDF-счета нескольким получателям.
  • Добавьте счета к электронным письмам плагина

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

Скопируйте файлы шаблона по умолчанию (включая папки) из plugins/woocommerce-pdf-invoices/includes/templates/invoice/simple в uploads/woocommerce-pdf-invoices/templates/invoice/simple. Плагин автоматически обнаружит шаблон и сделает его доступным для выбора.

Функция настройки зависимости метода оплаты для формирования счета (указываем методы куда отправлять не нужно):

function bewpi_attach_invoice_excluded_payment_methods( $payment_methods ) {
    return array( 'bacs', 'cod', 'cheque', 'paypal' );
}
add_filter( 'bewpi_attach_invoice_excluded_payment_methods', 'bewpi_attach_invoice_excluded_payment_methods', 10, 2 );

Функция позволяющая менять шаблон в зависимости от какого-либо параметра, в данном случае от языка:

function change_template_based_on_order_language( $template_name, $template_type, $order_id ) {
    $order_language = get_post_meta( $order_id, 'wpml_language', true );

    if ( false === $order_language ) {
        return $template_name;
    }

    switch ( $order_language ) {
        case 'en':
            $template_name = 'minimal-en';
            break;
        case 'nl':
            $template_name = 'minimal-nl';
            break;
    }

    return $template_name;
}
add_filter( 'wpi_template_name', 'change_template_based_on_order_language', 10, 3 );

Этим же способом можно менять шаблон в зависимости от метода оплаты. Например, нужно сделать бланк счета для юридических лиц и квитанцию для оплаты физ. лиц.

// Разные шаблоны для разных методов оплаты

function change_template_based_on_order_language( $template_name, $template_type, $order_id ) {
    
	$payment_method = get_post_meta( $order_id, '_payment_method', true );

    if ( $payment_method == 'bacs' ) { $template_name = 'score'; } 
	elseif ( $payment_method == 'offline_gateway' ) { $template_name = 'receipt'; }

    return $template_name;
}
add_filter( 'wpi_template_name', 'change_template_based_on_order_language', 10, 3 );

score и receipt это названия произвольных шаблонов

Чтобы вывести в счете произвольные поля, их нужно предварительно загнать в переменную специальной функцией:

// Добавить произвольные поля в счет

function add_invoice_information_meta( $info, $invoice ) {
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
	
    $organisation_name = get_user_meta( $user_id, 'organisation_name', true );
    if ( $organisation_name ) {
        $info['organisation_name'] = array(
            'title' => __( 'Наименование компании:', 'woocommerce-pdf-invoices' ),
            'value' => $organisation_name,
        );
    }

    return $info;
}
add_filter( 'wpi_invoice_information_meta', 'add_invoice_information_meta', 10, 2 );

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

$info = $invoice->get_invoice_info(); // получаем массив данных о заказе
echo $info['organisation_name']['title'];
echo $info['organisation_name']['value'];

Либо можно вводить значения в массив не парами

$organisation_bank = get_user_meta( $user_id, 'organisation_bank', true );
if ( $organisation_bank ) {
        $info['organisation_bank'] = $organisation_bank;
}	

Тогда и выводить можно в сокращенном виде:

echo $info['organisation_name']

Список предустановленных данных с ключами:

[invoice_number][title] => Invoice #:
[invoice_number][value] => 00024-2019

[invoice_date][title] => Invoice Date:
[invoice_date][value] => 10.03.2019

[order_date][title] => Order Date:
[order_date][value] => 10.03.2019

[order_number][title] => Order Number: 
[order_number][value] => 358

[payment_method][title] => Payment Method: 
[payment_method][value] => Direct bank transfer

Готовое решение с полями из статьи про юр. лицо и проверкой:

function add_invoice_information_meta( $info, $invoice ) {
	
	$current_user = wp_get_current_user();
	$user_id = $current_user->ID;
	$user_id_company = get_user_meta( $user_id, 'company', 'on' );
	if($user_id_company) {
	
		$organisation_name = get_user_meta( $user_id, 'organisation_name', true );
		if ( $organisation_name ) {	$info['organisation_name'] = $organisation_name; }
		
		$organisation_address = get_user_meta( $user_id, 'organisation_address', true );
		if ( $organisation_address ) {	$info['organisation_address'] = $organisation_address; }
		
		$organisation_inn = get_user_meta( $user_id, 'organisation_inn', true );
		if ( $organisation_inn ) {	$info['organisation_inn'] = $organisation_inn; }
		
		$organisation_kpp = get_user_meta( $user_id, 'organisation_kpp', true );
		if ( $organisation_kpp ) {	$info['organisation_kpp'] = $organisation_kpp; }		

		$organisation_checking_account = get_user_meta( $user_id, 'organisation_checking_account', true );
		if ( $organisation_checking_account ) {	$info['organisation_checking_account'] = $organisation_checking_account; }		

		$organisation_bank = get_user_meta( $user_id, 'organisation_bank', true );
		if ( $organisation_bank ) {	$info['organisation_bank'] = $organisation_bank; }
		
	}

    return $info;
}
add_filter( 'wpi_invoice_information_meta', 'add_invoice_information_meta', 10, 2 );

Отладка шаблона WooCommerce PDF Invoices

Специальной функции превью шаблона у плагина нет. Настраивать шаблон наиболее удобно таким способом:

  • В настройках плагина выбираем вариант Открывать счет в отдельной вкладе
  • Создаем тестовый заказ (с вариантом счета который настраиваем)
  • Отключаем отправку счета (в дополнительных полях внизу: у bewpi_pdf_invoice_sent ставим 0) и обновляем заказ
  • В группе настроек PDF Invoice измениться набор кнопок и будет доступна кнопка Update
  • Нажимаем на кнопку View (в соседнем окне должен открыться счет)
  • И теперь после каждого изменения шаблона нажимаем кнопку Update, обновляем вкладку со счетом и видим изменения.

YITH WooCommerce PDF Invoice and Shipping List

Еще одно решение от компании YITH. Бесплатная версия имеет довольно урезанный функционал.

Платная версия плагина (€ 68 10.03.2019) предлагает такие функции:

  • Настройте имя папки, где сохраняются счета
  • Управление счетами-проформами
  • Во время оформления заказа дополнительно укажите номер SSN и номер НДС и добавьте эти значения в счета.
  • Автоматическое резервное копирование каждого сгенерированного файла непосредственно из вашей учетной записи Dropbox.
  • Настройте имена файлов для счетов-фактур, документов списка доставки и предварительных счетов-фактур, используя заполнители.
  • Настройте примечания и нижний колонтитул, показанные в счете-проформе
  • Настройте примечания и нижний колонтитул, показанный в списке доставки
  • Шаблон счета с возможностью выбора показанной информации
  • Шаблон списка отгрузки с возможностью выбора информации для отображения
  • Шаблон счета-проформы с возможностью выбора информации для отображения
  • Клиенты могут загрузить счет-проформу для каждого нового заказа со своей страницы «Заказы».
  • Возможность вставки информации о заказе и пользователе в документы PDF, указав соответствующий «мета-ключ»
  • Возможность перезаписать шаблон документа из кода
  • Возможность включить режим предварительного просмотра для генерации счетов-фактур без изменения нумерации
  • Показать в счете общую сумму заказа с учетом примененной скидки
  • Вставьте данные отслеживания заказа в накладную (доступна в премиальной версии отслеживания заказов YITH WooCommerce)

Поделиться в соц. сетях:

  • Похожие записи
  • Комментарии
  • Вложения
Категория товаров NEW

Категория товаров NEW

Если у нас большой интернет-магазин с множеством подкатегорий, и периодически появляются новые, то дополнительное внимание к этому можно привлечь лэйблом NEW. По дате мы этот функционал реализовать не сможем т.к. Читать далее »

WooCommerce AJAX Products Filter

WooCommerce AJAX Products Filter

Раннее данный фильтр участвовал в общем обзоре, в котором я приводил основные особенности. Рассмотрим подробнее работу с фильтром WooCommerce AJAX Products Filter (также он называется Advanced AJAX Product Filters). Работа Читать далее »

/
Новинка (товар NEW полем)

Новинка (товар NEW полем)

Ранее были рассмотрены варианты добавления лэйбла New полуавтоматическим способом (последние созданные товары, либо по времени от текущего), либо назначением метки NEW. Здесь разберем как сделать данный функционал полем и какие Читать далее »

/

Добавить комментарий

2 комментария

  1. Влад

    Эти добавленные метаполя автоматически выводятся списком с другой информацией о заказе.

    Здравствуйте! Не выводятся. Ни автоматически, ни вручную. Попробовал все способы. Куда копать? Сами пробовали этот способ?

    1. Alexandr

      Настраивал, но было это уже более 2-х лет назад. Но точно помню что позиции выводились.
      Там в целом было много танцев с бубном, но мне как то удавалось настроить более-менее нормальный счет.

Счет на оплату
Отделяем планшет от телефона
Рекомендации для васОтделяем планшет от телефонаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.