Labo

[EC-CUBE 2.12.2] 帳票出力でお届け先情報も出力したい

2013年02月02日 / 投稿者名:fukap


コミュニティにこんな質問がありましたので、できるかなと思い、やってみました。
お買上げ明細書(納品書)にお届け先を明記するには?

 

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を生成して確認してみてください。
あとは出力位置を地道に変えてあげれば良いと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。