หมายเลขสั่งซื้อวีโอไอพี


9

ฉันมีปัญหาแปลก ๆ กับ Order Number ใน Magento

เมื่อเร็ว ๆ นี้เมื่อหนึ่งในการสั่งซื้อถูกวางลงบนเว็บไซต์ของฉันเลขที่ใบสั่งซื้อมาถูก100000350นึกคิดมันควรจะได้รับ100000370หมายเลขคำสั่งของฉันก่อนหน้านี้ได้และ100000369 100000367ฉันได้แนบภาพหน้าจอด้านล่างแล้ว

ภาพหน้าจอหมายเลขคำสั่งซื้อ

นอกจากนี้ฉันได้ตรวจสอบบันทึกข้อผิดพลาดแล้ว แต่ไม่พบรายการใด ๆ เราใช้ SagePay และ PayPal เป็นประตูการชำระเงิน

ใครสามารถแนะนำฉันเกี่ยวกับเรื่องนี้?


ฉันสามารถเห็นได้อย่างชัดเจนว่าคุณมีการติดตั้งโมดูลใด ๆ ที่เกี่ยวข้องกับการสั่งซื้อ Y taht แห่งนี้จะเกิดขึ้นปัญหา
Keyul ชาห์

ไม่มีโมดูลที่เกี่ยวข้องกับการสั่งซื้อ .. โมดูลบุคคลที่สามเท่านั้นที่เราใช้คือ Ebizmarts_SagePay, Mass_Product_Relater, TBT_Enhancegrid และ Sphinix Search
Dexter

1
ไม่มีปัญหาใหญ่ใครบางคนที่มีบัญชีลูกค้าเกือบจะเสร็จสิ้นคำสั่งซื้อไปยังจุดที่ส่งการชำระเงินได้รับการกำหนดหมายเลขสั่งซื้อการขายแล้วละทิ้งรถเข็นในช่วงระยะเวลาหนึ่ง เกิดขึ้นตลอดเวลา ... คุณได้รับคำสั่งขอแสดงความยินดีดำเนินการตามคำสั่งให้เสร็จสมบูรณ์แทนที่จะละทิ้ง
Fiasco Labs

ฉันคิดว่าคุณไม่ได้รับคำถามของฉัน
Dexter

1
@huzefam - โปรดสละสิ่งนี้กับทีมงานออกแบบ Magento หรือสร้างคอลัมน์หมายเลขอัตโนมัติประจำตัวของคุณเองที่คุณใช้งาน ERP ของคุณใน Magento SO ที่เสร็จสมบูรณ์ ใช่ฉันเข้าใจจากมุมมองของการตรวจสอบหากมีหมายเลขใบแจ้งหนี้ที่ขาดหายไป ดูเหมือนวีโอไอพีจะได้รับท่าทางว่าคำสั่งซื้อทั้งหมดไม่ถูกต้องดังนั้นตัวเลขที่หายไปจึงไม่ใช่เรื่องใหญ่ ฉันยังเข้าใจว่าระบบบัญชีบางระบบเขตอำนาจศาลของรัฐบาลรู้สึกแบบเดียวกันกับคำสั่งขายและคาดว่าจะมีหลักฐานการตรวจสอบที่แสดงคำสั่งที่เป็นโมฆะในลำดับอนุกรมที่สมบูรณ์
Fiasco Labs

คำตอบ:


28

ครั้งแรกที่ฉันได้รับหมายเลขลำดับเรามีความประหลาดใจและทำให้ตกใจจนฉันรู้ว่าเกิดอะไรขึ้น มันเกี่ยวข้องกับวิธีการที่วีโอไอพีจัดสรรหมายเลขใบสั่งขาย

เป็นเรื่องปกติที่จะมีหนึ่งในลำดับดังกล่าวอยู่ก่อนหน้าหมายเลขที่จัดสรรปัจจุบันและหนึ่งเดือนหรือมากกว่านั้น ความลับของมันก็คือว่ามันเป็นลูกค้าที่เข้าสู่ระบบที่ไม่ได้ทำตามคำสั่งซื้อหลังจากขั้นตอนที่สำคัญบางอย่างกลับมาเข้าสู่ระบบและตัดสินใจที่จะซื้อในที่สุด

ใบเสนอราคาพร้อมหมายเลขใบสั่งขายที่จัดสรรใช้หมายเลขนั้นสำหรับหมายเลขใบสั่งขาย

ตอนนี้สำหรับคำอธิบาย

กระบวนการสั่งซื้อวีโอไอพีสร้างใบเสนอราคาในครั้งแรกที่มีการเพิ่มสินค้าลงในรถเข็น

  • สำหรับลูกค้าที่เป็นแขกราคานี้จะคงอยู่ตราบใดที่เซสชันของพวกเขายังไม่หมดเวลา ณ จุดนั้นที่มีอยู่ในฐานข้อมูล แต่ไม่สามารถเรียกคืนได้โดยลูกค้าของแขก
  • เมื่อลูกค้าที่ลงทะเบียนเข้าสู่ระบบใบเสนอราคารถเข็นจะได้รับรหัสลูกค้าเพื่อให้รถเข็นใช้งานได้ตราบใดที่ลูกค้าไม่ได้ล้างข้อมูลและสามารถเรียกคืนได้โดยลูกค้าที่ลงทะเบียนโดยเข้าสู่บัญชีของพวกเขา

ณ จุดนี้การเสนอราคาเป็นเพียงคำสั่งขายที่มีศักยภาพเท่านั้น ไม่มีหมายเลขที่กำหนดเพราะลูกค้าไม่ได้ตั้งใจชำระเงิน

เมื่อลูกค้าคลิกปุ่มดำเนินการต่อเพื่อชำระเงินลูกค้าจะ:

  • อาจเข้าสู่ระบบก่อนหน้าเพื่อเริ่มต้นรถเข็น
  • หรือถ้าไม่ได้เข้าสู่ระบบถามว่าพวกเขาต้องการที่จะลงทะเบียนหรือตรวจสอบในฐานะแขก

สิ่งต่อไปนี้เป็นสิ่งสำคัญ: ลูกค้าที่เลือกที่จะลงทะเบียนในรถเข็นจะได้รับการปฏิบัติเหมือนลูกค้าทั่วไปจนกระทั่งการสั่งซื้อเสร็จสมบูรณ์และพวกเขาไปที่หน้าความสำเร็จซึ่งเวลาที่บัญชีของพวกเขาถูกสร้างขึ้นและพวกเขากำลังเข้าสู่ระบบ ยังคงเป็นคำพูดของลูกค้าแขกที่มีการสูญเสียการหมดเวลารถเข็นของเซสชันหากคำสั่งซื้อไม่สมบูรณ์และหน้าความสำเร็จปรากฏขึ้น

เมื่อสั่งซื้อบัตรเครดิตแล้วจะเกิดสิ่งต่อไปนี้เมื่อคลิกปุ่มสั่งซื้อ

  • ข้อมูลบัตรเครดิตข้อมูลที่อยู่สำหรับการเรียกเก็บเงินผลรวมของรถเข็นและข้อมูลการสั่งซื้อ
  • มีการกำหนดเลขที่ใบสั่งขายสำหรับใบเสนอราคานี้ ( sales_flat_quoteตารางในreserved_order_idคอลัมน์)
  • แพคเกจข้อมูลจะถูกส่งไปยังเกตเวย์บัตรเครดิตสำหรับการอนุมัติ / การโอนเงินเพื่อชำระสำหรับการสั่งซื้อ
  • ตัวประมวลผลรถเข็นเครดิตส่งคืน:
    • การอนุญาต / การจับเงินด้วยข้อมูลธุรกรรมที่เหมาะสมที่จะบันทึก
    • หรือการปฏิเสธการชำระเงินด้วยข้อมูลที่เหมาะสมว่าเหตุใดจึงปฏิเสธการให้สิทธิ์ / การจับ
  • ด้วยการอนุมัติ / การจับที่ประสบความสำเร็จใบเสนอราคาจะถูกแปลงเป็นใบสั่งขายและหากนี่เป็นการลงทะเบียนรถเข็นบัญชีลูกค้าจะถูกสร้างขึ้น

หากการทำธุรกรรมบัตรเครดิตถูกปฏิเสธสำหรับลูกค้าใด ๆ โดยประตูการชำระเงินด้วยบัตรเครดิตและลูกค้าต่อไปที่สั่งซื้อที่ประสบความสำเร็จจะมีการข้ามในลำดับหมายเลขการสั่งซื้อการขายเนื่องจากการชำระเงินถูกปฏิเสธ และใบสั่งขายที่ประสบความสำเร็จต่อไปนี้ได้รับการกำหนดให้เป็นหมายเลขถัดไป

สำหรับรถเข็นของผู้เข้าพัก (คำสั่งซื้อของแขกและลงทะเบียนไม่สำเร็จในลูกค้ารถเข็น) ที่เกินเวลาหมดของเซสชันหมายเลขใบสั่งขายที่สงวนไว้นี้จะหายไปเมื่อเซสชันหมดอายุลงทำให้เกิดช่องว่างในลำดับใบสั่งขาย

สำหรับลูกค้าที่เข้าสู่ระบบก่อนที่จะคลิกที่ปุ่มดำเนินการอ้างได้รับรหัสลูกค้าดังนั้นหากพวกเขาพยายามที่จะสั่งซื้อและพบว่ามันถูกปฏิเสธพวกเขาสามารถกลับมาเข้าสู่ระบบค้นหารถเข็นยังคงมีเนื้อหาและวาง คำสั่งบางครั้งมากในภายหลัง (ที่ยาวที่สุดถึงวันที่สี่เดือน) อ้างจะใช้ลิขสิทธิ์จำนวนสั่งซื้อการขายที่ได้รับมอบหมายนำไปสู่การออกจากลำดับจำนวนสั่งซื้อการขายการแสดงในการแสดงผลการจัดการคำสั่งซื้อยอดขายของคุณ


เพื่อวัตถุประสงค์ในการตรวจสอบฉันแสร้งทำเป็นค้างในเช็คเอาต์โดยไม่เลือกวิธีการชำระเงินและปิดเบราว์เซอร์ในที่สุด (บนคอมพิวเตอร์ที่เปิดไซต์ + เช็คเอาต์ก่อน) และในขณะเดียวกันการสั่งซื้อคอมพิวเตอร์เครื่องที่สองเสร็จสมบูรณ์ (ซึ่งควรจะได้รับการเพิ่ม ID ต่อไป) ผลที่ได้คือมันไม่กระโดดข้ามตัวเลข ถ้ามันทำงานได้อย่างนั้นมันจะต้องเพิ่ม ID ที่ไม่ได้ใช้ระหว่างคำสั่ง 10 และคำสั่ง 11 ซึ่งมันไม่ได้ ตามข้อมูลของคุณฉันได้พยายามตรวจสอบและทำสิ่งที่คุณระบุไว้อย่างแน่นอน แต่ไม่ได้ให้ผลลัพธ์
ศิวะ

หากลูกค้าล้มเหลวในเกตเวย์การชำระเงินลูกค้าจะแสดงเป็นการชำระเงินที่รอดำเนินการหรือถูกยกเลิกและหากการสั่งซื้อล้มเหลวในส่วนสุดท้ายของการชำระเงินที่จะไม่ปรากฏขึ้นเลย (และเพียงดำเนินการต่อด้วย ID ที่ถูกต้องใน ลำดับ). ดังนั้นตอนนี้ฉันสับสนกับเรื่องนี้ โปรดช่วยฉันให้เข้าใจว่าทำไมหมายเลขคำสั่งซื้อข้ามการสุ่ม ขอบคุณ
ศิวะ

คำอธิบายที่ดี
Wolfack

2

ฉันกำลังเผชิญปัญหาเดียวกัน แต่เมื่อเซิร์ฟเวอร์ถูกโหลดจำนวนมากเท่านั้น ปัญหานี้เกิดขึ้นเนื่องจาก db เข้าสู่สถานะล็อคในขณะแปลงคำพูดเป็นคำสั่ง ในการตรวจสอบเพิ่มเติมฉันพบว่าปัญหาคือมันพยายามเขียนลงในตาราง sales_flat_order_grid ภายในธุรกรรมทันทีหลังจากแทรกลงในตาราง sales_flat_order ด้วยคิวรีที่เกิดขึ้นพร้อมกันทำให้เกิดการล็อคการชน ทางออกที่แท้จริงคือการย้ายข้อมูลของ sales_flat_order_grid ออกจากธุรกรรม

ลิงก์ช่วยให้ฉันเข้าใจปัญหา

แพทช์แก้ไขปัญหาสำหรับฉัน

คุณต้องลบฟังก์ชั่น _afterSave จาก Mage_Sales_Model_Abstract และเพิ่ม

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

แจ้งให้เราทราบหากการแก้ปัญหาสำหรับคุณ


ไม่มีใครลองวิธีนี้ตามที่กล่าวโดยShaily ?
ศิวะ

0

ฉันไม่แน่ใจ แต่สิ่งนี้อาจแก้ปัญหาของคุณได้:

เท่าที่ฉันคิดมีบางอย่างอาจรบกวนeav_entity_storeโต๊ะของคุณ มันมีข้อมูลเกี่ยวกับ increment_id ถัดไปเช่น order_id ที่จะใช้ อาจเป็นโมดูลหรือรหัสในระบบวีโอไอพีของคุณอาจมีการเปลี่ยนแปลง

เปิดตารางนี้และอัปเดต increment_last_id coloumn ด้วยรหัสคำสั่งซื้อล่าสุดของคุณ ระวังจะมีรหัสที่เพิ่มขึ้นเป็นของคนอื่น ๆ ได้เป็นอย่างดีเช่นใบแจ้งหนี้, การจัดส่งสินค้าและอื่น ๆ เพื่อให้แน่ใจว่าเพียงแค่ไปที่eav_entity_typesโต๊ะและดูสิ่งที่เป็น entity_type_idสำหรับsales/order(คอลัมน์entity_model) ในวีโอไอพีของฉันมันคือ 5 ดังนั้นตอนนี้ไปที่eav_entity_storeตารางและเพียงแค่เพิ่ม increment_id สำหรับแถวที่มีentity_type_id5 คุณสามารถอัปเดตโดยตรงผ่าน phpmyadmin หรือคุณสามารถเรียกใช้แบบสอบถามเช่น

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

โปรดทราบ 5 คือเอนทิตี _type_id ในวีโอไอพีของฉันสำหรับการสั่งซื้อ

อาจมีสาเหตุหลายประการสำหรับปัญหาของคุณ แต่ฉันคิดว่านี่อาจช่วยแก้ปัญหาของคุณได้


ขอบคุณ .. แต่ได้ตรวจสอบตารางแล้วและมีรหัสการเพิ่มที่ถูกต้อง
Dexter

รหัสคำสั่งซื้อสูงสุด (ไม่ใช่ล่าสุด) ของคุณคืออะไรในคำสั่งผู้ดูแลระบบ -> คำสั่งซื้อ ใส่ค่านั้นในตารางที่ฉันบอกว่า. วางคำสั่งทดสอบและตรวจสอบ ..
Pradeep
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.