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