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

(-)a/Koha/EDI.pm (-21 / +25 lines)
Lines 44-49 use Koha::Plugins; # Adds plugin dirs to @INC Link Here
44
use Koha::Plugins::Handler;
44
use Koha::Plugins::Handler;
45
use Koha::Acquisition::Baskets;
45
use Koha::Acquisition::Baskets;
46
use Koha::Acquisition::Booksellers;
46
use Koha::Acquisition::Booksellers;
47
use Koha::Acquisition::Orders;
48
use Koha::EDI::Accounts;
47
use Koha::Util::FrameworkPlugin qw( biblio_008 );
49
use Koha::Util::FrameworkPlugin qw( biblio_008 );
48
50
49
our $VERSION = 1.1;
51
our $VERSION = 1.1;
Lines 77-97 sub create_edi_order { Link Here
77
79
78
    my $schema = Koha::Database->new()->schema();
80
    my $schema = Koha::Database->new()->schema();
79
81
80
    my @orderlines = $schema->resultset('Aqorder')->search(
82
    my $orderlines = Koha::Acquisition::Orders->search(
81
        {
83
        {
82
            basketno    => $basketno,
84
            basketno    => $basketno,
83
            orderstatus => 'new',
85
            orderstatus => 'new',
84
        }
86
        }
85
    )->all;
87
    );
86
88
87
    if ( !@orderlines ) {
89
    if ( !$orderlines->count ) {
88
        $logger->warn("No orderlines for basket $basketno");
90
        $logger->warn("No orderlines for basket $basketno");
89
        return;
91
        return;
90
    }
92
    }
91
93
92
    my $vendor = $schema->resultset('VendorEdiAccount')->search(
94
    my $first_order = $orderlines->next;
95
    $orderlines->reset;    # Reset iterator for later use
96
97
    my $edi_account = Koha::EDI::Accounts->search(
93
        {
98
        {
94
            vendor_id => $orderlines[0]->basketno->booksellerid->id,
99
            vendor_id => $first_order->basket->booksellerid,
95
        }
100
        }
96
    )->single;
101
    )->single;
97
102
Lines 124-140 sub create_edi_order { Link Here
124
    my $response = @{$arr_ref} ? 1 : 0;
129
    my $response = @{$arr_ref} ? 1 : 0;
125
130
126
    my $edifact_order_params = {
131
    my $edifact_order_params = {
127
        orderlines  => \@orderlines,
132
        orderlines  => [ $orderlines->_resultset->all ],
128
        vendor      => $vendor,
133
        vendor      => $edi_account,
129
        ean         => $ean_obj,
134
        ean         => $ean_obj,
130
        is_response => $response,
135
        is_response => $response,
131
    };
136
    };
132
137
133
    my $edifact;
138
    my $edifact;
134
    if ( $vendor->plugin ) {
139
    if ( $edi_account->plugin ) {
135
        $edifact = Koha::Plugins::Handler->run(
140
        $edifact = Koha::Plugins::Handler->run(
136
            {
141
            {
137
                class  => $vendor->plugin,
142
                class  => $edi_account->plugin,
138
                method => 'edifact_order',
143
                method => 'edifact_order',
139
                params => {
144
                params => {
140
                    params => $edifact_order_params,
145
                    params => $edifact_order_params,
Lines 158-169 sub create_edi_order { Link Here
158
        my $order = {
163
        my $order = {
159
            message_type  => 'ORDERS',
164
            message_type  => 'ORDERS',
160
            raw_msg       => $m,
165
            raw_msg       => $m,
161
            vendor_id     => $vendor->vendor_id,
166
            vendor_id     => $edi_account->vendor_id,
162
            status        => 'Pending',
167
            status        => 'Pending',
163
            basketno      => $basketno,
168
            basketno      => $basketno,
164
            filename      => $edifact->filename(),
169
            filename      => $edifact->filename(),
165
            transfer_date => $edifact->msg_date_string(),
170
            transfer_date => $edifact->msg_date_string(),
166
            edi_acct      => $vendor->id,
171
            edi_acct      => $edi_account->id,
167
172
168
        };
173
        };
169
        $schema->resultset('EdifactMessage')->create($order);
174
        $schema->resultset('EdifactMessage')->create($order);
Lines 287-293 sub process_invoice { Link Here
287
292
288
            my $vendor_ean = $msg->supplier_ean;
293
            my $vendor_ean = $msg->supplier_ean;
289
            if ( !defined $vendor_acct || $vendor_ean ne $vendor_acct->san ) {
294
            if ( !defined $vendor_acct || $vendor_ean ne $vendor_acct->san ) {
290
                $vendor_acct = $schema->resultset('VendorEdiAccount')->search(
295
                $vendor_acct = Koha::EDI::Accounts->search(
291
                    {
296
                    {
292
                        san => $vendor_ean,
297
                        san => $vendor_ean,
293
                    }
298
                    }
Lines 335-341 sub process_invoice { Link Here
335
                }
340
                }
336
341
337
                # ModReceiveOrder does not validate that $ordernumber exists validate here
342
                # ModReceiveOrder does not validate that $ordernumber exists validate here
338
                my $order = $schema->resultset('Aqorder')->find($ordernumber);
343
                my $order = Koha::Acquisition::Orders->find($ordernumber);
339
                if ( !$order ) {
344
                if ( !$order ) {
340
                    $invoice_message->add_to_edifact_errors(
345
                    $invoice_message->add_to_edifact_errors(
341
                        {
346
                        {
Lines 350-356 sub process_invoice { Link Here
350
                    next;
355
                    next;
351
                }
356
                }
352
357
353
                my $bib = $order->biblionumber;
358
                my $bib = $order->biblio;
354
                if ( !$bib ) {
359
                if ( !$bib ) {
355
                    $invoice_message->add_to_edifact_errors(
360
                    $invoice_message->add_to_edifact_errors(
356
                        {
361
                        {
Lines 404-410 sub process_invoice { Link Here
404
                    $order->orderstatus('partial');
409
                    $order->orderstatus('partial');
405
                    $order->quantity( $ordered - $quantity );
410
                    $order->quantity( $ordered - $quantity );
406
                    $order->update;
411
                    $order->update;
407
                    my $received_order = $order->copy(
412
                    my $received_order = $order->_result->copy(
408
                        {
413
                        {
409
                            ordernumber            => undef,
414
                            ordernumber            => undef,
410
                            quantity               => $quantity,
415
                            quantity               => $quantity,
Lines 695-706 sub process_quote { Link Here
695
    $quote_message->status($status);
700
    $quote_message->status($status);
696
    $quote_message->update;    # status and basketno link
701
    $quote_message->update;    # status and basketno link
697
                               # Do we automatically generate orders for this vendor
702
                               # Do we automatically generate orders for this vendor
698
    my $v = $schema->resultset('VendorEdiAccount')->search(
703
    my $edi_account = Koha::EDI::Accounts->search(
699
        {
704
        {
700
            vendor_id => $quote_message->vendor_id,
705
            vendor_id => $quote_message->vendor_id,
701
        }
706
        }
702
    )->single;
707
    )->single;
703
    if ( $v->auto_orders ) {
708
    if ( $edi_account->auto_orders ) {
704
        for my $b (@added_baskets) {
709
        for my $b (@added_baskets) {
705
            create_edi_order(
710
            create_edi_order(
706
                {
711
                {
Lines 879-885 sub quote_item { Link Here
879
884
880
    if ( !$skip ) {
885
    if ( !$skip ) {
881
        $order_hash->{budget_id} = $budget->budget_id;
886
        $order_hash->{budget_id} = $budget->budget_id;
882
        my $first_order = $schema->resultset('Aqorder')->create($order_hash);
887
        my $first_order = Koha::Acquisition::Order->new($order_hash)->store;
883
        my $o           = $first_order->ordernumber();
888
        my $o           = $first_order->ordernumber();
884
        $logger->trace("Order created: $o");
889
        $logger->trace("Order created: $o");
885
890
Lines 965-971 sub quote_item { Link Here
965
970
966
                $order_hash->{budget_id} = $budget->budget_id;
971
                $order_hash->{budget_id} = $budget->budget_id;
967
972
968
                my $new_order = $schema->resultset('Aqorder')->create($order_hash);
973
                my $new_order = Koha::Acquisition::Order->new($order_hash)->store;
969
                my $o         = $new_order->ordernumber();
974
                my $o         = $new_order->ordernumber();
970
                $logger->trace("Order created: $o");
975
                $logger->trace("Order created: $o");
971
976
Lines 1049-1055 sub quote_item { Link Here
1049
1054
1050
            # increment quantity in orderline for EXISTING budget in $budgets
1055
            # increment quantity in orderline for EXISTING budget in $budgets
1051
            else {
1056
            else {
1052
                my $row = $schema->resultset('Aqorder')->find( { ordernumber => $ordernumber{ $budget->budget_id } } );
1057
                my $row = Koha::Acquisition::Orders->find( { ordernumber => $ordernumber{ $budget->budget_id } } );
1053
                if ($row) {
1058
                if ($row) {
1054
                    my $qty = $row->quantity;
1059
                    my $qty = $row->quantity;
1055
                    $qty++;
1060
                    $qty++;
1056
- 

Return to bug 38195