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

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

12.03.2019

400

Дорабатываем стандартный функционал 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) предлагает такие функции:

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

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Статусы заказов

Статусы заказов

Как и любой интернет-магазин Woocommerce присваивает заказам определенные статусы в зависимости от отплаты и формирования заказа. Существует 7 различных статусов заказа: В ожидании оплаты (Pending payment) Обработка (Processing) На удержании Читать далее »

Изменяем админку Woocommerce

Изменяем админку Woocommerce

В данной статье собираются сниппеты меняющие функционал или внешний вид админ части Woocommerce. Вернуть выпадающий список категорий С версии WC 3.2 изменился фильтр постов в админке, конкретно выбор категории. Теперь Читать далее »

Настройка доставки

Настройка доставки

Настройка доставки в woocommerce 2.6 кардинальным образом изменилась. Стала более гибкой, но и более сложной в настройке. Разберемся в тонкостях настройки доставки. Зоны доставки Зоны доставки — это определенная территория Читать далее »

/

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

Пока нет комментариев. Будь первым!

Счет на оплату
Плагин Posts 2 Posts
Рекомендации для васПлагин Posts 2 PostsOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.