コミュニティにこんな質問がありましたので、できるかなと思い、やってみました。
お買上げ明細書(納品書)にお届け先を明記するには?
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を生成して確認してみてください。
あとは出力位置を地道に変えてあげれば良いと思います。











