+ # column_index
+ my @header_sort = qw(
+ runningnumber partnumber description ship ship_missing qty price_factor
+ unit weight price_source sellprice discount linetotal
+ bin stock_in_out
+ );
+ my @row2_sort = qw(
+ serialnr projectnr reqdate subtotal marge listprice lastcost onhand
+ );
+ my %column_def = (
+ runningnumber => { width => 5, value => $locale->text('No.'), display => 1, },
+ partnumber => { width => 8, value => $locale->text('Number'), display => 1, },
+ description => { width => 30, value => $locale->text('Part Description'), display => 1, },
+ ship => { width => 5, value => $locale->text('Delivered'), display => $is_s_p_order, },
+ ship_missing => { width => 5, value => $locale->text('Not delivered'), display => $show_ship_missing, },
+ qty => { width => 5, value => $locale->text('Qty'), display => 1, },
+ price_factor => { width => 5, value => $locale->text('Price Factor'), display => !$is_delivery_order, },
+ unit => { width => 5, value => $locale->text('Unit'), display => 1, },
+ weight => { width => 5, value => $locale->text('Weight'), display => $defaults->{show_weight}, },
+ serialnr => { width => 10, value => $locale->text('Serial No.'), display => !$is_quotation },
+ projectnr => { width => 10, value => $locale->text('Project'), display => 1, },
+ price_source => { width => 5, value => $locale->text('Price Source'), display => !$is_delivery_order, },
+ sellprice => { width => 15, value => $locale->text('Price'), display => !$is_delivery_order, },
+ discount => { width => 5, value => $locale->text('Discount'), display => !$is_delivery_order, },
+ linetotal => { width => 10, value => $locale->text('Extended'), display => !$is_delivery_order, },
+ bin => { width => 10, value => $locale->text('Bin'), display => 0, },
+ stock_in_out => { width => 10, value => $stock_in_out_title, display => $is_delivery_order, },
+ reqdate => { value => $locale->text('Reqdate'), display => $is_s_p_order || $is_delivery_order || $is_invoice, },
+ subtotal => { value => $locale->text('Subtotal'), display => 1, },
+ marge => { value => $locale->text('Ertrag'), display => $show_marge, },
+ listprice => { value => $locale->text('LP'), display => $show_marge, },
+ lastcost => { value => $locale->text('EK'), display => $show_marge, },
+ onhand => { value => $locale->text('On Hand'), display => 1, },
+ );
+ my @HEADER = map { $column_def{$_} } @header_sort;
+
+ # cache units
+ my $all_units = AM->retrieve_units(\%myconfig, $form);
+
+ my %price_factors = map { $_->{id} => $_->{factor} } @{ $form->{ALL_PRICE_FACTORS} };
+
+
+ $form->{invsubtotal} = 0;
+ map { $form->{"${_}_base"} = 0 } (split(/ /, $form->{taxaccounts}));
+
+ # about details
+ $myconfig{show_form_details} = 1 unless (defined($myconfig{show_form_details}));
+ $form->{show_details} = $myconfig{show_form_details} unless (defined($form->{show_details}));
+ # /about details
+
+ # translations, unused commented out
+ my $deliverydate = $locale->text('Required by');
+
+ # special alignings
+ my %align = map { $_ => 'right' } qw(qty ship right discount linetotal stock_in_out weight ship_missing);
+ my %nowrap = map { $_ => 1 } qw(description unit);
+
+ $form->{marge_total} = 0;
+ $form->{sellprice_total} = 0;
+ $form->{lastcost_total} = 0;
+ $form->{totalweight} = 0;
+ my %projectnumber_labels = ();
+ my @projectnumber_values = ("");
+
+ foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
+ push(@projectnumber_values, $item->{"id"});
+ $projectnumber_labels{$item->{"id"}} = $item->{"projectnumber"};
+ }