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

(-)a/installer/data/mysql/atomicupdate/bug_10190.pl (-8 / +82 lines)
Lines 8-13 return { Link Here
8
        my ($args) = @_;
8
        my ($args) = @_;
9
        my ( $dbh, $out ) = @$args{qw(dbh out)};
9
        my ( $dbh, $out ) = @$args{qw(dbh out)};
10
10
11
        # This script first pulls data from these tables, then deletes them. -> Do not run if they do not exist.
12
        if ( !TableExists('overduerules_transport_types') || !TableExists('overduerules') ) {
13
            exit;
14
        }
15
11
        # Populate empty overduerules table for missing categories
16
        # Populate empty overduerules table for missing categories
12
        $dbh->do(
17
        $dbh->do(
13
            q|
18
            q|
Lines 150-161 return { Link Here
150
            my $branchcode_key = $branchcode // '';
155
            my $branchcode_key = $branchcode // '';
151
            foreach my $i ( 1 .. 3 ) {
156
            foreach my $i ( 1 .. 3 ) {
152
157
158
                my $has_rules = 0;
159
153
                # Insert the delay rule for group $i, skipping if it matches the most frequent delay
160
                # Insert the delay rule for group $i, skipping if it matches the most frequent delay
154
                if ( my $delay = $rule->{"delay$i"} ) {
161
                if ( my $delay = $rule->{"delay$i"} ) {
155
                    $delay ||= '';
162
                    $delay ||= '';
156
                    unless ( $delay eq $most_frequent_delay{$branchcode_key}{$i} ) {
163
                    unless ( $delay eq $most_frequent_delay{$branchcode_key}{$i} ) {
157
                        $delay ||= undef;
164
                        $delay ||= undef;
158
                        say $out "Inserting $branchcode:$categorycode:$itemtype overdue_$i" . '_delay: ' . $delay;
165
                        say $out "Inserting "
166
                            . ( $branchcode   // '' ) . ":"
167
                            . ( $categorycode // '' ) . ':'
168
                            . ( $itemtype     // '' )
169
                            . " overdue_$i"
170
                            . '_delay: '
171
                            . ( $delay // '' );
159
                        $insert->execute(
172
                        $insert->execute(
160
                            $branchcode,
173
                            $branchcode,
161
                            $categorycode,
174
                            $categorycode,
Lines 163-175 return { Link Here
163
                            "overdue_$i" . '_delay',
176
                            "overdue_$i" . '_delay',
164
                            $delay
177
                            $delay
165
                        );
178
                        );
179
                        $has_rules = 1;
166
                    }
180
                    }
167
                }
181
                }
168
182
169
                # Insert the notice rule for group $i, skipping if it matches the most frequent notice
183
                # Insert the notice rule for group $i, skipping if it matches the most frequent notice
170
                if ( my $notice = $rule->{"letter$i"} ) {
184
                if ( my $notice = $rule->{"letter$i"} ) {
171
                    unless ( $notice eq $most_frequent_notice{$branchcode_key}{$i} ) {
185
                    unless ( $notice eq $most_frequent_notice{$branchcode_key}{$i} ) {
172
                        say $out "Inserting $branchcode:$categorycode:$itemtype overdue_$i" . '_notice: ' . $notice;
186
                        say $out "Inserting "
187
                            . ( $branchcode   // '' ) . ":"
188
                            . ( $categorycode // '' ) . ':'
189
                            . ( $itemtype     // '' )
190
                            . " overdue_$i"
191
                            . '_notice: '
192
                            . ( $notice // '' );
173
                        $insert->execute(
193
                        $insert->execute(
174
                            $branchcode,
194
                            $branchcode,
175
                            $categorycode,
195
                            $categorycode,
Lines 177-189 return { Link Here
177
                            "overdue_$i" . '_notice',
197
                            "overdue_$i" . '_notice',
178
                            $notice
198
                            $notice
179
                        );
199
                        );
200
                        $has_rules = 1;
180
                    }
201
                    }
181
                }
202
                }
182
203
183
                # Insert the message transport type rule for group $i, skipping if it matches the most frequent mtt
204
                # Insert the message transport type rule for group $i, skipping if it matches the most frequent mtt
184
                if ( my $mtt = $rule->{"message_transport_type_$i"} ) {
205
                if ( my $mtt = $rule->{"message_transport_type_$i"} ) {
185
                    unless ( $mtt eq $most_frequent_mtt{$branchcode_key}{$i} ) {
206
                    unless ( $mtt eq $most_frequent_mtt{$branchcode_key}{$i} ) {
186
                        say $out "Inserting $branchcode:$categorycode:$itemtype overdue_$i" . '_mtt: ' . $mtt;
207
                        say $out "Inserting "
208
                            . ( $branchcode   // '' ) . ":"
209
                            . ( $categorycode // '' ) . ':'
210
                            . ( $itemtype     // '' )
211
                            . " overdue_$i"
212
                            . '_mtt: '
213
                            . ( $mtt // '' );
187
                        $insert->execute(
214
                        $insert->execute(
188
                            $branchcode,
215
                            $branchcode,
189
                            $categorycode,
216
                            $categorycode,
Lines 191-203 return { Link Here
191
                            "overdue_$i" . '_mtt',
218
                            "overdue_$i" . '_mtt',
192
                            $mtt
219
                            $mtt
193
                        );
220
                        );
221
                        $has_rules = 1;
194
                    }
222
                    }
195
                }
223
                }
196
224
197
                # Insert the restrict rule for group $i
225
                # Insert the restrict rule for group $i
198
                if ( my $restrict = $rule->{"debarred$i"} ) {
226
                if ( my $restrict = $rule->{"debarred$i"} ) {
199
                    unless ( $restrict eq $most_frequent_restrict{$branchcode_key}{$i} ) {
227
                    unless ( $restrict eq $most_frequent_restrict{$branchcode_key}{$i} ) {
200
                        say $out "Inserting $branchcode:$categorycode:$itemtype overdue_$i" . '_restrict: ' . $restrict;
228
                        say $out "Inserting "
229
                            . ( $branchcode   // '' ) . ":"
230
                            . ( $categorycode // '' ) . ':'
231
                            . ( $itemtype     // '' )
232
                            . " overdue_$i"
233
                            . '_restrict: '
234
                            . ( $restrict // '' );
201
                        $insert->execute(
235
                        $insert->execute(
202
                            $branchcode,
236
                            $branchcode,
203
                            $categorycode,
237
                            $categorycode,
Lines 205-212 return { Link Here
205
                            "overdue_$i" . '_restrict',
239
                            "overdue_$i" . '_restrict',
206
                            $restrict
240
                            $restrict
207
                        );
241
                        );
242
                        $has_rules = 1;
208
                    }
243
                    }
209
                }
244
                }
245
246
                # Insert the has_rules rule for group $i if and only if a rule set has been added into the db for this context.
247
                if ( $has_rules == 1 ) {
248
                    say $out "Inserting "
249
                        . ( $branchcode   // '' ) . ":"
250
                        . ( $categorycode // '' ) . ':'
251
                        . ( $itemtype     // '' )
252
                        . " overdue_$i"
253
                        . "has_rules: 1";
254
                    $insert->execute(
255
                        $branchcode,
256
                        $categorycode,
257
                        $itemtype,
258
                        "overdue_$i" . '_has_rules',
259
                        1
260
                    );
261
                }
210
            }
262
            }
211
        }
263
        }
212
264
Lines 215-221 return { Link Here
215
            my $branchcode_value = $branchcode || undef;
267
            my $branchcode_value = $branchcode || undef;
216
            foreach my $i ( 1 .. 3 ) {
268
            foreach my $i ( 1 .. 3 ) {
217
                my $most_frequent_delay = $most_frequent_delay{$branchcode}{$i};
269
                my $most_frequent_delay = $most_frequent_delay{$branchcode}{$i};
218
                say $out "Inserting $branchcode_value:undef:$itemtype default most frequent delay for overdue_$i: "
270
                say $out "Inserting "
271
                    . ( $branchcode_value // '' )
272
                    . ":undef:"
273
                    . ( $itemtype // '' )
274
                    . " default most frequent delay for overdue_$i: "
219
                    . $most_frequent_delay;
275
                    . $most_frequent_delay;
220
                $insert->execute(
276
                $insert->execute(
221
                    $branchcode_value,
277
                    $branchcode_value,
Lines 226-232 return { Link Here
226
                );
282
                );
227
283
228
                my $most_frequent_notice = $most_frequent_notice{$branchcode}{$i};
284
                my $most_frequent_notice = $most_frequent_notice{$branchcode}{$i};
229
                say $out "Inserting $branchcode_value:undef:undef default most frequent notice for overdue_$i: "
285
                say $out "Inserting "
286
                    . ( $branchcode_value // '' )
287
                    . ":undef:undef default most frequent notice for overdue_$i: "
230
                    . $most_frequent_notice;
288
                    . $most_frequent_notice;
231
                $insert->execute(
289
                $insert->execute(
232
                    $branchcode_value,
290
                    $branchcode_value,
Lines 237-243 return { Link Here
237
                );
295
                );
238
296
239
                my $most_frequent_mtt = $most_frequent_mtt{$branchcode}{$i};
297
                my $most_frequent_mtt = $most_frequent_mtt{$branchcode}{$i};
240
                say $out "Inserting $branchcode_value:undef:undef default most frequent mtt for overdue_$i: "
298
                say $out "Inserting "
299
                    . ( $branchcode_value // '' )
300
                    . ":undef:undef default most frequent mtt for overdue_$i: "
241
                    . $most_frequent_mtt;
301
                    . $most_frequent_mtt;
242
                $insert->execute(
302
                $insert->execute(
243
                    $branchcode_value,
303
                    $branchcode_value,
Lines 248-254 return { Link Here
248
                );
308
                );
249
309
250
                my $most_frequent_restrict = $most_frequent_restrict{$branchcode}{$i};
310
                my $most_frequent_restrict = $most_frequent_restrict{$branchcode}{$i};
251
                say $out "Inserting $branchcode_value:undef:undef default most frequent restrict for overdue_$i: "
311
                say $out "Inserting "
312
                    . ( $branchcode_value // '' )
313
                    . ":undef:undef default most frequent restrict for overdue_$i: "
252
                    . $most_frequent_restrict;
314
                    . $most_frequent_restrict;
253
                $insert->execute(
315
                $insert->execute(
254
                    $branchcode_value,
316
                    $branchcode_value,
Lines 258-263 return { Link Here
258
                    $most_frequent_restrict
320
                    $most_frequent_restrict
259
                );
321
                );
260
322
323
                # Insert the has_rules rule for group $i's default context
324
                say $out "Inserting "
325
                    . ( $branchcode_value // '' )
326
                    . ":undef:undef default has_rules for overdue_$i: 1";
327
                $insert->execute(
328
                    $branchcode_value,
329
                    undef,
330
                    undef,
331
                    "overdue_${i}_has_rules",
332
                    1
333
                );
334
261
            }
335
            }
262
        }
336
        }
263
337
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Admin/CirculationTriggers/CirculationTriggersFormAdd.vue (-12 / +14 lines)
Lines 638-644 export default { Link Here
638
            if (this.ruleSetToSubmit === null) {
638
            if (this.ruleSetToSubmit === null) {
639
                this.ruleSetToSubmit = {
639
                this.ruleSetToSubmit = {
640
                    context: this.context,
640
                    context: this.context,
641
                    [`overdue_${this.triggerNumber}_delay`]: this.minDelay,
641
                    [`overdue_${this.triggerNumber}_delay`]: `${this.minDelay}`,
642
                    [`overdue_${this.triggerNumber}_notice`]: null,
642
                    [`overdue_${this.triggerNumber}_notice`]: null,
643
                    [`overdue_${this.triggerNumber}_mtt`]: null,
643
                    [`overdue_${this.triggerNumber}_mtt`]: null,
644
                    [`overdue_${this.triggerNumber}_restrict`]: null,
644
                    [`overdue_${this.triggerNumber}_restrict`]: null,
Lines 742-749 export default { Link Here
742
                      this.currentRuleSet[`overdue_${priorTriggerNumber}_delay`]
742
                      this.currentRuleSet[`overdue_${priorTriggerNumber}_delay`]
743
                  ) + 1
743
                  ) + 1
744
                : 0;
744
                : 0;
745
            this.ruleSetToSubmit[`overdue_${this.triggerNumber}_delay`] =
746
                this.minDelay;
747
        },
745
        },
748
        setMaxDelay() {
746
        setMaxDelay() {
749
            const nextTriggerNumber = parseInt(this.triggerNumber) + 1;
747
            const nextTriggerNumber = parseInt(this.triggerNumber) + 1;
Lines 791-806 export default { Link Here
791
                    null
789
                    null
792
            ) {
790
            ) {
793
                this.ruleSetToSubmit[`overdue_${this.triggerNumber}_delay`] =
791
                this.ruleSetToSubmit[`overdue_${this.triggerNumber}_delay`] =
794
                    min;
792
                    `${min}`;
795
            }
793
            }
796
794
797
            // Increment within the valid range
795
            // Increment within the valid range
798
            else {
796
            else {
799
                this.ruleSetToSubmit[`overdue_${this.triggerNumber}_delay`] =
797
                this.ruleSetToSubmit[`overdue_${this.triggerNumber}_delay`] =
800
                    Math.min(
798
                    Math.min(
801
                        this.ruleSetToSubmit[
799
                        parseInt(
802
                            `overdue_${this.triggerNumber}_delay`
800
                            this.ruleSetToSubmit[
803
                        ] + 1,
801
                                `overdue_${this.triggerNumber}_delay`
802
                            ]
803
                        ) + 1,
804
                        max
804
                        max
805
                    );
805
                    );
806
            }
806
            }
Lines 809-820 export default { Link Here
809
        decrementDelay() {
809
        decrementDelay() {
810
            // Check for minDelay
810
            // Check for minDelay
811
            const min = this.minDelay !== undefined ? this.minDelay : 1;
811
            const min = this.minDelay !== undefined ? this.minDelay : 1;
812
            let delay = parseInt(
813
                this.ruleSetToSubmit[`overdue_${this.triggerNumber}_delay`]
814
            );
812
            // Decrement only if greater than minDelay
815
            // Decrement only if greater than minDelay
813
            if (
816
            if (delay > min) {
814
                this.ruleSetToSubmit[`overdue_${this.triggerNumber}_delay`] >
817
                delay--;
815
                min
818
                this.ruleSetToSubmit[`overdue_${this.triggerNumber}_delay`] =
816
            ) {
819
                    `${delay}`;
817
                this.ruleSetToSubmit[`overdue_${this.triggerNumber}_delay`]--;
818
            }
820
            }
819
            this.setAllowSubmission();
821
            this.setAllowSubmission();
820
        },
822
        },
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/stores/circulation-rules.js (-2 / +4 lines)
Lines 87-93 export const useCircRulesStore = defineStore("circRules", { Link Here
87
            return value.includes(type) ? $__("Yes") : $__("No");
87
            return value.includes(type) ? $__("Yes") : $__("No");
88
        },
88
        },
89
        hasConflict(oldRuleSet, newRuleSet, triggerNumber) {
89
        hasConflict(oldRuleSet, newRuleSet, triggerNumber) {
90
            if (!oldRuleSet) {
90
            if (
91
                !oldRuleSet ||
92
                oldRuleSet[`overdue_${triggerNumber}_has_rules`] === null
93
            ) {
91
                return false;
94
                return false;
92
            }
95
            }
93
            return (
96
            return (
94
- 

Return to bug 10190