Einheiten bearbeiten: Faktoren nicht forciert mit fünf Stellen anzeigen.
[kivitendo-erp.git] / bin / mozilla / am.pl
index ddfa954..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'),
@@ -528,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);
@@ -576,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;|;
     }
-
-    map { print "$column_data{$_}\n" } @column_index;
-
-    print "</tr>\n";
+    
+    $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|;
   }
-
-  print qq|
-  <tr><td colspan=$colspan><hr size=3 noshade></td></tr>
-</table>
-
-</body>
-</html>
-|;
-
+  
+  my $parameters_ref = {
+  
+  
+  #   hidden_variables                => $_hidden_variables_ref,
+  };
+  
+  # Ausgabe des Templates
+  print($form->parse_html_template('am/list_accounts', $parameters_ref));
+  
   $lxdebug->leave_sub();
+  
+
 }
 
 sub delete_account {
@@ -1789,11 +1782,11 @@ sub list_buchungsgruppe {
                      income_accno_3 expense_accno_3 );
 
   $column_header{up} =
-      qq|<th class="listheading">|
+      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">|
+      qq|<th class="listheading" width="16">|
     . qq|<img src="image/down.png" alt="| . $locale->text("down") . qq|">|
     . qq|</th>|;
   $column_header{description} =
@@ -1875,20 +1868,20 @@ sub list_buchungsgruppe {
     if ($row) {
       my $pref = $form->{ALL}->[$row - 1];
       $column_data{up} =
-        qq|<td align="center" valign="center">| .
+        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>&nbsp;</td>|;
+      $column_data{up} = qq|<td width="16">&nbsp;</td>|;
     }
 
     if ($row == (scalar(@{ $form->{ALL} }) - 1)) {
-      $column_data{down} = qq|<td>&nbsp;</td>|;
+      $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">| .
+        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>|;
@@ -2114,7 +2107,7 @@ sub delete_buchungsgruppe {
 sub swap_buchungsgruppen {
   $lxdebug->enter_sub();
 
-  AM->swap_buchungsgruppen(\%myconfig, $form);
+  AM->swap_sortkeys(\%myconfig, $form, "buchungsgruppen");
   list_buchungsgruppe();
 
   $lxdebug->leave_sub();
@@ -2336,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;
 
@@ -2347,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;
 
@@ -2362,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')
@@ -2414,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++;
@@ -2423,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|
@@ -2507,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>
@@ -2522,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();
 }
@@ -2530,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!'));
 
@@ -2546,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();
 
@@ -2949,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} .=
@@ -3056,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>
@@ -3595,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"} },