From 1804f541119186a7fbd434c2ed0c158aa6fb1fc6 Mon Sep 17 00:00:00 2001 From: Alex Arnaud Date: Wed, 9 Dec 2015 11:09:58 +0100 Subject: [PATCH] Bug 15336 - New command-line script: merge_bookseller.pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test plan (i.e. merge bookseller n° 3 into the n° 6): run perl misc/migration_tools/merge_booksellers.pl -f 3 -t 6 -v -c Check that basketgroups, baskets, contacts, contracts and invoices had moved into bookseller 6. Check that bookseller n° 3 has been deleted. Remove -c (confirm) parameter to run in test mode only. --- misc/migration_tools/merge_booksellers.pl | 69 +++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 misc/migration_tools/merge_booksellers.pl diff --git a/misc/migration_tools/merge_booksellers.pl b/misc/migration_tools/merge_booksellers.pl new file mode 100644 index 0000000..a9f6a5d --- /dev/null +++ b/misc/migration_tools/merge_booksellers.pl @@ -0,0 +1,69 @@ +#!/usr/bin/perl +# Script that merge source bookseller (-f) into target bookseller (-t). + +use strict; + +use Koha::Acquisition::Bookseller; +use C4::Bookseller qw( DelBookseller ); +use C4::Acquisition; +use C4::Contract; + +use Getopt::Long; + +my ($help, $verbose, $mergefrom, $mergeto, $confirm); +GetOptions( + 'h' => \$help, + 'v' => \$verbose, + 'f:s' => \$mergefrom, + 't:s' => \$mergeto, + 'c' => \$confirm, +); + +if ($help || !$mergefrom || !$mergeto) { + print_usage(); + die; +} + +my $from_bookseller = Koha::Acquisition::Bookseller->fetch({id => $mergefrom}); +die "Unknown bookseller id ($mergefrom)" unless $from_bookseller; + +my $to_bookseller = Koha::Acquisition::Bookseller->fetch({id => $mergeto}); +die "Unknown bookseller id ($mergeto)" unless $to_bookseller; + +my $report; +foreach (qw(Aqbasketgroup Aqbasket Aqcontract Aqcontact Aqinvoice)) { + my $rs = Koha::Database->new()->schema->resultset($_); + $rs = $rs->search({booksellerid => $mergefrom }); + while (my $e = $rs->next) { + $e->set_column('booksellerid', $mergeto); + print "$_ n° " . $e->id() . " merged into bookseller n° $mergeto\n" if $verbose; + $e->update() if $confirm; + $report->{$_}++; + } +} + +DelBookseller($mergefrom) if $confirm; + +print "\n" if $verbose; +print_report($report); +print "Nothing done (test only). Use confirm option to commit changes in database\n" unless $confirm; + +sub print_usage { +print <{$entity}\n"; + } +} -- 1.7.10.4