|
Lines 503-511
sub import_biblios_list {
Link Here
|
| 503 |
my $sort1 = $infos->{sort1}; |
503 |
my $sort1 = $infos->{sort1}; |
| 504 |
my $sort2 = $infos->{sort2}; |
504 |
my $sort2 = $infos->{sort2}; |
| 505 |
my $budget_id; |
505 |
my $budget_id; |
| 506 |
if($budget_code) { |
506 |
|
|
|
507 |
if ($budget_code) { |
| 507 |
my $biblio_budget = GetBudgetByCode($budget_code); |
508 |
my $biblio_budget = GetBudgetByCode($budget_code); |
| 508 |
if($biblio_budget) { |
509 |
if ($biblio_budget) { |
| 509 |
$budget_id = $biblio_budget->{budget_id}; |
510 |
$budget_id = $biblio_budget->{budget_id}; |
| 510 |
} |
511 |
} |
| 511 |
} |
512 |
} |
|
Lines 513-568
sub import_biblios_list {
Link Here
|
| 513 |
# Items |
514 |
# Items |
| 514 |
my @itemlist = (); |
515 |
my @itemlist = (); |
| 515 |
my $all_items_quantity = 0; |
516 |
my $all_items_quantity = 0; |
| 516 |
my $alliteminfos = get_infos_syspref_on_item('MarcItemFieldsToOrder', $marcrecord, ['homebranch', 'holdingbranch', 'itype', 'nonpublic_note', 'public_note', 'loc', 'ccode', 'notforloan', 'uri', 'copyno', 'price', 'replacementprice', 'itemcallnumber', 'quantity', 'budget_code']); |
517 |
my $alliteminfos = get_marc_item_fields_to_order($marcrecord); |
| 517 |
if ($alliteminfos != -1) { |
518 |
if ($alliteminfos != -1) { |
| 518 |
foreach my $iteminfos (@$alliteminfos) { |
519 |
foreach my $iteminfos (@$alliteminfos) { |
| 519 |
my $item_homebranch = $iteminfos->{homebranch}; |
520 |
# Quantity is required, default to one if not supplied |
| 520 |
my $item_holdingbranch = $iteminfos->{holdingbranch}; |
521 |
my $quantity = delete $iteminfos->{quantity} || 1; |
| 521 |
my $item_itype = $iteminfos->{itype}; |
522 |
|
| 522 |
my $item_nonpublic_note = $iteminfos->{nonpublic_note}; |
523 |
# Handle incorrectly named original parameters for MarcItemFieldsToOrder |
| 523 |
my $item_public_note = $iteminfos->{public_note}; |
524 |
$iteminfos->{location} = delete $iteminfos->{loc} if $iteminfos->{loc}; |
| 524 |
my $item_loc = $iteminfos->{loc}; |
525 |
$iteminfos->{copynumber} = delete $iteminfos->{copyno} if $iteminfos->{copyno}; |
| 525 |
my $item_ccode = $iteminfos->{ccode}; |
526 |
|
| 526 |
my $item_notforloan = $iteminfos->{notforloan}; |
527 |
# Convert budge code to a budget id |
| 527 |
my $item_uri = $iteminfos->{uri}; |
528 |
my $item_budget_code = delete $iteminfos->{budget_code}; |
| 528 |
my $item_copyno = $iteminfos->{copyno}; |
529 |
if ( $item_budget_code ) { |
| 529 |
my $item_quantity = $iteminfos->{quantity} || 1; |
530 |
my $item_budget = GetBudgetByCode( $item_budget_code ); |
| 530 |
my $item_budget_code = $iteminfos->{budget_code}; |
531 |
$iteminfos->{budget_id} = $item_budget->{budget_id} || $budget_id; |
| 531 |
my $item_budget_id; |
|
|
| 532 |
if ( $iteminfos->{budget_code} ) { |
| 533 |
my $item_budget = GetBudgetByCode( $iteminfos->{budget_code} ); |
| 534 |
if ( $item_budget ) { |
| 535 |
$item_budget_id = $item_budget->{budget_id}; |
| 536 |
} |
| 537 |
} |
532 |
} |
| 538 |
my $item_price = $iteminfos->{price}; |
|
|
| 539 |
my $item_replacement_price = $iteminfos->{replacementprice}; |
| 540 |
my $item_callnumber = $iteminfos->{itemcallnumber}; |
| 541 |
|
| 542 |
for (my $i = 0; $i < $item_quantity; $i++) { |
| 543 |
|
| 544 |
my %itemrecord = ( |
| 545 |
'item_id' => $item_id++, |
| 546 |
'biblio_count' => $biblio_count, |
| 547 |
'homebranch' => $item_homebranch, |
| 548 |
'holdingbranch' => $item_holdingbranch, |
| 549 |
'itype' => $item_itype, |
| 550 |
'nonpublic_note' => $item_nonpublic_note, |
| 551 |
'public_note' => $item_public_note, |
| 552 |
'loc' => $item_loc, |
| 553 |
'ccode' => $item_ccode, |
| 554 |
'notforloan' => $item_notforloan, |
| 555 |
'uri' => $item_uri, |
| 556 |
'copyno' => $item_copyno, |
| 557 |
'quantity' => $item_quantity, |
| 558 |
'budget_id' => $item_budget_id || $budget_id, |
| 559 |
'itemprice' => $item_price || $price, |
| 560 |
'replacementprice' => $item_replacement_price || $replacementprice, |
| 561 |
'itemcallnumber' => $item_callnumber, |
| 562 |
); |
| 563 |
$all_items_quantity++; |
| 564 |
push @itemlist, \%itemrecord; |
| 565 |
|
533 |
|
|
|
534 |
# Clone the item data for the needed quantity |
| 535 |
# Add the incremented item id for each item in that quantity |
| 536 |
for (my $i = 0; $i < $quantity; $i++) { |
| 537 |
my $itemrecord = { %$iteminfos }; |
| 538 |
$itemrecord->{item_id} = $item_id++; |
| 539 |
$all_items_quantity++; |
| 540 |
push @itemlist, $itemrecord; |
| 566 |
} |
541 |
} |
| 567 |
} |
542 |
} |
| 568 |
|
543 |
|
|
Lines 695-703
sub equal_number_of_fields {
Link Here
|
| 695 |
return $tags_count; |
670 |
return $tags_count; |
| 696 |
} |
671 |
} |
| 697 |
|
672 |
|
| 698 |
sub get_infos_syspref_on_item { |
673 |
sub get_marc_item_fields_to_order { |
| 699 |
my ($syspref_name, $record, $field_list) = @_; |
674 |
my ($record) = @_; |
| 700 |
my $syspref = C4::Context->preference($syspref_name); |
675 |
|
|
|
676 |
my $syspref = C4::Context->preference('MarcItemFieldsToOrder'); |
| 701 |
$syspref = "$syspref\n\n"; # YAML is anal on ending \n. Surplus does not hurt |
677 |
$syspref = "$syspref\n\n"; # YAML is anal on ending \n. Surplus does not hurt |
| 702 |
my $yaml = eval { |
678 |
my $yaml = eval { |
| 703 |
YAML::XS::Load(Encode::encode_utf8($syspref)); |
679 |
YAML::XS::Load(Encode::encode_utf8($syspref)); |
|
Lines 706-717
sub get_infos_syspref_on_item {
Link Here
|
| 706 |
warn "Unable to parse $syspref syspref : $@"; |
682 |
warn "Unable to parse $syspref syspref : $@"; |
| 707 |
return (); |
683 |
return (); |
| 708 |
} |
684 |
} |
|
|
685 |
|
| 709 |
my @result; |
686 |
my @result; |
| 710 |
my @tags_list; |
687 |
my @tags_list; |
| 711 |
|
688 |
|
| 712 |
# Check tags in syspref definition |
689 |
# Check tags in syspref definition |
| 713 |
for my $field_name ( @$field_list ) { |
690 |
for my $field_name ( keys %$yaml ) { |
| 714 |
next unless exists $yaml->{$field_name}; |
|
|
| 715 |
my @fields = split /\|/, $yaml->{$field_name}; |
691 |
my @fields = split /\|/, $yaml->{$field_name}; |
| 716 |
for my $field ( @fields ) { |
692 |
for my $field ( @fields ) { |
| 717 |
my ( $f, $sf ) = split /\$/, $field; |
693 |
my ( $f, $sf ) = split /\$/, $field; |
|
Lines 737-744
sub get_infos_syspref_on_item {
Link Here
|
| 737 |
|
713 |
|
| 738 |
for (my $i = 0; $i < $tags_count; $i++) { |
714 |
for (my $i = 0; $i < $tags_count; $i++) { |
| 739 |
my $r; |
715 |
my $r; |
| 740 |
for my $field_name ( @$field_list ) { |
716 |
for my $field_name ( keys %$yaml ) { |
| 741 |
next unless exists $yaml->{$field_name}; |
|
|
| 742 |
my @fields = split /\|/, $yaml->{$field_name}; |
717 |
my @fields = split /\|/, $yaml->{$field_name}; |
| 743 |
for my $field ( @fields ) { |
718 |
for my $field ( @fields ) { |
| 744 |
my ( $f, $sf ) = split /\$/, $field; |
719 |
my ( $f, $sf ) = split /\$/, $field; |
| 745 |
- |
|
|