@@ -, +, @@ ccode, dateaccesioned in serials-edit.pl - DefaultToCreatingSerialIssuesOnReceival - Disabled by - PopulateNewItemDateAccessionedOnPageLoad - Disabled by default. When --- C4/Items.pm | 58 +++++++++++++++++++++- C4/Serials.pm | 8 +-- 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 | 11 ++-- serials/subscription-add.pl | 9 +++- 13 files changed, 133 insertions(+), 17 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 @@ -56,6 +56,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; @@ -665,6 +667,7 @@ sub GetItemsInfo { borrowers.surname, borrowers.firstname, borrowers.branchcode as bcode, + serial.serialid, serial.serialseq, serial.publisheddate, itemtypes.description, @@ -1363,7 +1366,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. @@ -1542,6 +1545,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 @@ -1613,7 +1630,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) ) { @@ -1632,6 +1650,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; @@ -1694,6 +1726,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( @@ -1707,6 +1759,7 @@ sub PrepareItemrecordDisplay { $authorised_lib{$value} = $lib; } } + $subfield_data{marc_value} = { type => 'select', values => \@authorised_values, @@ -1725,6 +1778,7 @@ sub PrepareItemrecordDisplay { if ( $itemrecord and my $field = $itemrecord->field($tag) ) { $defaultvalue = $field->subfield($subfield) || q{}; } + 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 $subscription = Koha::Subscriptions->find($subscriptionid); @@ -1345,6 +1345,7 @@ sub ModSubscription { itemtype => $itemtype, previousitemtype => $previousitemtype, mana_id => $mana_id, + ccode => $ccode, } )->store; @@ -1362,7 +1363,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. @@ -1379,7 +1380,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; @@ -1422,6 +1423,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 @@ -1998,6 +1998,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 @@ -153,6 +153,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 using the "standard" option. If empty Koha will default to "surname,firstname,othernames,cardnumber,userid". Additional fields added to this preference will be added as search options in the dropdown menu on the patron search page.','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'), @@ -499,6 +500,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
  • +