productPriceSolver = $productPriceSolver; $this->productSolver = $productSolver; $this->productFamilySolver = $productFamilySolver; } public function getPrice(OrderProductInterface $orderProduct, $round = false) { if ($round) { return $this->round($orderProduct->getPrice()); } else { return $orderProduct->getPrice(); } } public function getBuyingPrice(OrderProductInterface $orderProduct, $round = false) { if ($round) { return $this->round($orderProduct->getBuyingPrice()); } else { return $orderProduct->getBuyingPrice(); } } public function getPriceWithTax(OrderProductInterface $orderProduct) { return $this->applyTax( $this->getPrice($orderProduct), $orderProduct->getTaxRate()->getValue() ); } public function getPriceWithTaxAndReduction(OrderProductInterface $orderProduct) { return $this->applyReductionCatalog( $orderProduct, $this->getPrice($orderProduct), $this->getPriceWithTax($orderProduct) ); } public function getPriceWithReduction(OrderProductInterface $orderProduct, $round = true) { return $this->applyReductionCatalog( $orderProduct, $this->getPrice($orderProduct), $this->getPriceWithTax($orderProduct), 1, null, false, $round ); } public function getTotal(OrderProductInterface $orderProduct) { return $orderProduct->getQuantityOrder() * $this->getPrice($orderProduct); } public function getTotalBuyingPrice(OrderProductInterface $orderProduct) { return $orderProduct->getQuantityOrder() * $this->getBuyingPrice($orderProduct); } public function getMargin(OrderProductInterface $orderProduct) { return $this->round($this->getPriceWithReduction($orderProduct, false) - $this->getBuyingPrice($orderProduct)); } public function getMarginPercent(OrderProductInterface $orderProduct) { if ($this->getBuyingPrice($orderProduct) && $this->getPriceWithReduction($orderProduct)) { return $this->round(($this->getMargin($orderProduct) / $this->getPriceWithReduction($orderProduct)) * 100); } else { return 0; } } public function getTotalMargin(OrderProductInterface $orderProduct) { return $orderProduct->getQuantityOrder() * $this->getMargin($orderProduct); } public function getTotalWithReduction(OrderProductInterface $orderProduct) { return $this->applyReductionCatalog( $orderProduct, $this->getTotal($orderProduct), $this->getTotalWithTax($orderProduct), $orderProduct->getQuantityOrder(), null, false ); } public function getTotalWithTax(OrderProductInterface $orderProduct) { return $this->applyTax( $this->getTotal($orderProduct), $orderProduct->getTaxRate()->getValue() ); } public function getTotalWithTaxAndReduction(OrderProductInterface $orderProduct, bool $round = true) { return $this->applyReductionCatalog( $orderProduct, $this->getTotal($orderProduct), $this->getTotalWithTax($orderProduct), $orderProduct->getQuantityOrder(), null, true, $round ); } public function getTotalBuyingPriceWithTax(OrderProductInterface $orderProduct) { return $this->applyTax( $this->getTotalBuyingPrice($orderProduct), $orderProduct->getTaxRate()->getValue() ); } //inclus toujours les réductions catalogues public function getTotalTaxes(OrderProductInterface $orderProduct) { return $this->getTotalWithTaxAndReduction($orderProduct) - $this->getTotalWithReduction($orderProduct); } }