ShipOrder.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\Order\Validation;
  7. use Magento\Sales\Api\Data\OrderInterface;
  8. use Magento\Sales\Api\Data\ShipmentInterface;
  9. use Magento\Sales\Model\Order\Shipment\Validation\QuantityValidator;
  10. use Magento\Sales\Model\Order\OrderValidatorInterface;
  11. use Magento\Sales\Model\Order\Shipment\ShipmentValidatorInterface;
  12. use Magento\Sales\Model\Order\Shipment\Validation\TrackValidator;
  13. use Magento\Sales\Model\ValidatorResultMerger;
  14. /**
  15. * Class ShipOrder
  16. */
  17. class ShipOrder implements ShipOrderInterface
  18. {
  19. /**
  20. * @var OrderValidatorInterface
  21. */
  22. private $orderValidator;
  23. /**
  24. * @var ShipmentValidatorInterface
  25. */
  26. private $shipmentValidator;
  27. /**
  28. * @var ValidatorResultMerger
  29. */
  30. private $validatorResultMerger;
  31. /**
  32. * ShipOrder constructor.
  33. *
  34. * @param OrderValidatorInterface $orderValidator
  35. * @param ShipmentValidatorInterface $shipmentValidator
  36. * @param ValidatorResultMerger $validatorResultMerger
  37. */
  38. public function __construct(
  39. OrderValidatorInterface $orderValidator,
  40. ShipmentValidatorInterface $shipmentValidator,
  41. ValidatorResultMerger $validatorResultMerger
  42. ) {
  43. $this->orderValidator = $orderValidator;
  44. $this->shipmentValidator = $shipmentValidator;
  45. $this->validatorResultMerger = $validatorResultMerger;
  46. }
  47. /**
  48. * @param OrderInterface $order
  49. * @param ShipmentInterface $shipment
  50. * @param array $items
  51. * @param bool $notify
  52. * @param bool $appendComment
  53. * @param \Magento\Sales\Api\Data\ShipmentCommentCreationInterface|null $comment
  54. * @param array $tracks
  55. * @param array $packages
  56. * @param \Magento\Sales\Api\Data\ShipmentCreationArgumentsInterface|null $arguments
  57. * @return \Magento\Sales\Model\ValidatorResultInterface
  58. */
  59. public function validate(
  60. $order,
  61. $shipment,
  62. array $items = [],
  63. $notify = false,
  64. $appendComment = false,
  65. \Magento\Sales\Api\Data\ShipmentCommentCreationInterface $comment = null,
  66. array $tracks = [],
  67. array $packages = [],
  68. \Magento\Sales\Api\Data\ShipmentCreationArgumentsInterface $arguments = null
  69. ) {
  70. $orderValidationResult = $this->orderValidator->validate(
  71. $order,
  72. [
  73. CanShip::class
  74. ]
  75. );
  76. $shipmentValidationResult = $this->shipmentValidator->validate(
  77. $shipment,
  78. [
  79. QuantityValidator::class,
  80. TrackValidator::class
  81. ]
  82. );
  83. return $this->validatorResultMerger->merge($orderValidationResult, $shipmentValidationResult);
  84. }
  85. }