Wordpress plugins
PDF Invoice Japan for WooCommerce

PDF Invoice Japan for WooCommerce

Version : 1.29
Tested up to : 6.4.1
Number of download : 16
Average rating : 5 / 5 on 3 votes 3 votes, 5 avg.rating

Screenshots

PDF Invoice Japan for WooCommerce
PDF Invoice Japan for WooCommerce
PDF Invoice Japan for WooCommerce
PDF Invoice Japan for WooCommerce

When an order is received in WooCommerce, a PDF invoice for Japan is generated and sent by email. 他のプラグインとの連携 WooCommerce が必要です。 請求書 2023年10月からの日本のインボイス制度に対応。 個別の登録番号の登録と表示 適格請求書(注文状況進行中、注文状況完了済み、の際に請求書としてメールへ PDF として添付し送信) 適格返還請求書(払戻の際に払戻明細書としてメールへ PDF として添付し送信) クーポンによる割引に対応 送料に対応 ライブラリ TCPDF. 動作 フィルター /** ================================================== * 「店舗の郵便番号」 * マーケットプレイス型サイト運用で販売者単位で変更する場合は * $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 );

Download now