Bugzilla – Attachment 173993 Details for
Bug 34355
Automated MARC record ordering process
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 34355: DB schemas and atomicupdate
Bug-34355-DB-schemas-and-atomicupdate.patch (text/plain), 13.20 KB, created by
Nick Clemens (kidclamp)
on 2024-11-05 16:37:52 UTC
(
hide
)
Description:
Bug 34355: DB schemas and atomicupdate
Filename:
MIME Type:
Creator:
Nick Clemens (kidclamp)
Created:
2024-11-05 16:37:52 UTC
Size:
13.20 KB
patch
obsolete
>From bf1d1197ff912d63963492a926c7e59bd82de263 Mon Sep 17 00:00:00 2001 >From: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com> >Date: Wed, 31 Jul 2024 13:02:50 +0000 >Subject: [PATCH] Bug 34355: DB schemas and atomicupdate > >Signed-off-by: Andrew Fuerste Henry <andrewfh@dubcolib.org> >Signed-off-by: Nick Clemens <nick@bywatersolutions.com> >--- > Koha/Schema/Result/Aqbookseller.pm | 19 +- > Koha/Schema/Result/Aqbudget.pm | 19 +- > Koha/Schema/Result/MarcOrderAccount.pm | 211 ++++++++++++++++++ > .../bug_34355-add_marc_order_accounts.pl | 43 ++++ > installer/data/mysql/kohastructure.sql | 26 +++ > installer/data/mysql/mandatory/sysprefs.sql | 1 + > 6 files changed, 315 insertions(+), 4 deletions(-) > create mode 100644 Koha/Schema/Result/MarcOrderAccount.pm > create mode 100755 installer/data/mysql/atomicupdate/bug_34355-add_marc_order_accounts.pl > >diff --git a/Koha/Schema/Result/Aqbookseller.pm b/Koha/Schema/Result/Aqbookseller.pm >index f9ce48cae47..8d38e036741 100644 >--- a/Koha/Schema/Result/Aqbookseller.pm >+++ b/Koha/Schema/Result/Aqbookseller.pm >@@ -494,6 +494,21 @@ __PACKAGE__->belongs_to( > }, > ); > >+=head2 marc_order_accounts >+ >+Type: has_many >+ >+Related object: L<Koha::Schema::Result::MarcOrderAccount> >+ >+=cut >+ >+__PACKAGE__->has_many( >+ "marc_order_accounts", >+ "Koha::Schema::Result::MarcOrderAccount", >+ { "foreign.vendor_id" => "self.id" }, >+ { cascade_copy => 0, cascade_delete => 0 }, >+); >+ > =head2 vendor_edi_accounts > > Type: has_many >@@ -510,8 +525,8 @@ __PACKAGE__->has_many( > ); > > >-# Created by DBIx::Class::Schema::Loader v0.07049 @ 2023-06-30 09:54:35 >-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xjeOqpcdN3Kb1wmLGDjzLg >+# Created by DBIx::Class::Schema::Loader v0.07051 @ 2024-07-31 11:04:04 >+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SIwFJFXaOTOGPs2AS27bHQ > > __PACKAGE__->add_columns( > '+active' => { is_boolean => 1 }, >diff --git a/Koha/Schema/Result/Aqbudget.pm b/Koha/Schema/Result/Aqbudget.pm >index 07612aa149a..f8b66113e14 100644 >--- a/Koha/Schema/Result/Aqbudget.pm >+++ b/Koha/Schema/Result/Aqbudget.pm >@@ -303,6 +303,21 @@ __PACKAGE__->belongs_to( > { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, > ); > >+=head2 marc_order_accounts >+ >+Type: has_many >+ >+Related object: L<Koha::Schema::Result::MarcOrderAccount> >+ >+=cut >+ >+__PACKAGE__->has_many( >+ "marc_order_accounts", >+ "Koha::Schema::Result::MarcOrderAccount", >+ { "foreign.budget_id" => "self.budget_id" }, >+ { cascade_copy => 0, cascade_delete => 0 }, >+); >+ > =head2 suggestions > > Type: has_many >@@ -344,8 +359,8 @@ Composing rels: L</aqbudgetborrowers> -> borrowernumber > __PACKAGE__->many_to_many("borrowernumbers", "aqbudgetborrowers", "borrowernumber"); > > >-# Created by DBIx::Class::Schema::Loader v0.07049 @ 2024-04-19 17:02:59 >-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:5solU2GxDRyXxtWgpbcGVQ >+# Created by DBIx::Class::Schema::Loader v0.07051 @ 2024-07-31 11:04:04 >+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:DCCt9sdoDfla/gzWSQC02Q > > __PACKAGE__->belongs_to( > "budget", >diff --git a/Koha/Schema/Result/MarcOrderAccount.pm b/Koha/Schema/Result/MarcOrderAccount.pm >new file mode 100644 >index 00000000000..faaf9054148 >--- /dev/null >+++ b/Koha/Schema/Result/MarcOrderAccount.pm >@@ -0,0 +1,211 @@ >+use utf8; >+package Koha::Schema::Result::MarcOrderAccount; >+ >+# Created by DBIx::Class::Schema::Loader >+# DO NOT MODIFY THE FIRST PART OF THIS FILE >+ >+=head1 NAME >+ >+Koha::Schema::Result::MarcOrderAccount >+ >+=cut >+ >+use strict; >+use warnings; >+ >+use base 'DBIx::Class::Core'; >+ >+=head1 TABLE: C<marc_order_accounts> >+ >+=cut >+ >+__PACKAGE__->table("marc_order_accounts"); >+ >+=head1 ACCESSORS >+ >+=head2 id >+ >+ data_type: 'integer' >+ is_auto_increment: 1 >+ is_nullable: 0 >+ >+unique identifier and primary key >+ >+=head2 description >+ >+ data_type: 'varchar' >+ is_nullable: 0 >+ size: 250 >+ >+description of this account >+ >+=head2 vendor_id >+ >+ data_type: 'integer' >+ is_foreign_key: 1 >+ is_nullable: 1 >+ >+vendor id for this account >+ >+=head2 budget_id >+ >+ data_type: 'integer' >+ is_foreign_key: 1 >+ is_nullable: 1 >+ >+budget id for this account >+ >+=head2 download_directory >+ >+ data_type: 'mediumtext' >+ is_nullable: 1 >+ >+download directory for this account >+ >+=head2 matcher_id >+ >+ data_type: 'integer' >+ is_nullable: 1 >+ >+the id of the match rule used (matchpoints.matcher_id) >+ >+=head2 overlay_action >+ >+ data_type: 'varchar' >+ is_nullable: 1 >+ size: 50 >+ >+how to handle duplicate records >+ >+=head2 nomatch_action >+ >+ data_type: 'varchar' >+ is_nullable: 1 >+ size: 50 >+ >+how to handle records where no match is found >+ >+=head2 item_action >+ >+ data_type: 'varchar' >+ is_nullable: 1 >+ size: 50 >+ >+what to do with item records >+ >+=head2 parse_items >+ >+ data_type: 'tinyint' >+ is_nullable: 1 >+ >+should items be parsed >+ >+=head2 record_type >+ >+ data_type: 'varchar' >+ is_nullable: 1 >+ size: 50 >+ >+type of record in the file >+ >+=head2 encoding >+ >+ data_type: 'varchar' >+ is_nullable: 1 >+ size: 50 >+ >+file encoding >+ >+=cut >+ >+__PACKAGE__->add_columns( >+ "id", >+ { data_type => "integer", is_auto_increment => 1, is_nullable => 0 }, >+ "description", >+ { data_type => "varchar", is_nullable => 0, size => 250 }, >+ "vendor_id", >+ { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, >+ "budget_id", >+ { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, >+ "download_directory", >+ { data_type => "mediumtext", is_nullable => 1 }, >+ "matcher_id", >+ { data_type => "integer", is_nullable => 1 }, >+ "overlay_action", >+ { data_type => "varchar", is_nullable => 1, size => 50 }, >+ "nomatch_action", >+ { data_type => "varchar", is_nullable => 1, size => 50 }, >+ "item_action", >+ { data_type => "varchar", is_nullable => 1, size => 50 }, >+ "parse_items", >+ { data_type => "tinyint", is_nullable => 1 }, >+ "record_type", >+ { data_type => "varchar", is_nullable => 1, size => 50 }, >+ "encoding", >+ { data_type => "varchar", is_nullable => 1, size => 50 }, >+); >+ >+=head1 PRIMARY KEY >+ >+=over 4 >+ >+=item * L</id> >+ >+=back >+ >+=cut >+ >+__PACKAGE__->set_primary_key("id"); >+ >+=head1 RELATIONS >+ >+=head2 budget >+ >+Type: belongs_to >+ >+Related object: L<Koha::Schema::Result::Aqbudget> >+ >+=cut >+ >+__PACKAGE__->belongs_to( >+ "budget", >+ "Koha::Schema::Result::Aqbudget", >+ { budget_id => "budget_id" }, >+ { >+ is_deferrable => 1, >+ join_type => "LEFT", >+ on_delete => "CASCADE", >+ on_update => "CASCADE", >+ }, >+); >+ >+=head2 vendor >+ >+Type: belongs_to >+ >+Related object: L<Koha::Schema::Result::Aqbookseller> >+ >+=cut >+ >+__PACKAGE__->belongs_to( >+ "vendor", >+ "Koha::Schema::Result::Aqbookseller", >+ { id => "vendor_id" }, >+ { >+ is_deferrable => 1, >+ join_type => "LEFT", >+ on_delete => "CASCADE", >+ on_update => "CASCADE", >+ }, >+); >+ >+ >+# Created by DBIx::Class::Schema::Loader v0.07051 @ 2024-07-31 13:01:54 >+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Fz6iYOJIQLrlYvAnmW6C4A >+ >+__PACKAGE__->add_columns( >+ '+parse_items' => { is_boolean => 1 }, >+); >+ >+# You can replace this text with custom code or comments, and it will be preserved on regeneration >+1; >diff --git a/installer/data/mysql/atomicupdate/bug_34355-add_marc_order_accounts.pl b/installer/data/mysql/atomicupdate/bug_34355-add_marc_order_accounts.pl >new file mode 100755 >index 00000000000..f0a5f2ab216 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_34355-add_marc_order_accounts.pl >@@ -0,0 +1,43 @@ >+use Modern::Perl; >+ >+return { >+ bug_number => "34355", >+ description => "Add a table to allow creation of MARC order accounts and a syspref to activate it.", >+ up => sub { >+ my ($args) = @_; >+ my ($dbh, $out) = @$args{qw(dbh out)}; >+ >+ unless( TableExists('marc_order_accounts') ) { >+ $dbh->do(q{ >+ CREATE TABLE `marc_order_accounts` ( >+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'unique identifier and primary key', >+ `description` varchar(250) NOT NULL COMMENT 'description of this account', >+ `vendor_id` int(11) DEFAULT NULL COMMENT 'vendor id for this account', >+ `budget_id` int(11) DEFAULT NULL COMMENT 'budget id for this account', >+ `download_directory` mediumtext DEFAULT NULL COMMENT 'download directory for this account', >+ `matcher_id` int(11) DEFAULT NULL COMMENT 'the id of the match rule used (matchpoints.matcher_id)', >+ `overlay_action` varchar(50) DEFAULT NULL COMMENT 'how to handle duplicate records', >+ `nomatch_action` varchar(50) DEFAULT NULL COMMENT 'how to handle records where no match is found', >+ `item_action` varchar(50) DEFAULT NULL COMMENT 'what to do with item records', >+ `parse_items` tinyint(1) DEFAULT NULL COMMENT 'should items be parsed', >+ `record_type` varchar(50) DEFAULT NULL COMMENT 'type of record in the file', >+ `encoding` varchar(50) DEFAULT NULL COMMENT 'file encoding', >+ PRIMARY KEY (`id`), >+ CONSTRAINT `marc_ordering_account_ibfk_1` FOREIGN KEY (`vendor_id`) REFERENCES `aqbooksellers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, >+ CONSTRAINT `marc_ordering_account_ibfk_2` FOREIGN KEY (`budget_id`) REFERENCES `aqbudgets` (`budget_id`) ON DELETE CASCADE ON UPDATE CASCADE >+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; >+ }); >+ >+ say $out "Added new table 'marc_order_accounts'"; >+ } else { >+ say $out "Table 'marc_order_accounts' already exists"; >+ } >+ >+ $dbh->do( >+ q{ >+ INSERT IGNORE INTO systempreferences (variable, value, options, explanation, type) VALUES ('MarcOrderingAutomation', '0', 'NULL', 'Enables automatic order line creation from MARC records', 'YesNo'); >+ } >+ ); >+ >+ }, >+}; >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index 442f683e02f..a1b2957e2e9 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -4470,6 +4470,32 @@ CREATE TABLE `marc_modification_templates` ( > ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; > /*!40101 SET character_set_client = @saved_cs_client */; > >+-- >+-- Table structure for table `marc_order_accounts` >+-- >+ >+DROP TABLE IF EXISTS `marc_order_accounts`; >+/*!40101 SET @saved_cs_client = @@character_set_client */; >+/*!40101 SET character_set_client = utf8 */; >+CREATE TABLE `marc_order_accounts` ( >+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'unique identifier and primary key', >+ `description` varchar(250) NOT NULL COMMENT 'description of this account', >+ `vendor_id` int(11) DEFAULT NULL COMMENT 'vendor id for this account', >+ `budget_id` int(11) DEFAULT NULL COMMENT 'budget id for this account', >+ `download_directory` mediumtext DEFAULT NULL COMMENT 'download directory for this account', >+ `matcher_id` int(11) DEFAULT NULL COMMENT 'the id of the match rule used (matchpoints.matcher_id)', >+ `overlay_action` varchar(50) DEFAULT NULL COMMENT 'how to handle duplicate records', >+ `nomatch_action` varchar(50) DEFAULT NULL COMMENT 'how to handle records where no match is found', >+ `item_action` varchar(50) DEFAULT NULL COMMENT 'what to do with item records', >+ `parse_items` tinyint(1) DEFAULT NULL COMMENT 'should items be parsed', >+ `record_type` varchar(50) DEFAULT NULL COMMENT 'type of record in the file', >+ `encoding` varchar(50) DEFAULT NULL COMMENT 'file encoding', >+ PRIMARY KEY (`id`), >+ CONSTRAINT `marc_ordering_account_ibfk_1` FOREIGN KEY (`vendor_id`) REFERENCES `aqbooksellers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, >+ CONSTRAINT `marc_ordering_account_ibfk_2` FOREIGN KEY (`budget_id`) REFERENCES `aqbudgets` (`budget_id`) ON DELETE CASCADE ON UPDATE CASCADE >+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; >+/*!40101 SET character_set_client = @saved_cs_client */; >+ > -- > -- Table structure for table `marc_overlay_rules` > -- >diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql >index 34ada9d8376..776afa20c43 100644 >--- a/installer/data/mysql/mandatory/sysprefs.sql >+++ b/installer/data/mysql/mandatory/sysprefs.sql >@@ -398,6 +398,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('MarcFieldForModifierName','',NULL,'Where to store the name of the record''s last modifier','Free'), > ('MarcFieldsToOrder','',NULL,'Set the mapping values for a new order line created from a MARC record in a staged file. In a YAML format.','textarea'), > ('MarcItemFieldsToOrder','',NULL,'Set the mapping values for new item records created from a MARC record in a staged file. In a YAML format.','textarea'), >+('MarcOrderingAutomation','0',NULL,'Enables automatic order line creation from MARC records','YesNo'), > ('MARCOrgCode','OSt','','Define MARC Organization Code for MARC21 records - http://www.loc.gov/marc/organizations/orgshome.html','free'), > ('MARCOverlayRules','0',NULL,'Use the MARC record overlay rules system to decide what actions to take for each field when modifying records.','YesNo'), > ('MarkLostItemsAsReturned','batchmod,moredetail,cronjob,additem,pendingreserves,onpayment','claim_returned|batchmod|moredetail|cronjob|additem|pendingreserves|onpayment','Mark items as returned when flagged as lost','multiple'), >-- >2.39.5
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 34355
:
154705
|
154706
|
154707
|
154708
|
154709
|
154710
|
157092
|
157093
|
157094
|
157095
|
157096
|
157097
|
157098
|
157099
|
157100
|
160858
|
160859
|
160860
|
160861
|
160862
|
160863
|
160864
|
160865
|
160866
|
160867
|
160868
|
160869
|
160870
|
160871
|
160872
|
160873
|
160874
|
160875
|
169896
|
169897
|
169898
|
169899
|
169900
|
169901
|
169902
|
169903
|
169904
|
170395
|
170401
|
170402
|
170403
|
170404
|
170405
|
170406
|
170407
|
170408
|
170409
|
173054
|
173055
|
173056
|
173057
|
173058
|
173059
|
173060
|
173061
|
173062
|
173063
|
173064
|
173065
|
173066
|
173709
|
173805
|
173806
|
173809
|
173824
|
173825
|
173993
|
173994
|
173995
|
173996
|
173997
|
173998
|
173999
|
174000
|
174001
|
174002
|
174003
|
174004
|
174005
|
174006
|
174007
|
174008
|
174009
|
174010
|
174362
|
174363
|
174364
|
174365
|
174366
|
174367
|
174368
|
174369
|
174370
|
174371
|
174372
|
174373
|
174374
|
174375
|
174376
|
174377
|
174378
|
174379
|
174380
|
174382
|
174383