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

(-)a/Koha/EDI.pm (-7 / +19 lines)
Lines 646-655 sub process_quote { Link Here
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
    if ( @{$messages} && $quote_message->vendor_id ) {
648
    if ( @{$messages} && $quote_message->vendor_id ) {
649
        # Get vendor EDI account configuration
650
        my $v = $schema->resultset('VendorEdiAccount')->search(
651
            {
652
                vendor_id => $quote_message->vendor_id,
653
            }
654
        )->single;
655
        
649
        foreach my $msg ( @{$messages} ) {
656
        foreach my $msg ( @{$messages} ) {
650
            ++$message_count;
657
            ++$message_count;
658
            
659
            # Determine basket name based on vendor configuration
660
            my $basket_name = $quote_message->filename;
661
            if ( $v && $v->basket_name_source && $v->basket_name_source eq 'purchase_order_number' ) {
662
                my $purchase_order_number = $msg->purchase_order_number;
663
                if ( $purchase_order_number ) {
664
                    $basket_name = $purchase_order_number;
665
                }
666
            }
667
            
651
            my $basketno = NewBasket(
668
            my $basketno = NewBasket(
652
                $quote_message->vendor_id, 0, $quote_message->filename, q{},
669
                $quote_message->vendor_id, 0, $basket_name, q{},
653
                q{} . q{}
670
                q{} . q{}
654
            );
671
            );
655
            push @added_baskets, $basketno;
672
            push @added_baskets, $basketno;
Lines 691-702 sub process_quote { Link Here
691
    $quote_message->status($status);
708
    $quote_message->status($status);
692
    $quote_message->update;    # status and basketno link
709
    $quote_message->update;    # status and basketno link
693
                               # Do we automatically generate orders for this vendor
710
                               # Do we automatically generate orders for this vendor
694
    my $v = $schema->resultset('VendorEdiAccount')->search(
711
    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) {
712
        for my $b (@added_baskets) {
701
            create_edi_order(
713
            create_edi_order(
702
                {
714
                {
(-)a/Koha/Edifact/Message.pm (+16 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} ) {
(-)a/admin/edi_accounts.pl (-11 / +12 lines)
Lines 75-99 if ( $op eq 'acct_form' ) { Link Here
75
        my $password = scalar $input->param('password');
75
        my $password = scalar $input->param('password');
76
        $password = $crypt->encrypt_hex($password);
76
        $password = $crypt->encrypt_hex($password);
77
        my $fields = {
77
        my $fields = {
78
            description   => scalar $input->param('description'),
78
            description        => scalar $input->param('description'),
79
            host          => scalar $input->param('host'),
79
            host               => scalar $input->param('host'),
80
            username      => scalar $input->param('username'),
80
            username           => scalar $input->param('username'),
81
            password      => $password,
81
            password           => $password,
82
            upload_port   => scalar $input->param('upload_port')   || $input->param('transport') eq 'FTP' ? 21 : 22,
82
            upload_port        => scalar $input->param('upload_port')   || $input->param('transport') eq 'FTP' ? 21 : 22,
83
            download_port => scalar $input->param('download_port') || $input->param('transport') eq 'FTP' ? 21 : 22,
83
            download_port      => scalar $input->param('download_port') || $input->param('transport') eq 'FTP' ? 21 : 22,
84
            vendor_id          => scalar $input->param('vendor_id'),
84
            vendor_id          => scalar $input->param('vendor_id'),
85
            upload_directory   => scalar $input->param('upload_directory'),
85
            upload_directory   => scalar $input->param('upload_directory'),
86
            download_directory => scalar $input->param('download_directory'),
86
            download_directory => scalar $input->param('download_directory'),
87
            san                => scalar $input->param('san'),
87
            san                => scalar $input->param('san'),
88
            standard           => scalar $input->param('standard'),
88
            standard           => scalar $input->param('standard'),
89
            transport          => scalar $input->param('transport'),
89
            transport          => scalar $input->param('transport'),
90
            quotes_enabled     => $input->param('quotes_enabled')    ? 1 : 0,
90
            quotes_enabled     => $input->param('quotes_enabled')     ? 1 : 0,
91
            invoices_enabled   => $input->param('invoices_enabled')  ? 1 : 0,
91
            invoices_enabled   => $input->param('invoices_enabled')   ? 1 : 0,
92
            orders_enabled     => $input->param('orders_enabled')    ? 1 : 0,
92
            orders_enabled     => $input->param('orders_enabled')     ? 1 : 0,
93
            responses_enabled  => $input->param('responses_enabled') ? 1 : 0,
93
            responses_enabled  => $input->param('responses_enabled')  ? 1 : 0,
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
            basket_name_source => scalar $input->param('basket_name_source') || 'filename',
97
        };
98
        };
98
99
99
        if ($id) {
100
        if ($id) {
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/edi_accounts.tt (-1 / +13 lines)
Lines 251-256 Link Here
251
                        [% END %]
251
                        [% END %]
252
                        <div class="hint"> With automatic ordering quotes generate orders without staff intervention. </div>
252
                        <div class="hint"> With automatic ordering quotes generate orders without staff intervention. </div>
253
                    </li>
253
                    </li>
254
                    <li>
255
                        <label for="basket_name_source">Basket name source: </label>
256
                        <select name="basket_name_source" id="basket_name_source">
257
                            [% IF account.basket_name_source == 'purchase_order_number' %]
258
                                <option value="filename">Quote filename</option>
259
                                <option value="purchase_order_number" selected="selected">Purchase order number (RFF+ON)</option>
260
                            [% ELSE %]
261
                                <option value="filename" selected="selected">Quote filename</option>
262
                                <option value="purchase_order_number">Purchase order number (RFF+ON)</option>
263
                            [% END %]
264
                        </select>
265
                        <div class="hint"> Determines how basket names are generated from quotes. Purchase order number uses RFF+ON segment from EDIFACT message if available, otherwise falls back to filename. </div>
266
                    </li>
254
                </ol>
267
                </ol>
255
            </fieldset>
268
            </fieldset>
256
269
257
- 

Return to bug 20253