Đặt hàng tùy chỉnh, hóa đơn và số bắt đầu giao hàng


Câu trả lời:


7

Nếu tôi muốn tiếp tục sử dụng loại gia tăng mặc định của Magento và chỉ muốn thay đổi số gia tăng tiếp theo, đây là những gì tôi sử dụng.

Hãy chắc chắn chỉ sử dụng số gia tăng lớn hơn số đã sử dụng!

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 này cần lưu ý không đặt ngẫu nhiên một ID gia tăng đã được sử dụng.
Nếu một mức tăng lớn hơn next_incrementđã được sử dụng, nó chỉ cần đặt số gia tăng cuối cùng cho cả ba loại thực thể là như nhau.


2

Không chắc chắn về đòn bẩy an toàn nhưng tôi đang thực hiện bằng cách sửa đổi trực tiếp các giá trị trong 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";

Thay thế mã loại thực thể bằng "hóa đơn" hoặc "vận chuyển" để làm tương tự cho phần còn lại.


2

Nếu bạn muốn sử dụng phạm vi số hoặc định dạng tùy chỉnh cho ID gia tăng thay vì gia số Magento mặc định, bạn cũng có thể chỉ định mô hình gia tăng tùy chỉnh.

Ví dụ:

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

Sau đó, cập nhật mô hình gia tăng cho các thực thể trong tập lệnh thiết lập:

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

Hãy chắc chắn không trả lại ID gia tăng đã được sử dụng trước đây!


2

Cách tốt nhất [an toàn nhất cho magento] để thay đổi số thứ tự là thay đổi số thứ tự tiếp theo chứ không phải số thứ tự trước đó. Điều này có thể được thực hiện với một truy vấn cơ sở dữ liệu đơn giản. Đây là những cái tôi đã sử dụng trong trang web của tôi và nó đang hoạt động mà không có vấn đề gì trong gần một năm nay.

Đặt hàng:

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

Hóa đơn:

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

Lô hàng:

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

Các truy vấn này sẽ thay đổi id gia tăng tiếp theo cho cửa hàng magento của bạn. LƯU Ý: Thay thế X bằng id tiếp theo mà bạn muốn.

Chấp nhận một câu trả lời nếu nó hoạt động.



có và giải pháp hoạt động.
Tarun

0

Đặt hàng ID tăng dần và tiền tố

Thay đổi ID tăng đơn hàng của bạn trên tất cả các cửa hàng

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';
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.