Code Duplication    Length = 38-38 lines in 3 locations

src/Eccube/Service/Calculator/Strategy/CalculateChargeStrategy.php 1 location

@@ 18-55 (lines=38) @@
15
/**
16
 * 手数料の合計を集計して Order にセットする.
17
 */
18
class CalculateChargeStrategy implements CalculateStrategyInterface
19
{
20
    /* @var Application $app */
21
    protected $app;
22
23
    /* @var Order $Order */
24
    protected $Order;
25
26
    /** @var OrderItemTypeRepository */
27
    protected $OrderItemTypeRepository;
28
29
    public function execute(ShipmentItemCollection $ShipmentItems)
30
    {
31
        $charge = $ShipmentItems->getCharges()->reduce(
32
            function($total, $ShipmentItem) {
33
                return $total + $ShipmentItem->getPrice() * $ShipmentItem->getQuantity();
34
            }, 0
35
        );
36
        $this->Order->setCharge($charge);
37
    }
38
39
    public function setApplication(Application $app)
40
    {
41
        $this->app = $app;
42
        return $this;
43
    }
44
45
    public function setOrder(PurchaseInterface $Order)
46
    {
47
        $this->Order = $Order;
48
        return $this;
49
    }
50
51
    public function getTargetTypes()
52
    {
53
        return [Order::class];
54
    }
55
}
56

src/Eccube/Service/Calculator/Strategy/CalculateDeliveryFeeStrategy.php 1 location

@@ 18-55 (lines=38) @@
15
/**
16
 * 送料の合計を集計して Order にセットする.
17
 */
18
class CalculateDeliveryFeeStrategy implements CalculateStrategyInterface
19
{
20
    /* @var Application $app */
21
    protected $app;
22
23
    /* @var Order $Order */
24
    protected $Order;
25
26
    /** @var OrderItemTypeRepository */
27
    protected $OrderItemTypeRepository;
28
29
    public function execute(ShipmentItemCollection $ShipmentItems)
30
    {
31
        $delivery_fee = $ShipmentItems->getDeliveryFees()->reduce(
32
            function($total, $ShipmentItem) {
33
                return $total + $ShipmentItem->getPrice() * $ShipmentItem->getQuantity();
34
            }, 0
35
        );
36
        $this->Order->setDeliveryFeeTotal($delivery_fee);
37
    }
38
39
    public function setApplication(Application $app)
40
    {
41
        $this->app = $app;
42
        return $this;
43
    }
44
45
    public function setOrder(PurchaseInterface $Order)
46
    {
47
        $this->Order = $Order;
48
        return $this;
49
    }
50
51
    public function getTargetTypes()
52
    {
53
        return [Order::class];
54
    }
55
}
56

src/Eccube/Service/Calculator/Strategy/CalculateTotalStrategy.php 1 location

@@ 19-56 (lines=38) @@
16
/**
17
 * 明細の合計を集計して Order にセットする.
18
 */
19
class CalculateTotalStrategy implements CalculateStrategyInterface
20
{
21
    /* @var Application $app */
22
    protected $app;
23
24
    /* @var Order $Order */
25
    protected $Order;
26
27
    /** @var OrderItemTypeRepository */
28
    protected $OrderItemTypeRepository;
29
30
    public function execute(ShipmentItemCollection $ShipmentItems)
31
    {
32
        $total = $ShipmentItems->reduce(
33
            function($total, $ShipmentItem) {
34
                return $total + $ShipmentItem->getPrice() * $ShipmentItem->getQuantity();
35
            }, 0
36
        );
37
        $this->Order->setTotal($total);
38
    }
39
40
    public function setApplication(Application $app)
41
    {
42
        $this->app = $app;
43
        return $this;
44
    }
45
46
    public function setOrder(PurchaseInterface $Order)
47
    {
48
        $this->Order = $Order;
49
        return $this;
50
    }
51
52
    public function getTargetTypes()
53
    {
54
        return [Order::class, Cart::class];
55
    }
56
}
57