Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 3d6e7124

Von Moritz Bunkus vor etwa 18 Jahren hinzugefügt

  • ID 3d6e7124dcbe401fe578d777f952f74055a68fd4
  • Vorgänger 0705d46e
  • Nachfolger 1a1b1a0a

Interaktives Datenbankupgrade zur Einfuehrung von Mass- und Dienstleistungseinheiten.

Unterschiede anzeigen:

SL/User.pm
114 114
  if ($self->{login}) {
115 115

  
116 116
    if ($self->{password}) {
117
      $form->{password} = crypt $form->{password},
118
        substr($self->{login}, 0, 2);
117
      if ($form->{hashed_password}) {
118
        $form->{password} = $form->{hashed_password};
119
      } else {
120
        $form->{password} = crypt($form->{password},
121
                                  substr($self->{login}, 0, 2));
122
      }
119 123
      if ($self->{password} ne $form->{password}) {
120 124
        $main::lxdebug->leave_sub();
121 125
        return -1;
......
169 173
$!";
170 174

  
171 175
      map { $form->{$_} = $myconfig{$_} }
172
        qw(dbname dbhost dbport dbdriver dbuser dbpasswd);
176
        qw(dbname dbhost dbport dbdriver dbuser dbpasswd dbconnect);
173 177

  
174 178
      $form->{dbupdate} = "db$myconfig{dbname}";
175 179
      $form->{ $form->{dbupdate} } = 1;
css/lx-office-erp.css
151 151
}
152 152
	
153 153
	
154
.subsubheading {
155
  color: black;
156
  font-weight: bolder;
157
  text-decoration: underline;
158
}
159

  
154 160
.optionen {
155 161
	border:dashed;
156 162
/*	padding-top:10px;
locale/de/all
110 110
  'Assemblies restocked!'       => 'Erzeugnisse sind im Lager!',
111 111
  'Assembly Number missing!'    => 'Erzeugnisnummer fehlt!',
112 112
  'Asset'                       => 'Aktiva/Mittelverwendung',
113
  'Assign new units'            => 'Neue Einheiten zuweisen',
114
  'Assign units'                => 'Einheiten zuweisen',
113 115
  'Attach PDF:'                 => 'PDF anh?ngen',
114 116
  'Attachment'                  => 'als Anhang',
115 117
  'Audit Control'               => 'B?cherkontrolle',
......
128 130
  'BLZ: '                       => 'BLZ: ',
129 131
  'BOM'                         => 'St?ckliste',
130 132
  'BWA'                         => 'BWA',
133
  'Back'                        => 'Zurück',
131 134
  'Back to user config...'      => 'Benutzereinstellungen',
132 135
  'Backup sent to'              => 'Eine Sicherungskopie wurde gesandt an',
133 136
  'Balance'                     => 'Bilanz',
......
259 262
  'Current'                     => 'Betrag',
260 263
  'Current / Next Level'        => 'Aktuelles / N?chstes Mahnlevel',
261 264
  'Current Earnings'            => 'Gewinn',
265
  'Current unit'                => 'Aktuelle Einheit',
262 266
  'Customer'                    => 'Kunde',
263 267
  'Customer Number'             => 'Kundennummer',
264 268
  'Customer Order Number'       => 'Bestellnummer des Kunden',
......
281 285
  'Database Driver not checked!' => 'Kein Datenbanktreiber ausgew?hlt!',
282 286
  'Database Host'               => 'Datenbankcomputer',
283 287
  'Database User missing!'      => 'Datenbankbenutzer fehlt!',
288
  'Database update error:'      => '',
284 289
  'Datapreis'                   => '',
285 290
  'Dataset'                     => 'Datenbank',
286 291
  'Dataset missing!'            => 'Datenbank fehlt!',
......
317 322
  'Description missing!'        => 'Beschreibung fehlt.',
318 323
  'Description must not be empty!' => 'Beschreibung darf nicht leer sein',
319 324
  'Difference'                  => 'Differenz',
325
  'Dimension unit'              => 'Maßeinheit',
320 326
  'Dimension units'             => 'Maßeinheiten',
321 327
  'Directory'                   => 'Verzeichnis',
322 328
  'Discount'                    => 'Rabatt',
......
402 408
  'Erl?se EU m. UStId'          => 'Erlöse EU m. UStId',
403 409
  'Erl?se EU o. UStId'          => 'Erlöse EU o. UStId',
404 410
  'Erl?se Inland'               => 'Erlöse Inland',
411
  'Error'                       => 'Fehler',
405 412
  'Error!'                      => 'Fehler!',
406 413
  'Exch'                        => 'Wechselkurs.',
407 414
  'Exchangerate'                => 'Wechselkurs',
......
429 436
  'Finanzamt - Einstellungen'   => 'Finanzamt - Einstellungen',
430 437
  'Firma'                       => 'Firma',
431 438
  'Folgekonto'                  => 'Folgekonto',
439
  'For each unit there\'s either no or exactly one base unit. If you chose a base unit then you also have to chose a factor. That way the new unit will be defined as a multiple of the base unit. The base unit must be the "smaller" one. A factor may not be less than 1. Therefore you may define "kg" with the base unit "g" and a factor of "1", but not the other way round.' => 'Einheiten haben entweder keine oder genau eine Basiseinheit, von der sie ein Vielfaches sind. Wenn Sie eine Basiseinheit auswählen, dann müssen Sie auch einen Faktor eingeben. Sie müssen Einheiten als ein Vielfaches einer kleineren Einheit eingeben. So ist die Definition von "kg" mit der Basiseinheit "g" und dem Faktor 1000 zulässig, die Definition von "g" mit der Basiseinheit "kg" und dem Faktor "0,001" hingegen nicht.',
432 440
  'Foreign Exchange Gain'       => 'Wechselkursertr?ge',
433 441
  'Foreign Exchange Loss'       => 'Wechselkursaufwendungen',
434 442
  'Formula'                     => '',
......
473 481
  'Import Datanorm'             => '',
474 482
  'Impossible to create yearly Tax Report as PDF or PS.<br \> Not yet implemented!' => 'Umsatzsteuer Jahreserkl?rung als PDF wird noch nicht unterst?tzt.<br \> Bitte benutzen Sie das Ausgabeformat Vorschau.',
475 483
  'Impossible to create yearly Tax Report via Winston.<br \> Not yet implemented!' => 'Umsatzsteuer Jahreserkl?rung via Winston wird noch nicht unterst?tzt.<br \> Bitte benutzen Sie das Ausgabeformat Vorschau.',
484
  'In Lx-Office 2.4.0 the administrator has to enter a list of units in the administrative section.' => 'In Lx-Office 2.4.0 muss der Administrator in den Systemeinstellungen eine Liste von verwendbaren Einheiten angeben.',
476 485
  'In-line'                     => 'im Text',
477 486
  'Include Exchangerate Difference' => 'Wechselkursunterschied einbeziehen',
478 487
  'Include in Report'           => 'In Bericht aufnehmen',
......
489 498
  'Interest Rate'               => 'Zinssatz',
490 499
  'Internal Notes'              => 'interne Bemerkungen',
491 500
  'Internet'                    => 'Internet',
501
  'Introduction of units'       => 'Einf&uuml;hrung von Einheiten',
492 502
  'Inv. Duedate'                => '',
493 503
  'Invdate'                     => 'Rechnungsdatum',
494 504
  'Invdate from'                => 'Rechnungen von',
......
510 520
  'Invoices'                    => 'Rechnungen',
511 521
  'Is this a summary account to record' => 'Buchungskonto in',
512 522
  'Ist dies eine berichtigte Anmeldung? (Nr. 10/Zeile 15 Steuererkl?rung)' => 'Ist dies eine berichtigte Anmeldung? (Nr. 10/Zeile 15 Steuererkl?rung)',
523
  'It is possible to do this automatically for some units, but for others the user has to chose the new unit.' => 'Das ist f&uuml;r einige Einheiten automatisch m&ouml;glich, aber bei anderen muss der Benutzer die neue Einheit ausw&auml;hlen.',
513 524
  'Item deleted!'               => 'Artikel gel?scht!',
514 525
  'Item not on file!'           => 'Dieser Artikel ist nicht in der Datenbank!',
515 526
  'Jan'                         => 'Jan',
......
611 622
  'Name missing!'               => 'Name fehlt!',
612 623
  'Netto Terms'                 => 'Zahlungsziel netto',
613 624
  'New Templates'               => 'neue Vorlagen',
625
  'New unit'                    => 'Neue Einheit',
614 626
  'Next Dunning Level'          => 'N?chste Mahnstufe',
615 627
  'No'                          => 'Nein',
616 628
  'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
......
619 631
  'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein H?ndler gefunden',
620 632
  'No email address for'        => 'Keine eMailaddresse f?r',
621 633
  'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
634
  'No entries were found which had no unit assigned to them.' => 'Es wurden keine Eintr&auml;ge gefunden, denen keine Einheit zugeordnet war.',
622 635
  'No licenses were found that match the search criteria.' => 'Es wurden keine Lizenzen gefunden, auf die die Suchkriterien zutreffen.',
623 636
  'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
624 637
  'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
638
  'No unknown units where found.' => 'Es wurden keine unbekannten Einheiten gefunden.',
625 639
  'No.'                         => 'Position',
626 640
  'Non-taxable Purchases'       => 'Nicht zu versteuernde Eink?ufe',
627 641
  'Non-taxable Sales'           => 'Nicht zu versteuernde Verk?ufe',
......
734 748
  'Printer deleted!'            => 'Drucker gel?scht!',
735 749
  'Printer saved!'              => 'Drucker gespeichert!',
736 750
  'Printing ... '               => 'Es wird gedruckt.',
751
  'Prior to Lx-Office v2.4.0 the user could enter arbitrary strings as units for parts, services and in invoices, sales quotations etc.' => 'Vor Lx-Office 2.4.0 konnte der Benutzer bei Artikeln, Dienstleistungen und Rechnungen, Angeboten etc beliebige Einheiten angeben.',
737 752
  'Private E-mail'              => 'Private eMail',
738 753
  'Private Phone'               => 'Privates Tel.',
739 754
  'Profit Center'               => 'Erfolgsbereich',
......
839 854
  'Service'                     => 'Dienstleistung',
840 855
  'Service Items'               => 'Dienstleistungen',
841 856
  'Service Number missing!'     => 'Dienstleistungsnummer fehlt!',
857
  'Service unit'                => 'Dienstleistungseinheit',
842 858
  'Service units'               => 'Dienstleistungseinheiten',
843 859
  'Services'                    => 'Dienstleistungen',
844 860
  'Set Language Values'         => 'Spracheinstellungen',
......
870 886
  'Statement Balance'           => 'Sammelrechnungsbilanz',
871 887
  'Statement sent to'           => 'Sammelrechnung verschickt an',
872 888
  'Statements sent to printer!' => 'Sammelrechnungen an Drucker geschickt!',
889
  'Step 1 of 3: Parts'          => 'Schritt 1 von 3: Waren',
890
  'Step 2 of 3: Services'       => 'Schritt 2 von 3: Dienstleistungen',
891
  'Step 3 of 3: Default units'  => 'Schritt 3 von 3: Standardeinheiten',
873 892
  'Steuerberater/-in'           => 'Steuerberater/-in',
874 893
  'Steuernummer'                => 'Steuernummer',
875 894
  'Steuernummer: '              => 'Steuernummer: ',
......
911 930
  'The base unit does not exist.' => 'Die Basiseinheit existiert nicht.',
912 931
  'The base unit relations must not contain loops (e.g. by saying that unit A\'s base unit is B, B\'s base unit is C and C\'s base unit is A) in row %d.' => 'Die Beziehungen der Einheiten d&uuml;rfen keine Schleifen beinhalten (z.B. wenn gesagt wird, dass Einheit As Basiseinheit B, Bs Basiseinheit C und Cs Basiseinheit A ist) in Zeile %d.',
913 932
  'The database update/creation did not succeed. The file <TMPL_VAR file ESCAPE=HTML> contained the following error:' => 'Die Datenbankaktualisierung/erstellung schlug fehl. Die Datei <TMPL_VAR file ESCAPE=HTML> enthielt den folgenden Fehler:',
933
  'The database upgrade for the introduction of units is now complete.' => 'Das Datenbankupgrade zwecks Einf&uuml;hrung von Einheiten ist nun beendet.',
914 934
  'The factor is missing in row %d.' => 'Der Faktor fehlt in Zeile %d.',
915 935
  'The factor is missing.'      => 'Der Faktor fehlt.',
916 936
  'The following Datasets are not in use and can be deleted' => 'Die folgenden Datenbanken sind nicht in Verwendung und k?nnen gel?scht werden',
917 937
  'The following Datasets need to be updated' => 'Folgende Datenbanken m?ssen aktualisiert werden',
938
  'The following units are unknown.' => 'Die folgenden Einheiten sind unbekannt.',
939
  'The following units exist already:' => 'Die folgenden Einheiten existieren bereits:',
918 940
  'The formula needs the following syntax:<br>For regular article:<br>Variablename= Variable Unit;<br>Variablename2= Variable2 Unit2;<br>...<br>###<br>Variable + ( Variable2 / Variable )<br><b>Please be beware of the spaces in the formula</b><br><br>For alu article:<br>Length:<br>Weight/m:<br>Length ist total length of article and weight/m ist the weight pro meter' => 'Die Formeln m&uuml;ssen in der folgenden Syntax eingegeben werden:<br>Bei normalen Artikeln:<br>Variablenname= Variable Einheit;<br>Variablenname2= Variable2 Einheit2;<br>...<br>###<br>Variable + Variable2 * ( Variable - Variable2 )<br>Bitte achten Sie auf die Leerzeichen in der Formel<br><br>Bei Aluminiumartikeln:<br>L&auml;nge: x<br>Gewicht/m: y<br>x ist die Gesamtl&auml;nge des Artikels in Meter und y das Gewicht pro Meter. Es muss jeweils die Gesamtezeile eingegeben werden',
919 941
  'The licensing module has been deactivated in lx-erp.conf.' => 'Das Lizenzverwaltungsmodul wurde in lx-erp.conf deaktiviert.',
920 942
  'The name in row %d has already been used before.' => 'Der Name in Zeile %d wurde vorher bereits benutzt.',
......
924 946
  'The unit in row %d has been deleted in the meantime.' => 'Die Einheit in Zeile %d ist in der Zwischentzeit gel&ouml;scht worden.',
925 947
  'The unit in row %d has been used in the meantime and cannot be changed anymore.' => 'Die Einheit in Zeile %d wurde in der Zwischenzeit benutzt und kann nicht mehr ge&auml;ndert werden.',
926 948
  'The units have been saved.'  => 'Die Einheiten wurden gespeichert.',
949
  'There are still entries in the database for which no unit has been assigned.' => 'Es gibt noch Eintr&auml;ge in der Datenbank, f&uuml;r die keine Einheit zugeordnet ist.',
950
  'These units can be based on other units so that Lx-Office can convert prices when the user switches from one unit to another.' => 'Diese Einheiten k&ouml;nnen auf anderen Einheiten basieren, sodass Lx-Office Preise umrechnen kann, wenn der Benutzer von einer Einheit zu einer anderen Wechselt.',
927 951
  'This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!' => 'In diesem Schritt werden bestehende Datenbanken gesucht. Es werden noch keine ?nderungen vorgenommen!',
952
  'This upgrade script tries to map all existing units in the database to the newly created units.' => 'Dieses Update-Script versucht, alle bestehenden Einheiten automatisch in die neuen Einheiten umzuwandeln.',
928 953
  'Title'                       => 'Titel',
929 954
  'To'                          => 'An',
930 955
  'To add a user to a group edit a name, change the login name and save.  A new user with the same variables will then be saved under the new login name.' => 'Um einer Gruppe einen neuen Benutzer hinzuzuf?gen, ?ndern und speichern Sie am einfachsten einen bestehen den Zugriffsnamen. Unter dem neuen Namen wird dann ein Benutzer mit denselben Einstellungen angelegt.',
......
1059 1084
  'Yearly'                      => 'j?hrlich',
1060 1085
  'Yes'                         => 'Ja',
1061 1086
  'You are logged out!'         => 'Auf Wiedersehen!',
1087
  'You can also create new units now.' => 'Sie k&ouml;nnen jetzt auch neue Einheiten anlegen.',
1088
  'You cannot continue until all unknown units have been mapped to known ones.' => 'Sie k&ouml;nnen nicht fortfahren, bis alle unbekannten Einheiten in neue Einheiten umgewandelt wurden.',
1062 1089
  'You did not enter a name!'   => 'Sie haben keinen Namen eingegeben!',
1090
  'You have to chose a dimension unit and a service unit which will then be assigned to those entries.' => 'Sie m&uuml;ssen eine Ma&szlig;- und eine Dienstleistungseinheit ausw&auml;hlen, die diesen Waren und Dienstleistungen, denen noch keine Einheit zugeordnet ist, zugeordnet wird.',
1091
  'You have to chose which unit to save for each of them.' => 'Sie m&uuml;ssen f&uuml;r jeden Artikel die neue Einheit ausw&auml;hlen.',
1063 1092
  'You must enter a host and port for local and remote connections!' => '"Rechner" und "Port" m?ssen f?r lokale und externe Verbindungen eingetragen werden!',
1064 1093
  'Zeitraum'                    => 'Zeitraum',
1065 1094
  'Zipcode'                     => 'PLZ',
locale/de/dbupgrade
1
$self{texts} = {
2
  'A unit with this name does already exist.' => 'Eine Einheit mit diesem Namen existiert bereits.',
3
  'Database update error:'      => 'Database update error:',
4
  'The base unit does not exist.' => 'Die Basiseinheit existiert nicht.',
5
  'The factor is missing.'      => 'Der Faktor fehlt.',
6
  'The name is missing.'        => 'Der Name fehlt.',
7
  'The unit has been saved.'    => 'Die Einheit wurde gespeichert.',
8
};
9

  
10
$self{subs} = {
11
  'mydberror'                   => 'mydberror',
12
  'myshowerror'                 => 'myshowerror',
13
  'update_units'                => 'update_units',
14
  'update_units_add_unit'       => 'update_units_add_unit',
15
  'update_units_assign_known'   => 'update_units_assign_known',
16
  'update_units_assign_units'   => 'update_units_assign_units',
17
  'update_units_set_default'    => 'update_units_set_default',
18
  'update_units_step_3'         => 'update_units_step_3',
19
  'update_units_steps_1_2'      => 'update_units_steps_1_2',
20
  'einheit_hinzuf&uuml;gen'     => 'add_unit',
21
  'einheiten_zuweisen'          => 'assign_units',
22
};
23

  
24
1;
sql/Pg-upgrade/Pg-upgrade-2.2.0.25-2.2.0.26.pl
1
#!/usr/bin/perl
2

  
3
die("This script cannot be run from the command line.") unless ($main::form);
4

  
5
use SL::AM;
6

  
7
%dbup_myconfig = ();
8
map({ $dbup_myconfig{$_} = $main::form->{$_}; }
9
    qw(dbname dbuser dbpasswd dbhost dbport dbconnect));
10

  
11
sub mydberror {
12
  my ($dbup_locale, $msg) = @_;
13
  die($dbup_locale->text("Database update error:") .
14
      "<br>$msg<br>" . $DBI::errstr);
15
}
16

  
17
sub myshowerror {
18
  my ($msg) = @_;
19

  
20
  print($main::form->parse_html_template("dbupgrade/units_error",
21
                                         { "message" => $msg }));
22
  return 2;
23
}
24

  
25
sub update_units_add_unit {
26
  my ($dbup_locale, $dbh) = @_;
27

  
28
  my $form = $main::form;
29

  
30
  return 0 unless ($form->{"new_name"});
31

  
32
  return myshowerror($dbup_locale->text("The name is missing."))
33
    if ($form->{"new_name"} eq "");
34
  my $units = AM->retrieve_units(\%dbup_myconfig, $form);
35
  return myshowerror($dbup_locale->text("A unit with this name does already exist."))
36
    if ($units->{$form->{"new_name"}});
37
  $units = AM->retrieve_units(\%dbup_myconfig, $form, $form->{"unit_type"});
38

  
39
  my ($base_unit, $factor);
40
  if ($form->{"new_base_unit"}) {
41
    return myshowerror($dbup_locale->text("The base unit does not exist."))
42
      unless (defined($units->{$form->{"new_base_unit"}}));
43

  
44
    return myshowerror($dbup_locale->text("The factor is missing."))
45
      if ($form->{"new_factor"} eq "");
46
    $factor = $form->parse_amount(\%dbup_myconfig, $form->{"new_factor"});
47
    return myshowerror($dbup_locale->text("The factor is missing."))
48
      unless ($factor);
49
    $base_unit = $form->{"new_base_unit"};
50
  }
51

  
52
  my $query = "INSERT INTO units " .
53
    "(name, base_unit, factor, type) " .
54
    "VALUES (?, ?, ?, ?)";
55
  $dbh->do($query, undef, $form->{"new_name"}, $base_unit, $factor,
56
           $form->{"unit_type"}) ||
57
    mydberror($dbup_locale, $query .
58
              " ($form->{new_name}, $base_unit, $factor, $form->{unit_type})");
59
  $dbh->commit();
60
  $dbh->begin_work();
61

  
62
  $form->{"saved_message"} = $dbup_locale->text("The unit has been saved.");
63

  
64
  return 0;
65
}
66

  
67
sub update_units_assign_units {
68
  my ($dbup_locale, $dbh) = @_;
69

  
70
  my ($query, $sth, @values);
71

  
72
  my $form = $main::form;
73

  
74
  foreach my $table (qw(parts invoice orderitems rmaitems)) {
75
    $query = "UPDATE $table SET unit = ? WHERE lower(unit) = ?";
76
    $sth = $dbh->prepare($query);
77

  
78
    for (my $i = 1; $i <= $form->{"rowcount"}; $i++) {
79
      next unless ($form->{"new_unit_$i"} && $form->{"old_unit_$i"});
80
      @values = ($form->{"new_unit_$i"}, lc($form->{"old_unit_$i"}));
81
      $sth->execute(@values) ||
82
        mydberror($dbup_locale, $query . " (" . join(", ", @values) . ")");
83
    }
84
  }
85

  
86
  $sth->finish();
87
  $dbh->commit();
88
  $dbh->begin_work();
89
}
90

  
91
sub update_units_assign_known {
92
  my ($dbup_locale, $dbh) = @_;
93

  
94
  my $form = $main::form;
95

  
96
  my %unit_name_mapping = (
97
    "st" => "Stck",
98
    "st." => "Stck",
99
    "pc" => "Stck",
100
    "pcs" => "Stck",
101
    "ea" => "Stck",
102
    );
103

  
104
  my $i = 1;
105
  foreach my $k (keys(%unit_name_mapping)) {
106
    $form->{"old_unit_$i"} = $k;
107
    $form->{"new_unit_$i"} = $unit_name_mapping{$k};
108
    $i++;
109
  }
110
  $form->{"rowcount"} = scalar(keys(%unit_name_mapping));
111

  
112
  update_units_assign_units($dbup_locale, $dbh);
113
}
114

  
115
sub update_units_steps_1_2 {
116
  my ($dbup_locale, $dbh) = @_;
117

  
118
  my (%unknown_dimension_units, %unknown_service_units);
119

  
120
  my $form = $main::form;
121

  
122
  foreach my $table (qw(parts invoice orderitems rmaitems)) {
123
    my ($query, $sth, $ref);
124

  
125
    if ($table eq "parts") {
126
      $query = "SELECT unit, inventory_accno_id FROM parts " .
127
        "WHERE NOT ((unit = '') OR unit ISNULL OR " .
128
        "           unit IN (SELECT name FROM units))";
129

  
130
    } else {
131
      $query = "SELECT t.unit, p.inventory_accno_id " .
132
        "FROM $table t " .
133
        "LEFT JOIN parts p ON p.id = t.parts_id " .
134
        "WHERE NOT ((t.unit = '') OR t.unit ISNULL OR " .
135
        "           t.unit IN (SELECT name FROM units))";
136
    }
137
    $sth = $dbh->prepare($query);
138
    $sth->execute() || mydberror($dbup_locale, $query);
139

  
140
    while ($ref = $sth->fetchrow_hashref()) {
141
      if ($ref->{"inventory_accno_id"}) {
142
        $unknown_dimension_units{$ref->{"unit"}} = 1;
143

  
144
      } else {
145
        $unknown_service_units{$ref->{"unit"}} = 1;
146
      }
147
    }
148

  
149
    $sth->finish();
150
  }
151

  
152
  if (scalar(keys(%unknown_dimension_units)) != 0) {
153
    my $units = AM->retrieve_units(\%dbup_myconfig, $form, "dimension");
154
    my $ddbox = AM->unit_select_data($units, undef, 1);
155

  
156
    my @unknown_parts;
157
    map({ push(@unknown_parts, { "name" => $_, "NEW_UNITS" => $ddbox }); }
158
        sort({ lc($a) cmp lc($b) } keys(%unknown_dimension_units)));
159

  
160
    print($form->parse_html_template("dbupgrade/units_parts",
161
                                     { "NEW_BASE_UNIT_DDBOX" => $ddbox,
162
                                       "UNKNOWN_PART_UNITS" => \@unknown_parts,
163
                                     }));
164

  
165
    return 2;
166

  
167
  } else {
168
    print($form->parse_html_template("dbupgrade/units_parts_done"));
169
  }
170

  
171
  if (scalar(keys(%unknown_service_units)) != 0) {
172
    my $units = AM->retrieve_units(\%dbup_myconfig, $form, "service");
173
    my $ddbox = AM->unit_select_data($units, undef, 1);
174

  
175
    my @unknown_services;
176
    map({ push(@unknown_services, { "name" => $_, "NEW_UNITS" => $ddbox }); }
177
        sort({ lc($a) cmp lc($b) } keys(%unknown_service_units)));
178

  
179
    print($form->parse_html_template("dbupgrade/units_services",
180
                                     { "NEW_BASE_UNIT_DDBOX" => $ddbox,
181
                                       "UNKNOWN_PART_UNITS" => \@unknown_services,
182
                                     }));
183

  
184
    return 2;
185

  
186
  } else {
187
    print($form->parse_html_template("dbupgrade/units_services_done"));
188
  }
189

  
190
  return 0;
191
}
192

  
193
sub update_units_step_3 {
194
  my ($dbup_locale, $dbh) = @_;
195

  
196
  my $form = $main::form;
197

  
198
  my $query = "SELECT ";
199
  foreach my $table (qw(parts invoice orderitems rmaitems)) {
200
    $query .= "(SELECT COUNT(*) FROM $table " .
201
      "WHERE (unit ISNULL) OR (unit = '')) +";
202
  }
203
  substr($query, -1, 1) = "AS has_unassigned";
204
  my ($has_unassigned) = $dbh->selectrow_array($query);
205

  
206
  if ($has_unassigned) {
207
    my $dimension_units = AM->retrieve_units(\%dbup_myconfig, $form,
208
                                             "dimension");
209
    my $dimension_ddbox = AM->unit_select_data($dimension_units);
210

  
211
    my $service_units = AM->retrieve_units(\%dbup_myconfig, $form, "service");
212
    my $service_ddbox = AM->unit_select_data($service_units);
213

  
214
    print($form->parse_html_template("dbupgrade/units_set_default",
215
                                     { "DIMENSION_DDBOX" => $dimension_ddbox,
216
                                       "SERVICE_DDBOX" => $service_ddbox }));
217
    return 2;
218

  
219
  } else {
220
    print($form->parse_html_template("dbupgrade/units_set_default_done"));
221
    return 1;
222
  }
223
}
224

  
225
sub update_units_set_default {
226
  my ($dbup_locale, $dbh) = @_;
227

  
228
  my $form = $main::form;
229

  
230
  foreach my $table (qw(parts invoice orderitems rmaitems)) {
231
    my $base_query = "UPDATE $table SET unit = " .
232
      $dbh->quote($form->{"default_service_unit"}) . " " .
233
      "WHERE ((unit ISNULL) OR (unit = '')) AND ";
234
    my $query;
235

  
236
    if ($table eq "parts") {
237
      $query = "UPDATE $table SET unit = " .
238
        $dbh->quote($form->{"default_dimension_unit"}) . " " .
239
        "WHERE ((unit ISNULL) OR (unit = '')) AND (inventory_accno_id > 0)";
240
    } else {
241
      $query = "UPDATE $table SET unit = " .
242
        $dbh->quote($form->{"default_dimension_unit"}) . " " .
243
        "WHERE ((unit ISNULL) OR (unit = '')) AND " .
244
        "parts_id IN (SELECT id FROM parts WHERE (inventory_accno_id > 0))";
245
    }
246

  
247
    $dbh->do($query) || mydberror($dbup_locale, $query);
248

  
249
    if ($table eq "parts") {
250
      $query = "UPDATE $table SET unit = " .
251
        $dbh->quote($form->{"default_service_unit"}) . " " .
252
        "WHERE ((unit ISNULL) OR (unit = '')) AND " .
253
        "(inventory_accno_id ISNULL) OR (inventory_accno_id = 0)";
254
    } else {
255
      $query = "UPDATE $table SET unit = " .
256
        $dbh->quote($form->{"default_service_unit"}) . " " .
257
        "WHERE ((unit ISNULL) OR (unit = '')) AND " .
258
        "parts_id IN (SELECT id FROM parts " .
259
        "WHERE (inventory_accno_id ISNULL) OR (inventory_accno_id = 0))";
260
    }
261

  
262
    $dbh->do($query) || mydberror($dbup_locale, $query);
263
  }
264
}
265

  
266
sub update_units {
267
  my (@dbh) = @_;
268

  
269
  my $form = $main::form;
270

  
271
  my $res;
272

  
273
  my $dbup_locale = Locale->new($main::language, "dbupgrade");
274

  
275
  print($form->parse_html_template("dbupgrade/units_header"));
276

  
277
  if ($form->{"action2"} eq "add_unit") {
278
    $res = update_units_add_unit($dbup_locale, $dbh);
279
    return $res if ($res);
280

  
281
  } elsif ($form->{"action2"} eq "assign_units") {
282
    update_units_assign_units($dbup_locale, $dbh);
283

  
284
  } elsif ($form->{"action2"} eq "set_default") {
285
    update_units_set_default($dbup_locale, $dbh);
286

  
287
  }
288

  
289
  update_units_assign_known($dbup_locale, $dbh);
290

  
291
  $res = update_units_steps_1_2($dbup_locale, $dbh);
292
  return $res if ($res);
293

  
294
  return update_units_step_3($dbup_locale, $dbh);
295
}
296

  
297
update_units($dbh);
templates/webpages/dbupgrade/units_error_de.html
1
<p><b>Fehler:</b> <TMPL_VAR message></p>
2

  
3
<form>
4
<input type="button" onclick="history.back()" value="Zur&uuml;ck">
5
</form>
templates/webpages/dbupgrade/units_error_master.html
1
<p><b><translate>Error</translate>:</b> <TMPL_VAR message></p>
2

  
3
<form>
4
<input type="button" onclick="history.back()" value="<translate>Back</translate>">
5
</form>
templates/webpages/dbupgrade/units_header_de.html
1
<div class="listtop">Einf&uuml;hrung von Einheiten</div>
2

  
3
<p>
4
 Vor Lx-Office 2.4.0 konnte der Benutzer bei Artikeln, Dienstleistungen und Rechnungen, Angeboten etc beliebige Einheiten angeben.
5
 In Lx-Office 2.4.0 muss der Administrator in den Systemeinstellungen eine Liste von verwendbaren Einheiten angeben.
6
 Diese Einheiten k&ouml;nnen auf anderen Einheiten basieren, sodass Lx-Office Preise umrechnen kann, wenn der Benutzer von einer Einheit zu einer anderen Wechselt.
7
</p>
8

  
9
<p>
10
 Dieses Update-Script versucht, alle bestehenden Einheiten automatisch in die neuen Einheiten umzuwandeln.
11
 Das ist f&uuml;r einige Einheiten automatisch m&ouml;glich, aber bei anderen muss der Benutzer die neue Einheit ausw&auml;hlen.
12
 Sie k&ouml;nnen nicht fortfahren, bis alle unbekannten Einheiten in neue Einheiten umgewandelt wurden.
13
 Sie k&ouml;nnen jetzt auch neue Einheiten anlegen.
14
</p>
templates/webpages/dbupgrade/units_header_master.html
1
<div class="listtop"><translate>Introduction of units</translate></div>
2

  
3
<p>
4
 <translate>Prior to Lx-Office v2.4.0 the user could enter arbitrary
5
  strings as units for parts, services and in invoices, sales quotations
6
  etc.</translate>
7
 <translate>In Lx-Office 2.4.0 the administrator has to enter a list
8
  of units in the administrative section.</translate>
9
 <translate>These units can be based on other units so that Lx-Office
10
  can convert prices when the user switches from one unit to
11
  another.</translate>
12
</p>
13

  
14
<p>
15
 <translate>This upgrade script tries to map all existing units in the
16
  database to the newly created units.</translate>
17
 <translate>It is possible to do this automatically for some units,
18
  but for others the user has to chose the new unit.</translate>
19
 <translate>You cannot continue until all unknown units have been
20
  mapped to known ones.</translate>
21
 <translate>You can also create new units now.</translate>
22
</p>
templates/webpages/dbupgrade/units_parts_de.html
1
<div class="listtop">Schritt 1 von 3: Waren</div>
2

  
3
<form name="Form" method="post" action="login.pl">
4

  
5
 <input type="hidden" name="path" value="<TMPL_VAR path ESCAPE=HTML>">
6
 <input type="hidden" name="login" value="<TMPL_VAR login ESCAPE=HTML>">
7
 <input type="hidden" name="hashed_password" value="<TMPL_VAR password ESCAPE=HTML>">
8
 <input type="hidden" name="unit_type" value="dimension">
9
 <input type="hidden" name="action" value="login">
10
 <input type="hidden" name="action2" value="">
11

  
12
 <TMPL_IF saved_message>
13
  <p><TMPL_VAR saved_message></p>
14
 </TMPL_IF>
15

  
16
 <div class="subsubheading">Einheit hinzuf&uuml;gen</div>
17

  
18
 <p>
19
  Einheiten haben entweder keine oder genau eine Basiseinheit, von der sie ein Vielfaches sind. Wenn Sie eine Basiseinheit ausw&auml;hlen, dann m&uuml;ssen Sie auch einen Faktor eingeben. Sie m&uuml;ssen Einheiten als ein Vielfaches einer kleineren Einheit eingeben. So ist die Definition von &quot;kg&quot; mit der Basiseinheit &quot;g&quot; und dem Faktor 1000 zul&auml;ssig, die Definition von &quot;g&quot; mit der Basiseinheit &quot;kg&quot; und dem Faktor &quot;0,001&quot; hingegen nicht.
20
 </p>
21

  
22
 <p>
23
  Die folgenden Einheiten existieren bereits:
24
  <TMPL_LOOP NEW_BASE_UNIT_DDBOX><TMPL_IF name><TMPL_VAR name ESCAPE=HTML><TMPL_UNLESS __last__>; </TMPL_UNLESS></TMPL_IF></TMPL_LOOP>
25
 </p>
26

  
27
 <hr>
28

  
29
 <table>
30
  <tr>
31
   <th align="right">Einheit</th>
32
   <td><input name="new_name" size="20" maxlength="20"></td>
33
  </tr>
34
  <tr>
35
   <th align="right">Basiseinheit</th>
36
   <td>
37
    <select name="new_base_unit">
38
     <TMPL_LOOP NEW_BASE_UNIT_DDBOX><option <TMPL_VAR selected>><TMPL_VAR name></option></TMPL_LOOP>
39
    </select>
40
   </td>
41
  </tr>
42
  <tr>
43
   <th align="right">Faktor</th>
44
   <td><input name="new_factor"></td>
45
  </tr>
46
 </table>
47

  
48
 <input type="submit" onclick="document.Form.action2.value = 'add_unit'; document.Form.submit();" name="dummy" value="Einheit hinzuf&uuml;gen">
49

  
50
 <hr>
51

  
52
 <div class="subsubheading">Neue Einheiten zuweisen</div>
53

  
54
 <p>
55
  Die folgenden Einheiten sind unbekannt.
56
  Sie m&uuml;ssen f&uuml;r jeden Artikel die neue Einheit ausw&auml;hlen.
57
 </p>
58

  
59
 <table>
60
  <tr>
61
   <th class="listheading">Aktuelle Einheit</th>
62
   <th class="listheading">Neue Einheit</th>
63
  </tr>
64

  
65
  <TMPL_LOOP UNKNOWN_PART_UNITS>
66
   <tr class="listrow<TMPL_VAR __counter__>">
67
    <td>
68
     <TMPL_VAR name ESCAPE=HTML>
69
     <input type="hidden" name="old_unit_<TMPL_VAR __counter__>" value="<TMPL_VAR name ESCAPE=HTML>">
70
    </td>
71
    <td>
72
     <select name="new_unit_<TMPL_VAR __counter__>">
73
      <TMPL_LOOP NEW_UNITS><option><TMPL_VAR name ESCAPE=HTML></option></TMPL_LOOP>
74
     </select>
75
    </td>
76
    <TMPL_IF __last__><input type="hidden" name="rowcount" value="<TMPL_VAR __counter__>"></TMPL_IF>
77
  </TMPL_LOOP>
78
 </table>
79

  
80
 <input type="submit" onclick="document.Form.action2.value = 'assign_units'; document.Form.submit();" name="dummy" value="Einheiten zuweisen">
81

  
82
</form>
83

  
templates/webpages/dbupgrade/units_parts_done_de.html
1
<div class="listtop">Schritt 1 von 3: Waren</div>
2

  
3
<p>Es wurden keine unbekannten Einheiten gefunden.</p>
templates/webpages/dbupgrade/units_parts_done_master.html
1
<div class="listtop"><translate>Step 1 of 3: Parts</translate></div>
2

  
3
<p><translate>No unknown units where found.</translate></p>
templates/webpages/dbupgrade/units_parts_master.html
1
<div class="listtop"><translate>Step 1 of 3: Parts</translate></div>
2

  
3
<form name="Form" method="post" action="login.pl">
4

  
5
 <input type="hidden" name="path" value="<TMPL_VAR path ESCAPE=HTML>">
6
 <input type="hidden" name="login" value="<TMPL_VAR login ESCAPE=HTML>">
7
 <input type="hidden" name="hashed_password" value="<TMPL_VAR password ESCAPE=HTML>">
8
 <input type="hidden" name="unit_type" value="dimension">
9
 <input type="hidden" name="action" value="login">
10
 <input type="hidden" name="action2" value="">
11

  
12
 <TMPL_IF saved_message>
13
  <p><TMPL_VAR saved_message></p>
14
 </TMPL_IF>
15

  
16
 <div class="subsubheading"><translate>Add unit</translate></div>
17

  
18
 <p>
19
  <translate>For each unit there's either no or exactly one base
20
   unit. If you chose a base unit then you also have to chose a
21
   factor. That way the new unit will be defined as a multiple of the
22
   base unit. The base unit must be the &quot;smaller&quot; one. A
23
   factor may not be less than 1. Therefore you may define
24
   &quot;kg&quot; with the base unit &quot;g&quot; and a factor of
25
   &quot;1&quot;, but not the other way round.</translate>
26
 </p>
27

  
28
 <p>
29
  <translate>The following units exist already:</translate>
30
  <TMPL_LOOP NEW_BASE_UNIT_DDBOX><TMPL_IF name><TMPL_VAR name ESCAPE=HTML><TMPL_UNLESS __last__>; </TMPL_UNLESS></TMPL_IF></TMPL_LOOP>
31
 </p>
32

  
33
 <hr>
34

  
35
 <table>
36
  <tr>
37
   <th align="right"><translate>Unit</translate></th>
38
   <td><input name="new_name" size="20" maxlength="20"></td>
39
  </tr>
40
  <tr>
41
   <th align="right"><translate>Base unit</translate></th>
42
   <td>
43
    <select name="new_base_unit">
44
     <TMPL_LOOP NEW_BASE_UNIT_DDBOX><option <TMPL_VAR selected>><TMPL_VAR name></option></TMPL_LOOP>
45
    </select>
46
   </td>
47
  </tr>
48
  <tr>
49
   <th align="right"><translate>Factor</translate></th>
50
   <td><input name="new_factor"></td>
51
  </tr>
52
 </table>
53

  
54
 <input type="submit" onclick="document.Form.action2.value = 'add_unit'; document.Form.submit();" name="dummy" value="<translate>Add unit</translate>">
55

  
56
 <hr>
57

  
58
 <div class="subsubheading"><translate>Assign new units</translate></div>
59

  
60
 <p>
61
  <translate>The following units are unknown.</translate>
62
  <translate>You have to chose which unit to save for each of them.</translate>
63
 </p>
64

  
65
 <table>
66
  <tr>
67
   <th class="listheading"><translate>Current unit</translate></th>
68
   <th class="listheading"><translate>New unit</translate></th>
69
  </tr>
70

  
71
  <TMPL_LOOP UNKNOWN_PART_UNITS>
72
   <tr class="listrow<TMPL_VAR __counter__>">
73
    <td>
74
     <TMPL_VAR name ESCAPE=HTML>
75
     <input type="hidden" name="old_unit_<TMPL_VAR __counter__>" value="<TMPL_VAR name ESCAPE=HTML>">
76
    </td>
77
    <td>
78
     <select name="new_unit_<TMPL_VAR __counter__>">
79
      <TMPL_LOOP NEW_UNITS><option><TMPL_VAR name ESCAPE=HTML></option></TMPL_LOOP>
80
     </select>
81
    </td>
82
    <TMPL_IF __last__><input type="hidden" name="rowcount" value="<TMPL_VAR __counter__>"></TMPL_IF>
83
  </TMPL_LOOP>
84
 </table>
85

  
86
 <input type="submit" onclick="document.Form.action2.value = 'assign_units'; document.Form.submit();" name="dummy" value="<translate>Assign units</translate>">
87

  
88
</form>
89

  
templates/webpages/dbupgrade/units_services_de.html
1
<div class="listtop">Schritt 2 von 3: Dienstleistungen</div>
2

  
3
<form name="Form" method="post" action="login.pl">
4

  
5
 <input type="hidden" name="path" value="<TMPL_VAR path ESCAPE=HTML>">
6
 <input type="hidden" name="login" value="<TMPL_VAR login ESCAPE=HTML>">
7
 <input type="hidden" name="hashed_password" value="<TMPL_VAR password ESCAPE=HTML>">
8
 <input type="hidden" name="unit_type" value="service">
9
 <input type="hidden" name="action" value="login">
10
 <input type="hidden" name="action2" value="">
11

  
12
 <TMPL_IF saved_message>
13
  <p><TMPL_VAR saved_message></p>
14
 </TMPL_IF>
15

  
16
 <div class="subsubheading">Einheit hinzuf&uuml;gen</div>
17

  
18
 <p>
19
  Einheiten haben entweder keine oder genau eine Basiseinheit, von der sie ein Vielfaches sind. Wenn Sie eine Basiseinheit ausw&auml;hlen, dann m&uuml;ssen Sie auch einen Faktor eingeben. Sie m&uuml;ssen Einheiten als ein Vielfaches einer kleineren Einheit eingeben. So ist die Definition von &quot;kg&quot; mit der Basiseinheit &quot;g&quot; und dem Faktor 1000 zul&auml;ssig, die Definition von &quot;g&quot; mit der Basiseinheit &quot;kg&quot; und dem Faktor &quot;0,001&quot; hingegen nicht.
20
 </p>
21

  
22
 <p>
23
  Die folgenden Einheiten existieren bereits:
24
  <TMPL_LOOP NEW_BASE_UNIT_DDBOX><TMPL_IF name><TMPL_VAR name ESCAPE=HTML><TMPL_UNLESS __last__>; </TMPL_UNLESS></TMPL_IF></TMPL_LOOP>
25
 </p>
26

  
27
 <hr>
28

  
29
 <table>
30
  <tr>
31
   <th align="right">Einheit</th>
32
   <td><input name="new_name" size="20" maxlength="20"></td>
33
  </tr>
34
  <tr>
35
   <th align="right">Basiseinheit</th>
36
   <td>
37
    <select name="new_base_unit">
38
     <TMPL_LOOP NEW_BASE_UNIT_DDBOX><option <TMPL_VAR selected>><TMPL_VAR name></option></TMPL_LOOP>
39
    </select>
40
   </td>
41
  </tr>
42
  <tr>
43
   <th align="right">Faktor</th>
44
   <td><input name="new_factor"></td>
45
  </tr>
46
 </table>
47

  
48
 <input type="submit" onclick="document.Form.action2.value = 'add_unit'; document.Form.submit();" name="dummy" value="Einheit hinzuf&uuml;gen">
49

  
50
 <hr>
51

  
52
 <div class="subsubheading">Neue Einheiten zuweisen</div>
53

  
54
 <p>
55
  Die folgenden Einheiten sind unbekannt.
56
  Sie m&uuml;ssen f&uuml;r jeden Artikel die neue Einheit ausw&auml;hlen.
57
 </p>
58

  
59
 <table>
60
  <tr>
61
   <th class="listheading">Aktuelle Einheit</th>
62
   <th class="listheading">Neue Einheit</th>
63
  </tr>
64

  
65
  <TMPL_LOOP UNKNOWN_PART_UNITS>
66
   <tr class="listrow<TMPL_VAR __counter__>">
67
    <td>
68
     <TMPL_VAR name ESCAPE=HTML>
69
     <input type="hidden" name="old_unit_<TMPL_VAR __counter__>" value="<TMPL_VAR name ESCAPE=HTML>">
70
    </td>
71
    <td>
72
     <select name="new_unit_<TMPL_VAR __counter__>">
73
      <TMPL_LOOP NEW_UNITS><option><TMPL_VAR name ESCAPE=HTML></option></TMPL_LOOP>
74
     </select>
75
    </td>
76
    <TMPL_IF __last__><input type="hidden" name="rowcount" value="<TMPL_VAR __counter__>"></TMPL_IF>
77
  </TMPL_LOOP>
78
 </table>
79

  
80
 <input type="submit" onclick="document.Form.action2.value = 'assign_units'; document.Form.submit();" name="dummy" value="Einheiten zuweisen">
81

  
82
</form>
83

  
templates/webpages/dbupgrade/units_services_done_de.html
1
<div class="listtop">Schritt 2 von 3: Dienstleistungen</div>
2

  
3
<p>Es wurden keine unbekannten Einheiten gefunden.</p>
templates/webpages/dbupgrade/units_services_done_master.html
1
<div class="listtop"><translate>Step 2 of 3: Services</translate></div>
2

  
3
<p><translate>No unknown units where found.</translate></p>
templates/webpages/dbupgrade/units_services_master.html
1
<div class="listtop"><translate>Step 2 of 3: Services</translate></div>
2

  
3
<form name="Form" method="post" action="login.pl">
4

  
5
 <input type="hidden" name="path" value="<TMPL_VAR path ESCAPE=HTML>">
6
 <input type="hidden" name="login" value="<TMPL_VAR login ESCAPE=HTML>">
7
 <input type="hidden" name="hashed_password" value="<TMPL_VAR password ESCAPE=HTML>">
8
 <input type="hidden" name="unit_type" value="service">
9
 <input type="hidden" name="action" value="login">
10
 <input type="hidden" name="action2" value="">
11

  
12
 <TMPL_IF saved_message>
13
  <p><TMPL_VAR saved_message></p>
14
 </TMPL_IF>
15

  
16
 <div class="subsubheading"><translate>Add unit</translate></div>
17

  
18
 <p>
19
  <translate>For each unit there's either no or exactly one base
20
   unit. If you chose a base unit then you also have to chose a
21
   factor. That way the new unit will be defined as a multiple of the
22
   base unit. The base unit must be the &quot;smaller&quot; one. A
23
   factor may not be less than 1. Therefore you may define
24
   &quot;kg&quot; with the base unit &quot;g&quot; and a factor of
25
   &quot;1&quot;, but not the other way round.</translate>
26
 </p>
27

  
28
 <p>
29
  <translate>The following units exist already:</translate>
30
  <TMPL_LOOP NEW_BASE_UNIT_DDBOX><TMPL_IF name><TMPL_VAR name ESCAPE=HTML><TMPL_UNLESS __last__>; </TMPL_UNLESS></TMPL_IF></TMPL_LOOP>
31
 </p>
32

  
33
 <hr>
34

  
35
 <table>
36
  <tr>
37
   <th align="right"><translate>Unit</translate></th>
38
   <td><input name="new_name" size="20" maxlength="20"></td>
39
  </tr>
40
  <tr>
41
   <th align="right"><translate>Base unit</translate></th>
42
   <td>
43
    <select name="new_base_unit">
44
     <TMPL_LOOP NEW_BASE_UNIT_DDBOX><option <TMPL_VAR selected>><TMPL_VAR name></option></TMPL_LOOP>
45
    </select>
46
   </td>
47
  </tr>
48
  <tr>
49
   <th align="right"><translate>Factor</translate></th>
50
   <td><input name="new_factor"></td>
51
  </tr>
52
 </table>
53

  
54
 <input type="submit" onclick="document.Form.action2.value = 'add_unit'; document.Form.submit();" name="dummy" value="<translate>Add unit</translate>">
55

  
56
 <hr>
57

  
58
 <div class="subsubheading"><translate>Assign new units</translate></div>
59

  
60
 <p>
61
  <translate>The following units are unknown.</translate>
62
  <translate>You have to chose which unit to save for each of them.</translate>
63
 </p>
64

  
65
 <table>
66
  <tr>
67
   <th class="listheading"><translate>Current unit</translate></th>
68
   <th class="listheading"><translate>New unit</translate></th>
69
  </tr>
70

  
71
  <TMPL_LOOP UNKNOWN_PART_UNITS>
72
   <tr class="listrow<TMPL_VAR __counter__>">
73
    <td>
74
     <TMPL_VAR name ESCAPE=HTML>
75
     <input type="hidden" name="old_unit_<TMPL_VAR __counter__>" value="<TMPL_VAR name ESCAPE=HTML>">
76
    </td>
77
    <td>
78
     <select name="new_unit_<TMPL_VAR __counter__>">
79
      <TMPL_LOOP NEW_UNITS><option><TMPL_VAR name ESCAPE=HTML></option></TMPL_LOOP>
80
     </select>
81
    </td>
82
    <TMPL_IF __last__><input type="hidden" name="rowcount" value="<TMPL_VAR __counter__>"></TMPL_IF>
83
  </TMPL_LOOP>
84
 </table>
85

  
86
 <input type="submit" onclick="document.Form.action2.value = 'assign_units'; document.Form.submit();" name="dummy" value="<translate>Assign units</translate>">
87

  
88
</form>
89

  
templates/webpages/dbupgrade/units_set_default_de.html
1
<div class="listtop">Schritt 3 von 3: Standardeinheiten</div>
2

  
3
<form name="Form" method="post" action="login.pl">
4

  
5
 <input type="hidden" name="path" value="<TMPL_VAR path ESCAPE=HTML>">
6
 <input type="hidden" name="login" value="<TMPL_VAR login ESCAPE=HTML>">
7
 <input type="hidden" name="hashed_password" value="<TMPL_VAR password ESCAPE=HTML>">
8
 <input type="hidden" name="unit_type" value="dimension">
9
 <input type="hidden" name="action" value="login">
10
 <input type="hidden" name="action2" value="">
11

  
12
 <p>
13
  Es gibt noch Eintr&auml;ge in der Datenbank, f&uuml;r die keine Einheit zugeordnet ist.
14
  Sie m&uuml;ssen eine Ma&szlig;- und eine Dienstleistungseinheit ausw&auml;hlen, die diesen Waren und Dienstleistungen, denen noch keine Einheit zugeordnet ist, zugeordnet wird.
15
 </p>
16

  
17
 <table>
18
  <tr>
19
   <td>Ma&szlig;einheit:</td>
20
   <td>
21
    <select name="default_dimension_unit">
22
     <TMPL_LOOP DIMENSION_DDBOX><option><TMPL_VAR name ESCAPE=HTML></option></TMPL_LOOP>
23
    </select>
24
   </td>
25
  </tr>
26
  <tr>
27

  
28
   <td>Dienstleistungseinheit:</td>
29
   <td>
30
    <select name="default_service_unit">
31
     <TMPL_LOOP SERVICE_DDBOX><option><TMPL_VAR name ESCAPE=HTML></option></TMPL_LOOP>
32
    </select>
33
   </td>
34
  </tr>
35
 </table>
36

  
37
 <p><input type="submit" onclick="document.Form.action2.value = 'set_default'; document.Form.submit();" name="dummy" value="Einheiten zuweisen"></p>
38

  
39
</form>
templates/webpages/dbupgrade/units_set_default_done_de.html
1
<div class="listtop">Schritt 3 von 3: Standardeinheiten</div>
2

  
3
<p>Es wurden keine Eintr&auml;ge gefunden, denen keine Einheit zugeordnet war.</p>
4

  
5
<p>Das Datenbankupgrade zwecks Einf&uuml;hrung von Einheiten ist nun beendet.</p>
6

  
7
<hr>
templates/webpages/dbupgrade/units_set_default_done_master.html
1
<div class="listtop"><translate>Step 3 of 3: Default units</translate></div>
2

  
3
<p><translate>No entries were found which had no unit assigned to them.</translate></p>
4

  
5
<p><translate>The database upgrade for the introduction of units is now complete.</translate></p>
6

  
7
<hr>
templates/webpages/dbupgrade/units_set_default_master.html
1
<div class="listtop"><translate>Step 3 of 3: Default units</translate></div>
2

  
3
<form name="Form" method="post" action="login.pl">
4

  
5
 <input type="hidden" name="path" value="<TMPL_VAR path ESCAPE=HTML>">
6
 <input type="hidden" name="login" value="<TMPL_VAR login ESCAPE=HTML>">
7
 <input type="hidden" name="hashed_password" value="<TMPL_VAR password ESCAPE=HTML>">
8
 <input type="hidden" name="unit_type" value="dimension">
9
 <input type="hidden" name="action" value="login">
10
 <input type="hidden" name="action2" value="">
11

  
12
 <p>
13
  <translate>There are still entries in the database for which no unit
14
   has been assigned.</translate>
15
  <translate>You have to chose a dimension unit and a service unit
16
   which will then be assigned to those entries.</translate>
17
 </p>
18

  
19
 <table>
20
  <tr>
21
   <td><translate>Dimension unit</translate>:</td>
22
   <td>
23
    <select name="default_dimension_unit">
24
     <TMPL_LOOP DIMENSION_DDBOX><option><TMPL_VAR name ESCAPE=HTML></option></TMPL_LOOP>
25
    </select>
26
   </td>
27
  </tr>
28
  <tr>
29

  
30
   <td><translate>Service unit</translate>:</td>
31
   <td>
32
    <select name="default_service_unit">
33
     <TMPL_LOOP SERVICE_DDBOX><option><TMPL_VAR name ESCAPE=HTML></option></TMPL_LOOP>
34
    </select>
35
   </td>
36
  </tr>
37
 </table>
38

  
39
 <p><input type="submit" onclick="document.Form.action2.value = 'set_default'; document.Form.submit();" name="dummy" value="<translate>Assign units</translate>"></p>
40

  
41
</form>

Auch abrufbar als: Unified diff