1 package OpenILS::Application::Storage::Publisher::action;
2 use base qw/OpenILS::Application::Storage/;
3 use OpenSRF::Utils::Logger qw/:level/;
4 my $log = 'OpenSRF::Utils::Logger';
9 my $grace = shift || '';
11 my $c_t = action::circulation->table;
13 $grace = ' - (1 * (fine_interval))' if ($grace);
18 WHERE stop_fines IS NULL
19 AND due_date < ( CURRENT_TIMESTAMP $grace)
22 my $sth = action::circulation->db_Main->prepare_cached($sql);
25 $client->respond( $_->to_fieldmapper ) for ( map { action::circulation->construct($_) } $sth->fetchall_hash );
30 __PACKAGE__->register_method(
31 api_name => 'open-ils.storage.action.circulation.overdue',
34 method => 'grab_overdue',
37 sub next_resp_group_id {
41 # XXX This is not replication safe!!!
43 my ($id) = action::survey->db_Main->selectrow_array(<<" SQL");
44 SELECT NEXTVAL('action.survey_response_group_id_seq'::TEXT)
48 __PACKAGE__->register_method(
49 api_name => 'open-ils.storage.action.survey_response.next_group_id',
51 method => 'next_resp_group_id',
54 sub patron_circ_summary {
59 return undef unless ($id);
60 my $c_table = action::circulation->table;
61 my $b_table = money::billing->table;
63 my $select = <<" SQL";
64 SELECT COUNT(DISTINCT c.id), SUM( COALESCE(b.amount,0) )
66 LEFT OUTER JOIN $b_table b ON (c.id = b.xact)
68 AND c.xact_finish IS NULL
69 AND c.stop_fines NOT IN ('CLAIMSRETURNED','LOST')
72 return action::survey->db_Main->selectrow_arrayref($select, {}, $id);
74 __PACKAGE__->register_method(
75 api_name => 'open-ils.storage.action.circulation.patron_summary',
77 method => 'patron_circ_summary',
80 #XXX Fix stored proc calls
81 sub find_local_surveys {
86 return undef unless ($ou);
87 my $s_table = action::survey->table;
89 my $select = <<" SQL";
92 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
93 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
96 my $sth = action::survey->db_Main->prepare_cached($select);
99 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
103 __PACKAGE__->register_method(
104 api_name => 'open-ils.storage.action.survey.all',
107 method => 'find_local_surveys',
110 #XXX Fix stored proc calls
111 sub find_opac_surveys {
116 return undef unless ($ou);
117 my $s_table = action::survey->table;
119 my $select = <<" SQL";
122 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
123 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
127 my $sth = action::survey->db_Main->prepare_cached($select);
130 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
134 __PACKAGE__->register_method(
135 api_name => 'open-ils.storage.action.survey.opac',
138 method => 'find_opac_surveys',
141 sub find_optional_surveys {
146 return undef unless ($ou);
147 my $s_table = action::survey->table;
149 my $select = <<" SQL";
152 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
153 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
154 AND s.required IS FALSE;
157 my $sth = action::survey->db_Main->prepare_cached($select);
160 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
164 __PACKAGE__->register_method(
165 api_name => 'open-ils.storage.action.survey.optional',
168 method => 'find_optional_surveys',
171 sub find_required_surveys {
176 return undef unless ($ou);
177 my $s_table = action::survey->table;
179 my $select = <<" SQL";
182 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
183 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
184 AND s.required IS TRUE;
187 my $sth = action::survey->db_Main->prepare_cached($select);
190 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
194 __PACKAGE__->register_method(
195 api_name => 'open-ils.storage.action.survey.required',
198 method => 'find_required_surveys',
201 sub find_usr_summary_surveys {
206 return undef unless ($ou);
207 my $s_table = action::survey->table;
209 my $select = <<" SQL";
212 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
213 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
214 AND s.usr_summary IS TRUE;
217 my $sth = action::survey->db_Main->prepare_cached($select);
220 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
224 __PACKAGE__->register_method(
225 api_name => 'open-ils.storage.action.survey.usr_summary',
228 method => 'find_usr_summary_surveys',