Shipment.php 1.9 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;
  7. use Magento\Framework\App\ResourceConnection as AppResource;
  8. use Magento\SalesSequence\Model\Manager;
  9. use Magento\Sales\Model\ResourceModel\Attribute;
  10. use Magento\Sales\Model\ResourceModel\EntityAbstract as SalesResource;
  11. use Magento\Sales\Model\Spi\ShipmentResourceInterface;
  12. /**
  13. * Flat sales order shipment resource
  14. *
  15. * @author Magento Core Team <core@magentocommerce.com>
  16. */
  17. class Shipment extends SalesResource implements ShipmentResourceInterface
  18. {
  19. /**
  20. * Event prefix
  21. *
  22. * @var string
  23. */
  24. protected $_eventPrefix = 'sales_order_shipment_resource';
  25. /**
  26. * Fields that should be serialized before persistence
  27. *
  28. * @var array
  29. */
  30. protected $_serializableFields = ['packages' => [[], []]];
  31. /**
  32. * Model initialization
  33. *
  34. * @return void
  35. */
  36. protected function _construct()
  37. {
  38. $this->_init('sales_shipment', 'entity_id');
  39. }
  40. /**
  41. * Perform actions before object save
  42. *
  43. * @param \Magento\Framework\Model\AbstractModel|\Magento\Framework\DataObject $object
  44. * @return $this
  45. * @throws \Magento\Framework\Exception\LocalizedException
  46. */
  47. protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object)
  48. {
  49. /** @var \Magento\Sales\Model\Order\Shipment $object */
  50. if ((!$object->getId() || null !== $object->getItems()) && !count($object->getAllItems())) {
  51. throw new \Magento\Framework\Exception\LocalizedException(__('We cannot create an empty shipment.'));
  52. }
  53. if (!$object->getOrderId() && $object->getOrder()) {
  54. $object->setOrderId($object->getOrder()->getId());
  55. $object->setShippingAddressId($object->getOrder()->getShippingAddress()->getId());
  56. }
  57. return parent::_beforeSave($object);
  58. }
  59. }