diff --git a/public/viewjs/purchase.js b/public/viewjs/purchase.js index 0bcc7002..453f4057 100644 --- a/public/viewjs/purchase.js +++ b/public/viewjs/purchase.js @@ -288,9 +288,19 @@ if (Grocy.Components.ProductPicker !== undefined) if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) { - if (productDetails.product.default_best_before_days.toString() !== '0') + var best_before; + if (productDetails.location.is_freezer.toString() == "1") { - if (productDetails.product.default_best_before_days == -1) + best_before = productDetails.product.default_best_before_days_after_freezing; + } + else + { + best_before = productDetails.product.default_best_before_days; + } + + if (best_before.toString() !== '0') + { + if (best_before == -1) { if (!$("#datetimepicker-shortcut").is(":checked")) { @@ -299,7 +309,7 @@ if (Grocy.Components.ProductPicker !== undefined) } else { - Grocy.Components.DateTimePicker.SetValue(moment().add(productDetails.product.default_best_before_days, 'days').format('YYYY-MM-DD')); + Grocy.Components.DateTimePicker.SetValue(moment().add(best_before, 'days').format('YYYY-MM-DD')); } } } diff --git a/services/StockService.php b/services/StockService.php index 88e959a7..98aaca8b 100644 --- a/services/StockService.php +++ b/services/StockService.php @@ -144,7 +144,24 @@ class StockService extends BaseService //Set the default due date, if none is supplied if ($bestBeforeDate == null) { - if (intval($productDetails->product->default_best_before_days) == -1) + if ($locationId !== null && !$this->LocationExists($locationId)) + { + throw new \Exception('Location does not exist'); + } else { + $location = $this->getDatabase()->locations()->where('id', $locationId)->fetch(); + } + + if (GROCY_FEATURE_FLAG_STOCK_PRODUCT_FREEZING && $locationId !== null && intval($location->is_freezer) === 1 && $productDetails->product->default_best_before_days_after_freezing >= -1) + { + if ($productDetails->product->default_best_before_days_after_freezing == -1) + { + $bestBeforeDate = date('2999-12-31'); + } + else + { + $bestBeforeDate = date('Y-m-d', strtotime('+' . $productDetails->product->default_best_before_days_after_freezing . ' days')); + } + } elseif (intval($productDetails->product->default_best_before_days) == -1) { $bestBeforeDate = date('2999-12-31'); }