sub update_copy_inventory {
my( $self, $conn, $auth, $args ) = @_;
- my $e = new_editor(authtoken=>$auth, xact=>1);
- return $e->die_event unless $e->checkauth;
+ my $e = new_editor(authtoken=>$auth);
+ return [0, 0, $e->die_event] unless $e->checkauth;
+ my ($success,$failure) = (0,0);
+
+ $e->xact_begin();
my $copies = $$args{copy_list};
foreach my $copyid (@$copies) {
my $aci = Fieldmapper::asset::copy_inventory->new;
$aci->inventory_date('now');
$aci->inventory_workstation($e->requestor->wsid);
$aci->copy($copyid);
- $e->create_asset_copy_inventory($aci) or return $e->die_event;
+ my $spname = "aci_savepoint${success}";
+ $e->set_savepoint($spname);
+ if ($e->create_asset_copy_inventory($aci)) {
+ $success++;
+ } else {
+ $failure++;
+ $e->rollback_savepoint($spname);
+ }
+ $e->release_savepoint($spname);
}
- $e->commit;
- return 1;
+ if ($success) {
+ $e->commit();
+ } else {
+ $e->rollback();
+ }
+
+ return [ $success, $failure ];
}
__PACKAGE__->register_method(