EC-CUBE2.3.xで納品書を一括出力する
EC-CUBE 2.4.0 で新たに追加された機能として、「納品書の一括出力」というのがあり、これがすごい魅力的だと常々お客様から言われてたので、2.3.4バージョンでも追加してみることに。
変更箇所は
テンプレートファイル(/data/Smarty/templates/default/admin/order)
index.tpl
pdf_input.tpl
この二つは、多分従来カスタマイズしていなければ、2.4.0バージョンのファイルと
そのまま置き換えても問題ないと思う。
ウチは、CSV出力設定へ飛ぶ部分はユーザがいぢれないように制御していたので
そこの部分を注意しながら PDFダウンロードボタンの追加や、
チェックボックスの追加をしました。
クラスファイル(/data/class/pages/admin/order/LC_Page_Admin_Order_Pdf.php)
モードによる条件分岐の部分、
case "confirm":
の中身で コメント // エラー入力なし 以下の部分を
if (count($this->arrErr) == 0) {
$i = 0;
$objFpdf = new SC_Fpdf($arrRet['download'], $arrRet['title']);
foreach ( $arrRet['order_id'] AS $key=>$val ) {
$arrPdfData = $arrRet;
$arrPdfData['order_id'] = $val;
$objFpdf->setData($arrPdfData);
++$i;
}
$objFpdf->createPdf();
}
に置き換え。
コメント // 受注番号があったら、セットする 以下の部分を
if(SC_Utils_Ex::sfIsInt($_GET['order_id'])) {
$arrForm['order_id'][0] = $_GET['order_id'];
} elseif (is_array($_POST['pdf_order_id'])) {
sort($_POST['pdf_order_id']);
foreach ($_POST['pdf_order_id'] AS $key=>$val) {
$arrForm['order_id'][] = $val;
}
}
に置き換え。
クラスファイル(/data/class/SC_Fpdf.php)
ファンクション SC_Fpdf のパラメータががらりと変わっているので、
2.4.0の記述の同じファンクションの行とそのまま置き換え。
旧 function SC_Fpdf($arrData, $tpl_pdf = "template_nouhin01.pdf") {
↓ ↓
新 function SC_Fpdf($download, $title, $tpl_pdf = "template_nouhin01.pdf") {
これに伴い、$arrDataで含まれてい筈のデータをセットしている部分を書き換え
旧
$this->pdf_download = $arrData[download]; // PDFのダウンロード形式(0:表示、1:ダウンロード)
$this->tpl_title = $arrData['title'];
↓ ↓
新
$this->pdf_download = $download; // PDFのダウンロード形式(0:表示、1:ダウンロード)
$this->tpl_title = $title;
新しいファンクション setData の追加
function setData($arrData) {
$this->arrData = $arrData;
// ページ番号よりIDを取得
$tplidx = $this->pdf->ImportPage(1);
// ページを追加(新規)
$this->pdf->AddPage();
//表示倍率(100%)
$this->pdf->SetDisplayMode($this->tpl_dispmode);
if(SC_Utils_Ex::sfIsInt($arrData['order_id'])) {
$this->disp_mode = true;
$order_id = $arrData['order_id'];
}
// テンプレート内容の位置、幅を調整 ※useTemplateに引数を与えなければ100%表示がデフォルト
$this->pdf->useTemplate($tplidx);
$this->setShopData();
//ロゴ画像
$this->pdf->Image(PDF_IMG_DIR. 'logo.png', 124, 46, 60);
$this->setMessageData();
$this->setOrderData();
$this->setEtcData();
}
※ここで注意したいのは、logo.pngの格納場所が2.4.0では変わってしまっているため、
ロゴ画像をセットしているところについては、従来の記述の部分にすること。
また、このファンクション追加により、ページ番号をセットしていた部分はごそっと削除。
ファンクション createPdf 内の コメント // PDFをブラウザに送信 以下の条件文を書き換え。
if ($this->pdf->PageNo() == 1) {
$filename = "nouhinsyo-No".$this->arrData['order_id'].".pdf";
} else {
$filename = "nouhinsyo.pdf";
}
$this->pdf->Output($this->sjis_conv($filename), D);
// 入力してPDFファイルを閉じる
$this->pdf->Close();
}
とりあえず、これで複数の受注を選択してPDF出力できるようにはなったんですが、
ページのカウントが全体で行われてしまってます。
折を見て改修します(汗)。
| 固定リンク | コメント (0) | トラックバック (0)




最近のコメント