grocy/migrations/0095.sql
kriddles 6c7420ea08 Stock Service Updates (#421)
* viewjs consume: implement location and update stock specific

* Transfer Products

* services StockService#GetProductStockEntriesByLocation: add method

* services StockService#AddProduct: check for stock and locations

* services StockService: include location_id

* services StockService#LocationExists: add method

* services StockService#UndoBooking: fix based on stockRow

* Reimplement StockServer->TransferProduct (one loop for the whole action to preserve stock_id)

* Ensure that the location_id is never NULL in the stock and stock_log table (checked by an INSERT trigger, sets the products default location if empty)

* Only consider stock amount at the given location on consume, if supplied

* Restore more/old display text for "specific stock entry"

* Don't allow transfering tare weight enabled products

* Various small changes (code style, missing OpenAPI endpoint, remove location_id null checking)

* Updated translations strings

* Added transaction_id and correlation_id to stock_log entries to group them together

* ProductCard - location to default location label change

* Also undo correlated bookings on undo

* Added API endpoints for listing and undoing transactions and use them on purchase/consume/inventory/stockoverview

* Initial Stock detail page

* Allow Undo for Tranfers

* Price step to .01

* Some localization string changes & fixes
2019-12-19 19:48:36 +01:00

38 lines
916 B
SQL

CREATE TRIGGER set_products_default_location_if_empty_stock AFTER INSERT ON stock
BEGIN
UPDATE stock
SET location_id = (SELECT location_id FROM products where id = product_id)
WHERE id = NEW.id
AND location_id IS NULL;
END;
CREATE TRIGGER set_products_default_location_if_empty_stock_log AFTER INSERT ON stock_log
BEGIN
UPDATE stock_log
SET location_id = (SELECT location_id FROM products where id = product_id)
WHERE id = NEW.id
AND location_id IS NULL;
END;
ALTER TABLE stock_log
ADD correlation_id TEXT;
ALTER TABLE stock_log
ADD transaction_id TEXT;
ALTER TABLE stock_log
ADD stock_row_id INTEGER;
DROP VIEW stock_current_locations;
CREATE VIEW stock_current_locations
AS
SELECT
1 AS id, -- Dummy, LessQL needs an id column
s.product_id,
s.location_id AS location_id,
l.name AS location_name
FROM stock s
JOIN locations l
ON s.location_id = l.id
GROUP BY s.product_id, s.location_id, l.name;