コミュニティにこんな質問がありましたので、できるかなと思い、やってみました。
お買上げ明細書(納品書)にお届け先を明記するには?
1.data/class/SC_Fpdf.php の 155行目付近に以下を書き加えました。
// 配送先情報 $text = '〒 '.$this->arrDisp['shipping_zip01'].' - '.$this->arrDisp['shipping_zip02']; $this->lfText(23, 243, $text, 10); //配送先郵便番号 $text = $this->arrPref[$this->arrDisp['shipping_pref']] . $this->arrDisp['shipping_addr01']; $this->lfText(27, 247, $text, 10); //配送先都道府県+住所1 $this->lfText(27, 251, $this->arrDisp['shipping_addr02'], 10); //配送先住所2 $text = $this->arrDisp['shipping_name01'].' '.$this->arrDisp['shipping_name02'].' 様'; $this->lfText(27, 259, $text, 11); //配送先氏名
IfText メソッドの第一引数がX方向の位置、第二引数がY方向の位置になりますので、
適当に数値を変えて、希望する場所に配置してください。
2.data/class/SC_Fpdf.php の 300行目付近にある、lfGetOrderData メソッドを以下のように修正しました。
// 受注データの取得 function lfGetOrderData($order_id) { if (SC_Utils_Ex::sfIsInt($order_id)) { // DBから受注情報を読み込む $objQuery =& SC_Query_Ex::getSingletonInstance(); $where = 'o.order_id = ?'; $arrRet = $objQuery->select('*', 'dtb_order as o LEFT JOIN dtb_shipping as s ON o.order_id = s.order_id', $where, array($order_id)); $this->arrDisp = $arrRet[0]; list($point) = SC_Helper_Customer_Ex::sfGetCustomerPoint($order_id, $arrRet[0]['use_point'], $arrRet[0]['add_point']); $this->arrDisp['point'] = $point; // 受注詳細データの取得 $arrRet = $this->lfGetOrderDetail($order_id); $arrRet = SC_Utils_Ex::sfSwapArray($arrRet); $this->arrDisp = array_merge($this->arrDisp, $arrRet); // その他支払い情報を表示 if ($this->arrDisp['memo02'] != '') { $this->arrDisp['payment_info'] = unserialize($this->arrDisp['memo02']); } $this->arrDisp['payment_type'] = 'お支払い'; } }
本来、受注データの取得ということで、dtb_order テーブルしか参照していないのですが、
LEFT JOIN で dtb_shipping も参照し、受注データに関連する配送情報も合わせて取得するようにしました。
こうすれば、$this->arrDisp に配送情報も格納されますので、1番の作業とあわせて、配送先情報が出力可能になります。
一番下の備考欄に、配送先情報が出力されるはずですので、帳票PDFを生成して確認してみてください。
あとは出力位置を地道に変えてあげれば良いと思います。