Pesanan Kustom, Faktur, dan Nomor Mulai Pengiriman

Jawaban:

7

Jika saya ingin terus menggunakan tipe kenaikan standar Magento dan hanya ingin mengubah nomor kenaikan berikutnya, inilah yang saya gunakan.

Pastikan untuk hanya menggunakan angka kenaikan yang lebih besar dari yang sudah digunakan!

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 ini harus berhati-hati agar tidak secara tidak sengaja menetapkan ID kenaikan yang sudah digunakan.
Jika kenaikan yang lebih besar maka next_incrementsudah digunakan, itu hanya menetapkan angka kenaikan terakhir untuk ketiga jenis entitas yang sama.

Vinai
sumber
2

Tidak yakin tentang tuas pengaman, tetapi saya melakukannya dengan memodifikasi nilai dalam DB secara langsung:

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

Ganti kode jenis entitas dengan "faktur" atau "pengiriman" untuk melakukan hal yang sama untuk yang lain.

pengguna487772
sumber
2

Jika Anda ingin menggunakan rentang nomor khusus atau format untuk ID kenaikan alih-alih kenaikan Magento default, Anda juga dapat menetapkan model kenaikan khusus.

Sebagai contoh:

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

Kemudian, perbarui model kenaikan untuk entitas dalam skrip pengaturan:

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

Pastikan untuk tidak mengembalikan ID kenaikan yang sudah digunakan sebelumnya!

Vinai
sumber
2

Cara [teraman untuk magento] terbaik untuk mengubah nomor pesanan adalah mengubah nomor pesanan berikutnya dan bukan yang sebelumnya. Ini dapat dilakukan dengan permintaan basis data sederhana. Ini adalah yang saya gunakan di situs saya dan berfungsi tanpa masalah selama hampir satu tahun sekarang.

Memesan:

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

Faktur:

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

Pengiriman:

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

Kueri ini akan mengubah id kenaikan berikutnya untuk toko magento Anda. CATATAN: Ganti X dengan id berikutnya yang Anda inginkan.

Terima jawaban jika berhasil.

Tarun
sumber
1
Disalin dari sini, saya kira warpconduit.net/2012/04/18/…
user487772
ya dan solusinya berhasil.
Tarun
0

ID Penambahan Pesanan dan Awalan

Ubah ID Penambahan Pesanan Anda di Semua Toko

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
sumber