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 292-298 sub process_invoice { Link Here
292
            if ( !$vendor_acct ) {
297
            if ( !$vendor_acct ) {
293
                $invoice_message->add_to_edifact_errors(
298
                $invoice_message->add_to_edifact_errors(
294
                    {
299
                    {
295
                        section => '',
300
                        section => "NAD+SU+" . $msg->supplier_ean,
296
                        details => "Skipped invoice $invoicenumber with unmatched vendor san: $vendor_ean"
301
                        details => "Skipped invoice $invoicenumber with unmatched vendor san: $vendor_ean"
297
                    }
302
                    }
298
                );
303
                );
Lines 300-306 sub process_invoice { Link Here
300
                next;
305
                next;
301
            }
306
            }
302
            $invoice_message->edi_acct( $vendor_acct->id );
307
            $invoice_message->edi_acct( $vendor_acct->id );
303
            $logger->trace("Adding invoice:$invoicenumber");
308
            $logger->trace("Adding invoice: $invoicenumber");
304
            my $new_invoice = $schema->resultset('Aqinvoice')->create(
309
            my $new_invoice = $schema->resultset('Aqinvoice')->create(
305
                {
310
                {
306
                    invoicenumber         => $invoicenumber,
311
                    invoicenumber         => $invoicenumber,
Lines 321-328 sub process_invoice { Link Here
321
                if ( !$ordernumber ) {
326
                if ( !$ordernumber ) {
322
                    $invoice_message->add_to_edifact_errors(
327
                    $invoice_message->add_to_edifact_errors(
323
                        {
328
                        {
324
                            section => $line->line_item_number,
329
                            section => join("\n", map { $_->as_string } @{$line->{segs}}),
325
                            details => "Message missing ordernumber"
330
                            details => "Skipped invoice line " . $line->line_item_number . ", missing ordernumber"
326
                        }
331
                        }
327
                    );
332
                    );
328
                    $logger->error("Skipping invoice line, no associated ordernumber");
333
                    $logger->error("Skipping invoice line, no associated ordernumber");
Lines 334-341 sub process_invoice { Link Here
334
                if ( !$order ) {
339
                if ( !$order ) {
335
                    $invoice_message->add_to_edifact_errors(
340
                    $invoice_message->add_to_edifact_errors(
336
                        {
341
                        {
337
                            section => $line->line_item_number,
342
                            section => join( "\n", map { $_->as_string } @{ $line->{segs} } ),
338
                            details => "Koha order $ordernumber missing"
343
                            details => "Skipped invoice line "
344
                                . $line->line_item_number
345
                                . ", cannot find order with ordernumber "
346
                                . $ordernumber
339
                        }
347
                        }
340
                    );
348
                    );
341
                    $logger->error("Skipping invoice line, no order found for $ordernumber, invoice:$invoicenumber");
349
                    $logger->error("Skipping invoice line, no order found for $ordernumber, invoice:$invoicenumber");
Lines 346-353 sub process_invoice { Link Here
346
                if ( !$bib ) {
354
                if ( !$bib ) {
347
                    $invoice_message->add_to_edifact_errors(
355
                    $invoice_message->add_to_edifact_errors(
348
                        {
356
                        {
349
                            section => $line->line_item_number,
357
                            section => join( "\n", map { $_->as_string } @{ $line->{segs} } ),
350
                            details => "Koha biblio missing"
358
                            details => "Skipped invoice line "
359
                                . $line->line_item_number
360
                                . ", cannot find biblio for ordernumber "
361
                                . $ordernumber
351
                        }
362
                        }
352
                    );
363
                    );
353
                    $logger->error(
364
                    $logger->error(
Lines 477-484 sub receipt_items { Link Here
477
            my $i = $ilink->itemnumber;
488
            my $i = $ilink->itemnumber;
478
            $invoice_message->add_to_edifact_errors(
489
            $invoice_message->add_to_edifact_errors(
479
                {
490
                {
480
                    section => $inv_line->line_item_number,
491
                    section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ),
481
                    details => "Cannot fine aqorder item"
492
                    details => "Skipped invoice line "
493
                        . $inv_line->line_item_number
494
                        . ", Koha item with itemnumber "
495
                        . $i
496
                        . "is missing"
482
                }
497
                }
483
            );
498
            );
484
            $logger->warn(
499
            $logger->warn(
Lines 522-529 sub receipt_items { Link Here
522
                if ( $rs->count > 0 ) {
537
                if ( $rs->count > 0 ) {
523
                    $invoice_message->add_to_edifact_errors(
538
                    $invoice_message->add_to_edifact_errors(
524
                        {
539
                        {
525
                            section => $inv_line->line_item_number . " : " . $gir_occurrence,
540
                            section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ),
526
                            details => "Duplicate barcode found $barcode"
541
                            details => "Failed to assign barcode "
542
                                . $barcode
543
                                . "for invoice line "
544
                                . $inv_line->line_item_number
545
                                . ", duplicate found"
527
                        }
546
                        }
528
                    );
547
                    );
529
                    $logger->warn("Barcode $barcode is a duplicate");
548
                    $logger->warn("Barcode $barcode is a duplicate");
Lines 552-559 sub receipt_items { Link Here
552
        else {
571
        else {
553
            $invoice_message->add_to_edifact_errors(
572
            $invoice_message->add_to_edifact_errors(
554
                {
573
                {
555
                    section => $inv_line->line_item_number,
574
                    section => join("\n", map { $_->as_string } @{$inv_line->{segs}}),
556
                    details => "Unmatched item at branch $branch"
575
                    details => "No matching item found for invoice line "
576
                        . $inv_line->line_item_number . ":"
577
                        . $gir_occurrence
578
                        . " at branch $branch"
557
                }
579
                }
558
            );
580
            );
559
            $logger->warn("Unmatched item at branch:$branch");
581
            $logger->warn("Unmatched item at branch:$branch");
Lines 722-731 sub quote_item { Link Here
722
                details => "Failed to create basket"
744
                details => "Failed to create basket"
723
            }
745
            }
724
        );
746
        );
725
        $logger->error('Skipping order creation no valid basketno');
747
        $logger->error('Skipped order creation no valid basketno');
726
        return;
748
        return;
727
    }
749
    }
728
    $logger->trace( 'Checking db for matches with ', $item->item_number_id() );
750
    $logger->trace( 'Checking db for matches with ' . $item->item_number_id() );
729
    my $bib = _check_for_existing_bib( $item->item_number_id() );
751
    my $bib = _check_for_existing_bib( $item->item_number_id() );
730
    if ( !defined $bib ) {
752
    if ( !defined $bib ) {
731
        $bib = {};
753
        $bib = {};
Lines 736-745 sub quote_item { Link Here
736
758
737
        ( $bib->{biblionumber}, $bib->{biblioitemnumber} ) =
759
        ( $bib->{biblionumber}, $bib->{biblioitemnumber} ) =
738
          AddBiblio( $bib_record, q{} );
760
          AddBiblio( $bib_record, q{} );
739
        $logger->trace("New biblio added $bib->{biblionumber}");
761
        $logger->trace("Added biblio: ". $bib->{biblionumber});
740
    }
762
    }
741
    else {
763
    else {
742
        $logger->trace("Match found: $bib->{biblionumber}");
764
        $logger->trace("Match found: " .$bib->{biblionumber});
743
    }
765
    }
744
766
745
    # Create an orderline
767
    # Create an orderline
Lines 752-758 sub quote_item { Link Here
752
        if ( $gir_count != $order_quantity ) {
774
        if ( $gir_count != $order_quantity ) {
753
            $quote_message->add_to_edifact_errors(
775
            $quote_message->add_to_edifact_errors(
754
                {
776
                {
755
                    section => "GIR",
777
                    section => join('\n', @{$item->{GIR}}),
756
                    details => "Order for $order_quantity items, $gir_count segments present"
778
                    details => "Order for $order_quantity items, $gir_count segments present"
757
                }
779
                }
758
            );
780
            );
Lines 838-857 sub quote_item { Link Here
838
        if ( $item->quantity > 1 ) {
860
        if ( $item->quantity > 1 ) {
839
            $quote_message->add_to_edifact_errors(
861
            $quote_message->add_to_edifact_errors(
840
                {
862
                {
841
                    section => "GIR",
863
                    section => join( '\n', @{ $item->{GIR} } ),
842
                    details => "Skipped GIR line with invalid budget: " . $item->girfield('fund_allocation')
864
                    details => "Skipped GIR line with invalid budget: " . $item->girfield('fund_allocation')
843
                }
865
                }
844
            );
866
            );
845
            $logger->trace('girfield skipped for invalid budget');
867
            $logger->trace( 'Skipping item with invalid budget: ' . $item->girfield('fund_allocation') );
846
            $skip++;
868
            $skip++;
847
        } else {
869
        } else {
848
            $quote_message->add_to_edifact_errors(
870
            $quote_message->add_to_edifact_errors(
849
                {
871
                {
850
                    section => "GIR",
872
                    section => join( "\n", map { $_->as_string } @{ $item->{segs} } ),
851
                    details => "Skipped orderline line with invalid budget: " . $item->girfield('fund_allocation')
873
                    details => "Skipped orderline line with invalid budget: " . $item->girfield('fund_allocation')
852
                }
874
                }
853
            );
875
            );
854
            $logger->trace('orderline skipped for invalid budget');
876
            $logger->trace( 'Skipping orderline with invalid budget: ' . $item->girfield('fund_allocation') );
855
            return;
877
            return;
856
        }
878
        }
857
    }
879
    }
Lines 885-891 sub quote_item { Link Here
885
                $item_hash->{biblioitemnumber} = $bib->{biblioitemnumber};
907
                $item_hash->{biblioitemnumber} = $bib->{biblioitemnumber};
886
                my $kitem = Koha::Item->new( $item_hash )->store;
908
                my $kitem = Koha::Item->new( $item_hash )->store;
887
                my $itemnumber = $kitem->itemnumber;
909
                my $itemnumber = $kitem->itemnumber;
888
                $logger->trace("Added item:$itemnumber");
910
                $logger->trace("Added item: ". $itemnumber);
889
                $schema->resultset('AqordersItem')->create(
911
                $schema->resultset('AqordersItem')->create(
890
                    {
912
                    {
891
                        ordernumber => $first_order->ordernumber,
913
                        ordernumber => $first_order->ordernumber,
Lines 902-913 sub quote_item { Link Here
902
                    );
924
                    );
903
                    if ($rota) {
925
                    if ($rota) {
904
                        $rota->add_item($itemnumber);
926
                        $rota->add_item($itemnumber);
905
                        $logger->trace("Item added to rota $rota->id");
927
                        $logger->trace("Item added to rota " . $rota->title);
906
                    } else {
928
                    } else {
907
                        $quote_message->add_to_edifact_errors(
929
                        $quote_message->add_to_edifact_errors(
908
                            {
930
                            {
909
                                section => "LRP",
931
                                section => "$item->{GIR}->[0]",
910
                                details => "No rota found for passed $lrp in orderline"
932
                                details => "No rota found for passed LRP:$lrp in orderline"
911
                            }
933
                            }
912
                        );
934
                        );
913
                        $logger->error("No rota found matching $lrp in orderline");
935
                        $logger->error("No rota found matching $lrp in orderline");
Lines 930-941 sub quote_item { Link Here
930
                  $item->girfield( 'fund_allocation', $occurrence );
952
                  $item->girfield( 'fund_allocation', $occurrence );
931
                $quote_message->add_to_edifact_errors(
953
                $quote_message->add_to_edifact_errors(
932
                    {
954
                    {
933
                        section => "GIR",
955
                        section => "$item->{GIR}->[$occurrence]",
934
                        details => "Skipped GIR line with invalid budget: $bad_budget"
956
                        details => "Invalid budget $bad_budget found"
935
                    }
957
                    }
936
                );
958
                );
937
                $logger->trace(
959
                $logger->trace(
938
                    "girfield skipped for invalid budget:$bad_budget");
960
                    "Skipping item with invalid budget: " . $bad_budget);
939
                ++$occurrence;    ## lets look at the next one not this one again
961
                ++$occurrence;    ## lets look at the next one not this one again
940
                next;
962
                next;
941
            }
963
            }
Lines 1025-1032 sub quote_item { Link Here
1025
                        else {
1047
                        else {
1026
                            $quote_message->add_to_edifact_errors(
1048
                            $quote_message->add_to_edifact_errors(
1027
                                {
1049
                                {
1028
                                    section => "LRP",
1050
                                    section => "$item->{GIR}->[$occurrence]",
1029
                                    details => "No rota found for passed $lrp in orderline"
1051
                                    details => "No rota found for passed LRP:$lrp in orderline"
1030
                                }
1052
                                }
1031
                            );
1053
                            );
1032
                            $logger->error(
1054
                            $logger->error(
Lines 1101-1108 sub quote_item { Link Here
1101
                        else {
1123
                        else {
1102
                            $quote_message->add_to_edifact_errors(
1124
                            $quote_message->add_to_edifact_errors(
1103
                                {
1125
                                {
1104
                                    section => "LRP",
1126
                                    section => "$item->{GIR}->[$occurrence]",
1105
                                    details => "No rota found for passed $lrp in orderline"
1127
                                    details => "No rota found for passed LRP:$lrp in orderline"
1106
                                }
1128
                                }
1107
                            );
1129
                            );
1108
                            $logger->error(
1130
                            $logger->error(
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/edifactmsgs.tt (-2 / +6 lines)
Lines 130-136 Link Here
130
                                let errorsList = '<ul>';
130
                                let errorsList = '<ul>';
131
                                row.errors.forEach(error => {
131
                                row.errors.forEach(error => {
132
                                    if (error.details) {
132
                                    if (error.details) {
133
                                        errorsList += '<li>' + error.details + '</li>';
133
                                        errorsList += '<li>'
134
                                        errorsList += error.details
135
                                        if (error.section) {
136
                                            errorsList += '</br><pre>' + error.section + '</pre>';
137
                                        }
138
                                        errorsList += '</li>';
134
                                    }
139
                                    }
135
                                });
140
                                });
136
                                errorsList += '</ul>';
141
                                errorsList += '</ul>';
137
- 

Return to bug 38689