X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/7e2f7d89d77305ba071fe4f09bc158b711b00738..d6369b1f946980f0e22fc18da3fc54a14501b3c5:/SL/IC.pm diff --git a/SL/IC.pm b/SL/IC.pm index dd4790943..5314d4b8e 100644 --- a/SL/IC.pm +++ b/SL/IC.pm @@ -35,6 +35,7 @@ package IC; use Data::Dumper; +use List::MoreUtils qw(all); use YAML; use SL::DBUtils; @@ -80,10 +81,11 @@ sub get_part { $query = qq|SELECT p.id, p.partnumber, p.description, p.sellprice, p.lastcost, p.weight, a.qty, a.bom, p.unit, - pg.partsgroup + pg.partsgroup, p.price_factor_id, pfac.factor AS price_factor FROM parts p JOIN assembly a ON (a.parts_id = p.id) LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) + LEFT JOIN price_factors pfac ON pfac.id = p.price_factor_id WHERE (a.id = ?) ORDER BY $oid{$myconfig->{dbdriver}}|; $sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id})); @@ -307,6 +309,8 @@ sub save { my ($query, $sth); + my $priceupdate = ', priceupdate = current_date'; + if ($form->{id}) { # get old price @@ -337,6 +341,11 @@ sub save { # delete translations do_query($form, $dbh, qq|DELETE FROM translation WHERE parts_id = ?|, conv_i($form->{id})); + # Check whether or not the prices have changed. If they haven't + # then 'priceupdate' should not be updated. + my $previous_values = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM parts WHERE id = ?|, conv_i($form->{id})) || {}; + $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) { @@ -392,7 +401,6 @@ sub save { sellprice = ?, lastcost = ?, weight = ?, - priceupdate = ?, unit = ?, notes = ?, formel = ?, @@ -414,6 +422,7 @@ sub save { microfiche = ?, partsgroup_id = ?, price_factor_id = ? + $priceupdate WHERE id = ?|; @values = ($form->{partnumber}, $form->{description}, @@ -423,7 +432,6 @@ sub save { $form->{sellprice}, $form->{lastcost}, $form->{weight}, - conv_date($form->{priceupdate}), $form->{unit}, $form->{notes}, $form->{formel}, @@ -690,9 +698,11 @@ sub assembly_item { my $dbh = $form->dbconnect($myconfig); my $query = - qq|SELECT p.id, p.partnumber, p.description, p.sellprice, p.weight, p.onhand, p.unit, pg.partsgroup + qq|SELECT p.id, p.partnumber, p.description, p.sellprice, p.weight, p.onhand, p.unit, pg.partsgroup, + p.price_factor_id, pfac.factor AS price_factor FROM parts p LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) + LEFT JOIN price_factors pfac ON pfac.id = p.price_factor_id WHERE $where|; $form->{item_list} = selectall_hashref_query($form, $dbh, $query, @values); @@ -914,6 +924,7 @@ sub all_parts { if ($form->{l_soldtotal}) { push @where_tokens, 'ioi.qty >= 0'; push @group_tokens, @select_tokens; + map { s/.*\sAS\s+//si } @group_tokens; push @select_tokens, 'SUM(ioi.qty)'; } @@ -927,10 +938,13 @@ sub all_parts { ordnumber => 'apoe.', make => 'mm.', quonumber => 'apoe.', model => 'mm.', invnumber => 'apoe.', partsgroup => 'pg.', + lastcost => ' ', factor => 'pfac.', 'SUM(ioi.qty)' => ' ', ); + $table_prefix{$q_assembly_lastcost} = ' '; + my %renamed_columns = ( 'factor' => 'price_factor', 'SUM(ioi.qty)' => 'soldtotal', @@ -939,7 +953,7 @@ sub all_parts { map { $table_prefix{$_} = 'ioi.' } qw(description serialnumber qty unit) if $joins_needed{invoice_oi}; map { $renamed_columns{$_} = ' AS ' . $renamed_columns{$_} } keys %renamed_columns; - my $select_clause = join ', ', map { ((substr($_, 0, 1) eq '(') ? '' : $table_prefix{$_} || "p.") . $_ . $renamed_columns{$_} } @select_tokens; + my $select_clause = join ', ', map { ($table_prefix{$_} || "p.") . $_ . $renamed_columns{$_} } @select_tokens; my $join_clause = join ' ', @joins{ grep $joins_needed{$_}, @join_order }; my $where_clause = join ' AND ', map { "($_)" } @where_tokens; my $group_clause = ' GROUP BY ' . join ', ', map { ($table_prefix{$_} || "p.") . $_ } @group_tokens if scalar @group_tokens;