سؤال

أدير متجرًا (Magento CE 1.6.2) به 4 طرق عرض مختلفة للمتجر، والتي لها (لأسباب تاريخية) المعرفات 1 و3 و4 و7.تبدو أرقام الطلبات بهذا الشكل 10000001، 30000001، 40000001، 70000001.

لقد قمت بإعداد تثبيت جديد تمامًا باستخدام Magento CE 1.9.1، ولكن معرف المتجر الآن هو 1، 2، 3، 4...

كيف يمكنني تغيير هذا في الوضع القديم؟

وجدت هذا المنشور --> http://www.thevortexcode.com/how-to-change-order-prefix-and-default-value-of-ordershipmentinvoice-numbercredit-memo-in-magento/ شرح كيفية ضبط/cahnge eav_entity_store.increment_prefix

ولكن يبدو أن هذا لا يعمل في 1.9 ...

هل كانت مفيدة؟

المحلول

فقط قم بتحرير معرف المتاجر في store_id العمود في core_store جدول قاعدة البيانات.بسبب المفاتيح الخارجية، سيتم تحديث هذا في جميع الجداول الأخرى تقريبًا.

بالإضافة إلى ذلك يجب عليك تحديث:

  • default_store_id العمود في core_store_group طاولة

كما علق، فإن تغيير معرف قاعدة البيانات الفعلية الخاصة بك سيكون جذريًا بعض الشيء.كما لا يزال يتعين عليك تحديث ملف eav_entity_store طاولة.

لذلك، يمكنك أيضًا تعيين تكوين لكل متجر لمعرفات الزيادة الخاصة بك.يمكنك القيام بذلك في eav_entity_store طاولة:

  • لمعرف المتجر 1، قم بتعيين increment_prefix إلى 1
  • بالنسبة لمعرف المتجر 2، قم بتعيين increment_prefix إلى 3
  • لمعرف المتجر 3، قم بتعيين increment_prefix إلى 4
  • لمعرف المتجر 4، قم بتعيين increment_prefix إلى 7

نصائح أخرى

من الأفضل استخدام أغلفة النماذج بدلاً من عبارات SQL الأولية.

مثال:

$productEntityType = Mage::getModel('eav/entity_type')
    ->loadByCode(Mage_Catalog_Model_Product::ENTITY);
$entityStoreConfig = Mage::getModel('eav/entity_store')
    ->loadByEntityStore($productEntityType->getId(), 0);
$entityStoreConfig->setEntityTypeId($productEntityType->getId())
    ->setStoreId(0)
    ->setIncrementPrefix($prefix)
    ->setIncrementLastId($lastId)
    ->save();

يرى:

اضطررت إلى القيام بذلك عدة مرات لأسباب مختلفة وهذا ما أفعله:

سيُظهر لك هذا الاستعلام معرف الزيادة فقط لـ الكيان_نوع_رمز = الطلب

SELECT * FROM  eav_entity_store join eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
WHERE eav_entity_type.entity_type_code='order';

بمجرد تحديد موقع الصفوف التي ترغب في تحديثها، يمكنك تغييرها على النحو التالي:

UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_prefix='X'
WHERE eav_entity_type.entity_type_code='order' and eav_entity_store.eav_entity_store_id = {row_id_here};

لاحظ أن قيمة increment_last_id تحتوي بالفعل على increment_prefix، لذلك عادةً ما أقوم بإزالة increment_prefix القديم من increment_last_id حتى يبدو معرف زيادة الطلبات الجديدة جيدًا.

اذا كنت تمتلك علامات الاقتباس ذات increment_order_id المحجوزة، فمن الممكن أن تظل ترى الطلبات ذات increment_id القديم.بمجرد البدء في إنشاء عروض أسعار جديدة بعد التحديث، يجب أن يكون كل شيء على ما يرام.

عادةً ما أقوم في بيئة التطوير الخاصة بي بتعيين جميع علامات الاقتباس على نشط = 0 بعد تحديث increment_id فقط للحصول على بداية جديدة.

لمزيد من التفاصيل تحقق هنا: http://www.warpconduit.net/2012/04/18/how-to-change-the-order-increment-id-and-prefix-in-magento/

أحاول حقًا تجنب الاستعلامات المباشرة في قاعدة بيانات الماجنتو.إذا كان ذلك ممكنًا، قم بإنشاء وحدة نمطية بسيطة تحتوي على برنامج نصي للتثبيت أو الترقية والذي سيقوم بذلك نيابةً عنك.على سبيل المثال، يمكنك استخدام البرنامج النصي أدناه لتغيير معرف الزيادة وبادئة الزيادة:

<?php

    $this->startSetup();

    /*
     * Get the resource model
    */
    $resource = Mage::getSingleton('core/resource');

    /*
    * Retrieve the write connection
    */
    $writeConnection = $resource->getConnection('core_write');

   /*
    * Retrieve our table name
    */
    $table = $resource->getTableName('eav/entity_store');

    $table2=$resource->getTableName('eav/entity_type');


    $query = "UPDATE {$table}
    INNER JOIN {$table2} ON {$table2}.entity_type_id ={$table}.entity_type_id
    SET {$table}.increment_last_id='XXXXXXXXX'
    WHERE {$table2}.entity_type_code='order' AND eav_entity_store.store_id = 'Y'";

   /*
   * Execute the query
   */
   $writeConnection->query($query);

   $this->endSetup();

حيث XXXXXXXXX هو معرف الزيادة الذي تريد البدء به وY هو معرف المتجر الذي تريد القيام بذلك من أجله.

لتغيير البادئة الفعلية، استخدم الاستعلام أدناه:

        $query = "UPDATE {$table}
    INNER JOIN {$table2} ON {$table2}.entity_type_id ={$table}.entity_type_id
    SET {$table}.increment_prefix='X'
    WHERE {$table2}.entity_type_code='order' AND eav_entity_store.store_id = 'Y'";

حيث X هي البادئة التي تريد استخدامها وY هي المعرف الذي تريد القيام بذلك من أجله.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top