Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 3e2892b1

Von Sven Schöling vor etwa 15 Jahren hinzugefügt

  • ID 3e2892b1ac262d0dfd2679e254cc979a1b8405b8
  • Vorgänger 67223abf
  • Nachfolger 561744fd

Valid Flag für Custom Variables in Artikeln.

Ausserdem gefixte Locales.

Unterschiede anzeigen:

SL/CVar.pm
1 1
package CVar;
2 2

  
3 3
use List::Util qw(first);
4
use Data::Dumper;
4 5

  
5 6
use SL::DBUtils;
7
use SL::MoreCommon qw(listify);
6 8

  
7 9
sub get_configs {
8 10
  $main::lxdebug->enter_sub();
......
228 230

  
229 231
      do_statement($form, $h_var, $q_var, @values);
230 232
      $act_var = $h_var->fetchrow_hashref();
233

  
234
      $act_var->{valid} = $self->get_custom_variables_validity(config_id => $cvar->{id}, trans_id => $params{trans_id});
231 235
    }
232 236

  
233 237
    if ($act_var) {
......
236 240
                     : $cvar->{type} eq 'number'    ? $act_var->{number_value}
237 241
                     : $cvar->{type} eq 'bool'      ? $act_var->{bool_value}
238 242
                     :                                $act_var->{text_value};
239

  
243
      $cvar->{valid} = $act_var->{valid};
240 244
    } else {
241 245
      if ($cvar->{type} eq 'date') {
242 246
        if ($cvar->{default_value} eq 'NOW') {
......
329 333
    }
330 334

  
331 335
    do_statement($form, $sth, $query, @values);
336

  
337
    $self->save_custom_variables_validity(trans_id => $params{trans_id}, config_id => $config->{id},
338
      validity => ($params{variables}->{"$params{name_prefix}cvar_$config->{name}$params{name_postfix}_valid"} ? 1 : 0)
339
    );
332 340
  }
333 341

  
334 342
  $sth->finish();
......
356 364

  
357 365
  foreach my $var (@{ $params{variables} }) {
358 366
    $var->{HTML_CODE} = $form->parse_html_template('amcvar/render_inputs', { 'var' => $var, %options });
367
    $var->{VALID_BOX} = "<input type=checkbox name='$options{name_prefix}cvar_$var->{name}$options{name_postfix}_valid'@{[!$var->{valid} ? ' checked' : '']}>";
359 368
  }
360 369

  
361 370
  $main::lxdebug->leave_sub();
......
587 596
  return ($date_fields, $number_fields);
588 597
}
589 598

  
599
=head2 VALIDITY
600

  
601
Suppose the following scenario:
602

  
603
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.
604

  
605
Validity is assumed. If you modify validity, you actually save B<invalidity>.
606
validity is saved as a function of config_id, and the trans_id
607

  
608
In the naive way, disable an attribute for a specific id (simple)
609

  
610
=cut
611
sub save_custom_variables_validity {
612
  $main::lxdebug->enter_sub();
613

  
614
  my $self     = shift;
615
  my %params   = @_;
616

  
617
  Common::check_params(\%params, qw(config_id trans_id validity));
618

  
619
  my $myconfig = \%main::myconfig;
620
  my $form     = $main::form;
621

  
622
  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
623

  
624
  my (@where, @values);
625
  add_token(\@where, \@values, col => "config_id", val => $params{config_id}, esc => \&conv_i);
626
  add_token(\@where, \@values, col => "trans_id",  val => $params{trans_id},  esc => \&conv_i);
627

  
628
  my $where = scalar @where ? "WHERE " . join ' AND ', @where : '';
629
  my $query = qq|DELETE FROM custom_variables_validity $where|;
630

  
631
  do_query($form, $dbh, $query, @values);
632

  
633
  $query  =
634
    qq|INSERT INTO custom_variables_validity (config_id, trans_id)
635
       VALUES                                (?,         ?       )|;
636
  my $sth = prepare_query($form, $dbh, $query);
637

  
638
  unless ($params{validity}) {
639
    foreach my $config_id (listify $params{config_id}) {
640
      foreach my $trans_id (listify $params{trans_id}) {
641
        do_statement($form, $sth, $query, conv_i($config_id), conv_i($trans_id));
642
      }
643
    }
644
  }
645

  
646
  $sth->finish();
647

  
648
  $dbh->commit();
649

  
650
  $main::lxdebug->leave_sub();
651
}
652

  
653
sub get_custom_variables_validity {
654
  $main::lxdebug->enter_sub();
655

  
656
  my $self     = shift;
657
  my %params   = @_;
658

  
659
  Common::check_params(\%params, qw(config_id trans_id));
660

  
661
  my $myconfig = \%main::myconfig;
662
  my $form     = $main::form;
663

  
664
  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
665

  
666
  my $query    = qq|SELECT COUNT(*) FROM custom_variables_validity WHERE config_id = ? AND trans_id = ?|;
667

  
668
  my ($validity) = selectfirst_array_query($form, $dbh, $query, conv_i($params{config_id}), conv_i($params{trans_id}));
669

  
670
  $main::lxdebug->leave_sub();
671

  
672
  return $validity;
673
}
590 674

  
591 675
1;
locale/de/all
102 102
  'Active?'                     => 'Aktiviert?',
103 103
  'Add'                         => 'Erfassen',
104 104
  'Add '                        => 'Hinzuf?gen',
105
  'Add (Customers and Vendors)' => '',
106
  'Add (Parts, services, assemblies)' => '',
107
  'Add (Projects)'              => '',
108 105
  'Add AP Transaction'          => 'Kreditorenbuchung',
109 106
  'Add AR Transaction'          => 'Debitorenbuchung',
110 107
  'Add Account'                 => 'Konto erfassen',
......
155 152
  'Add to group'                => 'Zu Gruppe hinzuf?gen',
156 153
  'Add unit'                    => 'Einheit hinzuf&uuml;gen',
157 154
  'Address'                     => 'Adresse',
158
  'Admin'                       => '',
159 155
  'Administration'              => 'Administration',
160 156
  'Administration area'         => 'Administrationsbereich',
161 157
  'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
......
215 211
  'Attachment name'             => 'Name des Anhangs',
216 212
  'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
217 213
  'Audit Control'               => 'B?cherkontrolle',
218
  'Auftragschance'              => '',
219 214
  'Aug'                         => 'Aug',
220 215
  'August'                      => 'August',
221 216
  'Authentification database creation' => 'Anlegen der Datenbank zur Benutzerauthentifizierung',
......
244 239
  'Batch Printing'              => 'Druck',
245 240
  'Bcc'                         => 'Bcc',
246 241
  'Belegnummer'                 => 'Buchungsnummer',
247
  'Benutzer'                    => '',
248 242
  'Beratername'                 => 'Beratername',
249 243
  'Beraternummer'               => 'Beraternummer',
250 244
  'Bestandskonto'               => 'Bestandskonto',
251
  'Bestellungen'                => '',
252 245
  'Bilanz'                      => 'Bilanz',
253 246
  'Billing Address'             => 'Rechnungsadresse',
254 247
  'Billing/shipping address (city)' => 'Rechnungsadresse (Stadt)',
......
284 277
  'CANCELED'                    => 'Storniert',
285 278
  'CB Transaction'              => 'SB-Buchung',
286 279
  'CR'                          => 'H',
287
  'CRM'                         => '',
288 280
  'CRM admin'                   => 'Administration',
289 281
  'CRM create customers, vendors and contacts' => 'Erfassen (Kunden, Lieferanten, Personen)',
290 282
  'CRM follow up'               => 'Wiedervorlage',
......
545 537
  '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?',
546 538
  '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?',
547 539
  'Documents in the WebDAV repository' => 'Dokumente im WebDAV-Repository',
548
  'Dokumentvorlage'             => '',
549 540
  'Done'                        => 'Fertig',
550 541
  'Download the backup'         => 'Die Sicherungsdatei herunterladen',
551 542
  'Draft saved.'                => 'Entwurf gespeichert.',
......
668 659
  'Ertrag'                      => 'Ertrag',
669 660
  'Ertrag prozentual'           => 'Ertrag prozentual',
670 661
  'Escape character'            => 'Escape-Zeichen',
671
  'Etiketten'                   => '',
672 662
  'Exact'                       => 'Genau',
673 663
  'Exch'                        => 'Wechselkurs.',
674 664
  'Exchangerate'                => 'Wechselkurs',
......
757 747
  'Group missing!'              => 'Warengruppe fehlt!',
758 748
  'Group saved!'                => 'Warengruppe gespeichert!',
759 749
  'Groups'                      => 'Warengruppen',
760
  'Gruppen'                     => '',
761 750
  'HTML'                        => 'HTML',
762 751
  'HTML Templates'              => 'HTML-Vorlagen',
763 752
  'Has serial number'           => 'Hat eine Serienummer',
......
766 755
  'Help'                        => 'Hilfe',
767 756
  'Here\'s an example command line:' => 'Hier ist eine Kommandozeile, die als Beispiel dient:',
768 757
  'Hide by default'             => 'Standardm&auml;&szlig;ig verstecken',
769
  'Hilfe'                       => '',
770 758
  'History'                     => 'Historie',
771 759
  'History Search'              => 'Historien Suche',
772 760
  'History Search Engine'       => 'Historien Suchmaschine',
......
863 851
  'KNE-Export erfolgreich!'     => 'KNE-Export erfolgreich!',
864 852
  'KNr. beim Kunden'            => 'KNr. beim Kunden',
865 853
  'Keine Suchergebnisse gefunden!' => 'Keine Suchergebnisse gefunden!',
866
  'Konfiguration'               => '',
867 854
  'Konten'                      => 'Konten',
868 855
  'Kontonummernerweiterung (KNE)' => 'Kontonummernerweiterung (KNE)',
869
  'Kunden'                      => '',
870 856
  'L'                           => 'L',
871 857
  'LIABILITIES'                 => 'PASSIVA',
872 858
  'LP'                          => 'LP',
......
900 886
  'License key'                 => 'Lizenzschl?ssel',
901 887
  'Licensed to'                 => 'Lizenziert f?r',
902 888
  'Licenses'                    => 'Lizenzen',
903
  'Lieferant'                   => '',
904 889
  'Lieferungen'                 => 'Lieferungen',
905 890
  'Limit part selection'        => 'Artikelauswahl eingrenzen',
906 891
  'Line Total'                  => 'Zeilensumme',
907 892
  'Line endings'                => 'Zeilenumbr&uuml;che',
908
  'List (Customers and Vendors)' => '',
909
  'List (Parts, services, assemblies)' => '',
910
  'List (Projects)'             => '',
893
  'List'                        => 'List',
911 894
  'List Accounting Groups'      => 'Buchungsgruppen anzeigen',
912 895
  'List Accounts'               => 'Konten anzeigen',
913 896
  'List Businesses'             => 'Kunden-/Lieferantentypen anzeigen',
......
943 926
  '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.',
944 927
  '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.',
945 928
  'Lx-Office website'           => 'Lx-Office-Webseite',
946
  'MACSCAN'                     => '',
947 929
  'MAILED'                      => 'Gesendet',
948 930
  '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.',
949 931
  'Main Preferences'            => 'Grundeinstellungen',
......
957 939
  'Mark closed'                 => 'Schlie?en',
958 940
  'Marked as paid'              => 'Als bezahlt markiert',
959 941
  'Marked entries printed!'     => 'Markierte Eintr?ge wurden gedruckt!',
960
  'Maschinen'                   => '',
961
  'Maschinen erfassen'          => '',
962 942
  'Master Data'                 => 'Stammdaten',
963 943
  'Max. Dunning Level'          => 'h?chste Mahnstufe',
964 944
  'May'                         => 'Mai',
......
979 959
  'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
980 960
  'Missing parameter (at least one of #1) in call to sub #2.' => 'Fehlernder Parameter (mindestens einer aus \'#1\') in Funktionsaufruf \'#2\'.',
981 961
  'Mitarbeiter'                 => 'Mitarbeiter',
982
  'Mitteilungen'                => '',
983 962
  'Mobile1'                     => 'Mobile 1',
984 963
  'Mobile2'                     => 'Mobile 2',
985 964
  'Model'                       => 'Lieferanten-Art-Nr.',
......
1053 1032
  'Nothing has been selected for transfer.' => 'Es wurde nichts zum Umlagern ausgew&auml;hlt.',
1054 1033
  'Nothing selected!'           => 'Es wurde nichts ausgew?hlt!',
1055 1034
  'Nothing to delete!'          => 'Es konnte nichts gel?scht werden!',
1056
  'Notizen'                     => '',
1057 1035
  'Nov'                         => 'Nov',
1058 1036
  'November'                    => 'November',
1059 1037
  '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 1116
  'Payment posted!'             => 'Zahlung gebucht!',
1139 1117
  'Payment terms deleted!'      => 'Zahlungskonditionen gel?scht!',
1140 1118
  'Payments'                    => 'Zahlungsausg?nge',
1141
  'Pepper'                      => '',
1142 1119
  'Period'                      => 'Zeitraum',
1143 1120
  'Period:'                     => 'Zeitraum:',
1144 1121
  'Personal settings'           => 'Pers&ouml;nliche Einstellungen',
1145
  'Personen'                    => '',
1146 1122
  'Pg Database Administration'  => 'Datenbankadministration',
1147 1123
  'Phone'                       => 'Telefon',
1148 1124
  'Phone1'                      => 'Telefon 1 ',
......
1337 1313
  'Save as new'                 => 'als neu speichern',
1338 1314
  'Save draft'                  => 'Entwurf speichern',
1339 1315
  'Saving the file \'%s\' failed. OS error message: %s' => 'Das Speichern der Datei \'%s\' schlug fehl. Fehlermeldung des Betriebssystems: %s',
1340
  'Schnellsuche'                => '',
1341 1316
  'Screen'                      => 'Bildschirm',
1342 1317
  'Searchable'                  => 'Durchsuchbar',
1343 1318
  'Select'                      => 'ausw?hlen',
......
1383 1358
  'Shipping Address'            => 'Lieferadresse',
1384 1359
  'Shipping Point'              => 'Versandort',
1385 1360
  'Shipto'                      => 'Lieferanschriften',
1386
  'Shop'                        => '',
1387 1361
  'Shopartikel'                 => 'Shopartikel',
1388 1362
  'Short'                       => 'Knapp',
1389 1363
  'Show'                        => 'Zeigen',
......
1401 1375
  'Skonto Terms'                => 'Zahlungsziel Skonto',
1402 1376
  'Sold'                        => 'Verkauft',
1403 1377
  'Solution'                    => 'L?sung',
1404
  'Sonderflag'                  => '',
1405 1378
  'Source'                      => 'Beleg',
1406 1379
  'Source bin'                  => 'Quelllagerplatz',
1407 1380
  'Spoolfile'                   => 'Druckdatei',
......
1414 1387
  'Statement Balance'           => 'Sammelrechnungsbilanz',
1415 1388
  'Statement sent to'           => 'Sammelrechnung verschickt an',
1416 1389
  'Statements sent to printer!' => 'Sammelrechnungen an Drucker geschickt!',
1417
  'Status'                      => '',
1418 1390
  'Step 1 of 3: Parts'          => 'Schritt 1 von 3: Waren',
1419 1391
  'Step 2 of 3: Services'       => 'Schritt 2 von 3: Dienstleistungen',
1420 1392
  'Step 3 of 3: Assemblies'     => 'Schritt 3 von 3: Erzeugnisse',
......
1481 1453
  'Template Code missing!'      => 'Vorlagenk?rzel fehlt!',
1482 1454
  'Template database'           => 'Datenbankvorlage',
1483 1455
  'Templates'                   => 'Vorlagen',
1484
  'Termine'                     => '',
1485 1456
  'Terms missing in row '       => '+Tage fehlen in Zeile ',
1486 1457
  'Test connection'             => 'Verbindung testen',
1487 1458
  'Text field'                  => 'Textfeld',
......
1691 1662
  'UStVa'                       => 'UStVa',
1692 1663
  'UStVa Einstellungen'         => 'UStVa Einstellungen',
1693 1664
  'Unbalanced Ledger'           => 'Bilanzfehler',
1665
  'Unchecked custom variables will not appear in orders and invoices.' => 'Unmarkierte Variablen werden f?r diesen Artikel nicht in Auftr?gen und Rechnungen angezeigt.',
1694 1666
  'Unfinished follow-ups'       => 'Nicht erledigte Wiedervorlagen',
1695 1667
  'Unit'                        => 'Einheit',
1696 1668
  'Unit missing.'               => 'Die Einheit fehlt.',
......
1755 1727
  'Warehouse management'        => 'Lagerverwaltung/Bestandsver?nderung',
1756 1728
  'Warehouse saved.'            => 'Lager gespeichert.',
1757 1729
  'Warehouses'                  => 'Lager',
1758
  'Warenexport'                 => '',
1759 1730
  'Warnings during template upgrade' => 'Warnungen bei Aktualisierung der Dokumentenvorlagen',
1760
  'Wartungsvertrag'             => '',
1761
  'Wartungsvertrag erfassen'    => '',
1762 1731
  'WebDAV link'                 => 'WebDAV-Link',
1763 1732
  'Weight'                      => 'Gewicht',
1764 1733
  'Weight unit'                 => 'Gewichtseinheit',
1765 1734
  'What type of item is this?'  => 'Was ist dieser Artikel?',
1766 1735
  'What\'s the <b>term</b> you\'re looking for?' => 'Nach welchem <b>Begriff</b> wollen Sie suchen?',
1767
  'Wiedervorlage'               => '',
1768
  'Wissens-DB'                  => '',
1769 1736
  'With Extension Of Time'      => 'mit Dauerfristverl?ngerung',
1770 1737
  'Workflow Delivery Order'     => 'Workflow Lieferschein',
1771 1738
  'Workflow purchase_order'     => 'Workflow Lieferantenauftrag',
......
1857 1824
  'down'                        => 'runter',
1858 1825
  'drucken'                     => 'drucken',
1859 1826
  'dunning_list'                => 'mahnungsliste',
1860
  'eMail'                       => '',
1861 1827
  'eMail Send?'                 => 'eMail-Versand?',
1862 1828
  'eMail?'                      => 'eMail?',
1863 1829
  'ea'                          => 'St.',
1864 1830
  'emailed to'                  => 'gemailt an',
1865
  'erfassen'                    => '',
1866 1831
  'female'                      => 'weiblich',
1867 1832
  'follow_up_list'              => 'wiedervorlageliste',
1868 1833
  'for'                         => 'f&uuml;r',
locale/de/menu
117 117
  'Languages'                   => 'Sprachen',
118 118
  'Lead'                        => 'Kundenquelle',
119 119
  'Licenses'                    => 'Lizenzen',
120
  'List'                        => 'Anzeigen',
120
  'List'                        => 'List',
121 121
  'List Accounting Groups'      => 'Buchungsgruppen anzeigen',
122 122
  'List Accounts'               => 'Konten anzeigen',
123 123
  'List Businesses'             => 'Kunden-/Lieferantentypen anzeigen',
locale/de/menunew
116 116
  'Languages'                   => 'Sprachen',
117 117
  'Lead'                        => 'Kundenquelle',
118 118
  'Licenses'                    => 'Lizenzen',
119
  'List'                        => 'Anzeigen',
119
  'List'                        => 'List',
120 120
  'List Accounting Groups'      => 'Buchungsgruppen anzeigen',
121 121
  'List Accounts'               => 'Konten anzeigen',
122 122
  'List Businesses'             => 'Kunden-/Lieferantentypen anzeigen',
sql/Pg-upgrade2/custom_variables_valid.sql
1
-- @tag: custom_variables_valid
2
-- @description: Benutzerdefinierte Variablen als ung?ltig markieren.
3
-- @depends: release_2_6_0 custom_variables
4
CREATE TABLE custom_variables_validity (
5
       id        integer NOT NULL DEFAULT nextval('id'::text),
6
       config_id integer NOT NULL,
7
       trans_id  integer NOT NULL,
8

  
9
       itime timestamp DEFAULT now(),
10

  
11
       PRIMARY KEY (id),
12
       FOREIGN KEY (config_id) REFERENCES custom_variable_configs (id)
13
);
templates/webpages/ic/form_footer_de.html
30 30
[%- IF CUSTOM_VARIABLES.size %]
31 31
<div id="custom_variables" class="tabcontent">
32 32

  
33
 <p>Unmarkierte Variablen werden f?r diesen Artikel nicht in Auftr?gen und Rechnungen angezeigt.</p>
34

  
33 35
 <p>
34 36
  <table>
35 37
   [%- FOREACH var = CUSTOM_VARIABLES %]
36 38
   <tr>
39
    <td align="right" valign="top">[% var.VALID_BOX %]</td>
37 40
    <td align="right" valign="top">[% HTML.escape(var.description) %]</td>
38 41
    <td valign="top">[% var.HTML_CODE %]</td>
39 42
   </tr>
templates/webpages/ic/form_footer_master.html
30 30
[%- IF CUSTOM_VARIABLES.size %]
31 31
<div id="custom_variables" class="tabcontent">
32 32

  
33
 <p><translate>Unchecked custom variables will not appear in orders and invoices.</translate></p>
34

  
33 35
 <p>
34 36
  <table>
35 37
   [%- FOREACH var = CUSTOM_VARIABLES %]
36 38
   <tr>
39
    <td align="right" valign="top">[% var.VALID_BOX %]</td>
37 40
    <td align="right" valign="top">[% HTML.escape(var.description) %]</td>
38 41
    <td valign="top">[% var.HTML_CODE %]</td>
39 42
   </tr>
templates/webpages/ic/form_header_de.html
253 253
          </tr>
254 254
        [%- END %]
255 255
          <tr>
256
           <th align="right" nowrap><label for="shop">Hat eine Seriennummer</label></th>
256
           <th align="right" nowrap><label for="shop">Hat eine Serienummer</label></th>
257 257
           <td><input class="checkbox" type="checkbox" name="has_sernumber" id="has_sernumber" value="1" [% IF has_sernumber %]checked[% END %]></td>
258 258
          </tr>
259 259
          <tr>

Auch abrufbar als: Unified diff