- if ( $self->{shipto}->used ) {
- $self->{shipto}->detach();
- $self->{shipto}->save();
- SL::Helper::Flash::flash('info', $::locale->text('Shipto is in use and was flagged invalid.'));
- } else {
- $self->{shipto}->delete();
- SL::Helper::Flash::flash('info', $::locale->text('Shipto deleted.'));
- }
+
+ $db->do_transaction(sub {
+ if ( $self->{shipto}->used ) {
+ $self->{shipto}->detach();
+ $self->{shipto}->save(cascade => 1);
+ SL::Helper::Flash::flash('info', $::locale->text('Shipto is in use and was flagged invalid.'));
+ } else {
+ $self->{shipto}->delete(cascade => 1);
+ SL::Helper::Flash::flash('info', $::locale->text('Shipto deleted.'));
+ }
+ }) || die($db->error);