Optimized product Grocycode handling on consume page (and others / general) (fixes #2571)

This commit is contained in:
Bernd Bestel 2024-08-24 18:20:40 +02:00
parent 1246f402e5
commit d5dacb1053
No known key found for this signature in database
GPG Key ID: 71BD34C0D4891300
8 changed files with 43 additions and 9 deletions

View File

@ -16,7 +16,7 @@
- After that, the transaction is continued with that product
- Fixed that when copying a product, the field "Treat opened as out of stock" wasn't copied along (thanks @TheDodger)
- Fixed that the product groups filter on the master data products page used a contains search instead of an exact search
- Fixed that Scan Mode on the purchase page didn't work (not all fields were properly populated) when using/scanning a product Grocycodes
- Fixed that Scan Mode on the purchase and consume page didn't work (not all fields were properly populated) when using/scanning a product Grocycodes
### Shopping list

View File

@ -5905,7 +5905,8 @@
"products_average_price",
"quantity_unit_conversions_resolved",
"recipes_pos_resolved",
"battery_charge_cycles"
"battery_charge_cycles",
"product_barcodes_view"
]
},
"ExposedEntityNoListing": {
@ -5926,7 +5927,8 @@
"products_average_price",
"quantity_unit_conversions_resolved",
"recipes_pos_resolved",
"battery_charge_cycles"
"battery_charge_cycles",
"product_barcodes_view"
]
},
"ExposedEntityNoDelete": {
@ -5940,7 +5942,8 @@
"products_average_price",
"quantity_unit_conversions_resolved",
"recipes_pos_resolved",
"battery_charge_cycles"
"battery_charge_cycles",
"product_barcodes_view"
]
},
"ExposedEntityEditRequiresAdmin": {

26
migrations/0238.sql Normal file
View File

@ -0,0 +1,26 @@
CREATE VIEW product_barcodes_view
AS
SELECT
pb.id,
pb.product_id,
pb.barcode,
pb.qu_id,
pb.amount,
pb.shopping_location_id,
pb.last_price,
pb.note
FROM product_barcodes pb
UNION ALL
-- Product Grocycodes
SELECT
p.id,
p.id AS product_id,
'grcy:p:' || CAST(p.id AS TEXT) AS barcode,
p.qu_id_stock AS qu_id,
NULL AS amount,
NULL AS shopping_location_id,
NULL AS last_price,
NULL AS note
FROM products p;

View File

@ -170,6 +170,7 @@ $('#product_id_text_input').on('blur', function(e)
{
possibleOptionElement = $("#product_id option[value=\"" + gc[2] + "\"]").first();
$("#product_id").data("grocycode", true);
$('#product_id').attr("barcode", input);
}
}
else // Normal product barcode handling
@ -298,7 +299,7 @@ $('#product_id_text_input').on('blur', function(e)
// otherwise an error validation message that the product is not in stock
var existsAsProduct = false;
var existsAsBarcode = false;
Grocy.Api.Get('objects/product_barcodes?query[]=barcode=' + input,
Grocy.Api.Get('objects/product_barcodes_view?query[]=barcode=' + input,
function(barcodeResult)
{
if (barcodeResult.length > 0)

View File

@ -257,6 +257,10 @@ $("#location_id").on('change', function(e)
}
);
}
else
{
OnLocationChange(locationId, null);
}
}
else
{
@ -326,7 +330,7 @@ function OnLocationChange(locationId, stockId)
}
);
if (document.getElementById("product_id").getAttribute("barcode") == "null")
if (document.getElementById("product_id").getAttribute("barcode") == "null" || $("#product_id").data("grocycode"))
{
ScanModeSubmit();
}

View File

@ -270,7 +270,7 @@ Grocy.Components.ProductPicker.GetPicker().on('change', function(e)
if (document.getElementById("product_id").getAttribute("barcode") != "null")
{
Grocy.Api.Get('objects/product_barcodes?query[]=barcode=' + document.getElementById("product_id").getAttribute("barcode"),
Grocy.Api.Get('objects/product_barcodes_view?query[]=barcode=' + document.getElementById("product_id").getAttribute("barcode"),
function(barcodeResult)
{
if (barcodeResult)

View File

@ -355,7 +355,7 @@ if (Grocy.Components.ProductPicker !== undefined)
if (document.getElementById("product_id").getAttribute("barcode") != "null")
{
Grocy.Api.Get('objects/product_barcodes?query[]=barcode=' + document.getElementById("product_id").getAttribute("barcode"),
Grocy.Api.Get('objects/product_barcodes_view?query[]=barcode=' + document.getElementById("product_id").getAttribute("barcode"),
function(barcodeResult)
{
if (barcodeResult && barcodeResult.length > 0)

View File

@ -213,7 +213,7 @@ Grocy.Components.ProductPicker.GetPicker().on('change', function(e)
if (document.getElementById("product_id").getAttribute("barcode") != "null")
{
Grocy.Api.Get('objects/product_barcodes?query[]=barcode=' + document.getElementById("product_id").getAttribute("barcode"),
Grocy.Api.Get('objects/product_barcodes_view?query[]=barcode=' + document.getElementById("product_id").getAttribute("barcode"),
function(barcodeResult)
{
if (barcodeResult != null)