Valid Flag für Custom Variables in Artikeln.
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 30 Sep 2009 10:43:40 +0000 (12:43 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 30 Sep 2009 10:43:40 +0000 (12:43 +0200)
Ausserdem gefixte Locales.

SL/CVar.pm
locale/de/all
locale/de/menu
locale/de/menunew
sql/Pg-upgrade2/custom_variables_valid.sql [new file with mode: 0644]
templates/webpages/ic/form_footer_de.html
templates/webpages/ic/form_footer_master.html
templates/webpages/ic/form_header_de.html

index 6976a99..b97b5a5 100644 (file)
@@ -1,8 +1,10 @@
 package CVar;
 
 use List::Util qw(first);
+use Data::Dumper;
 
 use SL::DBUtils;
+use SL::MoreCommon qw(listify);
 
 sub get_configs {
   $main::lxdebug->enter_sub();
@@ -228,6 +230,8 @@ sub get_custom_variables {
 
       do_statement($form, $h_var, $q_var, @values);
       $act_var = $h_var->fetchrow_hashref();
+
+      $act_var->{valid} = $self->get_custom_variables_validity(config_id => $cvar->{id}, trans_id => $params{trans_id});
     }
 
     if ($act_var) {
@@ -236,7 +240,7 @@ sub get_custom_variables {
                      : $cvar->{type} eq 'number'    ? $act_var->{number_value}
                      : $cvar->{type} eq 'bool'      ? $act_var->{bool_value}
                      :                                $act_var->{text_value};
-
+      $cvar->{valid} = $act_var->{valid};
     } else {
       if ($cvar->{type} eq 'date') {
         if ($cvar->{default_value} eq 'NOW') {
@@ -329,6 +333,10 @@ sub save_custom_variables {
     }
 
     do_statement($form, $sth, $query, @values);
+
+    $self->save_custom_variables_validity(trans_id => $params{trans_id}, config_id => $config->{id},
+      validity => ($params{variables}->{"$params{name_prefix}cvar_$config->{name}$params{name_postfix}_valid"} ? 1 : 0)
+    );
   }
 
   $sth->finish();
@@ -356,6 +364,7 @@ sub render_inputs {
 
   foreach my $var (@{ $params{variables} }) {
     $var->{HTML_CODE} = $form->parse_html_template('amcvar/render_inputs', { 'var' => $var, %options });
+    $var->{VALID_BOX} = "<input type=checkbox name='$options{name_prefix}cvar_$var->{name}$options{name_postfix}_valid'@{[!$var->{valid} ? ' checked' : '']}>";
   }
 
   $main::lxdebug->leave_sub();
@@ -587,5 +596,80 @@ sub get_field_format_list {
   return ($date_fields, $number_fields);
 }
 
+=head2 VALIDITY
+
+Suppose the following scenario:
+
+You have a lot of parts in your database, and a set of properties cofigured. Now not every part has every of these properties, some combinations will just make no sense. In order to clean up your inputs a bit, you want to mark certain combinations as invalid, blocking them from modification and possibly display.
+
+Validity is assumed. If you modify validity, you actually save B<invalidity>.
+validity is saved as a function of config_id, and the trans_id
+
+In the naive way, disable an attribute for a specific id (simple)
+
+=cut
+sub save_custom_variables_validity {
+  $main::lxdebug->enter_sub();
+
+  my $self     = shift;
+  my %params   = @_;
+
+  Common::check_params(\%params, qw(config_id trans_id validity));
+
+  my $myconfig = \%main::myconfig;
+  my $form     = $main::form;
+
+  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+  my (@where, @values);
+  add_token(\@where, \@values, col => "config_id", val => $params{config_id}, esc => \&conv_i);
+  add_token(\@where, \@values, col => "trans_id",  val => $params{trans_id},  esc => \&conv_i);
+
+  my $where = scalar @where ? "WHERE " . join ' AND ', @where : '';
+  my $query = qq|DELETE FROM custom_variables_validity $where|;
+
+  do_query($form, $dbh, $query, @values);
+
+  $query  =
+    qq|INSERT INTO custom_variables_validity (config_id, trans_id)
+       VALUES                                (?,         ?       )|;
+  my $sth = prepare_query($form, $dbh, $query);
+
+  unless ($params{validity}) {
+    foreach my $config_id (listify $params{config_id}) {
+      foreach my $trans_id (listify $params{trans_id}) {
+        do_statement($form, $sth, $query, conv_i($config_id), conv_i($trans_id));
+      }
+    }
+  }
+
+  $sth->finish();
+
+  $dbh->commit();
+
+  $main::lxdebug->leave_sub();
+}
+
+sub get_custom_variables_validity {
+  $main::lxdebug->enter_sub();
+
+  my $self     = shift;
+  my %params   = @_;
+
+  Common::check_params(\%params, qw(config_id trans_id));
+
+  my $myconfig = \%main::myconfig;
+  my $form     = $main::form;
+
+  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+  my $query    = qq|SELECT COUNT(*) FROM custom_variables_validity WHERE config_id = ? AND trans_id = ?|;
+
+  my ($validity) = selectfirst_array_query($form, $dbh, $query, conv_i($params{config_id}), conv_i($params{trans_id}));
+
+  $main::lxdebug->leave_sub();
+
+  return $validity;
+}
 
 1;
index ca5028d..881e365 100644 (file)
@@ -102,9 +102,6 @@ $self->{texts} = {
   'Active?'                     => 'Aktiviert?',
   'Add'                         => 'Erfassen',
   'Add '                        => 'Hinzufügen',
-  'Add (Customers and Vendors)' => '',
-  'Add (Parts, services, assemblies)' => '',
-  'Add (Projects)'              => '',
   'Add AP Transaction'          => 'Kreditorenbuchung',
   'Add AR Transaction'          => 'Debitorenbuchung',
   'Add Account'                 => 'Konto erfassen',
@@ -155,7 +152,6 @@ $self->{texts} = {
   'Add to group'                => 'Zu Gruppe hinzufügen',
   'Add unit'                    => 'Einheit hinzuf&uuml;gen',
   'Address'                     => 'Adresse',
-  'Admin'                       => '',
   'Administration'              => 'Administration',
   'Administration area'         => 'Administrationsbereich',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
@@ -215,7 +211,6 @@ $self->{texts} = {
   'Attachment name'             => 'Name des Anhangs',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Audit Control'               => 'Bücherkontrolle',
-  'Auftragschance'              => '',
   'Aug'                         => 'Aug',
   'August'                      => 'August',
   'Authentification database creation' => 'Anlegen der Datenbank zur Benutzerauthentifizierung',
@@ -244,11 +239,9 @@ $self->{texts} = {
   'Batch Printing'              => 'Druck',
   'Bcc'                         => 'Bcc',
   'Belegnummer'                 => 'Buchungsnummer',
-  'Benutzer'                    => '',
   'Beratername'                 => 'Beratername',
   'Beraternummer'               => 'Beraternummer',
   'Bestandskonto'               => 'Bestandskonto',
-  'Bestellungen'                => '',
   'Bilanz'                      => 'Bilanz',
   'Billing Address'             => 'Rechnungsadresse',
   'Billing/shipping address (city)' => 'Rechnungsadresse (Stadt)',
@@ -284,7 +277,6 @@ $self->{texts} = {
   'CANCELED'                    => 'Storniert',
   'CB Transaction'              => 'SB-Buchung',
   'CR'                          => 'H',
-  'CRM'                         => '',
   'CRM admin'                   => 'Administration',
   'CRM create customers, vendors and contacts' => 'Erfassen (Kunden, Lieferanten, Personen)',
   'CRM follow up'               => 'Wiedervorlage',
@@ -545,7 +537,6 @@ $self->{texts} = {
   'Do you want to carry this shipping address over to the new purchase order so that the vendor can deliver the goods directly to your customer?' => 'Wollen Sie diese Lieferadresse in den neuen Lieferantenauftrag &uuml;bernehmen, damit der H&auml;ndler die Waren direkt an Ihren Kunden liefern kann?',
   'Do you want to store the existing onhand values into a new warehouse?' => 'M&ouml;chten Sie die vorhandenen Mengendaten in ein Lager &uuml;bertragen?',
   'Documents in the WebDAV repository' => 'Dokumente im WebDAV-Repository',
-  'Dokumentvorlage'             => '',
   'Done'                        => 'Fertig',
   'Download the backup'         => 'Die Sicherungsdatei herunterladen',
   'Draft saved.'                => 'Entwurf gespeichert.',
@@ -668,7 +659,6 @@ $self->{texts} = {
   'Ertrag'                      => 'Ertrag',
   'Ertrag prozentual'           => 'Ertrag prozentual',
   'Escape character'            => 'Escape-Zeichen',
-  'Etiketten'                   => '',
   'Exact'                       => 'Genau',
   'Exch'                        => 'Wechselkurs.',
   'Exchangerate'                => 'Wechselkurs',
@@ -757,7 +747,6 @@ $self->{texts} = {
   'Group missing!'              => 'Warengruppe fehlt!',
   'Group saved!'                => 'Warengruppe gespeichert!',
   'Groups'                      => 'Warengruppen',
-  'Gruppen'                     => '',
   'HTML'                        => 'HTML',
   'HTML Templates'              => 'HTML-Vorlagen',
   'Has serial number'           => 'Hat eine Serienummer',
@@ -766,7 +755,6 @@ $self->{texts} = {
   'Help'                        => 'Hilfe',
   'Here\'s an example command line:' => 'Hier ist eine Kommandozeile, die als Beispiel dient:',
   'Hide by default'             => 'Standardm&auml;&szlig;ig verstecken',
-  'Hilfe'                       => '',
   'History'                     => 'Historie',
   'History Search'              => 'Historien Suche',
   'History Search Engine'       => 'Historien Suchmaschine',
@@ -863,10 +851,8 @@ $self->{texts} = {
   'KNE-Export erfolgreich!'     => 'KNE-Export erfolgreich!',
   'KNr. beim Kunden'            => 'KNr. beim Kunden',
   'Keine Suchergebnisse gefunden!' => 'Keine Suchergebnisse gefunden!',
-  'Konfiguration'               => '',
   'Konten'                      => 'Konten',
   'Kontonummernerweiterung (KNE)' => 'Kontonummernerweiterung (KNE)',
-  'Kunden'                      => '',
   'L'                           => 'L',
   'LIABILITIES'                 => 'PASSIVA',
   'LP'                          => 'LP',
@@ -900,14 +886,11 @@ $self->{texts} = {
   'License key'                 => 'Lizenzschlüssel',
   'Licensed to'                 => 'Lizenziert für',
   'Licenses'                    => 'Lizenzen',
-  'Lieferant'                   => '',
   'Lieferungen'                 => 'Lieferungen',
   'Limit part selection'        => 'Artikelauswahl eingrenzen',
   'Line Total'                  => 'Zeilensumme',
   'Line endings'                => 'Zeilenumbr&uuml;che',
-  'List (Customers and Vendors)' => '',
-  'List (Parts, services, assemblies)' => '',
-  'List (Projects)'             => '',
+  'List'                        => 'List',
   'List Accounting Groups'      => 'Buchungsgruppen anzeigen',
   'List Accounts'               => 'Konten anzeigen',
   'List Businesses'             => 'Kunden-/Lieferantentypen anzeigen',
@@ -943,7 +926,6 @@ $self->{texts} = {
   'Lx-Office is about to update the database <b>[% HTML.escape(dbname) %]</b>. You should create a backup of the database before proceeding because the backup might not be reversible.' => 'Lx-Office wird gleich die Datenbank <b>[% HTML.escape(dbname) %]</b> aktualisieren. Sie sollten eine Sicherungskopie der Datenbank erstellen, bevor Sie fortfahren, da die Aktualisierung unter Umst&auml;nden nicht umkehrbar ist.',
   'Lx-Office is now able to manage warehouses instead of just tracking the amount of goods in your system.' => 'Lx-Office enth&auml;lt jetzt auch echte Lagerverwaultung anstatt reiner Mengenz&auml;hlung.',
   'Lx-Office website'           => 'Lx-Office-Webseite',
-  'MACSCAN'                     => '',
   'MAILED'                      => 'Gesendet',
   'MSG_BROWSER_DOES_NOT_SUPPORT_IFRAMES' => 'Ihr Browser kann leider keine eingebetteten Frames anzeigen. Bitte w&auml;hlen Sie ein anderes Men&uuml; in der Benutzerkonfiguration im Administrationsmen&uuml; aus.',
   'Main Preferences'            => 'Grundeinstellungen',
@@ -957,8 +939,6 @@ $self->{texts} = {
   'Mark closed'                 => 'Schließen',
   'Marked as paid'              => 'Als bezahlt markiert',
   'Marked entries printed!'     => 'Markierte Einträge wurden gedruckt!',
-  'Maschinen'                   => '',
-  'Maschinen erfassen'          => '',
   'Master Data'                 => 'Stammdaten',
   'Max. Dunning Level'          => 'höchste Mahnstufe',
   'May'                         => 'Mai',
@@ -979,7 +959,6 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'Missing parameter (at least one of #1) in call to sub #2.' => 'Fehlernder Parameter (mindestens einer aus \'#1\') in Funktionsaufruf \'#2\'.',
   'Mitarbeiter'                 => 'Mitarbeiter',
-  'Mitteilungen'                => '',
   'Mobile1'                     => 'Mobile 1',
   'Mobile2'                     => 'Mobile 2',
   'Model'                       => 'Lieferanten-Art-Nr.',
@@ -1053,7 +1032,6 @@ $self->{texts} = {
   'Nothing has been selected for transfer.' => 'Es wurde nichts zum Umlagern ausgew&auml;hlt.',
   'Nothing selected!'           => 'Es wurde nichts ausgewählt!',
   'Nothing to delete!'          => 'Es konnte nichts gelöscht werden!',
-  'Notizen'                     => '',
   'Nov'                         => 'Nov',
   'November'                    => 'November',
   'Now the user must select a single Buchungsgruppe for each part instead of three distinct accounts.' => 'Der Benutzer muss nun f&uuml;r jeden Artikel nur noch die Buchungsgruppe anstelle der drei einzelnen Konten ausw&auml;hlen.',
@@ -1138,11 +1116,9 @@ $self->{texts} = {
   'Payment posted!'             => 'Zahlung gebucht!',
   'Payment terms deleted!'      => 'Zahlungskonditionen gelöscht!',
   'Payments'                    => 'Zahlungsausgänge',
-  'Pepper'                      => '',
   'Period'                      => 'Zeitraum',
   'Period:'                     => 'Zeitraum:',
   'Personal settings'           => 'Pers&ouml;nliche Einstellungen',
-  'Personen'                    => '',
   'Pg Database Administration'  => 'Datenbankadministration',
   'Phone'                       => 'Telefon',
   'Phone1'                      => 'Telefon 1 ',
@@ -1337,7 +1313,6 @@ $self->{texts} = {
   'Save as new'                 => 'als neu speichern',
   'Save draft'                  => 'Entwurf speichern',
   'Saving the file \'%s\' failed. OS error message: %s' => 'Das Speichern der Datei \'%s\' schlug fehl. Fehlermeldung des Betriebssystems: %s',
-  'Schnellsuche'                => '',
   'Screen'                      => 'Bildschirm',
   'Searchable'                  => 'Durchsuchbar',
   'Select'                      => 'auswählen',
@@ -1383,7 +1358,6 @@ $self->{texts} = {
   'Shipping Address'            => 'Lieferadresse',
   'Shipping Point'              => 'Versandort',
   'Shipto'                      => 'Lieferanschriften',
-  'Shop'                        => '',
   'Shopartikel'                 => 'Shopartikel',
   'Short'                       => 'Knapp',
   'Show'                        => 'Zeigen',
@@ -1401,7 +1375,6 @@ $self->{texts} = {
   'Skonto Terms'                => 'Zahlungsziel Skonto',
   'Sold'                        => 'Verkauft',
   'Solution'                    => 'Lösung',
-  'Sonderflag'                  => '',
   'Source'                      => 'Beleg',
   'Source bin'                  => 'Quelllagerplatz',
   'Spoolfile'                   => 'Druckdatei',
@@ -1414,7 +1387,6 @@ $self->{texts} = {
   'Statement Balance'           => 'Sammelrechnungsbilanz',
   'Statement sent to'           => 'Sammelrechnung verschickt an',
   'Statements sent to printer!' => 'Sammelrechnungen an Drucker geschickt!',
-  'Status'                      => '',
   'Step 1 of 3: Parts'          => 'Schritt 1 von 3: Waren',
   'Step 2 of 3: Services'       => 'Schritt 2 von 3: Dienstleistungen',
   'Step 3 of 3: Assemblies'     => 'Schritt 3 von 3: Erzeugnisse',
@@ -1481,7 +1453,6 @@ $self->{texts} = {
   'Template Code missing!'      => 'Vorlagenkürzel fehlt!',
   'Template database'           => 'Datenbankvorlage',
   'Templates'                   => 'Vorlagen',
-  'Termine'                     => '',
   'Terms missing in row '       => '+Tage fehlen in Zeile ',
   'Test connection'             => 'Verbindung testen',
   'Text field'                  => 'Textfeld',
@@ -1691,6 +1662,7 @@ $self->{texts} = {
   'UStVa'                       => 'UStVa',
   'UStVa Einstellungen'         => 'UStVa Einstellungen',
   'Unbalanced Ledger'           => 'Bilanzfehler',
+  'Unchecked custom variables will not appear in orders and invoices.' => 'Unmarkierte Variablen werden für diesen Artikel nicht in Aufträgen und Rechnungen angezeigt.',
   'Unfinished follow-ups'       => 'Nicht erledigte Wiedervorlagen',
   'Unit'                        => 'Einheit',
   'Unit missing.'               => 'Die Einheit fehlt.',
@@ -1755,17 +1727,12 @@ $self->{texts} = {
   'Warehouse management'        => 'Lagerverwaltung/Bestandsveränderung',
   'Warehouse saved.'            => 'Lager gespeichert.',
   'Warehouses'                  => 'Lager',
-  'Warenexport'                 => '',
   'Warnings during template upgrade' => 'Warnungen bei Aktualisierung der Dokumentenvorlagen',
-  'Wartungsvertrag'             => '',
-  'Wartungsvertrag erfassen'    => '',
   'WebDAV link'                 => 'WebDAV-Link',
   'Weight'                      => 'Gewicht',
   'Weight unit'                 => 'Gewichtseinheit',
   'What type of item is this?'  => 'Was ist dieser Artikel?',
   'What\'s the <b>term</b> you\'re looking for?' => 'Nach welchem <b>Begriff</b> wollen Sie suchen?',
-  'Wiedervorlage'               => '',
-  'Wissens-DB'                  => '',
   'With Extension Of Time'      => 'mit Dauerfristverlängerung',
   'Workflow Delivery Order'     => 'Workflow Lieferschein',
   'Workflow purchase_order'     => 'Workflow Lieferantenauftrag',
@@ -1857,12 +1824,10 @@ $self->{texts} = {
   'down'                        => 'runter',
   'drucken'                     => 'drucken',
   'dunning_list'                => 'mahnungsliste',
-  'eMail'                       => '',
   'eMail Send?'                 => 'eMail-Versand?',
   'eMail?'                      => 'eMail?',
   'ea'                          => 'St.',
   'emailed to'                  => 'gemailt an',
-  'erfassen'                    => '',
   'female'                      => 'weiblich',
   'follow_up_list'              => 'wiedervorlageliste',
   'for'                         => 'f&uuml;r',
index d5becc2..28ed367 100644 (file)
@@ -117,7 +117,7 @@ $self->{texts} = {
   'Languages'                   => 'Sprachen',
   'Lead'                        => 'Kundenquelle',
   'Licenses'                    => 'Lizenzen',
-  'List'                        => 'Anzeigen',
+  'List'                        => 'List',
   'List Accounting Groups'      => 'Buchungsgruppen anzeigen',
   'List Accounts'               => 'Konten anzeigen',
   'List Businesses'             => 'Kunden-/Lieferantentypen anzeigen',
index 3287d82..8b285c1 100644 (file)
@@ -116,7 +116,7 @@ $self->{texts} = {
   'Languages'                   => 'Sprachen',
   'Lead'                        => 'Kundenquelle',
   'Licenses'                    => 'Lizenzen',
-  'List'                        => 'Anzeigen',
+  'List'                        => 'List',
   'List Accounting Groups'      => 'Buchungsgruppen anzeigen',
   'List Accounts'               => 'Konten anzeigen',
   'List Businesses'             => 'Kunden-/Lieferantentypen anzeigen',
diff --git a/sql/Pg-upgrade2/custom_variables_valid.sql b/sql/Pg-upgrade2/custom_variables_valid.sql
new file mode 100644 (file)
index 0000000..a0ee090
--- /dev/null
@@ -0,0 +1,13 @@
+-- @tag: custom_variables_valid
+-- @description: Benutzerdefinierte Variablen als ungültig markieren.
+-- @depends: release_2_6_0 custom_variables
+CREATE TABLE custom_variables_validity (
+       id        integer NOT NULL DEFAULT nextval('id'::text),
+       config_id integer NOT NULL,
+       trans_id  integer NOT NULL,
+
+       itime timestamp DEFAULT now(),
+
+       PRIMARY KEY (id),
+       FOREIGN KEY (config_id) REFERENCES custom_variable_configs (id)
+);
index 86da5dc..e4faaa3 100644 (file)
 [%- IF CUSTOM_VARIABLES.size %]
 <div id="custom_variables" class="tabcontent">
 
+ <p>Unmarkierte Variablen werden für diesen Artikel nicht in Aufträgen und Rechnungen angezeigt.</p>
+
  <p>
   <table>
    [%- FOREACH var = CUSTOM_VARIABLES %]
    <tr>
+    <td align="right" valign="top">[% var.VALID_BOX %]</td>
     <td align="right" valign="top">[% HTML.escape(var.description) %]</td>
     <td valign="top">[% var.HTML_CODE %]</td>
    </tr>
index 0b72515..bcee92a 100644 (file)
 [%- IF CUSTOM_VARIABLES.size %]
 <div id="custom_variables" class="tabcontent">
 
+ <p><translate>Unchecked custom variables will not appear in orders and invoices.</translate></p>
+
  <p>
   <table>
    [%- FOREACH var = CUSTOM_VARIABLES %]
    <tr>
+    <td align="right" valign="top">[% var.VALID_BOX %]</td>
     <td align="right" valign="top">[% HTML.escape(var.description) %]</td>
     <td valign="top">[% var.HTML_CODE %]</td>
    </tr>
index 1ae4073..d78717d 100644 (file)
           </tr>
         [%- END %]
           <tr>
-           <th align="right" nowrap><label for="shop">Hat eine Seriennummer</label></th>
+           <th align="right" nowrap><label for="shop">Hat eine Serienummer</label></th>
            <td><input class="checkbox" type="checkbox" name="has_sernumber" id="has_sernumber" value="1" [% IF has_sernumber %]checked[% END %]></td>
           </tr>
           <tr>