Relation.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\ResourceModel\Order\Invoice;
  7. use Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationInterface;
  8. use Magento\Sales\Model\ResourceModel\Order\Invoice\Item as InvoiceItemResource;
  9. use Magento\Sales\Model\ResourceModel\Order\Invoice\Comment as InvoiceCommentResource;
  10. /**
  11. * Class Relation
  12. */
  13. class Relation implements RelationInterface
  14. {
  15. /**
  16. * @var InvoiceItemResource
  17. */
  18. protected $invoiceItemResource;
  19. /**
  20. * @var InvoiceCommentResource
  21. */
  22. protected $invoiceCommentResource;
  23. /**
  24. * @param InvoiceItemResource $invoiceItemResource
  25. * @param InvoiceCommentResource $invoiceCommentResource
  26. */
  27. public function __construct(
  28. InvoiceItemResource $invoiceItemResource,
  29. InvoiceCommentResource $invoiceCommentResource
  30. ) {
  31. $this->invoiceItemResource = $invoiceItemResource;
  32. $this->invoiceCommentResource = $invoiceCommentResource;
  33. }
  34. /**
  35. * Process relations for Shipment
  36. *
  37. * @param \Magento\Framework\Model\AbstractModel $object
  38. * @return void
  39. * @throws \Exception
  40. */
  41. public function processRelation(\Magento\Framework\Model\AbstractModel $object)
  42. {
  43. /** @var $object \Magento\Sales\Model\Order\Invoice */
  44. if (null !== $object->getItems()) {
  45. foreach ($object->getItems() as $item) {
  46. /** @var \Magento\Sales\Model\Order\Invoice\Item */
  47. $item->setParentId($object->getId());
  48. $item->setOrderItem($item->getOrderItem());
  49. $this->invoiceItemResource->save($item);
  50. }
  51. }
  52. if (null !== $object->getComments()) {
  53. foreach ($object->getComments() as $comment) {
  54. /** @var \Magento\Sales\Model\Order\Invoice\Comment */
  55. $this->invoiceCommentResource->save($comment);
  56. }
  57. }
  58. }
  59. }