Recht hinzugefügt: Nur eigene Kunden (Verkäufer gleich Mitarbeiter) editieren
authorJan Büren <jan@lx-office-hosting.de>
Tue, 7 Feb 2012 12:22:13 +0000 (13:22 +0100)
committerJan Büren <jan@lx-office-hosting.de>
Tue, 7 Feb 2012 12:22:13 +0000 (13:22 +0100)
Zusätzliches Recht alle Kunden / Lieferanten editieren, war bisher standardmäßig IMMER so und kann jetzt deaktiviert werden.
Falls es deaktiviert wird, kann man den Kunden / Lieferanten nur editieren wenn man selber als Verkäufer eingetragen ist.

SL/Auth.pm
SL/CT.pm
doc/changelog
locale/de/all
sql/Pg-upgrade2/auth_enable_ct_all_edit.pl [new file with mode: 0644]

index d361a3d..870ead1 100644 (file)
@@ -947,7 +947,8 @@ sub all_rights_full {
     ["crm_notices",                    $locale->text("CRM notices")],
     ["crm_other",                      $locale->text("CRM other")],
     ["--master_data",                  $locale->text("Master Data")],
-    ["customer_vendor_edit",           $locale->text("Create and edit customers and vendors")],
+    ["customer_vendor_edit",           $locale->text("Create customers and vendors. Edit all vendors. Edit only customers where salesman equals employee (login)")],
+    ["customer_vendor_all_edit",       $locale->text("Create customers and vendors. Edit all vendors. Edit all customers")],
     ["part_service_assembly_edit",     $locale->text("Create and edit parts, services, assemblies")],
     ["project_edit",                   $locale->text("Create and edit projects")],
     ["--ar",                           $locale->text("AR")],
index 3be8ce9..b46ee09 100644 (file)
--- a/SL/CT.pm
+++ b/SL/CT.pm
@@ -769,6 +769,13 @@ sub search {
     push(@values, conv_i($form->{business_id}));
   }
 
+  # Nur Kunden finden, bei denen ich selber der Verkäufer bin
+  # Gilt nicht für Lieferanten
+  if ($cv eq 'customer' &&   !$main::auth->assert('customer_vendor_all_edit', 1)) {
+    $where .= qq| AND ct.salesman_id = (select id from employee where login= ?)|;
+    push(@values, $form->{login});
+  }
+
   my ($cvar_where, @cvar_values) = CVar->build_filter_query('module'         => 'CT',
                                                             'trans_id_field' => 'ct.id',
                                                             'filter'         => $form);
index e85c85e..65b4c23 100644 (file)
 - Mastertemplates für den Ausdruck sind in eigene Unterverzeichnisse gewandert.
   Dadurch wird das Hinzufügen neuer Vorlagensätze einfacher.
 
+- Zwei Rechterweiterung für 'eingeschränktere' Vertriebspartnerfunktion
+   Schreibschutz für Preise in Angebot und Suchfunktion in Stammdaten Kunden nur für Mitarbeiter freigeben, die auch
+   gleichzeitig als Verkäufer für den Kunden eingetragen sind. Rechtebeschreibung im Admin-Menü wie folgt:
+    * Preise und Rabatt in Formularen frei anpassen (falls deaktiviert,
+      wird allerdings NUR das textfield auf READONLY gesetzt / kann je nach Browserversion und technischen Fähigkeiten des Anwenders umgangen werden).
+    * Kunden und Lieferanten erfassen. Alle Lieferanten bearbeiten. Nur Kunden bearbeiten bei denen der Verkäufer gleich Bearbeiter (login) ist
 
   Kleinere neue Features und Detailverbesserungen:
   - á (LATIN SMALL LETTER A WITH ACUTE) wird in Latex-Vorlagen nicht mehr durch
index 7b1e4ab..d9af546 100644 (file)
@@ -447,7 +447,6 @@ $self->{texts} = {
   'Create a new payment term'   => 'Neue Zahlungsbedingungen anlegen',
   'Create a standard group'     => 'Eine Standard-Benutzergruppe anlegen',
   'Create and edit RFQs'        => 'Lieferantenanfragen erfassen und bearbeiten',
-  'Create and edit customers and vendors' => 'Kunden und Lieferanten erfassen und bearbeiten',
   'Create and edit dunnings'    => 'Mahnungen erfassen und bearbeiten',
   'Create and edit invoices and credit notes' => 'Rechnungen und Gutschriften erfassen und bearbeiten',
   'Create and edit parts, services, assemblies' => 'Artikel, Dienstleistungen, Erzeugnisse erfassen und bearbeiten',
@@ -462,6 +461,8 @@ $self->{texts} = {
   'Create bank collection via SEPA XML' => 'Bankeinzug via SEPA XML erstellen',
   'Create bank transfer'        => 'Überweisung erstellen',
   'Create bank transfer via SEPA XML' => 'Überweisung via SEPA XML erzeugen',
+  'Create customers and vendors. Edit all vendors. Edit all customers' => 'Kunden und Lieferanten erfassen. Alle Lieferanten bearbeiten. Alle Kunden bearbeiten',
+  'Create customers and vendors. Edit all vendors. Edit only customers where salesman equals employee (login)' => 'Kunden und Lieferanten erfassen. Alle Lieferanten bearbeiten. Nur Kunden bearbeiten bei denen der Verkäufer gleich Bearbeiter (login) ist',
   'Create invoice?'             => 'Rechnung erstellen?',
   'Create new'                  => 'Neu erfassen',
   'Create new business'         => 'Kunden-/Lieferantentyp erfassen',
@@ -731,7 +732,7 @@ $self->{texts} = {
   'Edit membership'             => 'Mitgliedschaft bearbeiten',
   'Edit note'                   => 'Notiz bearbeiten',
   'Edit payment term'           => 'Zahlungsbedingungen bearbeiten',
-  'Edit prices and discount (if not used, textfield is ONLY set readonly)' => 'Preise und Rabatt in Formularen frei anpassen (falls deaktiviert, wird allerdings NUR das textfield auf READONLY gesetzt / kann je nach Browserversion und technischen Fähigkeiten des Anwenders noch gehackt werden).',
+  'Edit prices and discount (if not used, textfield is ONLY set readonly)' => 'Preise und Rabatt in Formularen frei anpassen (falls deaktiviert, wird allerdings NUR das textfield auf READONLY gesetzt / kann je nach Browserversion und technischen Fähigkeiten des Anwenders noch umgangen werden)',
   'Edit rights'                 => 'Rechte bearbeiten',
   'Edit templates'              => 'Vorlagen bearbeiten',
   'Edit the Delivery Order'     => 'Lieferschein bearbeiten',
diff --git a/sql/Pg-upgrade2/auth_enable_ct_all_edit.pl b/sql/Pg-upgrade2/auth_enable_ct_all_edit.pl
new file mode 100644 (file)
index 0000000..0579675
--- /dev/null
@@ -0,0 +1,51 @@
+# @tag: auth_enable_ct_all_edit
+# @description: Zusätzliches Recht alle Kunden / Lieferanten editieren, war bisher standardmäßig IMMER so und kann jetzt deaktiviert werden
+#               falls es deaktiviert wird, kann ich den Kunden / Lieferanten nur editieren wenn ich selber als Verkäufer eingetragen bin
+# @depends: release_2_6_3
+# @charset: utf-8
+
+use utf8;
+use strict;
+use Data::Dumper;
+die("This script cannot be run from the command line.") unless ($main::form);
+
+sub mydberror {
+  my ($msg) = @_;
+  die($dbup_locale->text("Database update error:") .
+      "<br>$msg<br>" . $DBI::errstr);
+}
+
+sub do_update {
+  my $dbh   = $main::auth->dbconnect();
+  my $query = <<SQL;
+    SELECT id
+    FROM auth."group"
+    WHERE NOT EXISTS(
+      SELECT group_id
+      FROM auth.group_rights
+      WHERE (auth.group_rights.group_id = auth."group".id)
+        AND (auth.group_rights."right"  = 'customer_vendor_all_edit')
+    )
+SQL
+
+  my @group_ids = selectall_array_query($form, $dbh, $query);
+  if (@group_ids) {
+    $query = <<SQL;
+      INSERT INTO auth.group_rights (group_id, "right",          granted)
+      VALUES                        (?,        'customer_vendor_all_edit', TRUE)
+SQL
+    my $sth = prepare_query($form, $dbh, $query);
+
+    foreach my $id (@group_ids) {
+      do_statement($form, $sth, $query, $id);
+    }
+
+    $sth->finish();
+    $dbh->commit();
+  }
+
+  return 1;
+}
+
+return do_update();
+