質問 > フロント機能 > その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
cro233 |
投稿日時: 2020/10/6 15:37
対応状況: −−−
|
常連 登録日: 2020/1/9 居住地: 投稿: 69 |
その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい [EC-CUBE] 4.0.3
[レンタルサーバ] エックスサーバー [OS] Mac OS [PHP] 7.2.27 [データベース] MySQL 5.7.27 [WEBサーバ] Apache [ブラウザ] Google Chrome、Safari ▼やりたいこと https://umebius.com/eccube/%E5%8F%97%E6%B3%A8%E7%AE%A1%E7%90%86-%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E6%98%8E%E7%B4%B0%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/ 上記のURLで受注登録画面に「その他明細」を新しく追加することができました。 このままの状態で「その他明細」代金をプラスした際、管理画面では項目が現れますが、納品書に出力した際に項目が表示されないため、このままだと運用ができないと考えております。 納品書をカスタマイズしたいのですが、該当ファイル「OrderPdfService.php」のどこにどう追記すれば良いのかわかりません。 おそらく下記が該当部分なのかな、、と思っております。 〇〇〇〇部分に当てはまるものがわかりません。 if (!$Order->isMultiple()) { // ========================================= // 小計 // ========================================= $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '商品合計'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getSubtotal()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '送料'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getDeliveryFeeTotal()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '手数料'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getCharge()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '値引き'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getTaxableDiscount()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = 'その他明細'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->〇〇〇〇()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '合計'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getTaxableTotal()); foreach ($Order->getTaxableTotalByTaxRate() as $rate => $total) { ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '('.$rate.'%対象)'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($total); } ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; foreach($Order->getTaxFreeDiscountItems() as $Item) { ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = $Item->getProductName(); $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Item->getTotalPrice()); } ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '請求金額'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getPaymentTotal()); ++$i; $arrOrder[$i][0] = '※は軽減税率対象商品です。'; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; } // PDFに設定する $this->setFancyTable($this->labelCell, $arrOrder, $this->widthCell); } ご存知の方、いらっしゃいましたらご教示くださいませ。 |
umebius |
投稿日時: 2020/10/6 22:29
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい 〇〇〇〇に該当するメソッドは独自に作らないと存在しないですね。
でもやることはその他明細の合計金額を計算することなので、 メソッドを作らなくてもOrderPdfService.php内で計算することも可能です。 追加した明細種別のID が11であれば次のような形かと思います。 $OrderItems = array_filter($Order->getOrderItems()->toArray(), function(OrderItem $Item) { return $Item->getOrderItemTypeId() == 11; }); $amount = array_reduce($OrderItems, function ($sum, OrderItem $Item) { return $sum += $Item->getTotalPrice(); }, 0); $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($amount); ※動作確認していないのでご注意ください。
|
cro233 |
投稿日時: 2020/10/7 13:47
対応状況: −−−
|
常連 登録日: 2020/1/9 居住地: 投稿: 69 |
Re: その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい umebius 様
ご回答ありがとうございます。 いただいたものを下記の『 ●●●● 』に貼り付けましたが、納品書に変更点は見当たりません。 貼り付ける箇所がおかしいのかと思いますが、どちらに貼り付ければよろしいでしょうか? 無知で申し訳ありません。どうぞよろしくお願いいたします。 if (!$Order->isMultiple()) { // ========================================= // 小計 // ========================================= $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '商品合計'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getSubtotal()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '送料'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getDeliveryFeeTotal()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '手数料'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getCharge()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '値引き'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getTaxableDiscount()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '合計'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getTaxableTotal()); foreach ($Order->getTaxableTotalByTaxRate() as $rate => $total) { ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '('.$rate.'%対象)'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($total); } ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; foreach($Order->getTaxFreeDiscountItems() as $Item) { ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = $Item->getProductName(); $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Item->getTotalPrice()); } ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '請求金額'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getPaymentTotal()); ++$i; $arrOrder[$i][0] = '※は軽減税率対象商品です。'; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; } 『 ●●●● 』 // PDFに設定する $this->setFancyTable($this->labelCell, $arrOrder, $this->widthCell); } |
umebius |
投稿日時: 2020/10/7 13:53
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい 上で投稿したコードは下記の1行の代わりです。
$arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->〇〇〇〇()); なので『 ●●●● 』 の部分に書くなら ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = 'その他明細'; が先に必要になるかと思います。
|
cro233 |
投稿日時: 2020/10/7 15:38
対応状況: −−−
|
常連 登録日: 2020/1/9 居住地: 投稿: 69 |
Re: その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい umebius 様
何度もありがとうございます。 以下の形で挿入しましたが、出力されませんでした。 挿入箇所合ってますでしょうか? if (!$Order->isMultiple()) { // ========================================= // 小計 // ========================================= $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '商品合計'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getSubtotal()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '送料'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getDeliveryFeeTotal()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '手数料'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getCharge()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '値引き'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getTaxableDiscount()); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = 'その他明細'; $OrderItems = array_filter($Order->getOrderItems()->toArray(), function(OrderItem $Item) { return $Item->getOrderItemTypeId() == 11; }); $amount = array_reduce($OrderItems, function ($sum, OrderItem $Item) { return $sum += $Item->getTotalPrice(); }, 0); $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($amount); ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '合計'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getTaxableTotal()); foreach ($Order->getTaxableTotalByTaxRate() as $rate => $total) { ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '('.$rate.'%対象)'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($total); } ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; foreach($Order->getTaxFreeDiscountItems() as $Item) { ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = $Item->getProductName(); $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Item->getTotalPrice()); } ++$i; $arrOrder[$i][0] = ''; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = '請求金額'; $arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->getPaymentTotal()); ++$i; $arrOrder[$i][0] = '※は軽減税率対象商品です。'; $arrOrder[$i][1] = ''; $arrOrder[$i][2] = ''; $arrOrder[$i][3] = ''; } // PDFに設定する $this->setFancyTable($this->labelCell, $arrOrder, $this->widthCell); } |
umebius |
投稿日時: 2020/10/7 20:58
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい その受注の出荷先は1つでしょうか?
if (!$Order->isMultiple()) { の中ですので出荷先が複数の場合はその部分のコードは処理されません。 |
cro233 |
投稿日時: 2020/10/8 10:25
対応状況: −−−
|
常連 登録日: 2020/1/9 居住地: 投稿: 69 |
Re: その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい umebius 様
if (!$Order->isMultiple()) { の中は出荷先が複数の場合は処理されないとのことでご教示いただきありがとうございます。 今試している注文は出荷先は1つでした。 他にも注文商品が1つだけのパターンなども試しましたが、表示されませんでした。 他の箇所にも何かカスタマイズする必要があるのでしょうか? お手数ですが、ご教示いただけますと幸いです。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |