@@ -, +, @@
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; }