@@ -, +, @@ - Add a new vendor - Create some interfaces --- Koha/Acquisition/Bookseller.pm | 28 ++++++ acqui/updatesupplier.pl | 16 ++++ .../prog/css/src/staff-global.scss | 3 +- .../prog/en/modules/acqui/supplier.tt | 87 ++++++++++++++++++- 4 files changed, 132 insertions(+), 2 deletions(-) --- a/Koha/Acquisition/Bookseller.pm +++ a/Koha/Acquisition/Bookseller.pm @@ -19,6 +19,7 @@ use Modern::Perl; use Koha::Acquisition::Bookseller::Aliases; use Koha::Acquisition::Bookseller::Contacts; +use Koha::Acquisition::Bookseller::Interfaces; use Koha::Subscriptions; use base qw( Koha::Object ); @@ -104,6 +105,33 @@ sub aliases { return Koha::Acquisition::Bookseller::Aliases->_new_from_dbic( $rs ); } +=head3 interfaces + + my $interfaces = $vendor->interfaces + + $vendor->interfaces(\@interfaces); + +=cut + +sub interfaces { + my ($self, $interfaces) = @_; + + if ($interfaces) { + my $schema = $self->_result->result_source->schema; + $schema->txn_do( + sub { + $self->interfaces->delete; + for my $interface (@$interfaces) { + $self->_result->add_to_aqbookseller_interfaces($interface); + } + } + ); + } + + my $rs = $self->_result->aqbookseller_interfaces; + return Koha::Acquisition::Bookseller::Interfaces->_new_from_dbic( $rs ); +} + =head3 to_api_mapping --- a/acqui/updatesupplier.pl +++ a/acqui/updatesupplier.pl @@ -47,6 +47,7 @@ contact_serialsprimary. =cut use Modern::Perl; +use List::MoreUtils qw( any ); use C4::Context; use C4::Auth qw( checkauth ); @@ -130,8 +131,23 @@ if($data{'name'}) { $contact->{booksellerid} = $data{id}; Koha::Acquisition::Bookseller::Contact->new( $contact )->store } + + # Insert aliases $bookseller->aliases([ map { { alias => $_ } } @aliases ]); + # Insert interfaces + my @interface_counters = $input->multi_param('interface_counter'); + my @interfaces; + for my $counter ( @interface_counters ) { + my $interface = {}; + for my $attr (qw(name type uri login password account_email notes)){ + my $v = $input->param("interface_${attr}_${counter}"); + $interface->{$attr} = $v; + } + push @interfaces, $interface if any { defined && length } values %$interface; + } + $bookseller->interfaces(\@interfaces); + #redirect to booksellers.pl print $input->redirect("booksellers.pl?booksellerid=".$data{id}); } else { --- a/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss +++ a/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss @@ -2584,7 +2584,8 @@ td.bundle { margin: 0 0 8px 8px; } -#contact-template { +#contact-template, +#interface-template { display: none; } --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/supplier.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/supplier.tt @@ -186,7 +186,6 @@
- + +