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

(-)a/C4/Circulation.pm (-1 / +1 lines)
Lines 561-567 sub TooMany { Link Here
561
    }
561
    }
562
562
563
    if ( not defined( $issuing_rule ) and not defined($branch_borrower_circ_rule->{maxissueqty}) ) {
563
    if ( not defined( $issuing_rule ) and not defined($branch_borrower_circ_rule->{maxissueqty}) ) {
564
        return { reason => 'NO_RULE_DEFINED', max_allowed => 0, issuing_rule => $issuing_rule };
564
        return { reason => 'NO_RULE_DEFINED', max_allowed => 0 };
565
    }
565
    }
566
566
567
    # OK, the patron can issue !!!
567
    # OK, the patron can issue !!!
(-)a/t/db_dependent/Circulation/TooMany.t (-6 / +42 lines)
Lines 106-112 subtest 'no rules exist' => sub { Link Here
106
106
107
subtest '1 Issuingrule exist 0 0: no issue allowed' => sub {
107
subtest '1 Issuingrule exist 0 0: no issue allowed' => sub {
108
    plan tests => 4;
108
    plan tests => 4;
109
    my $issuingrule = $builder->build({
109
    my $issuing_rule = $builder->build({
110
        source => 'Issuingrule',
110
        source => 'Issuingrule',
111
        value => {
111
        value => {
112
            branchcode         => $branch->{branchcode},
112
            branchcode         => $branch->{branchcode},
Lines 116-121 subtest '1 Issuingrule exist 0 0: no issue allowed' => sub { Link Here
116
            maxonsiteissueqty  => 0,
116
            maxonsiteissueqty  => 0,
117
        },
117
        },
118
    });
118
    });
119
    $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule(
120
        {
121
            categorycode => $patron->{categorycode},
122
            itemtype     => $item->{itype},
123
            branchcode   => C4::Circulation::_GetCircControlBranch( $item, $patron ),
124
        }
125
    );
126
    my $t = $issuing_rule->maxonsiteissueqty; # FIXME we need to fetch to populate $expected->{issuing_rule}{_columns}
119
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
127
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
120
    is_deeply(
128
    is_deeply(
121
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
129
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
Lines 123-128 subtest '1 Issuingrule exist 0 0: no issue allowed' => sub { Link Here
123
            reason => 'TOO_MANY_CHECKOUTS',
131
            reason => 'TOO_MANY_CHECKOUTS',
124
            count => 0,
132
            count => 0,
125
            max_allowed => 0,
133
            max_allowed => 0,
134
            issuing_rule => $issuing_rule,
126
        },
135
        },
127
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
136
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
128
    );
137
    );
Lines 132-137 subtest '1 Issuingrule exist 0 0: no issue allowed' => sub { Link Here
132
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
141
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
133
            count => 0,
142
            count => 0,
134
            max_allowed => 0,
143
            max_allowed => 0,
144
            issuing_rule => $issuing_rule,
135
        },
145
        },
136
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
146
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
137
    );
147
    );
Lines 143-148 subtest '1 Issuingrule exist 0 0: no issue allowed' => sub { Link Here
143
            reason => 'TOO_MANY_CHECKOUTS',
153
            reason => 'TOO_MANY_CHECKOUTS',
144
            count => 0,
154
            count => 0,
145
            max_allowed => 0,
155
            max_allowed => 0,
156
            issuing_rule => $issuing_rule,
146
        },
157
        },
147
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
158
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
148
    );
159
    );
Lines 152-157 subtest '1 Issuingrule exist 0 0: no issue allowed' => sub { Link Here
152
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
163
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
153
            count => 0,
164
            count => 0,
154
            max_allowed => 0,
165
            max_allowed => 0,
166
            issuing_rule => $issuing_rule,
155
        },
167
        },
156
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
168
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
157
    );
169
    );
Lines 161-167 subtest '1 Issuingrule exist 0 0: no issue allowed' => sub { Link Here
161
173
162
subtest '1 Issuingrule exist 1 1: issue is allowed' => sub {
174
subtest '1 Issuingrule exist 1 1: issue is allowed' => sub {
163
    plan tests => 4;
175
    plan tests => 4;
164
    my $issuingrule = $builder->build({
176
    my $issuing_rule = $builder->build({
165
        source => 'Issuingrule',
177
        source => 'Issuingrule',
166
        value => {
178
        value => {
167
            branchcode         => $branch->{branchcode},
179
            branchcode         => $branch->{branchcode},
Lines 200-206 subtest '1 Issuingrule exist 1 1: issue is allowed' => sub { Link Here
200
212
201
subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed. Do a CO' => sub {
213
subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed. Do a CO' => sub {
202
    plan tests => 5;
214
    plan tests => 5;
203
    my $issuingrule = $builder->build({
215
    my $issuing_rule = $builder->build({
204
        source => 'Issuingrule',
216
        source => 'Issuingrule',
205
        value => {
217
        value => {
206
            branchcode         => $branch->{branchcode},
218
            branchcode         => $branch->{branchcode},
Lines 210-215 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed. Do a CO' => sub { Link Here
210
            maxonsiteissueqty  => 1,
222
            maxonsiteissueqty  => 1,
211
        },
223
        },
212
    });
224
    });
225
    $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule(
226
        {
227
            categorycode => $patron->{categorycode},
228
            itemtype     => $item->{itype},
229
            branchcode   => C4::Circulation::_GetCircControlBranch( $item, $patron ),
230
            issuing_rule => $issuing_rule,
231
        }
232
    );
233
    my $t = $issuing_rule->maxonsiteissueqty; # FIXME we need to fetch to populate $expected->{issuing_rule}{_columns}
213
234
214
    my $issue = C4::Circulation::AddIssue( $patron, $item->{barcode}, dt_from_string() );
235
    my $issue = C4::Circulation::AddIssue( $patron, $item->{barcode}, dt_from_string() );
215
    like( $issue->issue_id, qr|^\d+$|, 'The issue should have been inserted' );
236
    like( $issue->issue_id, qr|^\d+$|, 'The issue should have been inserted' );
Lines 221-226 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed. Do a CO' => sub { Link Here
221
            reason => 'TOO_MANY_CHECKOUTS',
242
            reason => 'TOO_MANY_CHECKOUTS',
222
            count => 1,
243
            count => 1,
223
            max_allowed => 1,
244
            max_allowed => 1,
245
            issuing_rule => $issuing_rule,
224
        },
246
        },
225
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
247
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
226
    );
248
    );
Lines 237-242 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed. Do a CO' => sub { Link Here
237
            reason => 'TOO_MANY_CHECKOUTS',
259
            reason => 'TOO_MANY_CHECKOUTS',
238
            count => 1,
260
            count => 1,
239
            max_allowed => 1,
261
            max_allowed => 1,
262
            issuing_rule => $issuing_rule,
240
        },
263
        },
241
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
264
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
242
    );
265
    );
Lines 246-251 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed. Do a CO' => sub { Link Here
246
            reason => 'TOO_MANY_CHECKOUTS',
269
            reason => 'TOO_MANY_CHECKOUTS',
247
            count => 1,
270
            count => 1,
248
            max_allowed => 1,
271
            max_allowed => 1,
272
            issuing_rule => $issuing_rule,
249
        },
273
        },
250
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
274
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
251
    );
275
    );
Lines 255-261 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed. Do a CO' => sub { Link Here
255
279
256
subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed, Do a OSCO' => sub {
280
subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed, Do a OSCO' => sub {
257
    plan tests => 5;
281
    plan tests => 5;
258
    my $issuingrule = $builder->build({
282
    my $issuing_rule = $builder->build({
259
        source => 'Issuingrule',
283
        source => 'Issuingrule',
260
        value => {
284
        value => {
261
            branchcode         => $branch->{branchcode},
285
            branchcode         => $branch->{branchcode},
Lines 266-271 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed, Do a OSCO' => sub { Link Here
266
        },
290
        },
267
    });
291
    });
268
292
293
    $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule(
294
        {
295
            categorycode => $patron->{categorycode},
296
            itemtype     => $item->{itype},
297
            branchcode   => C4::Circulation::_GetCircControlBranch( $item, $patron ),
298
            issuing_rule => $issuing_rule,
299
        }
300
    );
301
    my $t = $issuing_rule->maxonsiteissueqty; # FIXME we need to fetch to populate $expected->{issuing_rule}{_columns}
302
269
    my $issue = C4::Circulation::AddIssue( $patron, $item->{barcode}, dt_from_string(), undef, undef, undef, { onsite_checkout => 1 } );
303
    my $issue = C4::Circulation::AddIssue( $patron, $item->{barcode}, dt_from_string(), undef, undef, undef, { onsite_checkout => 1 } );
270
    like( $issue->issue_id, qr|^\d+$|, 'The issue should have been inserted' );
304
    like( $issue->issue_id, qr|^\d+$|, 'The issue should have been inserted' );
271
305
Lines 281-286 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed, Do a OSCO' => sub { Link Here
281
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
315
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
282
            count => 1,
316
            count => 1,
283
            max_allowed => 1,
317
            max_allowed => 1,
318
            issuing_rule => $issuing_rule,
284
        },
319
        },
285
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
320
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
286
    );
321
    );
Lines 292-297 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed, Do a OSCO' => sub { Link Here
292
            reason => 'TOO_MANY_CHECKOUTS',
327
            reason => 'TOO_MANY_CHECKOUTS',
293
            count => 1,
328
            count => 1,
294
            max_allowed => 1,
329
            max_allowed => 1,
330
            issuing_rule => $issuing_rule,
295
        },
331
        },
296
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
332
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
297
    );
333
    );
Lines 301-306 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed, Do a OSCO' => sub { Link Here
301
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
337
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
302
            count => 1,
338
            count => 1,
303
            max_allowed => 1,
339
            max_allowed => 1,
340
            issuing_rule => $issuing_rule,
304
        },
341
        },
305
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
342
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
306
    );
343
    );
Lines 313-319 subtest '1 BranchBorrowerCircRule exist: 1 CO allowed, 1 OSCO allowed' => sub { Link Here
313
    # DefaultBorrowerCircRule, DefaultBranchCircRule, DefaultBranchItemRule ans DefaultCircRule.pm
350
    # DefaultBorrowerCircRule, DefaultBranchCircRule, DefaultBranchItemRule ans DefaultCircRule.pm
314
351
315
    plan tests => 10;
352
    plan tests => 10;
316
    my $issuingrule = $builder->build({
353
    my $issuing_rule = $builder->build({
317
        source => 'BranchBorrowerCircRule',
354
        source => 'BranchBorrowerCircRule',
318
        value => {
355
        value => {
319
            branchcode         => $branch->{branchcode},
356
            branchcode         => $branch->{branchcode},
320
- 

Return to bug 18139