Frage

Ich betreibe einen Shop (Magento CE 1.6.2) mit 4 verschiedenen Store-Ansichten, die (aus historischen Gründen) die IDs 1, 3, 4 und 7 haben.Die Bestellnummern sahen bisher wie folgt aus: 10000001, 30000001, 40000001, 70000001.

Ich habe eine brandneue Installation mit Magento CE 1.9.1 eingerichtet, aber jetzt lauten die Store-IDs 1, 2, 3, 4 ...

Wie ändere ich das in der alten Situation?

Ich bin auf diesen Beitrag gestoßen -> http://www.thevortexcode.com/how-to-change-order-prefix-and-default-value-of-ordershipmentinvoice-numbercredit-memo-in-magento/ Erklärt, wie man das einstellt/ändert eav_entity_store.increment_prefix

Aber das scheint in 1.9 nicht zu funktionieren ...

War es hilfreich?

Lösung

Bearbeiten Sie einfach die ID der Geschäfte im store_id Spalte in der core_store Datenbanktabelle.Aufgrund der Fremdschlüssel wird dies in fast allen anderen Tabellen aktualisiert.

Zusätzlich sollten Sie Folgendes aktualisieren:

  • default_store_id Spalte ein core_store_group Tisch

Wie bereits erwähnt, wäre die Änderung Ihrer tatsächlichen Datenbank-IDs etwas radikal.Außerdem müssten Sie das noch aktualisieren eav_entity_store Tisch.

Sie können also auch einfach eine Konfiguration pro Geschäft für Ihre Inkrement-IDs festlegen.Sie können dies in der tun eav_entity_store Tisch:

  • Für Geschäfts-ID 1 festlegen increment_prefix bis 1
  • Für Geschäfts-ID 2 festlegen increment_prefix bis 3
  • Für Geschäfts-ID 3 festlegen increment_prefix bis 4
  • Für Geschäfts-ID 4 festlegen increment_prefix bis 7

Andere Tipps

Verwenden Sie besser Modell-Wrapper als unformatierte SQL-Anweisungen.

Beispiel:

$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();

Sehen:

Ich musste das aus verschiedenen Gründen viele Male tun und das mache ich:

Diese Abfrage zeigt Ihnen die Inkrement-ID nur für „entity_type_code = order“.

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';

Sobald Sie die Zeilen gefunden haben, die Sie aktualisieren möchten, können Sie sie wie folgt ändern:

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};

Beachten Sie, dass der Wert für increment_last_id bereits das increment_prefix enthält, daher habe ich normalerweise das alte increment_prefix aus increment_last_id entfernt, damit die Inkrement-ID der neuen Bestellungen gut aussieht.

Wenn Sie haben Bei Angeboten mit einer reservierten inkrementellen_Bestell-ID ist es dann möglich, dass Sie weiterhin Bestellungen mit der alten inkrementellen_ID sehen.Sobald Sie nach dem Update mit der Generierung neuer Angebote beginnen, sollte alles in Ordnung sein.

Normalerweise setze ich in meiner Entwicklungsumgebung einfach alle Anführungszeichen auf is_active = 0 nach dem Aktualisieren der inkrement_id, nur um einen Neuanfang zu haben.

Weitere Einzelheiten finden Sie hier: http://www.warpconduit.net/2012/04/18/how-to-change-the-order-increment-id-and-prefix-in-magento/

Ich versuche wirklich, direkte Abfragen in eine Magento-Datenbank zu vermeiden.Erstellen Sie nach Möglichkeit ein einfaches Modul mit einem Installations- oder Upgrade-Skript, das dies für Sie erledigt.Sie können beispielsweise das folgende Skript verwenden, um die Inkrement-ID und das Inkrement-Präfix zu ändern:

<?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();

Dabei ist XXXXXXXXX Ihre Inkrement-ID, mit der Sie beginnen möchten, und Y die Store-ID, für die Sie dies tun möchten.

Um das tatsächliche Präfix zu ändern, verwenden Sie die folgende Abfrage:

        $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'";

Dabei ist X das Präfix, das Sie verwenden möchten, und Y die Sotre-ID, für die Sie dies tun möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top