]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/support-scripts/fine_generator.pl
Add 830 as a controllable bibliographic field in authority linking script
[working/Evergreen.git] / Open-ILS / src / support-scripts / fine_generator.pl
1 #!/usr/bin/perl
2 # ---------------------------------------------------------------------
3 # Fine generator with default grace period param.
4 # ./object_dumper.pl <bootstrap_config> <lockfile> <grace (default 0)>
5 # ---------------------------------------------------------------------
6
7 use strict; 
8 use warnings;
9 use OpenSRF::Utils::JSON;
10 use OpenSRF::System;
11 use OpenSRF::Utils::SettingsClient;
12 use OpenSRF::MultiSession;
13
14 my $config = shift || die "bootstrap config required\n";
15 my $lockfile = shift || "/tmp/generate_fines-LOCK";
16 my $grace = shift;
17
18 $grace = '' if (!defined($grace) or $grace == 0);
19  
20 if (-e $lockfile) {
21         open(F,$lockfile);
22         my $pid = <F>;
23         close F;
24
25         open(F,'/bin/ps axo pid|');
26         while ( my $p = <F>) {
27                 chomp($p);
28                 if ($p =~ s/\s*(\d+)$/$1/o && $p == $pid) {
29                         die "I seem to be running already at pid $pid.  If not, try again\n";
30                 }
31         }
32         close F;
33 }
34
35 open(F, ">$lockfile");
36 print F $$;
37 close F;
38
39 OpenSRF::System->bootstrap_client( config_file => $config );
40 my $settings = OpenSRF::Utils::SettingsClient->new;
41 my $parallel = $settings->config_value( fine_generator => 'parallel' ) || 1; 
42
43 if ($parallel == 1) {
44
45     my $r = OpenSRF::AppSession
46             ->create( 'open-ils.storage' )
47             ->request( 'open-ils.storage.action.circulation.overdue.generate_fines' => $grace );
48
49     while (!$r->complete) { $r->recv };
50
51 } else {
52
53     my $multi_generator = OpenSRF::MultiSession->new(
54         app => 'open-ils.storage', 
55         cap => $parallel, 
56         api_level => 1,
57     );
58
59     my $storage = OpenSRF::AppSession->create("open-ils.storage");
60     my $r = $storage->request('open-ils.storage.action.circulation.overdue.id_list', $grace);
61     while (my $resp = $r->recv) {
62         my $circ_id = $resp->content;
63         $multi_generator->request( 'open-ils.storage.action.circulation.overdue.generate_fines', $grace, $circ_id );
64     }
65     $storage->disconnect();
66     $multi_generator->session_wait(1);
67     $multi_generator->disconnect;
68
69 }
70
71 unlink $lockfile;