- ($partsgroup, $partsgroup_id) = split /--/, $form->{partsgroup};
- }
-
- $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}',
- formel = '$form->{formel}',
- rop = $form->{rop},
- bin = '$form->{bin}',
- buchungsgruppen_id = '$form->{buchungsgruppen_id}',
- adr_id = '$form->{adr_id}',
- payment_id = '$form->{payment_id}',
- 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}',
- alu = '$form->{alu}',
- not_discountable = '$form->{not_discountable}',
- microfiche = '$form->{microfiche}',
- partsgroup_id = $partsgroup_id
- WHERE id = $form->{id}|;
- $dbh->do($query) || $form->dberror($query);
+ ($partsgroup, $partsgroup_id) = split(/--/, $form->{partsgroup});
+ }
+
+ 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 = ?,
+ priceupdate = ?,
+ 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 = ?
+ WHERE id = ?|;
+ @values = ($form->{partnumber},
+ $form->{description},
+ $makemodel ? 't' : 'f',
+ $form->{assembly} ? 't' : 'f',
+ $form->{listprice},
+ $form->{sellprice},
+ $form->{lastcost},
+ $form->{weight},
+ conv_date($form->{priceupdate}),
+ $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->{id})
+ );
+ do_query($form, $dbh, $query, @values);