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

(-)a/Koha/EDI.pm (-7 / +20 lines)
Lines 649-659 sub process_quote { Link Here
649
    my $split_message;
649
    my $split_message;
650
    my @added_baskets;    # if auto & multiple baskets need to order all
650
    my @added_baskets;    # if auto & multiple baskets need to order all
651
651
652
    # Get vendor EDI account configuration
653
    my $v = $schema->resultset('VendorEdiAccount')->search(
654
        {
655
            vendor_id => $quote_message->vendor_id,
656
        }
657
    )->single;
658
652
    if ( @{$messages} && $quote_message->vendor_id ) {
659
    if ( @{$messages} && $quote_message->vendor_id ) {
660
653
        foreach my $msg ( @{$messages} ) {
661
        foreach my $msg ( @{$messages} ) {
654
            ++$message_count;
662
            ++$message_count;
663
664
            # Determine basket name based on vendor configuration
665
            my $basket_name = $quote_message->filename;
666
            if ( $v && $v->po_is_basketname ) {
667
                my $purchase_order_number = $msg->purchase_order_number;
668
                if ($purchase_order_number) {
669
                    $basket_name = $purchase_order_number;
670
                }
671
            }
672
655
            my $basketno = NewBasket(
673
            my $basketno = NewBasket(
656
                $quote_message->vendor_id, 0, $quote_message->filename, q{},
674
                $quote_message->vendor_id, 0, $basket_name, q{},
657
                q{} . q{}
675
                q{} . q{}
658
            );
676
            );
659
            push @added_baskets, $basketno;
677
            push @added_baskets, $basketno;
Lines 695-706 sub process_quote { Link Here
695
    $quote_message->status($status);
713
    $quote_message->status($status);
696
    $quote_message->update;    # status and basketno link
714
    $quote_message->update;    # status and basketno link
697
                               # Do we automatically generate orders for this vendor
715
                               # Do we automatically generate orders for this vendor
698
    my $v = $schema->resultset('VendorEdiAccount')->search(
716
    if ( $v && $v->auto_orders ) {
699
        {
700
            vendor_id => $quote_message->vendor_id,
701
        }
702
    )->single;
703
    if ( $v->auto_orders ) {
704
        for my $b (@added_baskets) {
717
        for my $b (@added_baskets) {
705
            create_edi_order(
718
            create_edi_order(
706
                {
719
                {
(-)a/Koha/Edifact/Message.pm (+20 lines)
Lines 183-188 sub supplier_ean { Link Here
183
183
184
}
184
}
185
185
186
sub purchase_order_number {
187
    my $self = shift;
188
    foreach my $s ( @{ $self->{datasegs} } ) {
189
        if ( $s->tag eq 'LIN' ) {
190
            last;
191
        }
192
        if ( $s->tag eq 'RFF' ) {
193
            my $qualifier = $s->elem( 0, 0 );
194
            if ( $qualifier eq 'ON' ) {
195
                return $s->elem( 0, 1 );
196
            }
197
        }
198
    }
199
    return;
200
}
201
186
sub lineitems {
202
sub lineitems {
187
    my $self = shift;
203
    my $self = shift;
188
    if ( $self->{quotation_lines} ) {
204
    if ( $self->{quotation_lines} ) {
Lines 280-285 Missing POD for buyer_ean. Link Here
280
296
281
Missing POD for supplier_ean.
297
Missing POD for supplier_ean.
282
298
299
=head2 purchase_order_number
300
301
Missing POD for purchase_order_number.
302
283
=head2 lineitems
303
=head2 lineitems
284
304
285
Missing POD for lineitems.
305
Missing POD for lineitems.
(-)a/admin/edi_accounts.pl (+1 lines)
Lines 94-99 if ( $op eq 'acct_form' ) { Link Here
94
            auto_orders        => $input->param('auto_orders')       ? 1 : 0,
94
            auto_orders        => $input->param('auto_orders')       ? 1 : 0,
95
            id_code_qualifier  => scalar $input->param('id_code_qualifier'),
95
            id_code_qualifier  => scalar $input->param('id_code_qualifier'),
96
            plugin             => scalar $input->param('plugin'),
96
            plugin             => scalar $input->param('plugin'),
97
            po_is_basketname   => $input->param('po_is_basketname') ? 1 : 0,
97
        };
98
        };
98
99
99
        if ($id) {
100
        if ($id) {
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/edi_accounts.tt (-38 / +71 lines)
Lines 96-104 Link Here
96
                    <span>New account</span>
96
                    <span>New account</span>
97
                [% END %]
97
                [% END %]
98
            </h1>
98
            </h1>
99
            <fieldset class="rows">
100
                <legend class="sr-only">Account details</legend>
101
99
100
            <!-- Basic Information -->
101
            <fieldset class="rows">
102
                <legend>Basic Information</legend>
102
                <ol>
103
                <ol>
103
                    <li>
104
                    <li>
104
                        <label for="vendor_id">Vendor: </label>
105
                        <label for="vendor_id">Vendor: </label>
Lines 112-117 Link Here
112
                            [% END %]
113
                            [% END %]
113
                        </select>
114
                        </select>
114
                    </li>
115
                    </li>
116
                    <li>
117
                        <label for="description">Description: </label>
118
                        <input type="text" name="description" id="description" size="20" value="[% account.description | html %]" />
119
                    </li>
115
                    [% IF plugins %]
120
                    [% IF plugins %]
116
                        <li>
121
                        <li>
117
                            <label for="plugin">Plugin: </label>
122
                            <label for="plugin">Plugin: </label>
Lines 130-138 Link Here
130
                        <input type="hidden" name="plugin" value="" />
135
                        <input type="hidden" name="plugin" value="" />
131
                    [% END %]
136
                    [% END %]
132
                    <li>
137
                    <li>
133
                        <label for="description">Description: </label>
138
                        <label for="id_code_qualifier">Qualifier:</label>
134
                        <input type="text" name="description" id="description" size="20" value="[% account.description | html %]" />
139
                        <select name="id_code_qualifier" id="id_code_qualifier">
140
                            [% FOREACH qualifier IN code_qualifiers %]
141
                                [% IF qualifier.code == account.id_code_qualifier %]
142
                                    <option value="[% qualifier.code | html %]" selected="selected"> [% qualifier.description | html %] ([% qualifier.code | html %]) </option>
143
                                [% ELSE %]
144
                                    <option value="[% qualifier.code | html %]"> [% qualifier.description | html %] ([% qualifier.code | html %]) </option>
145
                                [% END %]
146
                            [% END %]
147
                        </select>
148
                    </li>
149
                    <li>
150
                        <label for="san">SAN: </label>
151
                        <input type="text" name="san" id="san" size="20" maxlength="20" value="[% account.san | html %]" />
152
                    </li>
153
                    <li>
154
                        <label for="standard">Standard:</label>
155
                        <select name="standard" id="standard">
156
                            [% FOREACH standard IN standards %]
157
                                [% IF standard == 'BIC' %]
158
                                    [% SET description = 'BiC' %]
159
                                [% ELSE %]
160
                                    [% SET description = 'EDItEUR' %]
161
                                [% END %]
162
                                [% IF standard == account.standard %]
163
                                    <option value="[% standard | html %]" selected="selected"> [% description | html %] </option>
164
                                [% ELSE %]
165
                                    <option value="[% standard | html %]"> [% description | html %] </option>
166
                                [% END %]
167
                            [% END %]
168
                        </select>
135
                    </li>
169
                    </li>
170
                </ol>
171
            </fieldset>
172
173
            <!-- Transport Settings -->
174
            <fieldset class="rows">
175
                <legend>Transport Settings</legend>
176
                <ol>
136
                    <li>
177
                    <li>
137
                        [% transport_types = [ 'FTP', 'SFTP', 'FILE' ] %]
178
                        [% transport_types = [ 'FTP', 'SFTP', 'FILE' ] %]
138
                        <label for="transport">Transport: </label>
179
                        <label for="transport">Transport: </label>
Lines 178-216 Link Here
178
                        <input type="text" name="upload_directory" id="upload_directory" size="20" value="[% account.upload_directory | html %]" />
219
                        <input type="text" name="upload_directory" id="upload_directory" size="20" value="[% account.upload_directory | html %]" />
179
                        <div class="hint">The upload directory specifies the directory on the ftp site to which orders are uploaded.</div>
220
                        <div class="hint">The upload directory specifies the directory on the ftp site to which orders are uploaded.</div>
180
                    </li>
221
                    </li>
181
                    <li>
222
                </ol>
182
                        <label for="id_code_qualifier">Qualifier:</label>
223
            </fieldset>
183
                        <select name="id_code_qualifier" id="id_code_qualifier">
224
184
                            [% FOREACH qualifier IN code_qualifiers %]
225
            <!-- Message Types -->
185
                                [% IF qualifier.code == account.id_code_qualifier %]
226
            <fieldset class="rows">
186
                                    <option value="[% qualifier.code | html %]" selected="selected"> [% qualifier.description | html %] ([% qualifier.code | html %]) </option>
227
                <legend>Message Types</legend>
187
                                [% ELSE %]
228
                <ol>
188
                                    <option value="[% qualifier.code | html %]"> [% qualifier.description | html %] ([% qualifier.code | html %]) </option>
189
                                [% END %]
190
                            [% END %]
191
                        </select>
192
                    </li>
193
                    <li>
194
                        <label for="san">SAN: </label>
195
                        <input type="text" name="san" id="san" size="20" maxlength="20" value="[% account.san | html %]" />
196
                    </li>
197
                    <li>
198
                        <label for="standard">Standard:</label>
199
                        <select name="standard" id="standard">
200
                            [% FOREACH standard IN standards %]
201
                                [% IF standard == 'BIC' %]
202
                                    [% SET description = 'BiC' %]
203
                                [% ELSE %]
204
                                    [% SET description = 'EDItEUR' %]
205
                                [% END %]
206
                                [% IF standard == account.standard %]
207
                                    <option value="[% standard | html %]" selected="selected"> [% description | html %] </option>
208
                                [% ELSE %]
209
                                    <option value="[% standard | html %]"> [% description | html %] </option>
210
                                [% END %]
211
                            [% END %]
212
                        </select>
213
                    </li>
214
                    <li>
229
                    <li>
215
                        <label for="quotes_enabled">Quotes enabled: </label>
230
                        <label for="quotes_enabled">Quotes enabled: </label>
216
                        [% IF account.quotes_enabled %]
231
                        [% IF account.quotes_enabled %]
Lines 243-248 Link Here
243
                            <input type="checkbox" name="responses_enabled" id="responses_enabled" value="1" />
258
                            <input type="checkbox" name="responses_enabled" id="responses_enabled" value="1" />
244
                        [% END %]
259
                        [% END %]
245
                    </li>
260
                    </li>
261
                </ol>
262
            </fieldset>
263
264
            <!-- Functional Switches -->
265
            <fieldset class="rows">
266
                <legend>Functional Switches</legend>
267
                <ol>
246
                    <li>
268
                    <li>
247
                        <label for="auto_orders">Automatic ordering: </label>
269
                        <label for="auto_orders">Automatic ordering: </label>
248
                        [% IF account.auto_orders %]
270
                        [% IF account.auto_orders %]
Lines 252-257 Link Here
252
                        [% END %]
274
                        [% END %]
253
                        <div class="hint"> With automatic ordering quotes generate orders without staff intervention. </div>
275
                        <div class="hint"> With automatic ordering quotes generate orders without staff intervention. </div>
254
                    </li>
276
                    </li>
277
                    <li>
278
                        <label for="po_is_basketname">Use purchase order numbers: </label>
279
                        [% IF account.po_is_basketname %]
280
                            <input type="checkbox" name="po_is_basketname" id="po_is_basketname" value="1" checked="checked" />
281
                        [% ELSE %]
282
                            <input type="checkbox" name="po_is_basketname" id="po_is_basketname" value="1" />
283
                        [% END %]
284
                        <div class="hint">
285
                            When enabled, basket names are used as purchase order numbers. <br />For received QUOTE messages, we will use the RFF+ON field to populate the basket name. <br />For generated ORDER messages, we will use the
286
                            basket name to populate the BGM segment.</div
287
                        >
288
                    </li>
255
                </ol>
289
                </ol>
256
            </fieldset>
290
            </fieldset>
257
291
258
- 

Return to bug 20253