mirror of
https://github.com/grocy/grocy.git
synced 2025-08-20 20:26:42 +00:00
Don't compact stock entries with userfields
This commit is contained in:
@@ -25,7 +25,21 @@ FROM userfield_values_old;
|
|||||||
|
|
||||||
DROP TABLE userfield_values_old;
|
DROP TABLE userfield_values_old;
|
||||||
|
|
||||||
CREATE TRIGGER userfield_values_special_handling AFTER INSERT ON userfield_values
|
CREATE TRIGGER prevent_empty_userfields_INS AFTER INSERT ON userfield_values
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM userfield_values
|
||||||
|
WHERE id = NEW.id
|
||||||
|
AND IFNULL(value, '') = '';
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER prevent_empty_userfields_UPD AFTER UPDATE ON userfield_values
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM userfield_values
|
||||||
|
WHERE id = NEW.id
|
||||||
|
AND IFNULL(value, '') = '';
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER userfield_values_special_handling_INS AFTER INSERT ON userfield_values
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Entity stock:
|
-- Entity stock:
|
||||||
-- object_id is the transaction_id on insert -> replace it by the corresponding stock_id
|
-- object_id is the transaction_id on insert -> replace it by the corresponding stock_id
|
||||||
@@ -52,20 +66,28 @@ AS
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
Helper view which shows splitted stock rows which could be compacted
|
Helper view which shows splitted stock rows which could be compacted
|
||||||
(a stock_id starting with "x" indicates that this entry shouldn't be compacted)
|
|
||||||
|
Stock entries with a stock_id starting with "x"
|
||||||
|
and those with userfields shouldn't be compacted
|
||||||
*/
|
*/
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
product_id,
|
s.product_id,
|
||||||
SUM(amount) AS total_amount,
|
SUM(s.amount) AS total_amount,
|
||||||
MIN(stock_id) AS stock_id_to_keep,
|
MIN(s.stock_id) AS stock_id_to_keep,
|
||||||
MAX(id) AS id_to_keep,
|
MAX(s.id) AS id_to_keep,
|
||||||
GROUP_CONCAT(id) AS id_group,
|
GROUP_CONCAT(s.id) AS id_group,
|
||||||
GROUP_CONCAT(stock_id) AS stock_id_group,
|
GROUP_CONCAT(s.stock_id) AS stock_id_group,
|
||||||
id -- Dummy
|
s.id -- Dummy
|
||||||
FROM stock
|
FROM stock s
|
||||||
WHERE stock_id NOT LIKE 'x%'
|
WHERE s.stock_id NOT LIKE 'x%'
|
||||||
GROUP BY product_id, best_before_date, purchased_date, price, open, opened_date, location_id, shopping_location_id, IFNULL(note, '')
|
AND NOT EXISTS(
|
||||||
|
SELECT 1 FROM userfield_values
|
||||||
|
WHERE object_id = s.stock_id
|
||||||
|
AND field_id IN (SELECT id FROM userfields WHERE entity = 'stock')
|
||||||
|
AND IFNULL(value, '') != ''
|
||||||
|
)
|
||||||
|
GROUP BY s.product_id, s.best_before_date, s.purchased_date, s.price, s.open, s.opened_date, s.location_id, s.shopping_location_id, IFNULL(s.note, '')
|
||||||
HAVING COUNT(*) > 1;
|
HAVING COUNT(*) > 1;
|
||||||
|
|
||||||
DROP VIEW uihelper_stock_journal;
|
DROP VIEW uihelper_stock_journal;
|
||||||
|
@@ -1639,7 +1639,6 @@ class StockService extends BaseService
|
|||||||
{
|
{
|
||||||
$this->getDatabaseService()->ExecuteDbStatement('UPDATE stock SET stock_id = \'' . $splittedStockEntry->stock_id_to_keep . '\' WHERE stock_id = \'' . $stockId . '\'');
|
$this->getDatabaseService()->ExecuteDbStatement('UPDATE stock SET stock_id = \'' . $splittedStockEntry->stock_id_to_keep . '\' WHERE stock_id = \'' . $stockId . '\'');
|
||||||
$this->getDatabaseService()->ExecuteDbStatement('UPDATE stock_log SET stock_id = \'' . $splittedStockEntry->stock_id_to_keep . '\' WHERE stock_id = \'' . $stockId . '\'');
|
$this->getDatabaseService()->ExecuteDbStatement('UPDATE stock_log SET stock_id = \'' . $splittedStockEntry->stock_id_to_keep . '\' WHERE stock_id = \'' . $stockId . '\'');
|
||||||
$this->getDatabaseService()->ExecuteDbStatement('UPDATE userfield_values SET object_id = \'' . $splittedStockEntry->stock_id_to_keep . '\' WHERE field_id IN (SELECT id FROM userfields WHERE entity = \'stock\') AND object_id = \'' . $stockId . '\'');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user