SOY CMS / SOY Shop

ブログトップ

SOY Shopプラグインの解説 納品書やCSVを一括で出力する

2014年02月25日

前回はsoyshop.order.function.phpという拡張ポイントで個別の注文の納品書やCSVファイルを出力しました。

SOY Shopプラグインの解説 注文個別の納品書やCSVを出力する


今回は納品書やCSVファイルを一括で出力する方法を紹介します。

SOY Shopプラグインの解説 拡張ポイントについて




前回に引き続き、今回も1.13.5に同梱予定の印刷用納品書作成プラグイン バージョン1.2をベースで話を進めます。

(プラグインID : order_invoice)

order_invoice_1.2.zipのダウンロード


構造は下記のようになっています。



納品書や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で出力なので記述方法は変わりません。