Revision 3e2892b1
Von Sven Schöling vor mehr als 15 Jahren hinzugefügt
SL/CVar.pm | ||
---|---|---|
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();
|
||
... | ... | |
|
||
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) {
|
||
... | ... | |
: $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') {
|
||
... | ... | |
}
|
||
|
||
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();
|
||
... | ... | |
|
||
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();
|
||
... | ... | |
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;
|
locale/de/all | ||
---|---|---|
'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',
|
||
... | ... | |
'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',
|
||
... | ... | |
'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',
|
||
... | ... | |
'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)',
|
||
... | ... | |
'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',
|
||
... | ... | |
'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.',
|
||
... | ... | |
'Ertrag' => 'Ertrag',
|
||
'Ertrag prozentual' => 'Ertrag prozentual',
|
||
'Escape character' => 'Escape-Zeichen',
|
||
'Etiketten' => '',
|
||
'Exact' => 'Genau',
|
||
'Exch' => 'Wechselkurs.',
|
||
'Exchangerate' => 'Wechselkurs',
|
||
... | ... | |
'Group missing!' => 'Warengruppe fehlt!',
|
||
'Group saved!' => 'Warengruppe gespeichert!',
|
||
'Groups' => 'Warengruppen',
|
||
'Gruppen' => '',
|
||
'HTML' => 'HTML',
|
||
'HTML Templates' => 'HTML-Vorlagen',
|
||
'Has serial number' => 'Hat eine Serienummer',
|
||
... | ... | |
'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',
|
||
... | ... | |
'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',
|
||
... | ... | |
'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',
|
||
... | ... | |
'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ä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',
|
||
... | ... | |
'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',
|
||
... | ... | |
'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.',
|
||
... | ... | |
'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.',
|
||
... | ... | |
'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 ',
|
||
... | ... | |
'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',
|
||
... | ... | |
'Shipping Address' => 'Lieferadresse',
|
||
'Shipping Point' => 'Versandort',
|
||
'Shipto' => 'Lieferanschriften',
|
||
'Shop' => '',
|
||
'Shopartikel' => 'Shopartikel',
|
||
'Short' => 'Knapp',
|
||
'Show' => 'Zeigen',
|
||
... | ... | |
'Skonto Terms' => 'Zahlungsziel Skonto',
|
||
'Sold' => 'Verkauft',
|
||
'Solution' => 'L?sung',
|
||
'Sonderflag' => '',
|
||
'Source' => 'Beleg',
|
||
'Source bin' => 'Quelllagerplatz',
|
||
'Spoolfile' => 'Druckdatei',
|
||
... | ... | |
'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',
|
||
... | ... | |
'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',
|
||
... | ... | |
'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.',
|
||
... | ... | |
'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',
|
||
... | ... | |
'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',
|
locale/de/menu | ||
---|---|---|
'Languages' => 'Sprachen',
|
||
'Lead' => 'Kundenquelle',
|
||
'Licenses' => 'Lizenzen',
|
||
'List' => 'Anzeigen',
|
||
'List' => 'List',
|
||
'List Accounting Groups' => 'Buchungsgruppen anzeigen',
|
||
'List Accounts' => 'Konten anzeigen',
|
||
'List Businesses' => 'Kunden-/Lieferantentypen anzeigen',
|
locale/de/menunew | ||
---|---|---|
'Languages' => 'Sprachen',
|
||
'Lead' => 'Kundenquelle',
|
||
'Licenses' => 'Lizenzen',
|
||
'List' => 'Anzeigen',
|
||
'List' => 'List',
|
||
'List Accounting Groups' => 'Buchungsgruppen anzeigen',
|
||
'List Accounts' => 'Konten anzeigen',
|
||
'List Businesses' => 'Kunden-/Lieferantentypen anzeigen',
|
sql/Pg-upgrade2/custom_variables_valid.sql | ||
---|---|---|
-- @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)
|
||
);
|
templates/webpages/ic/form_footer_de.html | ||
---|---|---|
[%- 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>
|
templates/webpages/ic/form_footer_master.html | ||
---|---|---|
[%- 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>
|
templates/webpages/ic/form_header_de.html | ||
---|---|---|
</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>
|
Auch abrufbar als: Unified diff
Valid Flag für Custom Variables in Artikeln.
Ausserdem gefixte Locales.