@@ -, +, @@ --- misc/migration_tools/merge_booksellers.pl | 69 +++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 misc/migration_tools/merge_booksellers.pl --- a/misc/migration_tools/merge_booksellers.pl +++ a/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"; + } +} --