Tôi thực sự không biết nếu điều này sẽ giúp theo bất kỳ cách nào, nhưng một cái gì đó để xem xét.
Có thể là collecttotals
thứ tự mô hình của bạn được đặt hàng khác nhau và thuế đó được đặt hàng / áp dụng sau grand_total
Bạn có thể kiểm tra nếu đây là vấn đề như sau. (lưu ý điều này liên quan đến việc điều chỉnh một tệp cốt lõi để có được một số thông tin gỡ lỗi, vui lòng không thử điều này trên một trang web trực tiếp!)
Chỉnh sửa phương thức nằm trong:
Mage_Sales_Model_Quote_Address::collecttotals
và thêm một dòng vào phương thức, điều này sẽ cho phép bạn xuất các mô hình khi chúng được xử lý.
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;
}
đảm bảo đăng nhập được kích hoạt.
Đuôi tệp nhật ký thông qua bàn điều khiển: tail -f system.log
Tái tạo vấn đề thông qua frontend.
Bạn sẽ nhận được các mục như sau trong nhật ký của mình (cái này từ vanilla 1.9.2.2 - bạn có thể có các mục khác)
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
Bạn sẽ thấy nó lặp lại, vì vậy chỉ cần xem nơi nó bắt đầu và kết thúc, sẽ dễ dàng nhìn thấy mẫu
Lưu ý hai mục cuối ở trên: Thuế đi trước grand_total. Có thể đơn đặt hàng này đã hết hạn và thuế sẽ xuất hiện sau grand_total, vì vậy grand_total sẽ không áp dụng thuế.
BIÊN TẬP:
Ok, vì vậy tôi không thấy câu hỏi được đề cập thực sự chỉ ra việc sắp xếp các tập hợp là vấn đề. Tôi nghi ngờ đó có thể là vấn đề, nhưng bản thân tôi đã không thử nghiệm điều này trong PHP7
Có một giải pháp, nhưng nó không phải là rất tốt đẹp. Bất kỳ tiện ích mở rộng mới nào được đặt trong cửa hàng, chèn các mô hình vào bộ sưu tập, sẽ cần được lưu ý và thêm vào việc sắp xếp, những thứ khác có thể còn sai hơn nữa. Có thể là một chút của một vấn đề bảo trì trong tương lai.
Đơn giản chỉ cần buộc thứ tự sắp xếp bằng cách đặt một cụ thể <sort_order>
vào cấu hình tổng. Bạn có thể thực hiện việc này thông qua tiện ích mở rộng của riêng bạn, nơi sẽ chỉ có một tệp cấu hình, trong đó bạn chỉ định thứ tự cho mỗi trình thu thập.
trong tệp config.xml, có lệnh như vậy:
<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>
Sử dụng các khoảng trống lớn giữa mỗi chỉ thị sắp xếp, để cho phép không gian chèn thêm về phía trước.
Như đã đề cập, không phải là rất thanh lịch, nhưng có thể giải quyết vấn đề ngay lập tức của bạn.
Cũng lưu ý rằng có các chỉ thị của người thu thập khác trong hệ thống, vì vậy chúng cũng có thể sai / cần điều chỉnh
Kiểm tra tệp cấu hình mở rộng bán hàng cốt lõi và tìm kiếm <totals>
Ở đó bạn sẽ tìm thấy:
<order_invoice>
<order_creditmemo>
<pdf>
Có thể có các tiện ích khác trong các tiện ích mở rộng khác, có thể là lõi / bên thứ 3
Mong rằng sẽ giúp.
PS: Tôi chưa thử nghiệm điều này trong PHP7. Tôi biết việc đặt lệnh sort_order hoạt động theo php5.x