バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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);

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


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

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] = 'その他明細';

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


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

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つだけのパターンなども試しましたが、表示されませんでした。

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


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,286名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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