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").
Signed-off-by: Ray Delahunty <lib-systems@arts.ac.uk>
Signed-off-by: Hannah Dunne-Howrie <hdunne-howrie@westminster.gov.uk>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Pedro Amorim <pedro.amorim@openfifth.co.uk>
This commit is contained in:
parent
51e4567ca6
commit
a3889a7d90
51
Koha/EDI.pm
51
Koha/EDI.pm
|
|
@ -332,8 +332,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 "
|
||||
|
|
@ -362,8 +363,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");
|
||||
|
|
@ -375,8 +377,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
|
||||
|
|
@ -390,8 +393,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
|
||||
|
|
@ -409,8 +413,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
|
||||
|
|
@ -477,7 +482,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);
|
||||
|
|
@ -491,7 +497,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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -528,7 +534,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
|
||||
|
|
@ -544,12 +550,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");
|
||||
|
|
@ -592,10 +599,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"
|
||||
}
|
||||
|
|
@ -625,8 +633,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"
|
||||
|
|
|
|||
Loading…
Reference in New Issue