X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIC.pm;h=36520b97dab608dc199210c50ae4efcba6864fa9;hb=a8b18c65bfd47c845e641fb0fff9587f4122bf9d;hp=f6ceaceb105b6f545116af8d969b5ec7ba538608;hpb=d109d6fe416ac863a35c8b932b593a244a38fbf1;p=kivitendo-erp.git diff --git a/SL/IC.pm b/SL/IC.pm index f6ceaceb1..36520b97d 100644 --- a/SL/IC.pm +++ b/SL/IC.pm @@ -419,10 +419,9 @@ sub save { $query = qq|INSERT INTO prices (parts_id, pricegroup_id, price) VALUES(?, ?, ?)|; $sth = prepare_query($form, $dbh, $query); - # insert price records only if different to sellprice for my $i (1 .. $form->{price_rows}) { my $price = $form->parse_amount($myconfig, $form->{"price_$i"}); - next unless $price && ($price != $form->{sellprice}); + next unless $price; @values = (conv_i($form->{id}), conv_i($form->{"pricegroup_id_$i"}), $price); do_statement($form, $sth, $query, @values); @@ -527,6 +526,20 @@ sub save { variables => $form, save_validity => 1); + # Delete saved custom variable values for configs that have been + # marked invalid for this part. + $query = <{id}) x 2); + # commit my $rc = $dbh->commit; @@ -731,7 +744,7 @@ sub all_parts { my @apoe_filters = qw(transdate); my @like_filters = (@simple_filters, @invoice_oi_filters); my @all_columns = (@simple_filters, @makemodel_filters, @apoe_filters, @project_filters, qw(serialnumber)); - my @simple_l_switches = (@all_columns, qw(notes listprice sellprice lastcost priceupdate weight unit rop image)); + my @simple_l_switches = (@all_columns, qw(notes listprice sellprice lastcost priceupdate weight unit rop image shop insertdate)); my @oe_flags = qw(bought sold onorder ordered rfq quoted); my @qsooqr_flags = qw(invnumber ordnumber quonumber trans_id name module qty); my @deliverydate_flags = qw(deliverydate); @@ -807,10 +820,12 @@ sub all_parts { 'ioi.id' => 'ioi_id', 'ioi.ioi' => 'ioi', 'projectdescription' => 'projectdescription', + 'insertdate' => 'insertdate', ); my %real_column = ( projectdescription => 'description', + insertdate => 'itime::DATE', ); if (($form->{searchitems} eq 'assembly') && $form->{l_lastcost}) { @@ -851,12 +866,37 @@ sub all_parts { } } + # special case insertdate + if (grep { $form->{$_} } qw(insertdatefrom insertdateto)) { + $form->{"l_insertdate"} = 1; + push @select_tokens, 'insertdate'; + + my $token_builder = $make_token_builder->(); + my $token = $token_builder->('insertdate'); + + for (qw(insertdatefrom insertdateto)) { + next unless $form->{$_}; + push @where_tokens, sprintf "$token %s ?", /from$/ ? '>=' : '<='; + push @bind_vars, $form->{$_}; + } + } + if ($form->{"partsgroup_id"}) { $form->{"l_partsgroup"} = '1'; # show the column push @where_tokens, "pg.id = ?"; push @bind_vars, $form->{"partsgroup_id"}; } + if ($form->{shop} ne '') { + $form->{l_shop} = '1'; # show the column + if ($form->{shop} eq '0' || $form->{shop} eq 'f') { + push @where_tokens, 'NOT p.shop'; + $form->{shop} = 'f'; + } else { + push @where_tokens, 'p.shop'; + } + } + foreach (@like_filters) { next unless $form->{$_}; $form->{"l_$_"} = '1'; # show the column @@ -974,7 +1014,7 @@ sub all_parts { my $token_builder = $make_token_builder->(\%joins_needed); - my @sort_cols = (@simple_filters, qw(id priceupdate onhand invnumber ordnumber quonumber name serialnumber soldtotal deliverydate)); + my @sort_cols = (@simple_filters, qw(id priceupdate onhand invnumber ordnumber quonumber name serialnumber soldtotal deliverydate insertdate shop)); $form->{sort} = 'id' unless grep { $form->{"l_$_"} } grep { $form->{sort} eq $_ } @sort_cols; # sort by id if unknown or invisible column my $sort_order = ($form->{revers} ? ' DESC' : ' ASC'); my $order_clause = " ORDER BY " . $token_builder->($form->{sort}) . ($form->{revers} ? ' DESC' : ' ASC'); @@ -1032,7 +1072,7 @@ sub all_parts { if ($form->{searchitems} eq 'assembly' && $form->{bom}) { $query = qq|SELECT p.id, p.partnumber, p.description, a.qty AS onhand, - p.unit, p.notes, + p.unit, p.notes, p.itime::DATE as insertdate, p.sellprice, p.listprice, p.lastcost, p.rop, p.weight, p.priceupdate, p.image, p.drawing, p.microfiche, @@ -1081,7 +1121,7 @@ SQL $main::lxdebug->leave_sub(); - return wantarray ? @{ $form->{parts} } : $form->{parts}; + return @{ $form->{parts} }; } sub _create_filter_for_priceupdate { @@ -1673,7 +1713,7 @@ sub prepare_parts_for_printing { $sth->finish(); - my @columns = qw(ean image microfiche drawing weight); + my @columns = qw(ean image microfiche drawing); $query = qq|SELECT id, | . join(', ', @columns) . qq| FROM parts @@ -1681,7 +1721,8 @@ sub prepare_parts_for_printing { my %data = selectall_as_map($form, $dbh, $query, 'id', \@columns, @part_ids); - map { $form->{TEMPLATE_ARRAYS}{$_} = [] } (qw(make model), @columns); + my %template_arrays; + map { $template_arrays{$_} = [] } (qw(make model), @columns); foreach my $i (1 .. $rowcount) { my $id = $form->{"${prefix}${i}"}; @@ -1689,16 +1730,16 @@ sub prepare_parts_for_printing { next if (!$id); foreach (@columns) { - push @{ $form->{TEMPLATE_ARRAYS}{$_} }, $data{$id}->{$_}; + push @{ $template_arrays{$_} }, $data{$id}->{$_}; } - push @{ $form->{TEMPLATE_ARRAYS}{make} }, []; - push @{ $form->{TEMPLATE_ARRAYS}{model} }, []; + push @{ $template_arrays{make} }, []; + push @{ $template_arrays{model} }, []; next if (!$makemodel{$id}); foreach my $ref (@{ $makemodel{$id} }) { - map { push @{ $form->{TEMPLATE_ARRAYS}{$_}->[-1] }, $ref->{$_} } qw(make model); + map { push @{ $template_arrays{$_}->[-1] }, $ref->{$_} } qw(make model); } } @@ -1709,9 +1750,10 @@ sub prepare_parts_for_printing { my $id = $form->{"${prefix}${i}"}; next unless $id; - push @{ $form->{TEMPLATE_ARRAYS}{part_type} }, $parts_by_id{$id}->type; + push @{ $template_arrays{part_type} }, $parts_by_id{$id}->type; } + return %template_arrays; $main::lxdebug->leave_sub(); }