*/ class Shipment extends SalesResource implements ShipmentResourceInterface { /** * Event prefix * * @var string */ protected $_eventPrefix = 'sales_order_shipment_resource'; /** * Fields that should be serialized before persistence * * @var array */ protected $_serializableFields = ['packages' => [[], []]]; /** * Model initialization * * @return void */ protected function _construct() { $this->_init('sales_shipment', 'entity_id'); } /** * Perform actions before object save * * @param \Magento\Framework\Model\AbstractModel|\Magento\Framework\DataObject $object * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { /** @var \Magento\Sales\Model\Order\Shipment $object */ if ((!$object->getId() || null !== $object->getItems()) && !count($object->getAllItems())) { throw new \Magento\Framework\Exception\LocalizedException(__('We cannot create an empty shipment.')); } if (!$object->getOrderId() && $object->getOrder()) { $object->setOrderId($object->getOrder()->getId()); $object->setShippingAddressId($object->getOrder()->getShippingAddress()->getId()); } return parent::_beforeSave($object); } }