mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-02-28 01:36:33 +08:00
Add stock management toggling [SCI-6653] (#3967)
Co-authored-by: Anton <anton@scinote.net>
This commit is contained in:
parent
103e20ee9a
commit
1c50081de5
7 changed files with 33 additions and 17 deletions
|
@ -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
|
||||
|
|
|
@ -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) : {}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) %>"
|
||||
|
|
Loading…
Reference in a new issue