Beim Speichern von Angeboten etc den Bearbeiter nicht aus $form->{employee} ableiten...
[kivitendo-erp.git] / bin / mozilla / ic.pl
index a6237fa..3765f64 100644 (file)
@@ -36,7 +36,8 @@ use SL::IC;
 
 #use SL::PE;
 
-require "$form->{path}/io.pl";
+require "bin/mozilla/io.pl";
+require "bin/mozilla/common.pl";
 
 1;
 
@@ -48,7 +49,7 @@ sub add {
   $form->{title} = $locale->text('Add ' . ucfirst $form->{item});
 
   $form->{callback} =
-    "$form->{script}?action=add&item=$form->{item}&path=$form->{path}&login=$form->{login}&password=$form->{password}"
+    "$form->{script}?action=add&item=$form->{item}&login=$form->{login}&password=$form->{password}"
     unless $form->{callback};
 
   $form->{"unit_changeable"} = 1;
@@ -79,7 +80,7 @@ sub search {
   # $locale->text('Services')
 
   # use JavaScript Calendar or not
-  $form->{jsscript} = $jscalendar;
+  $form->{jsscript} = 1;
   $jsscript = "";
   if ($form->{jsscript}) {
 
@@ -185,7 +186,7 @@ sub search {
                <td width=5%>&nbsp;</td>
                <th>| . $locale->text('From') . qq|</th>
                 $button1
-               <th>| . $locale->text('To') . qq|</th>
+               <th>| . $locale->text('To (time)') . qq|</th>
                 $button2
              </tr>
            </table>
@@ -235,7 +236,7 @@ sub search {
                    <tr>
                      <th>| . $locale->text('From') . qq|</th>
                      $button1
-                     <th>| . $locale->text('To') . qq|</th>
+                     <th>| . $locale->text('To (time)') . qq|</th>
                      $button2
                    </tr>
                  </table>
@@ -269,6 +270,8 @@ sub search {
         <tr>
           <th align=right nowrap>| . $locale->text('Part Number') . qq|</th>
           <td><input name=partnumber size=20></td>
+          <th align=right nowrap>| . $locale->text('EAN') . qq|</th>
+          <td><input name=ean size=20></td>
         </tr>
         <tr>
           <th align=right nowrap>|
@@ -372,7 +375,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}>
 
@@ -395,7 +397,6 @@ $jsscript
   $lxdebug->leave_sub();
 }    #end search()
 
-
 sub search_update_prices {
   $lxdebug->enter_sub();
 
@@ -403,7 +404,7 @@ sub search_update_prices {
   IC->get_pricegroups(\%myconfig, \%$form);
 
   # use JavaScript Calendar or not
-#   $form->{jsscript} = $jscalendar;
+#   $form->{jsscript} = 1;
 #   $jsscript = "";
 #   if ($form->{jsscript}) {
 # 
@@ -557,7 +558,6 @@ sub search_update_prices {
 <input type=hidden name=nextsub value=confirm_price_update>
 <input type=hidden name=price_rows value=$form->{price_rows}>
 
-<input type=hidden name=path value=$form->{path}>
 <input type=hidden name=login value=$form->{login}>
 <input type=hidden name=password value=$form->{password}>
 
@@ -656,7 +656,6 @@ sub choice {
 
   print qq|
 
-<input type=hidden name=path value=$form->{path}>
 <input type=hidden name=login value=$form->{login}>
 <input type=hidden name=password value=$form->{password}>
 
@@ -746,20 +745,9 @@ sub choice {
 sub list {
   $lxdebug->enter_sub();
 
-  # get parts for
-  if (($form->{partnumber} eq "") and ($form->{description} eq "")) {
-    IC->get_parts(\%myconfig, \%$form, "");
-  } else {
-    if ((!($form->{partnumber} eq "")) and ($form->{description} eq "")) {
-      IC->get_parts(\%myconfig, \%$form, "partnumber");
-    } else {
-      if (($form->{partnumber} eq "") and (!($form->{description} eq ""))) {
-        IC->get_parts(\%myconfig, \%$form, "description");
-      } else {
-        IC->get_parts(\%myconfig, \%$form, "all");
-      }    #fi
-    }    #fi
-  }    #fi
+  my @sortorders = ("", "partnumber", "description", "all");
+  my $sortorder = $sortorders[($form->{description} ? 2 : 0) + ($form->{partnumber} ? 1 : 0)];
+  IC->get_parts(\%myconfig, \%$form, $sortorder);
 
   $form->{title} = $locale->text('Top 100 hinzufuegen');
 
@@ -814,7 +802,6 @@ sub list {
 <br>
 
 
-<input type=hidden name=path value=$form->{path}>
 <input type=hidden name=login value=$form->{login}>
 <input type=hidden name=password value=$form->{password}>
 
@@ -935,7 +922,7 @@ sub addtop100 {
   }    #fi
 
   $callback =
-    "$form->{script}?action=top100&path=$form->{path}&login=$form->{login}&password=$form->{password}&searchitems=$form->{searchitems}&itemstatus=$form->{itemstatus}&bom=$form->{bom}&l_linetotal=$form->{l_linetotal}&title="
+    "$form->{script}?action=top100&login=$form->{login}&password=$form->{password}&searchitems=$form->{searchitems}&itemstatus=$form->{itemstatus}&bom=$form->{bom}&l_linetotal=$form->{l_linetotal}&title="
     . $form->escape($form->{title}, 1);
 
   # if we have a serialnumber limit search
@@ -1028,6 +1015,10 @@ sub addtop100 {
     $callback .= "&partnumber=$form->{partnumber}";
     $option   .= $locale->text('Part Number') . qq| : $form->{partnumber}<br>|;
   }
+  if ($form->{ean}) {
+    $callback .= "&partnumber=$form->{ean}";
+    $option   .= $locale->text('EAN') . qq| : $form->{ean}<br>|;
+  }
   if ($form->{partsgroup}) {
     $callback .= "&partsgroup=$form->{partsgroup}";
     $option   .= $locale->text('Group') . qq| : $form->{partsgroup}<br>|;
@@ -1067,7 +1058,7 @@ sub addtop100 {
   }
 
   @columns = $form->sort_columns(
-    qw(number partnumber description partsgroup bin onhand rop unit listprice linetotallistprice sellprice linetotalsellprice lastcost linetotallastcost priceupdate weight image drawing microfiche invnumber ordnumber quonumber name serialnumber soldtotal)
+    qw(number partnumber ean description partsgroup bin onhand rop unit listprice linetotallistprice sellprice linetotalsellprice lastcost linetotallastcost priceupdate weight image drawing microfiche invnumber ordnumber quonumber name serialnumber soldtotal)
   );
 
   if ($form->{l_linetotal}) {
@@ -1303,7 +1294,7 @@ sub addtop100 {
 
     $column_data{number} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{number}, '', "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{number})
       . "</td>";
     $column_data{partnumber} =
       "<td align=$align>$ref->{partnumber}&nbsp;</a></td>";
@@ -1312,32 +1303,29 @@ sub addtop100 {
 
     $column_data{onhand} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{onhand}, '', "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{onhand})
       . "</td>";
     $column_data{sellprice} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{sellprice}, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{sellprice})
       . "</td>";
     $column_data{listprice} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{listprice}, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{listprice})
       . "</td>";
     $column_data{lastcost} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{lastcost}, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{lastcost})
       . "</td>";
 
     $column_data{linetotalsellprice} = "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{sellprice},
-                             2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{sellprice}, 2)
       . "</td>";
     $column_data{linetotallastcost} = "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{lastcost},
-                             2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{lastcost}, 2)
       . "</td>";
     $column_data{linetotallistprice} = "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{listprice},
-                             2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{listprice}, 2)
       . "</td>";
 
     if (!$ref->{assemblyitem}) {
@@ -1353,10 +1341,10 @@ sub addtop100 {
 
     $column_data{rop} =
       "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{rop}, '', "&nbsp;") . "</td>";
+      . $form->format_amount(\%myconfig, $ref->{rop}) . "</td>";
     $column_data{weight} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{weight}, '', "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{weight})
       . "</td>";
     $column_data{unit}        = "<td>$ref->{unit}&nbsp;</td>";
     $column_data{bin}         = "<td>$ref->{bin}&nbsp;</td>";
@@ -1364,15 +1352,15 @@ sub addtop100 {
 
     $column_data{invnumber} =
       ($ref->{module} ne 'oe')
-      ? "<td><a href=$ref->{module}.pl?action=edit&type=invoice&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{invnumber}</a></td>"
+      ? "<td><a href=$ref->{module}.pl?action=edit&type=invoice&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{invnumber}</a></td>"
       : "<td>$ref->{invnumber}</td>";
     $column_data{ordnumber} =
       ($ref->{module} eq 'oe')
-      ? "<td><a href=$ref->{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{ordnumber}</a></td>"
+      ? "<td><a href=$ref->{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{ordnumber}</a></td>"
       : "<td>$ref->{ordnumber}</td>";
     $column_data{quonumber} =
       ($ref->{module} eq 'oe' && !$ref->{ordnumber})
-      ? "<td><a href=$ref->{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{quonumber}</a></td>"
+      ? "<td><a href=$ref->{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{quonumber}</a></td>"
       : "<td>$ref->{quonumber}</td>";
 
     $column_data{name} = "<td>$ref->{name}</td>";
@@ -1413,15 +1401,15 @@ sub addtop100 {
     map { $column_data{$_} = "<td>&nbsp;</td>" } @column_index;
     $column_data{linetotalsellprice} =
         "<th class=listtotal align=right>"
-      . $form->format_amount(\%myconfig, $totalsellprice, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $totalsellprice, 2)
       . "</th>";
     $column_data{linetotallastcost} =
         "<th class=listtotal align=right>"
-      . $form->format_amount(\%myconfig, $totallastcost, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $totallastcost, 2)
       . "</th>";
     $column_data{linetotallistprice} =
         "<th class=listtotal align=right>"
-      . $form->format_amount(\%myconfig, $totallistprice, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $totallistprice, 2)
       . "</th>";
 
     print "<tr class=listtotal>";
@@ -1444,7 +1432,6 @@ sub addtop100 {
 
 <form method=post action=$form->{script}>
 
-<input type=hidden name=path value=$form->{path}>
 <input type=hidden name=login value=$form->{login}>
 <input type=hidden name=password value=$form->{password}>
 
@@ -1471,14 +1458,8 @@ sub addtop100 {
     <input type=hidden name=ndxs_counter value="$form->{ndxs_counter}">
 
     <input class=submit type=submit name=action value="|
-    . $locale->text('choice') . qq|">|;
+    . $locale->text('choice') . qq|">
 
-  if ($form->{menubar}) {
-    require "$form->{path}/menu.pl";
-    &menubar;
-  }
-
-  print qq|
   </form>
 
 </body>
@@ -1514,7 +1495,7 @@ sub generate_report {
   }    #fi
 
   $callback =
-    "$form->{script}?action=generate_report&path=$form->{path}&login=$form->{login}&password=$form->{password}&searchitems=$form->{searchitems}&itemstatus=$form->{itemstatus}&bom=$form->{bom}&l_linetotal=$form->{l_linetotal}&title="
+    "$form->{script}?action=generate_report&login=$form->{login}&password=$form->{password}&searchitems=$form->{searchitems}&itemstatus=$form->{itemstatus}&bom=$form->{bom}&l_linetotal=$form->{l_linetotal}&title="
     . $form->escape($form->{title}, 1);
 
   # if we have a serialnumber limit search
@@ -1596,7 +1577,7 @@ sub generate_report {
     if ($form->{transdateto}) {
       $callback .= "&transdateto=$form->{transdateto}";
       $option   .= "\n<br>"
-        . $locale->text('To')
+        . $locale->text('To (time)')
         . "&nbsp;"
         . $locale->date(\%myconfig, $form->{transdateto}, 1);
     }
@@ -1855,38 +1836,35 @@ sub generate_report {
 /<br>/g;
 
     $column_data{partnumber} =
-      "<td align=$align><a href=$form->{script}?action=edit&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{partnumber}&nbsp;</a></td>";
-    $column_data{description} = "<td><a href=$form->{script}?action=edit&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{description}&nbsp;</a></td>";
+      "<td align=$align><a href=$form->{script}?action=edit&id=$ref->{id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{partnumber}&nbsp;</a></td>";
+    $column_data{description} = "<td><a href=$form->{script}?action=edit&id=$ref->{id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{description}&nbsp;</a></td>";
     $column_data{partsgroup}  = "<td>$ref->{partsgroup}&nbsp;</td>";
 
     $column_data{onhand} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{onhand}, '', "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{onhand})
       . "</td>";
     $column_data{sellprice} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{sellprice}, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{sellprice}, -2)
       . "</td>";
     $column_data{listprice} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{listprice}, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{listprice}, -2)
       . "</td>";
     $column_data{lastcost} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{lastcost}, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{lastcost}, -2)
       . "</td>";
 
     $column_data{linetotalsellprice} = "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{sellprice},
-                             2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{sellprice}, 2)
       . "</td>";
     $column_data{linetotallastcost} = "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{lastcost},
-                             2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{lastcost}, 2)
       . "</td>";
     $column_data{linetotallistprice} = "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{listprice},
-                             2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{listprice}, 2)
       . "</td>";
 
     if (!$ref->{assemblyitem}) {
@@ -1902,10 +1880,10 @@ sub generate_report {
 
     $column_data{rop} =
       "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{rop}, '', "&nbsp;") . "</td>";
+      . $form->format_amount(\%myconfig, $ref->{rop}) . "</td>";
     $column_data{weight} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{weight}, '', "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{weight})
       . "</td>";
     $column_data{unit}        = "<td>$ref->{unit}&nbsp;</td>";
     $column_data{bin}         = "<td>$ref->{bin}&nbsp;</td>";
@@ -1913,15 +1891,15 @@ sub generate_report {
 
     $column_data{invnumber} =
       ($ref->{module} ne 'oe')
-      ? "<td><a href=$ref->{module}.pl?action=edit&type=invoice&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{invnumber}</a></td>"
+      ? "<td><a href=$ref->{module}.pl?action=edit&type=invoice&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{invnumber}</a></td>"
       : "<td>$ref->{invnumber}</td>";
     $column_data{ordnumber} =
       ($ref->{module} eq 'oe')
-      ? "<td><a href=$ref->{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{ordnumber}</a></td>"
+      ? "<td><a href=$ref->{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{ordnumber}</a></td>"
       : "<td>$ref->{ordnumber}</td>";
     $column_data{quonumber} =
       ($ref->{module} eq 'oe' && !$ref->{ordnumber})
-      ? "<td><a href=$ref->{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{quonumber}</a></td>"
+      ? "<td><a href=$ref->{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{quonumber}</a></td>"
       : "<td>$ref->{quonumber}</td>";
 
     $column_data{name} = "<td>$ref->{name}</td>";
@@ -1943,7 +1921,7 @@ sub generate_report {
 
     $column_data{soldtotal} =
         "<td align=right>"
-      . $form->format_amount(\%myconfig, $ref->{soldtotal}, '', "&nbsp;")
+      . $form->format_amount(\%myconfig, $ref->{soldtotal})
       . "</td>";
 
     $column_data{deliverydate} = "<td>$ref->{deliverydate}</td>";
@@ -1968,15 +1946,15 @@ sub generate_report {
     map { $column_data{$_} = "<td>&nbsp;</td>" } @column_index;
     $column_data{linetotalsellprice} =
         "<th class=listtotal align=right>"
-      . $form->format_amount(\%myconfig, $totalsellprice, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $totalsellprice, 2)
       . "</th>";
     $column_data{linetotallastcost} =
         "<th class=listtotal align=right>"
-      . $form->format_amount(\%myconfig, $totallastcost, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $totallastcost, 2)
       . "</th>";
     $column_data{linetotallistprice} =
         "<th class=listtotal align=right>"
-      . $form->format_amount(\%myconfig, $totallistprice, 2, "&nbsp;")
+      . $form->format_amount(\%myconfig, $totallistprice, 2)
       . "</th>";
 
     print "<tr class=listtotal>";
@@ -2003,20 +1981,13 @@ sub generate_report {
 
 <input type=hidden name=item value=$form->{searchitems}>
 
-<input type=hidden name=path value=$form->{path}>
 <input type=hidden name=login value=$form->{login}>
 <input type=hidden name=password value=$form->{password}>|;
 
   print qq|
   <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>
@@ -2034,20 +2005,20 @@ sub parts_subtotal {
 
   $column_data{onhand} =
       "<th class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotalonhand, '', "&nbsp;")
+    . $form->format_amount(\%myconfig, $subtotalonhand)
     . "</th>";
 
   $column_data{linetotalsellprice} =
       "<th class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotalsellprice, 2, "&nbsp;")
+    . $form->format_amount(\%myconfig, $subtotalsellprice, 2)
     . "</th>";
   $column_data{linetotallistprice} =
       "<th class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotallistprice, 2, "&nbsp;")
+    . $form->format_amount(\%myconfig, $subtotallistprice, 2)
     . "</th>";
   $column_data{linetotallastcost} =
       "<th class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotallastcost, 2, "&nbsp;")
+    . $form->format_amount(\%myconfig, $subtotallastcost, 2)
     . "</th>";
 
   $subtotalonhand    = 0;
@@ -2068,9 +2039,13 @@ sub parts_subtotal {
 
 sub edit {
   $lxdebug->enter_sub();
-
+  # show history button
+  $form->{javascript} = qq|<script type="text/javascript" src="js/show_history.js"></script>|;
+  #/show hhistory button
   IC->get_part(\%myconfig, \%$form);
 
+  $form->{"original_partnumber"} = $form->{"partnumber"};
+
   $form->{title} = $locale->text('Edit ' . ucfirst $form->{item});
 
   &link_part;
@@ -2085,8 +2060,8 @@ sub link_part {
   IC->create_links("IC", \%myconfig, \%$form);
 
   # currencies
-  map { $form->{selectcurrency} .= "<option>$_\n" } split /:/,
-    $form->{currencies};
+  map({ $form->{selectcurrency} .= "<option>$_\n" }
+      split(/:/, $form->{currencies}));
 
   # parts and assemblies have the same links
   $item = $form->{item};
@@ -2174,31 +2149,8 @@ sub link_part {
 sub form_header {
   $lxdebug->enter_sub();
 
-  my $dec = '';
-
-  #decimalplaces for listprice
-  ($dec) = ($form->{listprice} =~ /\.(\d+)/);
-  $dec = length $dec;
-  my $decimalplaces = ($dec == 2) ? $dec : 2;
-  $form->{listprice} =
-    $form->format_amount(\%myconfig, $form->{listprice}, $decimalplaces);
-
-  #decimalplaces for sellprice and gv
-  ($dec) = ($form->{sellprice} =~ /\.(\d+)/);
-  $dec = length $dec;
-  my $decimalplaces = ($dec == 2) ? $dec : 2;
-
-  map {
-    $form->{$_} =
-      $form->format_amount(\%myconfig, $form->{$_}, $decimalplaces)
-  } qw(sellprice gv);
-
-  ($dec) = ($form->{lastcost} =~ /\.(\d+)/);
-  $dec = length $dec;
-  my $decimalplaces = ($dec == 2) ? $dec : 2;
-
-  $form->{lastcost} =
-    $form->format_amount(\%myconfig, $form->{lastcost}, $decimalplaces);
+  map({ $form->{$_} = $form->format_amount(\%myconfig, $form->{$_}, -2) }
+      qw(sellprice listprice lastcost gv));
 
   map { $form->{$_} = $form->format_amount(\%myconfig, $form->{$_}) }
     qw(weight rop stock);
@@ -2222,7 +2174,7 @@ sub form_header {
   }
 
   $notes =
-    qq|<textarea name=notes rows=$rows cols=50 wrap=soft>$form->{notes}</textarea>|;
+    qq|<textarea name=notes rows=$rows cols=45 wrap=soft>$form->{notes}</textarea>|;
   if (($rows = $form->numtextrows($form->{description}, 40)) > 1) {
     $description =
       qq|<textarea name="description" rows=$rows cols=40 wrap=soft>$form->{description}</textarea>|;
@@ -2231,6 +2183,8 @@ sub form_header {
       qq|<input name=description size=40 value="$form->{description}">|;
   }
 
+  $ean =  qq|<input name=ean size=40 value="$form->{ean}">|;
+
   foreach $item (split / /, $form->{taxaccounts}) {
     $form->{"IC_tax_$item"} = ($form->{"IC_tax_$item"}) ? "checked" : "";
   }
@@ -2332,11 +2286,6 @@ sub form_header {
                      <td>
                        <input name=weight size=10 value=$form->{weight}>
                      </td>
-                     <th>
-                       &nbsp;
-                       $form->{weightunit}
-                       <input type=hidden name=weightunit value=$form->{weightunit}>
-                     </th>
                    </tr>
                  </table>
                </td>
@@ -2367,11 +2316,6 @@ sub form_header {
                        &nbsp;$form->{weight}
                        <input type=hidden name=weight value=$form->{weight}>
                      </td>
-                     <th>
-                       &nbsp;
-                       $form->{weightunit}
-                       <input type=hidden name=weightunit value=$form->{weightunit}>
-                     </th>
                    </tr>
                  </table>
                </td>
@@ -2449,7 +2393,7 @@ sub form_header {
              </tr>
               <tr>
                <th align="right" nowrap="true">|
-      . $locale->text('Geschäftsvolumen') . qq|</th>
+      . $locale->text('Business Volume') . qq|</th>
                <td><input name=gv size=10 value=$form->{gv}></td>
              </tr>
 |;
@@ -2463,7 +2407,7 @@ sub form_header {
 |;
 
   $formel =
-    qq|<ilayer><layer  onmouseover="this.T_STICKY=true;this.T_STATIC=true;return escape('| . $locale->text('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>') . qq|')"><textarea name=formel rows=4 cols=40 wrap=soft>$form->{formel}</textarea></layer><ilayer>|;
+    qq|<ilayer><layer  onmouseover="this.T_STICKY=true;this.T_STATIC=true;return escape('| . $locale->text('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>') . qq|')"><textarea name=formel rows=4 cols=30 wrap=soft>$form->{formel}</textarea></layer><ilayer>|;
     $imagelinks = qq|
   <tr>
     <td>
@@ -2511,7 +2455,7 @@ sub form_header {
   # type=submit $locale->text('Edit Service')
   # type=submit $locale->text('Edit Assembly')
   # use JavaScript Calendar or not
-  $form->{jsscript} = $jscalendar;
+  $form->{jsscript} = 1;
   $jsscript = "";
   if ($form->{jsscript}) {
 
@@ -2561,6 +2505,7 @@ sub form_header {
 <input name=rowcount type=hidden value=$form->{rowcount}>
 <input name=eur type=hidden value=$eur>
 <input name=language_values type=hidden value="$form->{language_values}">
+<input name="original_partnumber" type="hidden" value="| . $form->quote($form->{"original_partnumber"}) . qq|">
 
 <table width="100%">
   <tr>
@@ -2613,9 +2558,16 @@ sub form_header {
                 </td>
               </tr>
               <tr>
-                <td colspan=2>
+                <th align="left"></th>
+                <th align="left">| . $locale->text('EAN-Code') . qq|</th>
+              </tr>
+              <tr>
+                <td>
                   <button type="button" onclick="parts_language_selection_window('language_values')">| . $locale->text('Set Language Values') . qq|</button>
                 </td>
+               <td>
+                 $ean  
+               </td>
               </tr>
               <tr>
               <td colspan=2>
@@ -2692,7 +2644,6 @@ sub form_footer {
   }
 
   print qq|
-      <input type=hidden name=path value=$form->{path}>
       <input type=hidden name=login value=$form->{login}>
       <input type=hidden name=password value=$form->{password}>
       <input type=hidden name=callback value="$form->{callback}">
@@ -2749,14 +2700,24 @@ sub form_footer {
 
   if (!$form->{previousform}) {
     if ($form->{menubar}) {
-      require "$form->{path}/menu.pl";
+      require "bin/mozilla/menu.pl";
       &menubar;
     }
   }
-
+# button for saving history
+  if($form->{id} ne "") {
+       print qq|
+               <input type=button class=submit onclick=set_history_window(|
+               . $form->{id} 
+               . qq|); name=history id=history value=|
+               . $locale->text('history') 
+               . qq|>|;
+  }
+# /button for saving history
   print qq|
 
 </form>
+
 <script type="text/javascript" src="js/wz_tooltip.js"></script>
 
 </body>
@@ -2920,7 +2881,7 @@ sub assembly_row {
 
       } else {
         $href =
-          qq|$form->{script}?action=edit&id=$form->{"id_$i"}&path=$form->{path}&login=$form->{login}&password=$form->{password}&rowcount=$i&previousform=$previousform|;
+          qq|$form->{script}?action=edit&id=$form->{"id_$i"}&login=$form->{login}&password=$form->{password}&rowcount=$i&previousform=$previousform|;
         $column_data{partnumber} =
           qq|<td><input type=hidden name="partnumber_$i" value="$form->{"partnumber_$i"}"><a href=$href>$form->{"partnumber_$i"}</a></td>|;
         $column_data{runningnumber} =
@@ -3022,8 +2983,8 @@ sub update {
   }
 
   if ($form->{item} eq 'service') {
-    map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
-      qw(sellprice listprice);
+    map({ $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
+        qw(sellprice listprice lastcost));
     &form_header;
     &price_row;
     &form_footer;
@@ -3046,7 +3007,7 @@ sub save {
       $locale->text(
         "Inventory quantity must be zero before you can set this $form->{item} obsolete!"
       ))
-      if ($form->{onhand});
+      if ($form->{onhand} * 1);
   }
 
   if (!$form->{buchungsgruppen_id}) {
@@ -3072,6 +3033,13 @@ sub save {
   if ($rc == 3) {
     $form->error($locale->text('Partnumber not unique!'));
   }
+  # saving the history
+  if(!exists $form->{addition}) {
+    $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
+       $form->{addition} = "SAVED";
+       $form->save_history($form->dbconnect(\%myconfig));
+  }
+  # /saving the history
   $parts_id = $form->{id};
 
   # load previous variables
@@ -3188,16 +3156,31 @@ sub save {
 sub save_as_new {
   $lxdebug->enter_sub();
 
+  # saving the history
+  if(!exists $form->{addition}) {
+    $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
+       $form->{addition} = "SAVED AS NEW";
+       $form->save_history($form->dbconnect(\%myconfig));
+  }
+  # /saving the history
   $form->{id} = 0;
-  $form->{partnumber} = "";
+  if ($form->{"original_partnumber"} &&
+      ($form->{"partnumber"} eq $form->{"original_partnumber"})) {
+    $form->{partnumber} = "";
+  }
   &save;
-
   $lxdebug->leave_sub();
 }
 
 sub delete {
   $lxdebug->enter_sub();
-
+  # saving the history
+  if(!exists $form->{addition}) {
+    $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
+       $form->{addition} = "DELETED";
+       $form->save_history($form->dbconnect(\%myconfig));
+  }
+  # /saving the history
   $rc = IC->delete(\%myconfig, \%$form);
 
   # redirect
@@ -3207,181 +3190,6 @@ sub delete {
   $lxdebug->leave_sub();
 }
 
-sub stock_assembly {
-  $lxdebug->enter_sub();
-
-  $form->{title} = $locale->text('Stock Assembly');
-
-  $form->header;
-
-  print qq|
-<body>
-
-<form method=post action=$form->{script}>
-
-<table width="100%">
-  <tr>
-    <th class=listtop>$form->{title}</th>
-  </tr>
-  <tr height="5"></tr>
-  <tr valign=top>
-    <td>
-      <table>
-        <tr>
-          <th align="right" nowrap="true">|
-    . $locale->text('Part Number') . qq|</th>
-          <td><input name=partnumber size=20></td>
-          <td>&nbsp;</td>
-        </tr>
-        <tr>
-          <th align="right" nowrap="true">|
-    . $locale->text('Part Description') . qq|</th>
-          <td><input name=description size=40></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-  <tr><td><hr size=3 noshade></td></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}>
-
-<input type=hidden name=nextsub value=list_assemblies>
-
-<br>
-<input class=submit type=submit name=action value="|
-    . $locale->text('Continue') . qq|">
-</form>
-
-</body>
-</html>
-|;
-
-  $lxdebug->leave_sub();
-}
-
-sub list_assemblies {
-  $lxdebug->enter_sub();
-
-  IC->retrieve_assemblies(\%myconfig, \%$form);
-
-  $column_header{partnumber} =
-    qq|<th class=listheading>| . $locale->text('Part Number') . qq|</th>|;
-  $column_header{description} =
-    qq|<th class=listheading>| . $locale->text('Part Description') . qq|</th>|;
-  $column_header{bin} =
-    qq|<th class=listheading>| . $locale->text('Bin') . qq|</th>|;
-  $column_header{onhand} =
-    qq|<th class=listheading>| . $locale->text('Qty') . qq|</th>|;
-  $column_header{rop} =
-    qq|<th class=listheading>| . $locale->text('ROP') . qq|</th>|;
-  $column_header{stock} =
-    qq|<th class=listheading>| . $locale->text('Add') . qq|</th>|;
-
-  @column_index = (qw(partnumber description bin onhand rop stock));
-
-  $form->{title} = $locale->text('Stock Assembly');
-
-  $form->{callback} =
-    "$form->{script}?action=stock_assembly&path=$form->{path}&login=$form->{login}&password=$form->{password}";
-
-  $form->header;
-
-  $colspan = $#column_index + 1;
-
-  print qq|
-<body>
-
-<form method=post action=$form->{script}>
-
-<table width=100%>
-  <tr>
-    <th class=listtop colspan=$colspan>$form->{title}</th>
-  </tr>
-  <tr size=5></tr>
-  <tr class=listheading>|;
-
-  map { print "\n$column_header{$_}" } @column_index;
-
-  print qq|
-  </tr>
-|;
-
-  $i = 1;
-  foreach $ref (@{ $form->{assembly_items} }) {
-
-    map { $ref->{$_} =~ s/\"/&quot;/g } qw(partnumber description);
-
-    $column_data{partnumber}  = qq|<td width=20%>$ref->{partnumber}</td>|;
-    $column_data{description} =
-      qq|<td width=50%>$ref->{description}&nbsp;</td>|;
-    $column_data{bin}    = qq|<td>$ref->{bin}&nbsp;</td>|;
-    $column_data{onhand} =
-        qq|<td align=right>|
-      . $form->format_amount(\%myconfig, $ref->{onhand}, '', "&nbsp;")
-      . qq|</td>|;
-    $column_data{rop} =
-        qq|<td align=right>|
-      . $form->format_amount(\%myconfig, $ref->{rop}, '', "&nbsp;")
-      . qq|</td>|;
-    $column_data{stock} = qq|<td width=10%><input name="qty_$i" size=10></td>|;
-
-    $j++;
-    $j %= 2;
-    print
-      qq|<tr class=listrow$j><input name="id_$i" type=hidden value=$ref->{id}>\n|;
-
-    map { print "\n$column_data{$_}" } @column_index;
-
-    print qq|
-    </tr>
-|;
-
-    $i++;
-
-  }
-
-  $i--;
-  print qq|
-  <tr>
-    <td colspan=6><hr size=3 noshade>
-  </tr>
-</table>
-<input name=rowcount type=hidden value="$i">
-
-<input type=hidden name=path value=$form->{path}>
-<input type=hidden name=login value=$form->{login}>
-<input type=hidden name=password value=$form->{password}>
-
-<input name=callback type=hidden value="$form->{callback}">
-
-<input type=hidden name=nextsub value=restock_assemblies>
-
-<br>
-<input class=submit type=submit name=action value="|
-    . $locale->text('Continue') . qq|">
-
-</form>
-
-</body>
-</html>
-|;
-
-  $lxdebug->leave_sub();
-}
-
-sub restock_assemblies {
-  $lxdebug->enter_sub();
-
-  $form->redirect($locale->text('Assemblies restocked!'))
-    if (IC->restock_assemblies(\%myconfig, \%$form));
-  $form->error($locale->text('Cannot stock assemblies!'));
-
-  $lxdebug->leave_sub();
-}
-
 sub price_row {
   $lxdebug->enter_sub();
 
@@ -3415,7 +3223,6 @@ sub price_row {
   $lxdebug->leave_sub();
 }
 
-
 sub parts_language_selection {
   $lxdebug->enter_sub();
 
@@ -3425,7 +3232,7 @@ sub parts_language_selection {
 
   my $callback = "$form->{script}?action=parts_language_selection&";
   map({ $callback .= "$_=" . $form->escape($form->{$_}) . "&" }
-      (qw(login path password name input_name), grep({ /^[fl]_/ } keys %$form)));
+      (qw(login password name input_name), grep({ /^[fl]_/ } keys %$form)));
 
   my @header_sort = qw(name longdescription);
   my %header_title = ( "name" => $locale->text("Name"),
@@ -3448,4 +3255,4 @@ sub parts_language_selection {
   $lxdebug->leave_sub();
 }
 
-sub continue { &{ $form->{nextsub} } }
+sub continue { call_sub($form->{"nextsub"}); }