From cd65195532589799d9fad0c02d70bf0ea6158df3 Mon Sep 17 00:00:00 2001 From: kriddles <54413450+kriddles@users.noreply.github.com> Date: Sat, 17 Oct 2020 03:54:10 -0500 Subject: [PATCH] add purchased date to purchase (#1056) --- config-dist.php | 1 + controllers/StockApiController.php | 9 ++++++++- public/viewjs/purchase.js | 1 + public/viewjs/stocksettings.js | 4 ++++ views/purchase.blade.php | 18 ++++++++++++++++++ views/stocksettings.blade.php | 8 ++++++++ 6 files changed, 40 insertions(+), 1 deletion(-) diff --git a/config-dist.php b/config-dist.php index dc651cc8..6a4f262e 100644 --- a/config-dist.php +++ b/config-dist.php @@ -114,6 +114,7 @@ DefaultUserSetting('stock_default_consume_amount', 1); DefaultUserSetting('scan_mode_consume_enabled', false); DefaultUserSetting('scan_mode_purchase_enabled', false); DefaultUserSetting('show_icon_on_stock_overview_page_when_product_is_on_shopping_list', true); +DefaultUserSetting('product_display_purchased_date', false); # Shopping list settings DefaultUserSetting('shopping_list_to_stock_workflow_auto_submit_when_prefilled', false); // Automatically do the booking using the last price and the amount of the shopping list item, if the product has "Default best before days" set diff --git a/controllers/StockApiController.php b/controllers/StockApiController.php index 4e4774a4..f923491c 100644 --- a/controllers/StockApiController.php +++ b/controllers/StockApiController.php @@ -80,6 +80,13 @@ class StockApiController extends BaseApiController $bestBeforeDate = $requestBody['best_before_date']; } + $purchasedDate = date('Y-m-d'); + + if (array_key_exists('purchased_date', $requestBody) && IsIsoDate($requestBody['purchased_date'])) + { + $purchasedDate = $requestBody['purchased_date']; + } + $price = null; if (array_key_exists('price', $requestBody) && is_numeric($requestBody['price'])) @@ -115,7 +122,7 @@ class StockApiController extends BaseApiController $transactionType = $requestBody['transactiontype']; } - $bookingId = $this->getStockService()->AddProduct($args['productId'], $requestBody['amount'], $bestBeforeDate, $transactionType, date('Y-m-d'), $price, $quFactorPurchaseToStock, $locationId, $shoppingLocationId); + $bookingId = $this->getStockService()->AddProduct($args['productId'], $requestBody['amount'], $bestBeforeDate, $transactionType, $purchasedDate, $price, $quFactorPurchaseToStock, $locationId, $shoppingLocationId); return $this->ApiResponse($response, $this->getDatabase()->stock_log($bookingId)); } catch (\Exception $ex) diff --git a/public/viewjs/purchase.js b/public/viewjs/purchase.js index 97ef1be9..afec4015 100644 --- a/public/viewjs/purchase.js +++ b/public/viewjs/purchase.js @@ -29,6 +29,7 @@ var jsonData = {}; jsonData.amount = amount; + jsonData.purchased_date = Grocy.Components.DateTimePicker2.GetValue(); if (Grocy.Components.DateTimePicker) { jsonData.best_before_date = Grocy.Components.DateTimePicker.GetValue(); diff --git a/public/viewjs/stocksettings.js b/public/viewjs/stocksettings.js index 81e7ac34..6ee8c7ec 100644 --- a/public/viewjs/stocksettings.js +++ b/public/viewjs/stocksettings.js @@ -9,3 +9,7 @@ if (BoolVal(Grocy.UserSettings.show_icon_on_stock_overview_page_when_product_is_ { $("#show_icon_on_stock_overview_page_when_product_is_on_shopping_list").prop("checked", true); } +if (BoolVal(Grocy.UserSettings.product_display_purchased_date)) +{ + $("#product_display_purchased_date").prop("checked", true); +} diff --git a/views/purchase.blade.php b/views/purchase.blade.php index d77037b3..06edbfc5 100644 --- a/views/purchase.blade.php +++ b/views/purchase.blade.php @@ -53,6 +53,24 @@ class="text-info font-italic d-none">' . $__t('Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated') . '' )) + @if(boolval($userSettings['product_display_purchased_date'])) + @include('components.datetimepicker2', array( + 'id' => 'purchased_date', + 'label' => 'Purchased date', + 'format' => 'YYYY-MM-DD', + 'initWithNow' => true, + 'limitEndToNow' => false, + 'limitStartToNow' => false, + 'invalidFeedback' => $__t('A purchase date is required'), + 'nextInputSelector' => '#best_before_date', + 'additionalCssClasses' => 'date-only-datetimepicker2', + 'earlierThanInfoLimit' => date('Y-m-d'), + 'earlierThanInfoText' => $__t('The given date is earlier than today, are you sure?'), + 'additionalGroupCssClasses' => $additionalGroupCssClasses, + 'activateNumberPad' => GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_FIELD_NUMBER_PAD + )) + @endif + @if(GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) @include('components.datetimepicker', array( 'id' => 'best_before_date', diff --git a/views/stocksettings.blade.php b/views/stocksettings.blade.php index 760a34c3..03604a97 100644 --- a/views/stocksettings.blade.php +++ b/views/stocksettings.blade.php @@ -94,6 +94,14 @@ data-setting-key="show_icon_on_stock_overview_page_when_product_is_on_shopping_list"> {{ $__t('Show an icon if the product is already on the shopping list') }} +
+ +