7 use Koha::IssuingRules;
10 use Test::More tests => 10;
13 use_ok('C4::Circulation');
24 my $dbh = C4::Context->dbh;
25 $dbh->{RaiseError} = 1;
26 $dbh->{AutoCommit} = 0;
28 $dbh->do(q|DELETE FROM issues|);
29 $dbh->do(q|DELETE FROM items|);
30 $dbh->do(q|DELETE FROM borrowers|);
31 $dbh->do(q|DELETE FROM edifact_ean|);
32 $dbh->do(q|DELETE FROM branches|);
33 $dbh->do(q|DELETE FROM categories|);
34 $dbh->do(q|DELETE FROM issuingrules|);
38 #Add branch and category
41 branchname => 'Sample Branch',
42 branchaddress1 => 'sample adr1',
43 branchaddress2 => 'sample adr2',
44 branchaddress3 => 'sample adr3',
45 branchzip => 'sample zip',
46 branchcity => 'sample city',
47 branchstate => 'sample state',
48 branchcountry => 'sample country',
49 branchphone => 'sample phone',
50 branchfax => 'sample fax',
51 branchemail => 'sample email',
52 branchurl => 'sample url',
53 branchip => 'sample ip',
54 branchprinter => undef,
55 opac_info => 'sample opac',
59 branchname => 'Sample Branch2',
60 branchaddress1 => 'sample adr1_2',
61 branchaddress2 => 'sample adr2_2',
62 branchaddress3 => 'sample adr3_2',
63 branchzip => 'sample zip2',
64 branchcity => 'sample city2',
65 branchstate => 'sample state2',
66 branchcountry => 'sample country2',
67 branchphone => 'sample phone2',
68 branchfax => 'sample fax2',
69 branchemail => 'sample email2',
70 branchurl => 'sample url2',
71 branchip => 'sample ip2',
72 branchprinter => undef,
73 opac_info => 'sample opac2',
75 Koha::Library->new($samplebranch1)->store;
76 Koha::Library->new($samplebranch2)->store;
79 categorycode => 'CAT1',
80 description => 'Description1',
81 enrolmentperiod => 'Null',
82 enrolmentperioddate => 'Null',
83 dateofbirthrequired => 'Null',
86 enrolmentfee => 'Null',
87 overduenoticerequired => 'Null',
91 category_type => 'Null'
94 "INSERT INTO categories (categorycode,description,enrolmentperiod,enrolmentperioddate,dateofbirthrequired ,finetype,bulk,enrolmentfee,overduenoticerequired,issuelimit ,reservefee ,hidelostitems ,category_type) VALUES( ?,?,?,?,?,?,?,?,?,?,?,?,?)";
97 $samplecat->{categorycode}, $samplecat->{description},
98 $samplecat->{enrolmentperiod}, $samplecat->{enrolmentperioddate},
99 $samplecat->{dateofbirthrequired}, $samplecat->{finetype},
100 $samplecat->{bulk}, $samplecat->{enrolmentfee},
101 $samplecat->{overduenoticerequired}, $samplecat->{issuelimit},
102 $samplecat->{reservefee}, $samplecat->{hidelostitems},
103 $samplecat->{category_type}
115 my $sampleissuingrule1 = {
116 reservecharge => '0.000000',
117 chargename => 'Null',
121 maxonsiteissueqty => 4,
123 lengthunit => 'days',
125 norenewalbefore => 6,
129 chargeperiod_charge_at => 0,
130 rentaldiscount => '2.000000',
131 reservesallowed => 0,
132 hardduedate => '2013-01-01',
133 branchcode => $samplebranch1->{branchcode},
135 hardduedatecompare => 5,
136 overduefinescap => '0.000000',
137 renewalsallowed => 0,
140 categorycode => $samplecat->{categorycode},
141 maxsuspensiondays => 0,
143 opacitemholds => 'N',
144 cap_fine_to_replacement_price => 0,
145 holds_per_record => 1,
146 article_requests => 'yes',
147 no_auto_renewal_after => undef,
148 no_auto_renewal_after_hard_limit => undef,
150 my $sampleissuingrule2 = {
151 branchcode => $samplebranch2->{branchcode},
152 categorycode => $samplecat->{categorycode},
155 maxonsiteissueqty => 1,
156 renewalsallowed => 'Null',
158 norenewalbefore => 7,
160 reservesallowed => 'Null',
162 lengthunit => 'days',
164 hardduedatecompare => 'Null',
167 firstremind => 'Null',
168 chargeperiod => 'Null',
169 chargeperiod_charge_at => 0,
170 rentaldiscount => 2.00,
171 overduefinescap => 'Null',
172 accountsent => 'Null',
173 reservecharge => 'Null',
174 chargename => 'Null',
175 restrictedtype => 'Null',
176 maxsuspensiondays => 0,
178 opacitemholds => 'Y',
179 cap_fine_to_replacement_price => 0,
180 holds_per_record => 1,
181 article_requests => 'yes',
183 my $sampleissuingrule3 = {
184 branchcode => $samplebranch1->{branchcode},
185 categorycode => $samplecat->{categorycode},
188 maxonsiteissueqty => 2,
189 renewalsallowed => 'Null',
191 norenewalbefore => 8,
193 reservesallowed => 'Null',
195 lengthunit => 'days',
197 hardduedatecompare => 'Null',
200 firstremind => 'Null',
201 chargeperiod => 'Null',
202 chargeperiod_charge_at => 0,
203 rentaldiscount => 3.00,
204 overduefinescap => 'Null',
205 accountsent => 'Null',
206 reservecharge => 'Null',
207 chargename => 'Null',
208 restrictedtype => 'Null',
209 maxsuspensiondays => 0,
211 opacitemholds => 'F',
212 cap_fine_to_replacement_price => 0,
213 holds_per_record => 1,
214 article_requests => 'yes',
217 $query = 'INSERT INTO issuingrules (
236 chargeperiod_charge_at,
246 cap_fine_to_replacement_price,
248 ) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
249 my $sth = $dbh->prepare($query);
251 $sampleissuingrule1->{branchcode},
252 $sampleissuingrule1->{categorycode},
253 $sampleissuingrule1->{itemtype},
254 $sampleissuingrule1->{maxissueqty},
255 $sampleissuingrule1->{maxonsiteissueqty},
256 $sampleissuingrule1->{renewalsallowed},
257 $sampleissuingrule1->{renewalperiod},
258 $sampleissuingrule1->{norenewalbefore},
259 $sampleissuingrule1->{auto_renew},
260 $sampleissuingrule1->{reservesallowed},
261 $sampleissuingrule1->{issuelength},
262 $sampleissuingrule1->{lengthunit},
263 $sampleissuingrule1->{hardduedate},
264 $sampleissuingrule1->{hardduedatecompare},
265 $sampleissuingrule1->{fine},
266 $sampleissuingrule1->{finedays},
267 $sampleissuingrule1->{firstremind},
268 $sampleissuingrule1->{chargeperiod},
269 $sampleissuingrule1->{chargeperiod_charge_at},
270 $sampleissuingrule1->{rentaldiscount},
271 $sampleissuingrule1->{overduefinescap},
272 $sampleissuingrule1->{accountsent},
273 $sampleissuingrule1->{reservecharge},
274 $sampleissuingrule1->{chargename},
275 $sampleissuingrule1->{restrictedtype},
276 $sampleissuingrule1->{maxsuspensiondays},
277 $sampleissuingrule1->{onshelfholds},
278 $sampleissuingrule1->{opacitemholds},
279 $sampleissuingrule1->{cap_fine_to_replacement_price},
280 $sampleissuingrule1->{article_requests},
283 $sampleissuingrule2->{branchcode},
284 $sampleissuingrule2->{categorycode},
285 $sampleissuingrule2->{itemtype},
286 $sampleissuingrule2->{maxissueqty},
287 $sampleissuingrule2->{maxonsiteissueqty},
288 $sampleissuingrule2->{renewalsallowed},
289 $sampleissuingrule2->{renewalperiod},
290 $sampleissuingrule2->{norenewalbefore},
291 $sampleissuingrule2->{auto_renew},
292 $sampleissuingrule2->{reservesallowed},
293 $sampleissuingrule2->{issuelength},
294 $sampleissuingrule2->{lengthunit},
295 $sampleissuingrule2->{hardduedate},
296 $sampleissuingrule2->{hardduedatecompare},
297 $sampleissuingrule2->{fine},
298 $sampleissuingrule2->{finedays},
299 $sampleissuingrule2->{firstremind},
300 $sampleissuingrule2->{chargeperiod},
301 $sampleissuingrule2->{chargeperiod_charge_at},
302 $sampleissuingrule2->{rentaldiscount},
303 $sampleissuingrule2->{overduefinescap},
304 $sampleissuingrule2->{accountsent},
305 $sampleissuingrule2->{reservecharge},
306 $sampleissuingrule2->{chargename},
307 $sampleissuingrule2->{restrictedtype},
308 $sampleissuingrule2->{maxsuspensiondays},
309 $sampleissuingrule2->{onshelfholds},
310 $sampleissuingrule2->{opacitemholds},
311 $sampleissuingrule2->{cap_fine_to_replacement_price},
312 $sampleissuingrule2->{article_requests},
315 $sampleissuingrule3->{branchcode},
316 $sampleissuingrule3->{categorycode},
317 $sampleissuingrule3->{itemtype},
318 $sampleissuingrule3->{maxissueqty},
319 $sampleissuingrule3->{maxonsiteissueqty},
320 $sampleissuingrule3->{renewalsallowed},
321 $sampleissuingrule3->{renewalperiod},
322 $sampleissuingrule3->{norenewalbefore},
323 $sampleissuingrule3->{auto_renew},
324 $sampleissuingrule3->{reservesallowed},
325 $sampleissuingrule3->{issuelength},
326 $sampleissuingrule3->{lengthunit},
327 $sampleissuingrule3->{hardduedate},
328 $sampleissuingrule3->{hardduedatecompare},
329 $sampleissuingrule3->{fine},
330 $sampleissuingrule3->{finedays},
331 $sampleissuingrule3->{firstremind},
332 $sampleissuingrule3->{chargeperiod},
333 $sampleissuingrule3->{chargeperiod_charge_at},
334 $sampleissuingrule3->{rentaldiscount},
335 $sampleissuingrule3->{overduefinescap},
336 $sampleissuingrule3->{accountsent},
337 $sampleissuingrule3->{reservecharge},
338 $sampleissuingrule3->{chargename},
339 $sampleissuingrule3->{restrictedtype},
340 $sampleissuingrule3->{maxsuspensiondays},
341 $sampleissuingrule3->{onshelfholds},
342 $sampleissuingrule3->{opacitemholds},
343 $sampleissuingrule3->{cap_fine_to_replacement_price},
344 $sampleissuingrule3->{article_requests},
348 Koha::IssuingRules->find({ categorycode => $samplecat->{categorycode}, itemtype => 'Book', branchcode => $samplebranch1->{branchcode} })->unblessed,
350 "GetIssuingCharge returns issuingrule1's informations"
355 C4::Circulation::GetLoanLength(
356 $samplecat->{categorycode},
357 'BOOK', $samplebranch1->{branchcode}
359 { issuelength => 5, lengthunit => 'days', renewalperiod => 5 },
364 C4::Circulation::GetLoanLength(),
366 "Without parameters, GetLoanLength returns hardcoded values"
369 C4::Circulation::GetLoanLength( -1, -1 ),
371 "With wrong parameters, GetLoanLength returns hardcoded values"
374 C4::Circulation::GetLoanLength( $samplecat->{categorycode} ),
376 "With only one parameter, GetLoanLength returns hardcoded values"
377 ); #NOTE : is that really what is expected?
379 C4::Circulation::GetLoanLength( $samplecat->{categorycode}, 'BOOK' ),
381 "With only two parameters, GetLoanLength returns hardcoded values"
382 ); #NOTE : is that really what is expected?
384 C4::Circulation::GetLoanLength( $samplecat->{categorycode}, 'BOOK', $samplebranch1->{branchcode} ),
388 lengthunit => 'days',
390 "With the correct number of parameters, GetLoanLength returns the expected values"
394 my @hardduedate = C4::Circulation::GetHardDueDate( $samplecat->{categorycode},
395 'BOOK', $samplebranch1->{branchcode} );
399 dt_from_string( $sampleissuingrule1->{hardduedate}, 'iso' ),
400 $sampleissuingrule1->{hardduedatecompare}
402 "GetHardDueDate returns the duedate and the duedatecompare"