2016-07-26 1 views
4

Я хочу уменьшить приращение приращения порядка # 00000000001 до # 00001. Я нашел несколько уроков для magento 1, но не для Magento 2. Помогите, если кто-то знает, как выполнить эту задачу.Редактировать длину increment_id в таблице sales_order на Magento 2

Благодаря

+0

Оформить заказ таблицы «eav_entity_type». Я не уверен, но, похоже, эта таблица отвечает за это. –

+0

ya, я уменьшил значение increment_ped_length, но все равно не отразил никаких изменений. –

ответ

5

В etc каталоге вашего модуля, добавьте di.xml файл с этим содержимым:

<?xml version="1.0"?> 
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> 
    <type name="Magento\SalesSequence\Model\Sequence"> 
     <arguments> 
      <argument name="pattern" xsi:type="string"><![CDATA[%s%'.05d%s]]></argument> 
     </arguments> 
    </type> 
</config> 

Таким образом, Magento будет проходить 5-значный шаблон вместо его шаблона по умолчанию, сделанный 9 цифр ,

Это происходит потому, что первый и последний символ %s заменяются соответственно с prefixsuffix и значения, сохраненные в таблице sales_sequence_profile. Согласование выполняется с помощью meta_id вашего магазина (вы можете проверить свое, прочитав таблицу sales_sequence_meta). Шаблон %'.05d означает, что вы хотите, чтобы целое число с пятью дополнительными цифрами слева, которое заменяется следующим порядковым номером, рассчитанным Magento.

Например, если предположить, что у вас есть:

  • Префикс: PX
  • суффикса: SX

с вышеуказанным рисунком, то первый номер заказа будет PX00001SX

+1

местоположение файла - приложение/etc/di.xml Cay вы объясните свой код , чтобы другие шаблоны могли быть созданы из вашего ответа? – Jon

+0

Я обновил ответ –

+1

Самый чистый подход к этой проблеме. Я не был убежден в других решениях, чтобы переопределить фактический файл PHP. Спасибо, что поделились. – MJoraid

0

решаемые с настраиваемым плагином:

Я уже га d наблюдатель, чтобы сохранить клиента как новый клиент автоматически после размещения заказа и до отображения страницы успеха:

На events.xml (уже существующего наблюдателя я уже ранее сделал)

<event name="sales_order_place_after"> 
    <observer name="customcheckout_customer" instance="Dufry\CustomCheckout\Model\Observer\SaveCustomer"/> 
</event> 

О рынке observer SaveCustomer.php (уже существующий наблюдатель, который я ранее делал):

$order = $observer->getOrder(); 

    $increment = $order->getIncrementId(); 
    if(strlen($increment) > 9){ 
     $newIncrement = substr($increment, -8); 
     $newIncrement = substr($increment,0,1).$newIncrement; 
     $order->setIncrementId($newIncrement); 
    } 

    ... 

    $order->save() 

И работал как шарм.

Я сделал вторую часть «substr», чтобы сохранить префикс, который был ранее настроен.