Sự khác biệt giữa địa chỉ báo giá bán hàng và địa chỉ báo giá bán hàng


8

Tôi đang tìm kiếm bộ quan sát coll_totals nào tôi có thể sử dụng. Có hai người quan sát, sales_quote_collect_totals_b Beforesales_quote_address_collect_totals_b Before .

Họ có thể được tìm thấy trong /app/code/core/Mage/Sales/Model/Quote.php/app/code/core/Mage/Sales/Model/Quote/Address.php.

Tôi tự hỏi sự khác biệt giữa hai tệp là gì khi cả hai tệp có tổng số chức năng thu thập?

Câu trả lời:


14

/app/code/core/Mage/Sales/Model/Quote.php

là lớp Trích dẫn cho đối tượng trích dẫn

/app/code/core/Mage/Sales/Model/Quote/Address.php

là lớp Địa chỉ trích dẫn cho bất kỳ đối tượng địa chỉ trích dẫn

Một đối tượng trích dẫn thường chứa 2 đối tượng địa chỉ, nhưng có thể chứa nhiều hơn nếu có nhiều địa chỉ phân phối.

Liên quan đến (các) phương pháp 'colltotals': Trước tiên hãy hiểu từng phương thức và mục đích của nó:

Phương thức trong Mage_Sales_Model_Quote, là điểm nhập ban đầu cho Totals Collectorhệ thống con và được bắt đầu bằng lưu giỏ hàng,

(điều này cho phép bạn đưa các phương thức lớp vào tính toán giỏ hàng, để ảnh hưởng đến kết quả của tổng số giỏ hàng - ví dụ: tính toán giảm giá giỏ hàng)

Dòng mã như sau:

Mage_Checkout_Model_Cart::save()

Mage_Sales_Model_Quote::collectTotals() <--- điểm vào của hệ thống con collector

Mage_Sales_Model_Quote_Address::collectTotals() <- mỗi địa chỉ được gắn vào đối tượng trích dẫn được gọi, thông qua một vòng lặp trong đối tượng tổng hợp trích dẫn.

Bây giờ, trong phương thức colltotals địa chỉ, một vòng lặp được thực hiện, sử dụng tất cả các hệ thống 'collector' được định nghĩa, gọi từng lớp / phương thức, do đó cho phép tổng số thứ tự được điều chỉnh bằng các phép tính bổ sung (hãy nhớ rằng tất cả các tổng đều treo địa chỉ (các) đối tượng, không phải đối tượng trích dẫn thực tế, cho phép magento thực hiện kiểm tra đến nhiều địa chỉ)

foreach ($this->getTotalCollector()->getCollectors() as $model) {
            $model->collect($this);
} 

Một danh sách các 'nhà sưu tập' có thể sẽ là:

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

Bạn có thể thêm trình thu thập tổng của riêng bạn thông qua cấu hình mô-đun như vậy và phải có một collectphương thức làm điểm vào.

<sales>
   <quote>
      <totals>
         <giftpromo>
           <class>giftpromo/promo_gift</class>
           <after>discount</after>
           <before>tax,grand_total</before>
           <sort_order>12410</sort_order>
         </giftpromo>
      </totals>
    </quote>
</sales>

Bây giờ, xem xét tất cả thông tin đó, và các sự kiện đã nổ ra:

sales_quote_collect_totals_b Before : Được kích hoạt trước khi bất kỳ đối tượng địa chỉ nào được tải và trình thu thập tổng được hành động

sales_quote_address_collect_totals_b Before : Được kích hoạt bên trong (các) đối tượng địa chỉ trích dẫn, trước khi mỗi đối tượng địa chỉ chạy danh sách các đối tượng thu thập tiềm năng.

Không biết trò chơi cuối của bạn, tôi sẽ không thể xác định cái nào phù hợp với bạn, tuy nhiên, tôi cũng đề nghị xem xét xem có đúng không và bạn có phù hợp nhất với việc thêm vào một bộ sưu tập mới cho hệ thống thu gom tổng

Tôi hy vọng thông tin này giúp bạn xác định đúng cách để mở rộng chức năng và cung cấp giải pháp ổn định.


siêu giải thích!
Phong tục David

Tôi đọc dòng đầu tiên và đã quyết định +1.
pspahn

@ProxiBlue sau khi đọc câu trả lời của bạn Tôi tin rằng bạn giúp tôi sắp xếp một vấn đề liên quan đến phương thức collTotals (). Vì vậy, tôi có hai thuộc tính giảm giá trong bảng Sản phẩm của mình để áp dụng giảm giá cho các sản phẩm theo vị trí đặt hàng. Vì vậy, khi chúng tôi tạo Trích dẫn, chúng tôi sẽ thêm các khoản chiết khấu và số tiền sau này trong bảng báo giá. Bây giờ khi tôi đặt hàng, tôi thấy ở dòng $ quote-> collTotals () -> save () các giá trị chiết khấu trở thành 0 và tổng số tiền trở thành giá gốc (không có giá chiết khấu). Xin vui lòng cho biết làm thế nào để khắc phục điều này.?
apandey846
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.