ความสับสนกับรหัสคำสั่งซื้อรหัสการเพิ่มคำสั่งซื้อและฉันไม่ได้รับรหัสคำสั่งซื้อเป็น 20001201


28

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

ฉันมีผู้สังเกตการณ์สำหรับsales_order_place_afterที่ฉันเก็บรายละเอียดการขายในตารางที่กำหนดเอง

แต่ด้วย

$orderId = $observer->getEvent()->getOrder()->getId();

ฉันได้รับรหัสคำสั่งตามรหัสปกติเช่น 112 หรือ 113 หรือ 110 ฯลฯ ไม่เหมือนกับ 20001201

แล้วรหัสคำสั่งซื้อจริงคืออะไร 20001201 หรือ 112

ฉันต้องการประมวลผลข้อมูลการสั่งซื้อเพิ่มเติมตามรหัสคำสั่งซื้อนี้ฉันใช้ 112, 113 ฯลฯ และใช้งานได้ แต่ฉันต้องชี้แจงให้ชัดเจน

คำตอบ:


23

ความแตกต่างคือ:

  • order_id คือรหัสคำสั่งซื้อ Magento ภายใน
  • ID การเพิ่มคำสั่งซื้อคือ ID ที่คุณสื่อสารกับลูกค้าของคุณ

คุณสามารถโหลดคำสั่งซื้อได้อย่างง่ายดายโดยใช้ order_id ภายใน:

Mage::getModel('sales/order')->load($orderId);

PS: หากคุณต้องการคุณสามารถรับรหัสที่เพิ่มขึ้นจากคำสั่งที่โหลดได้อย่างง่ายดาย:

$order->getIncrementId();

1
คุณหมายถึงนักพัฒนาใช้รหัสภายในและลูกค้าและการใช้งานอื่น ๆ Increment_id?
Charlie

Charlie, Marius 'โพสต์ด้านล่างสร้างความแตกต่างระหว่างทั้งสองและการตอบสนองของ mpaepper แสดงให้เห็นถึงวิธีการที่เรียกว่าในการส่งคืนรหัสเพิ่ม (ซึ่งเป็น' รหัสการสั่งซื้อ 'ในมุมมองของผู้ดูแลระบบและลูกค้า)
Joshua Chavanne

26

id= sales_flat_orderค่าคีย์หลักของตาราง นี่คือการสร้างอัตโนมัติสำหรับการสั่งซื้อแต่ละครั้งที่คุณได้รับในร้านค้าของคุณ มันมักจะเริ่มต้นจาก 1 และขึ้นไป

increment id= หมายเลข "เป็นมิตรกับผู้ใช้" ที่สร้างขึ้นก่อนทำการสั่งซื้อ ต้องไม่ซ้ำกันและใช้โดยวิธีการชำระเงินออนไลน์เป็นข้อมูลอ้างอิง (แต่ไม่เฉพาะ)
รหัสที่เพิ่มขึ้นตามค่าเริ่มต้นมีลักษณะเช่นนี้

                  100000104
                  ||   || |
 store view id ---||   || |
                   |---||-|
                     |   |----- an increment number kept in the table eav_entity_store
    a lot of zeros --|

จำนวนศูนย์เป็นตัวแปร มีการเพิ่มการใช้str_padเพื่อให้ความยาวของรหัสการเพิ่มขึ้นโดยไม่มีรหัสร้านค้าคือ8ของร้านคือ


คำนึงถึงคำถามใหม่ของฉัน แต่ค่าที่ 1 นำหน้าเป็นค่าไบต์จากตาราง EAV และไม่ใช่ store_view_id
someGuyOnTheWeb

4
@someGuyOnTheWeb ดี ... ใช่ไม่ เทคนิคคำนำหน้า (ไบต์ไม่เพียงแรก ... ผมเคยทำงานในโครงการที่มีคำนำหน้า 2 หลัก) eav_entity_storeมาจากโต๊ะ แต่สำหรับคำสั่งแรกไม่มีบันทึกในตารางนั้น ดังนั้นหนึ่งถูกสร้างขึ้น increment_prefixเมื่อมีการสร้างรหัสร้านค้าจะถูกเก็บไว้เป็น Mage_Eav_Model_Entity_Type::fetchNewIncrementIdดูวิธีการทำงานในวิธีการ if (!$entityStoreConfig->getId()) {เริ่มต้นด้วยบรรทัด:
Marius

5

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

Mage::getModel("sales/order")->load($enityId);

และรับโดย

$order->getId(); หรือ $order->getEntityId();

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

Mage::getModel("sales/order")->loadByIncrementId($incrementId);

และรับโดย

$order->getRealOrderId(); or $order->getIncrementId();

0

order_idซึ่งผมเชื่อว่าเป็นเช่นเดียวกับentity_idเป็นคีย์หลักในตาราง sales_order ที่ใช้ในการเข้าร่วมทุกตาราง eav ด้วยกัน มันถูกใช้ภายในในวีโอไอพี

order_increment_id ใช้สำหรับแสดงต่อลูกค้า

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