|
Lines 127-176
sub import_record_and_create_order_lines {
Link Here
|
| 127 |
}; |
127 |
}; |
| 128 |
} |
128 |
} |
| 129 |
|
129 |
|
| 130 |
=head3 _get_MarcFieldsToOrder_syspref_data |
130 |
=head3 _get_syspref_mappings |
| 131 |
|
131 |
|
| 132 |
my $marc_fields_to_order = _get_MarcFieldsToOrder_syspref_data('MarcFieldsToOrder', $marcrecord, $fields); |
132 |
my $syspref_info = _get_syspref_mappings( $marcrecord, $syspref_name ); |
| 133 |
|
133 |
|
| 134 |
Fetches data from a marc record based on the mappings in the syspref MarcFieldsToOrder using the fields selected in $fields (array). |
134 |
Fetches data from a marc record based on the mappings in the syspref MarcFieldsToOrder or MarcItemFieldsToOrder using the fields selected in $fields (array). |
| 135 |
|
135 |
|
| 136 |
=cut |
136 |
=cut |
| 137 |
|
137 |
|
| 138 |
sub _get_MarcFieldsToOrder_syspref_data { |
138 |
sub _get_syspref_mappings { |
| 139 |
my ( $syspref_name, $record, $field_list ) = @_; |
139 |
my ($record, $syspref_to_read) = @_; |
| 140 |
my $syspref = C4::Context->preference($syspref_name); |
140 |
my $syspref = C4::Context->yaml_preference($syspref_to_read); |
| 141 |
$syspref = "$syspref\n\n"; |
|
|
| 142 |
my $yaml = eval { YAML::XS::Load( Encode::encode_utf8($syspref) ); }; |
| 143 |
if ($@) { |
| 144 |
warn "Unable to parse $syspref syspref : $@"; |
| 145 |
return (); |
| 146 |
} |
| 147 |
my $r; |
| 148 |
for my $field_name (@$field_list) { |
| 149 |
next unless exists $yaml->{$field_name}; |
| 150 |
my @fields = split /\|/, $yaml->{$field_name}; |
| 151 |
for my $field (@fields) { |
| 152 |
my ( $f, $sf ) = split /\$/, $field; |
| 153 |
next unless $f and $sf; |
| 154 |
if ( my $v = $record->subfield( $f, $sf ) ) { |
| 155 |
$r->{$field_name} = $v; |
| 156 |
} |
| 157 |
last if $yaml->{$field}; |
| 158 |
} |
| 159 |
} |
| 160 |
return $r; |
| 161 |
} |
| 162 |
|
| 163 |
=head3 _get_MarcItemFieldsToOrder_syspref_data |
| 164 |
|
| 165 |
my $marc_item_fields_to_order = _get_MarcItemFieldsToOrder_syspref_data('MarcItemFieldsToOrder', $marcrecord, $fields); |
| 166 |
|
| 167 |
Fetches data from a marc record based on the mappings in the syspref MarcItemFieldsToOrder using the fields selected in $fields (array). |
| 168 |
|
| 169 |
=cut |
| 170 |
|
| 171 |
sub _get_MarcItemFieldsToOrder_syspref_data { |
| 172 |
my ($record) = @_; |
| 173 |
my $syspref = C4::Context->yaml_preference('MarcItemFieldsToOrder'); |
| 174 |
my @result; |
141 |
my @result; |
| 175 |
my @tags_list; |
142 |
my @tags_list; |
| 176 |
|
143 |
|
|
Lines 216-223
sub _get_MarcItemFieldsToOrder_syspref_data {
Link Here
|
| 216 |
push @result, $r; |
183 |
push @result, $r; |
| 217 |
} |
184 |
} |
| 218 |
} |
185 |
} |
| 219 |
|
186 |
return \@result if $syspref_to_read eq 'MarcItemFieldsToOrder'; |
| 220 |
return \@result; |
187 |
return $result[0] if $syspref_to_read eq 'MarcFieldsToOrder'; |
| 221 |
} |
188 |
} |
| 222 |
|
189 |
|
| 223 |
=head3 _verify_number_of_fields |
190 |
=head3 _verify_number_of_fields |
|
Lines 365-376
sub add_items_from_import_record {
Link Here
|
| 365 |
my $marcrecord = $record_result->{marcrecord}; |
332 |
my $marcrecord = $record_result->{marcrecord}; |
| 366 |
|
333 |
|
| 367 |
if ( $agent eq 'cron' ) { |
334 |
if ( $agent eq 'cron' ) { |
| 368 |
my $marc_fields_to_order = _get_MarcFieldsToOrder_syspref_data( |
335 |
my $marc_fields_to_order = _get_syspref_mappings( $marcrecord, 'MarcFieldsToOrder' ); |
| 369 |
'MarcFieldsToOrder', $marcrecord, |
336 |
my $marc_item_fields_to_order = _get_syspref_mappings( $marcrecord, 'MarcItemFieldsToOrder' ); |
| 370 |
[ 'price', 'quantity', 'budget_code', 'discount', 'sort1', 'sort2' ] |
|
|
| 371 |
); |
| 372 |
|
| 373 |
my $marc_item_fields_to_order = _get_MarcItemFieldsToOrder_syspref_data($marcrecord); |
| 374 |
|
337 |
|
| 375 |
my $item_fields = { |
338 |
my $item_fields = { |
| 376 |
homebranch => $marc_item_fields_to_order->{homebranch}, |
339 |
homebranch => $marc_item_fields_to_order->{homebranch}, |
|
Lines 598-614
sub import_biblios_list {
Link Here
|
| 598 |
); |
561 |
); |
| 599 |
my $marcrecord = $import_record->get_marc_record || die "couldn't translate marc information"; |
562 |
my $marcrecord = $import_record->get_marc_record || die "couldn't translate marc information"; |
| 600 |
|
563 |
|
| 601 |
my $infos = _get_MarcFieldsToOrder_syspref_data( |
564 |
my $infos = _get_syspref_mappings( $marcrecord, 'MarcFieldsToOrder' ); |
| 602 |
'MarcFieldsToOrder', $marcrecord, |
565 |
|
| 603 |
[ 'price', 'quantity', 'budget_code', 'discount', 'sort1', 'sort2', 'replacementprice' ] |
566 |
my $price = $infos->{price} || undef; |
| 604 |
); |
567 |
my $replacementprice = $infos->{replacementprice} || undef; |
| 605 |
my $price = $infos->{price}; |
568 |
my $quantity = $infos->{quantity} || undef; |
| 606 |
my $replacementprice = $infos->{replacementprice}; |
569 |
my $budget_code = $infos->{budget_code} || undef; |
| 607 |
my $quantity = $infos->{quantity}; |
570 |
my $discount = $infos->{discount} || undef; |
| 608 |
my $budget_code = $infos->{budget_code}; |
571 |
my $sort1 = $infos->{sort1} || undef; |
| 609 |
my $discount = $infos->{discount}; |
572 |
my $sort2 = $infos->{sort2} || undef; |
| 610 |
my $sort1 = $infos->{sort1}; |
|
|
| 611 |
my $sort2 = $infos->{sort2}; |
| 612 |
my $budget_id; |
573 |
my $budget_id; |
| 613 |
|
574 |
|
| 614 |
if ($budget_code) { |
575 |
if ($budget_code) { |
|
Lines 621-627
sub import_biblios_list {
Link Here
|
| 621 |
# Items |
582 |
# Items |
| 622 |
my @itemlist = (); |
583 |
my @itemlist = (); |
| 623 |
my $all_items_quantity = 0; |
584 |
my $all_items_quantity = 0; |
| 624 |
my $alliteminfos = _get_MarcItemFieldsToOrder_syspref_data($marcrecord); |
585 |
my $alliteminfos = _get_syspref_mappings( $marcrecord, 'MarcItemFieldsToOrder' ); |
|
|
586 |
|
| 625 |
if ( $alliteminfos != -1 ) { |
587 |
if ( $alliteminfos != -1 ) { |
| 626 |
foreach my $iteminfos (@$alliteminfos) { |
588 |
foreach my $iteminfos (@$alliteminfos) { |
| 627 |
# Quantity is required, default to one if not supplied |
589 |
# Quantity is required, default to one if not supplied |
| 628 |
- |
|
|