ฉันไม่รู้จริง ๆ ว่าสิ่งนี้จะช่วยได้ แต่ก็มีบางอย่างที่ต้องพิจารณา
เป็นไปได้ว่าcollecttotals
ใบสั่งซื้อรุ่นของคุณกำลังสั่งซื้อที่แตกต่างกันและภาษีนั้นกำลังถูกสั่ง / นำไปใช้หลัง grand_total
คุณสามารถทดสอบได้ว่านี่เป็นปัญหาหรือไม่ดังนี้ (โปรดทราบว่าสิ่งนี้เกี่ยวข้องกับการปรับไฟล์หลักเพื่อรับข้อมูลการแก้ไขข้อบกพร่องโปรดอย่าลองสิ่งนี้บนเว็บไซต์จริง!)
แก้ไขวิธีที่อยู่ใน:
Mage_Sales_Model_Quote_Address::collecttotals
และเพิ่มหนึ่งบรรทัดในเมธอดซึ่งจะช่วยให้คุณสามารถแสดงผลโมเดลที่ถูกประมวลผล
public function collectTotals()
{
Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_before', array($this->_eventObject => $this));
foreach ($this->getTotalCollector()->getCollectors() as $model) {
mage::log($model->getCode()); // <===== ADD THIS LINE
$model->collect($this);
}
Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_after', array($this->_eventObject => $this));
return $this;
}
ตรวจสอบให้แน่ใจว่าเปิดใช้งานการบันทึกแล้ว
ตัดต่อไฟล์บันทึกผ่านคอนโซล: tail -f system.log
สร้างปัญหาขึ้นอีกครั้งผ่านส่วนหน้า
คุณจะได้รับรายการดังต่อไปนี้ในบันทึกของคุณ (นี่คือจากวานิลลา 1.9.2.2 - คุณอาจมีรายการอื่น ๆ )
2015-12-21T05:54:12+00:00 DEBUG (7): nominal
2015-12-21T05:54:12+00:00 DEBUG (7): subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): msrp
2015-12-21T05:54:12+00:00 DEBUG (7): freeshipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): weee
2015-12-21T05:54:12+00:00 DEBUG (7): shipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_shipping
2015-12-21T05:54:12+00:00 DEBUG (7): discount
2015-12-21T05:54:12+00:00 DEBUG (7): tax
2015-12-21T05:54:12+00:00 DEBUG (7): grand_total
คุณจะเห็นมันซ้ำดังนั้นเพียงแค่ดูว่ามันเริ่มต้นและสิ้นสุดที่ควรจะเห็นรูปแบบ
บันทึกสองรายการสุดท้ายด้านบน: ภาษีมาก่อน grand_total มันอาจจะเป็นไปได้การสั่งซื้อนี้จะออกจากการตีและภาษีที่ปรากฏหลังจาก grand_total ดังนั้น grand_total จะไม่ต้องใช้ภาษี
แก้ไข:
ตกลงดังนั้นฉันไม่เห็นคำถามที่อ้างถึงจริง ๆ แล้วชี้ไปที่การเรียงลำดับของสะสมเพื่อเป็นปัญหา ฉันสงสัยว่าอาจเป็นปัญหา แต่ยังไม่ได้ทดสอบตัวเองใน PHP7
มีวิธีแก้ปัญหา แต่มันไม่ดีมาก ส่วนขยายใหม่ใด ๆ ที่วางอยู่ในร้านค้าซึ่งจะแทรกโมเดลลงในตัวสะสมจะต้องมีการจดบันทึกและเพิ่มเข้าไปในการเรียงลำดับนอกจากนี้สิ่งอื่น ๆ อาจผิดพลาดได้มากกว่าเดิม อาจเป็นปัญหาการบำรุงรักษาเล็กน้อยในอนาคต
เพียงบังคับลำดับการจัดเรียงโดยวางเฉพาะ<sort_order>
ลงในการกำหนดค่าผลรวม คุณสามารถทำได้ผ่านส่วนขยายของคุณซึ่งจะมี config.xml เท่านั้นโดยที่คุณระบุคำสั่งสำหรับตัวรวบรวมแต่ละตัว
ใน config.xml มีคำสั่งดังนี้:
<sales>
<quote>
<totals>
<nominal>
<sort_order>100</sort_order>
</nominal>
<subtotal>
<sort_order>200</sort_order>
</subtotal>
<msrp>
<sort_order>300</sort_order>
</msrp>
<freeshipping>
<sort_order>400</sort_order>
</freeshipping>
......
insert each collector model with a sort directive
......
</totals>
</quote>
ใช้ช่องว่างขนาดใหญ่ระหว่างแต่ละคำสั่งการเรียงลำดับเพื่อให้มีพื้นที่ว่างในการแทรกไปข้างหน้าเพิ่มเติม
ดังที่กล่าวไว้ไม่หรูหรามาก แต่สามารถแก้ปัญหาเฉพาะหน้าของคุณได้
นอกจากนี้โปรดทราบว่ามีคำสั่งตัวสะสมอื่น ๆ ในระบบดังนั้นพวกเขาอาจผิด / จำเป็นต้องปรับ
ตรวจสอบ config.xml ส่วนขยายการขายหลักและค้นหา <totals>
คุณจะพบกับ:
<order_invoice>
<order_creditmemo>
<pdf>
อาจมีคนอื่น ๆ ในส่วนขยายอื่น ๆ ไม่ว่าจะเป็นแกน / บุคคลที่สาม
หวังว่าจะช่วย
PS: ฉันยังไม่ได้ทดสอบสิ่งนี้ใน PHP7 ฉันรู้ว่าการวางคำสั่ง sort_order ทำงานภายใต้ php5.x