View | Details | Raw Unified | Return to bug 38010
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/Main.vue (-52 / +20 lines)
Lines 32-47 import LeftMenu from "../LeftMenu.vue"; Link Here
32
import Dialog from "../Dialog.vue";
32
import Dialog from "../Dialog.vue";
33
import "vue-select/dist/vue-select.css";
33
import "vue-select/dist/vue-select.css";
34
import { storeToRefs } from "pinia";
34
import { storeToRefs } from "pinia";
35
import { APIClient } from "../../fetch/api-client";
36
35
37
export default {
36
export default {
38
    setup() {
37
    setup() {
39
        const vendorStore = inject("vendorStore");
38
        const vendorStore = inject("vendorStore");
40
        const { config } = storeToRefs(vendorStore);
39
        const { config, authorisedValues } = storeToRefs(vendorStore);
40
        const { loadAuthorisedValues } = vendorStore;
41
41
42
        const mainStore = inject("mainStore");
42
        const mainStore = inject("mainStore");
43
        const { loading, loaded, setError } = mainStore;
43
        const { loading, loaded, setError } = mainStore;
44
        const AVStore = inject("AVStore");
45
44
46
        const permissionsStore = inject("permissionsStore");
45
        const permissionsStore = inject("permissionsStore");
47
        const { userPermissions } = storeToRefs(permissionsStore);
46
        const { userPermissions } = storeToRefs(permissionsStore);
Lines 52-112 export default { Link Here
52
            loading,
51
            loading,
53
            loaded,
52
            loaded,
54
            userPermissions,
53
            userPermissions,
55
            AVStore,
56
            config,
54
            config,
55
            loadAuthorisedValues,
56
            authorisedValues,
57
        };
57
        };
58
    },
58
    },
59
    beforeCreate() {
59
    beforeCreate() {
60
        this.loading();
60
        this.loading();
61
61
62
        const fetchConfig = () => {
62
        this.loadAuthorisedValues(this.authorisedValues, this.vendorStore).then(
63
            let promises = [];
63
            () => {
64
64
                this.userPermissions = userPermissions;
65
            const av_client = APIClient.authorised_values;
65
                this.config.settings.edifact = edifact;
66
            const authorised_values = {
66
                this.config.settings.marcOrderAutomation = marcOrderAutomation;
67
                av_vendor_types: "VENDOR_TYPE",
67
                this.vendorStore.currencies = currencies;
68
                av_vendor_interface_types: "VENDOR_INTERFACE_TYPE",
68
                this.vendorStore.gstValues = gstValues.map(gv => {
69
            };
69
                    return {
70
70
                        label: `${Number(gv.option * 100).format_price()}%`,
71
            let av_cat_array = Object.keys(authorised_values).map(
71
                        value: gv.option,
72
                function (av_cat) {
72
                    };
73
                    return '"' + authorised_values[av_cat] + '"';
73
                });
74
                }
74
                this.loaded();
75
            );
75
                this.initialized = true;
76
76
            }
77
            promises.push(
77
        );
78
                av_client.values
79
                    .getCategoriesWithValues(av_cat_array)
80
                    .then(av_categories => {
81
                        Object.entries(authorised_values).forEach(
82
                            ([av_var, av_cat]) => {
83
                                const av_match = av_categories.find(
84
                                    element => element.category_name == av_cat
85
                                );
86
                                this.AVStore[av_var] =
87
                                    av_match.authorised_values;
88
                            }
89
                        );
90
                    })
91
            );
92
93
            return Promise.all(promises);
94
        };
95
96
        fetchConfig().then(() => {
97
            this.loaded();
98
            this.userPermissions = userPermissions;
99
            this.config.settings.edifact = edifact;
100
            this.config.settings.marcOrderAutomation = marcOrderAutomation;
101
            this.vendorStore.currencies = currencies;
102
            this.vendorStore.gstValues = gstValues.map(gv => {
103
                return {
104
                    label: `${Number(gv.option * 100).format_price()}%`,
105
                    value: gv.option,
106
                };
107
            });
108
            this.initialized = true;
109
        });
110
    },
78
    },
111
    data() {
79
    data() {
112
        return {
80
        return {
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorDetails.vue (-5 / +5 lines)
Lines 132-143 Link Here
132
            <li>
132
            <li>
133
                <label for="vendor_type">{{ $__("Vendor type") }}:</label>
133
                <label for="vendor_type">{{ $__("Vendor type") }}:</label>
134
                <v-select
134
                <v-select
135
                    v-if="av_vendor_types.length"
135
                    v-if="authorisedValues['av_vendor_types'].length"
136
                    id="vendor_type"
136
                    id="vendor_type"
137
                    v-model="vendor.type"
137
                    v-model="vendor.type"
138
                    label="description"
138
                    label="description"
139
                    :reduce="av => av.value"
139
                    :reduce="av => av.value"
140
                    :options="av_vendor_types"
140
                    :options="authorisedValues['av_vendor_types']"
141
                />
141
                />
142
                <input v-else id="vendor_type" v-model="vendor.type" />
142
                <input v-else id="vendor_type" v-model="vendor.type" />
143
            </li>
143
            </li>
Lines 178-188 export default { Link Here
178
        display: Boolean,
178
        display: Boolean,
179
    },
179
    },
180
    setup() {
180
    setup() {
181
        const AVStore = inject("AVStore");
181
        const vendorStore = inject("vendorStore");
182
        const { get_lib_from_av, av_vendor_types } = AVStore;
182
        const { get_lib_from_av, authorisedValues } = vendorStore;
183
        return {
183
        return {
184
            get_lib_from_av,
184
            get_lib_from_av,
185
            av_vendor_types,
185
            authorisedValues,
186
        };
186
        };
187
    },
187
    },
188
    data() {
188
    data() {
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorInterfaces.vue (-4 / +4 lines)
Lines 76-82 Link Here
76
                        v-model="vendorInterface.type"
76
                        v-model="vendorInterface.type"
77
                        label="description"
77
                        label="description"
78
                        :reduce="av => av.value"
78
                        :reduce="av => av.value"
79
                        :options="av_vendor_interface_types"
79
                        :options="authorisedValues['av_vendor_interface_types']"
80
                    />
80
                    />
81
                </li>
81
                </li>
82
                <li>
82
                <li>
Lines 150-160 export default { Link Here
150
        display: Boolean,
150
        display: Boolean,
151
    },
151
    },
152
    setup() {
152
    setup() {
153
        const AVStore = inject("AVStore");
153
        const vendorStore = inject("vendorStore");
154
        const { get_lib_from_av, av_vendor_interface_types } = AVStore;
154
        const { get_lib_from_av, authorisedValues } = vendorStore;
155
        return {
155
        return {
156
            get_lib_from_av,
156
            get_lib_from_av,
157
            av_vendor_interface_types,
157
            authorisedValues,
158
        };
158
        };
159
    },
159
    },
160
    methods: {
160
    methods: {
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorList.vue (-2 / +1 lines)
Lines 38-48 export default { Link Here
38
    setup() {
38
    setup() {
39
        const vendorStore = inject("vendorStore");
39
        const vendorStore = inject("vendorStore");
40
        const { vendors } = storeToRefs(vendorStore);
40
        const { vendors } = storeToRefs(vendorStore);
41
        const { get_lib_from_av, map_av_dt_filter } = vendorStore;
41
42
42
        const { setConfirmationDialog, setMessage } = inject("mainStore");
43
        const { setConfirmationDialog, setMessage } = inject("mainStore");
43
44
44
        const { get_lib_from_av, map_av_dt_filter } = inject("AVStore");
45
46
        const table = ref();
45
        const table = ref();
47
46
48
        const permissionsStore = inject("permissionsStore");
47
        const permissionsStore = inject("permissionsStore");
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorOrderingInformation.vue (-3 lines)
Lines 233-241 export default { Link Here
233
        const vendorStore = inject("vendorStore");
233
        const vendorStore = inject("vendorStore");
234
        const { currencies, gstValues } = storeToRefs(vendorStore);
234
        const { currencies, gstValues } = storeToRefs(vendorStore);
235
235
236
        const AVStore = inject("AVStore");
237
        const { get_lib_from_av } = AVStore;
238
239
        return {
236
        return {
240
            currencies,
237
            currencies,
241
            gstValues,
238
            gstValues,
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/modules/acquisitions.ts (-3 / +1 lines)
Lines 24-30 import { useMainStore } from "../stores/main"; Link Here
24
import { useVendorStore } from "../stores/vendors";
24
import { useVendorStore } from "../stores/vendors";
25
import { useNavigationStore } from "../stores/navigation";
25
import { useNavigationStore } from "../stores/navigation";
26
import { usePermissionsStore } from "../stores/permissions";
26
import { usePermissionsStore } from "../stores/permissions";
27
import { useAVStore } from "../stores/authorised-values";
28
import i18n from "../i18n";
27
import i18n from "../i18n";
29
28
30
const pinia = createPinia();
29
const pinia = createPinia();
Lines 32-38 const pinia = createPinia(); Link Here
32
const mainStore = useMainStore(pinia);
31
const mainStore = useMainStore(pinia);
33
const navigationStore = useNavigationStore(pinia);
32
const navigationStore = useNavigationStore(pinia);
34
const permissionsStore = usePermissionsStore(pinia);
33
const permissionsStore = usePermissionsStore(pinia);
35
const AVStore = useAVStore(pinia);
34
36
const routes = navigationStore.setRoutes(routesDef);
35
const routes = navigationStore.setRoutes(routesDef);
37
36
38
const router = createRouter({
37
const router = createRouter({
Lines 55-61 app.provide("vendorStore", useVendorStore(pinia)); Link Here
55
app.provide("mainStore", mainStore);
54
app.provide("mainStore", mainStore);
56
app.provide("navigationStore", navigationStore);
55
app.provide("navigationStore", navigationStore);
57
app.provide("permissionsStore", permissionsStore);
56
app.provide("permissionsStore", permissionsStore);
58
app.provide("AVStore", AVStore);
59
57
60
app.mount("#__vendors");
58
app.mount("#__vendors");
61
59
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/stores/navigation.js (-1 / +1 lines)
Lines 159-165 export const useNavigationStore = defineStore("navigation", () => { Link Here
159
            }
159
            }
160
        }),
160
        }),
161
        leftNavigation: computed(() => {
161
        leftNavigation: computed(() => {
162
            const currentRoute = this.current[this.current.length - 1];
162
            const currentRoute = store.current[store.current.length - 1];
163
            if (currentRoute) {
163
            if (currentRoute) {
164
                const alternateMenuRequired =
164
                const alternateMenuRequired =
165
                    currentRoute.meta.self.alternateLeftMenu;
165
                    currentRoute.meta.self.alternateLeftMenu;
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/stores/vendors.js (-1 / +7 lines)
Lines 1-5 Link Here
1
import { defineStore } from "pinia";
1
import { defineStore } from "pinia";
2
import { reactive, toRefs } from "vue";
2
import { reactive, toRefs } from "vue";
3
import { withAuthorisedValueActions } from "../composables/authorisedValues";
3
4
4
export const useVendorStore = defineStore("vendors", () => {
5
export const useVendorStore = defineStore("vendors", () => {
5
    const store = reactive({
6
    const store = reactive({
Lines 11-19 export const useVendorStore = defineStore("vendors", () => { Link Here
11
                edifact: false,
12
                edifact: false,
12
            },
13
            },
13
        },
14
        },
15
        authorisedValues: {
16
            av_vendor_types: "VENDOR_TYPE",
17
            av_vendor_interface_types: "VENDOR_INTERFACE_TYPE",
18
        },
14
    });
19
    });
20
    const sharedActions = withAuthorisedValueActions(store);
15
21
16
    return {
22
    return {
17
        ...toRefs(store),
23
        ...toRefs(store),
24
        ...sharedActions,
18
    };
25
    };
19
});
26
});
20
- 

Return to bug 38010