diff --git a/koha-tmpl/intranet-tmpl/prog/js/fetch/cash-api-client.js b/koha-tmpl/intranet-tmpl/prog/js/fetch/cash-api-client.js new file mode 100644 index 0000000000..80b3ee0b5f --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/fetch/cash-api-client.js @@ -0,0 +1,21 @@ +export class CataloguingAPIClient { + constructor(HttpClient) { + this.httpClient = new HttpClient({ + baseURL: "/api/v1/", + }); + } + + get cash_registers() { + return { + getAll: (query, params, headers) => + this.getAll({ + endpoint: "cash_registers", + query, + params, + headers, + }), + }; + } +} + +export default CashAPIClient; diff --git a/koha-tmpl/intranet-tmpl/prog/js/fetch/item-api-client.js b/koha-tmpl/intranet-tmpl/prog/js/fetch/item-api-client.js index 84b9b8c370..5fd210e5b8 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/fetch/item-api-client.js +++ b/koha-tmpl/intranet-tmpl/prog/js/fetch/item-api-client.js @@ -16,6 +16,18 @@ export class ItemAPIClient { }), }; } + + get item_types() { + return { + getAll: (query, params, headers) => + this.getAll({ + endpoint: "item_types", + query, + params, + headers, + }), + }; + } } export default ItemAPIClient; diff --git a/koha-tmpl/intranet-tmpl/prog/js/fetch/patron-api-client.js b/koha-tmpl/intranet-tmpl/prog/js/fetch/patron-api-client.js index 2ec8b8c260..c2760a8466 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/fetch/patron-api-client.js +++ b/koha-tmpl/intranet-tmpl/prog/js/fetch/patron-api-client.js @@ -13,6 +13,18 @@ export class PatronAPIClient { }), }; } + + get patron_categories() { + return { + getAll: (query, params, headers) => + this.getAll({ + endpoint: "patron_categories", + query, + params, + headers, + }), + }; + } } export default PatronAPIClient; diff --git a/koha-tmpl/intranet-tmpl/prog/js/fetch/sip2-api-client.js b/koha-tmpl/intranet-tmpl/prog/js/fetch/sip2-api-client.js index 247a031dce..55586a11bf 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/fetch/sip2-api-client.js +++ b/koha-tmpl/intranet-tmpl/prog/js/fetch/sip2-api-client.js @@ -41,6 +41,43 @@ export class SIP2APIClient { }), }; } + + get accounts() { + return { + get: id => + this.get({ + endpoint: "accounts/" + id, + }), + getAll: params => + this.getAll({ + endpoint: "accounts", + }), + delete: id => + this.delete({ + endpoint: "accounts/" + id, + }), + create: account => + this.post({ + endpoint: "accounts", + body: account, + }), + update: (account, id) => + this.put({ + endpoint: "accounts/" + id, + body: account, + }), + count: (query = {}) => + this.count({ + endpoint: + "accounts?" + + new URLSearchParams({ + _page: 1, + _per_page: 1, + ...(query && { q: JSON.stringify(query) }), + }), + }), + }; + } } export default SIP2APIClient; diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/SIP2/SIP2AccountResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/SIP2/SIP2AccountResource.vue new file mode 100644 index 0000000000..758a12f561 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/SIP2/SIP2AccountResource.vue @@ -0,0 +1,632 @@ + diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/SIP2/SIP2InstitutionsList.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/SIP2/SIP2InstitutionsList.vue index 47d9c1c3c7..a5cedf313f 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/SIP2/SIP2InstitutionsList.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/SIP2/SIP2InstitutionsList.vue @@ -99,12 +99,6 @@ export default { ); }, }, - { - title: __("Name"), - data: "name", - searchable: true, - orderable: true, - }, { title: __("Implementation"), data: "implementation", diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/api-client.js b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/api-client.js index 1b962d3cb2..3adc914420 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/api-client.js +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/api-client.js @@ -5,6 +5,7 @@ import PatronAPIClient from "@fetch/patron-api-client"; import AcquisitionAPIClient from "@fetch/acquisition-api-client"; import AdditionalFieldsAPIClient from "@fetch/additional-fields-api-client"; import AVAPIClient from "@fetch/authorised-values-api-client"; +import CashAPIClient from "@fetch/cash-api-client"; import ItemAPIClient from "@fetch/item-api-client"; import RecordSourcesAPIClient from "@fetch/record-sources-api-client"; import SysprefAPIClient from "@fetch/system-preferences-api-client"; @@ -17,6 +18,7 @@ export const APIClient = { acquisition: new AcquisitionAPIClient(HttpClient), additional_fields: new AdditionalFieldsAPIClient(HttpClient), authorised_values: new AVAPIClient(HttpClient), + cash: new CashAPIClient(HttpClient), item: new ItemAPIClient(HttpClient), sysprefs: new SysprefAPIClient(HttpClient), sip2: new SIP2APIClient(HttpClient), diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/routes/sip2.js b/koha-tmpl/intranet-tmpl/prog/js/vue/routes/sip2.js index 17cc471768..05a5c2855f 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/routes/sip2.js +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/routes/sip2.js @@ -4,6 +4,9 @@ import Home from "../components/SIP2/Home.vue"; import SIP2InstitutionsList from "../components/SIP2/SIP2InstitutionsList.vue"; import SIP2InstitutionsFormAdd from "../components/SIP2/SIP2InstitutionsFormAdd.vue"; import SIP2InstitutionsShow from "../components/SIP2/SIP2InstitutionsShow.vue"; +import SIP2AccountsList from "../components/SIP2/SIP2AccountsList.vue"; +import SIP2AccountsFormAdd from "../components/SIP2/SIP2AccountsFormAdd.vue"; +import SIP2AccountsShow from "../components/SIP2/SIP2AccountsShow.vue"; import { $__ } from "../i18n"; @@ -51,6 +54,38 @@ export const routes = [ }, ], }, + { + path: "/cgi-bin/koha/sip2/accounts", + title: $__("Accounts"), + icon: "fa fa-user", + is_end_node: true, + resource: "SIP2/SIP2AccountResource.vue", + children: [ + { + path: "", + name: "SIP2AccountsList", + component: markRaw(ResourceWrapper), + }, + { + path: ":sip_account_id", + name: "SIP2AccountsShow", + component: markRaw(ResourceWrapper), + title: $__("Show account"), + }, + { + path: "add", + name: "SIP2AccountsFormAdd", + component: markRaw(ResourceWrapper), + title: $__("Add account"), + }, + { + path: "edit/:sip_account_id", + name: "SIP2AccountsFormAddEdit", + component: markRaw(ResourceWrapper), + title: $__("Edit account"), + }, + ], + }, ], }, ]; diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/stores/sip2.js b/koha-tmpl/intranet-tmpl/prog/js/vue/stores/sip2.js index ae48e649c8..f662d17c42 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/stores/sip2.js +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/stores/sip2.js @@ -1,9 +1,21 @@ import { defineStore } from "pinia"; +import { reactive, toRefs } from "vue"; +import { withAuthorisedValueActions } from "../composables/authorisedValues"; +import { $__ } from "@koha-vue/i18n"; -export const useSIP2Store = defineStore("sip2", { - state: () => ({ +export const useSIP2Store = defineStore("erm", () => { + const store = reactive({ config: { displayRestartSIPDialog: true, }, - }), + authorisedValues: { + av_lost: "LOST", + }, + }); + const sharedActions = withAuthorisedValueActions(store); + + return { + ...toRefs(store), + ...sharedActions, + }; });