Açıklama
When an order is received in WooCommerce, a PDF invoice for Japan is generated and sent by email.
他のプラグインとの連携
- WooCommerce が必要です。
請求書
- 2023年10月からの日本のインボイス制度に対応。
- 個別の登録番号の登録と表示
- 適格請求書(注文状況進行中、注文状況完了済み、の際に請求書としてメールへ PDF として添付し送信)
- 適格返還請求書(払戻の際に払戻明細書としてメールへ PDF として添付し送信)
- クーポンによる割引に対応
- 送料に対応
ライブラリ
動作
フィルター
/** ==================================================
* 「店舗の郵便番号」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_store_postcode
*/
add_filter(
'invoice_japan_store_postcode',
function( $store_postcode, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$store_postcode = '123-4567';
break;
case 5:
$store_postcode = '765-4321';
break;
}
return $store_postcode;
},
10,
2
);
/** ==================================================
* 「店舗の住所」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_store_address
*/
add_filter(
'invoice_japan_store_address',
function( $store_address, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$store_address = '東京都テスト区てすと町123';
break;
case 5:
$store_address = '東京都てすと区テスト町321';
break;
}
return $store_address;
},
10,
2
);
/** ==================================================
* 「店舗の付記情報」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* (注)改行コード "\n" を付加して改行する
* invoice_japan_add_text
*/
add_filter(
'invoice_japan_add_text',
function( $add_text, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$add_text = 'Tel 03-4567-8091' . "\n";
$add_text .= 'Fax 03-4567-8092';
break;
case 5:
$add_text = 'Tel 06-5674-9801' . "\n";
$add_text .= 'Tel 06-5674-9802';
break;
}
return $add_text;
},
10,
2
);
/** ==================================================
* 「インボイス番号」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_number
*/
add_filter(
'invoice_japan_number',
function( $invoice_number, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$invoice_number = 'T2345678901201';
break;
case 5:
$invoice_number = 'T5678901201234';
break;
}
return $invoice_number;
},
10,
2
);
/** ==================================================
* 「請求先・配送先住所の配置」top(上),bottom(下)
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_address_position
*/
add_filter(
'invoice_japan_address_position',
function( $address_position, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$address_position = 'top';
break;
case 5:
$address_position = 'bottom';
break;
}
return $address_position;
},
10,
2
);
/** ==================================================
* 「備考」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_remark_{order(注文)か、refund(払い戻し)}_{決済方法(設定->決済のクエリパラメータ section の値) }
*/
add_filter(
'invoice_japan_remark_order_bankjp',
function( $remark, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$remark = '〇×銀行の口座へお振込みください。';
break;
case 5:
$remark = '×△銀行の口座へお振込みください。';
break;
}
return $remark;
},
10,
2
);
/** ==================================================
* 「払戻明細書の払戻方法」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_refund_text_{決済方法(設定->決済のクエリパラメータ section の値) }
*/
add_filter(
'invoice_japan_refund_text_bankjp',
function( $refund_text, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$refund_text = '銀行振込';
break;
case 5:
$refund_text = '現金書留';
break;
}
return $refund_text;
},
10,
2
);
/** ==================================================
* 「手数料」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_fee_text
*/
add_filter(
'invoice_japan_fee_text',
function( $fee_text, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$fee_text = 'クレジットカード手数料';
break;
case 5:
$fee_text = 'QUICPay 手数料';
break;
}
return $fee_text;
},
10,
2
);
/** ==================================================
* 「メール題名」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_{order(請求書)か、refund(払戻明細書)}_mail_subject
*
*/
add_filter(
'invoice_japan_order_mail_subject',
function( $mail_subject, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$mail_subject = '請求書 ' . get_bloginfo( 'name' );
break;
case 5:
$mail_subject = '請求書[' . get_bloginfo( 'name' ) . ']';
break;
}
return $mail_subject;
},
10,
2
);
/** ==================================================
* 「メール氏名」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_{order(請求書)か、refund(払戻明細書)}_mail_name
*
*/
add_filter(
'invoice_japan_order_mail_name',
function( $mail_name, $name, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$mail_name = $name . ' 御中';
break;
case 5:
$mail_name = $name . ' 先生';
break;
}
return $mail_name;
},
10,
3
);
/** ==================================================
* 「メール本文ヘッダー」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_{order(請求書)か、refund(払戻明細書)}_mail_head
*
*/
add_filter(
'invoice_japan_order_mail_head',
function( $mail_head, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$mail_head = null;
break;
case 5:
$mail_head = 'この度の、ご注文の請求書を PDF として添付いたしました。';
break;
}
return $mail_head;
},
10,
2
);
/** ==================================================
* 「メール注文(払戻)番号・日時」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_{order(請求書)か、refund(払戻明細書)}_mail_number_date
*
*/
add_filter(
'invoice_japan_order_mail_number_date',
function( $mail_number_date, $id, $date, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$mail_number_date = sprintf( '日付:%1$s 注文番号:%2$d', $date, $id );
break;
case 5:
$mail_number_date = sprintf( '注文番号 %1$d を、%2$s にお受けいたしました。', $id, $date );
break;
}
return $mail_number_date;
},
10,
4
);
/** ==================================================
* 「メール本文付記」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_{order(請求書)か、refund(払戻明細書)}_mail_body
*
*/
add_filter(
'invoice_japan_order_mail_body',
function( $mail_body, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$mail_body = 'この度は御購入ありがとうございます。';
break;
case 5:
$mail_body = 'この度はお買い求めありがとうございます。';
break;
}
return $mail_body;
},
10,
2
);
/** ==================================================
* 「メールヘッダー」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_{order(請求書)か、refund(払戻明細書)}_mail_headers_fromname
*
*/
add_filter(
'invoice_japan_order_mail_headers_fromname',
function( $vendor_name, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$vendor_name = '〇△商事';
break;
case 5:
$vendor_name = '〇×物産';
break;
}
return $vendor_name;
},
10,
2
);
/** ==================================================
* 「送信メールへの追加ファイル」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_attache
*/
add_filter(
'invoice_japan_attache',
function( $attachements, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$attachements[] = '/home/public_html/test/wordpress/wp-content/uploads/test.jpg';
break;
case 5:
$attachements[] = '/home/public_html/test/wordpress/wp-content/uploads/test2.jpg';
break;
}
return $attachements;
},
10,
2
);
/** ==================================================
* 「送信メールアドレスの追加」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_mail
*/
add_filter(
'invoice_japan_mail',
function( $send_mails, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $vendor_id ) {
case 3:
$send_mails[] = 'test3@testshop.test';
break;
case 5:
$send_mails[] = 'test5@testshop.test';
break;
}
return $send_mails;
},
10,
2
);
/** ==================================================
* 「PDF 設定」
*
* 印刷の向き<page_ort>
* 横 => 'L'
* 縦 => 'P'
*
* サイズ<page_size>
* B5, A4, B4, A3
*
* マージン<margin_{left, top, right, bottom}>
* mm 単位
*
* フォントサイズ<fontsize>
* Pt 単位
*
* フォント<font>
* IPAexゴシック => 'ipaexg'
* IPAex明朝 => 'ipaexm'
* 源真ゴシック Medium => 'genshingothicmedium'
* あおぞら明朝 Medium => 'aozoraminchomedium'
*
* ヘッダー・フッターのフォントサイズ<fontsize_{header, footer}>
* Pt 単位
*
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
* invoice_japan_pdf_set
*
*/
add_filter(
'invoice_japan_pdf_set',
function( $pdf_set, $vendor_id ) {
/* case の番号は、販売者のユーザーIDを指定 */
switch ( $pdf_set ) {
case 3:
$pdf_set = array(
'page_ort' => 'L',
'page_size' => 'B4',
'margin_left' => 20,
'margin_top' => 20,
'margin_right' => 20,
'margin_bottom' => 20,
'fontsize' => 13,
'font' => 'ipaexg',
'fontsize_header' => 15,
'fontsize_footer' => 10,
);
break;
case 5:
$pdf_set['font'] = 'ipaexm';
break;
}
return $pdf_set;
},
10,
2
);
/** ==================================================
* 「フォントの変更」
* マーケットプレイス型サイト運用で販売者単位で変更する場合は
* $vendor_id で振り分ける
*
* アドオンなど、標準のライブラリ TCPDF を利用していない場合に
* フォントをプラグイン外のディレクトリなどに置きたい場合
* 例:フォントディレクトリ /home/www/site.test/wp-content/uploads/font
* 例:ファイル名 LINESeedJP_TTF_Eb.ttf
* $font_arr['font_dir'] にはこのフォントディレクトリを使用
* $font_arr['file'] にはこのファイル名を使用
*
* 標準のライブラリ TCPDF を利用している場合は以下のコマンドと合わせて
* TCPDF 内に元のフォントファイルから新たなフォントファイルを作成しなければならない
* $font_arr['font_dir'],$font_arr['file'] は必要ないが、フォントを上記の場所に置いたとして
* コマンドラインでの php の操作が必要
* cd /home/www/site.test/wp-content/uploads/font
* php ../../plugins/pdf-invoice-japan-for-woocommerce/TCPDF/tools/tcpdf_addfont.php -i LINESeedJP_TTF_Eb.ttf
* pdf-invoice-japan-for-woocommerce/TCPDF/fonts 以下に
* lineseedjp_ttf_eb と名の付いた3つのファイルが作成されるのでこの名を以下の $font_arr['font'] に利用
* 元のファイルは削除できる
*
* アドオンなど、標準のライブラリ TCPDF を利用していない場合は
* 上記のコマンドライン操作は不要でフィルターのみで動作する
* その際に、$font_arr['font'] は適宜命名する
*
* invoice_japan_pdf_font
*/
add_filter(
'invoice_japan_pdf_font',
function( $font_arr, $vendor_id ) {
$font_arr['font'] = 'lineseedjp_ttf_eb';
$font_arr['font_dir'] = '/home/www/site.test/wp-content/uploads/font';
$font_arr['file'] = 'LINESeedJP_TTF_Eb.ttf';
return $font_arr;
},
10,
2
);
/** ==================================================
* 出力 html の変更
*
/**
* $id
* int
* 注文番号あるいは払い戻し番号
*/
/**
* $store_info_arr
* array
* 店舗情報
'postcode' => 〒郵便番号,
'address' => 住所,
'add_text' => 店舗の付記情報,
'number' => 登録番号:T*************,
*/
/**
* $info_arr
* array
* 受注先の情報
'name' => 氏名,
'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 の「銀行振込 (日本国内向け)」「郵便振替」の口座詳細),
*/
/**
* $items[ $product_id ] key $product_id は商品ID
* array
* 個別の受注の情報
'name' => 品名,
'quantity' => 数量,
'total' => 金額,
*/
/**
* $total_taxs
* array
* 合計金額
'grand_total' => 請求金額,
'total' => 税抜き合計,
'total_tax' => 消費税合計,
'reduced' => 軽減税率対象品税抜き合計,
'reduced_tax' => 軽減税合計,
'normal' => 標準税率対象品税抜き合計,
'normal_tax' => 標準税合計,
'shipping_total' => 送料税抜き,
'shipping_tax' => 送料消費税,
*/
/**
* $discount_arr
* array
* 値引き金額
'discount_total' => 値引き金額合計,
'discount_reduced' => 軽減税の値引き金額,
'discount_normal' => 標準税の値引き金額,
'discount_reduced_total' => 値引き後の軽減税率対象品税込み合計,
'discount_normal_total' => 値引き後の標準税率対象品税込み合計,
'discount_total_reduced_tax' => 税込み価格に対する軽減税( 8/108 ),
'discount_total_normal_tax' => 税込み価格に対する標準税( 10/110 ),
*/
/**
* $fee_arr
* array
* 手数料
'fee_text' => 表示テキスト,
'fee_total' => 手数料,
'fee_tax' => 標準税,
*/
/**
* $flag
* string
* フラグ
'order' 請求書
'refund' 払戻明細書
*/
add_filter(
'invoice_japan_order_generate_html',
function ( $html, $id, $store_info_arr, $info_arr, $items, $total_taxs, $discount_arr, $fee_arr $flag ) {
$invoicejapan = new InvoiceJapan(); /* 必須 */
$invoicejapan_set = get_option( 'invoicejapan' ); /* 必須 */
$html = '<h1>' . $info_arr['title_text'] . '</h1>';
$html .= '<div>' . $info_arr['order_refund_num_text'] . '</div>';
$html .= '<div>登録番号:' . $store_info_arr['number'] . '</div>';
$html .= $invoicejapan->address_html( $invoicejapan_set['address_position'], $info_arr, 'top' ); /* 必須(請求先・配送先住所) */
/* Your code */
$html .= $invoicejapan->address_html( $invoicejapan_set['address_position'], $info_arr, 'bottom' ); /* 必須(請求先・配送先住所) */
$html .= $invoicejapan->remarks_html( $info_arr['remark'] ); /* 必須(備考) */
/* Your code */
return $html;
},
10,
9
);
/** ==================================================
* 標準ライブラリの 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
);
Yükleme
/wp-content/plugins/
ディレクトリ以下にpdf-invoice-japan-for-woocommerce
ディレクトリをアップロードします。- WordPress の「プラグイン」メニューからプラグインを有効化してください
SSS
ありません
İncelemeler
Katkıda Bulunanlar ve Geliştiriciler
“PDF Invoice Japan for WooCommerce” açık kaynaklı yazılımdır. Aşağıdaki kişiler bu eklentiye katkıda bulunmuşlardır.
Katkıda bulunanlar“PDF Invoice Japan for WooCommerce” 1 dile çevrildi. Katkıda bulundukları için çevirmenlere teşekkürler.
“PDF Invoice Japan for WooCommerce” eklentisini dilinize çevirin.
Geliştirmeyle ilgilenir misiniz?
Kodu görüntüle, SVN deposuna göz at veya RSS ile geliştirme günlüğüne abone ol.
Değişiklik Kaydı
1.30
請求書と払戻明細書を注文画面から再送する機能を追加しました。
手数料の別名を設定できるようになりました。
1.29
手数料の消費税が0円の時に、非課税と出力するようにしました。
1.28
手数料が出力できるようになりました。
1.27
メールヘッダーを、店舗サイト名・販売者のメールアドレスで出力するようにしました。
マーケットプレイス型サイト運用に対応するために、メールヘッダーの店舗サイト名を販売者単位で変更できるフィルター ‘invoice_japan_{order(注文)か、refund(払い戻し)}_mail_headers_fromname’ を用意しました。
1.26
WooCommerce がインストールされていないか、無効化されているサイトで、「有効化」の際に起きる問題を修正しました。
1.25
不要なフォントファイルを削除しました。
1.24
プラグインが読み込まれない問題を修正しました。
1.23
WooCommerce がインストールされていないか、無効化されているサイトで、「有効化」の際に起きる問題を修正しました。
1.22
フォントディレクトリ(fonts)を作成しました。
フォントディレクトリ(fonts)内に各フォントのライセンスを明記しました。
独自のフォントを追加できる、invoice_japan_pdf_font フィルターを追加しました。
1.21
小塚フォントを廃止しました。
アドオンに関する修正をしました。
請求先住所が無い場合に、請求先住所欄に請求先氏名が表示される不具合を修正しました。
1.20
デフォルトフォントをIPAexゴシックにしました。
次の2フォントを追加しました。(源真ゴシック Medium、あおぞら明朝 Medium)
1.19
マーケットプレイス型サイト運用に対応するために、一部のフィルターを対応させ、幾つかのフィルターを追加しました。readme.txt か、プラグインページをご覧ください。
1.18
マーケットプレイス型サイト運用に対応するために、一部のフィルターを対応させ、幾つかのフィルターを追加しました。readme.txt か、プラグインページをご覧ください。
1.17
マーケットプレイス型サイト運用に対応するために、一部のフィルターを対応させ、幾つかのフィルターを追加しました。readme.txt か、プラグインページをご覧ください。
1.16
インボイス番号のフィルターを追加しました。
通知メールをサイト管理者への通知から販売者への通知へ変更しました。
1.15
IPAex フォントを追加し、不要なフォントオプションを削除しました。
1.14
決済方法毎に「備考」の「注文」と「払い戻し」を指定できるようになりました。
決済方法毎に払い戻しの際の「払戻方法」を指定できるようになりました。
1.13
決済方法毎に「備考」を指定できるようになりました。
1.12
請求先・配送先住所、備考欄を関数化しました。
1.11
備考欄を追加しました。
1.10
請求先・配送先住所の配置を明細の前後どちらかに設定できるようにしました。
Japanized for WooCommerceの「銀行振込 (日本国内向け)」「郵便振替」の口座詳細を、「支払い先」として、PDF に出力するようにしました。
1.09
ライブラリTCPDFを更新しました。
表示を若干変更しました。
1.08
決済方法の有効・無効時に「メール送信のタイミング」が追随しない問題を修正しました。
1.07
決済方法毎に「メール送信のタイミング」を指定できるようになりました。
「支払い待ち」と「保留中」が入れ替わっていたのを正常な状態に戻しました。
1.06
「メール送信のタイミング」の設定項目を追加しました。
1.05
高パフォーマンス注文ストレージ (COT)に対応しました。
1.04
アドオンの為のコードを追加しました。
1.03
不要なコードを除去しました。
1.02
店舗情報の生成を html 生成時では無く、html 生成前に修正しました。
‘invoice_japan_pdf_write’ フィルターの中での戻り値に、bool 値を指定する仕様にしました。
readme.txt を修正しました。
1.01
インストール時の不具合を修正しました。
1.00
初回リリース。