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

(-)a/Koha/Acquisition/Basket.pm (+24 lines)
Lines 135-140 sub edi_order { Link Here
135
    return $order_rs->single;
135
    return $order_rs->single;
136
}
136
}
137
137
138
=head3 edi_quote
139
140
  my $edi_order = $basket->edi_quote;
141
142
Returns the EDI quote object if one was used to generate this basket.
143
144
NOTE: This currently returns a bare DBIx::Class result or undefined. This is consistent with the rest of EDI;
145
However it would be beneficial to convert these to full fledge Koha::Objects in the future.
146
147
=cut
148
149
sub edi_quote {
150
    my ($self) = @_;
151
152
    my $order_rs = $self->_result->edifact_messages(
153
        {
154
            message_type => 'QUOTE',
155
            deleted      => 0
156
        },
157
        { order_by => { '-desc' => 'transfer_date' }, rows => 1 }
158
    );
159
    return $order_rs->single;
160
}
161
138
=head3 effective_create_items
162
=head3 effective_create_items
139
163
140
Returns C<create_items> for this basket, falling back to C<AcqCreateItem> if unset.
164
Returns C<create_items> for this basket, falling back to C<AcqCreateItem> if unset.
(-)a/acqui/basketheader.pl (-1 / +46 lines)
Lines 56-61 use C4::Contract qw( GetContracts GetContract ); Link Here
56
use Koha::Acquisition::Booksellers;
56
use Koha::Acquisition::Booksellers;
57
use Koha::Acquisition::Baskets;
57
use Koha::Acquisition::Baskets;
58
use Koha::AdditionalFields;
58
use Koha::AdditionalFields;
59
use Koha::Database;
59
60
60
my $input = CGI->new;
61
my $input = CGI->new;
61
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
62
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
Lines 122-127 if ( $op eq 'add_form' ) { Link Here
122
        );
123
        );
123
    }
124
    }
124
125
126
    # Check if basket name should be read-only (EDI-generated with PO number setting)
127
    my $basket_name_readonly = 0;
128
    if ( $basketno && $basket ) {
129
        my $basket_obj = Koha::Acquisition::Baskets->find($basketno);
130
        if ($basket_obj) {
131
            my $edi_quote = $basket_obj->edi_quote;
132
            if ($edi_quote) {
133
134
                # This basket was created from an EDI quote
135
                # Check if the vendor EDI account is configured to use purchase order numbers
136
                my $vendor_edi_account = $edi_quote->edi_acct;
137
                if ( $vendor_edi_account && $vendor_edi_account->po_is_basketname ) {
138
                    $basket_name_readonly = 1;
139
                }
140
            }
141
        }
142
    }
143
125
    $template->param(
144
    $template->param(
126
        add_form             => 1,
145
        add_form             => 1,
127
        basketname           => $basket->{'basketname'},
146
        basketname           => $basket->{'basketname'},
Lines 132-137 if ( $op eq 'add_form' ) { Link Here
132
        basketno             => $basketno,
151
        basketno             => $basketno,
133
        is_standing          => $basket->{is_standing},
152
        is_standing          => $basket->{is_standing},
134
        create_items         => $basket->{create_items},
153
        create_items         => $basket->{create_items},
154
        basket_name_readonly => $basket_name_readonly,
135
    );
155
    );
136
156
137
    my $billingplace  = $basket->{'billingplace'}  || C4::Context->userenv->{"branch"};
157
    my $billingplace  = $basket->{'billingplace'}  || C4::Context->userenv->{"branch"};
Lines 145-153 if ( $op eq 'add_form' ) { Link Here
145
165
146
    #we are confirming the changes, save the basket
166
    #we are confirming the changes, save the basket
147
    if ($is_an_edit) {
167
    if ($is_an_edit) {
168
169
        # Check if basket name should be protected from changes
170
        my $basket_name    = scalar $input->param('basketname');
171
        my $current_basket = GetBasket($basketno);
172
173
        # If this basket was created from EDI with PO number setting, prevent name changes
174
        my $basket_obj = Koha::Acquisition::Baskets->find($basketno);
175
        if ($basket_obj) {
176
            my $edi_order = $basket_obj->edi_order;
177
            if ($edi_order) {
178
179
                # This basket was created from an EDI order/quote
180
                # Check if the vendor EDI account is configured to use purchase order numbers
181
                my $schema             = Koha::Database->new()->schema();
182
                my $vendor_edi_account = $schema->resultset('VendorEdiAccount')
183
                    ->search( { vendor_id => scalar $input->param('basketbooksellerid') } )->first;
184
185
                if ( $vendor_edi_account && $vendor_edi_account->po_is_basketname ) {
186
187
                    # Preserve the original basket name
188
                    $basket_name = $current_basket->{'basketname'};
189
                }
190
            }
191
        }
192
148
        ModBasketHeader(
193
        ModBasketHeader(
149
            $basketno,
194
            $basketno,
150
            scalar $input->param('basketname'),
195
            $basket_name,
151
            scalar $input->param('basketnote'),
196
            scalar $input->param('basketnote'),
152
            scalar $input->param('basketbooksellernote'),
197
            scalar $input->param('basketbooksellernote'),
153
            scalar $input->param('basketcontractnumber') || undef,
198
            scalar $input->param('basketcontractnumber') || undef,
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basketheader.tt (-3 / +8 lines)
Lines 68-75 Link Here
68
                    [% END %]
68
                    [% END %]
69
                    <li>
69
                    <li>
70
                        <label for="basketname" class="required">Basket name: </label>
70
                        <label for="basketname" class="required">Basket name: </label>
71
                        <input type="text" name="basketname" id="basketname" size="40" maxlength="80" value="[% basketname | html %]" required="required" class="focus required" />
71
                        [% IF basket_name_readonly %]
72
                        <span class="required">Required</span>
72
                            <input type="text" name="basketname" id="basketname" size="40" maxlength="80" value="[% basketname | html %]" required="required" class="focus required" readonly="readonly" />
73
                            <span class="required">Required</span>
74
                            <div class="hint">This basket name is derived from the purchase order number and cannot be changed.</div>
75
                        [% ELSE %]
76
                            <input type="text" name="basketname" id="basketname" size="40" maxlength="80" value="[% basketname | html %]" required="required" class="focus required" />
77
                            <span class="required">Required</span>
78
                        [% END %]
73
                    </li>
79
                    </li>
74
                    <li>
80
                    <li>
75
                        <label for="billingplace">Billing place: </label>
81
                        <label for="billingplace">Billing place: </label>
76
- 

Return to bug 20253