]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/support-scripts/test-scripts/indb_circ.pl
some early test code
[Evergreen.git] / Open-ILS / src / support-scripts / test-scripts / indb_circ.pl
1 #!/usr/bin/perl
2 require '../oils_header.pl';
3 use vars qw/$authtoken/;
4 use strict; use warnings;
5 use Time::HiRes qw/time/;
6 use OpenILS::Utils::CStoreEditor qw/:funcs/;
7 use Data::Dumper;
8 use Getopt::Long;
9
10 # ---------------------------------------------------------------
11 # Initial in-db-circ test code
12 # This script takes an org, user, and copy ID and prints out the
13 # circulation rules that would apply
14 # ---------------------------------------------------------------
15
16 my ($config, $org_id, $user_id, $copy_id, $copy_barcode) = 
17     ('/openils/conf/opensrf_core.xml', 326, 3, 301313, undef);
18
19 GetOptions(
20     'org=o' => \$org_id,
21     'user=i' => \$user_id,
22     'copy=i' => \$copy_id,
23     'barcode=s' => \$copy_barcode,
24 );
25
26 osrf_connect($config);
27
28 my $CIRC_TEST = {
29     select => {
30         aou => [{
31             transform => 'action.item_user_circ_test',
32             column => 'id',
33             params => [$copy_id, $user_id],
34             result_field => 'matchpoint',
35         }]
36     },
37     from => 'aou',
38     where => {id => $org_id}
39 };
40
41 my $e = new_editor();
42
43 my $mp_id = $e->json_query($CIRC_TEST)->[0]->{id};
44 my $mp = $e->retrieve_config_circ_matrix_ruleset([
45     $mp_id,
46     {   flesh => 1,
47         flesh_fields => {
48             'ccmrs' => ['duration_rule', 'recurring_fine_rule', 'max_fine_rule']
49         }
50     }
51 ]);
52
53 my $cp = $e->retrieve_asset_copy($copy_id);
54 my ($dur, $recf);
55
56 # get the actual duration
57 if($cp->loan_duration == 1) {
58     $dur = $mp->duration_rule->shrt;
59 } elsif($cp->loan_duration == 2) {
60     $dur = $mp->duration_rule->normal;
61 } else {
62     $dur = $mp->duration_rule->extended;
63 }
64
65 # get the recurring fine level
66 if($cp->fine_level == 1) {
67     $recf = $mp->recurring_fine_rule->low;
68 } elsif($cp->fine_level == 2) {
69     $recf = $mp->recurring_fine_rule->normal;
70 } else {
71     $recf = $mp->recurring_fine_rule->high;
72 }
73
74
75 print "Duration [".$mp->duration_rule->name."] = $dur\n";
76 print "Recurring fines [".$mp->recurring_fine_rule->name."; interval='".
77     $mp->recurring_fine_rule->recurance_interval."'] = \$$recf\n";
78 print "Max fine [".$mp->max_fine_rule->name."] = \$".$mp->max_fine_rule->amount."\n";
79
80