Индивидуальный заказ, счет и стартовые номера доставки


Ответы:


7

Если я хочу продолжить использовать тип приращения Magento по умолчанию и просто хочу изменить следующий номер приращения, это то, что я использую.

Обязательно используйте только номера приращений, которые больше уже используемых!

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

Этот SQL должен позаботиться о том, чтобы случайно не установить идентификатор приращения, который уже использовался.
Если больший прирост, чем next_incrementуже был использован, он просто устанавливает последний номер приращения для всех трех типов сущностей одинаковым.


2

Не уверен насчет рычага безопасности, но я делаю это, изменяя значения в DB напрямую:

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

Замените код типа объекта «счет-фактура» или «доставка», чтобы сделать то же самое для остальных.


2

Если вы хотите использовать пользовательские диапазоны номеров или форматы для идентификаторов приращения вместо приращений Magento по умолчанию, вы также можете назначить пользовательскую модель приращения.

Например:

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

Затем обновите модель приращения для сущностей в сценарии установки:

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

Не возвращайте идентификаторы приращения, которые уже использовались ранее!


2

Лучший [самый безопасный для magento] способ изменить номер заказа - это изменить номера следующего заказа, а не предыдущие. Это можно сделать с помощью простого запроса к базе данных. Это те, которые я использовал на своем сайте, и он работает без проблем уже почти год.

Порядок:

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

Пересылка:

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

Эти запросы изменят следующие идентификаторы для вашего магазина magento. ПРИМЕЧАНИЕ. Замените X следующим идентификатором, который вы хотите.

Примите ответ, если он работает.


1
Скопировано здесь я догадываюсь warpconduit.net/2012/04/18/...
user487772

да и решение работает.
Тарун

0

Идентификатор приращения заказа и префикс

Измените идентификатор приращения заказа во всех магазинах

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';
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.