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

(-)a/Koha/EDI.pm (-34 / +56 lines)
Lines 110-115 sub create_edi_order { Link Here
110
        )->single;
110
        )->single;
111
    }
111
    }
112
112
113
    unless ($ean_obj) {
114
        carp "No matching EAN found for $ean";
115
        return;
116
    }
117
113
    my $dbh     = C4::Context->dbh;
118
    my $dbh     = C4::Context->dbh;
114
    my $arr_ref = $dbh->selectcol_arrayref(
119
    my $arr_ref = $dbh->selectcol_arrayref(
115
        'select id from edifact_messages where basketno = ? and message_type = \'QUOTE\'',
120
        'select id from edifact_messages where basketno = ? and message_type = \'QUOTE\'',
Lines 290-296 sub process_invoice { Link Here
290
            if ( !$vendor_acct ) {
295
            if ( !$vendor_acct ) {
291
                $invoice_message->add_to_edifact_errors(
296
                $invoice_message->add_to_edifact_errors(
292
                    {
297
                    {
293
                        section => '',
298
                        section => "NAD+SU+" . $msg->supplier_ean,
294
                        details => "Skipped invoice $invoicenumber with unmatched vendor san: $vendor_ean"
299
                        details => "Skipped invoice $invoicenumber with unmatched vendor san: $vendor_ean"
295
                    }
300
                    }
296
                );
301
                );
Lines 299-305 sub process_invoice { Link Here
299
                next;
304
                next;
300
            }
305
            }
301
            $invoice_message->edi_acct( $vendor_acct->id );
306
            $invoice_message->edi_acct( $vendor_acct->id );
302
            $logger->trace("Adding invoice:$invoicenumber");
307
            $logger->trace("Adding invoice: $invoicenumber");
303
            my $new_invoice = $schema->resultset('Aqinvoice')->create(
308
            my $new_invoice = $schema->resultset('Aqinvoice')->create(
304
                {
309
                {
305
                    invoicenumber         => $invoicenumber,
310
                    invoicenumber         => $invoicenumber,
Lines 320-327 sub process_invoice { Link Here
320
                if ( !$ordernumber ) {
325
                if ( !$ordernumber ) {
321
                    $invoice_message->add_to_edifact_errors(
326
                    $invoice_message->add_to_edifact_errors(
322
                        {
327
                        {
323
                            section => $line->line_item_number,
328
                            section => join( "\n", map { $_->as_string } @{ $line->{segs} } ),
324
                            details => "Message missing ordernumber"
329
                            details => "Skipped invoice line " . $line->line_item_number . ", missing ordernumber"
325
                        }
330
                        }
326
                    );
331
                    );
327
                    $logger->error("Skipping invoice line, no associated ordernumber");
332
                    $logger->error("Skipping invoice line, no associated ordernumber");
Lines 333-340 sub process_invoice { Link Here
333
                if ( !$order ) {
338
                if ( !$order ) {
334
                    $invoice_message->add_to_edifact_errors(
339
                    $invoice_message->add_to_edifact_errors(
335
                        {
340
                        {
336
                            section => $line->line_item_number,
341
                            section => join( "\n", map { $_->as_string } @{ $line->{segs} } ),
337
                            details => "Koha order $ordernumber missing"
342
                            details => "Skipped invoice line "
343
                                . $line->line_item_number
344
                                . ", cannot find order with ordernumber "
345
                                . $ordernumber
338
                        }
346
                        }
339
                    );
347
                    );
340
                    $logger->error("Skipping invoice line, no order found for $ordernumber, invoice:$invoicenumber");
348
                    $logger->error("Skipping invoice line, no order found for $ordernumber, invoice:$invoicenumber");
Lines 345-352 sub process_invoice { Link Here
345
                if ( !$bib ) {
353
                if ( !$bib ) {
346
                    $invoice_message->add_to_edifact_errors(
354
                    $invoice_message->add_to_edifact_errors(
347
                        {
355
                        {
348
                            section => $line->line_item_number,
356
                            section => join( "\n", map { $_->as_string } @{ $line->{segs} } ),
349
                            details => "Koha biblio missing"
357
                            details => "Skipped invoice line "
358
                                . $line->line_item_number
359
                                . ", cannot find biblio for ordernumber "
360
                                . $ordernumber
350
                        }
361
                        }
351
                    );
362
                    );
352
                    $logger->error(
363
                    $logger->error(
Lines 476-483 sub receipt_items { Link Here
476
            my $i = $ilink->itemnumber;
487
            my $i = $ilink->itemnumber;
477
            $invoice_message->add_to_edifact_errors(
488
            $invoice_message->add_to_edifact_errors(
478
                {
489
                {
479
                    section => $inv_line->line_item_number,
490
                    section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ),
480
                    details => "Cannot fine aqorder item"
491
                    details => "Skipped invoice line "
492
                        . $inv_line->line_item_number
493
                        . ", Koha item with itemnumber "
494
                        . $i
495
                        . "is missing"
481
                }
496
                }
482
            );
497
            );
483
            $logger->warn("Cannot find aqorder item for $i: Order: $ordernumber");
498
            $logger->warn("Cannot find aqorder item for $i: Order: $ordernumber");
Lines 520-527 sub receipt_items { Link Here
520
                if ( $rs->count > 0 ) {
535
                if ( $rs->count > 0 ) {
521
                    $invoice_message->add_to_edifact_errors(
536
                    $invoice_message->add_to_edifact_errors(
522
                        {
537
                        {
523
                            section => $inv_line->line_item_number . " : " . $gir_occurrence,
538
                            section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ),
524
                            details => "Duplicate barcode found $barcode"
539
                            details => "Failed to assign barcode "
540
                                . $barcode
541
                                . "for invoice line "
542
                                . $inv_line->line_item_number
543
                                . ", duplicate found"
525
                        }
544
                        }
526
                    );
545
                    );
527
                    $logger->warn("Barcode $barcode is a duplicate");
546
                    $logger->warn("Barcode $barcode is a duplicate");
Lines 548-555 sub receipt_items { Link Here
548
        } else {
567
        } else {
549
            $invoice_message->add_to_edifact_errors(
568
            $invoice_message->add_to_edifact_errors(
550
                {
569
                {
551
                    section => $inv_line->line_item_number,
570
                    section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ),
552
                    details => "Unmatched item at branch $branch"
571
                    details => "No matching item found for invoice line "
572
                        . $inv_line->line_item_number . ":"
573
                        . $gir_occurrence
574
                        . " at branch $branch"
553
                }
575
                }
554
            );
576
            );
555
            $logger->warn("Unmatched item at branch:$branch");
577
            $logger->warn("Unmatched item at branch:$branch");
Lines 716-725 sub quote_item { Link Here
716
                details => "Failed to create basket"
738
                details => "Failed to create basket"
717
            }
739
            }
718
        );
740
        );
719
        $logger->error('Skipping order creation no valid basketno');
741
        $logger->error('Skipped order creation no valid basketno');
720
        return;
742
        return;
721
    }
743
    }
722
    $logger->trace( 'Checking db for matches with ', $item->item_number_id() );
744
    $logger->trace( 'Checking db for matches with ' . $item->item_number_id() );
723
    my $bib = _check_for_existing_bib( $item->item_number_id() );
745
    my $bib = _check_for_existing_bib( $item->item_number_id() );
724
    if ( !defined $bib ) {
746
    if ( !defined $bib ) {
725
        $bib = {};
747
        $bib = {};
Lines 730-738 sub quote_item { Link Here
730
752
731
        ( $bib->{biblionumber}, $bib->{biblioitemnumber} ) =
753
        ( $bib->{biblionumber}, $bib->{biblioitemnumber} ) =
732
            AddBiblio( $bib_record, q{} );
754
            AddBiblio( $bib_record, q{} );
733
        $logger->trace("New biblio added $bib->{biblionumber}");
755
        $logger->trace( "Added biblio: " . $bib->{biblionumber} );
734
    } else {
756
    } else {
735
        $logger->trace("Match found: $bib->{biblionumber}");
757
        $logger->trace( "Match found: " . $bib->{biblionumber} );
736
    }
758
    }
737
759
738
    # Create an orderline
760
    # Create an orderline
Lines 745-751 sub quote_item { Link Here
745
        if ( $gir_count != $order_quantity ) {
767
        if ( $gir_count != $order_quantity ) {
746
            $quote_message->add_to_edifact_errors(
768
            $quote_message->add_to_edifact_errors(
747
                {
769
                {
748
                    section => "GIR",
770
                    section => join( '\n', @{ $item->{GIR} } ),
749
                    details => "Order for $order_quantity items, $gir_count segments present"
771
                    details => "Order for $order_quantity items, $gir_count segments present"
750
                }
772
                }
751
            );
773
            );
Lines 829-848 sub quote_item { Link Here
829
        if ( $item->quantity > 1 ) {
851
        if ( $item->quantity > 1 ) {
830
            $quote_message->add_to_edifact_errors(
852
            $quote_message->add_to_edifact_errors(
831
                {
853
                {
832
                    section => "GIR",
854
                    section => join( '\n', @{ $item->{GIR} } ),
833
                    details => "Skipped GIR line with invalid budget: " . $item->girfield('fund_allocation')
855
                    details => "Skipped GIR line with invalid budget: " . $item->girfield('fund_allocation')
834
                }
856
                }
835
            );
857
            );
836
            $logger->trace('girfield skipped for invalid budget');
858
            $logger->trace( 'Skipping item with invalid budget: ' . $item->girfield('fund_allocation') );
837
            $skip++;
859
            $skip++;
838
        } else {
860
        } else {
839
            $quote_message->add_to_edifact_errors(
861
            $quote_message->add_to_edifact_errors(
840
                {
862
                {
841
                    section => "GIR",
863
                    section => join( "\n", map { $_->as_string } @{ $item->{segs} } ),
842
                    details => "Skipped orderline line with invalid budget: " . $item->girfield('fund_allocation')
864
                    details => "Skipped orderline line with invalid budget: " . $item->girfield('fund_allocation')
843
                }
865
                }
844
            );
866
            );
845
            $logger->trace('orderline skipped for invalid budget');
867
            $logger->trace( 'Skipping orderline with invalid budget: ' . $item->girfield('fund_allocation') );
846
            return;
868
            return;
847
        }
869
        }
848
    }
870
    }
Lines 876-882 sub quote_item { Link Here
876
                $item_hash->{biblioitemnumber} = $bib->{biblioitemnumber};
898
                $item_hash->{biblioitemnumber} = $bib->{biblioitemnumber};
877
                my $kitem      = Koha::Item->new($item_hash)->store;
899
                my $kitem      = Koha::Item->new($item_hash)->store;
878
                my $itemnumber = $kitem->itemnumber;
900
                my $itemnumber = $kitem->itemnumber;
879
                $logger->trace("Added item:$itemnumber");
901
                $logger->trace( "Added item: " . $itemnumber );
880
                $schema->resultset('AqordersItem')->create(
902
                $schema->resultset('AqordersItem')->create(
881
                    {
903
                    {
882
                        ordernumber => $first_order->ordernumber,
904
                        ordernumber => $first_order->ordernumber,
Lines 893-904 sub quote_item { Link Here
893
                    );
915
                    );
894
                    if ($rota) {
916
                    if ($rota) {
895
                        $rota->add_item($itemnumber);
917
                        $rota->add_item($itemnumber);
896
                        $logger->trace("Item added to rota $rota->id");
918
                        $logger->trace( "Item added to rota " . $rota->title );
897
                    } else {
919
                    } else {
898
                        $quote_message->add_to_edifact_errors(
920
                        $quote_message->add_to_edifact_errors(
899
                            {
921
                            {
900
                                section => "LRP",
922
                                section => "$item->{GIR}->[0]",
901
                                details => "No rota found for passed $lrp in orderline"
923
                                details => "No rota found for passed LRP:$lrp in orderline"
902
                            }
924
                            }
903
                        );
925
                        );
904
                        $logger->error("No rota found matching $lrp in orderline");
926
                        $logger->error("No rota found matching $lrp in orderline");
Lines 922-932 sub quote_item { Link Here
922
                my $bad_budget = $item->girfield( 'fund_allocation', $occurrence );
944
                my $bad_budget = $item->girfield( 'fund_allocation', $occurrence );
923
                $quote_message->add_to_edifact_errors(
945
                $quote_message->add_to_edifact_errors(
924
                    {
946
                    {
925
                        section => "GIR",
947
                        section => "$item->{GIR}->[$occurrence]",
926
                        details => "Skipped GIR line with invalid budget: $bad_budget"
948
                        details => "Invalid budget $bad_budget found"
927
                    }
949
                    }
928
                );
950
                );
929
                $logger->trace("girfield skipped for invalid budget:$bad_budget");
951
                $logger->trace( "Skipping item with invalid budget: " . $bad_budget );
930
                ++$occurrence;    ## lets look at the next one not this one again
952
                ++$occurrence;    ## lets look at the next one not this one again
931
                next;
953
                next;
932
            }
954
            }
Lines 1009-1016 sub quote_item { Link Here
1009
                        } else {
1031
                        } else {
1010
                            $quote_message->add_to_edifact_errors(
1032
                            $quote_message->add_to_edifact_errors(
1011
                                {
1033
                                {
1012
                                    section => "LRP",
1034
                                    section => "$item->{GIR}->[$occurrence]",
1013
                                    details => "No rota found for passed $lrp in orderline"
1035
                                    details => "No rota found for passed LRP:$lrp in orderline"
1014
                                }
1036
                                }
1015
                            );
1037
                            );
1016
                            $logger->error("No rota found matching $lrp in orderline");
1038
                            $logger->error("No rota found matching $lrp in orderline");
Lines 1076-1083 sub quote_item { Link Here
1076
                        } else {
1098
                        } else {
1077
                            $quote_message->add_to_edifact_errors(
1099
                            $quote_message->add_to_edifact_errors(
1078
                                {
1100
                                {
1079
                                    section => "LRP",
1101
                                    section => "$item->{GIR}->[$occurrence]",
1080
                                    details => "No rota found for passed $lrp in orderline"
1102
                                    details => "No rota found for passed LRP:$lrp in orderline"
1081
                                }
1103
                                }
1082
                            );
1104
                            );
1083
                            $logger->error("No rota found matching $lrp in orderline");
1105
                            $logger->error("No rota found matching $lrp in orderline");
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/edifactmsgs.tt (-2 / +6 lines)
Lines 116-122 Link Here
116
                                let errorsList = '<ul>';
116
                                let errorsList = '<ul>';
117
                                row.errors.forEach(error => {
117
                                row.errors.forEach(error => {
118
                                    if (error.details) {
118
                                    if (error.details) {
119
                                        errorsList += '<li>' + error.details + '</li>';
119
                                        errorsList += '<li>'
120
                                        errorsList += error.details
121
                                        if (error.section) {
122
                                            errorsList += '</br><pre>' + error.section + '</pre>';
123
                                        }
124
                                        errorsList += '</li>';
120
                                    }
125
                                    }
121
                                });
126
                                });
122
                                errorsList += '</ul>';
127
                                errorsList += '</ul>';
123
- 

Return to bug 38689