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

(-)a/Koha/EDI.pm (-7 / +20 lines)
Lines 645-655 sub process_quote { Link Here
645
    my $split_message;
645
    my $split_message;
646
    my @added_baskets;    # if auto & multiple baskets need to order all
646
    my @added_baskets;    # if auto & multiple baskets need to order all
647
647
648
    # Get vendor EDI account configuration
649
    my $v = $schema->resultset('VendorEdiAccount')->search(
650
        {
651
            vendor_id => $quote_message->vendor_id,
652
        }
653
    )->single;
654
648
    if ( @{$messages} && $quote_message->vendor_id ) {
655
    if ( @{$messages} && $quote_message->vendor_id ) {
656
649
        foreach my $msg ( @{$messages} ) {
657
        foreach my $msg ( @{$messages} ) {
650
            ++$message_count;
658
            ++$message_count;
659
660
            # Determine basket name based on vendor configuration
661
            my $basket_name = $quote_message->filename;
662
            if ( $v && $v->po_is_basketname ) {
663
                my $purchase_order_number = $msg->purchase_order_number;
664
                if ($purchase_order_number) {
665
                    $basket_name = $purchase_order_number;
666
                }
667
            }
668
651
            my $basketno = NewBasket(
669
            my $basketno = NewBasket(
652
                $quote_message->vendor_id, 0, $quote_message->filename, q{},
670
                $quote_message->vendor_id, 0, $basket_name, q{},
653
                q{} . q{}
671
                q{} . q{}
654
            );
672
            );
655
            push @added_baskets, $basketno;
673
            push @added_baskets, $basketno;
Lines 691-702 sub process_quote { Link Here
691
    $quote_message->status($status);
709
    $quote_message->status($status);
692
    $quote_message->update;    # status and basketno link
710
    $quote_message->update;    # status and basketno link
693
                               # Do we automatically generate orders for this vendor
711
                               # Do we automatically generate orders for this vendor
694
    my $v = $schema->resultset('VendorEdiAccount')->search(
712
    if ( $v && $v->auto_orders ) {
695
        {
696
            vendor_id => $quote_message->vendor_id,
697
        }
698
    )->single;
699
    if ( $v->auto_orders ) {
700
        for my $b (@added_baskets) {
713
        for my $b (@added_baskets) {
701
            create_edi_order(
714
            create_edi_order(
702
                {
715
                {
(-)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 95-103 Link Here
95
                    <span>New account</span>
95
                    <span>New account</span>
96
                [% END %]
96
                [% END %]
97
            </h1>
97
            </h1>
98
            <fieldset class="rows">
99
                <legend class="sr-only">Account details</legend>
100
98
99
            <!-- Basic Information -->
100
            <fieldset class="rows">
101
                <legend>Basic Information</legend>
101
                <ol>
102
                <ol>
102
                    <li>
103
                    <li>
103
                        <label for="vendor_id">Vendor: </label>
104
                        <label for="vendor_id">Vendor: </label>
Lines 111-116 Link Here
111
                            [% END %]
112
                            [% END %]
112
                        </select>
113
                        </select>
113
                    </li>
114
                    </li>
115
                    <li>
116
                        <label for="description">Description: </label>
117
                        <input type="text" name="description" id="description" size="20" value="[% account.description | html %]" />
118
                    </li>
114
                    [% IF plugins %]
119
                    [% IF plugins %]
115
                        <li>
120
                        <li>
116
                            <label for="plugin">Plugin: </label>
121
                            <label for="plugin">Plugin: </label>
Lines 129-137 Link Here
129
                        <input type="hidden" name="plugin" value="" />
134
                        <input type="hidden" name="plugin" value="" />
130
                    [% END %]
135
                    [% END %]
131
                    <li>
136
                    <li>
132
                        <label for="description">Description: </label>
137
                        <label for="id_code_qualifier">Qualifier:</label>
133
                        <input type="text" name="description" id="description" size="20" value="[% account.description | html %]" />
138
                        <select name="id_code_qualifier" id="id_code_qualifier">
139
                            [% FOREACH qualifier IN code_qualifiers %]
140
                                [% IF qualifier.code == account.id_code_qualifier %]
141
                                    <option value="[% qualifier.code | html %]" selected="selected"> [% qualifier.description | html %] ([% qualifier.code | html %]) </option>
142
                                [% ELSE %]
143
                                    <option value="[% qualifier.code | html %]"> [% qualifier.description | html %] ([% qualifier.code | html %]) </option>
144
                                [% END %]
145
                            [% END %]
146
                        </select>
147
                    </li>
148
                    <li>
149
                        <label for="san">SAN: </label>
150
                        <input type="text" name="san" id="san" size="20" maxlength="20" value="[% account.san | html %]" />
151
                    </li>
152
                    <li>
153
                        <label for="standard">Standard:</label>
154
                        <select name="standard" id="standard">
155
                            [% FOREACH standard IN standards %]
156
                                [% IF standard == 'BIC' %]
157
                                    [% SET description = 'BiC' %]
158
                                [% ELSE %]
159
                                    [% SET description = 'EDItEUR' %]
160
                                [% END %]
161
                                [% IF standard == account.standard %]
162
                                    <option value="[% standard | html %]" selected="selected"> [% description | html %] </option>
163
                                [% ELSE %]
164
                                    <option value="[% standard | html %]"> [% description | html %] </option>
165
                                [% END %]
166
                            [% END %]
167
                        </select>
134
                    </li>
168
                    </li>
169
                </ol>
170
            </fieldset>
171
172
            <!-- Transport Settings -->
173
            <fieldset class="rows">
174
                <legend>Transport Settings</legend>
175
                <ol>
135
                    <li>
176
                    <li>
136
                        [% transport_types = [ 'FTP', 'SFTP', 'FILE' ] %]
177
                        [% transport_types = [ 'FTP', 'SFTP', 'FILE' ] %]
137
                        <label for="transport">Transport: </label>
178
                        <label for="transport">Transport: </label>
Lines 177-215 Link Here
177
                        <input type="text" name="upload_directory" id="upload_directory" size="20" value="[% account.upload_directory | html %]" />
218
                        <input type="text" name="upload_directory" id="upload_directory" size="20" value="[% account.upload_directory | html %]" />
178
                        <div class="hint">The upload directory specifies the directory on the ftp site to which orders are uploaded.</div>
219
                        <div class="hint">The upload directory specifies the directory on the ftp site to which orders are uploaded.</div>
179
                    </li>
220
                    </li>
180
                    <li>
221
                </ol>
181
                        <label for="id_code_qualifier">Qualifier:</label>
222
            </fieldset>
182
                        <select name="id_code_qualifier" id="id_code_qualifier">
223
183
                            [% FOREACH qualifier IN code_qualifiers %]
224
            <!-- Message Types -->
184
                                [% IF qualifier.code == account.id_code_qualifier %]
225
            <fieldset class="rows">
185
                                    <option value="[% qualifier.code | html %]" selected="selected"> [% qualifier.description | html %] ([% qualifier.code | html %]) </option>
226
                <legend>Message Types</legend>
186
                                [% ELSE %]
227
                <ol>
187
                                    <option value="[% qualifier.code | html %]"> [% qualifier.description | html %] ([% qualifier.code | html %]) </option>
188
                                [% END %]
189
                            [% END %]
190
                        </select>
191
                    </li>
192
                    <li>
193
                        <label for="san">SAN: </label>
194
                        <input type="text" name="san" id="san" size="20" maxlength="20" value="[% account.san | html %]" />
195
                    </li>
196
                    <li>
197
                        <label for="standard">Standard:</label>
198
                        <select name="standard" id="standard">
199
                            [% FOREACH standard IN standards %]
200
                                [% IF standard == 'BIC' %]
201
                                    [% SET description = 'BiC' %]
202
                                [% ELSE %]
203
                                    [% SET description = 'EDItEUR' %]
204
                                [% END %]
205
                                [% IF standard == account.standard %]
206
                                    <option value="[% standard | html %]" selected="selected"> [% description | html %] </option>
207
                                [% ELSE %]
208
                                    <option value="[% standard | html %]"> [% description | html %] </option>
209
                                [% END %]
210
                            [% END %]
211
                        </select>
212
                    </li>
213
                    <li>
228
                    <li>
214
                        <label for="quotes_enabled">Quotes enabled: </label>
229
                        <label for="quotes_enabled">Quotes enabled: </label>
215
                        [% IF account.quotes_enabled %]
230
                        [% IF account.quotes_enabled %]
Lines 242-247 Link Here
242
                            <input type="checkbox" name="responses_enabled" id="responses_enabled" value="1" />
257
                            <input type="checkbox" name="responses_enabled" id="responses_enabled" value="1" />
243
                        [% END %]
258
                        [% END %]
244
                    </li>
259
                    </li>
260
                </ol>
261
            </fieldset>
262
263
            <!-- Functional Switches -->
264
            <fieldset class="rows">
265
                <legend>Functional Switches</legend>
266
                <ol>
245
                    <li>
267
                    <li>
246
                        <label for="auto_orders">Automatic ordering: </label>
268
                        <label for="auto_orders">Automatic ordering: </label>
247
                        [% IF account.auto_orders %]
269
                        [% IF account.auto_orders %]
Lines 251-256 Link Here
251
                        [% END %]
273
                        [% END %]
252
                        <div class="hint"> With automatic ordering quotes generate orders without staff intervention. </div>
274
                        <div class="hint"> With automatic ordering quotes generate orders without staff intervention. </div>
253
                    </li>
275
                    </li>
276
                    <li>
277
                        <label for="po_is_basketname">Use purchase order numbers: </label>
278
                        [% IF account.po_is_basketname %]
279
                            <input type="checkbox" name="po_is_basketname" id="po_is_basketname" value="1" checked="checked" />
280
                        [% ELSE %]
281
                            <input type="checkbox" name="po_is_basketname" id="po_is_basketname" value="1" />
282
                        [% END %]
283
                        <div class="hint">
284
                            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
285
                            basket name to populate the BGM segment.</div
286
                        >
287
                    </li>
254
                </ol>
288
                </ol>
255
            </fieldset>
289
            </fieldset>
256
290
257
- 

Return to bug 20253