ブログトップ
SOY Shopプラグインの解説 納品書やCSVを一括で出力する
2014年02月25日
前回は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で出力なので記述方法は変わりません。

