+ # column_index
+ my @header_sort = qw(runningnumber partnumber description ship qty unit sellprice_pg sellprice discount linetotal);
+ my @HEADER = (
+ { id => 'runningnumber', width => 5, value => $locale->text('No.'), display => 1, },
+ { id => 'partnumber', width => 12, value => $locale->text('Number'), display => 1, },
+ { id => 'description', width => 30, value => $locale->text('Part Description'), display => 1, },
+ { id => 'ship', width => 5, value => ($form->{type} eq 'purchase_order' ? $locale->text('Ship rcvd') : $locale->text('Ship')),
+ display => $form->{type} =~ /sales_order/ || ($form->{type} =~ /purchase_order/ && !($lizenzen && $form->{vc} eq "customer")) , },
+ { id => 'qty', width => 5, value => $locale->text('Qty'), display => 1, },
+ { id => 'price_factor', width => 5, value => $locale->text('Price Factor'), display => 1, },
+ { id => 'unit', width => 5, value => $locale->text('Unit'), display => 1, },
+ { id => 'license', width => 10, value => $locale->text('License'), display => 0, },
+ { id => 'serialnr', width => 10, value => $locale->text('Serial No.'), display => 0, },
+ { id => 'projectnr', width => 10, value => $locale->text('Project'), display => 0, },
+ { id => 'sellprice', width => 15, value => $locale->text('Price'), display => !$is_delivery_order, },
+ { id => 'sellprice_pg', width => 15, value => $locale->text('Pricegroup'), display => ($form->{type} =~ /^sales_/) && !$is_delivery_order, },
+ { id => 'discount', width => 5, value => $locale->text('Discount'), display => ($form->{vc} eq 'customer') && !$is_delivery_order, },
+ { id => 'linetotal', width => 10, value => $locale->text('Extended'), display => !$is_delivery_order, },
+ { id => 'bin', width => 10, value => $locale->text('Bin'), display => 0, },
+ { id => 'stock_in_out', width => 10, value => $stock_in_out_title, display => $is_delivery_order, },
+ );
+ my @column_index = map { $_->{id} } grep { $_->{display} } @HEADER;
+
+ # cache units