InvoiceProxy.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * @copyright Vertex. All rights reserved. https://www.vertexinc.com/
  4. * @author Mediotype https://www.mediotype.com/
  5. */
  6. namespace Vertex\Tax\Service;
  7. use Magento\Store\Model\ScopeInterface;
  8. use Vertex\Services\Invoice\RequestInterface;
  9. use Vertex\Tax\Api\InvoiceInterface;
  10. use Vertex\Tax\Model\Api\Logger;
  11. use Vertex\Tax\Model\Api\Service\InvoiceBuilder;
  12. /**
  13. * Default implementation of {@see InvoiceInterface}
  14. */
  15. class InvoiceProxy implements InvoiceInterface
  16. {
  17. /** @var InvoiceBuilder */
  18. private $invoiceBuilder;
  19. /** @var Logger */
  20. private $logger;
  21. /**
  22. * @param Logger $logger
  23. * @param InvoiceBuilder $invoiceBuilder
  24. */
  25. public function __construct(Logger $logger, InvoiceBuilder $invoiceBuilder)
  26. {
  27. $this->logger = $logger;
  28. $this->invoiceBuilder = $invoiceBuilder;
  29. }
  30. /**
  31. * @inheritdoc
  32. */
  33. public function record(RequestInterface $request, $scopeCode = null, $scopeType = ScopeInterface::SCOPE_STORE)
  34. {
  35. $invoice = $this->invoiceBuilder
  36. ->setScopeCode($scopeCode)
  37. ->setScopeType($scopeType)
  38. ->build($scopeCode);
  39. return $this->logger->wrapCall(
  40. function () use ($invoice, $request) {
  41. return $invoice->record($request);
  42. },
  43. 'invoice'
  44. );
  45. }
  46. }