ERP beyond your fridge - Grocy is a web-based self-hosted groceries & household management solution for your home
0
price weren't ignoredbattery_charge_cycles
💡 PHP 8.3 is from now on (additionally to PHP 8.2) supported.
⚠️ PHP 8.1 is no longer supported.
1
instead of the actual amount opened1
instead of the whole stock entryGET /objects/{entity}
and GET /objects/{entity}/{objectId}
now also return Userfields for the entity stock
💡 PHP 8.2 is from now on (additionally to PHP 8.1) supported.
MEAL_PLAN_FIRST_DAY_OF_WEEK
and CALENDAR_FIRST_DAY_OF_WEEK
were set to different values/stock/products/{productId}
⚠️ PHP 8.1 (with SQLite 3.34.0+) is from now on the only supported runtime version.
❗ The major version bump is due to breaking API changes, please see below if you use the API.
Recommendation: Benchmark tests showed that e.g. unit conversion handling is up to 5 times faster when using a more recent (3.39.4+) SQLite version.
1
0
price are ignoredFEATURE_FLAG_RECIPES_MEALPLAN
(in config.php
) to only disable the meal plan if not needed (thanks @webysther)config.php
setting MEAL_PLAN_FIRST_DAY_OF_WEEK
can now be set to -1
to dynamically start the meal plan week on today
stock
entity and using the "Never overdue" shortcut checkbox for the due date on purchase, this Userfield would also be set to the corresponding "never overdue date"config.php
setting ENERGY_UNIT
to customize the label to display energy values (was fixed kcal
before and defaults to that, so no changed behavior when not configured)All permissions
permission)qu_factor_purchase_to_stock
was removed (existing factors were migrated to normal product specific QU conversions, see above)/stock/products/{productId}
:
qu_conversion_factor_purchase_to_stock
for convenience (contains the conversion factor of the corresponding QU conversion from the product's qu_id_purchase
to qu_id_stock
)qu_conversion_factor_price_to_stock
for convenience (contains the conversion factor of the corresponding QU conversion from the product's qu_id_price
to qu_id_stock
)default_quantity_unit_consume
(contains the quantity unit object of the product's "Default quantity unit consume")/objects/{entity}
(only listing, no edit)
quantity_unit_conversions_resolved
(returns all final/resolved conversion factors per product and any directly or indirectly related quantity units)recipes_pos_resolved
(returns stock fulfilment information for all recipe ingredients)/batteries
now also returns the corresponding battery object (as field/property battery
)0
, unit conversion (if any) failed when adding the corresponding product to stockNever show on stock overview
enablednull
Userfields (so when the field for that object was not set before / on the initial object creation)LABEL_PRINTER_RUN_SERVER
= false
), the setting LABEL_PRINTER_HOOK_JSON
was ignored (the WebHook data was always sent as form data)/stock/volatile
missing_products
now also contains the product
object/recipes/{recipeId}/consume
: Fixed (again) that consuming partially fulfilled recipes was possible, although an error was already returned in that case (and potentially some of the in stock ingredients were consumed in fact)/stock/products/{productId}
: New field/property default_consume_location
(contains the products default consume location object)/stock/products/{productId}/add
: Fixed that the request body parameter transaction_type
was ignored / always set to purchase
/stock/products/by-barcode/{barcode}/open
didn't handle stock entries provided by a grocycode (thanks @jtommi)<=
) and greater or equal (>=
) filter comparisons didn't work (optional query[]
request query parameter on most endpoints)stock
FEATURE_FLAG_STOCK_LOCATION_TRACKING
was disabledTreat opened as out of stock
set and when having at least one opened stock entryDaily
period type has been changed to schedule the chore at the same time (based on the start date) each n
days
n
days after the last execution before, which is also possible by using the Hourly
period type and a corresponding period interval; all existing Daily
schedules will be converted to that on migration0
(which makes absolutely no sense in reality)equipment
and use the type File
GET /stock/locations/{locationId}/entries
to get all stock entries of a given location (similar to the already existing endpoint GET /stock/products/{productId}/entries
)/recipes/{recipeId}/consume
: Fixed that consuming partially fulfilled recipes was possible, although an error was already returned in that case (and potentially some of the in stock ingredients were consumed in fact)/stock/products/{productId}
:
current_price
which returns the current price of the corresponding product, based on the stock entry to use next (defined by the default consume rule "Opened first, then first due first, then first in first out") or on the last price if the product is currently not in stockoldest_price
is deprecated and will be removed in a future version (this had no real sense, currently returns the same as current_price
)config.php
option FEATURE_SETTING_STOCK_COUNT_OPENED_PRODUCTS_AGAINST_MINIMUM_STOCK_AMOUNT
was removed and is now a new product option Treat opened as out of stock
, means, if opened stock entries will be counted as missing for calculating if a product is below its minimum stock amount, can now be configured per product
Yearly
period type has been changed to be schedule the chore on the same day each year
Daily
period type and a period interval of 365 days; all existing Yearly
schedules will be converted to that on migrationHourly
period type (to schedule chores every x
hours)Adaptive
period type (to schedule chores dynamically based on the past average execution frequency)Dynamic regular
, since it's the same as Daily
Dynamic regular
schedules will be converted to that on migration1970-01-01
was shown0
to disable that filter/highlighting[+/-]n[d/m/y]
for date fields to quickly input a date relative to today (adding (+) or subtracting (-) the number of days/months/years, see the full list of available shorthands here)LDAP_UID_ATTR
is now used to compare if the user already exists instead of the username entered on the login page (that prevents creating multiple users if you enter the username in different notations) (thanks @FloSet)ReverseProxyAuthMiddleware
), it's now also possible to pass the username in an environment variable instead of an HTTP header (new config.php
option REVERSE_PROXY_AUTH_USE_ENV
) (thanks @Forceu)config.php
option DISABLE_BROWSER_BARCODE_CAMERA_SCANNING
has been renamed to FEATURE_FLAG_DISABLE_BROWSER_BARCODE_CAMERA_SCANNING
/stock/shoppinglist/clear
has now a new optional request body parameter done_only
(to only remove done items from the given shopping list, defaults to false
)/chores/{choreId}/execute
has now a new optional request body parameter skipped
(to skip the next chore schedule, defaults to false
)/chores/{choreId}
has new response field/property average_execution_frequency_hours
(contains the average past execution frequency in hours or null
, when the chore was never executed before)/recipes/{recipeId}/printlabel
(to print recipe grocycodes on the configured label printer)