Add stock management toggling [SCI-6653] (#3967)

Co-authored-by: Anton <anton@scinote.net>
This commit is contained in:
aignatov-bio 2022-03-29 12:33:28 +02:00 committed by GitHub
parent 103e20ee9a
commit 1c50081de5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 33 additions and 17 deletions

View file

@ -86,7 +86,7 @@ class RepositoryStockValuesController < ApplicationController
end
def check_manage_permissions
render_403 unless can_manage_repository?(@repository)
render_403 unless can_manage_repository_stock?(@repository)
end
def repository_stock_value_params

View file

@ -54,7 +54,7 @@ module RepositoryDatatableHelper
end
stock_present = record.repository_stock_cell.present?
stock_managable = !options[:include_stock_consumption] && can_manage_repository_rows?(record.repository)
stock_managable = !options[:include_stock_consumption] && can_manage_repository_stock?(record.repository)
# always add stock cell, even if empty
row['stock'] = stock_present ? display_cell_value(record.repository_stock_cell, team) : {}

View file

@ -15,6 +15,10 @@ class RepositoryStockValue < ApplicationRecord
SORTABLE_COLUMN_NAME = 'repository_stock_values.amount'
def self.enabled?
ApplicationSettings.instance.values['stock_management_enabled']
end
def formatted
rounded_amount = number_with_precision(
amount,

View file

@ -156,7 +156,8 @@ Canaid::Permissions.register_for(MyModule) do
end
can :update_my_module_stock_consumption do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::STOCK_CONSUMPTION_UPDATE)
my_module.permission_granted?(user, MyModulePermissions::STOCK_CONSUMPTION_UPDATE) &&
RepositoryStockValue.enabled?
end
end

View file

@ -91,4 +91,8 @@ Canaid::Permissions.register_for(Repository) do
((repository.team == user.current_team) && user.is_normal_user_or_admin_of_team?(repository.team)) ||
(repository.shared_with_write?(user.current_team) && user.is_normal_user_or_admin_of_team?(user.current_team))
end
can :manage_repository_stock do |user, repository|
RepositoryStockValue.enabled? && can_manage_repository_rows?(user, repository)
end
end

View file

@ -4,7 +4,13 @@ Canaid::Permissions.register_for(RepositoryColumn) do
# repository: update/delete field
# Tested in scope of RepositoryPermissions spec
can :manage_repository_column do |user, repository_column|
repository_column.repository.repository_snapshots.provisioning.none? &&
managable = repository_column.repository.repository_snapshots.provisioning.none? &&
can_create_repository_columns?(user, repository_column.repository)
if repository_column.data_type == 'RepositoryStockValue'
managable = can_manage_repository_stock?(user, repository_column.repository) && managable
end
managable
end
end

View file

@ -78,19 +78,20 @@
<%= t('libraries.manange_modal_column.select.repository_status_value') %>
</option>
<option data-create-url="<%= repository_repository_columns_stock_columns_path(@repository) %>"
data-edit-url="<%= repository_repository_columns_stock_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
value="RepositoryStockValue"
<% if @repository.repository_columns.where(data_type: 'RepositoryStockValue').any? %>
data-params="<%= {
optionClass: 'disabled-option',
text_description: 'Only one per inventory allowed'
}.to_json %>"
<% end %>
<%= 'selected' if @repository_column.repository_stock_value? %> >
<%= t('libraries.manange_modal_column.select.repository_stock_value') %>
</option>
<% if can_manage_repository_stock?(current_user, @repository) %>
<option data-create-url="<%= repository_repository_columns_stock_columns_path(@repository) %>"
data-edit-url="<%= repository_repository_columns_stock_column_path(@repository, @repository_column) unless @repository_column.new_record? %>"
value="RepositoryStockValue"
<% if @repository.repository_columns.where(data_type: 'RepositoryStockValue').any? %>
data-params="<%= {
optionClass: 'disabled-option',
text_description: 'Only one per inventory allowed'
}.to_json %>"
<% end %>
<%= 'selected' if @repository_column.repository_stock_value? %> >
<%= t('libraries.manange_modal_column.select.repository_stock_value') %>
</option>
<% end %>
<option data-delimiter=true></option>
<option data-create-url="<%= repository_repository_columns_date_time_columns_path(@repository) %>"