- parts_id => $part->id,
- description => $description,
- qty => $section->time_estimation * 1,
- unit => $self->h_unit_name,
- sellprice => $::form->round_amount($self->requirement_spec->hourly_rate, 2),
- lastcost => $part->lastcost,
- discount => 0,
- project_id => $self->requirement_spec->project_id,
+ parts_id => $part->id,
+ description => $description,
+ longdescription => $longdescription,
+ qty => $is_time_based ? $section->time_estimation * 1 : 1,
+ unit => $is_time_based ? $self->h_unit_name : $part->unit,
+ sellprice => $::form->round_amount($self->requirement_spec->hourly_rate * ($is_time_based ? 1 : $section->time_estimation * $section->sellprice_factor), 2),
+ lastcost => $part->lastcost * $section->sellprice_factor,
+ discount => 0,
+ project_id => $self->requirement_spec->project_id,
+ );
+
+ return $item;
+}
+
+sub create_additional_part_order_item {
+ my ($self, %params) = @_;
+
+ my $add_part = $params{additional_part};
+ my $item = $params{item} || SL::DB::OrderItem->new;
+ my $part = $self->parts->{ $add_part->part_id };
+ my $translation = $params{language_id} ? first { $params{language_id} == $_->language_id } @{ $part->translations } : {};
+ my $description = $item->description || $add_part->description;
+ my $longdescription = $translation->{longdescription} || $part->notes;
+
+ $item->assign_attributes(
+ parts_id => $part->id,
+ description => $description,
+ longdescription => $longdescription,
+ qty => $add_part->qty,
+ unit => $add_part->unit->name,
+ sellprice => $add_part->unit->convert_to($part->sellprice, $part->unit_obj),
+ lastcost => $part->lastcost,
+ discount => 0,
+ project_id => $self->requirement_spec->project_id,