2016-07-26 6 views
4

注文増分の長さを#00000000001から#00001に減らしたいと思います。 Magento 1用のチュートリアルを見つけましたが、Magento 2用のチュートリアルは見つかりませんでした。 誰かがこのタスクの実行方法を理解している場合は助けてください。Magento 2のsales_orderテーブルのincrement_idの長さを編集

おかげ

+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のは、9桁の数字で作られた代わりに、既定のパターンの5桁のパターンを通過します。

これは、最初の%sのシンボルが、の値とのテーブルに格納されたsuffixの値に置き換えられているためです。照合は店舗のmeta_idで行います(sales_sequence_metaの表を参照して確認できます)。 %'.05dパターンでは、左側に5桁のパディング数字を含む整数を必要とし、Magentoで計算された次の注文番号に置き換えられます。

  • プレフィックス:PX
  • サフィックス:あなたが持っていると仮定すると、例えば

    、SX

上記パターンを、一次番号はPX00001SX

+1

ファイルの場所 - app/etc/di.xmlあなたのコード<![CDATA [%s% '。05d%s]]>について説明して、回答から他のパターンを作成できますか? – Jon

+0

答えを更新しました –

+1

この問題に対する最もきれいなアプローチです。私は実際のPHPファイルをオーバーライドするための他の解決策には納得していませんでした。共有していただきありがとうございます。 – MJoraid

0

を解決するであろうカスタム開発されたプラグインを使用:

私はすでにhaオン(私が以前に作った既存のオブザーバー)

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

events.xmlに上

:Dオブザーバは、自動的に順序を置いた後、成功のページをレンダリングする前に、新たな顧客として顧客を保存しますオブザーバー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() 

魅力的なように働きました。

以前に設定した接頭辞を保持するために、2番目の「substr」部分を作成しました。

関連する問題