Pregunta

Dirijo una tienda (Magento CE 1.6.2) con 4 vistas de tienda diferentes, que tienen (por razones históricas) los ID 1, 3, 4 y 7.Los números de pedido se ven así: 10000001, 30000001, 40000001, 70000001.

He configurado una nueva instalación con Magento CE 1.9.1, pero ahora los ID de la tienda son 1, 2, 3, 4...

¿Cómo cambio esto en la situación anterior?

Me encontré con esta publicación --> http://www.thevortexcode.com/how-to-change-order-prefix-and-default-value-of-ordershipmentinvoice-numbercredit-memo-in-magento/ explicando cómo configurar/cambiar el eav_entity_store.increment_prefix

Pero esto no parece funcionar en 1.9...

¿Fue útil?

Solución

Simplemente edite el ID de las tiendas en el store_id columna en el core_store tabla de base de datos.Debido a las claves externas, esto se actualizará en casi todas las demás tablas.

Además deberías actualizar:

  • default_store_id columna en core_store_group mesa

Como se comentó, cambiar la ID de su base de datos real sería un poco radical.Además, todavía tendrías que actualizar el eav_entity_store mesa.

Por lo tanto, también puede simplemente establecer una configuración por tienda para sus ID de incremento.Puedes hacer esto en el eav_entity_store mesa:

  • Para ID de tienda 1, establezca increment_prefix a 1
  • Para ID de tienda 2, establezca increment_prefix a 3
  • Para ID de tienda 3, establezca increment_prefix para 4
  • Para ID de tienda 4, establezca increment_prefix a 7

Otros consejos

MEJOR UTILICE MODELO WRAPTERS en lugar de declaraciones SQL cruda.

Ejemplo:

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

ver:

Tuve que hacer esto muchas veces por diferentes razones y esto es lo que hago:

Esta consulta le mostrará la ID de incremento solo para 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';

Una vez que localice las filas que le gustaría actualizar, puede cambiarlas como esta:

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

Note que el valor para increment_last_id ya contiene el incremental_prefix, por lo que generalmente eliminé el antiguo incremental_prefix desde increment_last_id, por lo que el nuevo ID de incremento de pedidos se ve bien.

Si tiene cotizaciones con un increment_order_id reservado, entonces es posible que aún vea las órdenes con el antiguo incremental_id . Una vez que comience a generar nuevas cotizaciones después de la actualización, todo debería estar bien.

Por lo general, en mi entorno de desarrollo, simplemente configuro todas las citas en is_active= 0 después de actualizar el increment_id solo para tener un nuevo comienzo.

Para obtener más detalles, consulte aquí: http://www.warpconduit.net/2012/04/18/2012/04/18/how-to-change-the-order-increment-id-and-prefix-in-magento/

Realmente intento y evito las consultas directas en un Magento DB.Si es posible, cree un módulo simple que tenga un script de instalación o actualización que lo haga por usted.Por ejemplo, puede usar el siguiente script para cambiar el ID de incremento y el prefijo de incremento:

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

Donde XXXXXXXXX es su ID de incremento que desea iniciar y es el ID de la tienda para el que desea hacer esto.

Para cambiar el prefijo real, use la consulta a continuación:

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

Donde X es el prefijo que desea usar e y y y es el ID de Sotre con el que desea hacer esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top