@@ -, +, @@ relatives to view current checkouts for borrowers A and B checkouts" tab. In this tab you should see the checkouts for borrower B the current checkouts for both borrower A and borrower B --- Koha/Schema/Result/Borrower.pm | 114 ++++++++----------------------- Koha/Schema/Result/Issue.pm | 80 ++++++++-------------- Koha/Schema/Result/OldIssue.pm | 73 +++++++-------------- installer/data/mysql/kohastructure.sql | 6 ++ installer/data/mysql/updatedatabase.pl | 20 ++++++ 5 files changed, 109 insertions(+), 184 deletions(-) --- a/Koha/Schema/Result/Borrower.pm +++ a/Koha/Schema/Result/Borrower.pm @@ -1,21 +1,17 @@ -use utf8; package Koha::Schema::Result::Borrower; # Created by DBIx::Class::Schema::Loader # DO NOT MODIFY THE FIRST PART OF THIS FILE -=head1 NAME - -Koha::Schema::Result::Borrower - -=cut - use strict; use warnings; use base 'DBIx::Class::Core'; -=head1 TABLE: C + +=head1 NAME + +Koha::Schema::Result::Borrower =cut @@ -191,7 +187,6 @@ __PACKAGE__->table("borrowers"); =head2 dateofbirth data_type: 'date' - datetime_undef_if_invalid: 1 is_nullable: 1 =head2 branchcode @@ -213,13 +208,11 @@ __PACKAGE__->table("borrowers"); =head2 dateenrolled data_type: 'date' - datetime_undef_if_invalid: 1 is_nullable: 1 =head2 dateexpiry data_type: 'date' - datetime_undef_if_invalid: 1 is_nullable: 1 =head2 gonenoaddress @@ -235,7 +228,6 @@ __PACKAGE__->table("borrowers"); =head2 debarred data_type: 'date' - datetime_undef_if_invalid: 1 is_nullable: 1 =head2 debarredcomment @@ -397,6 +389,12 @@ __PACKAGE__->table("borrowers"); default_value: 1 is_nullable: 0 +=head2 privacy_relative_checkouts + + data_type: 'tinyint' + default_value: 0 + is_nullable: 0 + =cut __PACKAGE__->add_columns( @@ -463,7 +461,7 @@ __PACKAGE__->add_columns( "b_phone", { data_type => "mediumtext", is_nullable => 1 }, "dateofbirth", - { data_type => "date", datetime_undef_if_invalid => 1, is_nullable => 1 }, + { data_type => "date", is_nullable => 1 }, "branchcode", { data_type => "varchar", @@ -481,15 +479,15 @@ __PACKAGE__->add_columns( size => 10, }, "dateenrolled", - { data_type => "date", datetime_undef_if_invalid => 1, is_nullable => 1 }, + { data_type => "date", is_nullable => 1 }, "dateexpiry", - { data_type => "date", datetime_undef_if_invalid => 1, is_nullable => 1 }, + { data_type => "date", is_nullable => 1 }, "gonenoaddress", { data_type => "tinyint", is_nullable => 1 }, "lost", { data_type => "tinyint", is_nullable => 1 }, "debarred", - { data_type => "date", datetime_undef_if_invalid => 1, is_nullable => 1 }, + { data_type => "date", is_nullable => 1 }, "debarredcomment", { data_type => "varchar", is_nullable => 1, size => 255 }, "contactname", @@ -546,32 +544,10 @@ __PACKAGE__->add_columns( { data_type => "varchar", is_nullable => 1, size => 50 }, "privacy", { data_type => "integer", default_value => 1, is_nullable => 0 }, + "privacy_relative_checkouts", + { data_type => "tinyint", default_value => 0, is_nullable => 0 }, ); - -=head1 PRIMARY KEY - -=over 4 - -=item * L - -=back - -=cut - __PACKAGE__->set_primary_key("borrowernumber"); - -=head1 UNIQUE CONSTRAINTS - -=head2 C - -=over 4 - -=item * L - -=back - -=cut - __PACKAGE__->add_unique_constraint("cardnumber", ["cardnumber"]); =head1 RELATIONS @@ -696,34 +672,34 @@ __PACKAGE__->has_many( { cascade_copy => 0, cascade_delete => 0 }, ); -=head2 branchcode +=head2 categorycode Type: belongs_to -Related object: L +Related object: L =cut __PACKAGE__->belongs_to( - "branchcode", - "Koha::Schema::Result::Branch", - { branchcode => "branchcode" }, - { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, + "categorycode", + "Koha::Schema::Result::Category", + { categorycode => "categorycode" }, + { on_delete => "CASCADE", on_update => "CASCADE" }, ); -=head2 categorycode +=head2 branchcode Type: belongs_to -Related object: L +Related object: L =cut __PACKAGE__->belongs_to( - "categorycode", - "Koha::Schema::Result::Category", - { categorycode => "categorycode" }, - { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, + "branchcode", + "Koha::Schema::Result::Branch", + { branchcode => "branchcode" }, + { on_delete => "CASCADE", on_update => "CASCADE" }, ); =head2 course_instructors @@ -1041,39 +1017,9 @@ __PACKAGE__->has_many( { cascade_copy => 0, cascade_delete => 0 }, ); -=head2 basketnoes - -Type: many_to_many - -Composing rels: L -> basketno - -=cut - -__PACKAGE__->many_to_many("basketnoes", "aqbasketusers", "basketno"); - -=head2 budgets - -Type: many_to_many - -Composing rels: L -> budget - -=cut - -__PACKAGE__->many_to_many("budgets", "aqbudgetborrowers", "budget"); - -=head2 courses - -Type: many_to_many - -Composing rels: L -> course - -=cut - -__PACKAGE__->many_to_many("courses", "course_instructors", "course"); - -# Created by DBIx::Class::Schema::Loader v0.07025 @ 2013-10-31 16:31:19 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:z4kW3xYX1CyrwvGdZu32nA +# Created by DBIx::Class::Schema::Loader v0.07000 @ 2013-11-07 08:15:21 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:TQTGI0fDt+xCFs+8nOarfA # You can replace this text with custom content, and it will be preserved on regeneration --- a/Koha/Schema/Result/Issue.pm +++ a/Koha/Schema/Result/Issue.pm @@ -1,21 +1,17 @@ -use utf8; package Koha::Schema::Result::Issue; # Created by DBIx::Class::Schema::Loader # DO NOT MODIFY THE FIRST PART OF THIS FILE -=head1 NAME - -Koha::Schema::Result::Issue - -=cut - use strict; use warnings; use base 'DBIx::Class::Core'; -=head1 TABLE: C + +=head1 NAME + +Koha::Schema::Result::Issue =cut @@ -23,6 +19,12 @@ __PACKAGE__->table("issues"); =head1 ACCESSORS +=head2 issue_id + + data_type: 'integer' + is_auto_increment: 1 + is_nullable: 0 + =head2 borrowernumber data_type: 'integer' @@ -38,7 +40,6 @@ __PACKAGE__->table("issues"); =head2 date_due data_type: 'datetime' - datetime_undef_if_invalid: 1 is_nullable: 1 =head2 branchcode @@ -56,13 +57,11 @@ __PACKAGE__->table("issues"); =head2 returndate data_type: 'datetime' - datetime_undef_if_invalid: 1 is_nullable: 1 =head2 lastreneweddate data_type: 'datetime' - datetime_undef_if_invalid: 1 is_nullable: 1 =head2 return @@ -79,63 +78,47 @@ __PACKAGE__->table("issues"); =head2 timestamp data_type: 'timestamp' - datetime_undef_if_invalid: 1 default_value: current_timestamp is_nullable: 0 =head2 issuedate data_type: 'datetime' - datetime_undef_if_invalid: 1 is_nullable: 1 =cut __PACKAGE__->add_columns( + "issue_id", + { data_type => "integer", is_auto_increment => 1, is_nullable => 0 }, "borrowernumber", { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, "itemnumber", { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, "date_due", - { - data_type => "datetime", - datetime_undef_if_invalid => 1, - is_nullable => 1, - }, + { data_type => "datetime", is_nullable => 1 }, "branchcode", { data_type => "varchar", is_nullable => 1, size => 10 }, "issuingbranch", { data_type => "varchar", is_nullable => 1, size => 18 }, "returndate", - { - data_type => "datetime", - datetime_undef_if_invalid => 1, - is_nullable => 1, - }, + { data_type => "datetime", is_nullable => 1 }, "lastreneweddate", - { - data_type => "datetime", - datetime_undef_if_invalid => 1, - is_nullable => 1, - }, + { data_type => "datetime", is_nullable => 1 }, "return", { data_type => "varchar", is_nullable => 1, size => 4 }, "renewals", { data_type => "tinyint", is_nullable => 1 }, "timestamp", { - data_type => "timestamp", - datetime_undef_if_invalid => 1, + data_type => "timestamp", default_value => \"current_timestamp", - is_nullable => 0, + is_nullable => 0, }, "issuedate", - { - data_type => "datetime", - datetime_undef_if_invalid => 1, - is_nullable => 1, - }, + { data_type => "datetime", is_nullable => 1 }, ); +__PACKAGE__->set_primary_key("issue_id"); =head1 RELATIONS @@ -151,12 +134,7 @@ __PACKAGE__->belongs_to( "borrowernumber", "Koha::Schema::Result::Borrower", { borrowernumber => "borrowernumber" }, - { - is_deferrable => 1, - join_type => "LEFT", - on_delete => "CASCADE", - on_update => "CASCADE", - }, + { join_type => "LEFT", on_delete => "CASCADE", on_update => "CASCADE" }, ); =head2 itemnumber @@ -171,17 +149,12 @@ __PACKAGE__->belongs_to( "itemnumber", "Koha::Schema::Result::Item", { itemnumber => "itemnumber" }, - { - is_deferrable => 1, - join_type => "LEFT", - on_delete => "CASCADE", - on_update => "CASCADE", - }, + { join_type => "LEFT", on_delete => "CASCADE", on_update => "CASCADE" }, ); -# Created by DBIx::Class::Schema::Loader v0.07025 @ 2013-10-14 20:56:21 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ZEh31EKBmURMKxDxI+H3EA +# Created by DBIx::Class::Schema::Loader v0.07000 @ 2013-11-06 14:03:30 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:x90AnyA32VcLbXMb7hfA9g __PACKAGE__->belongs_to( "borrower", @@ -190,4 +163,11 @@ __PACKAGE__->belongs_to( { join_type => "LEFT", on_delete => "CASCADE", on_update => "CASCADE" }, ); +__PACKAGE__->belongs_to( + "item", + "Koha::Schema::Result::Item", + { itemnumber => "itemnumber" }, + { join_type => "LEFT", on_delete => "CASCADE", on_update => "CASCADE" }, +); + 1; --- a/Koha/Schema/Result/OldIssue.pm +++ a/Koha/Schema/Result/OldIssue.pm @@ -1,21 +1,17 @@ -use utf8; package Koha::Schema::Result::OldIssue; # Created by DBIx::Class::Schema::Loader # DO NOT MODIFY THE FIRST PART OF THIS FILE -=head1 NAME - -Koha::Schema::Result::OldIssue - -=cut - use strict; use warnings; use base 'DBIx::Class::Core'; -=head1 TABLE: C + +=head1 NAME + +Koha::Schema::Result::OldIssue =cut @@ -23,6 +19,12 @@ __PACKAGE__->table("old_issues"); =head1 ACCESSORS +=head2 issue_id + + data_type: 'integer' + is_auto_increment: 1 + is_nullable: 0 + =head2 borrowernumber data_type: 'integer' @@ -38,7 +40,6 @@ __PACKAGE__->table("old_issues"); =head2 date_due data_type: 'datetime' - datetime_undef_if_invalid: 1 is_nullable: 1 =head2 branchcode @@ -56,13 +57,11 @@ __PACKAGE__->table("old_issues"); =head2 returndate data_type: 'datetime' - datetime_undef_if_invalid: 1 is_nullable: 1 =head2 lastreneweddate data_type: 'datetime' - datetime_undef_if_invalid: 1 is_nullable: 1 =head2 return @@ -79,63 +78,47 @@ __PACKAGE__->table("old_issues"); =head2 timestamp data_type: 'timestamp' - datetime_undef_if_invalid: 1 default_value: current_timestamp is_nullable: 0 =head2 issuedate data_type: 'datetime' - datetime_undef_if_invalid: 1 is_nullable: 1 =cut __PACKAGE__->add_columns( + "issue_id", + { data_type => "integer", is_auto_increment => 1, is_nullable => 0 }, "borrowernumber", { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, "itemnumber", { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, "date_due", - { - data_type => "datetime", - datetime_undef_if_invalid => 1, - is_nullable => 1, - }, + { data_type => "datetime", is_nullable => 1 }, "branchcode", { data_type => "varchar", is_nullable => 1, size => 10 }, "issuingbranch", { data_type => "varchar", is_nullable => 1, size => 18 }, "returndate", - { - data_type => "datetime", - datetime_undef_if_invalid => 1, - is_nullable => 1, - }, + { data_type => "datetime", is_nullable => 1 }, "lastreneweddate", - { - data_type => "datetime", - datetime_undef_if_invalid => 1, - is_nullable => 1, - }, + { data_type => "datetime", is_nullable => 1 }, "return", { data_type => "varchar", is_nullable => 1, size => 4 }, "renewals", { data_type => "tinyint", is_nullable => 1 }, "timestamp", { - data_type => "timestamp", - datetime_undef_if_invalid => 1, + data_type => "timestamp", default_value => \"current_timestamp", - is_nullable => 0, + is_nullable => 0, }, "issuedate", - { - data_type => "datetime", - datetime_undef_if_invalid => 1, - is_nullable => 1, - }, + { data_type => "datetime", is_nullable => 1 }, ); +__PACKAGE__->set_primary_key("issue_id"); =head1 RELATIONS @@ -151,12 +134,7 @@ __PACKAGE__->belongs_to( "borrowernumber", "Koha::Schema::Result::Borrower", { borrowernumber => "borrowernumber" }, - { - is_deferrable => 1, - join_type => "LEFT", - on_delete => "CASCADE", - on_update => "CASCADE", - }, + { join_type => "LEFT", on_delete => "CASCADE", on_update => "CASCADE" }, ); =head2 itemnumber @@ -171,17 +149,12 @@ __PACKAGE__->belongs_to( "itemnumber", "Koha::Schema::Result::Item", { itemnumber => "itemnumber" }, - { - is_deferrable => 1, - join_type => "LEFT", - on_delete => "CASCADE", - on_update => "CASCADE", - }, + { join_type => "LEFT", on_delete => "CASCADE", on_update => "CASCADE" }, ); -# Created by DBIx::Class::Schema::Loader v0.07025 @ 2013-10-14 20:56:21 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:uPOxNROoMMRZ0qZsXsxEjA +# Created by DBIx::Class::Schema::Loader v0.07000 @ 2013-11-07 08:15:21 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:np3nmo0XYIYp92QbCY6/cw # You can replace this text with custom content, and it will be preserved on regeneration --- a/installer/data/mysql/kohastructure.sql +++ a/installer/data/mysql/kohastructure.sql @@ -265,6 +265,7 @@ CREATE TABLE `borrowers` ( -- this table includes information about your patrons `altcontactphone` varchar(50) default NULL, -- the phone number for the alternate contact for the patron/borrower `smsalertnumber` varchar(50) default NULL, -- the mobile phone number where the patron/borrower would like to receive notices (if SNS turned on) `privacy` integer(11) DEFAULT '1' NOT NULL, -- patron/borrower's privacy settings related to their reading history + `privacy_relative_checkouts` tinyint(1) NOT NULL DEFAULT '0', -- controls if relatives can see this patron's checkouts UNIQUE KEY `cardnumber` (`cardnumber`), PRIMARY KEY `borrowernumber` (`borrowernumber`), KEY `categorycode` (`categorycode`), @@ -862,6 +863,7 @@ CREATE TABLE `deletedborrowers` ( -- stores data related to the patrons/borrower `altcontactphone` varchar(50) default NULL, -- the phone number for the alternate contact for the patron/borrower `smsalertnumber` varchar(50) default NULL, -- the mobile phone number where the patron/borrower would like to receive notices (if SNS turned on) `privacy` integer(11) DEFAULT '1' NOT NULL, -- patron/borrower's privacy settings related to their reading history KEY `borrowernumber` (`borrowernumber`), + `privacy_relative_checkouts` tinyint(1) NOT NULL DEFAULT '0', -- controls if relatives can see this patron's checkouts KEY borrowernumber (borrowernumber), KEY `cardnumber` (`cardnumber`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -1107,6 +1109,7 @@ CREATE TABLE `import_items` ( DROP TABLE IF EXISTS `issues`; CREATE TABLE `issues` ( -- information related to check outs or issues + `issue_id` int(11) NOT NULL AUTO_INCREMENT, -- primary key for issues table `borrowernumber` int(11), -- foreign key, linking this to the borrowers table for the patron this item was checked out to `itemnumber` int(11), -- foreign key, linking this to the items table for the item that was checked out `date_due` datetime default NULL, -- datetime the item is due (yyyy-mm-dd hh:mm::ss) @@ -1118,6 +1121,7 @@ CREATE TABLE `issues` ( -- information related to check outs or issues `renewals` tinyint(4) default NULL, -- lists the number of times the item was renewed `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- the date and time this record was last touched `issuedate` datetime default NULL, -- date the item was checked out or issued + PRIMARY KEY (`issue_id`), KEY `issuesborridx` (`borrowernumber`), KEY `itemnumber_idx` (`itemnumber`), KEY `branchcode_idx` (`branchcode`), @@ -1570,6 +1574,7 @@ CREATE TABLE `oai_sets_biblios` ( DROP TABLE IF EXISTS `old_issues`; CREATE TABLE `old_issues` ( -- lists items that were checked out and have been returned + `issue_id` int(11) NOT NULL AUTO_INCREMENT, -- primary key for issues table `borrowernumber` int(11) default NULL, -- foreign key, linking this to the borrowers table for the patron this item was checked out to `itemnumber` int(11) default NULL, -- foreign key, linking this to the items table for the item that was checked out `date_due` datetime default NULL, -- date the item is due (yyyy-mm-dd) @@ -1581,6 +1586,7 @@ CREATE TABLE `old_issues` ( -- lists items that were checked out and have been r `renewals` tinyint(4) default NULL, -- lists the number of times the item was renewed `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- the date and time this record was last touched `issuedate` datetime default NULL, -- date the item was checked out or issued + PRIMARY KEY (`issue_id`), KEY `old_issuesborridx` (`borrowernumber`), KEY `old_issuesitemidx` (`itemnumber`), KEY `branchcode_idx` (`branchcode`), --- a/installer/data/mysql/updatedatabase.pl +++ a/installer/data/mysql/updatedatabase.pl @@ -7824,6 +7824,26 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.15.00.XXX"; +if(CheckVersion($DBversion)) { + $dbh->do(q{ + ALTER TABLE borrowers ADD privacy_relative_checkouts BOOLEAN NOT NULL DEFAULT '0' + }); + $dbh->do(q{ + ALTER TABLE deletedborrowers ADD privacy_relative_checkouts BOOLEAN NOT NULL DEFAULT '0' + }); + $dbh->do(q{ + ALTER TABLE old_issues ADD issue_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST + }); + $dbh->do(q{ + ALTER TABLE issues ADD issue_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; + }); + $dbh->do(qq{ + UPDATE issues SET issue_id = issue_id + ( SELECT COUNT(*) FROM old_issues ) ORDER BY issue_id DESC + }); + print "Upgrade to $DBversion done (Bug 9303 - relative's checkouts in the opac)\n"; + SetVersion($DBversion); +} =head1 FUNCTIONS --