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();
}
