package IC;
use Data::Dumper;
+use List::MoreUtils qw(all);
use YAML;
use SL::DBUtils;
$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}));
my ($query, $sth);
+ my $priceupdate = ', priceupdate = current_date';
+
if ($form->{id}) {
# get old price
# 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) {
sellprice = ?,
lastcost = ?,
weight = ?,
- priceupdate = ?,
unit = ?,
notes = ?,
formel = ?,
microfiche = ?,
partsgroup_id = ?,
price_factor_id = ?
+ $priceupdate
WHERE id = ?|;
@values = ($form->{partnumber},
$form->{description},
$form->{sellprice},
$form->{lastcost},
$form->{weight},
- conv_date($form->{priceupdate}),
$form->{unit},
$form->{notes},
$form->{formel},
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);
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)';
}
ordnumber => 'apoe.', make => 'mm.',
quonumber => 'apoe.', model => 'mm.',
invnumber => 'apoe.', partsgroup => 'pg.',
+ lastcost => ' ',
factor => 'pfac.',
'SUM(ioi.qty)' => ' ',
);