Bugzilla – Attachment 194505 Details for
Bug 41996
Further improvements to EDIFACT error recording
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 41996: Thread invoicenumber through EDI invoice error recording
6149e37.patch (text/plain), 8.40 KB, created by
Martin Renvoize (ashimema)
on 2026-03-05 13:02:48 UTC
(
hide
)
Description:
Bug 41996: Thread invoicenumber through EDI invoice error recording
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2026-03-05 13:02:48 UTC
Size:
8.40 KB
patch
obsolete
>From 6149e3747f3e5e2ff73169fc86a8274502fe0d74 Mon Sep 17 00:00:00 2001 >From: Martin Renvoize <martin.renvoize@openfifth.co.uk> >Date: Thu, 5 Mar 2026 11:57:08 +0000 >Subject: [PATCH] Bug 41996: Thread invoicenumber through EDI invoice error > recording > >All errors generated during process_invoice and receipt_items now >store the invoicenumber of the specific invoice being processed. This >allows errors to be displayed only on the relevant invoice page rather >than appearing on every invoice generated from the same EDI file. > >Also fixes two pre-existing spacing bugs in error message strings >("itemnumberis missing" and "barcode"for invoice line"). >--- > Koha/EDI.pm | 51 ++++++++++++++++++++++++++++++--------------------- > 1 file changed, 30 insertions(+), 21 deletions(-) > >diff --git a/Koha/EDI.pm b/Koha/EDI.pm >index 053d5d71cea..87904c0c2e7 100644 >--- a/Koha/EDI.pm >+++ b/Koha/EDI.pm >@@ -319,8 +319,9 @@ sub process_invoice { > if ( !$vendor_acct ) { > $invoice_message->add_to_edifact_errors( > { >- section => "NAD+SU+" . $msg->supplier_ean, >- details => "Skipped invoice $invoicenumber with unmatched vendor san: $vendor_ean" >+ invoicenumber => $invoicenumber, >+ section => "NAD+SU+" . $msg->supplier_ean, >+ details => "Skipped invoice $invoicenumber with unmatched vendor san: $vendor_ean" > } > ); > $logger->error( "Cannot find vendor with ean $vendor_ean for invoice $invoicenumber in " >@@ -349,8 +350,9 @@ sub process_invoice { > if ( !$ordernumber ) { > $invoice_message->add_to_edifact_errors( > { >- section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), >- details => "Skipped invoice line " . $line->line_item_number . ", missing ordernumber" >+ invoicenumber => $invoicenumber, >+ section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), >+ details => "Skipped invoice line " . $line->line_item_number . ", missing ordernumber" > } > ); > $logger->error("Skipping invoice line, no associated ordernumber"); >@@ -362,8 +364,9 @@ sub process_invoice { > if ( !$order ) { > $invoice_message->add_to_edifact_errors( > { >- section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), >- details => "Skipped invoice line " >+ invoicenumber => $invoicenumber, >+ section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), >+ details => "Skipped invoice line " > . $line->line_item_number > . ", cannot find order with ordernumber " > . $ordernumber >@@ -377,8 +380,9 @@ sub process_invoice { > if ( !$bib ) { > $invoice_message->add_to_edifact_errors( > { >- section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), >- details => "Skipped invoice line " >+ invoicenumber => $invoicenumber, >+ section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), >+ details => "Skipped invoice line " > . $line->line_item_number > . ", cannot find biblio for ordernumber " > . $ordernumber >@@ -396,8 +400,9 @@ sub process_invoice { > if ( $order->orderstatus eq 'complete' ) { > $invoice_message->add_to_edifact_errors( > { >- section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), >- details => "Warning: invoice line " >+ invoicenumber => $invoicenumber, >+ section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), >+ details => "Warning: invoice line " > . $line->line_item_number > . " references ordernumber " > . $ordernumber >@@ -464,7 +469,8 @@ sub process_invoice { > transfer_items( $schema, $line, $order, $received_order, $quantity ); > receipt_items( > $schema, $line, >- $received_order->ordernumber, $quantity, $invoice_message >+ $received_order->ordernumber, $quantity, $invoice_message, >+ $invoicenumber > ); > } else { # simple receipt all copies on order > $order->quantityreceived($quantity); >@@ -478,7 +484,7 @@ sub process_invoice { > $quantity * $price_excl_tax * ( $tax_rate ? $tax_rate->{rate} : 0 ) ); > $order->orderstatus('complete'); > $order->update; >- receipt_items( $schema, $line, $ordernumber, $quantity, $invoice_message ); >+ receipt_items( $schema, $line, $ordernumber, $quantity, $invoice_message, $invoicenumber ); > } > } > } >@@ -515,7 +521,7 @@ sub _get_invoiced_price { > } > > sub receipt_items { >- my ( $schema, $inv_line, $ordernumber, $quantity, $invoice_message ) = @_; >+ my ( $schema, $inv_line, $ordernumber, $quantity, $invoice_message, $invoicenumber ) = @_; > my $logger = Koha::Logger->get( { interface => 'edi' } ); > > # itemnumber is not a foreign key ??? makes this a bit cumbersome >@@ -531,12 +537,13 @@ sub receipt_items { > my $i = $ilink->itemnumber; > $invoice_message->add_to_edifact_errors( > { >- section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), >- details => "Skipped invoice line " >+ invoicenumber => $invoicenumber, >+ section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), >+ details => "Skipped invoice line " > . $inv_line->line_item_number > . ", Koha item with itemnumber " > . $i >- . "is missing" >+ . " is missing" > } > ); > $logger->warn("Cannot find aqorder item for $i: Order: $ordernumber"); >@@ -579,10 +586,11 @@ sub receipt_items { > if ( $rs->count > 0 ) { > $invoice_message->add_to_edifact_errors( > { >- section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), >- details => "Failed to assign barcode " >+ invoicenumber => $invoicenumber, >+ section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), >+ details => "Failed to assign barcode " > . $barcode >- . "for invoice line " >+ . " for invoice line " > . $inv_line->line_item_number > . ", duplicate found" > } >@@ -612,8 +620,9 @@ sub receipt_items { > my $available_branches = join( ', ', sort keys %branch_map ) || 'none'; > $invoice_message->add_to_edifact_errors( > { >- section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), >- details => "No matching item found for invoice line " >+ invoicenumber => $invoicenumber, >+ section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), >+ details => "No matching item found for invoice line " > . $inv_line->line_item_number . ":" > . $gir_occurrence > . " at branch $branch" >-- >2.53.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 41996
:
194502
|
194503
|
194504
| 194505 |
194506