commerce_inventory-8.x-1.0-alpha6/modules/commerce_inventory_order/commerce_inventory_order.module

modules/commerce_inventory_order/commerce_inventory_order.module
<?php

/**
 * @file
 * Contains commerce_inventory_order.module.
 */

use Drupal\commerce_inventory_order\Form\OrderItemTypeAlterForm;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function commerce_inventory_order_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    // Main module help for the commerce_inventory_order module.
    case 'help.page.commerce_inventory_order':
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('Allows Commerce Inventory to work with the Commerce Order module.') . '</p>';
      return $output;

    default:
  }
}

/**
 * Implements hook_entity_base_field_info().
 */
function commerce_inventory_order_entity_base_field_info(EntityTypeInterface $entity_type) {
  if ($entity_type->id() == 'commerce_inventory_adjustment') {
    $fields = [];

    $fields['order_id'] = BaseFieldDefinition::create('entity_reference')
      ->setLabel(t('Order'))
      ->setDescription(t('The Commerce Order related to the adjustment.'))
      ->setSetting('target_type', 'commerce_order')
      ->setSetting('handler', 'default')
      ->setDisplayConfigurable('view', TRUE);

    $fields['order_item_id'] = BaseFieldDefinition::create('entity_reference')
      ->setLabel(t('Order Item'))
      ->setDescription(t('The Commerce Order Item related to the adjustment.'))
      ->setSetting('target_type', 'commerce_order_item')
      ->setSetting('handler', 'default')
      ->setDisplayConfigurable('view', TRUE);

    return $fields;
  }

  if ($entity_type->id() == 'commerce_order_item') {
    $fields = [];

    $fields['inventory_adjustment_state'] = BaseFieldDefinition::create('state')
      ->setLabel(t('Adjustment State'))
      ->setDescription(t("The Order Item's inventory adjustment state."))
      ->setRequired(TRUE)
      ->setSetting('max_length', 255)
      ->setSetting('workflow_callback', ['\Drupal\commerce_inventory_order\InventoryOrderManager', 'getBundleInventoryWorkflowId'])
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayConfigurable('view', TRUE);

    $fields['inventory_adjustment_holds'] = BaseFieldDefinition::create('entity_reference_inventory_quantity')
      ->setLabel(t('Inventory Adjustment Holds'))
      ->setDescription(t('Make Inventory adjustment holds associated with this order item.'))
      ->setCardinality(-1)
      ->setSetting('target_type', 'commerce_inventory_item')
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayConfigurable('view', TRUE);

    $fields['inventory_adjustment_manual'] = BaseFieldDefinition::create('boolean')
      ->setLabel(t('Manual Inventory Adjustment'))
      ->setDescription(t('Manually allot inventory placement instead of based on available inventory count.'))
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayConfigurable('view', TRUE);

    return $fields;
  }
}

/**
 * Implements hook_entity_type_alter().
 */
function commerce_inventory_order_entity_type_alter(array &$entity_types) {
  /** @var \Drupal\Core\Entity\EntityTypeInterface[] $entity_types */

  // Entity-type: Commerce Inventory Location.
  $entity_types['commerce_inventory_location']->setLinkTemplate('inventory-adjustments-order-holds',
    '/admin/commerce/location/{commerce_inventory_location}/inventory/adjustments/orders');

  // Entity-type: Commerce Inventory Item.
  $entity_types['commerce_inventory_item']->setLinkTemplate('adjustments-order-holds',
    '/admin/commerce/location/{commerce_inventory_location}/inventory/{commerce_inventory_item}/adjustments/orders');
}

/**
 * Implements hook_form_FORM_ID_alter() for commerce_order_item_type_form.
 */
function commerce_inventory_order_form_commerce_order_item_type_form_alter(&$form, FormStateInterface $form_state) {
  OrderItemTypeAlterForm::alterForm($form, $form_state);
}

/**
 * Implements hook_ENTITY_TYPE_insert() for commerce_inventory_adjustment.
 */
function commerce_inventory_order_commerce_inventory_adjustment_insert(EntityInterface $entity) {
  /** @var \Drupal\commerce_inventory\Entity\InventoryAdjustmentInterface $entity */
  // Exit early if there is no Order specified.
  if ($entity->get('order_id')->isEmpty()) {
    return;
  }
  /** @var \Drupal\commerce_log\LogStorageInterface $log_storage */
  $log_storage = \Drupal::entityTypeManager()->getStorage('commerce_log');
  $log_storage->generate($entity->get('order_id')->entity, 'order_item_inventory_adjustment_on_hand', [
    'adjustment' => $entity->getType()->getLabel(),
    'inventory_location_label' => $entity->getLocation()->label(),
    'purchasable_entity_label' => $entity->getPurchasableEntity()->label(),
    'quantity' => ($entity->getQuantity() > 0) ? '+' . $entity->getQuantity() : $entity->getQuantity(),
  ])->save();
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc