-      $query = qq|INSERT INTO orderitems (|;
-      $query .= "id, " if $form->{"orderitems_id_$i"};
-      $query .= qq|trans_id, parts_id, description, longdescription, qty, base_qty, sellprice, discount,
-                  unit, reqdate, project_id, serialnumber, ship, pricegroup_id,
-                  ordnumber, transdate, cusordnumber, subtotal)
-                   VALUES (|;
-      $query .= qq|$form->{"orderitems_id_$i"},|
-        if $form->{"orderitems_id_$i"};
-      $query .= qq|$form->{id}, $form->{"id_$i"},
-                  '$form->{"description_$i"}', '$form->{"longdescription_$i"}', $form->{"qty_$i"}, $baseqty,
-                  $fxsellprice, $form->{"discount_$i"},
-                  '$form->{"unit_$i"}', $reqdate, | . conv_i($form->{"project_id_$i"}, 'NULL') . qq|,
-                  '$form->{"serialnumber_$i"}', $form->{"ship_$i"}, '$pricegroup_id',
-                  '$form->{"ordnumber_$i"}', '$form->{"transdate_$i"}', '$form->{"cusordnumber_$i"}', '$subtotal')|;
-      $dbh->do($query) || $form->dberror($query);
+      my $orderitems_id = $form->{"orderitems_id_$i"};
+      ($orderitems_id)  = selectfirst_array_query($form, $dbh, qq|SELECT nextval('orderitemsid')|) if (!$orderitems_id);
+
+      @values = ();
+      $query = qq|INSERT INTO orderitems (
+                    id, trans_id, parts_id, description, longdescription, qty, base_qty,
+                    sellprice, discount, unit, reqdate, project_id, serialnumber, ship,
+                    pricegroup_id, ordnumber, transdate, cusordnumber, subtotal,
+                    marge_percent, marge_total, lastcost, price_factor_id, price_factor, marge_price_factor)
+                  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
+                          (SELECT factor FROM price_factors WHERE id = ?), ?)|;
+      push(@values,
+           conv_i($orderitems_id), conv_i($form->{id}), conv_i($form->{"id_$i"}),
+           $form->{"description_$i"}, $form->{"longdescription_$i"},
+           $form->{"qty_$i"}, $baseqty,
+           $fxsellprice, $form->{"discount_$i"},
+           $form->{"unit_$i"}, conv_date($reqdate), conv_i($form->{"project_id_$i"}),
+           $form->{"serialnumber_$i"}, $form->{"ship_$i"}, conv_i($pricegroup_id),
+           $form->{"ordnumber_$i"}, conv_date($form->{"transdate_$i"}),
+           $form->{"cusordnumber_$i"}, $form->{"subtotal_$i"} ? 't' : 'f',
+           $form->{"marge_percent_$i"}, $form->{"marge_total_$i"},
+           $form->{"lastcost_$i"},
+           conv_i($form->{"price_factor_id_$i"}), conv_i($form->{"price_factor_id_$i"}),
+           conv_i($form->{"marge_price_factor_$i"}));
+      do_query($form, $dbh, $query, @values);