Masalah Nomor Pesanan Magento


9

Saya mendapat masalah aneh dengan Nomor Pesanan di Magento.

Baru-baru ini ketika satu pesanan ditempatkan di situs web saya nomor Pesanan datang 100000350, Idealnya seharusnya 100000370seperti nomor pesanan saya sebelumnya 100000369dan 100000367. Saya telah memasang tangkapan layar di bawah ini untuk itu

Screenshot Nomor Pesanan

Selain itu, saya telah memeriksa log kesalahan tetapi belum menemukan entri apa pun. Kami menggunakan SagePay dan PayPal sebagai gateway pembayaran untuk itu.

Adakah yang bisa membimbing saya dalam hal ini?


Saya dapat melihat dengan jelas bahwa Anda telah menginstal modul apa pun yang berhubungan dengan pesanan, ini akan menimbulkan masalah,
Keyul Shah

Tidak ada modul yang terkait dengan pesanan .. satu-satunya modul pihak ketiga yang kami gunakan adalah Ebizmarts_SagePay, Mass_Product_Relater, TBT_Enhancegrid, dan Pencarian Sphinix
Dexter

1
Bukan masalah besar, seseorang dengan akun pelanggan hampir menyelesaikan pesanan ke titik yang diserahkan untuk pembayaran, mendapat nomor Pesanan Penjualan dan kemudian meninggalkan gerobak untuk jangka waktu tertentu. Terjadi sepanjang waktu ... Anda mendapatkan pesanan, selamat, menyelesaikan pesanan alih-alih ditinggalkan.
Fiasco Labs

Saya pikir Anda tidak mendapatkan pertanyaan saya
Dexter

1
@huzefam - Silakan lakukan ini dengan tim desain Magento, atau buat kolom nomor autonumber Anda sendiri yang Anda pilih untuk ERP pada Magento SO yang sudah selesai. Ya, saya mengerti dari sudut pandang audit jika ada nomor faktur yang hilang, ada saputangan. Magento tampaknya telah mengambil sikap bahwa tidak semua pesanan valid, sehingga nomor SO yang hilang bukan masalah besar. Saya juga memahami bahwa beberapa sistem akuntansi, yurisdiksi pemerintah merasakan hal yang sama tentang Pesanan Penjualan dan berharap memiliki jejak audit yang menunjukkan pesanan batal dalam urutan seri lengkap.
Fiasco Labs

Jawaban:


28

Pertama kali saya mendapatkan nomor urut, kami mengalami kejutan dan beberapa cemas sampai saya mengetahui apa yang terjadi. Ini berkaitan dengan bagaimana Magento mengalokasikan nomor Pesanan Penjualan.

Ini sepenuhnya normal untuk memiliki satu dari urutan seperti itu, sebelum nomor yang dialokasikan saat ini dan satu bulan atau lebih lama. Rahasia untuk itu adalah bahwa itu adalah pelanggan yang masuk log yang tidak menyelesaikan pesanan setelah tahap kritis tertentu, kembali, masuk dan memutuskan untuk akhirnya membeli.

Kutipan dengan nomor Pesanan Penjualan yang dialokasikan menggunakan nomor itu untuk nomor Pesanan Penjualan.

Sekarang untuk penjelasannya.

Proses pemesanan Magento membuat penawaran saat pertama kali sesuatu ditambahkan ke troli.

  • Untuk pelanggan tamu, penawaran ini berlangsung selama sesi mereka belum berakhir, pada saat itu ada dalam database, tetapi tidak dapat dipulihkan oleh pelanggan tamu.
  • Ketika pelanggan terdaftar login, kuota gerobak akan diberikan id pelanggan mereka sehingga gerobak berlangsung selama pelanggan tidak mengosongkannya dan dapat diambil kembali oleh pelanggan terdaftar dengan masuk ke akun mereka.

Pada titik ini, penawaran hanya merupakan Pesanan Penjualan potensial . Tidak ada nomor yang ditetapkan karena pelanggan belum berkomitmen untuk membayarnya.

Saat pelanggan mengklik tombol Lanjutkan untuk checkout, mereka akan:

  • baik login sebelum memulai keranjang
  • atau jika tidak masuk, ditanya apakah mereka ingin mendaftar atau check out sebagai tamu.

Berikut ini adalah bagian penting: Pelanggan yang memilih untuk mendaftar di troli diperlakukan sebagai pelanggan tamu sampai pesanan selesai dan mereka sampai ke halaman sukses, pada saat akun mereka dibuat dan mereka masuk. Kutipan tetap menjadi kutipan pelanggan tamu dengan kehilangan batas waktu sesi sesi jika pesanan tidak selesai dan halaman sukses ditampilkan.

Dengan pesanan kartu kredit, berikut ini terjadi ketika tombol Place Order diklik.

  • Informasi kartu kredit, informasi alamat penagihan, total keranjang, dan informasi pesanan dikumpulkan
  • Nomor Pesanan Penjualan diberikan untuk penawaran ini ( sales_flat_quotetabel di reserved_order_idkolom)
  • Paket data dikirimkan ke gateway kartu kredit untuk mengotorisasi / membatasi dana untuk membayar pesanan.
  • Prosesor keranjang kredit melewati kembali:
    • baik otorisasi / penangkapan dana dengan informasi transaksi yang sesuai untuk dicatat
    • atau penolakan pembayaran dengan informasi yang sesuai mengapa otorisasi / tangkapan ditolak.
  • Dengan otorisasi / penangkapan yang berhasil, penawaran dikonversi ke Pesanan Penjualan dan jika ini adalah daftar gerobak, akun pelanggan dibuat.

Jika transaksi kartu kredit ditolak untuk setiap pelanggan melalui gateway pembayaran kartu kredit, dan pelanggan berikutnya melakukan pesanan yang berhasil, akan ada lompatan dalam urutan nomor Sales Order karena pembayaran yang ditolak Sales Order ditugaskan dengan nomor Pesanan Penjualan yang dipesan. dan Order Penjualan berikut berhasil ditugaskan nomor yang tersedia berikutnya.

Untuk kereta tamu (pesanan tamu dan daftar yang gagal di pelanggan kereta) yang melebihi batas waktu sesi, nomor Pesanan Penjualan yang dicadangkan ini akan hilang ketika sesi berakhir, meninggalkan celah dalam urutan Pesanan Penjualan.

Untuk pelanggan yang masuk sebelum mengklik tombol Lanjutkan , penawaran diberikan id pelanggan, jadi jika mereka mencoba untuk melakukan pemesanan dan menemukan bahwa itu ditolak, mereka dapat kembali, masuk, menemukan keranjang masih memiliki konten dan menempatkan memesan, terkadang jauh kemudian (terlama sampai saat ini adalah empat bulan). Kutipan akan menggunakan undang nomor Sales Order yang ditetapkan, mengarah ke luar urutan nomor Sales Order menunjukkan di layar manajemen Sales Order Anda.


Untuk tujuan pengecekan, saya berpura-pura terjebak dalam checkout dengan tidak memilih metode pembayaran dan akhirnya menutup browser (di komputer yang membuka situs + checkout terlebih dahulu). dan sementara itu menyelesaikan pesanan komputer kedua (yang harus mendapatkan kenaikan ID berikutnya). Hasilnya adalah tidak melompati angka. Jika memang bekerja seperti itu, itu akan menambahkan ID yang tidak digunakan antara pesanan 10 dan pesanan 11 yang tidak. Sesuai informasi Anda, saya telah mencoba memverifikasi dan melakukan persis hal yang Anda tentukan tetapi tidak memberikan output.
Siva

Alih-alih jika pelanggan gagal di Payement Gateway, itu akan muncul sebagai pembayaran tertunda atau dibatalkan, dan jika pesanan gagal di bagian terakhir dari checkout yang tidak akan muncul sama sekali (dan teruskan dengan ID yang benar di urutan). Jadi sekarang, saya bingung dengan ini. Tolong bantu saya untuk memahami mengapa nomor pesanan dilewati secara acak. Terima kasih
Siva

Penjelasan Hebat.
Wolfack

2

Saya menghadapi masalah yang sama tetapi hanya ketika server dipukul dengan sejumlah besar beban. Masalah ini terjadi karena db masuk ke status penguncian saat mengubah kuotasi menjadi berurutan. Pada pemeriksaan lebih lanjut, saya menemukan bahwa masalahnya adalah mencoba untuk menulis ke tabel sales_flat_order_grid dalam transaksi segera setelah dimasukkan ke dalam tabel sales_flat_order. Dengan pertanyaan bersamaan itu menyebabkan tabrakan penguncian. Solusi sebenarnya adalah memindahkan barang-barang dari sales_flat_order_grid dari transaksi.

Tautan tersebut membantu saya memahami masalah ini

Patch menyelesaikan masalah untuk saya.

Anda harus menghapus function _afterSave dari Mage_Sales_Model_Abstract dan menambahkan

public function afterCommitCallback(){
    if (!$this->getForceUpdateGridRecords()) {
         $this->_getResource()->updateGridRecords($this->getId());
     }
    parent::afterCommitCallback();
}

Beri tahu saya jika ini menyelesaikan masalah untuk Anda.


Adakah yang mencoba metode ini seperti yang dikatakan oleh Shaily ?
Siva

0

Saya tidak yakin, tapi ini bisa menyelesaikan masalah Anda:

Sejauh yang saya pikirkan, mungkin ada sesuatu yang mengganggu eav_entity_storemeja Anda . Ini berisi informasi tentang increment_id berikutnya yaitu order_id untuk digunakan. Mungkin beberapa modul atau kode di sistem magento Anda mungkin telah mengubahnya.

Buka tabel ini, dan perbarui kolom increment_last_id dengan id pesanan terakhir Anda. Hati-hati, mengandung kenaikan id orang lain juga seperti faktur, pengiriman dll Yang pasti, hanya pergi ke eav_entity_typesmeja dan melihat apa adalah entity_type_iduntuk sales/order(kolom entity_model). Di magento saya, ini 5. Jadi sekarang pergi ke eav_entity_storemeja dan perbarui saja increment_id untuk baris yang entity_type_id5. Anda dapat langsung memperbaruinya melalui phpmyadmin atau Anda dapat menjalankan query seperti,

update eav_entity_store set increment_last_id = 'your_last_order_id' where entity_type_id = 5; 

Harap dicatat 5 adalah entity_type_id di magento saya untuk pesanan

Mungkin ada banyak alasan untuk masalah Anda, tetapi saya pikir ini dapat menyelesaikan masalah Anda.


Terima kasih .. tetapi sudah memeriksa tabel dan memiliki id kenaikan yang benar
Dexter

berapa id pesanan (bukan terbaru) maksimum Anda di admin penjualan -> pesanan? Masukkan nilai itu dalam tabel yang saya katakan..tempatkan pesanan tes dan periksa ..
Pradeep
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.