1 package OpenILS::Application::Storage::Publisher::action;
2 use base qw/OpenILS::Application::Storage/;
3 #use OpenILS::Application::Storage::CDBI::action;
4 #use OpenSRF::Utils::Logger qw/:level/;
5 #use OpenILS::Utils::Fieldmapper;
7 #my $log = 'OpenSRF::Utils::Logger';
9 sub patron_circ_summary {
14 return undef unless ($id);
15 my $c_table = action::circulation->table;
16 my $b_table = money::billing->table;
18 my $select = <<" SQL";
19 SELECT COUNT(DISTINCT c.id), SUM( COALESCE(b.amount,0) )
21 LEFT OUTER JOIN $b_table b ON (c.id = b.xact)
23 AND c.xact_finish IS NULL
24 AND c.stop_fines NOT IN ('CLAIMSRETURNED','LOST')
27 return action::survey->db_Main->selectrow_arrayref($select, {}, $id);
29 __PACKAGE__->register_method(
30 api_name => 'open-ils.storage.action.circulation.patron_summary',
32 method => 'patron_circ_summary',
35 #XXX Fix stored proc calls
36 sub find_local_surveys {
41 return undef unless ($ou);
42 my $s_table = action::survey->table;
44 my $select = <<" SQL";
47 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
48 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
51 my $sth = action::survey->db_Main->prepare_cached($select);
54 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
58 __PACKAGE__->register_method(
59 api_name => 'open-ils.storage.action.survey.all',
62 method => 'find_local_surveys',
65 #XXX Fix stored proc calls
66 sub find_opac_surveys {
71 return undef unless ($ou);
72 my $s_table = action::survey->table;
74 my $select = <<" SQL";
77 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
78 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
82 my $sth = action::survey->db_Main->prepare_cached($select);
85 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
89 __PACKAGE__->register_method(
90 api_name => 'open-ils.storage.action.survey.opac',
93 method => 'find_opac_surveys',
96 sub find_optional_surveys {
101 return undef unless ($ou);
102 my $s_table = action::survey->table;
104 my $select = <<" SQL";
107 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
108 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
109 AND s.required IS FALSE;
112 my $sth = action::survey->db_Main->prepare_cached($select);
115 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
119 __PACKAGE__->register_method(
120 api_name => 'open-ils.storage.action.survey.optional',
123 method => 'find_optional_surveys',
126 sub find_required_surveys {
131 return undef unless ($ou);
132 my $s_table = action::survey->table;
134 my $select = <<" SQL";
137 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
138 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
139 AND s.required IS TRUE;
142 my $sth = action::survey->db_Main->prepare_cached($select);
145 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
149 __PACKAGE__->register_method(
150 api_name => 'open-ils.storage.action.survey.required',
153 method => 'find_required_surveys',
156 sub find_usr_summary_surveys {
161 return undef unless ($ou);
162 my $s_table = action::survey->table;
164 my $select = <<" SQL";
167 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
168 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
169 AND s.usr_summary IS TRUE;
172 my $sth = action::survey->db_Main->prepare_cached($select);
175 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
179 __PACKAGE__->register_method(
180 api_name => 'open-ils.storage.action.survey.usr_summary',
183 method => 'find_usr_summary_surveys',