|
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 |
- |
|
|