Programmlogik für Recht 'Schreibgeschützte Preise' (s.a. Commit davor)
authorJan Büren <jan@lx-office-hosting.de>
Wed, 30 Nov 2011 11:27:54 +0000 (12:27 +0100)
committerJan Büren <jan@lx-office-hosting.de>
Wed, 30 Nov 2011 11:27:54 +0000 (12:27 +0100)
Details: Vergessen bei dem Commit von gerade, die entsprechenden Programmänderungen auch zu committen, betrifft: Übersetzungen, Recht in Auth.pm sowie die entsprechende neue Logik in io.pl->display_row

SL/Auth.pm
bin/mozilla/io.pl
locale/de/all

index 7e46c12..1577eb8 100644 (file)
@@ -953,6 +953,7 @@ sub all_rights_full {
     ["invoice_edit",                   $locale->text("Create and edit invoices and credit notes")],
     ["dunning_edit",                   $locale->text("Create and edit dunnings")],
     ["sales_all_edit",                 $locale->text("View/edit all employees sales documents")],
+    ["edit_prices",                    $locale->text("Edit prices and discount (if not used, textfield is ONLY set readonly)")],
     ["--ap",                           $locale->text("AP")],
     ["request_quotation_edit",         $locale->text("Create and edit RFQs")],
     ["purchase_order_edit",            $locale->text("Create and edit purchase orders")],
index 5df76ed..bef9a84 100644 (file)
@@ -277,12 +277,16 @@ sub display_row {
     }
 
     # build in drop down list for pricesgroups
+    # $sellprice_value setzt den Wert etwas unabhängiger von der Darstellung.
+    # Hintergrund: Preisgruppen werden hier überprüft und neu berechnet.
+    # Vorher wurde der ganze cgi->textfield Block zweimal identisch eingebaut, dass passiert
+    # jetzt nach der Abfrage.
+    my $sellprice_value;
     if ($form->{"prices_$i"}) {
       $column_data{sellprice_pg} = qq|<select name="sellprice_pg_$i" style="width: 8em">$form->{"prices_$i"}</select>|;
-      $column_data{sellprice}    = $cgi->textfield(-name => "sellprice_$i", -size => 10, -onBlur => 'check_right_number_format(this)', -value =>
-                                   (($form->{"new_pricegroup_$i"} != $form->{"old_pricegroup_$i"})
+      $sellprice_value           =($form->{"new_pricegroup_$i"} != $form->{"old_pricegroup_$i"})
                                       ? $form->format_amount(\%myconfig, $form->{"price_new_$i"}, $decimalplaces)
-                                      : $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces)));
+                                      : $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces);
     } else {
       # for last row and report
       # set pricegroup drop down list from report menu
@@ -295,11 +299,22 @@ sub display_row {
       } else {
         $column_data{sellprice_pg} = qq|&nbsp;|;
       }
-      $column_data{sellprice} = $cgi->textfield(-name => "sellprice_$i", -size => 10, -onBlur => "check_right_number_format(this)", -value =>
-                                                $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces));
+      $sellprice_value = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces);
 
     }
-    $column_data{discount}    = $cgi->textfield(-name => "discount_$i", -size => 3, -value => $form->format_amount(\%myconfig, $form->{"discount_$i"}));
+    # Falls der Benutzer die Preise nicht anpassen sollte, wird das entsprechende
+    # Textfield auf readonly gesetzt. Anm. von Sven: Manipulation der Preise ist
+    # immer noch möglich, konsequenterweise sollten diese NUR aus der Datenbank
+    # geholt werden.
+    my $edit_prices = $main::auth->assert('edit_prices', 1);
+    $column_data{sellprice} = (!$edit_prices)
+                                ? $cgi->textfield(-readonly => "readonly",
+                                                  -name => "sellprice_$i", -size => 10, -onBlur => "check_right_number_format(this)", -value => $sellprice_value)
+                                : $cgi->textfield(-name => "sellprice_$i", -size => 10, -onBlur => "check_right_number_format(this)", -value => $sellprice_value);
+    $column_data{discount}    = (!$edit_prices)
+                                  ? $cgi->textfield(-readonly => "readonly",
+                                                    -name => "discount_$i", -size => 3, -value => $form->format_amount(\%myconfig, $form->{"discount_$i"}))
+                                  : $cgi->textfield(-name => "discount_$i", -size => 3, -value => $form->format_amount(\%myconfig, $form->{"discount_$i"}));
     $column_data{linetotal}   = $form->format_amount(\%myconfig, $linetotal, 2);
     $column_data{bin}         = $form->{"bin_$i"};
 
index dde662e..9e72296 100644 (file)
@@ -721,6 +721,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 rights'                 => 'Rechte bearbeiten',
   'Edit templates'              => 'Vorlagen bearbeiten',
   'Edit the Delivery Order'     => 'Lieferschein bearbeiten',
@@ -996,7 +997,6 @@ $self->{texts} = {
   'KNr. beim Kunden'            => 'KNr. beim Kunden',
   'Keine Suchergebnisse gefunden!' => 'Keine Suchergebnisse gefunden!',
   'Konten'                      => 'Konten',
-  'Kontonummernerweiterung (KNE)' => 'Kontonummernerweiterung (KNE)',
   'L'                           => 'L',
   'LIABILITIES'                 => 'PASSIVA',
   'LP'                          => 'LP',
@@ -1358,7 +1358,6 @@ $self->{texts} = {
   'Preferences saved!'          => 'Einstellungen gespeichert!',
   'Prefix for the new bins\' names' => 'Namenspr&auml;fix f&uuml;r die neuen Lagerpl&auml;tze',
   'Preis'                       => 'Preis',
-  'Preisgruppe'                 => 'Preisgruppe',
   'Preisklasse'                 => 'Preisgruppe',
   'Prepare bank collection via SEPA XML' => 'Einzug via SEPA XML vorbereiten',
   'Prepare bank transfer via SEPA XML' => 'Überweisung via SEPA XML vorbereiten',