You are here

public function Shipment::populateFromProposedShipment in Commerce Shipping 8.2

Populates the shipment from the given proposed shipment.

Parameters

\Drupal\commerce_shipping\ProposedShipment $proposed_shipment: The proposed shipment.

Overrides ShipmentInterface::populateFromProposedShipment

File

src/Entity/Shipment.php, line 103

Class

Shipment
Defines the shipment entity class.

Namespace

Drupal\commerce_shipping\Entity

Code

public function populateFromProposedShipment(ProposedShipment $proposed_shipment) {
  if ($proposed_shipment
    ->getType() != $this
    ->bundle()) {
    throw new \InvalidArgumentException(sprintf('The proposed shipment type "%s" does not match the shipment type "%s".', $proposed_shipment
      ->getType(), $this
      ->bundle()));
  }
  $this
    ->set('order_id', $proposed_shipment
    ->getOrderId());
  $this
    ->set('title', $proposed_shipment
    ->getTitle());
  $this
    ->set('items', $proposed_shipment
    ->getItems());
  $this
    ->set('shipping_profile', $proposed_shipment
    ->getShippingProfile());
  $this
    ->set('package_type', $proposed_shipment
    ->getPackageTypeId());
  foreach ($proposed_shipment
    ->getCustomFields() as $field_name => $value) {
    if ($this
      ->hasField($field_name)) {
      $this
        ->set($field_name, $value);
    }
    else {
      $this
        ->setData($field_name, $value);
    }
  }
  $this
    ->prepareFields();
}