Respostas:
Se eu quiser continuar usando o tipo de incremento padrão do Magento e apenas quiser alterar o próximo número de incremento, é isso que eu uso.
Certifique-se de usar apenas números de incremento maiores que os já usados!
SET @next_increment='310000000';
SELECT @entity_types:=GROUP_CONCAT(`entity_type_id`) FROM `eav_entity_type`
WHERE `entity_type_code` IN ('order', 'invoice', 'shipment');
SELECT @new_last_increment:=GREATEST((@next_increment -1),
(SELECT MAX(`increment_last_id`) FROM `eav_entity_store`
WHERE FIND_IN_SET(`entity_type_id`, @entity_types)));
UPDATE `eav_entity_store` SET `increment_last_id`=@new_last_increment
WHERE FIND_IN_SET(`entity_type_id`, @entity_types);
Este SQL deve cuidar de não definir acidentalmente um ID de incremento que já foi usado.
Se um incremento maior next_increment
já foi usado, ele simplesmente define o último número de incremento para todos os três tipos de entidades como iguais.
Não tenho certeza sobre a alavanca de segurança, mas estou fazendo isso modificando valores no DB diretamente:
UPDATE `eav_entity_store` s
INNER JOIN `eav_entity_type` t ON t.`entity_type_id` = s.`entity_type_id`
SET s.`increment_last_id` = 'your_increment_here'
WHERE t.entity_type_code = "order";
Substitua o código do tipo de entidade por "fatura" ou "remessa" para fazer o mesmo pelo restante.
Se você deseja usar intervalos ou formatos de números personalizados para IDs de incremento em vez dos incrementos padrão do Magento, também pode atribuir um modelo de incremento personalizado.
Por exemplo:
class My_Shop_Model_Entity_Increment_Erp
extends Mage_Eav_Model_Entity_Increment_Abstract
{
public function getNextId()
{
$last = $this->getLastId();
$entity = $this->getEntityTypeId();
$store = $this->getStoreId()
$next = Mage::helper('my_shop/api')->getNextIncrementFromErp($last, $entity, $store);
// If you want to apply pad char and length, otherwise simply return $next
return $this->format($next);
}
}
Em seguida, atualize o modelo de incremento para as entidades em um script de instalação:
$installer = Mage::getModel('eav/entity_setup', 'core_setup');
$installer->startSetup();
$installer->updateEntityType('order', 'increment_model', 'my_shop/entity_increment_erp');
$installer->updateEntityType('invoice', 'increment_model', 'my_shop/entity_increment_erp');
$installer->updateEntityType('shipment', 'increment_model', 'my_shop/entity_increment_erp');
$installer->endSetup();
Certifique-se de não retornar os IDs de incremento que já foram usados anteriormente!
A melhor maneira [mais segura para o magento] de alterar o número do pedido é alterar os números dos próximos pedidos e não os anteriores. Isso pode ser feito com uma simples consulta ao banco de dados. Estes são os que eu usei no meu site e ele está funcionando sem nenhum problema há quase um ano.
Ordem:
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_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='order';
Fatura:
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_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='invoice';
Envio:
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_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='shipment';
Essas consultas mudarão os próximos IDs de incremento para sua loja magento. NOTA: Substitua X pelo próximo ID que você deseja.
Aceite uma resposta, se funcionar.
ID e prefixo do incremento do pedido
Alterar o ID de incremento do pedido em todas as lojas
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_last_id='XXXXXXXXXX'
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_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='invoice';