X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FPricegroup.pm;h=a7cfc205398919fde7f3410841029e5ffbdc9c52;hb=3782a90c336bc6c506f572e607c8526cb5e79ea3;hp=76c644d886a2843de59bd7630cf5333e272b47ec;hpb=e48eb4dc7e721dbdf15417167e9320fd12decf69;p=kivitendo-erp.git diff --git a/SL/DB/Pricegroup.pm b/SL/DB/Pricegroup.pm index 76c644d88..a7cfc2053 100644 --- a/SL/DB/Pricegroup.pm +++ b/SL/DB/Pricegroup.pm @@ -5,9 +5,9 @@ use strict; use SL::DB::MetaSetup::Pricegroup; use SL::DB::Manager::Pricegroup; use SL::DB::Helper::ActsAsList; -use SL::DB::Customer; __PACKAGE__->meta->initialize; +__PACKAGE__->before_save('_before_save_remove_customer_pricegroup'); sub displayable_name { my $self = shift; @@ -15,13 +15,32 @@ sub displayable_name { return join ' ', grep $_, $self->id, $self->pricegroup; } +sub _before_save_remove_customer_pricegroup { + my ($self) = @_; + + return 1 unless $::form->{SELF}{remove_customer_pricegroup}; + + my %attributes = (pricegroup_id => undef); + require SL::DB::Customer; + SL::DB::Manager::Customer->update_all( + set => \%attributes, + where => [ + 'pricegroup_id' => $self->id, + ], + ); + + return 1; +} + sub validate { my ($self) = @_; + require SL::DB::Customer; my @errors; - - if ( $self->obsolete && SL::DB::Manager::Customer->get_all_count(query => [ pricegroup_id => $self->id ]) ) { - push @errors, $::locale->text('The pricegroup is being used by customers.'); + if (!$::form->{SELF}{remove_customer_pricegroup} && + $self->obsolete && + SL::DB::Manager::Customer->get_all_count(query => [ pricegroup_id => $self->id ]) ) { + push @errors, $::locale->text('The pricegroup is being used by customers.'); } return @errors;