- $query = qq|UPDATE parts SET
- partnumber = '$form->{partnumber}',
- description = '$form->{description}',
- makemodel = '$form->{makemodel}',
- alternate = '$form->{alternate}',
- assembly = '$form->{assembly}',
- listprice = $form->{listprice},
- sellprice = $form->{sellprice},
- lastcost = $form->{lastcost},
- weight = $form->{weight},
- priceupdate = $form->{priceupdate},
- unit = '$form->{unit}',
- notes = '$form->{notes}',
- rop = $form->{rop},
- bin = '$form->{bin}',
- inventory_accno_id = (SELECT c.id FROM chart c
- WHERE c.accno = '$form->{inventory_accno}'),
- income_accno_id = (SELECT c.id FROM chart c
- WHERE c.accno = '$form->{income_accno}'),
- expense_accno_id = (SELECT c.id FROM chart c
- WHERE c.accno = '$form->{expense_accno}'),
- obsolete = '$form->{obsolete}',
- image = '$form->{image}',
- drawing = '$form->{drawing}',
- shop = '$form->{shop}',
- ve = '$form->{ve}',
- gv = '$form->{gv}',
- microfiche = '$form->{microfiche}',
- partsgroup_id = $partsgroup_id
- WHERE id = $form->{id}|;
- $dbh->do($query) || $form->dberror($query);
+ my ($subq_inventory, $subq_expense, $subq_income);
+ if ($form->{"item"} eq "part") {
+ $subq_inventory =
+ qq|(SELECT bg.inventory_accno_id
+ FROM buchungsgruppen bg
+ WHERE bg.id = | . conv_i($form->{"buchungsgruppen_id"}, 'NULL') . qq|)|;
+ } else {
+ $subq_inventory = "NULL";
+ }
+
+ if ($form->{"item"} ne "assembly") {
+ $subq_expense =
+ qq|(SELECT bg.expense_accno_id_0
+ FROM buchungsgruppen bg
+ WHERE bg.id = | . conv_i($form->{"buchungsgruppen_id"}, 'NULL') . qq|)|;
+ } else {
+ $subq_expense = "NULL";
+ }
+
+ $query =
+ qq|UPDATE parts SET
+ partnumber = ?,
+ description = ?,
+ makemodel = ?,
+ alternate = 'f',
+ assembly = ?,
+ listprice = ?,
+ sellprice = ?,
+ lastcost = ?,
+ weight = ?,
+ unit = ?,
+ notes = ?,
+ formel = ?,
+ rop = ?,
+ bin = ?,
+ buchungsgruppen_id = ?,
+ payment_id = ?,
+ inventory_accno_id = $subq_inventory,
+ income_accno_id = (SELECT bg.income_accno_id_0 FROM buchungsgruppen bg WHERE bg.id = ?),
+ expense_accno_id = $subq_expense,
+ obsolete = ?,
+ image = ?,
+ drawing = ?,
+ shop = ?,
+ ve = ?,
+ gv = ?,
+ ean = ?,
+ not_discountable = ?,
+ microfiche = ?,
+ partsgroup_id = ?,
+ price_factor_id = ?
+ $priceupdate
+ WHERE id = ?|;
+ @values = ($form->{partnumber},
+ $form->{description},
+ $makemodel ? 't' : 'f',
+ $form->{assembly} ? 't' : 'f',
+ $form->{listprice},
+ $form->{sellprice},
+ $form->{lastcost},
+ $form->{weight},
+ $form->{unit},
+ $form->{notes},
+ $form->{formel},
+ $form->{rop},
+ $form->{bin},
+ conv_i($form->{buchungsgruppen_id}),
+ conv_i($form->{payment_id}),
+ conv_i($form->{buchungsgruppen_id}),
+ $form->{obsolete} ? 't' : 'f',
+ $form->{image},
+ $form->{drawing},
+ $form->{shop} ? 't' : 'f',
+ conv_i($form->{ve}),
+ conv_i($form->{gv}),
+ $form->{ean},
+ $form->{not_discountable} ? 't' : 'f',
+ $form->{microfiche},
+ conv_i($partsgroup_id),
+ conv_i($form->{price_factor_id}),
+ conv_i($form->{id})
+ );
+ do_query($form, $dbh, $query, @values);
+
+ # delete translation records
+ do_query($form, $dbh, qq|DELETE FROM translation WHERE parts_id = ?|, conv_i($form->{id}));
+
+ if ($form->{language_values} ne "") {
+ foreach $item (split(/---\+\+\+---/, $form->{language_values})) {
+ my ($language_id, $translation, $longdescription) = split(/--\+\+--/, $item);
+ if ($translation ne "") {
+ $query = qq|INSERT into translation (parts_id, language_id, translation, longdescription)
+ VALUES ( ?, ?, ?, ? )|;
+ @values = (conv_i($form->{id}), conv_i($language_id), $translation, $longdescription);
+ do_query($form, $dbh, $query, @values);
+ }
+ }
+ }
+
+ # delete price records
+ do_query($form, $dbh, qq|DELETE FROM prices WHERE parts_id = ?|, conv_i($form->{id}));
+
+ # insert price records only if different to sellprice
+ for my $i (1 .. $form->{price_rows}) {
+ my $price = $form->parse_amount($myconfig, $form->{"price_$i"});
+ if ($price == 0) {
+ $form->{"price_$i"} = $form->{sellprice};
+ }
+ if (
+ ( $price
+ || $form->{"klass_$i"}
+ || $form->{"pricegroup_id_$i"})
+ and $price != $form->{sellprice}
+ ) {
+ #$klass = $form->parse_amount($myconfig, $form->{"klass_$i"});
+ $query = qq|INSERT INTO prices (parts_id, pricegroup_id, price) | .
+ qq|VALUES(?, ?, ?)|;
+ @values = (conv_i($form->{id}), conv_i($form->{"pricegroup_id_$i"}), $price);
+ do_query($form, $dbh, $query, @values);
+ }
+ }