Números iniciais de pedidos, faturas e remessas personalizados

Respostas:

7

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_incrementjá foi usado, ele simplesmente define o último número de incremento para todos os três tipos de entidades como iguais.

Vinai
fonte
2

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.

user487772
fonte
2

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!

Vinai
fonte
2

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.

Tarun
fonte
11
Copiado daqui eu acho que warpconduit.net/2012/04/18/…
user487772
sim e a solução funciona.
Tarun
0

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';
Alkesh Goswami
fonte