);
sub find_or_create_volume {
- my( $self, $conn, $auth, $label, $record_id, $org_id ) = @_;
+ my( $self, $conn, $auth, $label, $record_id, $org_id, $prefix, $suffix, $label_class ) = @_;
my $e = new_editor(authtoken=>$auth, xact=>1);
return $e->die_event unless $e->checkauth;
my ($vol, $evt, $exists) =
- OpenILS::Application::Cat::AssetCommon->find_or_create_volume($e, $label, $record_id, $org_id);
+ OpenILS::Application::Cat::AssetCommon->find_or_create_volume($e, $label, $record_id, $org_id, $prefix, $suffix, $label_class);
return $evt if $evt;
$e->rollback if $exists;
$e->commit if $vol;
owning_lib => $vol->owning_lib,
record => $vol->record,
label => $vol->label,
+ prefix => $vol->prefix,
+ suffix => $vol->suffix,
deleted => 'f'
}
);
# returns the volume if it exists
sub volume_exists {
- my($class, $e, $rec_id, $label, $owning_lib) = @_;
+ my($class, $e, $rec_id, $label, $owning_lib, $prefix, $suffix) = @_;
return $e->search_asset_call_number(
- {label => $label, record => $rec_id, owning_lib => $owning_lib, deleted => 'f'})->[0];
+ {label => $label, record => $rec_id, owning_lib => $owning_lib, deleted => 'f', prefix => $prefix, suffix => $suffix})->[0];
}
sub find_or_create_volume {
- my($class, $e, $label, $record_id, $org_id) = @_;
+ my($class, $e, $label, $record_id, $org_id, $prefix, $suffix, $label_class) = @_;
+
+ $prefix ||= '-1';
+ $suffix ||= '-1';
my $vol;
or return (undef, $e->die_event);
} else {
- $vol = $class->volume_exists($e, $record_id, $label, $org_id);
+ $vol = $class->volume_exists($e, $record_id, $label, $org_id, $prefix, $suffix);
}
# If the volume exists, return the ID
$vol = Fieldmapper::asset::call_number->new;
$vol->owning_lib($org_id);
+ $vol->label_class($label_class) if ($label_class);
$vol->label($label);
+ $vol->prefix($prefix);
+ $vol->suffix($suffix);
$vol->record($record_id);
my $evt = OpenILS::Application::Cat::AssetCommon->create_volume(0, $e, $vol);