From: Sven Schöling Date: Wed, 30 Sep 2009 10:43:40 +0000 (+0200) Subject: Valid Flag für Custom Variables in Artikeln. X-Git-Tag: release-2.6.1beta1~268 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=3e2892b1ac262d0dfd2679e254cc979a1b8405b8;p=kivitendo-erp.git Valid Flag für Custom Variables in Artikeln. Ausserdem gefixte Locales. --- diff --git a/SL/CVar.pm b/SL/CVar.pm index 6976a99a5..b97b5a5db 100644 --- a/SL/CVar.pm +++ b/SL/CVar.pm @@ -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} = "{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. +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; diff --git a/locale/de/all b/locale/de/all index ca5028d2e..881e3654e 100644 --- a/locale/de/all +++ b/locale/de/all @@ -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ü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 übernehmen, damit der Händler die Waren direkt an Ihren Kunden liefern kann?', 'Do you want to store the existing onhand values into a new warehouse?' => 'Möchten Sie die vorhandenen Mengendaten in ein Lager ü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äß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ü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 [% HTML.escape(dbname) %]. You should create a backup of the database before proceeding because the backup might not be reversible.' => 'Lx-Office wird gleich die Datenbank [% HTML.escape(dbname) %] aktualisieren. Sie sollten eine Sicherungskopie der Datenbank erstellen, bevor Sie fortfahren, da die Aktualisierung unter Umstä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ält jetzt auch echte Lagerverwaultung anstatt reiner Mengenzä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ählen Sie ein anderes Menü in der Benutzerkonfiguration im Administrationsmenü 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ä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ür jeden Artikel nur noch die Buchungsgruppe anstelle der drei einzelnen Konten auswä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ö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 term you\'re looking for?' => 'Nach welchem Begriff 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ür', diff --git a/locale/de/menu b/locale/de/menu index d5becc2a9..28ed3678a 100644 --- a/locale/de/menu +++ b/locale/de/menu @@ -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', diff --git a/locale/de/menunew b/locale/de/menunew index 3287d82e9..8b285c133 100644 --- a/locale/de/menunew +++ b/locale/de/menunew @@ -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 index 000000000..a0ee09053 --- /dev/null +++ b/sql/Pg-upgrade2/custom_variables_valid.sql @@ -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) +); diff --git a/templates/webpages/ic/form_footer_de.html b/templates/webpages/ic/form_footer_de.html index 86da5dcef..e4faaa39a 100644 --- a/templates/webpages/ic/form_footer_de.html +++ b/templates/webpages/ic/form_footer_de.html @@ -30,10 +30,13 @@ [%- IF CUSTOM_VARIABLES.size %]
+

Unmarkierte Variablen werden für diesen Artikel nicht in Aufträgen und Rechnungen angezeigt.

+

[%- FOREACH var = CUSTOM_VARIABLES %] + diff --git a/templates/webpages/ic/form_footer_master.html b/templates/webpages/ic/form_footer_master.html index 0b7251554..bcee92a50 100644 --- a/templates/webpages/ic/form_footer_master.html +++ b/templates/webpages/ic/form_footer_master.html @@ -30,10 +30,13 @@ [%- IF CUSTOM_VARIABLES.size %]
+

Unchecked custom variables will not appear in orders and invoices.

+

[% var.VALID_BOX %] [% HTML.escape(var.description) %] [% var.HTML_CODE %]
[%- FOREACH var = CUSTOM_VARIABLES %] + diff --git a/templates/webpages/ic/form_header_de.html b/templates/webpages/ic/form_header_de.html index 1ae4073bd..d78717dc7 100644 --- a/templates/webpages/ic/form_header_de.html +++ b/templates/webpages/ic/form_header_de.html @@ -253,7 +253,7 @@ [%- END %] - +
[% var.VALID_BOX %] [% HTML.escape(var.description) %] [% var.HTML_CODE %]