Magento 1: Mối quan hệ giữa `qty` trong vật phẩm chứng khoán và bảng trạng thái chứng khoán


8

Trong Magento 1, thông tin hàng tồn kho được lưu trữ trong một đối tượng Stock Item. Mỗi đối tượng Stock Item được liên kết với một đối tượng sản phẩm. Magento vẫn tồn tại các đối tượng Stock Item để cataloginventory_stock_itembàn.

Tuy nhiên, mỗi đối tượng Stock Item có một đối tượng Stock Status liên quan. Trạng thái chứng khoán dường như là một bảng (index | cache | de-normalized) lưu trữ trạng thái tồn kho của sản phẩm dưới dạng hằng số nguyên và cho phép bạn liên kết nhiều mặt hàng cổ phiếu và sản phẩm với nhau website_id. Magento vẫn tồn tại các đối tượng trạng thái chứng khoán đến cataloginventory_stock_status. Các hằng số lớp và lược đồ bảng cho điều này dưới đây.

class Mage_CatalogInventory_Model_Stock_Status extends Mage_Core_Model_Abstract
{
    const STATUS_OUT_OF_STOCK       = 0;
    const STATUS_IN_STOCK           = 1;
}

mysql> describe cataloginventory_stock_status;
+--------------+----------------------+------+-----+---------+-------+
| Field        | Type                 | Null | Key | Default | Extra |
+--------------+----------------------+------+-----+---------+-------+
| product_id   | int(10) unsigned     | NO   | PRI | NULL    |       |
| website_id   | smallint(5) unsigned | NO   | PRI | NULL    |       |
| stock_id     | smallint(5) unsigned | NO   | PRI | NULL    |       |
| qty          | decimal(12,4)        | NO   |     | 0.0000  |       |
| stock_status | smallint(5) unsigned | NO   |     | NULL    |       |
+--------------+----------------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

Tuy nhiên , vì những lý do không hoàn toàn rõ ràng, cũng có một qtycột trong bảng này.

Mối quan hệ giữa hai qtycột này là gì?

Đâu là nguồn gốc của sự thật qtyvà giá trị được lập chỉ mục / lưu trữ? Là giá trị trong stock_statusmột phiên bản được lưu trong bộ nhớ cache của những gì trong bảng mục chứng khoán? Hoặc có cách nào để cấu hình Magento để quản lý chứng khoán ở cấp độ trang web không? Hay là mối quan hệ gì đó khác với những gì tôi đã mô tả?


1
Ngoài ra, trường is_in_stock từ bảng stock-item bị bỏ qua trong trang xem sản phẩm.
MagePologistso

Chỉ cần ghi chú - một điều tôi nhận thấy là nếu một sản phẩm có thể được sắp xếp lại, thì qty có thể đi <0 trong cataloginventory_stock_item, tuy nhiên cataloginventory_stock_status sẽ không bao giờ xuống dưới 0. Mặc dù vậy, tôi không biết tại sao nó lại hoạt động như vậy.
mpchadwick

Câu trả lời:


7

Đối với tôi, có vẻ như qty in cataloginventory_stock_itemlà nguồn gốc của sự thật và qty in cataloginventory_stock_statuslà giá trị được lưu trữ / lập chỉ mục. Xây dựng lại chỉ số Trạng thái chứng khoán dường như luôn sao chép giá trị từ cataloginventory_stock_itemvào cataloginventory_stock_status. Nếu có nhiều trang web, cũng sẽ có một bản ghi cho mỗi kết hợp sản phẩm_id / website_id cataloginventory_stock_status. Điều này cho thấy khả năng của các cấp chứng khoán khác nhau trên mỗi trang web, nhưng theo như tôi có thể nói giá trị qty luôn giống nhau cho mỗi trang web.

Tôi nghĩ rằng đây có thể là sự khởi đầu của một tính năng đa cổ phiếu theo đề xuất của Marius trong bài đăng này: Mục đích của bảng cataloginventory_stock

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.