USTVA: Winston export ueberarbeitet. Kz vor die pos_ustva gesetzt, 'Kennzahl Nr'...
[kivitendo-erp.git] / bin / mozilla / gl.pl
index 5a6404d..43f5447 100644 (file)
 #======================================================================
 
 use SL::GL;
+use SL::IS;
 use SL::PE;
 
-require "$form->{path}/arap.pl";
+require "bin/mozilla/arap.pl";
 require "bin/mozilla/common.pl";
 
 1;
@@ -75,7 +76,7 @@ sub add {
   $form->{title} = "Add";
 
   $form->{callback} =
-    "$form->{script}?action=add&path=$form->{path}&login=$form->{login}&password=$form->{password}"
+    "$form->{script}?action=add&login=$form->{login}&password=$form->{password}"
     unless $form->{callback};
 
   # we use this only to set a default date
@@ -109,7 +110,7 @@ sub add {
 
 }
 
-sub edit {
+sub prepare_transaction {
   $lxdebug->enter_sub();
 
   GL->transaction(\%myconfig, \%$form);
@@ -178,15 +179,24 @@ sub edit {
     ($form->datetonum($form->{transdate}, \%myconfig) <=
      $form->datetonum($form->{closedto}, \%myconfig));
 
+  $lxdebug->leave_sub();
+}
+
+sub edit {
+  $lxdebug->enter_sub();
+
+  prepare_transaction();
+
   $form->{title} = "Edit";
 
-  &form_header;
-  &display_rows;
-  &form_footer;
-  $lxdebug->leave_sub();
+  form_header();
+  display_rows();
+  form_footer();
 
+  $lxdebug->leave_sub();
 }
 
+
 sub search {
   $lxdebug->enter_sub();
 
@@ -233,12 +243,12 @@ sub search {
 
     # with JavaScript Calendar
     $button1 = qq|
-       <td><input name=datefrom id=datefrom size=11 title="$myconfig{dateformat}">
+       <td><input name=datefrom id=datefrom size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
        <input type=button name=datefrom id="trigger1" value=|
       . $locale->text('button') . qq|></td>  
        |;
     $button2 = qq|
-       <td><input name=dateto id=dateto size=11 title="$myconfig{dateformat}">
+       <td><input name=dateto id=dateto size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
        <input type=button name=dateto id="trigger2" value=|
       . $locale->text('button') . qq|></td>
      |;
@@ -251,15 +261,17 @@ sub search {
 
     # without JavaScript Calendar
     $button1 =
-      qq|<td><input name=datefrom id=datefrom size=11 title="$myconfig{dateformat}"></td>|;
+      qq|<td><input name=datefrom id=datefrom size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\"></td>|;
     $button2 =
-      qq|<td><input name=dateto id=dateto size=11 title="$myconfig{dateformat}"></td>|;
+      qq|<td><input name=dateto id=dateto size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\"></td>|;
   }
-
+  $form->{javascript} .= qq|<script type="text/javascript" src="js/common.js"></script>|;
   $form->header;
-
+  $onload = qq|focus()|;
+  $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|;
+  $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|;
   print qq|
-<body>
+<body onLoad="$onload">
 
 <form method=post action=$form->{script}>
 
@@ -339,8 +351,6 @@ sub search {
                    <td>| . $locale->text('Source') . qq|</td>
                    <td align=right><input name="l_accno" class=checkbox type=checkbox value=Y checked></td>
                    <td>| . $locale->text('Account') . qq|</td>
-                   <td align=right><input name="l_gifi_accno" class=checkbox type=checkbox value=Y></td>
-                   <td>| . $locale->text('GIFI') . qq|</td>
                  </tr>
                  <tr>
                    <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
@@ -364,7 +374,6 @@ $jsscript
 
 <input type=hidden name=nextsub value=generate_report>
 
-<input type=hidden name=path value=$form->{path}>
 <input type=hidden name=login value=$form->{login}>
 <input type=hidden name=password value=$form->{password}>
 
@@ -387,7 +396,7 @@ sub generate_report {
   GL->all_transactions(\%myconfig, \%$form);
 
   $callback =
-    "$form->{script}?action=generate_report&path=$form->{path}&login=$form->{login}&password=$form->{password}";
+    "$form->{script}?action=generate_report&login=$form->{login}&password=$form->{password}";
 
   $href = $callback;
 
@@ -412,14 +421,6 @@ sub generate_report {
       $locale->text('Account')
       . " : $form->{accno} $form->{account_description}";
   }
-  if ($form->{gifi_accno}) {
-    $href     .= "&gifi_accno=" . $form->escape($form->{gifi_accno});
-    $callback .= "&gifi_accno=" . $form->escape($form->{gifi_accno}, 1);
-    $option   .= "\n<br>" if $option;
-    $option   .=
-      $locale->text('GIFI')
-      . " : $form->{gifi_accno} $form->{gifi_account_description}";
-  }
   if ($form->{source}) {
     $href     .= "&source=" . $form->escape($form->{source});
     $callback .= "&source=" . $form->escape($form->{source}, 1);
@@ -482,13 +483,13 @@ sub generate_report {
        transdate       id                reference         description  
        notes           source            debit             debit_accno  
        credit          credit_accno      debit_tax         debit_tax_accno
-       credit_tax      credit_tax_accno  accno             gifi_accno
+       credit_tax      credit_tax_accno  accno
        projectnumbers  
        )
   );
 
-  if ($form->{accno} || $form->{gifi_accno}) {
-    @columns = grep !/(accno|gifi_accno)/, @columns;
+  if ($form->{accno}) {
+    @columns = grep !/accno/, @columns;
     push @columns, "balance";
     $form->{l_balance} = "Y";
 
@@ -569,10 +570,6 @@ sub generate_report {
       "<th><a class=listheading href=$href&sort=accno>"
     . $locale->text('Credit Tax Account')
     . "</a></th>";
-  $column_header{gifi_accno} =
-      "<th><a class=listheading href=$href&sort=gifi_accno>"
-    . $locale->text('GIFI')
-    . "</a></th>";
   $column_header{balance} = "<th>" . $locale->text('Balance') . "</th>";
   $column_header{projectnumbers} =
       "<th class=listheading>"  . $locale->text('Project Numbers') . "</th>";
@@ -617,7 +614,7 @@ sub generate_report {
     $sameitem = $form->{GL}->[0]->{ $form->{sort} };
   }
 
-  if (($form->{accno} || $form->{gifi_accno}) && $form->{balance}) {
+  if ($form->{accno} && $form->{balance}) {
 
     map { $column_data{$_} = "<td>&nbsp;</td>" } @column_index;
     $column_data{balance} =
@@ -766,11 +763,11 @@ sub generate_report {
     }
 
     $transdate = "";
-    foreach $key (sort keys(%{ $ref->{transdate} })) {
+    foreach $key (sort keys(%{ $ref->{ac_transdate} })) {
       if ($key == 0) {
-        $transdate = "$ref->{transdate}{$key}";
+        $transdate = "$ref->{ac_transdate}{$key}";
       } else {
-        $transdate .= "<br>$ref->{transdate}{$key}";
+        $transdate .= "<br>$ref->{ac_transdate}{$key}";
       }
     }
 
@@ -780,7 +777,7 @@ sub generate_report {
     $column_data{id}        = "<td align=right>&nbsp;$ref->{id}&nbsp;</td>";
     $column_data{transdate}    = "<td align=center>$transdate</td>";
     $column_data{reference} =
-      "<td align=center><a href=$ref->{module}.pl?action=edit&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{reference}</td>";
+      "<td align=center><a href=$ref->{module}.pl?action=edit&id=$ref->{id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{reference}</td>";
     $column_data{description}  = "<td align=center>$ref->{description}&nbsp;</td>";
     $column_data{source}       = "<td align=center>$ref->{source}&nbsp;</td>";
     $column_data{notes}        = "<td align=center>$ref->{notes}&nbsp;</td>";
@@ -793,15 +790,11 @@ sub generate_report {
       ? "<td align=right>$debittax</td>"
       : "<td></td>";
     $column_data{debit_tax_accno} = "<td align=center>$debittaxaccno</td>";
-    $column_data{gifi_accno}      =
-      "<td><a href=$href&gifi_accno=$ref->{gifi_accno}&callback=$callback>$ref->{gifi_accno}</a>&nbsp;</td>";
     $column_data{credit_tax} =
       ($ref->{credit_tax_accno} ne "")
       ? "<td align=right>$credittax</td>"
       : "<td></td>";
     $column_data{credit_tax_accno} = "<td align=center>$credittaxaccno</td>";
-    $column_data{gifi_accno}       =
-      "<td><a href=$href&gifi_accno=$ref->{gifi_accno}&callback=$callback>$ref->{gifi_accno}</a>&nbsp;</td>";
     $column_data{balance} =
       "<td align=right>"
       . $form->format_amount(\%myconfig, $form->{balance}, 2, 0) . "</td>";
@@ -887,7 +880,6 @@ sub generate_report {
 
 <input name=callback type=hidden value="$form->{callback}">
 
-<input type=hidden name=path value=$form->{path}>
 <input type=hidden name=login value=$form->{login}>
 <input type=hidden name=password value=$form->{password}>
 
@@ -1127,15 +1119,12 @@ sub display_rows {
     if ($previous_accno &&
         ($previous_accno eq $selected_accno) &&
         ($previous_tax_id ne $selected_tax_id)) {
-      $lxdebug->message(0, "yeah");
       my $item = $taxcharts{$selected_tax_id};
       $selected_taxchart = "$item->{id}--$item->{rate}";
     }
 
-    if ($init) {
-      $selected_accno = '';
-      $selected_taxchart = $taxchart_init;
-    }
+    $selected_accno = '' if ($init);
+    $selected_taxchart = $taxchart_init unless ($selected_taxchart ne "");
 
     $accno = qq|<td>| .
       NTI($cgi->popup_menu('-name' => "accno_$i",
@@ -1317,7 +1306,7 @@ sub form_header {
 
     # with JavaScript Calendar
     $button1 = qq|
-       <td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value="$form->{transdate}" $readonly>
+       <td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value="$form->{transdate}" $readonly onBlur=\"check_right_date_format(this)\">
        <input type=button name=transdate id="trigger1" value=|
       . $locale->text('button') . qq|></td>  
        |;
@@ -1329,7 +1318,7 @@ sub form_header {
 
     # without JavaScript Calendar
     $button1 =
-      qq|<td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value="$form->{transdate}" $readonly></td>|;
+      qq|<td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value="$form->{transdate}" $readonly onBlur=\"check_right_date_format(this)\"></td>|;
   }
 
   $form->header;
@@ -1338,11 +1327,11 @@ sub form_header {
 <body onLoad="fokus()">
 
 <form method=post name="gl" action=$form->{script}>
+|;
 
-<input name=id type=hidden value=$form->{id}>
+  $form->hide_form(qw(id closedto locked storno storno_id));
 
-<input type=hidden name=closedto value=$form->{closedto}>
-<input type=hidden name=locked value=$form->{locked}>
+  print qq|
 <input type=hidden name=title value="$title">
 
 
@@ -1355,7 +1344,7 @@ sub form_header {
     <td>
       <table width=100%>
        <tr>
-         <th align=left>| . $locale->text('Reference') . qq|</th>
+         <th align=right>| . $locale->text('Reference') . qq|</th>
          <td><input name=reference size=20 value="$form->{reference}" $readonly></td>
          <td align=left>
            <table>
@@ -1375,7 +1364,7 @@ sub form_header {
          <table>
              <tr>
                <th align=right width=50%>| . $locale->text('Buchungsdatum') . qq|</th>
-               <td align=left><input name=gldate size=11 title="$myconfig{dateformat}" value=$form->{gldate} $readonly></td>
+               <td align=left><input name=gldate size=11 title="$myconfig{dateformat}" value=$form->{gldate} $readonly onBlur=\"check_right_date_format(this)\"></td>
              </tr>
            </table>
          </td>
@@ -1386,7 +1375,7 @@ sub form_header {
   if ($form->{id}) {
     print qq|
        <tr>
-         <th align=left width=1%>| . $locale->text('Description') . qq|</th>
+         <th align=right width=1%>| . $locale->text('Description') . qq|</th>
          <td width=1%>$description</td>
           <td>
            <table>
@@ -1400,7 +1389,7 @@ sub form_header {
            <table width=100%>
              <tr>
                <th align=right width=50%>| . $locale->text('Mitarbeiter') . qq|</th>
-               <td align=left><input name=employee size=11  value=$form->{employee} $readonly></td>
+               <td align=left><input name=employee size=20  value="| . H($form->{employee}) . qq|" readonly></td>
              </tr>
            </table>
          </td>
@@ -1474,7 +1463,6 @@ sub form_footer {
   </tr>
 </table>
 
-<input type=hidden name=path value=$form->{path}>
 <input type=hidden name=login value=$form->{login}>
 <input type=hidden name=password value=$form->{password}>
 
@@ -1488,8 +1476,10 @@ sub form_footer {
 
   if ($form->{id}) {
 
-    print qq|<input class=submit type=submit name=action value="|
-      . $locale->text('Storno') . qq|">|;
+    if (!$form->{storno}) {
+      print qq|<input class=submit type=submit name=action value="|
+        . $locale->text('Storno') . qq|">|;
+    }
 
     # Löschen und Ändern von Buchungen nicht mehr möglich (GoB) nur am selben Tag möglich
 
@@ -1563,6 +1553,7 @@ sub yes {
   if (GL->delete_transaction(\%myconfig, \%$form)){
     # saving the history
       if(!exists $form->{addition} && $form->{id} ne "") {
+        $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
            $form->{addition} = "DELETED";
            $form->save_history($form->dbconnect(\%myconfig));
       }
@@ -1596,19 +1587,6 @@ sub post {
 
   my @flds =
     qw(accno debit credit projectnumber fx_transaction source memo tax taxchart);
-  if ($form->{storno}) {
-    for my $i (1 .. $form->{rowcount}) {
-      unless (($form->{"debit_$i"} eq "") && ($form->{"credit_$i"} eq "")) {
-        if ($form->{"debit_$i"} ne "") {
-          $form->{"credit_$i"} = $form->{"debit_$i"};
-          $form->{"debit_$i"}  = "";
-        } elsif ($form->{"credit_$i"} ne "") {
-          $form->{"debit_$i"}  = $form->{"credit_$i"};
-          $form->{"credit_$i"} = "";
-        }
-      }
-    }
-  }
 
   for my $i (1 .. $form->{rowcount}) {
 
@@ -1756,6 +1734,7 @@ sub post {
   undef($form->{callback});
   # saving the history
   if(!exists $form->{addition} && $form->{id} ne "") {
+    $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
        $form->{addition} = "SAVED";
        $form->{what_done} = $locale->text("Buchungsnummer") . " = " . $form->{id}; 
        $form->save_history($form->dbconnect(\%myconfig));
@@ -1778,15 +1757,55 @@ sub post_as_new {
 sub storno {
   $lxdebug->enter_sub();
 
-  $form->{id}     = 0;
-  $form->{storno} = 1;
+  if (IS->has_storno(\%myconfig, $form, 'gl')) {
+    $form->{title} = $locale->text("Cancel General Ledger Transaction");
+    $form->error($locale->text("Transaction has already been cancelled!"));
+  }
+
+  my %keep_keys = map { $_, 1 } qw(login password id stylesheet);
+  map { delete $form->{$_} unless $keep_keys{$_} } keys %{ $form };
+
+  prepare_transaction();
+
+  for my $i (1 .. $form->{rowcount}) {
+    for (qw(debit credit tax)) {
+      $form->{"${_}_$i"} =
+        ($form->{"${_}_$i"})
+        ? $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2)
+        : "";
+    }
+  }
+
+  $form->{storno}      = 1;
+  $form->{storno_id}   = $form->{id};
+  $form->{id}          = 0;
+
+  $form->{reference}   = "Storno-" . $form->{reference};
+  $form->{description} = "Storno-" . $form->{description};
+
+  for my $i (1 .. $form->{rowcount}) {
+    next if (($form->{"debit_$i"} eq "") && ($form->{"credit_$i"} eq ""));
+
+    if ($form->{"debit_$i"} ne "") {
+      $form->{"credit_$i"} = $form->{"debit_$i"};
+      $form->{"debit_$i"}  = "";
+
+    } else {
+      $form->{"debit_$i"}  = $form->{"credit_$i"};
+      $form->{"credit_$i"} = "";
+    }
+  }
+
+  post();
+
   # saving the history
   if(!exists $form->{addition} && $form->{id} ne "") {
+    $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
        $form->{addition} = "STORNO";
        $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history 
-  &post;
+
   $lxdebug->leave_sub();
 
 }