2 # ---------------------------------------------------------------------
4 # ./fine_generator.pl <bootstrap_config> <lockfile>
5 # ---------------------------------------------------------------------
9 use OpenSRF::Utils::JSON;
11 use OpenSRF::Utils::SettingsClient;
12 use OpenSRF::MultiSession;
14 my $config = shift || die "bootstrap config required\n";
15 my $lockfile = shift || "/tmp/generate_fines-LOCK";
18 if (defined($grace)) {
19 die "Grace period is now defined in the database. It should not be passed to the fine generator.";
27 open(F,'/bin/ps axo pid|');
28 while ( my $p = <F>) {
30 if ($p =~ s/\s*(\d+)$/$1/o && $p == $pid) {
31 die "I seem to be running already at pid $pid. If not, try again\n";
37 open(F, ">$lockfile");
41 OpenSRF::System->bootstrap_client( config_file => $config );
42 my $settings = OpenSRF::Utils::SettingsClient->new;
43 my $parallel = $settings->config_value( fine_generator => 'parallel' ) || 1;
47 my $r = OpenSRF::AppSession
48 ->create( 'open-ils.storage' )
49 ->request( 'open-ils.storage.action.circulation.overdue.generate_fines' );
51 while (!$r->complete) { $r->recv };
55 my $multi_generator = OpenSRF::MultiSession->new(
56 app => 'open-ils.storage',
61 my $storage = OpenSRF::AppSession->create("open-ils.storage");
62 my $r = $storage->request('open-ils.storage.action.circulation.overdue.id_list');
63 while (my $resp = $r->recv) {
64 my $circ_id = $resp->content;
65 $multi_generator->request( 'open-ils.storage.action.circulation.overdue.generate_fines', $circ_id );
67 $storage->disconnect();
68 $multi_generator->session_wait(1);
69 $multi_generator->disconnect;