Bugzilla – Attachment 11601 Details for
Bug 5338
Add serials module to guided reports
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 5338: Serials Report
0001-Bug-5338-Serials-Report.patch (text/plain), 10.37 KB, created by
Jonathan Druart
on 2012-08-14 10:36:12 UTC
(
hide
)
Description:
Bug 5338: Serials Report
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2012-08-14 10:36:12 UTC
Size:
10.37 KB
patch
obsolete
>From 5d563b3ccf3ee797346d2288b41f3b15f7e775f3 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@biblibre.com> >Date: Thu, 5 Apr 2012 15:44:32 +0200 >Subject: [PATCH 1/1] Bug 5338: Serials Report > >--- > C4/Reports/Guided.pm | 133 ++++++++++++-------- > koha-tmpl/intranet-tmpl/prog/en/columns.def | 6 + > .../en/modules/reports/guided_reports_start.tt | 2 +- > 3 files changed, 86 insertions(+), 55 deletions(-) > >diff --git a/C4/Reports/Guided.pm b/C4/Reports/Guided.pm >index fbc25d8..a98a38a 100644 >--- a/C4/Reports/Guided.pm >+++ b/C4/Reports/Guided.pm >@@ -17,8 +17,7 @@ package C4::Reports::Guided; > # with Koha; if not, write to the Free Software Foundation, Inc., > # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. > >-use strict; >-#use warnings; FIXME - Bug 2505 this module needs a lot of repair to run clean under warnings >+use Modern::Perl; > use CGI; > use Carp; > >@@ -54,6 +53,8 @@ $table_areas{'2'} = [ 'items', 'biblioitems', 'biblio' ]; # catalogue > $table_areas{'3'} = [ 'borrowers' ]; # patrons > $table_areas{'4'} = ['aqorders', 'biblio', 'items']; # acquisitions > $table_areas{'5'} = [ 'borrowers', 'accountlines' ]; # accounts >+$table_areas{'6'} = [ 'biblio', 'biblioitems', 'serial', 'serialitems', 'subscription', 'subscriptionhistory', 'subscriptionroutinglists', 'aqbooksellers' ]; # serial >+ > our %keys; > $keys{'1'} = [ > 'statistics.borrowernumber=borrowers.borrowernumber', >@@ -70,6 +71,7 @@ $keys{'4'} = [ > 'biblio.biblionumber=items.biblionumber' > ]; > $keys{'5'} = ['borrowers.borrowernumber=accountlines.borrowernumber']; >+$keys{'6'} = [ 'biblio.biblionumber=biblioitems.biblionumber', 'biblioitems.biblionumber=serial.biblionumber', 'serial.serialid=serialitems.serialid', 'serial.subscriptionid=subscription.subscriptionid', 'serial.subscriptionid=subscriptionhistory.subscriptionid', 'serial.subscriptionid=subscriptionroutinglists.subscriptionid', 'subscription.aqbooksellerid=aqbooksellers.id']; > > # have to do someting here to know if its dropdown, free text, date etc > >@@ -96,6 +98,9 @@ $criteria{'4'} = ['aqorders.datereceived|date']; > # reports on accounting > $criteria{'5'} = ['borrowers.branchcode', 'borrowers.categorycode']; > >+# reports on serial >+$criteria{'6'} = ['subscription.startdate|date', 'subscription.enddate|date', 'subscription.periodicity', 'subscription.callnumber', 'subscription.location', 'subscription.branchcode']; >+ > # Adds itemtypes to criteria, according to the syspref > if (C4::Context->preference('item-level_itypes')) { > unshift @{ $criteria{'1'} }, 'items.itype'; >@@ -155,9 +160,9 @@ sub get_report_areas { > my $dbh = C4::Context->dbh(); > > # FIXME these should be in the database >- my @reports = ( 'Circulation', 'Catalog', 'Patrons', 'Acquisitions', 'Accounts'); >+ my @reports = ( 'Circulation', 'Catalog', 'Patrons', 'Acquisitions', 'Accounts', 'Serials' ); > my @reports2; >- for ( my $i = 0 ; $i < 5 ; $i++ ) { >+ for my $i ( 0 .. $#reports ) { > my %hashrep; > $hashrep{id} = $i + 1; > $hashrep{name} = $reports[$i]; >@@ -316,59 +321,64 @@ sub get_criteria { > foreach my $localcrit (@$crit) { > my ( $value, $type ) = split( /\|/, $localcrit ); > my ( $table, $column ) = split( /\./, $value ); >- if ($type eq 'textrange') { >- my %temp; >- $temp{'name'} = $value; >- $temp{'from'} = "from_" . $value; >- $temp{'to'} = "to_" . $value; >- $temp{'textrange'} = 1; >- $temp{'description'} = $column_defs->{$value}; >- push @criteria_array, \%temp; >- } >- elsif ($type eq 'date') { >- my %temp; >- $temp{'name'} = $value; >- $temp{'date'} = 1; >- $temp{'description'} = $column_defs->{$value}; >- push @criteria_array, \%temp; >- } >- elsif ($type eq 'daterange') { >- my %temp; >- $temp{'name'} = $value; >- $temp{'from'} = "from_" . $value; >- $temp{'to'} = "to_" . $value; >- $temp{'daterange'} = 1; >- $temp{'description'} = $column_defs->{$value}; >- push @criteria_array, \%temp; >- } >- else { >- my $query = >- "SELECT distinct($column) as availablevalues FROM $table"; >- my $sth = $dbh->prepare($query); >- $sth->execute(); >- my @values; >- # push the runtime choosing option >- my $list; >- $list='branches' if $column eq 'branchcode' or $column eq 'holdingbranch' or $column eq 'homebranch'; >- $list='categorycode' if $column eq 'categorycode'; >- $list='itemtype' if $column eq 'itype'; >- $list='ccode' if $column eq 'ccode'; >- # TODO : improve to let the librarian choose the description at runtime >- push @values, { availablevalues => "<<$column".($list?"|$list":'').">>" }; >- while ( my $row = $sth->fetchrow_hashref() ) { >- push @values, $row; >- if ($row->{'availablevalues'} eq '') { $row->{'default'} = 1 }; >+ given ( $type ) { >+ when ( 'textrange' ) { >+ my %temp; >+ $temp{'name'} = $value; >+ $temp{'from'} = "from_" . $value; >+ $temp{'to'} = "to_" . $value; >+ $temp{'textrange'} = 1; >+ $temp{'description'} = $column_defs->{$value}; >+ push @criteria_array, \%temp; >+ } >+ when ( 'date' ) { >+ my %temp; >+ $temp{'name'} = $value; >+ $temp{'date'} = 1; >+ $temp{'description'} = $column_defs->{$value}; >+ push @criteria_array, \%temp; > } >- $sth->finish(); >+ when ( 'daterange' ) { >+ my %temp; >+ $temp{'name'} = $value; >+ $temp{'from'} = "from_" . $value; >+ $temp{'to'} = "to_" . $value; >+ $temp{'daterange'} = 1; >+ $temp{'description'} = $column_defs->{$value}; >+ push @criteria_array, \%temp; >+ } >+ default { >+ my $query = >+ "SELECT distinct($column) as availablevalues FROM $table"; >+ my $sth = $dbh->prepare($query); >+ $sth->execute(); >+ my @values; >+ # push the runtime choosing option >+ my $list; >+ $list='branches' if $column eq 'branchcode' or $column eq 'holdingbranch' or $column eq 'homebranch'; >+ $list='categorycode' if $column eq 'categorycode'; >+ $list='itemtype' if $column eq 'itype'; >+ $list='ccode' if $column eq 'ccode'; >+ # TODO : improve to let the librarian choose the description at runtime >+ push @values, { >+ availablevalues => "<<$column" . ( $list ? "|$list" : '' ) . ">>", >+ display_value => "<<$column" . ( $list ? "|$list" : '' ) . ">>", >+ }; >+ while ( my $row = $sth->fetchrow_hashref() ) { >+ if ($row->{'availablevalues'} eq '') { $row->{'default'} = 1 }; >+ else { $row->{display_value} = _get_display_value( $row->{'availablevalues'}, $column ); } >+ push @values, $row; >+ } >+ $sth->finish(); > >- my %temp; >- $temp{'name'} = $value; >- $temp{'description'} = $column_defs->{$value}; >- $temp{'values'} = \@values; >+ my %temp; >+ $temp{'name'} = $value; >+ $temp{'description'} = $column_defs->{$value}; >+ $temp{'values'} = \@values; > >- push @criteria_array, \%temp; >+ push @criteria_array, \%temp; >+ } > } >- > } > return ( \@criteria_array ); > } >@@ -736,7 +746,7 @@ sub get_from_dictionary { > $sth->execute(); > } > my @loop; >- my @reports = ( 'Circulation', 'Catalog', 'Patrons', 'Acquisitions', 'Accounts'); >+ my @reports = ( 'Circulation', 'Catalog', 'Patrons', 'Acquisitions', 'Accounts', 'Serial' ); > while (my $data = $sth->fetchrow_hashref()){ > $data->{'areaname'}=$reports[$data->{'area'}-1]; > push @loop,$data; >@@ -782,6 +792,21 @@ sub _get_column_defs { > close COLUMNS; > return \%columns; > } >+ >+sub _get_display_value { >+ my ( $original_value, $column ) = @_; >+ given ( $column ) { >+ when ("periodicity") { >+ my $dbh = C4::Context->dbh(); >+ my $query = "SELECT description FROM subscription_frequencies WHERE id = ?"; >+ my $sth = $dbh->prepare($query); >+ $sth->execute($original_value); >+ return $sth->fetchrow; >+ } >+ } >+ return $original_value; >+} >+ > 1; > __END__ > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/columns.def b/koha-tmpl/intranet-tmpl/prog/en/columns.def >index 726ecc6..080ca66 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/columns.def >+++ b/koha-tmpl/intranet-tmpl/prog/en/columns.def >@@ -138,3 +138,9 @@ biblioitems.place Place of publication > biblioitems.lccn LCCN > biblioitems.marcxml MARC blob > biblioitems.url URL >+subscription.startdate Start date >+subscription.enddate End Date >+subscription.periodicity Periodicity >+subscription.callnumber Call Number >+subscription.location Location >+subscription.branchcode Branch Code >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt >index 3d9a7ab..419242d 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt >@@ -371,7 +371,7 @@ canned reports and writing custom SQL reports.</p> > <td> > <select name="[% criteri.name %]_value"> > [% FOREACH value IN criteri.values %] >- <option value="[% value.availablevalues %]">[% IF ( value.default ) %]Default[% ELSE %][% value.availablevalues |html %][% END %]</option> >+ <option value="[% value.availablevalues %]">[% IF ( value.default ) %]Default[% ELSE %][% value.display_value |html %][% END %]</option> > [% END %] > </select> > </td> >-- >1.7.7.3 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 5338
:
11601
|
22908
|
23299
|
29271
|
35148
|
35149
|
35179
|
35180
|
35300
|
35301
|
36457
|
36458
|
36459
|
36621
|
36622
|
36623
|
36624
|
39302