当ショップの商品はテスト用の為の仮の物です。注文されても商品が届く事はありません。請求書が届きますが、実際の金品を請求するものではありません。
クーポンコード 7prvkjtz お買い物毎に割引¥1,000
クーポンコード v2tv97kd 商品毎に割引¥500

ドキュメント

1独自のフォントを利用する 2テンプレートを利用して出力する PDF を変更する 3マーケットプレイス型のサイト対応とフィルター 4書式関連 5送信メール関連 6顧客入力関連

マウスオーバーか長押しで説明を表示。

カスタマイズ2

テンプレートを利用して出力する PDF を変更する

PDF を生成する際に、html をまず生成し、その html を PDF ライブラリに渡します。その html を変更するためにテンプレートを用意しました。デフォルトのテンプレートは、プラグインの /template フォルダにあります。このテンプレートを独自に使用したい場合には以下のフィルター invoice_japan_order_generate_template_file を用意しています。このフィルターで、テンプレートファイルの場所を指定できます。

add_filter(
	'invoice_japan_order_generate_template_file',
	function () {
		$wp_uploads = wp_upload_dir();
		$upload_dir = wp_normalize_path( $wp_uploads['basedir'] );
		$upload_dir = untrailingslashit( $upload_dir );
		return $upload_dir . '/invoice-template/pdf-invoice-japan-template.php';
	},
	10,
	1
);

以下の8つの変数をテンプレート内に使用できます。

変数1:$id 型:整数 説明:注文番号あるいは払い戻し番号

変数2:$store_info_arr 型:配列 説明:店舗情報

キー要素の型要素の説明
postcode文字列〒郵便番号
address文字列住所
add_text文字列店舗の付記情報
number文字列登録番号:T*************

変数3:$info_arr 型:配列 説明:受注先の情報

キー要素の型要素の説明
name文字列氏名
date文字列注文日時
create_date文字列発行日時
shipping_name文字列配送先の氏名
billing_postcode_text文字列請求先の郵便番号
billing_address_text文字列請求先の住所
billing_company_text文字列請求先の会社名
shipping_postcode_text文字列配送先の郵便番号
shipping_address_text文字列配送先の住所
shipping_company_text文字列配送先の会社名
title_text文字列タイトル(請求書、払戻明細書)
title_money_text文字列金額
title_grand_total_text文字列請求金額(税込み)、払戻金額(税込み)
order_refund_num_text文字列注文番号:$d、払戻番号:$d
order_refund_date_text文字列注文日時:$s、払戻日時:$s
order_refund_payment_text文字列支払い方法、払戻方法:$s
order_bank文字列支払い先( Japanized for WooCommerce の「銀行振込 (日本国内向け)」「郵便振替」の口座詳細)
remark文字列備考
vendor_id整数売り手 ID
total_none整数不課税対象品合計
status文字列注文状況

変数4:$items[ $product_id ] 型:配列($product_id は商品ID) 説明:個別の受注の情報

キー要素の型要素の説明
name文字列品名
quantity整数数量
total文字列金額

変数5:$total_taxs 型:配列 説明:合計金額

キー要素の型要素の説明
grand_total文字列請求金額
total文字列税抜き合計
total_tax文字列消費税合計
none文字列不課税対象品合計
reduced文字列軽減税率対象品税抜き合計
reduced_tax文字列軽減税合計
normal文字列標準税率対象品税抜き合計
normal_tax文字列標準税合計
shipping_total文字列送料税抜き
shipping_tax文字列送料消費税

変数6:$discount_arr 型:配列 説明:値引き金額

キー要素の型要素の説明
discount_total文字列値引き金額合計
discount_reduced文字列軽減税の値引き金額
discount_normal文字列標準税の値引き金額
discount_reduced_total文字列値引き後の軽減税率対象品税込み合計
discount_normal_total文字列値引き後の標準税率対象品税込み合計
discount_total_reduced_tax文字列税込み価格に対する軽減税( 8/108 )
discount_total_normal_tax文字列税込み価格に対する標準税( 10/110 )

変数7:$fee_arr 型:配列 説明:手数料

キー要素の型要素の説明
fee_text文字列表示テキスト
fee_total文字列手数料
fee_tax文字列標準税

変数8:$flag 型:文字列 説明:フラグ(order:請求書、refund:払戻明細書)


より簡単にテンプレートを作成できるように以下の独自関数を用意しています。

invoice_japan_billing_address_html( $info_arr )
請求先住所
invoice_japan_shipping_address_html( $info_arr )
配送先住所
invoice_japan_shipping_html( $total_taxs, $invoicejapan_set['normal_tax'], $info_arr['only_virtual'], true )
送料と税額 (第二引数を false にすると、html 無しで出力する)
invoice_japan_remarks_html( $info_arr['remark'], true )
備考 (第二引数を false にすると、html 無しで出力する)
invoice_japan_items_html( $items, $info_arr, $flag )
メインの表(明細)
invoice_japan_order_banks_html( $info_arr['order_bank'] )
支払い先( Japanized for WooCommerce の「銀行振込 (日本国内向け)」「郵便振替」の口座詳細)
invoice_japan_add_text_html( $store_info_arr['add_text'] )
店舗の付記情報
invoice_japan_totals_html( $discount_arr, $total_taxs, $invoicejapan_set['reduced_tax'], $invoicejapan_set['normal_tax'], $info_arr['total_none'] )
購入品の小計額、購入品の小計税額 軽減税率対象購入品の小計額、軽減税率対象購入品の小計税額 標準税率対象購入品の小計額、標準税率対象購入品の小計税額 不課税対象品合計
invoice_japan_fee_html( $fee_arr, $invoicejapan_set['normal_tax'], true )
非課税対象の手数料 手数料合計、手数料消費税 標準税率対象の手数料、標準税率対象の手数料税額 (第二引数をfalse にすると、html 無しで出力する)
invoice_japan_total_none_html( $info_arr['total_none'], '    ' )
不課税対象注釈(第二引数は、「*軽減税率対象」の右横に挿入するテキスト)
invoice_japan_discount_total_html( $discount_arr['discount_total'], $flag )
値引き金額合計
invoice_japan_discount_total_comment_html( $discount_arr, $flag )
値引き金額の注釈

サンプルテンプレート

<?php
/**
 * PDF Invoice Japan for WooCommerce Template File
 *
 * @package WordPress
 * @subpackage PDF Invoice Japan for WooCommerce
 * @since PDF Invoice Japan for WooCommerce 2.00
 */

?>
<style>
/* メインテーブルのヘッダー */
.main_table_header_refund_date {
/* 払戻明細書の日付 */
  width: 20%;
  text-align: center;
  font-weight: bold;
}
.main_table_header_refund_name {
/* 払戻明細書の品名 */
  width: 55%;
  text-align: center;
  font-weight: bold;
}
.main_table_header_name {
/* 品名 */
  width: 75%;
  text-align: center;
  font-weight: bold;
}
.main_table_header_quantity {
/* 数量 */
  width: 10%;
  text-align: center;
  font-weight: bold;
}
.main_table_header_total {
/* 合計 */
  width: 15%;
  text-align: center;
  font-weight: bold;
}

/* メインテーブル */
.main_table_td_refund_date {
/* 払戻明細書の日付 */
  text-align: center;
}
.main_table_td_name {
/* 品名 */
  text-align: left;
}
.main_table_td_quantity {
/* 数量 */
  text-align: center;
}
.main_table_td_total {
/* 合計 */
  text-align: right;
}

/* 送料 */
.shipping_tr {
}
.shipping_td {
  text-align: right;
}

/* 手数料 */
.fee {
  text-align: right;
}

/* 請求先住所 */
.billing_address {
  text-align: left;
}

/*配送先住所 */
.shipping_address {
  text-align: left;
}

/* 備考 */
.remarks {
  text-align: left;
}

/* 注釈 */
.comment {
  text-align: right;
}
</style>

<h1 style="text-align: center;"><?php echo esc_html( $info_arr['title_text'] ); ?></h1><!-- タイトル(請求書、払戻明細書) -->

<!-- ヘッダー -->
<table border="0" cellspacing="0" cellpadding="0">
	<tr>
		<td></td>
		<td style="text-align: right;"><?php echo esc_html( $info_arr['create_date'] ); ?></td><!-- 発行日時 -->
	</tr>

	<tr>
		<td></td>
		<td></td>
	</tr>

	<tr>
		<td><?php echo esc_html( $info_arr['name'] ); ?> 様</td><!-- 氏名 -->
		<td style="text-align: right;"><?php echo esc_html( get_bloginfo( 'name' ) ); ?></td><!-- ショップサイト名 -->
	</tr>

	<tr>
		<td></td>
		<td style="text-align: right;"><?php echo esc_html( $store_info_arr['postcode'] ); ?></td><!-- 店舗郵便番号 -->
	</tr>

	<tr>
		<td>
			<?php echo esc_html( $info_arr['title_grand_total_text'] ); ?><!-- 請求金額(税込み)、払戻金額(税込み) -->
			<u><?php echo esc_html( $total_taxs['grand_total'] ); ?></u><!-- 請求金額 -->
		</td>
		<td style="text-align: right;"><?php echo esc_html( $store_info_arr['address'] ); ?></td><!-- 店舗住所 -->
	</tr>

	<tr>
		<td>
			<?php echo esc_html( $info_arr['order_refund_num_text'] ); ?><br /><!-- 注文番号:$d、払戻番号:$d -->
			<?php echo esc_html( $info_arr['order_refund_date_text'] ); ?><br /><!-- 注文日時:$s、払戻日時:$s -->
			<?php echo esc_html( $info_arr['order_refund_payment_text'] ); ?><br /><!-- 支払い方法、払戻方法:$s -->
			<?php invoice_japan_order_banks_html( $info_arr['order_bank'] ); ?><!-- 支払い先( Japanized for WooCommerce の「銀行振込 (日本国内向け)」「郵便振替」の口座詳細) -->
		</td>
		<td style="text-align: right;">
			<?php invoice_japan_add_text_html( $store_info_arr['add_text'] ); ?><!-- 店舗の付記情報 -->
			<?php echo esc_html( $store_info_arr['number'] ); ?><!-- 登録番号:T************* -->
			<br />
		</td>
	</tr>
</table>

<!-- メインの表(明細) -->
<table border="1" cellspacing="0" cellpadding="5" bordercolor="#000000">
<?php invoice_japan_items_html( $items, $info_arr, $flag ); ?>
</table>

<!-- 小計、手数料、値引き、送料 -->
<table border="1" cellspacing="0" cellpadding="5">
<tr>

<!-- 小計 -->
<td style="text-align: right;">
<?php invoice_japan_totals_html( $discount_arr, $total_taxs, $invoicejapan_set['reduced_tax'], $invoicejapan_set['normal_tax'], $info_arr['total_none'] ); ?>
<!--
	購入品の小計額、購入品の小計税額
	軽減税率対象購入品の小計額、軽減税率対象購入品の小計税額
	標準税率対象購入品の小計額、標準税率対象購入品の小計税額
	不課税対象品合計
-->
</td>
</tr>

<!-- 手数料 -->
<?php invoice_japan_fee_html( $fee_arr, $invoicejapan_set['normal_tax'], true ); ?>
<!--
	非課税対象の手数料
	手数料合計、手数料消費税
	標準税率対象の手数料、標準税率対象の手数料税額
-->

<?php
if ( ! empty( $discount_arr ) ) { /* 値引きがある場合 */
	?>
	<tr>
		<td style="text-align: right;">
			<?php invoice_japan_discount_total_html( $discount_arr['discount_total'], $flag ); ?><br /><!-- 値引き金額合計 -->
			<?php echo esc_html( $invoicejapan_set['reduced_tax'] . '%対象:' . $discount_arr['discount_reduced'] ); ?><br /><!--  軽減税の値引き金額 -->
			<?php echo esc_html( $invoicejapan_set['normal_tax'] . '%対象:' . $discount_arr['discount_normal'] ); ?><!-- 標準税の値引き金額 -->
			<?php invoice_japan_discount_total_comment_html( $discount_arr, $flag ); ?>
		</td>
	</tr>
	<?php invoice_japan_shipping_html( $total_taxs, $invoicejapan_set['normal_tax'], $info_arr['only_virtual'], true ); ?><!-- 送料と税額 -->
	<tr>
		<td style="text-align: right;">
			<?php echo esc_html( '合計:' . $total_taxs['grand_total'] ); ?><br /><!-- 請求金額 -->
			<?php echo esc_html( $invoicejapan_set['reduced_tax'] . '%対象:' . $discount_arr['discount_reduced_total'] . ' 消費税:' . $discount_arr['discount_total_reduced_tax'] ); ?><br /><!-- 値引き後の軽減税率対象品税込み合計、税込み価格に対する軽減税( 8/108 ) -->
			<?php echo esc_html( $invoicejapan_set['normal_tax'] . '%対象:' . $discount_arr['discount_normal_total'] . ' 消費税:' . $discount_arr['discount_total_normal_tax'] ); ?><!-- 値引き後の標準税率対象品税込み合計、税込み価格に対する標準税( 10/110 ) -->
		</td>
	</tr>
	<?php
} else {
	/* 送料と税額 */
	invoice_japan_shipping_html( $total_taxs, $invoicejapan_set['normal_tax'], $info_arr['only_virtual'], true );
}
?>
</table>

<!-- 注釈 -->
<div class="comment">
* 軽減税率対象
<?php invoice_japan_total_none_html( $info_arr['total_none'], '&nbsp;&nbsp;&nbsp;&nbsp;' ); ?><!-- /* 不課税対象注釈 */ 引数:不課税対象品合計, 空白 -->
</div>

<!-- 請求先住所、配送先住所 -->
<table border="0" cellspacing="0" cellpadding="5">
	<tr>
		<td class="billing_address">
		<?php invoice_japan_billing_address_html( $info_arr ); ?><!-- /* 請求先住所 */ 引数:インフォメーション -->
		</td>
		<td class="shipping_address">
		<?php invoice_japan_shipping_address_html( $info_arr ); ?><!-- /* 配送先住所 */ 引数:インフォメーション -->
		</td>
	</tr>
</table>

<!-- 備考 -->
<?php invoice_japan_remarks_html( $info_arr['remark'], true ); ?><!-- /* 備考 */ 引数:備考, table の利用 -->

別の PDF 生成ライブラリを使用

標準の PDF 生成ライブラリの TCPDF でサポートされている html や css は限定的なので、期待した PDF が生成されない場合があります。そのような場合には、以下2つのサンプルコードの様に、フィルター invoice_japan_tcpdf_off を使い TCPDF をオフにし、invoice_japan_pdf_write フィルターで別の PDF 生成ライブラリを利用した処理を書き、受け渡した html から PDF を生成できます。

サンプルコード

/** ==================================================
 * 標準ライブラリの TCPDF をオフにする場合。
 * 以下の、'invoice_japan_pdf_write'フィルターと組み合わせで使用。
 *
 */
add_filter( 'invoice_japan_tcpdf_off', function(){ return true; }, 10, 1 );
/** ==================================================
 * 外部ライブラリを使用して html から PDF を生成。
 * 上記の、'invoice_japan_tcpdf_off'フィルターを true にして使用。
 *
 * @param string $pdf_file  pdf のフルパスファイル名.
 * @param string $html  html.
 * @param array  $info_arr  infomation.
 * @return bool pdf の生成が成功したら true を返し、失敗したら false を返す.
 */
add_filter(
    'invoice_japan_pdf_write',
    function( $pdf_file, $html, $info_arr ) {

        /* Your code */

        return true;
    },
    10,
    2
);
1独自のフォントを利用する 2テンプレートを利用して出力する PDF を変更する 3マーケットプレイス型のサイト対応とフィルター 4書式関連 5送信メール関連 6顧客入力関連

マウスオーバーか長押しで説明を表示。