feat: support stock_v2 (#1249)

Reviewed-on: daoyoucloud/tachybase#1249
This commit is contained in:
sealday 2024-07-01 16:56:45 +08:00
parent d165c14349
commit 7d7c4309f2

View File

@ -0,0 +1,67 @@
CREATE OR REPLACE VIEW
public.view_record_items_by_stock_v2 AS
SELECT
record_items.id,
project.id AS project_id,
project2.id AS opposite_id,
product.id AS product_id,
records.id AS records_id,
product_category.id AS product_category_id,
t1.subtotal,
t1.stock,
t1.in_stock,
t1.out_stock
FROM
(
SELECT
record_items_1.id,
project_1.id AS project_id,
records_1.out_stock_id AS opposite_id,
product_1.id AS product_id,
records_1.id AS record_id,
product_category_1.id AS product_category_id,
CASE
WHEN product_category_1.convertible = TRUE THEN record_items_1.count * product_1.ratio
ELSE record_items_1.count
END AS subtotal,
record_items_1.count AS stock,
record_items_1.count AS in_stock,
0 AS out_stock
FROM
records records_1
JOIN project project_1 ON records_1.in_stock_id = project_1.id
JOIN record_items record_items_1 ON records_1.id = record_items_1.record_id
JOIN product product_1 ON record_items_1.product_id = product_1.id
JOIN product_category product_category_1 ON product_1.category_id = product_category_1.id
WHERE
records_1.category::INTEGER <= 3
UNION ALL
SELECT
record_items_1.id,
project_1.id AS project_id,
records_1.in_stock_id AS opposite_id,
product_1.id AS product_id,
records_1.id AS record_id,
product_category_1.id AS product_category_id,
CASE
WHEN product_category_1.convertible = TRUE THEN record_items_1.count * product_1.ratio * '-1'::DOUBLE PRECISION
ELSE record_items_1.count * '-1'::DOUBLE PRECISION
END AS subtotal,
record_items_1.count * '-1'::DOUBLE PRECISION AS stock,
0 AS in_stock,
record_items_1.count AS out_stock
FROM
records records_1
JOIN project project_1 ON records_1.out_stock_id = project_1.id
JOIN record_items record_items_1 ON records_1.id = record_items_1.record_id
JOIN product product_1 ON record_items_1.product_id = product_1.id
JOIN product_category product_category_1 ON product_1.category_id = product_category_1.id
WHERE
records_1.category::INTEGER <= 3
) t1
JOIN records ON t1.record_id = records.id
JOIN project ON t1.project_id = project.id
JOIN project project2 ON t1.opposite_id = project2.id
JOIN record_items ON t1.id = record_items.id
JOIN product ON t1.product_id = product.id
JOIN product_category ON t1.product_category_id = product_category.id;