View | Details | Raw Unified | Return to bug 38262
Collapse All | Expand All

(-)a/Koha/Acquisition/Bookseller.pm (-1 / +1 lines)
Lines 25-31 use Koha::Subscriptions; Link Here
25
25
26
use C4::Contract qw( GetContracts );
26
use C4::Contract qw( GetContracts );
27
27
28
use base qw( Koha::Object );
28
use base qw( Koha::Object::Mixin::AdditionalFields Koha::Object );
29
29
30
=head1 NAME
30
=head1 NAME
31
31
(-)a/Koha/Acquisition/Booksellers.pm (-1 / +1 lines)
Lines 19-25 use Modern::Perl; Link Here
19
19
20
use Koha::Acquisition::Bookseller;
20
use Koha::Acquisition::Bookseller;
21
21
22
use base qw( Koha::Objects );
22
use base qw( Koha::Object::Mixin::AdditionalFields Koha::Objects );
23
23
24
=head1 NAME
24
=head1 NAME
25
25
(-)a/Koha/AdditionalField.pm (-8 / +9 lines)
Lines 55-68 sub to_api { Link Here
55
    my ( $self, $params ) = @_;
55
    my ( $self, $params ) = @_;
56
56
57
    my $table_to_resource = {
57
    my $table_to_resource = {
58
        'accountlines:credit' => 'credit',
58
        'accountlines:credit'  => 'credit',
59
        'accountlines:debit'  => 'debit',
59
        'accountlines:debit'   => 'debit',
60
        'aqbasket'            => 'basket',
60
        'aqbasket'             => 'basket',
61
        'aqinvoices'          => 'invoice',
61
        'aqinvoices'           => 'invoice',
62
        'erm_licenses'        => 'license',
62
        'erm_licenses'         => 'license',
63
        'erm_agreements'      => 'agreement',
63
        'erm_agreements'       => 'agreement',
64
        'erm_packages'        => 'package',
64
        'erm_packages'         => 'package',
65
        'aqorders'            => 'order',
65
        'aqorders'             => 'order',
66
        'aqbooksellers:vendor' => 'vendor',
66
    };
67
    };
67
68
68
    my $json = $self->SUPER::to_api($params);
69
    my $json = $self->SUPER::to_api($params);
(-)a/Koha/REST/V1/Acquisitions/Vendors.pm (-18 / +32 lines)
Lines 85-97 Controller function that handles adding a new Koha::Acquisition::Bookseller obje Link Here
85
sub add {
85
sub add {
86
    my $c = shift->openapi->valid_input or return;
86
    my $c = shift->openapi->valid_input or return;
87
87
88
    my $vendor        = $c->req->json;
88
    my $vendor              = $c->req->json;
89
    my $contacts      = delete $vendor->{contacts};
89
    my $contacts            = delete $vendor->{contacts};
90
    my $interfaces    = delete $vendor->{interfaces};
90
    my $interfaces          = delete $vendor->{interfaces};
91
    my $aliases       = delete $vendor->{aliases};
91
    my $aliases             = delete $vendor->{aliases};
92
    my $subscriptions = delete $vendor->{subscriptions};
92
    my $subscriptions       = delete $vendor->{subscriptions};
93
    my $baskets       = delete $vendor->{baskets};
93
    my $baskets             = delete $vendor->{baskets};
94
    my $contracts     = delete $vendor->{contracts};
94
    my $contracts           = delete $vendor->{contracts};
95
    my $extended_attributes = delete $vendor->{extended_attributes};
95
96
96
    my $vendor_to_store = Koha::Acquisition::Bookseller->new_from_api( $c->req->json );
97
    my $vendor_to_store = Koha::Acquisition::Bookseller->new_from_api( $c->req->json );
97
98
Lines 99-106 sub add { Link Here
99
        $vendor_to_store->store;
100
        $vendor_to_store->store;
100
101
101
        $vendor_to_store->contacts($contacts)     if scalar($contacts) > 0;
102
        $vendor_to_store->contacts($contacts)     if scalar($contacts) > 0;
102
        $vendor_to_store->aliases($aliases)       if scalar($aliases) > 0;
103
        $vendor_to_store->aliases($aliases)       if scalar(@$aliases) > 0;
103
        $vendor_to_store->interfaces($interfaces) if scalar($interfaces) > 0;
104
        $vendor_to_store->interfaces($interfaces) if scalar(@$interfaces) > 0;
105
106
        if ( scalar(@$extended_attributes) > 0 ) {
107
            my @extended_attributes =
108
                map { { 'id' => $_->{field_id}, 'value' => $_->{value} } } @{$extended_attributes};
109
            $vendor_to_store->extended_attributes( \@extended_attributes );
110
        }
104
111
105
        $c->res->headers->location( $c->req->url->to_string . '/' . $vendor_to_store->id );
112
        $c->res->headers->location( $c->req->url->to_string . '/' . $vendor_to_store->id );
106
        return $c->render(
113
        return $c->render(
Lines 128-147 sub update { Link Here
128
        unless $vendor;
135
        unless $vendor;
129
136
130
    return try {
137
    return try {
131
        my $vendor_update = $c->req->json;
138
        my $vendor_update       = $c->req->json;
132
        my $contacts      = delete $vendor_update->{contacts};
139
        my $contacts            = delete $vendor_update->{contacts};
133
        my $interfaces    = delete $vendor_update->{interfaces};
140
        my $interfaces          = delete $vendor_update->{interfaces};
134
        my $aliases       = delete $vendor_update->{aliases};
141
        my $aliases             = delete $vendor_update->{aliases};
135
        my $subscriptions = delete $vendor_update->{subscriptions};
142
        my $subscriptions       = delete $vendor_update->{subscriptions};
136
        my $baskets       = delete $vendor_update->{baskets};
143
        my $baskets             = delete $vendor_update->{baskets};
137
        my $contracts     = delete $vendor_update->{contracts};
144
        my $contracts           = delete $vendor_update->{contracts};
145
        my $extended_attributes = delete $vendor_update->{extended_attributes};
138
146
139
        $vendor->set_from_api($vendor_update);
147
        $vendor->set_from_api($vendor_update);
140
        $vendor->store();
148
        $vendor->store();
141
149
142
        $vendor->contacts($contacts)     if scalar($contacts) > 0;
150
        $vendor->contacts($contacts)     if scalar($contacts) > 0;
143
        $vendor->aliases($aliases)       if scalar($aliases) > 0;
151
        $vendor->aliases($aliases)       if scalar(@$aliases) > 0;
144
        $vendor->interfaces($interfaces) if scalar($interfaces) > 0;
152
        $vendor->interfaces($interfaces) if scalar(@$interfaces) > 0;
153
154
        if ( scalar(@$extended_attributes) > 0 ) {
155
            my @extended_attributes =
156
                map { { 'id' => $_->{field_id}, 'value' => $_->{value} } } @{$extended_attributes};
157
            $vendor->extended_attributes( \@extended_attributes );
158
        }
145
159
146
        return $c->render(
160
        return $c->render(
147
            status  => 200,
161
            status  => 200,
(-)a/Koha/REST/V1/ExtendedAttributeTypes.pm (+1 lines)
Lines 54-59 sub list { Link Here
54
        agreement => 'erm_agreements',
54
        agreement => 'erm_agreements',
55
        package   => 'erm_packages',
55
        package   => 'erm_packages',
56
        order     => 'aqorders',
56
        order     => 'aqorders',
57
        vendor    => 'aqbooksellers:vendor',
57
    };
58
    };
58
59
59
    return try {
60
    return try {
(-)a/Koha/Schema/Result/Aqbookseller.pm (-1 / +32 lines)
Lines 600-605 __PACKAGE__->has_many( Link Here
600
    { cascade_copy        => 0, cascade_delete => 0 },
600
    { cascade_copy        => 0, cascade_delete => 0 },
601
);
601
);
602
602
603
__PACKAGE__->has_many(
604
    "additional_field_values",
605
    "Koha::Schema::Result::AdditionalFieldValue",
606
    sub {
607
        my ($args) = @_;
608
609
        return {
610
            "$args->{foreign_alias}.record_id" => { -ident => "$args->{self_alias}.id" },
611
612
            "$args->{foreign_alias}.field_id" =>
613
                { -in => \'(SELECT id FROM additional_fields WHERE tablename LIKE "aqbooksellers:%")' },
614
        };
615
    },
616
    { cascade_copy => 0, cascade_delete => 0 },
617
);
618
619
__PACKAGE__->has_many(
620
    "extended_attributes",
621
    "Koha::Schema::Result::AdditionalFieldValue",
622
    sub {
623
        my ($args) = @_;
624
625
        return {
626
            "$args->{foreign_alias}.record_id" => { -ident => "$args->{self_alias}.id" },
627
628
            "$args->{foreign_alias}.field_id" =>
629
                { -in => \'(SELECT id FROM additional_fields WHERE tablename LIKE "aqbooksellers:%")' },
630
        };
631
    },
632
    { cascade_copy => 0, cascade_delete => 0 },
633
);
634
603
sub koha_object_class {
635
sub koha_object_class {
604
    'Koha::Acquisition::Bookseller';
636
    'Koha::Acquisition::Bookseller';
605
}
637
}
606
- 

Return to bug 38262