Domanda

Gestisco un negozio (Magento CE 1.6.2) con 4 diverse viste di negozi, che hanno (per motivi storici) ID ID 1, 3, 4 e 7. I numeri d'ordine sono stati sembri come questo 10000001, 30000001, 40000001,70000001.

Ho configurato una nuova installazione con Magento CE 1.9.1, ma ora gli ID del negozio sono 1, 2, 3, 4 ...

Come posso cambiarlo nella vecchia situazione?

Ho trovato questo post -> http://www.thevortexcode.com/how-to-change-order-prefix-and-default-value-of-ordshirdmentinvoice-numbercredit-memo-in-magento/ Spiegare come impostare / Cahnge il eav_entity_store.increment_prefix

Ma questo non sembra funzionare in 1,9 ...

È stato utile?

Soluzione

Basta modificare l'ID dei negozi nella colonna store_id nella tabella del database core_store.A causa delle chiavi straniere, questo si aggiornerà in quasi tutti gli altri tavoli.

Inoltre è necessario aggiornare:

    .
  • Colonna default_store_id nella tabella core_store_group

.

Come commentato, modifica del tuo ID di database effettivo sarebbe un po 'radicale.Inoltre dovresti comunque aggiornare la tabella eav_entity_store.

Quindi, è possibile anche semplicemente impostare una configurazione per negozio per i tuoi ID di incremento.Puoi farlo nella tabella eav_entity_store:

    .
  • Per ID STORE 1, impostare increment_prefix a 1
  • Per l'ID STORE 2, impostare increment_prefix a 3
  • Per ID STORE 3, impostare increment_prefix a 4
  • Per ID STORE 4, impostare increment_prefix a 7

Altri suggerimenti

Meglio utilizzare i wrapper modello piuttosto che le dichiarazioni SQL grezze.

Esempio:

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

Vedi:

Ho dovuto farlo molte volte per motivi diversi e questo è quello che faccio:

Questa query ti mostrerà l'ID incremento solo per Entity_type_code= ordine

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

Una volta che hai individuato le righe che vorresti aggiornare puoi cambiarli come questo:

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

Si noti che il valore per increment_last_id contiene già l'increment_prefix, quindi di solito ho rimosso il vecchio increment_prefix da increment_last_id in modo che il nuovo ID di incremento degli ordini sia buono.

Se hai Quotes con un incremento riservato_order_id è possibile che vedrai ancora ordini con il vecchio increment_id . Una volta che inizi a generare nuove citazioni dopo che l'aggiornamento dovrebbe andare bene.

Di solito nel mio ambiente di sviluppo ho appena impostato tutte le quotazioni su IS_Active= 0 dopo aver aggiornato l'incremento_id solo per avere un nuovo inizio.

Per maggiori dettagli Verifica qui: http://www.warpconduit.net/2012/04/18/how-to-change-the-order-increment-id-and-prefix-in-magento/

Cerco davvero ed evitare query dirette in un DB magento.Se possibile, creare un modulo semplice con uno script di installazione o aggiornamento che lo farà per te.Ad esempio, è possibile utilizzare lo script sottostante per modificare l'ID incremento e il prefisso incrementare:

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

DOVE XXXXXXXXX è il tuo ID INCREMENS che vuoi iniziare e y essere l'ID del negozio che vuoi fare questo per.

Per modificare il prefisso effettivo, utilizzare la query qui sotto:

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

Dove X è il prefisso che si desidera utilizzare e Y essere l'ID Sotre che vuoi fare questo per.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top