my $ic_cvar_configs = CVar->get_configs(module => 'IC');
my $project_cvar_configs = CVar->get_configs(module => 'Projects');
+ # get some values of parts from db on store them in extra array,
+ # so that they can be sorted in later
+ my %prepared_template_arrays = IC->prepare_parts_for_printing(myconfig => $myconfig, form => $form);
+ my @prepared_arrays = keys %prepared_template_arrays;
+
$form->{TEMPLATE_ARRAYS} = { };
- IC->prepare_parts_for_printing(myconfig => $myconfig, form => $form);
my @arrays =
- qw(runningnumber number description longdescription qty unit
+ qw(runningnumber number description longdescription qty qty_nofmt unit
partnotes serialnumber reqdate projectnumber projectdescription
- weight lineweight
+ weight weight_nofmt lineweight lineweight_nofmt
si_runningnumber si_number si_description
si_warehouse si_bin si_chargenumber si_bestbefore
si_qty si_qty_nofmt si_unit);
- map { $form->{TEMPLATE_ARRAYS}->{$_} = [] } (@arrays);
+ map { $form->{TEMPLATE_ARRAYS}->{$_} = [] } (@arrays, @prepared_arrays);
push @arrays, map { "ic_cvar_$_->{name}" } @{ $ic_cvar_configs };
push @arrays, map { "project_cvar_$_->{name}" } @{ $project_cvar_configs };
next if (!$form->{"id_$i"});
if ($item->[1] ne $sameitem) {
+ push(@{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'partsgroup');
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, qq|$item->[1]|);
$sameitem = $item->[1];
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" && $_ !~ /^si_/} @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" && $_ !~ /^si_/} (@arrays, @prepared_arrays)));
map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, []) } grep({ $_ =~ /^si_/} @arrays));
$si_position++;
}
my $price_factor = $price_factors{$form->{"price_factor_id_$i"}} || { 'factor' => 1 };
my $project = $projects_by_id{$form->{"project_id_$i"}} || SL::DB::Project->new;
+ push(@{ $form->{TEMPLATE_ARRAYS}{$_} }, $prepared_template_arrays{$_}[$i - 1]) for @prepared_arrays;
+
+ push @{ $form->{TEMPLATE_ARRAYS}{entry_type} }, 'normal';
push @{ $form->{TEMPLATE_ARRAYS}{runningnumber} }, $position;
push @{ $form->{TEMPLATE_ARRAYS}{number} }, $form->{"partnumber_$i"};
push @{ $form->{TEMPLATE_ARRAYS}{description} }, $form->{"description_$i"};
while (my $ref = $h_pg->fetchrow_hashref("NAME_lc")) {
if ($form->{groupitems} && $ref->{partsgroup} ne $sameitem) {
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" && $_ !~ /^si_/} @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" && $_ !~ /^si_/} (@arrays, @prepared_arrays)));
map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, []) } grep({ $_ =~ /^si_/} @arrays));
$sameitem = ($ref->{partsgroup}) ? $ref->{partsgroup} : "--";
+ push(@{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'assembly-item-partsgroup');
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, $sameitem);
$si_position++;
}
- push(@{ $form->{TEMPLATE_ARRAYS}->{"description"} }, $form->format_amount($myconfig, $ref->{qty} * $form->{"qty_$i"}) . qq| -- $ref->{partnumber}, $ref->{description}|);
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" && $_ !~ /^si_/} @arrays));
+ push(@{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'assembly-item');
+ push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, $form->format_amount($myconfig, $ref->{qty} * $form->{"qty_$i"}) . qq| -- $ref->{partnumber}, $ref->{description}|);
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" && $_ !~ /^si_/} (@arrays, @prepared_arrays)));
map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, []) } grep({ $_ =~ /^si_/} @arrays));
$si_position++;
}
my %data = selectall_as_map($form, $dbh, $query, 'id', \@columns, @part_ids);
- map { $form->{TEMPLATE_ARRAYS}{$_} = [] } (qw(make model), @columns);
+ my %template_arrays;
+ map { $template_arrays{$_} = [] } (qw(make model), @columns);
foreach my $i (1 .. $rowcount) {
my $id = $form->{"${prefix}${i}"};
next if (!$id);
foreach (@columns) {
- push @{ $form->{TEMPLATE_ARRAYS}{$_} }, $data{$id}->{$_};
+ push @{ $template_arrays{$_} }, $data{$id}->{$_};
}
- push @{ $form->{TEMPLATE_ARRAYS}{make} }, [];
- push @{ $form->{TEMPLATE_ARRAYS}{model} }, [];
+ push @{ $template_arrays{make} }, [];
+ push @{ $template_arrays{model} }, [];
next if (!$makemodel{$id});
foreach my $ref (@{ $makemodel{$id} }) {
- map { push @{ $form->{TEMPLATE_ARRAYS}{$_}->[-1] }, $ref->{$_} } qw(make model);
+ map { push @{ $template_arrays{$_}->[-1] }, $ref->{$_} } qw(make model);
}
}
my $id = $form->{"${prefix}${i}"};
next unless $id;
- push @{ $form->{TEMPLATE_ARRAYS}{part_type} }, $parts_by_id{$id}->type;
+ push @{ $template_arrays{part_type} }, $parts_by_id{$id}->type;
}
+ return %template_arrays;
$main::lxdebug->leave_sub();
}
$form->{discount} = [];
- IC->prepare_parts_for_printing(myconfig => $myconfig, form => $form);
+ # get some values of parts from db on store them in extra array,
+ # so that they can be sorted in later
+ my %prepared_template_arrays = IC->prepare_parts_for_printing(myconfig => $myconfig, form => $form);
+ my @prepared_arrays = keys %prepared_template_arrays;
my $ic_cvar_configs = CVar->get_configs(module => 'IC');
my $project_cvar_configs = CVar->get_configs(module => 'Projects');
my @arrays =
- qw(runningnumber number description longdescription qty ship unit bin
- deliverydate_oe ordnumber_oe donumber_do transdate_oe validuntil
- partnotes serialnumber reqdate sellprice listprice netprice
- discount p_discount discount_sub nodiscount_sub
- linetotal nodiscount_linetotal tax_rate projectnumber projectdescription
- price_factor price_factor_name partsgroup weight lineweight);
+ qw(runningnumber number description longdescription qty qty_nofmt unit bin
+ deliverydate_oe ordnumber_oe donumber_do transdate_oe invnumber invdate
+ partnotes serialnumber reqdate sellprice sellprice_nofmt listprice listprice_nofmt netprice netprice_nofmt
+ discount discount_nofmt p_discount discount_sub discount_sub_nofmt nodiscount_sub nodiscount_sub_nofmt
+ linetotal linetotal_nofmt nodiscount_linetotal nodiscount_linetotal_nofmt tax_rate projectnumber projectdescription
+ price_factor price_factor_name partsgroup weight weight_nofmt lineweight lineweight_nofmt);
push @arrays, map { "ic_cvar_$_->{name}" } @{ $ic_cvar_configs };
push @arrays, map { "project_cvar_$_->{name}" } @{ $project_cvar_configs };
my @payment_arrays = qw(payment paymentaccount paymentdate paymentsource paymentmemo);
- map { $form->{TEMPLATE_ARRAYS}->{$_} = [] } (@arrays, @tax_arrays, @payment_arrays);
+ map { $form->{TEMPLATE_ARRAYS}->{$_} = [] } (@arrays, @tax_arrays, @payment_arrays, @prepared_arrays);
my $totalweight = 0;
foreach $item (sort { $a->[1] cmp $b->[1] } @partsgroup) {
$i = $item->[0];
if ($item->[1] ne $sameitem) {
+ push(@{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'partsgroup');
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, qq|$item->[1]|);
$sameitem = $item->[1];
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } (@arrays, @prepared_arrays)));
}
$form->{"qty_$i"} = $form->parse_amount($myconfig, $form->{"qty_$i"});
my $price_factor = $price_factors{$form->{"price_factor_id_$i"}} || { 'factor' => 1 };
+ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, $prepared_template_arrays{$_}[$i - 1]) for @prepared_arrays;
+
+ push @{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'normal';
push @{ $form->{TEMPLATE_ARRAYS}->{runningnumber} }, $position;
push @{ $form->{TEMPLATE_ARRAYS}->{number} }, $form->{"partnumber_$i"};
push @{ $form->{TEMPLATE_ARRAYS}->{serialnumber} }, $form->{"serialnumber_$i"};
while (my $ref = $sth->fetchrow_hashref('NAME_lc')) {
if ($form->{groupitems} && $ref->{partsgroup} ne $sameitem) {
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } (@arrays, @prepared_arrays)));
$sameitem = ($ref->{partsgroup}) ? $ref->{partsgroup} : "--";
+ push(@{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'assembly-item-partsgroup');
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, $sameitem);
}
map { $form->{"a_$_"} = $ref->{$_} } qw(partnumber description);
+ push(@{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'assembly-item');
push(@{ $form->{TEMPLATE_ARRAYS}->{description} },
$form->format_amount($myconfig, $ref->{qty} * $form->{"qty_$i"}
)
. qq| -- $form->{"a_partnumber"}, $form->{"a_description"}|);
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } (@arrays, @prepared_arrays)));
}
$sth->finish;
$form->{discount} = [];
+ # get some values of parts from db on store them in extra array,
+ # so that they can be sorted in later
+ my %prepared_template_arrays = IC->prepare_parts_for_printing(myconfig => $myconfig, form => $form);
+ my @prepared_arrays = keys %prepared_template_arrays;
+
$form->{TEMPLATE_ARRAYS} = { };
- IC->prepare_parts_for_printing(myconfig => $myconfig, form => $form);
my $ic_cvar_configs = CVar->get_configs(module => 'IC');
my $project_cvar_configs = CVar->get_configs(module => 'Projects');
my @arrays =
- qw(runningnumber number description longdescription qty ship unit bin
- partnotes serialnumber reqdate sellprice listprice netprice
- discount p_discount discount_sub nodiscount_sub
- linetotal nodiscount_linetotal tax_rate projectnumber projectdescription
- price_factor price_factor_name partsgroup weight lineweight);
+ qw(runningnumber number description longdescription qty qty_nofmt ship ship_nofmt unit bin
+ partnotes serialnumber reqdate sellprice sellprice_nofmt listprice listprice_nofmt netprice netprice_nofmt
+ discount discount_nofmt p_discount discount_sub discount_sub_nofmt nodiscount_sub nodiscount_sub_nofmt
+ linetotal linetotal_nofmt nodiscount_linetotal nodiscount_linetotal_nofmt tax_rate projectnumber projectdescription
+ price_factor price_factor_name partsgroup weight weight_nofmt lineweight lineweight_nofmt);
push @arrays, map { "ic_cvar_$_->{name}" } @{ $ic_cvar_configs };
push @arrays, map { "project_cvar_$_->{name}" } @{ $project_cvar_configs };
my @tax_arrays = qw(taxbase tax taxdescription taxrate taxnumber);
- map { $form->{TEMPLATE_ARRAYS}->{$_} = [] } (@arrays, @tax_arrays);
+ map { $form->{TEMPLATE_ARRAYS}->{$_} = [] } (@arrays, @tax_arrays, @prepared_arrays);
my $totalweight = 0;
my $sameitem = "";
$i = $item->[0];
if ($item->[1] ne $sameitem) {
+ push(@{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'partsgroup');
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, qq|$item->[1]|);
$sameitem = $item->[1];
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } (@arrays, @prepared_arrays)));
}
$form->{"qty_$i"} = $form->parse_amount($myconfig, $form->{"qty_$i"});
my $price_factor = $price_factors{$form->{"price_factor_id_$i"}} || { 'factor' => 1 };
+ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, $prepared_template_arrays{$_}[$i - 1]) for @prepared_arrays;
+
+ push @{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'normal';
push @{ $form->{TEMPLATE_ARRAYS}->{runningnumber} }, $position;
push @{ $form->{TEMPLATE_ARRAYS}->{number} }, $form->{"partnumber_$i"};
push @{ $form->{TEMPLATE_ARRAYS}->{description} }, $form->{"description_$i"};
while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
if ($form->{groupitems} && $ref->{partsgroup} ne $sameitem) {
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } (@arrays, @prepared_arrays)));
$sameitem = ($ref->{partsgroup}) ? $ref->{partsgroup} : "--";
+ push(@{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'assembly-item-partsgroup');
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, $sameitem);
}
+ push(@{ $form->{TEMPLATE_ARRAYS}->{entry_type} }, 'assembly-item');
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, $form->format_amount($myconfig, $ref->{qty} * $form->{"qty_$i"}) . qq|, $ref->{partnumber}, $ref->{description}|);
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } (@arrays, @prepared_arrays)));
}
$sth->finish;
}