@@ -, +, @@ ccode, dateaccesioned in serials-edit.pl - DefaultToCreatingSerialIssuesOnReceival - Disabled by - PopulateNewItemDateAccessionedOnPageLoad - Disabled by default. When --- C4/Items.pm | 58 +++++++++++++++++++++- C4/Serials.pm | 11 ++-- Koha/Schema/Result/Subscription.pm | 12 ++++- ...ultToCreatingSerialIssuesOnReceival_syspref.sql | 1 + ...ateNewItemDateAccessionedOnPageLoad_syspref.sql | 1 + ...52-add_ccode_column_to_subscriptions_table.perl | 7 +++ installer/data/mysql/kohastructure.sql | 1 + installer/data/mysql/sysprefs.sql | 2 + .../en/modules/admin/preferences/cataloguing.pref | 7 ++- .../prog/en/modules/admin/preferences/serials.pref | 6 +++ .../prog/en/modules/serials/subscription-add.tt | 27 +++++++++- .../prog/en/modules/serials/subscription-detail.tt | 12 ++--- serials/subscription-add.pl | 9 +++- 13 files changed, 134 insertions(+), 20 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_23352-add_DefaultToCreatingSerialIssuesOnReceival_syspref.sql create mode 100644 installer/data/mysql/atomicupdate/bug_23352-add_PopulateNewItemDateAccessionedOnPageLoad_syspref.sql create mode 100644 installer/data/mysql/atomicupdate/bug_23352-add_ccode_column_to_subscriptions_table.perl --- a/C4/Items.pm +++ a/C4/Items.pm @@ -63,6 +63,8 @@ use Koha::DateUtils; use MARC::Record; use C4::ClassSource; use C4::Log; +use C4::Serials; +use C4::Acquisition; use List::MoreUtils qw(any); use YAML qw(Load); use DateTime::Format::MySQL; @@ -939,6 +941,7 @@ sub GetItemsInfo { borrowers.surname, borrowers.firstname, borrowers.branchcode as bcode, + serial.serialid, serial.serialseq, serial.publisheddate, itemtypes.description, @@ -2174,7 +2177,7 @@ sub _SearchItems_build_where_fragment { my ($items, $total) = SearchItems($filter, $params); -Perform a search among items +Perform ubscriptionCurrentlyOnOrder search among items $filter is a reference to a hash which can be a filter, or a combination of filters. @@ -2353,6 +2356,20 @@ sub PrepareItemrecordDisplay { } my @loop_data; + #Get the default items.price and items.replacementprice from the aqorder that the serial has been ordered in. + my $unitprice; + my $replacementprice; + my $subscriptionid = $defaultvalues->{'subscriptionid'}; + my $lastOrder; + + #If the subscription is on order (i.e. aqorders.datereceived is NULL then call GetLastOrderNotReceviedFromSubscription() which + #retrieves the last order for the subscriptionid with a datereceived also equalling NULL + if ( subscriptionCurrentlyOnOrder($subscriptionid) ) { + $lastOrder = GetLastOrderNotReceivedFromSubscriptionid( $subscriptionid ); + } else { #Otherwise the subscription has already arrived so retrieve the last order for the subscriptionid where datereceived is not null + $lastOrder = GetLastOrderReceivedFromSubscriptionid( $subscriptionid ); + } + my $branch_limit = C4::Context->userenv ? C4::Context->userenv->{"branch"} : ""; my $query = qq{ SELECT authorised_value,lib FROM authorised_values @@ -2422,7 +2439,8 @@ sub PrepareItemrecordDisplay { $defaultvalue = $defaultvalues->{callnumber}; } } - if ( ( $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.holdingbranch' || $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.homebranch' ) + + if ( ( $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.holdingbranch' || $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.homebranch' ) && $defaultvalues && $defaultvalues->{'branchcode'} ) { if ( $itemrecord and $defaultvalues and not $itemrecord->subfield($tag,$subfield) ) { @@ -2441,6 +2459,20 @@ sub PrepareItemrecordDisplay { $defaultvalue = $defaultvalues->{location}; } } + #Set the default items.price from the aqorders.unitprice + if ( $lastOrder->{unitprice} && $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.price' ) { + $defaultvalue = $lastOrder->{unitprice}; + } + #Set the default items.replacementprice from the aqorders.replacementprice + if ( $lastOrder->{replacementprice} && $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.replacementprice' ) { + $defaultvalue = $lastOrder->{replacementprice}; + } + #Set dateaccessioned to current date automatically so the librarian doesnt have to click in the input form to load dateaccessioned + if ( C4::Context->preference('PopulateNewItemDateAccessionedOnPageLoad') && $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.dateaccessioned' ) { + my $date = DateTime->now; + $date = $date->ymd; + $defaultvalue = $date; + } if ( $tagslib->{$tag}->{$subfield}->{authorised_value} ) { my @authorised_values; my %authorised_lib; @@ -2503,6 +2535,26 @@ sub PrepareItemrecordDisplay { $defaultvalue = $default_source; + #---- collection code CCODE + } elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "CCODE") { + $authorised_values_sth->execute( + $tagslib->{$tag}->{$subfield}->{authorised_value}, + $branch_limit ? $branch_limit : () + ); + push @authorised_values, "" + unless ( $tagslib->{$tag}->{$subfield}->{mandatory} ); + while ( my ( $value, $lib ) = $authorised_values_sth->fetchrow_array ) { + push @authorised_values, $value; + $authorised_lib{$value} = $lib; + } + + # Set the default CCODE to what was set in subscription.ccode + if ($itemrecord and $defaultvalues) { + $defaultvalue = $defaultvalues->{'ccode'}; + } elsif (!$itemrecord and $defaultvalues) { + $defaultvalue = $defaultvalues->{'ccode'}; + } + #---- "true" authorised value } else { $authorised_values_sth->execute( @@ -2516,6 +2568,7 @@ sub PrepareItemrecordDisplay { $authorised_lib{$value} = $lib; } } + $subfield_data{marc_value} = { type => 'select', values => \@authorised_values, @@ -2534,6 +2587,7 @@ sub PrepareItemrecordDisplay { if ( $itemrecord and my $field = $itemrecord->field($tag) ) { $defaultvalue = $field->subfield($subfield); } + if( !$plugin->errstr ) { #TODO Move html to template; see report 12176/13397 my $tab= $plugin->noclick? '-1': ''; --- a/C4/Serials.pm +++ a/C4/Serials.pm @@ -1302,7 +1302,7 @@ sub ModSubscription { $biblionumber, $callnumber, $notes, $letter, $manualhistory, $internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, $graceperiod, $location, $enddate, $subscriptionid, $skip_serialseq, - $itemtype, $previousitemtype, $mana_id + $itemtype, $previousitemtype, $mana_id, $ccode ) = @_; my $dbh = C4::Context->dbh; @@ -1315,7 +1315,7 @@ sub ModSubscription { callnumber=?, notes=?, letter=?, manualhistory=?, internalnotes=?, serialsadditems=?, staffdisplaycount=?, opacdisplaycount=?, graceperiod=?, location = ?, enddate=?, - skip_serialseq=?, itemtype=?, previousitemtype=?, mana_id=? + skip_serialseq=?, itemtype=?, previousitemtype=?, mana_id=?, ccode=? WHERE subscriptionid = ?"; my $sth = $dbh->prepare($query); @@ -1329,7 +1329,7 @@ sub ModSubscription { $letter, ($manualhistory ? $manualhistory : 0), $internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, $graceperiod, $location, $enddate, $skip_serialseq, - $itemtype, $previousitemtype, $mana_id, + $itemtype, $previousitemtype, $mana_id, $ccode, $subscriptionid ); my $rows = $sth->rows; @@ -1346,7 +1346,7 @@ $subscriptionid = &NewSubscription($auser,branchcode,$aqbooksellerid,$cost,$aqbu $status, $notes, $letter, $firstacquidate, $irregularity, $numberpattern, $locale, $callnumber, $manualhistory, $internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, $graceperiod, $location, $enddate, - $skip_serialseq, $itemtype, $previousitemtype); + $skip_serialseq, $itemtype, $previousitemtype, $mana_id, $ccode); Create a new subscription with value given on input args. @@ -1363,7 +1363,7 @@ sub NewSubscription { $innerloop3, $status, $notes, $letter, $firstacquidate, $irregularity, $numberpattern, $locale, $callnumber, $manualhistory, $internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, $graceperiod, - $location, $enddate, $skip_serialseq, $itemtype, $previousitemtype, $mana_id + $location, $enddate, $skip_serialseq, $itemtype, $previousitemtype, $mana_id, $ccode ) = @_; my $dbh = C4::Context->dbh; @@ -1406,6 +1406,7 @@ sub NewSubscription { itemtype => $itemtype, previousitemtype => $previousitemtype, mana_id => $mana_id, + ccode => $ccode, } )->store; $subscription->discard_changes; --- a/Koha/Schema/Result/Subscription.pm +++ a/Koha/Schema/Result/Subscription.pm @@ -276,6 +276,12 @@ __PACKAGE__->table("subscription"); data_type: 'integer' is_nullable: 1 +=head2 ccode + + data_type: 'varchar' + is_nullable: 1 + size: 80 + =cut __PACKAGE__->add_columns( @@ -365,6 +371,8 @@ __PACKAGE__->add_columns( { data_type => "varchar", is_nullable => 1, size => 10 }, "mana_id", { data_type => "integer", is_nullable => 1 }, + "ccode", + { data_type => "varchar", is_nullable => 1, size => 80 }, ); =head1 PRIMARY KEY @@ -452,8 +460,8 @@ __PACKAGE__->has_many( ); -# Created by DBIx::Class::Schema::Loader v0.07046 @ 2019-01-23 12:56:39 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:dTb/JOO3KQ3NZGypFbRiEw +# Created by DBIx::Class::Schema::Loader v0.07042 @ 2019-07-21 22:34:06 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:TS3fIO7Y11bAkj73Ak8ouA __PACKAGE__->has_many( "additional_field_values", --- a/installer/data/mysql/atomicupdate/bug_23352-add_DefaultToCreatingSerialIssuesOnReceival_syspref.sql +++ a/installer/data/mysql/atomicupdate/bug_23352-add_DefaultToCreatingSerialIssuesOnReceival_syspref.sql @@ -0,0 +1, @@ +INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`) VALUES ('DefaultToCreatingSerialIssuesOnReceival', 0, NULL, "If enabled the 'Create an item record when receiving this serial' checkbox will be checked by default", "YesNo"); --- a/installer/data/mysql/atomicupdate/bug_23352-add_PopulateNewItemDateAccessionedOnPageLoad_syspref.sql +++ a/installer/data/mysql/atomicupdate/bug_23352-add_PopulateNewItemDateAccessionedOnPageLoad_syspref.sql @@ -0,0 +1, @@ +INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`) VALUES ('PopulateNewItemDateAccessionedOnPageLoad', 0, NULL, "If enabled the 952$d Date Acquired will be populate on page load rather than requiring the user to click in the input field", "YesNo"); --- a/installer/data/mysql/atomicupdate/bug_23352-add_ccode_column_to_subscriptions_table.perl +++ a/installer/data/mysql/atomicupdate/bug_23352-add_ccode_column_to_subscriptions_table.perl @@ -0,0 +1,7 @@ + +unless ( column_exists('subscription', 'ccode')) { + $dbh->do(q{ + ALTER TABLE `subscription` + ADD `ccode` varchar (80) default NULL AFTER `mana_id` + }); +} --- a/installer/data/mysql/kohastructure.sql +++ a/installer/data/mysql/kohastructure.sql @@ -2029,6 +2029,7 @@ CREATE TABLE `subscription` ( -- information related to the subscription `itemtype` VARCHAR( 10 ) NULL, `previousitemtype` VARCHAR( 10 ) NULL, `mana_id` int(11) NULL DEFAULT NULL, + `ccode` varchar(80) DEFAULT NULL, -- authorized value for the collection code associated with this item (MARC21 952$8) PRIMARY KEY (`subscriptionid`), KEY `by_biblionumber` (`biblionumber`), CONSTRAINT subscription_ibfk_1 FOREIGN KEY (periodicity) REFERENCES subscription_frequencies (id) ON DELETE SET NULL ON UPDATE CASCADE, --- a/installer/data/mysql/sysprefs.sql +++ a/installer/data/mysql/sysprefs.sql @@ -143,6 +143,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('DefaultPatronSearchFields', 'surname,firstname,othernames,cardnumber,userid',NULL,'Comma separated list defining the default fields to be used during a patron search','free'), ('defaultSortField','relevance','relevance|popularity|call_number|pubdate|acqdate|title|author','Specify the default field used for sorting','Choice'), ('defaultSortOrder','dsc','asc|dsc|az|za','Specify the default sort order','Choice'), +('DefaultToCreatingSerialIssuesOnReceival', 0, NULL, "If enabled the 'Create an item record when receiving this serial' checkbox will be checked by default", "YesNo"), ('DefaultToLoggedInLibraryCircRules', '0', NULL , 'If enabled, circ rules editor will default to the logged in library''s rules, rather than the ''all libraries'' rules.', 'YesNo'), ('DefaultToLoggedInLibraryNoticesSlips', '0', NULL , 'If enabled,slips and notices editor will default to the logged in library''s rules, rather than the ''all libraries'' rules.', 'YesNo'), ('DefaultToLoggedInLibraryOverdueTriggers', '0', NULL , 'If enabled, overdue status triggers editor will default to the logged in library''s rules, rather than the ''default'' rules.', 'YesNo'), @@ -479,6 +480,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('PayPalSandboxMode', '1', NULL , 'If enabled, the system will use PayPal''s sandbox server for testing, rather than the production server.', 'YesNo'), ('PayPalSignature', '', NULL , 'Your PayPal API signature', 'Free'), ('PayPalUser', '', NULL , 'Your PayPal API username ( email address )', 'Free'), +('PopulateNewItemDateAccessionedOnPageLoad', 0, NULL, "If enabled the 952$d Date Acquired will be populate on page load rather than requiring the user to click in the input field", "YesNo"), ('PrefillItem','0','','When a new item is added, should it be prefilled with last created item values?','YesNo'), ('PreserveSerialNotes','1','','When a new "Expected" issue is generated, should it be prefilled with last created issue notes?','YesNo'), ('previousIssuesDefaultSortOrder','asc','asc|desc','Specify the sort order of Previous Issues on the circulation page','Choice'), --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref @@ -27,6 +27,12 @@ Cataloging: - the advanced cataloging editor. - "
NOTE:" - Currently does not include support for UNIMARC or NORMARC fixed fields. + - + - pref: PopulateNewItemDateAccessionedOnPageLoad + choices: + yes: "Enable" + no: "Disable" + - If enabled the 952$d Date Acquired will be populate on page load rather than requiring the user to click in the input field Spine Labels: - - When using the quick spine label printer, @@ -46,7 +52,6 @@ Cataloging: yes: Display no: "Don't display" - buttons on the bib details page to print item spine labels. - - Record Structure: - - Fill in the default language for field 008 Range 35-37 of MARC21 records (e.g. eng, nor, ger, see MARC Code List for Languages) --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/serials.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/serials.pref @@ -62,3 +62,9 @@ Serials: yes: Do no: Do not - prefill the notes from the last 'Arrived' serial when generating the next 'Expected' issue. + - + - pref: DefaultToCreatingSerialIssuesOnReceival + choices: + yes: Enable + no: Disable + - If enabled the 'Create an item record when receiving this serial' checkbox in serials/subscription-add.pl will be ticked by default --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt @@ -78,8 +78,13 @@ fieldset.rows table { clear: none; margin: 0; }

[% ELSE %] -

-

+ [% IF Koha.Preference('DefaultToCreatingSerialIssuesOnReceival') %] +

+

+ [% ELSE %] +

+

+ [% END %] [% END %]
  • @@ -319,6 +324,24 @@ fieldset.rows table { clear: none; margin: 0; } Required
  • +