Magento Grand Total không có thuế trong 1.9 với PHP7


17

Chúng tôi đang làm việc trong 1.9 & php7; phát hiện vấn đề này với gian lận nghi ngờ paypal (do số tiền chênh lệch).

Tất cả chính xác trong frontend (áp dụng thuế); nhưng trong thanh toán và tính toán, magento sử dụng tổng số lớn mà không có thuế.

Thực tế tính toán thứ tự sai:

Giá sản phẩm không có thuế + vận chuyển có thuế = tổng số tiền thanh toán

Chuyển sang php5 và tính toán là chính xác.

Một số ý tưởng?

Cảm ơn!


Tôi có cùng một vấn đề. Tất cả những gì tôi tìm thấy cho đến nay là thế này: stackoverflow.com/questions/34281113/ Lời Một giải pháp để giải quyết vấn đề này sẽ rất tuyệt.
Reinsch

Điều này độc lập với PHP 7 và đã được báo cáo trước đó, ví dụ vào năm 2012: Thuật toán sắp xếp: Tổng số thanh toán Magento được sắp xếp sai gây ra tính toán thuế vận chuyển sai , vé Magento nội bộ được đưa ra là [MCACE-129].
hakre

Câu trả lời:


13

Giải pháp

Tôi đã tạo một mô-đun magento để giải quyết các vấn đề về magento với tính toán tổng cho php7. Các vấn đề tôi gặp phải đặc biệt là thuế đã được thêm hai lần vào tổng số tiền phải trả với mô-đun amazon trên trang thanh toán amazonpayments.

Tín dụng

Câu trả lời được cung cấp bởi archigrafix trong bài đăng này ( /magento//a/97107353665 ) đã giải quyết các vấn đề của tôi - vì vậy đây đơn giản là bản sửa lỗi được đóng gói trong một mô-đun.

Mô-đun:

https://github.com/hartmut-ltd/magento-php7-totals-fix


nó hoạt động !!! đề xuất giải pháp
jruzafa

9

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à collecttotalsthứ 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


Sắp xếp đã thay đổi trong PHP7, bạn sẽ phải xác định rõ ràng các đơn hàng sắp xếp duy nhất là có nhiều đơn hàng sắp xếp giống hệt nhau (tức là cấp 5 trên ba mục khác nhau) có thể có kết quả lẻ. stackoverflow.com/questions/34281113/
Mạnh

Tôi đã thêm một chỉnh sửa cho câu trả lời.
ProxiBlue

Cảm ơn ProxiBlue; chúng tôi sẽ kiểm tra lại. Chúng tôi phát hiện một số vấn đề với reindex; trong một số trường hợp, nó tái tạo vấn đề này. Chuyển đến cấu hình TAX, lưu một số "không thay đổi" và lợi nhuận TAX.
Joan M

8

Trên Magento 1.6.2 và PHP 7.0.2 tôi đã giải quyết nó theo cách này:

1 - Trước tiên, tạo một tệp cấu hình cục bộ: Sao chép /app/code/core/Mage/Sales/etc/config.xml thành /app/code/local/Mage/Sales/etc/config.xml

2 - Thay đổi nó như thế này nhập mô tả hình ảnh ở đây

Bây giờ nó tính toán chính xác:

nhập mô tả hình ảnh ở đây


1
Bạn không thể ghi đè các tệp XML trong nhóm mã cục bộ (chỉ các lớp PHP được tải tự động), vì vậy đây phải là một phần của tệp config.xml của một mô-đun tùy chỉnh thực tế.
Fabian Schmengler

1
Như đã giải thích, điều này đã được thực hiện bằng cách sử dụng một tệp cấu hình cục bộ.
archigrafix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.