選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

51 行
2.1KB

  1. <?php
  2. namespace Lc\CaracoleBundle\Builder\Order;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Lc\CaracoleBundle\Model\Order\OrderProductInterface;
  5. use Lc\CaracoleBundle\Repository\Order\OrderProductStore;
  6. use Lc\CaracoleBundle\Resolver\Price\PriceResolver;
  7. use Lc\CaracoleBundle\Solver\Order\OrderProductSolver;
  8. use Lc\CaracoleBundle\Solver\Price\PriceSolver;
  9. use Lc\CaracoleBundle\Solver\Product\ProductFamilySolver;
  10. use Lc\CaracoleBundle\Solver\Product\ProductSolver;
  11. class OrderProductBuilder
  12. {
  13. protected EntityManagerInterface $entityManager;
  14. protected PriceSolver $priceSolver;
  15. protected OrderProductStore $orderProductStore;
  16. protected ProductSolver $productSolver;
  17. protected ProductFamilySolver $productFamilySolver;
  18. protected OrderProductSolver $orderProductSolver;
  19. public function __construct(
  20. EntityManagerInterface $entityManager,
  21. PriceSolver $priceSolver,
  22. OrderProductStore $orderProductStore,
  23. ProductSolver $productSolver,
  24. OrderProductSolver $orderProductSolver,
  25. ProductFamilySolver $productFamilySolver
  26. ) {
  27. $this->entityManager = $entityManager;
  28. $this->priceSolver = $priceSolver;
  29. $this->orderProductStore = $orderProductStore;
  30. $this->productSolver = $productSolver;
  31. $this->orderProductSolver = $orderProductSolver;
  32. $this->productFamilySolver = $productFamilySolver;
  33. }
  34. public function init(OrderProductInterface $orderProduct) :OrderProductInterface
  35. {
  36. $orderProduct->setTitle($this->orderProductSolver->getTitleOrderShop($orderProduct));
  37. $orderProduct->setPrice($this->priceSolver->getPrice($orderProduct->getProduct()));
  38. $orderProduct->setBuyingPrice($this->priceSolver->getBuyingPrice($orderProduct->getProduct()));
  39. $orderProduct->setUnit($this->productSolver->getUnitInherited($orderProduct->getProduct()));
  40. $orderProduct->setTaxRate($this->productFamilySolver->getTaxRateInherited($orderProduct->getProduct()));
  41. $orderProduct->setQuantityProduct($this->productSolver->getQuantityInherited($orderProduct->getProduct()));
  42. return $orderProduct;
  43. }
  44. }