- 🇮🇳India arunkumark Coimbatore
The Commerce Order Number field is a string field. So, it will work similarly to a string even though it was used as an integer number. So, it works as designed.
Drupal\commerce_order\Entity\Order.php
$fields = parent::baseFieldDefinitions($entity_type); $fields['order_number'] = BaseFieldDefinition::create('string') ->setLabel(t('Order number')) ->setDescription(t('The order number displayed to the customer.')) ->setRequired(TRUE) ->setDefaultValue('') ->setSetting('max_length', 255) ->setDisplayConfigurable('form', TRUE) ->setDisplayConfigurable('view', TRUE); $fields['version'] = BaseFieldDefinition::create('integer')
To achieve the sorting as Integer we can able to use Query alter to type cast string as Integer. Below is an example.
use Drupal\views\ViewExecutable; use Drupal\views\Plugin\views\query\QueryPluginBase; /** * Implements hook_views_query_alter(). */ function example_views_query_alter(ViewExecutable $view, QueryPluginBase $query) { if ($view->id() == 'VIEW_ID') { // Alter Commerce order to sort based on Order number. $formula_form = "CAST(order_number AS SIGNED)"; $query->addField(NULL, $formula_form, 'order_number_field'); $query->addOrderBy(NULL, NULL, 'DESC', 'order_number_field'); } }
- Status changed to Active
almost 2 years ago 7:16pm 1 September 2023 - 🇺🇸United States rhovland Oregon
This is a feature request not a bug report. I'm aware of why it doesn't sort correctly. I want to implement smart sorting as a feature at some future point. If this is not a feature the commerce maintainers want in commerce core then they can say so and close this as Won't Fix
- Merge request !451Issue #3118133 by ivnish: Order view: Sort by order number does not sort numerically → (Open) created by ivnish