X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIC.pm;h=8dc673bca55e5a64eafeb2886ecf8f03dc2ca56d;hb=35948584de818b00974b9dab65682c4d5ceba67f;hp=b6007d9dce3e3aff60068730dd9e28b9b2466789;hpb=2bfb8a5019d8b97fbbe2efb83da959eb66f458f1;p=kivitendo-erp.git diff --git a/SL/IC.pm b/SL/IC.pm index b6007d9dc..8dc673bca 100644 --- a/SL/IC.pm +++ b/SL/IC.pm @@ -40,6 +40,7 @@ use YAML; use SL::CVar; use SL::DBUtils; +use SL::TransNumber; use strict; @@ -311,6 +312,11 @@ sub save { my $priceupdate = ', priceupdate = current_date'; if ($form->{id}) { + my $trans_number = SL::TransNumber->new(type => $form->{item}, dbh => $dbh, number => $form->{partnumber}, id => $form->{id}); + if (!$trans_number->is_unique) { + $::lxdebug->leave_sub; + return 3; + } # get old price $query = qq|SELECT sellprice, weight FROM parts WHERE id = ?|; @@ -346,23 +352,19 @@ sub save { $priceupdate = '' if (all { $previous_values->{$_} == $form->{$_} } qw(sellprice lastcost listprice)); } else { - my ($count) = selectrow_query($form, $dbh, qq|SELECT COUNT(*) FROM parts WHERE partnumber = ?|, $form->{partnumber}); - if ($count) { - $main::lxdebug->leave_sub(); + my $trans_number = SL::TransNumber->new(type => $form->{item}, dbh => $dbh, number => $form->{partnumber}, save => 1); + + if ($form->{partnumber} && !$trans_number->is_unique) { + $::lxdebug->leave_sub; return 3; } + $form->{partnumber} ||= $trans_number->create_unique; + ($form->{id}) = selectrow_query($form, $dbh, qq|SELECT nextval('id')|); - do_query($form, $dbh, qq|INSERT INTO parts (id, partnumber, unit) VALUES (?, '', '')|, $form->{id}); + do_query($form, $dbh, qq|INSERT INTO parts (id, partnumber, unit) VALUES (?, ?, '')|, $form->{id}, $form->{partnumber}); $form->{orphaned} = 1; - if ($form->{partnumber} eq "" && $form->{"item"} eq "service") { - $form->{partnumber} = $form->update_defaults($myconfig, "servicenumber"); - } - if ($form->{partnumber} eq "" && $form->{"item"} ne "service") { - $form->{partnumber} = $form->update_defaults($myconfig, "articlenumber"); - } - } my $partsgroup_id = 0; @@ -502,7 +504,7 @@ sub save { if (($form->{"make_$i"}) || ($form->{"model_$i"})) { #hli $value = $form->parse_amount($myconfig, $form->{"lastcost_$i"}); - if ($value == $form->{"old_lastcost_$i"}) + if ($value == $form->parse_amount($myconfig, $form->{"old_lastcost_$i"})) { if ($form->{"lastupdate_$i"} eq "") { $lastupdate = 'now()'; @@ -1663,7 +1665,7 @@ sub prepare_parts_for_printing { } my $placeholders = join ', ', ('?') x scalar(@part_ids); - my $query = qq|SELECT mm.parts_id, mm.model, v.name AS make + my $query = qq|SELECT mm.parts_id, mm.model, mm.lastcost, v.name AS make FROM makemodel mm LEFT JOIN vendor v ON (mm.make = v.id) WHERE mm.parts_id IN ($placeholders)|;