Bugzilla – Attachment 25981 Details for
Bug 7677
Subscriptions: Ability to define default itemtype and automatically change itemtype of older issues on receive of next issue
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
BZ7677: New areas in subscriptions and new functions when receiving.
BZ7677-New-areas-in-subscriptions-and-new-function.patch (text/plain), 17.67 KB, created by
Jonathan Druart
on 2014-03-10 11:00:17 UTC
(
hide
)
Description:
BZ7677: New areas in subscriptions and new functions when receiving.
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2014-03-10 11:00:17 UTC
Size:
17.67 KB
patch
obsolete
>From 8559810f4668514abbf4ad5baabf1c8a488890f4 Mon Sep 17 00:00:00 2001 >From: Matthias Meusburger <matthias.meusburger@biblibre.com> >Date: Thu, 9 Jan 2014 17:06:14 +0100 >Subject: [PATCH] BZ7677: New areas in subscriptions and new functions when > receiving. > >When enabling the makePreviousSerialAvailable syspref, the previously > received serial's itemtype is set as defined in the subscription. > (Please note that the item-level_itypes syspref must be set to specific item.) > It is also made available. >--- > C4/Serials.pm | 53 +++++++++++++++++--- > installer/data/mysql/kohastructure.sql | 2 + > installer/data/mysql/sysprefs.sql | 1 + > installer/data/mysql/updatedatabase.pl | 19 +++++++ > .../prog/en/modules/admin/preferences/serials.pref | 6 +++ > .../prog/en/modules/serials/serials-edit.tt | 1 - > .../prog/en/modules/serials/subscription-add.tt | 28 +++++++++++ > serials/serials-edit.pl | 24 +++++++++ > serials/subscription-add.pl | 22 +++++++- > 9 files changed, 147 insertions(+), 9 deletions(-) > >diff --git a/C4/Serials.pm b/C4/Serials.pm >index 2fb639b..f621fe5 100644 >--- a/C4/Serials.pm >+++ b/C4/Serials.pm >@@ -50,6 +50,7 @@ BEGIN { > &ReNewSubscription &GetLateIssues &GetLateOrMissingIssues > &GetSerialInformation &AddItem2Serial > &PrepareSerialsData &GetNextExpected &ModNextExpected >+ &GetPreviousSerialid > > &UpdateClaimdateIssues > &GetSuppliersWithLateIssues &getsupplierbyserialid >@@ -897,6 +898,39 @@ sub GetLatestSerials { > return \@serials; > } > >+=head2 GetPreviousSerialid >+ >+$serialid = GetPreviousSerialid($subscriptionid, $nth) >+get the $nth's previous serial for the given subscriptionid >+return : >+the serialid >+ >+=cut >+ >+sub GetPreviousSerialid { >+ my ( $subscriptionid, $nth ) = @_; >+ $nth ||= 1; >+ my $dbh = C4::Context->dbh; >+ my $return = undef; >+ >+ # Status 2: Arrived >+ my $strsth = "SELECT serialid >+ FROM serial >+ WHERE subscriptionid = ? >+ AND status = 2 >+ ORDER BY serialid DESC LIMIT $nth,1 >+ "; >+ my $sth = $dbh->prepare($strsth); >+ $sth->execute($subscriptionid); >+ my @serials; >+ my $line = $sth->fetchrow_hashref; >+ $return = $line->{'serialid'} if ($line); >+ >+ return $return; >+} >+ >+ >+ > =head2 GetDistributedTo > > $distributedto=GetDistributedTo($subscriptionid) >@@ -1420,7 +1454,8 @@ sub ModSubscription { > $lastvalue2, $innerloop2, $lastvalue3, $innerloop3, $status, > $biblionumber, $callnumber, $notes, $letter, $manualhistory, > $internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, >- $graceperiod, $location, $enddate, $subscriptionid, $skip_serialseq >+ $graceperiod, $location, $enddate, $subscriptionid, $skip_serialseq, >+ $itemtype, $previousitemtype > ) = @_; > > my $dbh = C4::Context->dbh; >@@ -1433,7 +1468,7 @@ sub ModSubscription { > callnumber=?, notes=?, letter=?, manualhistory=?, > internalnotes=?, serialsadditems=?, staffdisplaycount=?, > opacdisplaycount=?, graceperiod=?, location = ?, enddate=?, >- skip_serialseq=? >+ skip_serialseq=?, itemtype=?, previousitemtype=? > WHERE subscriptionid = ?"; > > my $sth = $dbh->prepare($query); >@@ -1447,6 +1482,7 @@ sub ModSubscription { > $letter, ($manualhistory ? $manualhistory : 0), > $internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, > $graceperiod, $location, $enddate, $skip_serialseq, >+ $itemtype, $previousitemtype, > $subscriptionid > ); > my $rows = $sth->rows; >@@ -1462,7 +1498,8 @@ $subscriptionid = &NewSubscription($auser,branchcode,$aqbooksellerid,$cost,$aqbu > $lastvalue1,$innerloop1,$lastvalue2,$innerloop2,$lastvalue3,$innerloop3, > $status, $notes, $letter, $firstacquidate, $irregularity, $numberpattern, > $locale, $callnumber, $manualhistory, $internalnotes, $serialsadditems, >- $staffdisplaycount, $opacdisplaycount, $graceperiod, $location, $enddate, $skip_serialseq); >+ $staffdisplaycount, $opacdisplaycount, $graceperiod, $location, $enddate, >+ $skip_serialseq, $itemtype, $previousitemtype); > > Create a new subscription with value given on input args. > >@@ -1479,7 +1516,7 @@ sub NewSubscription { > $innerloop3, $status, $notes, $letter, $firstacquidate, $irregularity, > $numberpattern, $locale, $callnumber, $manualhistory, $internalnotes, > $serialsadditems, $staffdisplaycount, $opacdisplaycount, $graceperiod, >- $location, $enddate, $skip_serialseq >+ $location, $enddate, $skip_serialseq, $itemtype, $previousitemtype > ) = @_; > my $dbh = C4::Context->dbh; > >@@ -1492,8 +1529,9 @@ sub NewSubscription { > lastvalue3, innerloop3, status, notes, letter, firstacquidate, > irregularity, numberpattern, locale, callnumber, > manualhistory, internalnotes, serialsadditems, staffdisplaycount, >- opacdisplaycount, graceperiod, location, enddate, skip_serialseq) >- VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) >+ opacdisplaycount, graceperiod, location, enddate, skip_serialseq, >+ itemtype, previousitemtype) >+ VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) > |; > my $sth = $dbh->prepare($query); > $sth->execute( >@@ -1503,7 +1541,8 @@ sub NewSubscription { > $lastvalue3, $innerloop3, $status, $notes, $letter, > $firstacquidate, $irregularity, $numberpattern, $locale, $callnumber, > $manualhistory, $internalnotes, $serialsadditems, $staffdisplaycount, >- $opacdisplaycount, $graceperiod, $location, $enddate, $skip_serialseq >+ $opacdisplaycount, $graceperiod, $location, $enddate, $skip_serialseq, >+ $itemtype, $previousitemtype > ); > > my $subscriptionid = $dbh->{'mysql_insertid'}; >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index dddd2c0..920ae17 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -2086,6 +2086,8 @@ CREATE TABLE `subscription` ( > `enddate` date default NULL, > `closed` INT(1) NOT NULL DEFAULT 0, > `reneweddate` date default NULL, >+ `itemtype` VARCHAR( 10 ) NULL, >+ `previousitemtype` VARCHAR( 10 ) NULL, > PRIMARY KEY (`subscriptionid`), > CONSTRAINT subscription_ibfk_1 FOREIGN KEY (periodicity) REFERENCES subscription_frequencies (id) ON DELETE SET NULL ON UPDATE CASCADE, > CONSTRAINT subscription_ibfk_2 FOREIGN KEY (numberpattern) REFERENCES subscription_numberpatterns (id) ON DELETE SET NULL ON UPDATE CASCADE >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index 2c45345..be5bf25 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -173,6 +173,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('LinkerOptions','','','A pipe-separated list of options for the linker.','free'), > ('LinkerRelink','1',NULL,'If ON the authority linker will relink headings that have previously been linked every time it runs.','YesNo'), > ('LocalCoverImages','0','1','Display local cover images on intranet details pages.','YesNo'), >+('makePreviousSerialAvailable','0','','make previous serial automatically available when collecting a new serial. Please note that the item-level_itypes syspref must be set to specific item.','YesNo'), > ('ManInvInNoissuesCharge','1',NULL,'MANUAL_INV charges block checkouts (added to noissuescharge).','YesNo'), > ('MARCAuthorityControlField008','|| aca||aabn | a|a d',NULL,'Define the contents of MARC21 authority control field 008 position 06-39','Textarea'), > ('MARCOrgCode','OSt','','Define MARC Organization Code for MARC21 records - http://www.loc.gov/marc/organizations/orgshome.html','free'), >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index c8e883f..21ad0b4 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -8012,6 +8012,25 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { > SetVersion($DBversion); > } > >+ >+ >+ >+ >+ >+$DBversion = "3.15.00.XXX"; >+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { >+ $dbh->do(q{ >+ ALTER TABLE `subscription` ADD `itemtype` VARCHAR( 10 ) NULL AFTER reneweddate, >+ ADD `previousitemtype` VARCHAR( 10 ) NULL AFTER itemtype >+ }); >+ $dbh->do( >+ "INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('makePreviousSerialAvailable','0','make previous serial automatically available when collecting a new serial. Please note that the item-level_itypes syspref must be set to specific item.','','YesNo');" >+ ); >+ print "Upgrade to $DBversion done (Bug 7677: Adds fields to subscription table and makePreviousSerialAvailable syspref)\n"; >+ SetVersion($DBversion); >+} >+ >+ > =head1 FUNCTIONS > > =head2 TableExists($table) >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/serials.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/serials.pref >index db727b6..b898394 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/serials.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/serials.pref >@@ -50,3 +50,9 @@ Serials: > - > - List of fields which must not be rewritten when a subscription is duplicated (Separated by pipe |) > - pref: SubscriptionDuplicateDroppedInput >+ - >+ - pref: makePreviousSerialAvailable >+ choices: >+ yes: Make >+ no: Do not make >+ - previous serial automatically available when collecting a new serial. Please note that the item-level_itypes syspref must be set to specific item. >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt >index bddffca..6e42dd9 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt >@@ -58,7 +58,6 @@ function unHideItems(index,labelindex, serialId) { > subfield_div = $(item_div).find("input[name='kohafield'][value='items.enumchron']").parent(); > // Setting text field > $(subfield_div).children("input[type='text'][name='field_value']").val($("#serialseq" + serialId).val()); >- > } > function HideItems(index,labelindex) { > subfield = document.getElementById(index); >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt >index f206802..98d7cd3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt >@@ -608,6 +608,34 @@ $(document).ready(function() { > </select> > </li> > <li> >+ <label for="itemtype">Item type:</label> >+ <select name="itemtype" id="itemtype"> >+ <option value=""></option> >+ [% FOREACH type IN typeloop %] >+ [% IF ( type.selected ) %] >+ <option value="[% type.code %]" selected="selected">[% type.value %]</option> >+ [% ELSE %] >+ <option value="[% type.code %]">[% type.value %]</option> >+ [% END %] >+ [% END %] >+ </select> >+ </li> >+ [%IF makePreviousSerialAvailable %] >+ <li> >+ <label for="previousitemtype">Previous item type:</label> >+ <select name="previousitemtype" id="previousitemtype"> >+ <option value=""></option> >+ [% FOREACH previous IN previoustypeloop %] >+ [% IF ( previous.selected ) %] >+ <option value="[% previous.code %]" selected="selected">[% previous.value %]</option> >+ [% ELSE %] >+ <option value="[% previous.code %]">[% previous.value %]</option> >+ [% END %] >+ [% END %] >+ </select> >+ </li> >+ [% END %] >+ <li> > <label for="graceperiod">Grace period:</label> > <input type="text" name="graceperiod" id="graceperiod" value="[% graceperiod %]" size="5"/> day(s) > </li> >diff --git a/serials/serials-edit.pl b/serials/serials-edit.pl >index 8fb2e60..c49adb2 100755 >--- a/serials/serials-edit.pl >+++ b/serials/serials-edit.pl >@@ -90,6 +90,7 @@ if ( scalar(@subscriptionids) == 1 && index( $subscriptionids[0], q|,| ) > 0 ) { > } > my @errors; > my @errseq; >+my $dbh = C4::Context->dbh; > > # If user comes from subscription details > unless (@serialids) { >@@ -242,6 +243,29 @@ if ( $op and $op eq 'serialchangestatus' ) { > $notes[$i] > ); > } >+ my $makePreviousSerialAvailable = C4::Context->preference('makePreviousSerialAvailable'); >+ if ($makePreviousSerialAvailable && $serialids[$i] ne "NEW") { >+ # We already have created the new expected serial at this point, so we get the second previous serial >+ my $previous = GetPreviousSerialid($subscriptionids[$i]); >+ if ($previous) { >+ >+ # Getting the itemnumber matching the serialid >+ my $query = "SELECT itemnumber FROM serialitems WHERE serialid=?"; >+ my $sth = $dbh->prepare($query); >+ $sth->execute($previous); >+ my @row = $sth->fetchrow_array; >+ if ($row[0]) { >+ my $itemnumber = $row[0]; >+ >+ # Getting the itemtype to set from the database >+ my $subscriptioninfos = GetSubscription($subscriptionids[$i]); >+ >+ # Changing the status to "available" and the itemtype according to the previousitemtype db field >+ ModItem({notforloan => 0, itype => $subscriptioninfos->{'previousitemtype'} }, undef, $itemnumber); >+ } >+ } >+ } >+ > } > my @moditems = $query->param('moditem'); > if ( scalar(@moditems) ) { >diff --git a/serials/subscription-add.pl b/serials/subscription-add.pl >index f609102..8d5256d 100755 >--- a/serials/subscription-add.pl >+++ b/serials/subscription-add.pl >@@ -150,7 +150,23 @@ my $locations_loop = GetAuthorisedValues("LOC",$subs->{'location'}); > $template->param(branchloop => $branchloop, > locations_loop=>$locations_loop, > ); >+ >+my $typeloop = GetItemTypes(); >+ >+my @typearg = >+ map { { code => $_, value => $typeloop->{$_}{'description'}, selected => ( ( $subs->{itemtype} and $_ eq $subs->{itemtype} ) ? "selected=\"selected\"" : "" ), } } sort keys %{$typeloop}; >+my @previoustypearg = >+ map { { code => $_, value => $typeloop->{$_}{'description'}, selected => ( ( $subs->{previousitemtype} and $_ eq $subs->{previousitemtype} ) ? "selected=\"selected\"" : "" ), } } sort keys %{$typeloop}; >+ >+$template->param( >+ branchloop => $branchloop, >+ typeloop => \@typearg, >+ previoustypeloop => \@previoustypearg, >+ locations_loop=>$locations_loop, >+); > # prepare template variables common to all $op conditions: >+$template->param('makePreviousSerialAvailable' => 1) if (C4::Context->preference('makePreviousSerialAvailable')); >+ > if ($op!~/^mod/) { > letter_loop(q{}, $template); > } >@@ -313,6 +329,8 @@ sub redirect_add_subscription { > my $staffdisplaycount = $query->param('staffdisplaycount'); > my $opacdisplaycount = $query->param('opacdisplaycount'); > my $location = $query->param('location'); >+ my $itemtype = $query->param('itemtype'); >+ my $previousitemtype = $query->param('previousitemtype'); > my $skip_serialseq = $query->param('skip_serialseq'); > my $startdate = format_date_in_iso( $query->param('startdate') ); > my $enddate = format_date_in_iso( $query->param('enddate') ); >@@ -381,6 +399,8 @@ sub redirect_mod_subscription { > my $opacdisplaycount = $query->param('opacdisplaycount'); > my $graceperiod = $query->param('graceperiod') || 0; > my $location = $query->param('location'); >+ my $itemtype = $query->param('itemtype'); >+ my $previousitemtype = $query->param('previousitemtype'); > my $skip_serialseq = $query->param('skip_serialseq'); > > # Guess end date >@@ -408,7 +428,7 @@ sub redirect_mod_subscription { > $status, $biblionumber, $callnumber, $notes, $letter, > $manualhistory, $internalnotes, $serialsadditems, $staffdisplaycount, > $opacdisplaycount, $graceperiod, $location, $enddate, $subscriptionid, >- $skip_serialseq >+ $skip_serialseq, $itemtype, $previousitemtype > ); > > print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); >-- >1.7.10.4
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 7677
:
16339
|
16425
|
16456
|
20537
|
20538
|
24099
|
24635
|
25980
|
25981
|
25983
|
27774
|
28950
|
28951
|
28952
|
28953
|
29570
|
29571
|
29572
|
34220
|
34221
|
34222
|
34223
|
34665
|
36389
|
36446
|
36448
|
36449
|
36450
|
36451
|
36452
|
36453
|
36679
|
36680
|
36681
|
36682
|
36683
|
42923
|
42924
|
45938
|
45939
|
45940
|
45941
|
45942
|
45943
|
46216
|
47475
|
52010
|
54876
|
55000
|
55323
|
55466
|
55467
|
55468
|
55469
|
55470
|
55471
|
55472
|
55473
|
55474
|
55475