itemtype is defined here as varchar(4). Should be varchar(10). -r-
On Wed, Mar 4, 2009 at 3:15 PM, Galen Charlton <[email protected]> wrote: > From: koha <k...@false.(none)> > > [Note inserted by RM: this patch is by Kyle Hall] > > Signed-off-by: Galen Charlton <[email protected]> > --- > C4/Circulation.pm | 33 ++++++++++------ > admin/branch_transfer_limits.pl | 41 > +++++++++++++------- > circ/branchtransfers.pl | 13 +++++- > installer/data/mysql/en/mandatory/sysprefs.sql | 1 + > .../1-Obligatoire/unimarc_standard_systemprefs.sql | 2 +- > installer/data/mysql/kohastructure.sql | 3 +- > installer/data/mysql/updatedatabase.pl | 14 +++++++ > .../en/modules/admin/branch_transfer_limits.tmpl | 10 ++-- > .../prog/en/modules/circ/branchtransfers.tmpl | 2 +- > 9 files changed, 82 insertions(+), 37 deletions(-) > > diff --git a/C4/Circulation.pm b/C4/Circulation.pm > index e4019a4..10460ee 100644 > --- a/C4/Circulation.pm > +++ b/C4/Circulation.pm > @@ -279,13 +279,13 @@ sub transferbook { > > # if using Branch Transfer Limits > if ( C4::Context->preference("UseBranchTransferLimits") == 1 ) { > - if ( C4::Context->preference("item-level_itypes") ) { > + if ( C4::Context->preference("item-level_itypes") && > C4::Context->preference("BranchTransferLimitsType") eq 'itemtype' ) { > if ( ! IsBranchTransferAllowed( $tbr, $fbr, $biblio->{'itype'} ) > ) { > $messages->{'NotAllowed'} = $tbr . "::" . $biblio->{'itype'}; > $dotransfer = 0; > } > - } elsif ( ! IsBranchTransferAllowed( $tbr, $fbr, > $biblio->{'itemtype'} ) ) { > - $messages->{'NotAllowed'} = $tbr . "::" . $biblio->{'itemtype'}; > + } elsif ( ! IsBranchTransferAllowed( $tbr, $fbr, $biblio->{ > C4::Context->preference("BranchTransferLimitsType") } ) ) { > + $messages->{'NotAllowed'} = $tbr . "::" . $biblio->{ > C4::Context->preference("BranchTransferLimitsType") }; > $dotransfer = 0; > } > } > @@ -1547,7 +1547,7 @@ sub AddReturn { > > ModItemTransfer($iteminformation->{'itemnumber'}, > C4::Context->userenv->{'branch'}, $iteminformation->{'homebranch'}); > $messages->{'WasTransfered'} = 1; > } elsif ( > C4::Context->preference("UseBranchTransferLimits") == 1 > - && ! IsTransferAllowed( $branch, > $iteminformation->{'homebranch'}, $iteminformation->{'itemtype'} ) > + && ! IsTransferAllowed( $branch, > $iteminformation->{'homebranch'}, $iteminformation->{ > C4::Context->preference("BranchTransferLimitsType") } ) > ) { > > ModItemTransfer($iteminformation->{'itemnumber'}, > C4::Context->userenv->{'branch'}, $iteminformation->{'homebranch'}); > $messages->{'WasTransfered'} = 1; > @@ -2630,19 +2630,22 @@ return $exist; > > =head2 IsBranchTransferAllowed > > -$allowed = IsBranchTransferAllowed( $toBranch, $fromBranch, $itemtype ); > +$allowed = IsBranchTransferAllowed( $toBranch, $fromBranch, $code ); > + > +Code is either an itemtype or collection doe depending on the pref > BranchTransferLimitsType > > =cut > > sub IsBranchTransferAllowed { > - my ( $toBranch, $fromBranch, $itemtype ) = @_; > - > + my ( $toBranch, $fromBranch, $code ) = @_; > + > if ( $toBranch eq $fromBranch ) { return 1; } ## Short circuit for > speed. > > + my $limitType = C4::Context->preference("BranchTransferLimitsType"); > my $dbh = C4::Context->dbh; > > - my $sth = $dbh->prepare('SELECT * FROM branch_transfer_limits WHERE > toBranch = ? AND fromBranch = ? AND itemtype = ?'); > - $sth->execute( $toBranch, $fromBranch, $itemtype ); > + my $sth = $dbh->prepare("SELECT * FROM branch_transfer_limits WHERE > toBranch = ? AND fromBranch = ? AND $limitType = ?"); > + $sth->execute( $toBranch, $fromBranch, $code ); > my $limit = $sth->fetchrow_hashref(); > > ## If a row is found, then that combination is not allowed, if no > matching row is found, then the combination *is allowed* > @@ -2655,17 +2658,21 @@ sub IsBranchTransferAllowed { > > =head2 CreateBranchTransferLimit > > -CreateBranchTransferLimit( $toBranch, $fromBranch, $itemtype ); > +CreateBranchTransferLimit( $toBranch, $fromBranch, $code ); > + > +$code is either itemtype or collection code depending on what the pref > BranchTransferLimitsType is set to. > > =cut > > sub CreateBranchTransferLimit { > - my ( $toBranch, $fromBranch, $itemtype ) = @_; > + my ( $toBranch, $fromBranch, $code ) = @_; > + > + my $limitType = C4::Context->preference("BranchTransferLimitsType"); > > my $dbh = C4::Context->dbh; > > - my $sth = $dbh->prepare("INSERT INTO branch_transfer_limits ( itemtype, > toBranch, fromBranch ) VALUES ( ?, ?, ? )"); > - $sth->execute( $itemtype, $toBranch, $fromBranch ); > + my $sth = $dbh->prepare("INSERT INTO branch_transfer_limits ( $limitType, > toBranch, fromBranch ) VALUES ( ?, ?, ? )"); > + $sth->execute( $code, $toBranch, $fromBranch ); > } > > =head2 DeleteBranchTransferLimits > diff --git a/admin/branch_transfer_limits.pl b/admin/branch_transfer_limits.pl > index c05b0f7..2cee238 100755 > --- a/admin/branch_transfer_limits.pl > +++ b/admin/branch_transfer_limits.pl > @@ -40,13 +40,25 @@ my ($template, $loggedinuser, $cookie) > > my $dbh = C4::Context->dbh; > > -my @itemtypes; > +# Set the template language for the correct limit type > +my $limit_phrase = 'Collection Code'; > +my $limitType = C4::Context->preference("BranchTransferLimitsType"); > +if ( $limitType eq 'itemtype' ) { > + $limit_phrase = 'Item Type'; > +} > + > +my @codes; > my @branchcodes; > > -my $sth = $dbh->prepare("SELECT itemtype FROM itemtypes"); > +my $sth; > +if ( $limitType eq 'ccode' ) { > + $sth = $dbh->prepare('SELECT authorised_value AS ccode FROM > authorised_values WHERE category = "CCODE"'); > +} elsif ( $limitType eq 'itemtype' ) { > + $sth = $dbh->prepare('SELECT itemtype FROM itemtypes'); > +} > $sth->execute(); > while ( my $row = $sth->fetchrow_hashref ) { > - push( @itemtypes, $row->{'itemtype'} ); > + push( @codes, $row->{ $limitType } ); > } > > $sth = $dbh->prepare("SELECT branchcode FROM branches"); > @@ -59,12 +71,12 @@ while ( my $row = $sth->fetchrow_hashref ) { > if ( $input->param('updateLimits') ) { > DeleteBranchTransferLimits(); > > - foreach my $itemtype ( @itemtypes ) { > + foreach my $code ( @codes ) { > foreach my $toBranch ( @branchcodes ) { > foreach my $fromBranch ( @branchcodes ) { > - my $isSet = $input->param( $itemtype . "_" . > $toBranch . "_" . $fromBranch ); > + my $isSet = $input->param( $code . "_" . > $toBranch . "_" . $fromBranch ); > if ( $isSet ) { > - CreateBranchTransferLimit( $toBranch, > $fromBranch, $itemtype ); > + CreateBranchTransferLimit( $toBranch, > $fromBranch, $code ); > } > } > } > @@ -80,23 +92,23 @@ foreach my $branchcode ( @branchcodes ) { > } > > ## Build the default data > -my @itemtypes_loop; > -foreach my $itemtype ( @itemtypes ) { > +my @codes_loop; > +foreach my $code ( @codes ) { > my @to_branch_loop; > my %row_data; > - $row_data{ itemtype } = $itemtype; > + $row_data{ code } = $code; > $row_data{ to_branch_loop } = \...@to_branch_loop; > foreach my $toBranch ( @branchcodes ) { > my @from_branch_loop; > my %row_data; > - $row_data{ itemtype } = $itemtype; > + $row_data{ code } = $code; > $row_data{ toBranch } = $toBranch; > $row_data{ from_branch_loop } = \...@from_branch_loop; > > foreach my $fromBranch ( @branchcodes ) { > my %row_data; > - my $isChecked = ! IsBranchTransferAllowed( > $toBranch, $fromBranch, $itemtype ); > - $row_data{ itemtype } = $itemtype; > + my $isChecked = ! IsBranchTransferAllowed( > $toBranch, $fromBranch, $code ); > + $row_data{ code } = $code; > $row_data{ toBranch } = $toBranch; > $row_data{ fromBranch } = $fromBranch; > $row_data{ isChecked } = $isChecked; > @@ -107,13 +119,14 @@ foreach my $itemtype ( @itemtypes ) { > push( @to_branch_loop, \%row_data ); > } > > - push( @itemtypes_loop, \%row_data ); > + push( @codes_loop, \%row_data ); > } > > > $template->param( > - itemtypes_loop => \...@itemtypes_loop, > + codes_loop => \...@codes_loop, > branchcode_loop => \...@branchcode_loop, > + limit_phrase => $limit_phrase, > ); > > output_html_with_http_headers $input, $cookie, $template->output; > diff --git a/circ/branchtransfers.pl b/circ/branchtransfers.pl > index 92b139c..8ae283d 100755 > --- a/circ/branchtransfers.pl > +++ b/circ/branchtransfers.pl > @@ -193,6 +193,14 @@ if ($found) { > > ##################### > > +# Used for branch transfer limits error messages. > +my $codeTypeDescription = 'Collection Code'; > +my $codeType = C4::Context->preference("BranchTransferLimitsType"); > +if ( $codeType eq 'itemtype' ) { > + $codeTypeDescription = 'Item Type'; > +} > + > + > my @errmsgloop; > foreach my $code ( keys %$messages ) { > my %err; > @@ -206,9 +214,10 @@ foreach my $code ( keys %$messages ) { > warn $messages->{'NotAllowed'}; > warn $branches->{ $messages->{'NotAllowed'} }->{'branchname'}; > $err{errnotallowed} = 1; > - my ( $tbr, $itemtype ) = split( /::/, $messages->{'NotAllowed'} ); > + my ( $tbr, $typecode ) = split( /::/, $messages->{'NotAllowed'} ); > $err{tbr} = $branches->{ $tbr }->{'branchname'}; > - $err{itemtype} = $itemtype; > + $err{code} = $typecode; > + $err{codeType} = $codeTypeDescription; > } > > if ( $code eq 'IsPermanent' ) { > diff --git a/installer/data/mysql/en/mandatory/sysprefs.sql > b/installer/data/mysql/en/mandatory/sysprefs.sql > index 47a0c4b..c79a727 100644 > --- a/installer/data/mysql/en/mandatory/sysprefs.sql > +++ b/installer/data/mysql/en/mandatory/sysprefs.sql > @@ -214,3 +214,4 @@ INSERT INTO systempreferences > (variable,value,explanation,options,type) VALUES(' > INSERT INTO `systempreferences` (variable,value,options,explanation,type) > VALUES ('OPACDisplayRequestPriority','0','','Show patrons the priority level > on holds in the OPAC','YesNo'); > INSERT INTO `systempreferences` ( `variable` , `value` , `options` , > `explanation` , `type` ) VALUES ( 'UseBranchTransferLimits', '0', '', 'If ON, > Koha will will use the rules defined in branch_transfer_limits to decide if > an item transfer should be allowed.', 'YesNo'); > INSERT INTO systempreferences (variable,value,explanation,options,type) > VALUES('AllowHoldPolicyOverride', '0', 'Allow staff to override hold policies > when placing holds',NULL,'YesNo'); > +INSERT INTO `systempreferences` ( `variable` , `value` , `options` , > `explanation` , `type` ) VALUES ( 'BranchTransferLimitsType', 'ccode', > 'itemtype|ccode', 'When using branch transfer limits, choose whether to limit > by itemtype or collection code.', 'Choice'); > diff --git > a/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql > b/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql > index 47da596..3469106 100644 > --- > a/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql > +++ > b/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql > @@ -216,4 +216,4 @@ INSERT INTO systempreferences > (variable,value,explanation,options,type) VALUES(' > INSERT INTO `systempreferences` (variable,value,options,explanation,type) > VALUES ('OPACDisplayRequestPriority','0','','Afficher l\'ordre des > réservation pour les adhérents á l\'opac','YesNo'); > INSERT INTO `systempreferences` ( `variable` , `value` , `options` , > `explanation` , `type` ) VALUES ( 'UseBranchTransferLimits', '0', '', 'If ON, > Koha will will use the rules defined in branch_transfer_limits to decide if > an item transfer should be allowed.', 'YesNo'); > INSERT INTO systempreferences (variable,value,explanation,options,type) > VALUES('AllowHoldPolicyOverride', '0', "Autorise le personnel á outrepasser > la politique de réservation au moment d'une réservation",NULL,'YesNo'); > - > +INSERT INTO `systempreferences` ( `variable` , `value` , `options` , > `explanation` , `type` ) VALUES ('BranchTransferLimitsType', 'ccode', > 'itemtype|ccode', 'When using branch transfer limits, choose whether to limit > by itemtype or collection code.', 'Choice'); > diff --git a/installer/data/mysql/kohastructure.sql > b/installer/data/mysql/kohastructure.sql > index 2d4b415..a7e555f 100644 > --- a/installer/data/mysql/kohastructure.sql > +++ b/installer/data/mysql/kohastructure.sql > @@ -2337,7 +2337,8 @@ CREATE TABLE branch_transfer_limits ( > limitId int(8) NOT NULL auto_increment, > toBranch varchar(4) NOT NULL, > fromBranch varchar(4) NOT NULL, > - itemtype varchar(4) NOT NULL, > + itemtype varchar(4) NULL, > + ccode varchar(10) NULL, > PRIMARY KEY (limitId) > ) ENGINE=InnoDB DEFAULT CHARSET=utf8; > > diff --git a/installer/data/mysql/updatedatabase.pl > b/installer/data/mysql/updatedatabase.pl > index 30f1887..85e5d79 100755 > --- a/installer/data/mysql/updatedatabase.pl > +++ b/installer/data/mysql/updatedatabase.pl > @@ -2221,6 +2221,20 @@ if (C4::Context->preference("Version") < > TransformToNum($DBversion)) { > SetVersion ($DBversion); > } > > +$DBversion = "3.01.00.013"; > +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { > + $dbh->do("ALTER TABLE `branch_transfer_limits` CHANGE `itemtype` > `itemtype` VARCHAR( 4 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL"); > + $dbh->do("ALTER TABLE `branch_transfer_limits` ADD `ccode` VARCHAR( 10 ) > NULL ;"); > + $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , > `options` , `explanation` , `type` ) > + VALUES ( > + 'BranchTransferLimitsType', 'ccode', 'itemtype|ccode', 'When using > branch transfer limits, choose whether to limit by itemtype or collection > code.', 'Choice' > + );"); > + > + print "Upgrade to $DBversion done ( Updated table for Branch Transfer > Limits)\n"; > + SetVersion ($DBversion); > +} > + > + > =item DropAllForeignKeys($table) > > Drop all foreign keys of the table $table > diff --git > a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branch_transfer_limits.tmpl > b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branch_transfer_limits.tmpl > index c863f83..f47e622 100644 > --- > a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branch_transfer_limits.tmpl > +++ > b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branch_transfer_limits.tmpl > @@ -62,7 +62,7 @@ > </ul></div> > > <h1 class="parameters">Library Transfer Limits</h1> > -<div class="help">Check the boxes for the items that should <em>not</em> be > transferable.</div> > +<div class="help">Check the boxes for the items that should > <strong><em>not</em></strong> be transferable.</div> > > <div class="table"> > <form name="mainform" method="post" > action="branch_transfer_limits.pl"> > @@ -77,8 +77,8 @@ > </thead> > > <tbody> > - <!-- TMPL_LOOP NAME="itemtypes_loop" --> > - <tr><th>Limits for Item Type: <!-- > TMPL_VAR NAME="itemtype" --></th></tr> > + <!-- TMPL_LOOP NAME="codes_loop" --> > + <tr><th>Limits for <!--TMPL_VAR > NAME="limit_phrase" -->: <!-- TMPL_VAR NAME="code" --></th></tr> > > <!-- TMPL_LOOP NAME="to_branch_loop" > --> > <tr> > @@ -87,11 +87,11 @@ > <td> > <!-- TMPL_IF NAME="isChecked" --> > <input > - > name="<!-- TMPL_VAR NAME="itemtype" -->_<!-- TMPL_VAR NAME="toBranch" > -->_<!-- TMPL_VAR NAME="fromBranch" -->" > + > name="<!-- TMPL_VAR NAME="code" -->_<!-- TMPL_VAR NAME="toBranch" -->_<!-- > TMPL_VAR NAME="fromBranch" -->" > > type="checkbox" value="1" checked="checked" /> > <!-- TMPL_ELSE--> > <input > - > name="<!-- TMPL_VAR NAME="itemtype" -->_<!-- TMPL_VAR NAME="toBranch" > -->_<!-- TMPL_VAR NAME="fromBranch" -->" > + > name="<!-- TMPL_VAR NAME="code" -->_<!-- TMPL_VAR NAME="toBranch" -->_<!-- > TMPL_VAR NAME="fromBranch" -->" > > type="checkbox" value="1" /> > <!-- TMPL_ELSE--> > <!-- /TMPL_IF --> > diff --git > a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/branchtransfers.tmpl > b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/branchtransfers.tmpl > index 8b2981a..1db6630 100644 > --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/branchtransfers.tmpl > +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/branchtransfers.tmpl > @@ -143,7 +143,7 @@ > <li>Please return item to home library: <!-- > TMPL_VAR Name="msg" --></li> > <!-- /TMPL_IF --> > <!-- TMPL_IF Name="errnotallowed" --> > - <li>You cannot transfer items of type <b><!-- > TMPL_VAR Name="itemtype" --></b> to <b><!-- TMPL_VAR Name="tbr" --></b></li> > + <li>You cannot transfer items of <!--TMPL_VAR > Name="codeType" --> <b><!-- TMPL_VAR Name="code" --></b> to <b><!-- TMPL_VAR > Name="tbr" --></b></li> > <!-- /TMPL_IF --> > <!-- TMPL_IF Name="errdesteqholding" --> > <li>Item is already at destination library.</li> > -- > 1.5.5.GIT > > _______________________________________________ > Koha-patches mailing list > [email protected] > http://lists.koha.org/mailman/listinfo/koha-patches > -- Ryan Higgins LibLime * Open-Source Solutions for Libraries Featuring KohaZOOM ILS 888-564-2457 x704 _______________________________________________ Koha-patches mailing list [email protected] http://lists.koha.org/mailman/listinfo/koha-patches
