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