Einheiten bearbeiten: Faktoren nicht forciert mit fünf Stellen anzeigen.
[kivitendo-erp.git] / bin / mozilla / am.pl
index 18be99f..27ccd06 100644 (file)
@@ -40,6 +40,8 @@ use Data::Dumper;
 
 1;
 
+
+
 require "$form->{path}/common.pl";
 
 # end of main
@@ -175,10 +177,14 @@ sub account_header {
             76  => $locale->text('UStVA-Nr. 76'),
             77  => $locale->text('UStVA-Nr. 77'),
             80  => $locale->text('UStVA-Nr. 80'),
+            81  => $locale->text('UStVA-Nr. 81 left'),
+            811 => $locale->text('UStVA-Nr. 81 right'),
             84  => $locale->text('UStVA-Nr. 84'),
             85  => $locale->text('UStVA-Nr. 85'),
             86  => $locale->text('UStVA-Nr. 86 left'),
             861 => $locale->text('UStVA-Nr. 86 right'),
+            89  => $locale->text('UStVA-Nr. 89 left'),
+            891 => $locale->text('UStVA-Nr. 89 right'),
             91  => $locale->text('UStVA-Nr. 91'),
             93  => $locale->text('UStVA-Nr. 93 left'),
             931 => $locale->text('UStVA-Nr. 93 right'),
@@ -494,11 +500,6 @@ sub form_footer {
       . $locale->text('Delete') . qq|">|;
   }
 
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
   print qq|
 </form>
 
@@ -533,36 +534,7 @@ sub list_account {
   $callback =
     "$form->{script}?action=list_account&path=$form->{path}&login=$form->{login}&password=$form->{password}";
 
-  @column_index = qw(accno gifi_accno description debit credit link);
-
-  $column_header{accno} = qq|<th>| . $locale->text('Account') . qq|</a></th>|;
-  $column_header{gifi_accno} =
-    qq|<th>| . $locale->text('GIFI') . qq|</a></th>|;
-  $column_header{description} =
-    qq|<th>| . $locale->text('Description') . qq|</a></th>|;
-  $column_header{debit}  = qq|<th>| . $locale->text('Debit') . qq|</a></th>|;
-  $column_header{credit} = qq|<th>| . $locale->text('Credit') . qq|</a></th>|;
-  $column_header{link}   = qq|<th>| . $locale->text('Link') . qq|</a></th>|;
-
   $form->header;
-  $colspan = $#column_index + 1;
-
-  print qq|
-<body>
-
-<table width=100%>
-  <tr>
-    <th class=listtop colspan=$colspan>$form->{title}</th>
-  </tr>
-  <tr height=5></tr>
-  <tr class=listheading>
-|;
-
-  map { print "$column_header{$_}\n" } @column_index;
-
-  print qq|
-</tr>
-|;
 
   # escape callback
   $callback = $form->escape($callback);
@@ -581,50 +553,66 @@ sub list_account {
         $form->format_amount(\%myconfig, -$ca->{amount}, 2, "&nbsp;");
     }
 
-    $ca->{link} =~ s/:/<br>/og;
-
-    if ($ca->{charttype} eq "H") {
-      print qq|<tr class=listheading>|;
-
-      $column_data{accno} =
-        qq|<th><a href=$form->{script}?action=edit_account&id=$ca->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ca->{accno}</a></th>|;
-      $column_data{gifi_accno} =
-        qq|<th><a href=$form->{script}?action=edit_gifi&accno=$ca->{gifi_accno}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ca->{gifi_accno}</a>&nbsp;</th>|;
-      $column_data{description} = qq|<th>$ca->{description}&nbsp;</th>|;
-      $column_data{debit}       = qq|<th>&nbsp;</th>|;
-      $column_data{credit}      = qq| <th>&nbsp;</th>|;
-      $column_data{link}        = qq|<th>&nbsp;</th>|;
-
-    } else {
-      $i++;
-      $i %= 2;
-      print qq|
-<tr valign=top class=listrow$i>|;
-      $column_data{accno} =
-        qq|<td><a href=$form->{script}?action=edit_account&id=$ca->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ca->{accno}</a></td>|;
-      $column_data{gifi_accno} =
-        qq|<td><a href=$form->{script}?action=edit_gifi&accno=$ca->{gifi_accno}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ca->{gifi_accno}</a>&nbsp;</td>|;
-      $column_data{description} = qq|<td>$ca->{description}&nbsp;</td>|;
-      $column_data{debit}       = qq|<td align=right>$ca->{debit}</td>|;
-      $column_data{credit}      = qq|<td align=right>$ca->{credit}</td>|;
-      $column_data{link}        = qq|<td>$ca->{link}&nbsp;</td>|;
-
+    my @links = split( q{:}, $ca->{link});
+    
+    $ca->{link} = q{};
+    
+    foreach my $link (@links){
+      $link = ( $link eq 'AR')             ? $locale->text('Account Link AR')
+               : ( $link eq 'AP')             ? $locale->text('Account Link AP')
+               : ( $link eq 'IC')             ? $locale->text('Account Link IC')
+               : ( $link eq 'AR_amount' )     ? $locale->text('Account Link AR_amount')
+               : ( $link eq 'AR_paid' )       ? $locale->text('Account Link AR_paid')
+               : ( $link eq 'AR_tax' )        ? $locale->text('Account Link AR_tax')
+               : ( $link eq 'AP_amount' )     ? $locale->text('Account Link AP_amount')
+               : ( $link eq 'AP_paid' )       ? $locale->text('Account Link AP_paid')
+               : ( $link eq 'AP_tax' )        ? $locale->text('Account Link AP_tax')
+               : ( $link eq 'IC_sale' )       ? $locale->text('Account Link IC_sale')
+               : ( $link eq 'IC_cogs' )       ? $locale->text('Account Link IC_cogs')
+               : ( $link eq 'IC_taxpart' )    ? $locale->text('Account Link IC_taxpart')
+               : ( $link eq 'IC_income' )     ? $locale->text('Account Link IC_income')
+               : ( $link eq 'IC_expense' )    ? $locale->text('Account Link IC_expense')
+               : ( $link eq 'IC_taxservice' ) ? $locale->text('Account Link IC_taxservice')
+               : ( $link eq 'CT_tax' )        ? $locale->text('Account Link CT_tax')
+               : $locale->text('Unknown Link') . ': ' . $link;
+      
+      $ca->{link} .= qq|[| . $link . qq|]&nbsp;|;
     }
+    
+    $ca->{startdate}      =~ s/,/<br>/og;
+    $ca->{tk_ustva}       =~ s/,/<br>/og;
+    $ca->{taxkey}         =~ s/,/<br>/og;
+    $ca->{taxaccount}     =~ s/,/<br>/og;
+    $ca->{taxdescription} =~ s/,/<br>/og;
+    $ca->{datevautomatik} = ($ca->{datevautomatik}) ? $locale->text('On'):q{};
+
+    $ca->{category} = ($ca->{category} eq 'A') ? $locale->text('Account Category A')
+                    : ($ca->{category} eq 'E') ? $locale->text('Account Category E')
+                    : ($ca->{category} eq 'L') ? $locale->text('Account Category L')
+                    : ($ca->{category} eq 'I') ? $locale->text('Account Category I')
+                    : ($ca->{category} eq 'Q') ? $locale->text('Account Category Q')
+                    : ($ca->{category} eq 'C') ? $locale->text('Account Category C')
+                    : ($ca->{category} eq 'G') ? $locale->text('Account Category G')
+                    : $locale->text('Unknown Category') . ': ' . $ca->{category};
+
+    $ca->{link_edit_account} = 
+        qq|$form->{script}?action=edit_account&id=$ca->{id}|
+       .qq|&path=$form->{path}&login=$form->{login}|
+       .qq|&password=$form->{password}&callback=$callback|;
+  }
+  
+  my $parameters_ref = {
+  
+  
+  #   hidden_variables                => $_hidden_variables_ref,
+  };
+  
+  # Ausgabe des Templates
+  print($form->parse_html_template('am/list_accounts', $parameters_ref));
+  
+  $lxdebug->leave_sub();
+  
 
-    map { print "$column_data{$_}\n" } @column_index;
-
-    print "</tr>\n";
-  }
-
-  print qq|
-  <tr><td colspan=$colspan><hr size=3 noshade></td></tr>
-</table>
-
-</body>
-</html>
-|;
-
-  $lxdebug->leave_sub();
 }
 
 sub delete_account {
@@ -825,11 +813,6 @@ sub gifi_footer {
     }
   }
 
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
   print qq|
   </form>
 
@@ -1000,14 +983,8 @@ sub list_department {
 <input type=hidden name=password value=$form->{password}>
 
 <input class=submit type=submit name=action value="|
-    . $locale->text('Add') . qq|">|;
+    . $locale->text('Add') . qq|">
 
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
-  print qq|
   </form>
 
   </body>
@@ -1199,14 +1176,8 @@ sub list_lead {
 <input type=hidden name=password value=$form->{password}>
 
 <input class=submit type=submit name=action value="|
-    . $locale->text('Add') . qq|">|;
+    . $locale->text('Add') . qq|">
 
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
-  print qq|
   </form>
 
   </body>
@@ -1403,14 +1374,7 @@ sub list_business {
 <input type=hidden name=password value=$form->{password}>
 
 <input class=submit type=submit name=action value="|
-    . $locale->text('Add') . qq|">|;
-
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
-  print qq|
+    . $locale->text('Add') . qq|">
 
   </form>
 
@@ -1641,14 +1605,7 @@ sub list_language {
 <input type=hidden name=password value=$form->{password}>
 
 <input class=submit type=submit name=action value="|
-    . $locale->text('Add') . qq|">|;
-
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
-  print qq|
+    . $locale->text('Add') . qq|">
 
   </form>
 
@@ -1818,14 +1775,26 @@ sub list_buchungsgruppe {
 
   $form->{title} = $locale->text('Buchungsgruppen');
 
-  @column_index = qw(description inventory_accno income_accno_0 expense_accno_0 income_accno_1 expense_accno_1 income_accno_2 expense_accno_2 income_accno_3 expense_accno_3 );
+  @column_index = qw(up down description inventory_accno
+                     income_accno_0 expense_accno_0
+                     income_accno_1 expense_accno_1
+                     income_accno_2 expense_accno_2
+                     income_accno_3 expense_accno_3 );
 
+  $column_header{up} =
+      qq|<th class="listheading" width="16">|
+    . qq|<img src="image/up.png" alt="| . $locale->text("up") . qq|">|
+    . qq|</th>|;
+  $column_header{down} =
+      qq|<th class="listheading" width="16">|
+    . qq|<img src="image/down.png" alt="| . $locale->text("down") . qq|">|
+    . qq|</th>|;
   $column_header{description} =
-      qq|<th class=listheading width=60%>|
+      qq|<th class="listheading" width="40%">|
     . $locale->text('Description')
     . qq|</th>|;
   $column_header{inventory_accno} =
-      qq|<th class=listheading width=10%>|
+      qq|<th class=listheading>|
     . $locale->text('Bestandskonto')
     . qq|</th>|;
   $column_header{income_accno_0} =
@@ -1882,6 +1851,11 @@ sub list_buchungsgruppe {
         </tr>
 |;
 
+  my $swap_link = qq|$form->{script}?action=swap_buchungsgruppen&|;
+  map({ $swap_link .= $_ . "=" . $form->escape($form->{$_}) . "&" }
+      qw(login password path));
+
+  my $row = 0;
   foreach $ref (@{ $form->{ALL} }) {
 
     $i++;
@@ -1891,6 +1865,27 @@ sub list_buchungsgruppe {
         <tr valign=top class=listrow$i>
 |;
 
+    if ($row) {
+      my $pref = $form->{ALL}->[$row - 1];
+      $column_data{up} =
+        qq|<td align="center" valign="center" width="16">| .
+        qq|<a href="${swap_link}id1=$ref->{id}&id2=$pref->{id}">| .
+        qq|<img src="image/up.png" alt="| . $locale->text("up") . qq|">| .
+        qq|</a></td>|;
+    } else {
+      $column_data{up} = qq|<td width="16">&nbsp;</td>|;
+    }
+
+    if ($row == (scalar(@{ $form->{ALL} }) - 1)) {
+      $column_data{down} = qq|<td width="16">&nbsp;</td>|;
+    } else {
+      my $nref = $form->{ALL}->[$row + 1];
+      $column_data{down} =
+        qq|<td align="center" valign="center" width="16">| .
+        qq|<a href="${swap_link}id1=$ref->{id}&id2=$nref->{id}">| .
+        qq|<img src="image/down.png" alt="| . $locale->text("down") . qq|">| .
+        qq|</a></td>|;
+    }
 
     $column_data{description} =
       qq|<td><a href=$form->{script}?action=edit_buchungsgruppe&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{description}</td>|;
@@ -1913,6 +1908,8 @@ sub list_buchungsgruppe {
     print qq|
        </tr>
 |;
+
+    $row++;
   }
 
   print qq|
@@ -1936,14 +1933,7 @@ sub list_buchungsgruppe {
 <input type=hidden name=password value=$form->{password}>
 
 <input class=submit type=submit name=action value="|
-    . $locale->text('Add') . qq|">|;
-
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
-  print qq|
+    . $locale->text('Add') . qq|">
 
   </form>
 
@@ -2114,6 +2104,15 @@ sub delete_buchungsgruppe {
   $lxdebug->leave_sub();
 }
 
+sub swap_buchungsgruppen {
+  $lxdebug->enter_sub();
+
+  AM->swap_sortkeys(\%myconfig, $form, "buchungsgruppen");
+  list_buchungsgruppe();
+
+  $lxdebug->leave_sub();
+}
+
 
 sub add_printer {
   $lxdebug->enter_sub();
@@ -2238,14 +2237,7 @@ sub list_printer {
 <input type=hidden name=password value=$form->{password}>
 
 <input class=submit type=submit name=action value="|
-    . $locale->text('Add') . qq|">|;
-
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
-  print qq|
+    . $locale->text('Add') . qq|">
 
   </form>
 
@@ -2337,6 +2329,10 @@ sub add_payment {
   $form->{terms_netto} = 0;
   $form->{terms_skonto} = 0;
   $form->{percent_skonto} = 0;
+  my @languages = AM->language(\%myconfig, $form, 1);
+  map({ $_->{"language"} = $_->{"description"};
+        $_->{"language_id"} = $_->{"id"}; } @languages);
+  $form->{"TRANSLATION"} = \@languages;
   &payment_header;
   &form_footer;
 
@@ -2348,7 +2344,9 @@ sub edit_payment {
 
   $form->{title} = "Edit";
 
-  AM->get_payment(\%myconfig, \%$form);
+  AM->get_payment(\%myconfig, $form);
+  $form->{percent_skonto} =
+    $form->format_amount(\%myconfig, $form->{percent_skonto} * 100);
 
   &payment_header;
 
@@ -2363,15 +2361,23 @@ sub list_payment {
 
   AM->payment(\%myconfig, \%$form);
 
-  $form->{callback} =
-    "$form->{script}?action=list_payment&path=$form->{path}&login=$form->{login}&password=$form->{password}";
+  $form->{callback} = build_std_url("action=list_payment");
 
   $callback = $form->escape($form->{callback});
 
   $form->{title} = $locale->text('Payment Terms');
 
-  @column_index = qw(description description_long terms_netto terms_skonto percent_skonto);
+  @column_index = qw(up down description description_long terms_netto
+                     terms_skonto percent_skonto);
 
+  $column_header{up} =
+      qq|<th class="listheading" align="center" valign="center" width="16">|
+    . qq|<img src="image/up.png" alt="| . $locale->text("up") . qq|">|
+    . qq|</th>|;
+  $column_header{down} =
+      qq|<th class="listheading" align="center" valign="center" width="16">|
+    . qq|<img src="image/down.png" alt="| . $locale->text("down") . qq|">|
+    . qq|</th>|;
   $column_header{description} =
       qq|<th class=listheading>|
     . $locale->text('Description')
@@ -2415,6 +2421,9 @@ sub list_payment {
         </tr>
 |;
 
+  my $swap_link = build_std_url("action=swap_payment_terms");
+
+  my $row = 0;
   foreach $ref (@{ $form->{ALL} }) {
 
     $i++;
@@ -2424,21 +2433,48 @@ sub list_payment {
         <tr valign=top class=listrow$i>
 |;
 
+    if ($row) {
+      my $pref = $form->{ALL}->[$row - 1];
+      $column_data{up} =
+        qq|<td align="center" valign="center" width="16">| .
+        qq|<a href="${swap_link}&id1=$ref->{id}&id2=$pref->{id}">| .
+        qq|<img src="image/up.png" alt="| . $locale->text("up") . qq|">| .
+        qq|</a></td>|;
+    } else {
+      $column_data{up} = qq|<td width="16">&nbsp;</td>|;
+    }
+
+    if ($row == (scalar(@{ $form->{ALL} }) - 1)) {
+      $column_data{down} = qq|<td width="16">&nbsp;</td>|;
+    } else {
+      my $nref = $form->{ALL}->[$row + 1];
+      $column_data{down} =
+        qq|<td align="center" valign="center" width="16">| .
+        qq|<a href="${swap_link}&id1=$ref->{id}&id2=$nref->{id}">| .
+        qq|<img src="image/down.png" alt="| . $locale->text("down") . qq|">| .
+        qq|</a></td>|;
+    }
 
     $column_data{description} =
-      qq|<td><a href=$form->{script}?action=edit_payment&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{description}</td>|;
-    $column_data{description_long}           = qq|<td align=right>$ref->{description_long}</td>|;
+      qq|<td><a href="| .
+      build_std_url("action=edit_payment", "id=$ref->{id}", "callback=$callback") .
+      qq|">| . H($ref->{description}) . qq|</a></td>|;
+    $column_data{description_long} =
+      qq|<td>| . H($ref->{description_long}) . qq|</td>|;
     $column_data{terms_netto} =
       qq|<td align=right>$ref->{terms_netto}</td>|;
     $column_data{terms_skonto} =
       qq|<td align=right>$ref->{terms_skonto}</td>|;
     $column_data{percent_skonto} =
-      qq|<td align=right>$ref->{percent_skonto} %</td>|;
+      qq|<td align=right>| .
+      $form->format_amount(\%myconfig, $ref->{percent_skonto} * 100) .
+      qq|%</td>|;
     map { print "$column_data{$_}\n" } @column_index;
 
     print qq|
        </tr>
 |;
+    $row++;
   }
 
   print qq|
@@ -2462,14 +2498,7 @@ sub list_payment {
 <input type=hidden name=password value=$form->{password}>
 
 <input class=submit type=submit name=action value="|
-    . $locale->text('Add') . qq|">|;
-
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
-  print qq|
+    . $locale->text('Add') . qq|">
 
   </form>
 
@@ -2515,6 +2544,22 @@ sub payment_header {
     <th align=right>| . $locale->text('Long Description') . qq|</th>
     <td><input name=description_long size=50 value="$form->{description_long}"></td>
   </tr>
+|;
+
+  foreach my $language (@{ $form->{"TRANSLATION"} }) {
+    print qq|
+  <tr>
+    <th align="right">| .
+    sprintf($locale->text('Translation (%s)'),
+            $language->{"language"})
+    . qq|</th>
+    <td><input name="description_long_$language->{language_id}" size="50"
+         value="| . Q($language->{"description_long"}) . qq|"></td>
+  </tr>
+|;
+  }
+
+  print qq|
   <tr>
     <th align=right>| . $locale->text('Netto Terms') . qq|</th>
     <td><input name=terms_netto size=10 value="$form->{terms_netto}"></td>
@@ -2530,7 +2575,38 @@ sub payment_header {
   <td colspan=2><hr size=3 noshade></td>
   </tr>
 </table>
-|;
+
+<p>| . $locale->text("You can use the following strings in the long " .
+                     "description and all translations. They will be " .
+                     "replaced by their actual values by Lx-Office " .
+                     "before they're output.")
+. qq|</p>
+
+<ul>
+  <li>| . $locale->text("&lt;%netto_date%&gt; -- Date the payment is due in " .
+                        "full")
+. qq|</li>
+  <li>| . $locale->text("&lt;%skonto_date%&gt; -- Date the payment is due " .
+                        "with discount")
+. qq|</li>
+  <li>| . $locale->text("&lt;%skonto_amount%&gt; -- The deductible amount")
+. qq|</li>
+  <li>| . $locale->text("&lt;%total%&gt; -- Amount payable")
+. qq|</li>
+  <li>| . $locale->text("&lt;%invtotal%&gt; -- Invoice total")
+. qq|</li>
+  <li>| . $locale->text("&lt;%currency%&gt; -- The selected currency")
+. qq|</li>
+  <li>| . $locale->text("&lt;%terms_netto%&gt; -- The number of days for " .
+                        "full payment")
+. qq|</li>
+  <li>| . $locale->text("&lt;%account_number%&gt; -- Your account number")
+. qq|</li>
+  <li>| . $locale->text("&lt;%bank%&gt; -- Your bank")
+. qq|</li>
+  <li>| . $locale->text("&lt;%bank_code%&gt; -- Your bank code")
+. qq|</li>
+</ul>|;
 
   $lxdebug->leave_sub();
 }
@@ -2538,7 +2614,9 @@ sub payment_header {
 sub save_payment {
   $lxdebug->enter_sub();
 
-  $form->isblank("description", $locale->text('Language missing!'));
+  $form->isblank("description", $locale->text('Description missing!'));
+  $form->{"percent_skonto"} =
+    $form->parse_amount(\%myconfig, $form->{percent_skonto}) / 100;
   AM->save_payment(\%myconfig, \%$form);
   $form->redirect($locale->text('Payment Terms saved!'));
 
@@ -2554,6 +2632,15 @@ sub delete_payment {
   $lxdebug->leave_sub();
 }
 
+sub swap_payment_terms {
+  $lxdebug->enter_sub();
+
+  AM->swap_sortkeys(\%myconfig, $form, "payment_terms");
+  list_payment();
+
+  $lxdebug->leave_sub();
+}
+
 sub add_sic {
   $lxdebug->enter_sub();
 
@@ -2677,14 +2764,8 @@ sub list_sic {
 <input type=hidden name=password value=$form->{password}>
 
 <input class=submit type=submit name=action value="|
-    . $locale->text('Add') . qq|">|;
-
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
+    . $locale->text('Add') . qq|">
 
-  print qq|
   </form>
 
   </body>
@@ -2807,14 +2888,8 @@ $form->{body}
 <input type=hidden name=password value=$form->{password}>
 
 <input name=action type=submit class=submit value="|
-    . $locale->text('Edit') . qq|">|;
+    . $locale->text('Edit') . qq|">
 
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
-  print qq|
   </form>
 
 </body>
@@ -2856,14 +2931,8 @@ $form->{body}
 
 <br>
 <input type=submit class=submit name=action value="|
-    . $locale->text('Save') . qq|">|;
-
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
+    . $locale->text('Save') . qq|">
 
-  print q|
   </form>
 
 
@@ -2933,7 +3002,7 @@ sub config {
   if (!$myconfig{"template_format"}) {
     $myconfig{"template_format"} = "pdf";
   }
-  $template_format = "";
+  my $template_format = "";
   foreach $item (@formats) {
     $template_format .=
       "<option value=\"$item->{value}\"" .
@@ -2942,6 +3011,27 @@ sub config {
        ">" . H($item->{"name"}) . "</option>";
   }
 
+  if (!$myconfig{"default_media"}) {
+    $myconfig{"default_media"} = "screen";
+  }
+  my %selected = ($myconfig{"default_media"} => "selected");
+  my $default_media = qq|
+  <option value="screen" $selected{'screen'}>| . $locale->text("Screen") . qq|</option>
+  <option value="printer" $selected{'printer'}>| . $locale->text("Printer") . qq|</option>
+  <option value="queue" $selected{'queue'}>| . $locale->text("Queue") . qq|</option>
+|;
+
+  %selected = ();
+  $selected{$myconfig{"default_printer_id"}} = "selected"
+    if ($myconfig{"default_printer_id"});
+  my $default_printer = qq|<option></option>|;
+  AM->printer(\%myconfig, $form);
+  foreach my $printer (@{$form->{"ALL"}}) {
+    $default_printer .= qq|<option value="| . Q($printer->{"id"}) .
+      qq|" $selected{$printer->{'id'}}>| .
+      H($printer->{"printer_description"}) . qq|</option>|;
+  }
+
   %countrycodes = User->country_codes;
   $countrycodes = '';
   foreach $key (sort { $countrycodes{$a} cmp $countrycodes{$b} }
@@ -2954,19 +3044,6 @@ sub config {
   }
   $countrycodes = "<option>American English\n$countrycodes";
 
-  # use an other input number format than output numberformat
-  # look at Form.pm, sub parse_amount
-  my $in_numberformat = '';
-  $text1 = qq|value="0">| . $locale->text('equal Outputformat');
-  $text2 = qq|value="1">| . $locale->text('1000,00 or 1000.00');
-  @in_nf = ($text1, $text2);
-  foreach $item (@in_nf) {
-    $in_numberformat .=
-      (substr($item, 7, 1) eq $myconfig{in_numberformat})
-      ? "<option selected $item\n"
-      : "<option $item\n";
-  }
-
   foreach $key (keys %{ $form->{IC} }) {
     foreach $accno (sort keys %{ $form->{IC}{$key} }) {
       $myconfig{$key} .=
@@ -3001,6 +3078,12 @@ sub config {
     $menustyle_v3 = "checked";
   }
 
+  my ($show_form_details, $hide_form_details);
+  $myconfig{"show_form_details"} = 1
+    unless (defined($myconfig{"show_form_details"}));
+  $show_form_details = "checked" if ($myconfig{"show_form_details"});
+  $hide_form_details = "checked" unless ($myconfig{"show_form_details"});
+
   print qq|
 <body>
 
@@ -3055,10 +3138,6 @@ sub config {
          <th align=right>| . $locale->text('Output Number Format') . qq|</th>
          <td><select name=numberformat>$numberformat</select></td>
        </tr>
-       <tr>
-         <th align=right>| . $locale->text('Input Number Format') . qq|</th>
-         <td><select name=in_numberformat>$in_numberformat</select></td>
-       </tr>
 
        <tr>
          <th align=right>| . $locale->text('Dropdown Limit') . qq|</th>
@@ -3080,7 +3159,14 @@ sub config {
     $locale->text("Top (Javascript)") . qq|
     <input name=menustyle type=radio class=radio value=old $menustyle_old>&nbsp;| .
     $locale->text("Old (on the side)") . qq|</td>
-       </tr>   
+  </tr>
+  <tr>
+    <th align=right>| . $locale->text('Form details (second row)') . qq|</th>
+    <td><input type="radio" id="rad_show_form_details" name="show_form_details" value="1" $show_form_details>&nbsp;
+    <label for="rad_show_form_details">| . $locale->text('Show by default') . qq|</label>
+    <input type="radio" id="rad_hide_form_details" name="show_form_details" value="0" $hide_form_details>&nbsp;
+    <label for="rad_hide_form_details">| . $locale->text('Hide by default') . qq|</label></td>
+       </tr>
        <input name=printer type=hidden value="$myconfig{printer}">
        <tr class=listheading>
          <th colspan=2>| . $locale->text("Print options") . qq|</th>
@@ -3089,6 +3175,14 @@ sub config {
          <th align=right>| . $locale->text('Default template format') . qq|</th>
          <td><select name="template_format">$template_format</select></td>
        </tr>
+       <tr>
+         <th align=right>| . $locale->text('Default output medium') . qq|</th>
+         <td><select name="default_media">$default_media</select></td>
+       </tr>
+       <tr>
+         <th align=right>| . $locale->text('Default printer') . qq|</th>
+         <td><select name="default_printer_id">$default_printer</select></td>
+       </tr>
        <tr>
          <th align=right>| . $locale->text('Number of copies') . qq|</th>
          <td><input name="copies" size="10" value="| .
@@ -3104,14 +3198,8 @@ sub config {
          <td><input name=businessnumber size=25 value="$myconfig{businessnumber}"></td>
        </tr>
        <tr>
-         <td colspan=2>
-           <table width=100%>
-             <tr>
                <th align=right>| . $locale->text('Year End') . qq| (mm/dd)</th>
                <td><input name=yearend size=5 value=$form->{defaults}{yearend}></td>
-             </tr>
-           </table>
-         </td>
        </tr>
        <tr class=listheading>
          <th colspan=2>|
@@ -3244,14 +3332,8 @@ print qq|      </table>
 
 <br>
 <input type=submit class=submit name=action value="|
-    . $locale->text('Save') . qq|">|;
-
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
+    . $locale->text('Save') . qq|">
 
-  print qq|
   </form>
 
 </body>
@@ -3490,14 +3572,8 @@ sub list_warehouse {
 <input type=hidden name=password value=$form->{password}>
 
 <input class=submit type=submit name=action value="|
-    . $locale->text('Add') . qq|">|;
+    . $locale->text('Add') . qq|">
 
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
-  print qq|
   </form>
 
   </body>
@@ -3597,7 +3673,7 @@ sub edit_units {
   }
   my $i = 1;
   foreach (@unit_list) {
-    $_->{"factor"} = $form->format_amount(\%myconfig, $_->{"factor"}, 5) if ($_->{"factor"});
+    $_->{"factor"} = $form->format_amount(\%myconfig, $_->{"factor"} * 1) if ($_->{"factor"});
     $_->{"UNITLANGUAGES"} = [];
     foreach my $lang (@languages) {
       push(@{ $_->{"UNITLANGUAGES"} },