<?php namespace Lc\ShopBundle\Services\Order; use Lc\ShopBundle\Context\OrderPaymentInterface; trait OrderUtilsPaymentTrait { public function createOrderPayment($orderShop, $meanPayment, $amount, $reference = null, $comment = null, $paidAt = null) { $classOrderPayment = $this->em->getClassMetadata(OrderPaymentInterface::class)->getName(); $orderPayment = new $classOrderPayment; $orderPayment->setOrderShop($orderShop); $orderPayment->setMeanPayment($meanPayment); $orderPayment->setAmount($amount); $orderPayment->setReference($reference); $orderPayment->setComment($comment); $orderPayment->setEditable(false); $orderPayment->setCreatedBy($orderShop->getUser()) ; $orderPayment->setUpdatedBy($orderShop->getUser()) ; if ($paidAt) { $orderPayment->setPaidAt($paidAt); } else { $orderPayment->setPaidAt(new \DateTime('now')); } $this->em->persist($orderPayment); $this->em->flush(); return $orderPayment ; } public function isOrderPaid($order) { if ($this->getTotalOrderPayments($order) >= $this->priceUtils->getTotalWithTax($order) && $this->priceUtils->getTotalWithTax($order)>0) { return true; } else { return false; } } public function getTotalOrderPayments($order): float { $totalAmount = floatval(0); foreach ($order->getOrderPayments() as $orderPayment) { $totalAmount = $orderPayment->getAmount() + $totalAmount; } return $totalAmount; } }