Суффикс/префикс в номере заказа (Commerce order number suffix)

Аватар пользователя shturmavik

Drupal 7. Commerce.
Уже загуглил и заяндексил первые 30 ссылок с различной комбинацией данного вопроса.
Как можно в конце номера заказа вставить суффикс. Например чтобы заказ был 100D или MG-100.
Больше интересует суффикс чем префикс.

Тип материала:
Версия Drupal:
0 Спасибо

Комментарии

Аватар пользователя sas@drupal.org
sas@drupal.org 4 недели назад

Сам номер заказ не трогайте он уникален и целый, сделайте поле нужное Вам и выводите его в теме заказа вместо идера, полей много например уникальное https://www.drupal.org/project/unique_field

0 Спасибо
Аватар пользователя alexsaab
alexsaab 4 недели назад

Добрый день.

Можно это реализовать кастомным модулем. При этом префиксы и суфиксы будут какие вы захотите.

Как то я делал для нумерации заказа такой принцип:

1) Код страны (RU, KZ - например)
2) Код области (SAM например для Самары)
3) Код дня с начала года (73 например)
4) Номер заказа с начала дня (12 напрмер)

То есть код заказа выглядит вот так RU-SAM-73-12.

При этом конкуренты не смогут вычислить сколько у вас заказов за день , ну а менеджерам будет легко посмотреть откуда пришел заказ.

Если что: обращайтесь.

0 Спасибо
Аватар пользователя shturmavik
shturmavik 4 недели назад

Я пошёл по жесткачу. Добавил 'D' в \sites\all\modules\contrib\commerce\modules\order\commerce_order.module
В код:

<?php/**
 * Implements hook_commerce_order_insert().
 */
function commerce_order_commerce_order_insert($order) {
  // Save the order number.
  // TODO: Provide token support for order number patterns.

    dbg($order);

  if (empty($order->order_number)) { 
    $order->order_number = $order->order_id.'D';  //в конец поставил D

    db_update('commerce_order')
      ->fields(array('order_number' => $order->order_number))
      ->condition('order_id', $order->order_id)
      ->execute();
    db_update('commerce_order_revision')
      ->fields(array('order_number' => $order->order_number))
      ->condition('order_id', $order->order_id)
      ->execute();
  }
}?>

И в представлениях (Views) добавил в поле вывода номера заказа чтобы D ставилась.
Я просто устал искать способ иной и сделал так. Получилось что всегда order_number теперь имеет на конце D.

Мне обращаться не к кому - я сам разработчик.
Иные варианты у меня не получились кроме выше описанного.

0 Спасибо