คำสั่งแก้ไขของผู้ดูแลระบบสูญเสียที่อยู่สำหรับจัดส่ง


10

ลูกค้าเข้าสู่การสั่งซื้อด้วยที่อยู่จัดส่ง / การเรียกเก็บเงินที่แตกต่างกัน

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

  1. ทุกคนสามารถยืนยันว่าการติดตั้งของพวกเขาไม่เหมือนกัน
  2. ไม่มีใครมีทางออก


2
ฉันรักษาร้านค้าไว้ไม่กี่แห่งและไม่มีร้านค้าเหล่านี้เลย
Sander Mangel

@ SanderMangel ขอบคุณ ดังนั้นตอนนี้เราต้องเข้าใจว่าทำไมมันถึงเกิดขึ้นในการติดตั้งของฉัน ข้อเสนอแนะใด ๆ
mendel

ตรวจสอบบันทึกของคุณทั้ง Magento และ Apache หากไม่เป็นไรให้ปิดส่วนขยายของบุคคลที่สามทั้งหมดผ่านแอพ / โมดูล / อื่น ๆ เพื่อดูว่าเป็นสาเหตุ ถ้านั่นไม่ช่วย ... เอ้อ ... เจ้ามีปัญหาใหญ่กว่านี้
Sander Mangel

@SanderMangel ฉันปิดใช้งานส่วนขยายของบุคคลที่สามทั้งหมดไม่ได้สร้างความแตกต่าง ฉันตรวจสอบข้อยกเว้นและบันทึกของระบบแล้วและฉันไม่เห็นข้อผิดพลาดใด ๆ ที่ตรงกับเวลาที่ฉันคลิก 'แก้ไขคำสั่งซื้อ'
mendel

คำตอบ:


3

ฉันมีปัญหานี้ ปัญหาของฉันคือที่same_as_billing_addressถูกตั้งค่าที่อยู่จัดส่งผ่านส่วนหน้าดังนั้นความคิดแบ็กเอนด์จึงไม่มีที่อยู่ที่สองและข้ามการแสดงผล

ตรวจสอบส่วนหน้าของคุณไม่ว่าจะเป็นการส่งข้อมูลที่ถูกต้อง


เมื่อลูกค้าป้อนคำสั่งซื้อพวกเขาสามารถเลือกที่จะจัดส่งไปยังที่อยู่นี้หรือจัดส่งไปยังที่อยู่อื่นหากพวกเขาเลือกที่จะจัดส่งไปยังที่อยู่อื่นพวกเขาสามารถป้อนที่อยู่จัดส่ง หน้าคำสั่งขายของผู้ดูแลระบบแสดงที่อยู่ทั้งสองจนกว่าฉันจะแก้ไขคำสั่งซื้อ ในตาราง sales_order_flat ฉันไม่เห็นคอลัมน์ same_as_billing_address แต่ฉันเห็น shipping_address_id และ billing_address_id และแตกต่างกัน บางทีฉันไม่ได้มองในที่ที่ถูกต้อง?
mendel

ฉันพบฟิลด์ same_as_billing ในตาราง sales_flat_quote_address และตั้งค่าเป็น 0 สำหรับคำสั่งซื้อที่ลูกค้าป้อนที่อยู่จัดส่งอื่น
mendel

ถ้าอย่างนั้นคุณก็มีปัญหาอื่น :-(
Fabian Blechschmidt

ฉันได้ตรวจสอบเรื่องนี้แล้วและโซลูชันของคุณก็ใช้ไม่ได้เช่นกัน same_as_billing_addressถูกตั้งค่าอย่างถูกต้อง
Louis B.

2

ฉันไม่สามารถทำซ้ำได้ใน Magento 1.9

ไม่มีการแก้ไขข้อผิดพลาดสำหรับสิ่งที่กล่าวถึงในบันทึกประจำรุ่น แต่ฉันพบสิ่งต่อไปนี้ในบันทึกประจำรุ่น 1.8.0.0 :

การจัดการคำสั่งซื้อและการแก้ไขบันทึกสินเชื่อ

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

อาจเป็นไปได้ว่าสิ่งนี้เกี่ยวข้องและแก้ไขข้อผิดพลาดเช่นกัน บันทึกย่อประจำรุ่นจะไม่สมบูรณ์เสมอไป


1

ฉันได้พบปัญหาเดียวกันใน Magento 1.9.2.4 และ 2.0.5 ล่าสุด

สถานการณ์:

  1. แขกสั่งซื้อ
  2. คำสั่งซื้อมีการเรียกเก็บเงินและที่อยู่จัดส่งที่แตกต่างกัน
  3. ผู้ดูแลระบบแก้ไขคำสั่งซื้อในแผงการดูแลระบบ

ผลลัพธ์: ที่อยู่สำหรับจัดส่งสูญหายและแสดงที่อยู่สำหรับเรียกเก็บเงินแทน

เหตุผล: _isSameAsBilling ()วิธีการเสมอกลับจริงถ้าสั่งซื้อโดยบุคคลทั่วไป มันเป็นพฤติกรรมที่ไม่เหมาะสม

วิธีการในคำถาม:

Magento 2.0.5: /app/code/Magento/Quote/Model/Quote/Address.php

protected function _isSameAsBilling()
    {
        return $this->getAddressType() == \Magento\Quote\Model\Quote\Address::TYPE_SHIPPING &&
            ($this->_isNotRegisteredCustomer() ||
            $this->_isDefaultShippingNullOrSameAsBillingAddress());
    }

Magento 1.9.2.4: /app/code/core/Mage/Sales/Model/Quote/Address.php

protected function _isSameAsBilling()
    {
        return ($this->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING
            && ($this->_isNotRegisteredCustomer() || $this->_isDefaultShippingNullOrSameAsBillingAddress()));
    }

ดังที่คุณเห็นว่าลูกค้าไม่ได้ลงทะเบียนเมธอด _isSameAsBilling ()จะคืนค่าจริงแม้ว่าที่อยู่การเรียกเก็บเงินและการจัดส่งจะแตกต่างกัน

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

นี่เป็นข้อบกพร่องหรือฉันขาดอะไรไปหรือเปล่า?


1

พบปัญหาเดียวกันกับ Magento 1.7 และแก้ไขให้ถูกต้องกับการเปลี่ยนแปลงนี้: แอป / รหัส / core / Mage / Adminhtml / รุ่น / การขาย / การสั่งซื้อ / Create.php

คุณต้องเขียนทับคลาสด้วยวิธีที่สะอาด :)

เปลี่ยนวิธีการ: _initShippingAddressFromOrder ด้วยรหัสนี้:

protected function _initShippingAddressFromOrder(Mage_Sales_Model_Order $order)
{
    $this->getQuote()->getShippingAddress()->setCustomerAddressId('');
    Mage::helper('core')->copyFieldset(
        'sales_copy_order_shipping_address',
        'to_order',
        $order->getShippingAddress(),
        $this->getQuote()->getShippingAddress()
    );
    $this->getQuote()->getShippingAddress()->setSameAsBilling(false);
    if($order->getShippingAddress()->getCustomerAddressId() && $order->getShippingAddress()->getCustomerAddressId() == $order->getBillingAddress()->getCustomerAddressId()) {
        $this->getQuote()->getShippingAddress()->setSameAsBilling(true);
    }
}

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