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