バージョン選択

フォーラム

メニュー

オンライン状況

23 人のユーザが現在オンラインです。 (14 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 22
maaaaaai もっと...

サイト内検索

質問 > フロント機能 > その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
cro233
投稿日時: 2020/10/6 15:37
対応状況: −−−
常連
登録日: 2020/1/9
居住地:
投稿: 35
その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい
[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
居住地: 東京日本橋
投稿: 1753
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);

※動作確認していないのでご注意ください。


----------------
EC-CUBE4系 カスタマイズ ECのプロがシステム特急案件承ります。
EC-CUBE開発 リモートで働くエンジニア募集中

cro233
投稿日時: 2020/10/7 13:47
対応状況: −−−
常連
登録日: 2020/1/9
居住地:
投稿: 35
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
居住地: 東京日本橋
投稿: 1753
Re: その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい
上で投稿したコードは下記の1行の代わりです。

$arrOrder[$i][3] = $this->eccubeExtension->getPriceFilter($Order->〇〇〇〇());


なので『 ●●●● 』
の部分に書くなら

++$i;
$arrOrder[$i][0] = '';
$arrOrder[$i][1] = '';
$arrOrder[$i][2] = 'その他明細';

が先に必要になるかと思います。


----------------
EC-CUBE4系 カスタマイズ ECのプロがシステム特急案件承ります。
EC-CUBE開発 リモートで働くエンジニア募集中

cro233
投稿日時: 2020/10/7 15:38
対応状況: −−−
常連
登録日: 2020/1/9
居住地:
投稿: 35
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
居住地: 東京日本橋
投稿: 1753
Re: その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい
その受注の出荷先は1つでしょうか?

if (!$Order->isMultiple()) { の中ですので出荷先が複数の場合はその部分のコードは処理されません。
cro233
投稿日時: 2020/10/8 10:25
対応状況: −−−
常連
登録日: 2020/1/9
居住地:
投稿: 35
Re: その他の明細に新しい項目を追加した状態で納品書にも出力されるようにしたい
umebius 様

if (!$Order->isMultiple()) { の中は出荷先が複数の場合は処理されないとのことでご教示いただきありがとうございます。

今試している注文は出荷先は1つでした。
他にも注文商品が1つだけのパターンなども試しましたが、表示されませんでした。

他の箇所にも何かカスタマイズする必要があるのでしょうか?
お手数ですが、ご教示いただけますと幸いです。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は66,658名です
総投稿数は98,384件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2651
4
nanasess
2103
5
umebius
1753
6
yuh
1612
7
red
1424
8
h_tanaka
1045
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.