mirror of
https://github.com/grocy/grocy.git
synced 2025-08-10 16:12:24 +00:00
Optimized barcode concatenation handling
This commit is contained in:
parent
3fb55b706b
commit
df7653f4e5
@ -8,12 +8,9 @@ class StockController extends BaseController
|
|||||||
{
|
{
|
||||||
public function Consume(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
|
public function Consume(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
|
||||||
{
|
{
|
||||||
$sql = 'select group_concat(barcode) barcodes, product_id from product_barcodes group by product_id';
|
|
||||||
$productBarcodes = $this->getDatabaseService()->ExecuteDbQuery($sql)->fetchAll(\PDO::FETCH_OBJ);
|
|
||||||
|
|
||||||
return $this->renderPage($response, 'consume', [
|
return $this->renderPage($response, 'consume', [
|
||||||
'products' => $this->getDatabase()->products()->where('active = 1')->orderBy('name'),
|
'products' => $this->getDatabase()->products()->where('active = 1')->orderBy('name'),
|
||||||
'barcodes' => $productBarcodes,
|
'barcodes' => $this->getDatabase()->product_barcodes_comma_separated(),
|
||||||
'recipes' => $this->getDatabase()->recipes()->where('type', RecipesService::RECIPE_TYPE_NORMAL)->orderBy('name', 'COLLATE NOCASE'),
|
'recipes' => $this->getDatabase()->recipes()->where('type', RecipesService::RECIPE_TYPE_NORMAL)->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE'),
|
'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'quantityUnits' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
|
'quantityUnits' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
|
||||||
@ -23,12 +20,9 @@ class StockController extends BaseController
|
|||||||
|
|
||||||
public function Inventory(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
|
public function Inventory(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
|
||||||
{
|
{
|
||||||
$sql = 'select group_concat(barcode) barcodes, product_id from product_barcodes group by product_id';
|
|
||||||
$productBarcodes = $this->getDatabaseService()->ExecuteDbQuery($sql)->fetchAll(\PDO::FETCH_OBJ);
|
|
||||||
|
|
||||||
return $this->renderPage($response, 'inventory', [
|
return $this->renderPage($response, 'inventory', [
|
||||||
'products' => $this->getDatabase()->products()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
'products' => $this->getDatabase()->products()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'barcodes' => $productBarcodes,
|
'barcodes' => $this->getDatabase()->product_barcodes_comma_separated(),
|
||||||
'shoppinglocations' => $this->getDatabase()->shopping_locations()->orderBy('name', 'COLLATE NOCASE'),
|
'shoppinglocations' => $this->getDatabase()->shopping_locations()->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE'),
|
'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'quantityUnits' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
|
'quantityUnits' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
|
||||||
@ -229,12 +223,9 @@ class StockController extends BaseController
|
|||||||
|
|
||||||
public function Purchase(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
|
public function Purchase(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
|
||||||
{
|
{
|
||||||
$sql = 'select group_concat(barcode) barcodes, product_id from product_barcodes group by product_id';
|
|
||||||
$productBarcodes = $this->getDatabaseService()->ExecuteDbQuery($sql)->fetchAll(\PDO::FETCH_OBJ);
|
|
||||||
|
|
||||||
return $this->renderPage($response, 'purchase', [
|
return $this->renderPage($response, 'purchase', [
|
||||||
'products' => $this->getDatabase()->products()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
'products' => $this->getDatabase()->products()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'barcodes' => $productBarcodes,
|
'barcodes' => $this->getDatabase()->product_barcodes_comma_separated(),
|
||||||
'shoppinglocations' => $this->getDatabase()->shopping_locations()->orderBy('name', 'COLLATE NOCASE'),
|
'shoppinglocations' => $this->getDatabase()->shopping_locations()->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE'),
|
'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'quantityUnits' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
|
'quantityUnits' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
|
||||||
@ -466,12 +457,9 @@ class StockController extends BaseController
|
|||||||
|
|
||||||
public function Transfer(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
|
public function Transfer(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
|
||||||
{
|
{
|
||||||
$sql = 'select group_concat(barcode) barcodes, product_id from product_barcodes group by product_id';
|
|
||||||
$productBarcodes = $this->getDatabaseService()->ExecuteDbQuery($sql)->fetchAll(\PDO::FETCH_OBJ);
|
|
||||||
|
|
||||||
return $this->renderPage($response, 'transfer', [
|
return $this->renderPage($response, 'transfer', [
|
||||||
'products' => $this->getDatabase()->products()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
'products' => $this->getDatabase()->products()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'barcodes' => $productBarcodes,
|
'barcodes' => $this->getDatabase()->product_barcodes_comma_separated(),
|
||||||
'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE'),
|
'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'quantityUnits' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
|
'quantityUnits' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'quantityUnitConversionsResolved' => $this->getDatabase()->quantity_unit_conversions_resolved()
|
'quantityUnitConversionsResolved' => $this->getDatabase()->quantity_unit_conversions_resolved()
|
||||||
|
@ -1,6 +1,18 @@
|
|||||||
ALTER TABLE product_barcodes
|
ALTER TABLE product_barcodes
|
||||||
ADD note TEXT;
|
ADD note TEXT;
|
||||||
|
|
||||||
|
CREATE VIEW product_barcodes_comma_separated
|
||||||
|
AS
|
||||||
|
SELECT
|
||||||
|
pb.id, -- Dummy, LessQL needs an id column
|
||||||
|
pb.product_id,
|
||||||
|
GROUP_CONCAT(pb.barcode) AS barcodes
|
||||||
|
FROM product_barcodes pb
|
||||||
|
JOIN products p
|
||||||
|
ON pb.product_id = p.id
|
||||||
|
WHERE p.active = 1
|
||||||
|
GROUP BY pb.product_id;
|
||||||
|
|
||||||
CREATE VIEW uihelper_shopping_list
|
CREATE VIEW uihelper_shopping_list
|
||||||
AS
|
AS
|
||||||
SELECT
|
SELECT
|
||||||
@ -11,7 +23,8 @@ SELECT
|
|||||||
st.name AS default_shopping_location_name,
|
st.name AS default_shopping_location_name,
|
||||||
qu.name AS qu_name,
|
qu.name AS qu_name,
|
||||||
qu.name_plural AS qu_name_plural,
|
qu.name_plural AS qu_name_plural,
|
||||||
pg.name AS product_group_name
|
pg.name AS product_group_name,
|
||||||
|
pbcs.barcodes AS product_barcodes
|
||||||
FROM shopping_list sl
|
FROM shopping_list sl
|
||||||
LEFT JOIN products p
|
LEFT JOIN products p
|
||||||
ON sl.product_id = p.id
|
ON sl.product_id = p.id
|
||||||
@ -26,4 +39,6 @@ LEFT JOIN shopping_locations st
|
|||||||
LEFT JOIN quantity_units qu
|
LEFT JOIN quantity_units qu
|
||||||
ON sl.qu_id = qu.id
|
ON sl.qu_id = qu.id
|
||||||
LEFT JOIN product_groups pg
|
LEFT JOIN product_groups pg
|
||||||
ON p.product_group_id = pg.id;
|
ON p.product_group_id = pg.id
|
||||||
|
LEFT JOIN product_barcodes_comma_separated pbcs
|
||||||
|
ON sl.product_id = pbcs.product_id;
|
||||||
|
@ -94,6 +94,10 @@ class DemoDataGeneratorService extends BaseService
|
|||||||
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Waffle rolls')}', 4, 3, 3, 1, 1); --26
|
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Waffle rolls')}', 4, 3, 3, 1, 1); --26
|
||||||
UPDATE products SET calories = 123 WHERE IFNULL(calories, 0) = 0;
|
UPDATE products SET calories = 123 WHERE IFNULL(calories, 0) = 0;
|
||||||
|
|
||||||
|
INSERT INTO product_barcodes (product_id, barcode) VALUES (8, '22111968');
|
||||||
|
INSERT INTO product_barcodes (product_id, barcode) VALUES (8, '22114358');
|
||||||
|
INSERT INTO product_barcodes (product_id, barcode) VALUES (4, '42141099');
|
||||||
|
|
||||||
/* Prevent invalid quantity unit assignments */
|
/* Prevent invalid quantity unit assignments */
|
||||||
UPDATE products SET qu_id_stock = (SELECT MIN(id) FROM quantity_units) WHERE id IN (SELECT id FROM products WHERE qu_id_stock NOT IN (SELECT id FROM quantity_units));
|
UPDATE products SET qu_id_stock = (SELECT MIN(id) FROM quantity_units) WHERE id IN (SELECT id FROM products WHERE qu_id_stock NOT IN (SELECT id FROM quantity_units));
|
||||||
UPDATE products SET qu_id_purchase = (SELECT MIN(id) FROM quantity_units) WHERE id IN (SELECT id FROM products WHERE qu_id_purchase NOT IN (SELECT id FROM quantity_units));
|
UPDATE products SET qu_id_purchase = (SELECT MIN(id) FROM quantity_units) WHERE id IN (SELECT id FROM products WHERE qu_id_purchase NOT IN (SELECT id FROM quantity_units));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user