|
Lines 319-326
sub process_invoice {
Link Here
|
| 319 |
if ( !$vendor_acct ) { |
319 |
if ( !$vendor_acct ) { |
| 320 |
$invoice_message->add_to_edifact_errors( |
320 |
$invoice_message->add_to_edifact_errors( |
| 321 |
{ |
321 |
{ |
| 322 |
section => "NAD+SU+" . $msg->supplier_ean, |
322 |
invoicenumber => $invoicenumber, |
| 323 |
details => "Skipped invoice $invoicenumber with unmatched vendor san: $vendor_ean" |
323 |
section => "NAD+SU+" . $msg->supplier_ean, |
|
|
324 |
details => "Skipped invoice $invoicenumber with unmatched vendor san: $vendor_ean" |
| 324 |
} |
325 |
} |
| 325 |
); |
326 |
); |
| 326 |
$logger->error( "Cannot find vendor with ean $vendor_ean for invoice $invoicenumber in " |
327 |
$logger->error( "Cannot find vendor with ean $vendor_ean for invoice $invoicenumber in " |
|
Lines 349-356
sub process_invoice {
Link Here
|
| 349 |
if ( !$ordernumber ) { |
350 |
if ( !$ordernumber ) { |
| 350 |
$invoice_message->add_to_edifact_errors( |
351 |
$invoice_message->add_to_edifact_errors( |
| 351 |
{ |
352 |
{ |
| 352 |
section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), |
353 |
invoicenumber => $invoicenumber, |
| 353 |
details => "Skipped invoice line " . $line->line_item_number . ", missing ordernumber" |
354 |
section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), |
|
|
355 |
details => "Skipped invoice line " . $line->line_item_number . ", missing ordernumber" |
| 354 |
} |
356 |
} |
| 355 |
); |
357 |
); |
| 356 |
$logger->error("Skipping invoice line, no associated ordernumber"); |
358 |
$logger->error("Skipping invoice line, no associated ordernumber"); |
|
Lines 362-369
sub process_invoice {
Link Here
|
| 362 |
if ( !$order ) { |
364 |
if ( !$order ) { |
| 363 |
$invoice_message->add_to_edifact_errors( |
365 |
$invoice_message->add_to_edifact_errors( |
| 364 |
{ |
366 |
{ |
| 365 |
section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), |
367 |
invoicenumber => $invoicenumber, |
| 366 |
details => "Skipped invoice line " |
368 |
section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), |
|
|
369 |
details => "Skipped invoice line " |
| 367 |
. $line->line_item_number |
370 |
. $line->line_item_number |
| 368 |
. ", cannot find order with ordernumber " |
371 |
. ", cannot find order with ordernumber " |
| 369 |
. $ordernumber |
372 |
. $ordernumber |
|
Lines 377-384
sub process_invoice {
Link Here
|
| 377 |
if ( !$bib ) { |
380 |
if ( !$bib ) { |
| 378 |
$invoice_message->add_to_edifact_errors( |
381 |
$invoice_message->add_to_edifact_errors( |
| 379 |
{ |
382 |
{ |
| 380 |
section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), |
383 |
invoicenumber => $invoicenumber, |
| 381 |
details => "Skipped invoice line " |
384 |
section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), |
|
|
385 |
details => "Skipped invoice line " |
| 382 |
. $line->line_item_number |
386 |
. $line->line_item_number |
| 383 |
. ", cannot find biblio for ordernumber " |
387 |
. ", cannot find biblio for ordernumber " |
| 384 |
. $ordernumber |
388 |
. $ordernumber |
|
Lines 396-403
sub process_invoice {
Link Here
|
| 396 |
if ( $order->orderstatus eq 'complete' ) { |
400 |
if ( $order->orderstatus eq 'complete' ) { |
| 397 |
$invoice_message->add_to_edifact_errors( |
401 |
$invoice_message->add_to_edifact_errors( |
| 398 |
{ |
402 |
{ |
| 399 |
section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), |
403 |
invoicenumber => $invoicenumber, |
| 400 |
details => "Warning: invoice line " |
404 |
section => join( "\n", map { $_->as_string } @{ $line->{segs} } ), |
|
|
405 |
details => "Warning: invoice line " |
| 401 |
. $line->line_item_number |
406 |
. $line->line_item_number |
| 402 |
. " references ordernumber " |
407 |
. " references ordernumber " |
| 403 |
. $ordernumber |
408 |
. $ordernumber |
|
Lines 464-470
sub process_invoice {
Link Here
|
| 464 |
transfer_items( $schema, $line, $order, $received_order, $quantity ); |
469 |
transfer_items( $schema, $line, $order, $received_order, $quantity ); |
| 465 |
receipt_items( |
470 |
receipt_items( |
| 466 |
$schema, $line, |
471 |
$schema, $line, |
| 467 |
$received_order->ordernumber, $quantity, $invoice_message |
472 |
$received_order->ordernumber, $quantity, $invoice_message, |
|
|
473 |
$invoicenumber |
| 468 |
); |
474 |
); |
| 469 |
} else { # simple receipt all copies on order |
475 |
} else { # simple receipt all copies on order |
| 470 |
$order->quantityreceived($quantity); |
476 |
$order->quantityreceived($quantity); |
|
Lines 478-484
sub process_invoice {
Link Here
|
| 478 |
$quantity * $price_excl_tax * ( $tax_rate ? $tax_rate->{rate} : 0 ) ); |
484 |
$quantity * $price_excl_tax * ( $tax_rate ? $tax_rate->{rate} : 0 ) ); |
| 479 |
$order->orderstatus('complete'); |
485 |
$order->orderstatus('complete'); |
| 480 |
$order->update; |
486 |
$order->update; |
| 481 |
receipt_items( $schema, $line, $ordernumber, $quantity, $invoice_message ); |
487 |
receipt_items( $schema, $line, $ordernumber, $quantity, $invoice_message, $invoicenumber ); |
| 482 |
} |
488 |
} |
| 483 |
} |
489 |
} |
| 484 |
} |
490 |
} |
|
Lines 515-521
sub _get_invoiced_price {
Link Here
|
| 515 |
} |
521 |
} |
| 516 |
|
522 |
|
| 517 |
sub receipt_items { |
523 |
sub receipt_items { |
| 518 |
my ( $schema, $inv_line, $ordernumber, $quantity, $invoice_message ) = @_; |
524 |
my ( $schema, $inv_line, $ordernumber, $quantity, $invoice_message, $invoicenumber ) = @_; |
| 519 |
my $logger = Koha::Logger->get( { interface => 'edi' } ); |
525 |
my $logger = Koha::Logger->get( { interface => 'edi' } ); |
| 520 |
|
526 |
|
| 521 |
# itemnumber is not a foreign key ??? makes this a bit cumbersome |
527 |
# itemnumber is not a foreign key ??? makes this a bit cumbersome |
|
Lines 531-542
sub receipt_items {
Link Here
|
| 531 |
my $i = $ilink->itemnumber; |
537 |
my $i = $ilink->itemnumber; |
| 532 |
$invoice_message->add_to_edifact_errors( |
538 |
$invoice_message->add_to_edifact_errors( |
| 533 |
{ |
539 |
{ |
| 534 |
section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), |
540 |
invoicenumber => $invoicenumber, |
| 535 |
details => "Skipped invoice line " |
541 |
section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), |
|
|
542 |
details => "Skipped invoice line " |
| 536 |
. $inv_line->line_item_number |
543 |
. $inv_line->line_item_number |
| 537 |
. ", Koha item with itemnumber " |
544 |
. ", Koha item with itemnumber " |
| 538 |
. $i |
545 |
. $i |
| 539 |
. "is missing" |
546 |
. " is missing" |
| 540 |
} |
547 |
} |
| 541 |
); |
548 |
); |
| 542 |
$logger->warn("Cannot find aqorder item for $i: Order: $ordernumber"); |
549 |
$logger->warn("Cannot find aqorder item for $i: Order: $ordernumber"); |
|
Lines 579-588
sub receipt_items {
Link Here
|
| 579 |
if ( $rs->count > 0 ) { |
586 |
if ( $rs->count > 0 ) { |
| 580 |
$invoice_message->add_to_edifact_errors( |
587 |
$invoice_message->add_to_edifact_errors( |
| 581 |
{ |
588 |
{ |
| 582 |
section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), |
589 |
invoicenumber => $invoicenumber, |
| 583 |
details => "Failed to assign barcode " |
590 |
section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), |
|
|
591 |
details => "Failed to assign barcode " |
| 584 |
. $barcode |
592 |
. $barcode |
| 585 |
. "for invoice line " |
593 |
. " for invoice line " |
| 586 |
. $inv_line->line_item_number |
594 |
. $inv_line->line_item_number |
| 587 |
. ", duplicate found" |
595 |
. ", duplicate found" |
| 588 |
} |
596 |
} |
|
Lines 612-619
sub receipt_items {
Link Here
|
| 612 |
my $available_branches = join( ', ', sort keys %branch_map ) || 'none'; |
620 |
my $available_branches = join( ', ', sort keys %branch_map ) || 'none'; |
| 613 |
$invoice_message->add_to_edifact_errors( |
621 |
$invoice_message->add_to_edifact_errors( |
| 614 |
{ |
622 |
{ |
| 615 |
section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), |
623 |
invoicenumber => $invoicenumber, |
| 616 |
details => "No matching item found for invoice line " |
624 |
section => join( "\n", map { $_->as_string } @{ $inv_line->{segs} } ), |
|
|
625 |
details => "No matching item found for invoice line " |
| 617 |
. $inv_line->line_item_number . ":" |
626 |
. $inv_line->line_item_number . ":" |
| 618 |
. $gir_occurrence |
627 |
. $gir_occurrence |
| 619 |
. " at branch $branch" |
628 |
. " at branch $branch" |
| 620 |
- |
|
|