教文館の社内ナレッジベースです。

アップグレード後に必ずこのアドオンを更新する。納品書出力機能

“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/配下を直接削除します。