From e3fd06394ec43e6394f59e9e7632e8b0273e9096 Mon Sep 17 00:00:00 2001
From: Matt Blenkinsop
Date: Tue, 29 Oct 2024 16:53:18 +0000
Subject: [PATCH] Bug 38290: Add fields to the UI for CRUD
---
acqui/vendors.pl | 3 +-
admin/library_groups.pl | 4 +
api/v1/swagger/definitions/vendor.yaml | 8 +
.../swagger/paths/acquisitions_vendors.yaml | 1 +
.../prog/en/modules/acqui/vendors.tt | 3 +
.../prog/en/modules/admin/library_groups.tt | 25 +++-
.../prog/js/vue/components/Vendors/Main.vue | 24 ++-
.../vue/components/Vendors/VendorDetails.vue | 45 ++++++
.../vue/components/Vendors/VendorFormAdd.vue | 16 ++
.../js/vue/fetch/acquisition-api-client.js | 2 +-
.../prog/js/vue/stores/vendors.js | 140 ++++++++++++++++++
11 files changed, 263 insertions(+), 8 deletions(-)
diff --git a/acqui/vendors.pl b/acqui/vendors.pl
index b9d2628e805..a13936c8972 100755
--- a/acqui/vendors.pl
+++ b/acqui/vendors.pl
@@ -49,7 +49,8 @@ $template->param(
currencies => Koha::Acquisition::Currencies->search->unblessed,
gst_values => \@gst_values,
edifact => C4::Context->preference('EDIFACT'),
- erm_module => C4::Context->preference('ERMModule')
+ erm_module => C4::Context->preference('ERMModule'),
+ logged_in_branch => { branchcode => C4::Context::mybranch },
);
output_html_with_http_headers $query, $cookie, $template->output;
diff --git a/admin/library_groups.pl b/admin/library_groups.pl
index 84dc309c667..7d76c8f19a8 100755
--- a/admin/library_groups.pl
+++ b/admin/library_groups.pl
@@ -52,6 +52,7 @@ if ( $op eq 'cud-add' ) {
my $ft_search_groups_staff = $cgi->param('ft_search_groups_staff') || 0;
my $ft_local_hold_group = $cgi->param('ft_local_hold_group') || 0;
my $ft_local_float_group = $cgi->param('ft_local_float_group') || 0;
+ my $ft_acquisitions = $cgi->param('ft_acquisitions') || 0;
if ( !$branchcode && Koha::Library::Groups->search( { title => $title } )->count() ) {
$template->param( error_duplicate_title => $title );
@@ -69,6 +70,7 @@ if ( $op eq 'cud-add' ) {
ft_local_hold_group => $ft_local_hold_group,
ft_limit_item_editing => $ft_limit_item_editing,
ft_local_float_group => $ft_local_float_group,
+ ft_acquisitions => $ft_acquisitions,
branchcode => $branchcode,
}
)->store();
@@ -91,6 +93,7 @@ elsif ( $op eq 'cud-edit' ) {
my $ft_search_groups_staff = $cgi->param('ft_search_groups_staff') || 0;
my $ft_local_hold_group = $cgi->param('ft_local_hold_group') || 0;
my $ft_local_float_group = $cgi->param('ft_local_float_group') || 0;
+ my $ft_acquisitions = $cgi->param('ft_acquisitions') || 0;
if ($id) {
my $group = Koha::Library::Groups->find($id);
@@ -105,6 +108,7 @@ elsif ( $op eq 'cud-edit' ) {
ft_search_groups_staff => $ft_search_groups_staff,
ft_local_hold_group => $ft_local_hold_group,
ft_local_float_group => $ft_local_float_group,
+ ft_acquisitions => $ft_acquisitions,
}
)->store();
diff --git a/api/v1/swagger/definitions/vendor.yaml b/api/v1/swagger/definitions/vendor.yaml
index 51de6cbce0f..1d9f680c34e 100644
--- a/api/v1/swagger/definitions/vendor.yaml
+++ b/api/v1/swagger/definitions/vendor.yaml
@@ -124,6 +124,14 @@ properties:
- string
- "null"
description: Language
+ lib_group_visibility:
+ type:
+ - string
+ - "null"
+ description: Language
+ lib_group_limits:
+ type: array
+ description: Library groups this vendor belongs to
aliases:
type: array
description: List of aliases
diff --git a/api/v1/swagger/paths/acquisitions_vendors.yaml b/api/v1/swagger/paths/acquisitions_vendors.yaml
index 836c4da66a1..18375b24d23 100644
--- a/api/v1/swagger/paths/acquisitions_vendors.yaml
+++ b/api/v1/swagger/paths/acquisitions_vendors.yaml
@@ -157,6 +157,7 @@
- contracts
- extended_attributes
- +strings
+ - lib_group_limits
collectionFormat: csv
produces:
- application/json
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/vendors.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/vendors.tt
index 17d350e1a97..aecf20a8a7e 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/vendors.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/vendors.tt
@@ -34,6 +34,9 @@
const gstValues = [% To.json(gst_values) | $raw %];
const edifact = [% To.json(edifact) | $raw %];
const ermModule = [% To.json(erm_module) | $raw %];
+ const loggedInUser = [% To.json(logged_in_user.unblessed) | $raw %];
+ const loggedInBranch = [% To.json(logged_in_branch) | $raw %];
+
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/library_groups.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/library_groups.tt
index 8120dd647a2..7034f661e38 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/library_groups.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/library_groups.tt
@@ -166,6 +166,12 @@
Is local float group
+
+
+
@@ -244,6 +250,12 @@
Is local float group
+
+
+
@@ -330,7 +342,8 @@
var ft_search_groups_staff = $(this).data('groupFt_search_groups_staff');
var ft_local_hold_group = $(this).data('groupFt_local_hold_group');
var ft_local_float_group = $(this).data('groupFt_local_float_group');
- edit_group( id, parent_id, title, description, ft_hide_patron_info, ft_search_groups_opac, ft_search_groups_staff, ft_local_hold_group, ft_limit_item_editing, ft_local_float_group );
+ var ft_acquisitions = $(this).data('groupFt_acquisitions');
+ edit_group( id, parent_id, title, description, ft_hide_patron_info, ft_search_groups_opac, ft_search_groups_staff, ft_local_hold_group, ft_limit_item_editing, ft_local_float_group, ft_acquisitions );
});
$('.delete-group').on('click', function(e) {
@@ -368,6 +381,7 @@
$('#add-group-modal-ft_search_groups_staff').prop('checked', false);
$('#add-group-modal-ft_local_hold_group').prop('checked', false);
$('#add-group-modal-ft_local_float_group').prop('checked', false);
+ $('#add-group-modal-ft_acquisitions').prop('checked', false);
if ( parent_id ) {
$('#root-group-features-add').hide();
} else {
@@ -377,7 +391,7 @@
}
- function edit_group( id, parent_id, title, description, ft_hide_patron_info, ft_search_groups_opac, ft_search_groups_staff, ft_local_hold_group, ft_limit_item_editing, ft_local_float_group ) {
+ function edit_group( id, parent_id, title, description, ft_hide_patron_info, ft_search_groups_opac, ft_search_groups_staff, ft_local_hold_group, ft_limit_item_editing, ft_local_float_group, ft_acquisitions ) {
$('#edit-group-modal-id').val( id );
$('#edit-group-modal-title').val( title );
$('#edit-group-modal-description').val( description );
@@ -388,6 +402,7 @@
$('#edit-group-modal-ft_search_groups_staff').prop('checked', false);
$('#edit-group-modal-ft_local_hold_group').prop('checked', false);
$('#edit-group-modal-ft_local_float_group').prop('checked', false);
+ $('#edit-group-modal-ft_acquisitions').prop('checked', false);
$('#root-group-features-edit').hide();
} else {
$('#edit-group-modal-ft_hide_patron_info').prop('checked', ft_hide_patron_info ? true : false );
@@ -396,6 +411,7 @@
$('#edit-group-modal-ft_search_groups_staff').prop('checked', ft_search_groups_staff ? true : false );
$('#edit-group-modal-ft_local_hold_group').prop('checked', ft_local_hold_group ? true : false );
$('#edit-group-modal-ft_local_float_group').prop('checked', ft_local_float_group ? true : false );
+ $('#edit-group-modal-ft_acquisitions').prop('checked', ft_acquisitions ? true : false );
$('#root-group-features-edit').show();
}
@@ -457,6 +473,9 @@
[% IF group.ft_local_float_group %]
Is local float group
[% END %]
+ [% IF group.ft_acquisitions %]
+ Use in the acquisitions module
+ [% END %]
[% END %]
@@ -474,7 +493,7 @@
-
+
Edit
diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/Main.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/Main.vue
index 323e0d8d4c8..ab81e7135a0 100644
--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/Main.vue
+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/Main.vue
@@ -37,7 +37,9 @@ import { APIClient } from "../../fetch/api-client"
export default {
setup() {
const vendorStore = inject("vendorStore")
- const { config } = storeToRefs(vendorStore)
+ const { config, user, currencies, libraryGroups, gstValues } =
+ storeToRefs(vendorStore)
+ const { setLibraryGroups } = vendorStore
const mainStore = inject("mainStore")
const { loading, loaded, setError } = mainStore
@@ -54,6 +56,11 @@ export default {
userPermissions,
AVStore,
config,
+ user,
+ currencies,
+ libraryGroups,
+ gstValues,
+ setLibraryGroups,
}
},
beforeCreate() {
@@ -62,6 +69,14 @@ export default {
const fetchConfig = () => {
let promises = []
+ const libraryClient = APIClient.libraries
+ libraryClient.libraryGroups.getAll().then(
+ libraryGroups => {
+ this.setLibraryGroups(libraryGroups)
+ },
+ error => {}
+ )
+
const av_client = APIClient.authorised_values
const authorised_values = {
av_vendor_types: "VENDOR_TYPE",
@@ -100,8 +115,11 @@ export default {
this.userPermissions = userPermissions
this.config.settings.edifact = edifact
this.config.settings.ermModule = ermModule
- this.vendorStore.currencies = currencies
- this.vendorStore.gstValues = gstValues.map(gv => {
+ this.currencies = currencies
+ // this.libraryGroups = libraryGroups
+ this.user.loggedInUser = loggedInUser
+ this.user.loggedInUser.loggedInBranch = loggedInBranch.branchcode
+ this.gstValues = gstValues.map(gv => {
return {
label: `${(gv.option * 100).toFixed(2)}%`,
value: gv.option,
diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorDetails.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorDetails.vue
index 69333c90250..c8ab8afbc4d 100644
--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorDetails.vue
+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorDetails.vue
@@ -66,6 +66,30 @@
{{ get_lib_from_av("av_lang", vendor.language) }}
+
+
+
+
+
+ {{ $__("ID") }} |
+ {{ $__("Title") }} |
+
+
+
+
+ {{ libGroup.id }} |
+ {{ libGroup.title }} |
+
+
+
+
+
+
+ {{ $__("All library groups") }}
+
+
+
+
+
+
@@ -189,6 +228,7 @@