EC-CUBE4で出力される納品書の左上には、お届け先の住所や氏名が表示されます。
しかし、お中元など注文者とお届け先が異なる場合、購入した方に送る納品書にお届け先の住所が出力されてしまいます。
OrderPdfService.php内のコメントには購入者と書かれていますが、実際のコードはお届け先を出力するようになっていル様です。
EC-CUBEの納品書に関するファイルは、
ec-cube/src/Eccube/Service/OrderPdfService.php
にあります。
購入者情報に関する記述があるのは、OrderPdfService.phpの420行目あたり。
OrderPdfService.php内で、
$Shipping->getName01()
となっているところを
$Shipping->getOrder()->getName01()
と、getOrder()を追加することで、注文者の情報を出力できるようです。
変更前
// =========================================
// 購入者情報部
// =========================================
$Order = $Shipping->getOrder();
// 購入者都道府県+住所1
// $text = $Order->getPref().$Order->getAddr01();
$text = $Shipping->getPref().$Shipping->getAddr01();
$this->lfText(27, 47, $text, 10);
$this->lfText(27, 51, $Shipping->getOrder()->getAddr02(), 10); //購入者住所2
// 購入者氏名
$text = $Shipping->getName01().' '.$Shipping->getName02().' 様';
$this->lfText(27, 59, $text, 11);
変更後
// =========================================
// 購入者情報部
// =========================================
$Order = $Shipping->getOrder();
// 購入者都道府県+住所1
// $text = $Order->getPref().$Order->getAddr01();
$text = $Shipping->getOrder()->getPref().$Shipping->getOrder()->getAddr01(); //変更部分
$this->lfText(27, 47, $text, 10);
$this->lfText(27, 51, $Shipping->getOrder()->getAddr02(), 10); //購入者住所2 //変更部分
// 購入者氏名
$text = $Shipping->getOrder()->getName01().' '.$Shipping->getOrder()->getName02().' 様'; //変更部分
$this->lfText(27, 59, $text, 11);
説明するために、getOrder()->を複数箇所に追加してますが、すでに注文者情報を出力するための変数
$Order = $Shipping->getOrder();
があるので、これに全部書き換えるのもアリですよね。
目次
参考サイト
あわせて読みたい
EC-CUBE 開発コミュニティ – フォーラム
独自性の高いECサイトが無料で手に入る、日本発ECオープンプラットフォーム「EC-CUBE」の開発コミュニティサイト