From 3a21f30fcb49cea04553371b6a8619ccdf429172 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20B=C3=BCren?= Date: Wed, 18 Aug 2021 10:23:19 +0200 Subject: [PATCH] =?utf8?q?Preisgruppen-Admin=20darf=20auch=20Preisgruppen?= =?utf8?q?=20bei=20allen=20verkn=C3=BCpften=20Kunden=20entfernen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- SL/DB/Pricegroup.pm | 25 ++++++++++++++++--- locale/de/all | 4 ++- .../_pricegroup_form.html | 5 ++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/SL/DB/Pricegroup.pm b/SL/DB/Pricegroup.pm index eee044fec..a7cfc2053 100644 --- a/SL/DB/Pricegroup.pm +++ b/SL/DB/Pricegroup.pm @@ -7,6 +7,7 @@ use SL::DB::Manager::Pricegroup; use SL::DB::Helper::ActsAsList; __PACKAGE__->meta->initialize; +__PACKAGE__->before_save('_before_save_remove_customer_pricegroup'); sub displayable_name { my $self = shift; @@ -14,14 +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; diff --git a/locale/de/all b/locale/de/all index 820a29e99..33317d1d3 100755 --- a/locale/de/all +++ b/locale/de/all @@ -729,7 +729,7 @@ $self->{texts} = { 'Costs' => 'Kosten', 'Could not create new project #1' => 'Neues Projekt #1 kann nicht angelegt werden', 'Could not extract Factur-X/ZUGFeRD data, data and error message:' => 'Konnte keine Factur-X-/ZUGFeRD-Daten extrahieren, folgende Fehlermeldung und das PDF:', - 'Could not find an entry for this part in the pricegroup.' => 'Konnte keine Eintrag für diesen Artikel in der Preisgruppe finden.', + 'Could not find an entry for this part in the pricegroup.' => 'Konnte keinen Eintrag für diesen Artikel in der Preisgruppe finden.', 'Could not load class #1 (#2): "#3"' => 'Konnte Klasse #1 (#2) nicht laden: "#3"', 'Could not load class #1, #2' => 'Konnte Klasse #1 nicht laden: "#2"', 'Could not load employee' => 'Konnte Benutzer nicht laden', @@ -1012,6 +1012,7 @@ $self->{texts} = { 'Delete Images' => 'Bilder löschen', 'Delete Shipto' => 'Lieferadresse löschen', 'Delete all' => 'Alle Löschen', + 'Delete for Customers' => 'Bei Kunden löschen', 'Delete links' => 'Verknüpfungen löschen', 'Delete picture' => 'Bild löschen', 'Delete printfiles' => 'Dokumente löschen', @@ -3805,6 +3806,7 @@ $self->{texts} = { 'This vendor has already a booking with this invoice number, do you really want to add the same invoice number again?' => 'Es gibt für diesen Lieferant schon einen Beleg mit dieser Rechnungsnummer. Möchten Sie wirklich eine weitere Buchung mit derselben Rechnungsnummer hinzufügen?', 'This vendor has already been added.' => 'Der Lieferant wurde bereits hinzugefügt.', 'This vendor number is already in use.' => 'Diese Lieferantennummer wird bereits verwendet.', + 'This will also remove this pricegroup for all customers.' => 'Damit werden auch alle verknüpften Preisgruppen im Kundenstamm gelöscht!', 'This will apply a 3% reduction to the master data price before entering it into the record item.' => 'Diese Zeile zieht vom Stammdatenpreis 3% ab, und schlägt den resultierenden Preis vor.', 'This will be treated as a discount in percent points.' => 'Diese Option schlägt den Wert in Prozentpunkten als Rabatt vor.', 'This will happen before the price is offered, and the reduction will not be printed in documents.' => 'Das passiert, bevor der Preis vorgeschlagen wird, und der Abschlag wird nicht in Belegen ausgewiesen.', diff --git a/templates/webpages/simple_system_setting/_pricegroup_form.html b/templates/webpages/simple_system_setting/_pricegroup_form.html index fd4a905bc..ec7f8177d 100644 --- a/templates/webpages/simple_system_setting/_pricegroup_form.html +++ b/templates/webpages/simple_system_setting/_pricegroup_form.html @@ -10,4 +10,9 @@ [% LxERP.t8("Obsolete") %] [% L.checkbox_tag("object.obsolete", checked=SELF.object.obsolete, for_submit=1) %] + + [% LxERP.t8("Delete for Customers") %] + [% L.checkbox_tag("SELF.remove_customer_pricegroup", checked=SELF.remove_customer_pricegroup, for_submit=1) %] [% LxERP.t8("This will also remove this pricegroup for all customers.") %] + + -- 2.20.1