SOY Shopプラグインの解説 納品書やCSVを一括で出力する
前回はsoyshop.order.function.phpという拡張ポイントで個別の注文の納品書やCSVファイルを出力しました。
SOY Shopプラグインの解説 注文個別の納品書やCSVを出力する
今回は納品書やCSVファイルを一括で出力する方法を紹介します。
前回に引き続き、今回も1.13.5に同梱予定の印刷用納品書作成プラグイン バージョン1.2をベースで話を進めます。
(プラグインID : order_invoice)
構造は下記のようになっています。
納品書やCSVを一括で出力する機能を追加するために、soyshop.order.export.phpという拡張ポイントを使用します。
soyshop.order.export.phpは検索結果をエクスポートするの箇所にボタンが追加されます。
/soyshop/webapp/src/logic/plugin/extensions/soyshop.order.export.phpを見ると
class SOYShopOrderExportBase implements SOY2PluginAction{ function getMenuTitle(){ return ""; } function getMenuDescription(){ return ""; } function export($orders){ } }
getMenuTitle、getMenuDescriptionとexport関数が用意されており、
getMenuTitleとgetMenuDescriptionで文字列を返すと
ここにボタンが表示されるようになります。
出力の処理はexport関数で行われ、
印刷用納品書作成プラグイン(order_invoice)のexportを見ると
function export($orders){ SOY2::import("module.plugins.order_invoice.common.OrderINvoiceCommon"); $template = OrderINvoiceCommon::getTemplateName(); $html = file_get_contents(dirname(__FILE__) . "/template/" . $template . ".html"); SOY2DAOFactory::create("order.SOYShop_ItemModule"); SOY2DAOFactory::create("config.SOYShop_ShopConfig"); include_once(dirname(__FILE__) . "/page/ContinuousPage.class.php"); $page = SOY2HTMLFactory::createInstance("ContinuousPage", array( "arguments" => array("main_print", $html), "orders" => $orders )); $page->setTitle("納品書"); $page->build_print(); ob_start(); $page->display(); $html = ob_get_contents(); ob_end_clean(); echo $html; }
注文一覧に表示されている注文、つまりは検索結果で表示された注文がexport関数に渡され、
functionの時のgetPageで行ったような処理を行います。
ここで注意しなければならない点として、
納品書出力の場合、getPageではreturn $html;とHTMLを返していたが、
exportの場合は何かを表示するための拡張ポイントではないので、
echo $html;で処理の途中経過を出力するという手段をとります。
CSV出力の場合は、どちらでもechoで出力なので記述方法は変わりません。