<?php
/**
 * 請求書テンプレート（HTMLベース / mPDF レンダリング前提）。
 *
 * このファイルはテーマ側
 * `yourtheme/neutrope-japanese-invoice-pdfs-for-woocommerce/invoice.php`
 * へコピーして上書きできます。
 *
 * 渡される変数:
 *
 * @var string   $document_title
 * @var WC_Order $order
 * @var string   $order_number
 * @var string   $order_date
 * @var string   $billing_name
 * @var string   $billing_company
 * @var string   $billing_address
 * @var string   $company_name
 * @var string   $company_address
 * @var string   $logo_path
 * @var array    $items
 * @var string   $currency
 * @var float    $total
 * @var float    $total_tax
 * @var bool     $is_pro
 * @var string   $type
 *
 * @package Neutrope_Japanese_Invoice_PDFs_For_WooCommerce
 */

defined( 'ABSPATH' ) || exit;

if ( ! function_exists( 'wcjbp_tpl_price' ) ) {
	/**
	 * PDF内で金額を整形する（HTMLタグを除去したプレーン表記）。
	 *
	 * @param float  $amount   金額。
	 * @param string $currency 通貨コード。
	 * @return string
	 */
	function wcjbp_tpl_price( $amount, $currency ) {
		$html = wc_price( $amount, array( 'currency' => $currency ) );
		return html_entity_decode( wp_strip_all_tags( $html ), ENT_QUOTES, 'UTF-8' );
	}
}

// 税抜小計（税込合計 − 消費税）。日本の税込表記に対する素直な内訳。
$wcjbp_subtotal = max( 0, (float) $total - (float) $total_tax );

/**
 * 宛名の敬称。無料版の既定は「様」。
 *
 * Pro版・外部コードで「御中」等へ切り替え、または空文字で非表示にできる。
 *
 * @param string   $suffix 既定の敬称（様）。
 * @param WC_Order $order  注文。
 */
$wcjbp_recipient_suffix = (string) apply_filters(
	'wcjbp_invoice_recipient_suffix',
	__( '様', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ),
	$order
);
?>
<!DOCTYPE html>
<html lang="<?php echo esc_attr( get_locale() ); ?>">
<head>
	<meta charset="UTF-8" />
	<?php
	// スタイルはテンプレートへ生の CSS を echo せず、PDFレンダラ（class-pdf.php）が
	// mPDF の HEADER_CSS として assets/css/invoice.css を読み込む。
	// テーマ上書き時に独自スタイルが必要なら、ここに <style> を追記してもよい。
	?>
</head>
<body>

<div class="wcjbp-doc">

	<div class="wcjbp-title-wrap">
		<h1 class="wcjbp-title"><?php echo esc_html( $document_title ); ?></h1>
	</div>

	<?php
	/**
	 * ヘッダー直後の拡張ポイント。
	 *
	 * Pro版は適格請求書番号などをここに描画する。
	 *
	 * @param WC_Order $order
	 */
	do_action( 'wcjbp_invoice_after_header', $order );
	?>

	<div class="wcjbp-meta-block">
		<div class="wcjbp-meta-row"><?php esc_html_e( '注文番号', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ); ?>：<?php echo esc_html( $order_number ); ?></div>
		<?php if ( $order_date ) : ?>
			<div class="wcjbp-meta-row"><?php esc_html_e( '発行日', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ); ?>：<?php echo esc_html( $order_date ); ?></div>
		<?php endif; ?>
	</div>

	<table class="wcjbp-parties">
		<tr>
			<td class="wcjbp-col-billto">
				<div class="wcjbp-section-label"><?php esc_html_e( '宛名', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ); ?></div>
				<?php if ( ! empty( $billing_company ) ) : ?>
					<div class="wcjbp-bill-company"><?php echo esc_html( $billing_company ); ?></div>
				<?php endif; ?>
				<div class="wcjbp-recipient">
					<strong class="wcjbp-recipient-name"><?php echo esc_html( $billing_name ); ?></strong>
					<?php if ( '' !== $wcjbp_recipient_suffix ) : ?>
						&nbsp;<strong class="wcjbp-recipient-suffix" style="font-size:12pt;"><?php echo esc_html( $wcjbp_recipient_suffix ); ?></strong>
					<?php endif; ?>
				</div>
				<?php
				/**
				 * 宛名まわりの追加拡張ポイント（後方互換のため維持）。
				 *
				 * 敬称自体は wcjbp_invoice_recipient_suffix フィルタで制御する。
				 *
				 * @param WC_Order $order
				 */
				do_action( 'wcjbp_invoice_billing_suffix', $order );
				?>
				<div class="wcjbp-bill-gap">&nbsp;</div>
				<?php if ( $billing_address ) : ?>
					<div class="wcjbp-bill-address" style="line-height:1.95;"><?php echo wp_kses_post( $billing_address ); ?></div>
				<?php endif; ?>
			</td>

			<td class="wcjbp-col-issuer">
				<?php if ( $logo_path && is_readable( $logo_path ) ) : ?>
					<div><img class="wcjbp-logo" src="<?php echo esc_attr( $logo_path ); ?>" alt="" /></div>
				<?php endif; ?>
				<?php if ( $company_name ) : ?>
					<div class="wcjbp-company-name"><?php echo esc_html( $company_name ); ?></div>
				<?php endif; ?>
				<?php if ( $company_address ) : ?>
					<div class="wcjbp-company-address" style="line-height:1.95;"><?php echo nl2br( esc_html( $company_address ) ); ?></div>
				<?php endif; ?>
				<?php
				/**
				 * 発行者ブロックの拡張ポイント。
				 *
				 * Pro版は会社印・登録番号などをここに描画する。
				 *
				 * @param WC_Order $order
				 */
				do_action( 'wcjbp_invoice_issuer_extra', $order );
				?>
			</td>
		</tr>
	</table>

	<?php do_action( 'wcjbp_invoice_before_items', $order ); ?>

	<table class="wcjbp-items-table">
		<thead>
			<tr>
				<th class="wcjbp-col-name"><?php esc_html_e( '品名', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ); ?></th>
				<th class="wcjbp-col-qty"><?php esc_html_e( '数量', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ); ?></th>
				<th class="wcjbp-col-amount"><?php esc_html_e( '金額', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ); ?></th>
			</tr>
		</thead>
		<tbody>
			<?php
			// 注文明細（WC_Order_Item_Product）.
			foreach ( $items as $wcjbp_item ) :
				$wcjbp_line_total = $order->get_line_total( $wcjbp_item, false, true );
				?>
				<tr>
					<td class="wcjbp-col-name"><?php echo esc_html( $wcjbp_item->get_name() ); ?></td>
					<td class="wcjbp-col-qty"><?php echo esc_html( $wcjbp_item->get_quantity() ); ?></td>
					<td class="wcjbp-col-amount"><?php echo esc_html( wcjbp_tpl_price( $wcjbp_line_total, $currency ) ); ?></td>
				</tr>
			<?php endforeach; ?>

			<?php
			// 送料行（税抜）。注文に送料がある場合のみ行を追加する。
			// 小計（税抜）は total - total_tax（送料を含む）のため、送料行を
			// 明細へ加えることで、明細合計と小計が一致する。
			foreach ( wcjbp_get_shipping_rows( $order ) as $wcjbp_shipping ) :
				?>
				<tr>
					<td class="wcjbp-col-name"><?php echo esc_html( $wcjbp_shipping['label'] ); ?></td>
					<td class="wcjbp-col-qty">&nbsp;</td>
					<td class="wcjbp-col-amount"><?php echo esc_html( wcjbp_tpl_price( $wcjbp_shipping['total'], $currency ) ); ?></td>
				</tr>
			<?php endforeach; ?>
		</tbody>
	</table>

	<?php do_action( 'wcjbp_invoice_after_items', $order ); ?>

	<table class="wcjbp-totals-outer">
		<tr>
			<td class="wcjbp-totals-spacer">&nbsp;</td>
			<td class="wcjbp-totals-cell">
				<table class="wcjbp-totals-table">
					<?php
					/**
					 * 合計の前の拡張ポイント。
					 *
					 * Pro版は税率別の内訳（10% / 8% 軽減税率）をここに描画する。
					 * 無料版は「小計・消費税・税込合計」のまとめ表示のみ。
					 *
					 * @param WC_Order $order
					 */
					do_action( 'wcjbp_invoice_before_total', $order );
					?>
					<tr>
						<td class="wcjbp-totals-label"><?php esc_html_e( '小計（税抜）', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ); ?></td>
						<td class="wcjbp-totals-value"><?php echo esc_html( wcjbp_tpl_price( $wcjbp_subtotal, $currency ) ); ?></td>
					</tr>
					<tr>
						<td class="wcjbp-totals-label"><?php esc_html_e( '消費税', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ); ?></td>
						<td class="wcjbp-totals-value"><?php echo esc_html( wcjbp_tpl_price( $total_tax, $currency ) ); ?></td>
					</tr>
					<tr class="wcjbp-grand-total">
						<td class="wcjbp-totals-label"><?php esc_html_e( '合計金額（税込）', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ); ?></td>
						<td class="wcjbp-totals-value"><?php echo esc_html( wcjbp_tpl_price( $total, $currency ) ); ?></td>
					</tr>
				</table>
			</td>
		</tr>
	</table>

	<?php
	/**
	 * フッターの拡張ポイント。
	 *
	 * Pro版は銀行振込情報・支払期限・但し書きなどをここに描画する。
	 *
	 * @param WC_Order $order
	 */
	do_action( 'wcjbp_invoice_footer', $order );
	?>

	<?php
	/**
	 * フッター注記の表示可否。
	 *
	 * 無料版は既定 true（表示）。Pro版は既定 false。Pro版・外部コードは
	 * このフィルターで表示/非表示を上書きできる。
	 *
	 * @param bool     $show  既定の表示可否（無料版 true / Pro版 false）。
	 * @param WC_Order $order 注文。
	 */
	$wcjbp_show_footer_note = (bool) apply_filters( 'wcjbp_show_invoice_footer_note', ! $is_pro, $order );

	/**
	 * フッター注記の文言。
	 *
	 * 既定は控えめな出典表記。Pro版・外部コードで自由に差し替え可能。
	 *
	 * @param string   $note  既定文言。
	 * @param WC_Order $order 注文。
	 */
	$wcjbp_footer_note = (string) apply_filters(
		'wcjbp_invoice_footer_note',
		__( 'This invoice was generated by Neutrope Japanese Invoice PDFs for WooCommerce.', 'neutrope-japanese-invoice-pdfs-for-woocommerce' ),
		$order
	);

	$wcjbp_render_footer_note = ( $wcjbp_show_footer_note && '' !== trim( $wcjbp_footer_note ) );
	?>

	<?php if ( $wcjbp_render_footer_note ) : ?>
		<div class="wcjbp-foot-note"><?php echo esc_html( $wcjbp_footer_note ); ?></div>
	<?php endif; ?>

</div>

</body>
</html>
