アップグレード後に必ずこのアドオンを更新する。納品書出力機能
“my_changes_addon注文一覧にPDF印刷を追加” をダウンロード my_changes_addon2.zip – 3 回のダウンロード – 11.49 KB※4.11.5-jp-1用。
内容は下記の通り。(localization_jpアドオンのPDF印刷処理を流用します。My changes アドオンを使用します)
PDF印刷処理を追加
①「localization_jp」からの流用。ファイルを追加。
app/addons/localization_jp/func.phpから納品書に関する処理をコピーしapp/addons/my_changes/func.phpに追加。
ただのコピペで良い。
②コピーした関数名を変更します。
変更前
fn_lcjp_adjust_customer_comment
fn_lcjp_adjust_strings
fn_lcjp_convert_price
fn_lcjp_count_total_line
fn_lcjp_format_price_by_currency
fn_lcjp_get_add_profile_fields
fn_lcjp_get_customer_extra_field_data
fn_lcjp_get_url_font_size
fn_lcjp_print_order_line
fn_lcjp_print_pdf_header
fn_lcjp_print_pdf_invoice
↓変更後
fn_my_changes_adjust_customer_comment fn_my_changes_adjust_strings fn_my_changes_convert_price fn_my_changes_count_total_line fn_my_changes_format_price_by_currency fn_my_changes_get_add_profile_fields fn_my_changes_get_customer_extra_field_data fn_my_changes_get_url_font_size fn_my_changes_print_order_line fn_my_changes_print_pdf_header fn_my_changes_print_pdf_invoice
③コントローラーを追加します。場所は
app/addons/my_changes/controllers/backend/orders.pre.php
<?php
use Tygh\Registry;
if (!defined(‘BOOTSTRAP’)) { die(‘Access denied’); }// 注文詳細用の処理
if ($mode == ‘print_new’) {
if (!empty($_REQUEST[‘order_id’])) {
$order_info = fn_get_order_info($_REQUEST[‘order_id’]);
if (empty($order_info)) {
return array(CONTROLLER_STATUS_NO_PAGE);
}
if (!empty($_REQUEST[‘format’]) && $_REQUEST[‘format’] == ‘pdf’) {
fn_my_changes_print_pdf_invoice($_REQUEST[‘order_id’]);
exit;
}
}
}// 注文一覧での一括印刷用の処理
// ただし、現在この一括印刷処理は無効。PDF印刷機能がアドオン化したため。2022.4.4
if ($mode == ‘bulk_print_new’ && !empty($_REQUEST[‘order_ids’]) && Registry::get(‘runtime.dispatch_extra’) == ‘pdf’) {
fn_my_changes_print_pdf_invoice($_REQUEST[‘order_ids’]);
exit;
}
④注文詳細のメニューに追加します。designディレクトリの上書きになります。
注文詳細のコアテンプレートはdesign/backend/templates/views/orders/details.tpl
対象箇所は以下。
{capture name=”tools_list”}
{hook name=”orders:details_tools”}
<li>{btn type=”list” text=$print_order href=”orders.print_invoice?order_id=`$order_info.order_id`” class=”cm-new-window”}</li>
<li>{btn type=”list” text=$print_pdf_order href=”orders.print_invoice?order_id=`$order_info.order_id`&format=pdf”}</li>
{if $settings.Appearance.email_templates == ‘new’}
<li>{btn type=”list” text=__(“edit_and_send_invoice”) href=”orders.modify_invoice?order_id=`$order_info.order_id`”}</li>
{/if}
<li>{btn type=”list” text=__(“print_packing_slip”) href=”orders.print_packing_slip?order_id=`$order_info.order_id`” class=”cm-new-window”}</li>
<li>{btn type=”list” text=__(“print_pdf_packing_slip”) href=”orders.print_packing_slip?order_id=`$order_info.order_id`&format=pdf” class=”cm-new-window”}</li>
<li>{btn type=”list” text=__(“edit_order”) href=”order_management.edit?order_id=`$order_info.order_id`”}</li>
<li>{btn type=”list” text=__(“copy”) href=”order_management.edit?order_id=`$order_info.order_id`©=1″}</li>
{$smarty.capture.adv_tools nofilter}
{/hook}
{/capture}
こちらはフック{hook name="orders:details_tools"}で囲まれているので、対象の箇所だけオーバーライドしてあげます。
以下のようにファイルを作成します。
design/backend/templates/addons/my_changes/hooks/orders/details_tools.override.tpl
<li>{btn type=”list” text=$print_order href=”orders.print_invoice?order_id=`$order_info.order_id`” class=”cm-new-window”}</li>
<li>{btn type=”list” text=$print_pdf_order href=”orders.print_invoice?order_id=`$order_info.order_id`&format=pdf”}</li><li>{btn type=”list” text=”新規PDF” href=”orders.print_new?order_id=`$order_info.order_id`&format=pdf”}</li>
{if $settings.Appearance.email_templates == ‘new’}
<li>{btn type=”list” text=__(“edit_and_send_invoice”) href=”orders.modify_invoice?order_id=`$order_info.order_id`”}</li>
{/if}
<li>{btn type=”list” text=__(“print_packing_slip”) href=”orders.print_packing_slip?order_id=`$order_info.order_id`” class=”cm-new-window”}</li>
<li>{btn type=”list” text=__(“print_pdf_packing_slip”) href=”orders.print_packing_slip?order_id=`$order_info.order_id`&format=pdf” class=”cm-new-window”}</li>
<li>{btn type=”list” text=__(“edit_order”) href=”order_management.edit?order_id=`$order_info.order_id`”}</li>
<li>{btn type=”list” text=__(“copy”) href=”order_management.edit?order_id=`$order_info.order_id`©=1″}</li>
{$smarty.capture.adv_tools nofilter}
これで、キャッシュクリアするとメニューに追加されていますので、追加したPDFが出力されるようになっています。
※一般設定 > ストレージ > キャッシュのクリア
※うまく反映されない場合はvar/cache/配下を直接削除します。
