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

(-)a/Koha/EDI.pm (-12 / +49 lines)
Lines 290-296 sub process_invoice { Link Here
290
                )->single;
290
                )->single;
291
            }
291
            }
292
            if ( !$vendor_acct ) {
292
            if ( !$vendor_acct ) {
293
                carp "Cannot find vendor with ean $vendor_ean for invoice $invoicenumber in ".$invoice_message->filename;
293
                $invoice_message->add_to_edifact_errors(
294
                    {
295
                        section => '',
296
                        details => "Skipped invoice $invoicenumber with unmatched vendor san: $vendor_ean"
297
                    }
298
                );
299
                $logger->error("Cannot find vendor with ean $vendor_ean for invoice $invoicenumber in ".$invoice_message->filename);
294
                next;
300
                next;
295
            }
301
            }
296
            $invoice_message->edi_acct( $vendor_acct->id );
302
            $invoice_message->edi_acct( $vendor_acct->id );
Lines 313-318 sub process_invoice { Link Here
313
            foreach my $line ( @{$lines} ) {
319
            foreach my $line ( @{$lines} ) {
314
                my $ordernumber = $line->ordernumber;
320
                my $ordernumber = $line->ordernumber;
315
                if ( !$ordernumber ) {
321
                if ( !$ordernumber ) {
322
                    $invoice_message->add_to_edifact_errors(
323
                        {
324
                            section => $line->line_item_number,
325
                            details => "Message missing ordernumber"
326
                        }
327
                    );
316
                    $logger->error("Skipping invoice line, no associated ordernumber");
328
                    $logger->error("Skipping invoice line, no associated ordernumber");
317
                    next;
329
                    next;
318
                }
330
                }
Lines 320-331 sub process_invoice { Link Here
320
                # ModReceiveOrder does not validate that $ordernumber exists validate here
332
                # ModReceiveOrder does not validate that $ordernumber exists validate here
321
                my $order = $schema->resultset('Aqorder')->find($ordernumber);
333
                my $order = $schema->resultset('Aqorder')->find($ordernumber);
322
                if ( !$order ) {
334
                if ( !$order ) {
335
                    $invoice_message->add_to_edifact_errors(
336
                        {
337
                            section => $line->line_item_number,
338
                            details => "Koha order $ordernumber missing"
339
                        }
340
                    );
323
                    $logger->error("Skipping invoice line, no order found for $ordernumber, invoice:$invoicenumber");
341
                    $logger->error("Skipping invoice line, no order found for $ordernumber, invoice:$invoicenumber");
324
                    next;
342
                    next;
325
                }
343
                }
326
344
327
                my $bib = $order->biblionumber;
345
                my $bib = $order->biblionumber;
328
                if ( !$bib ) {
346
                if ( !$bib ) {
347
                    $invoice_message->add_to_edifact_errors(
348
                        {
349
                            section => $line->line_item_number,
350
                            details => "Koha biblio missing"
351
                        }
352
                    );
329
                    $logger->error(
353
                    $logger->error(
330
                        "Skipping invoice line, no bibliographic record found for $ordernumber, invoice:$invoicenumber"
354
                        "Skipping invoice line, no bibliographic record found for $ordernumber, invoice:$invoicenumber"
331
                    );
355
                    );
Lines 384-396 sub process_invoice { Link Here
384
                            tax_value_on_receiving => $quantity * $price_excl_tax * $tax_rate->{rate},
408
                            tax_value_on_receiving => $quantity * $price_excl_tax * $tax_rate->{rate},
385
                        }
409
                        }
386
                    );
410
                    );
387
                    transfer_items(
411
                    transfer_items( $schema, $line, $order, $received_order, $quantity );
388
                        $schema,         $line, $order,
389
                        $received_order, $quantity
390
                    );
391
                    receipt_items(
412
                    receipt_items(
392
                        $schema,                      $line,
413
                        $schema, $line,
393
                        $received_order->ordernumber, $quantity
414
                        $received_order->ordernumber, $quantity, $invoice_message
394
                    );
415
                    );
395
                } else {    # simple receipt all copies on order
416
                } else {    # simple receipt all copies on order
396
                    $order->quantityreceived($quantity);
417
                    $order->quantityreceived($quantity);
Lines 403-409 sub process_invoice { Link Here
403
                    $order->tax_value_on_receiving( $quantity * $price_excl_tax * $tax_rate->{rate} );
424
                    $order->tax_value_on_receiving( $quantity * $price_excl_tax * $tax_rate->{rate} );
404
                    $order->orderstatus('complete');
425
                    $order->orderstatus('complete');
405
                    $order->update;
426
                    $order->update;
406
                    receipt_items( $schema, $line, $ordernumber, $quantity );
427
                    receipt_items( $schema, $line, $ordernumber, $quantity, $invoice_message );
407
                }
428
                }
408
            }
429
            }
409
        }
430
        }
Lines 440-446 sub _get_invoiced_price { Link Here
440
}
461
}
441
462
442
sub receipt_items {
463
sub receipt_items {
443
    my ( $schema, $inv_line, $ordernumber, $quantity ) = @_;
464
    my ( $schema, $inv_line, $ordernumber, $quantity, $invoice_message ) = @_;
444
    my $logger   = Koha::Logger->get( { interface => 'edi' } );
465
    my $logger   = Koha::Logger->get( { interface => 'edi' } );
445
466
446
    # itemnumber is not a foreign key ??? makes this a bit cumbersome
467
    # itemnumber is not a foreign key ??? makes this a bit cumbersome
Lines 454-459 sub receipt_items { Link Here
454
        my $item = $schema->resultset('Item')->find( $ilink->itemnumber );
475
        my $item = $schema->resultset('Item')->find( $ilink->itemnumber );
455
        if ( !$item ) {
476
        if ( !$item ) {
456
            my $i = $ilink->itemnumber;
477
            my $i = $ilink->itemnumber;
478
            $invoice_message->add_to_edifact_errors(
479
                {
480
                    section => $inv_line->line_item_number,
481
                    details => "Cannot fine aqorder item"
482
                }
483
            );
457
            $logger->warn(
484
            $logger->warn(
458
                "Cannot find aqorder item for $i :Order:$ordernumber");
485
                "Cannot find aqorder item for $i :Order:$ordernumber");
459
            next;
486
            next;
Lines 493-498 sub receipt_items { Link Here
493
                    }
520
                    }
494
                );
521
                );
495
                if ( $rs->count > 0 ) {
522
                if ( $rs->count > 0 ) {
523
                    $invoice_message->add_to_edifact_errors(
524
                        {
525
                            section => $inv_line->line_item_number . " : " . $gir_occurrence,
526
                            details => "Duplicate barcode found $barcode"
527
                        }
528
                    );
496
                    $logger->warn("Barcode $barcode is a duplicate");
529
                    $logger->warn("Barcode $barcode is a duplicate");
497
                }
530
                }
498
                else {
531
                else {
Lines 517-528 sub receipt_items { Link Here
517
            $item->update;
550
            $item->update;
518
        }
551
        }
519
        else {
552
        else {
553
            $invoice_message->add_to_edifact_errors(
554
                {
555
                    section => $inv_line->line_item_number,
556
                    details => "Unmatched item at branch $branch"
557
                }
558
            );
520
            $logger->warn("Unmatched item at branch:$branch");
559
            $logger->warn("Unmatched item at branch:$branch");
521
        }
560
        }
522
        ++$gir_occurrence;
561
        ++$gir_occurrence;
523
    }
562
    }
524
    return;
563
    return;
525
526
}
564
}
527
565
528
sub transfer_items {
566
sub transfer_items {
Lines 1298-1304 Koha::EDI Link Here
1298
1336
1299
=head2 receipt_items
1337
=head2 receipt_items
1300
1338
1301
    receipt_items( schema_obj, invoice_line, ordernumber, $quantity)
1339
    receipt_items( schema_obj, invoice_line, ordernumber, $quantity, $invoice_message)
1302
1340
1303
    receipts the items recorded on this invoice line
1341
    receipts the items recorded on this invoice line
1304
1342
1305
- 

Return to bug 38689