ご丁寧にありがとうございます!
開発環境を触れる場所にいなかったため、返信遅くなってしまい申し訳ありませんでした。
記載いただいた通りにコードを変更してみましたが、やはりsmallItemQuantityもbigItemQuantityも0のままになってしまうようでした・・・
ご指摘いただいたとおり、getClassCategory1だけでなくその先のgetIdを行う必要がありそうなので、これでいけるかと思ったのですが。
他の部分に原因があるのかもしれないと思いましたので、現状setShippingDeliveryFeeの部分がどうなっているかを以下に記載いたします。
もし他にお気付きの点等あれば、ご指摘いただければ助かりますm(_ _)m
/**
* 配送料金の設定
*
* @param Shipping $Shipping
* @param Delivery|null $Delivery
*/
public function setShippingDeliveryFee(Shipping $Shipping, Delivery $Delivery = null)
{
$bigItemQuantity = 0;
$smallItemQuantity = 0;
$bigBoxQuantity = 0;
$smallBoxQuantity = 0;
// 配送料金の設定
if (is_null($Delivery)) {
$Delivery = $Shipping->getDelivery();
}
$deliveryFee = $this->app['eccube.repository.delivery_fee']->findOneBy(array('Delivery' => $Delivery, 'Pref' => $Shipping->getPref()));
$Shipping->setDeliveryFee($deliveryFee);
$Shipping->setDelivery($Delivery);
// 規格別の本数を取得
$shipmentItems = $Shipping->getShipmentItems();
foreach ($shipmentItems as $ShipmentItem) {
if(!is_null($ShipmentItem->getProductClass()->getClassCategory1())){
$classCategoryId = $ShipmentItem->getProductClass()->getClassCategory1()->getId();
if ($classCategoryId == 1){
$smallItemQuantity += $ShipmentItem->getQuantity();
}
if ($classCategoryId == 2){
$bigItemQuantity += $ShipmentItem->getQuantity();
}
}
}
// 箱(大・小)の数を算出
if ($bigItemQuantity <= 0) {
if ($smallItemQuantity <= 3){
$smallBoxQuantity = 1;
}else{
$bigBoxQuantity = 1;
}
}else if ($bigItemQuantity <= 6) {
if ($smallItemQuantity + $bigItemQuantity <= 8){
$bigBoxQuantity = 1;
}else if ($smallItemQuantity + $bigItemQuantity <= 11){
$bigBoxQuantity = 1;
$smallBoxQuantity = 1;
}else{
$bigBoxQuantity = 2;
}
}else {
$bigBoxQuantity = 2;
}
// 商品ごとの配送料合計
$productDeliveryFeeTotal = 0;
if (!is_null($this->BaseInfo->getOptionProductDeliveryFee())) {
$productDeliveryFeeTotal += $this->getProductDeliveryFee($Shipping);
}
$sizeFee = 240 * $smallBoxQuantity + 420 * $bigBoxQuantity; //テスト段階のためここは定数ベタ打ちになっています。
$Shipping->setShippingDeliveryFee($deliveryFee->getFee() * ($bigBoxQuantity + $smallBoxQuantity) + $sizeFee + $productDeliveryFeeTotal);
$Shipping->setShippingDeliveryName($Delivery->getName());
}