Revision 9c63c160
Von Moritz Bunkus vor etwa 16 Jahren hinzugefügt
SL/DN.pm | ||
---|---|---|
my $first = 1;
|
||
while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
|
||
if ($first) {
|
||
map({ $form->{"dn_$_"} = []; } keys(%{$ref}));
|
||
$form->{TEMPLATE_ARRAYS} = {};
|
||
map({ $form->{TEMPLATE_ARRAYS}->{"dn_$_"} = []; } keys(%{$ref}));
|
||
$first = 0;
|
||
}
|
||
map { $ref->{$_} = $form->format_amount($myconfig, $ref->{$_}, 2) } qw(amount netamount paid open_amount fee interest linetotal);
|
||
map { $form->{$_} = $ref->{$_} } keys %$ref;
|
||
map { push @{ $form->{"dn_$_"} }, $ref->{$_}} keys %$ref;
|
||
map { push @{ $form->{TEMPLATE_ARRAYS}->{"dn_$_"} }, $ref->{$_} } keys %$ref;
|
||
}
|
||
$sth->finish();
|
||
|
SL/IS.pm | ||
---|---|---|
linetotal nodiscount_linetotal tax_rate projectnumber
|
||
price_factor price_factor_name partsgroup);
|
||
|
||
my @tax_arrays =
|
||
qw(taxbase tax taxdescription taxrate taxnumber);
|
||
my @tax_arrays = qw(taxbase tax taxdescription taxrate taxnumber);
|
||
|
||
my @payment_arrays = qw(payment paymentaccount paymentdate paymentsource paymentmemo);
|
||
|
||
$form->{TEMPLATE_ARRAYS} = { map { $_ => [] } (@arrays, @tax_arrays, @payment_arrays) };
|
||
|
||
foreach $item (sort { $a->[1] cmp $b->[1] } @partsgroup) {
|
||
$i = $item->[0];
|
||
|
||
if ($item->[1] ne $sameitem) {
|
||
push(@{ $form->{description} }, qq|$item->[1]|);
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, qq|$item->[1]|);
|
||
$sameitem = $item->[1];
|
||
|
||
map({ push(@{ $form->{$_} }, "") } grep({ $_ ne "description" } @arrays));
|
||
map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @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->{runningnumber} }, $position;
|
||
push @{ $form->{number} }, $form->{"partnumber_$i"};
|
||
push @{ $form->{serialnumber} }, $form->{"serialnumber_$i"};
|
||
push @{ $form->{bin} }, $form->{"bin_$i"};
|
||
push @{ $form->{"partnotes"} }, $form->{"partnotes_$i"};
|
||
push @{ $form->{description} }, $form->{"description_$i"};
|
||
push @{ $form->{longdescription} }, $form->{"longdescription_$i"};
|
||
push @{ $form->{qty} }, $form->format_amount($myconfig, $form->{"qty_$i"});
|
||
push @{ $form->{unit} }, $form->{"unit_$i"};
|
||
push @{ $form->{deliverydate_oe} }, $form->{"deliverydate_$i"};
|
||
push @{ $form->{sellprice} }, $form->{"sellprice_$i"};
|
||
push @{ $form->{ordnumber_oe} }, $form->{"ordnumber_$i"};
|
||
push @{ $form->{transdate_oe} }, $form->{"transdate_$i"};
|
||
push @{ $form->{invnumber} }, $form->{"invnumber"};
|
||
push @{ $form->{invdate} }, $form->{"invdate"};
|
||
push @{ $form->{price_factor} }, $price_factor->{formatted_factor};
|
||
push @{ $form->{price_factor_name} }, $price_factor->{description};
|
||
push @{ $form->{partsgroup} }, $form->{"partsgroup_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{runningnumber} }, $position;
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{number} }, $form->{"partnumber_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{serialnumber} }, $form->{"serialnumber_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{bin} }, $form->{"bin_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{partnotes} }, $form->{"partnotes_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{description} }, $form->{"description_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{longdescription} }, $form->{"longdescription_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{qty} }, $form->format_amount($myconfig, $form->{"qty_$i"});
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{unit} }, $form->{"unit_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{deliverydate_oe} }, $form->{"deliverydate_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{sellprice} }, $form->{"sellprice_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{ordnumber_oe} }, $form->{"ordnumber_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{transdate_oe} }, $form->{"transdate_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{invnumber} }, $form->{"invnumber"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{invdate} }, $form->{"invdate"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{price_factor} }, $price_factor->{formatted_factor};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{price_factor_name} }, $price_factor->{description};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{partsgroup} }, $form->{"partsgroup_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{reqdate} }, $form->{"reqdate_$i"};
|
||
|
||
if ($form->{lizenzen}) {
|
||
if ($form->{"licensenumber_$i"}) {
|
||
$query = qq|SELECT licensenumber, validuntil FROM license WHERE id = ?|;
|
||
my ($licensenumber, $validuntil) = selectrow_query($form, $dbh, $query, conv_i($form->{"licensenumber_$i"}));
|
||
push(@{ $form->{licensenumber} }, $licensenumber);
|
||
push(@{ $form->{validuntil} }, $locale->date($myconfig, $validuntil, 0));
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{licensenumber} }, $licensenumber);
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{validuntil} }, $locale->date($myconfig, $validuntil, 0));
|
||
|
||
} else {
|
||
push(@{ $form->{licensenumber} }, "");
|
||
push(@{ $form->{validuntil} }, "");
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{licensenumber} }, "");
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{validuntil} }, "");
|
||
}
|
||
}
|
||
|
||
# listprice
|
||
push(@{ $form->{listprice} }, $form->{"listprice_$i"});
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{listprice} }, $form->{"listprice_$i"});
|
||
|
||
my $sellprice = $form->parse_amount($myconfig, $form->{"sellprice_$i"});
|
||
my ($dec) = ($sellprice =~ /\.(\d+)/);
|
||
... | ... | |
my $nodiscount_linetotal = $form->round_amount($form->{"qty_$i"} * $sellprice / $price_factor->{factor}, 2);
|
||
$form->{"netprice_$i"} = $form->round_amount($form->{"qty_$i"} ? ($linetotal / $form->{"qty_$i"}) : 0, 2);
|
||
|
||
push @{ $form->{netprice} }, ($form->{"netprice_$i"} != 0) ? $form->format_amount($myconfig, $form->{"netprice_$i"}, $decimalplaces) : '';
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{netprice} }, ($form->{"netprice_$i"} != 0) ? $form->format_amount($myconfig, $form->{"netprice_$i"}, $decimalplaces) : '';
|
||
|
||
$linetotal = ($linetotal != 0) ? $linetotal : '';
|
||
|
||
push @{ $form->{discount} }, ($discount != 0) ? $form->format_amount($myconfig, $discount * -1, 2) : '';
|
||
push @{ $form->{p_discount} }, $form->{"discount_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{discount} }, ($discount != 0) ? $form->format_amount($myconfig, $discount * -1, 2) : '';
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{p_discount} }, $form->{"discount_$i"};
|
||
|
||
$form->{total} += $linetotal;
|
||
$form->{nodiscount_total} += $nodiscount_linetotal;
|
||
... | ... | |
}
|
||
|
||
if ($form->{"subtotal_$i"} && $subtotal_header && ($subtotal_header != $i)) {
|
||
push @{ $form->{discount_sub} }, $form->format_amount($myconfig, $discount_subtotal, 2);
|
||
push @{ $form->{nodiscount_sub} }, $form->format_amount($myconfig, $nodiscount_subtotal, 2);
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{discount_sub} }, $form->format_amount($myconfig, $discount_subtotal, 2);
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_sub} }, $form->format_amount($myconfig, $nodiscount_subtotal, 2);
|
||
|
||
$discount_subtotal = 0;
|
||
$nodiscount_subtotal = 0;
|
||
$subtotal_header = 0;
|
||
|
||
} else {
|
||
push @{ $form->{discount_sub} }, "";
|
||
push @{ $form->{nodiscount_sub} }, "";
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{discount_sub} }, "";
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_sub} }, "";
|
||
}
|
||
|
||
if (!$form->{"discount_$i"}) {
|
||
$nodiscount += $linetotal;
|
||
}
|
||
|
||
push @{ $form->{linetotal} }, $form->format_amount($myconfig, $linetotal, 2);
|
||
push @{ $form->{nodiscount_linetotal} }, $form->format_amount($myconfig, $nodiscount_linetotal, 2);
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{linetotal} }, $form->format_amount($myconfig, $linetotal, 2);
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_linetotal} }, $form->format_amount($myconfig, $nodiscount_linetotal, 2);
|
||
|
||
push(@{ $form->{projectnumber} }, $projectnumbers{$form->{"project_id_$i"}});
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{projectnumber} }, $projectnumbers{$form->{"project_id_$i"}});
|
||
|
||
@taxaccounts = split(/ /, $form->{"taxaccounts_$i"});
|
||
$taxrate = 0;
|
||
... | ... | |
}
|
||
}
|
||
my $tax_rate = $taxrate * 100;
|
||
push(@{ $form->{tax_rate} }, qq|$tax_rate|);
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{tax_rate} }, qq|$tax_rate|);
|
||
if ($form->{"assembly_$i"}) {
|
||
$sameitem = "";
|
||
|
||
... | ... | |
|
||
while (my $ref = $sth->fetchrow_hashref('NAME_lc')) {
|
||
if ($form->{groupitems} && $ref->{partsgroup} ne $sameitem) {
|
||
map({ push(@{ $form->{$_} }, "") } grep({ $_ ne "description" } @arrays));
|
||
map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
|
||
$sameitem = ($ref->{partsgroup}) ? $ref->{partsgroup} : "--";
|
||
push(@{ $form->{description} }, $sameitem);
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, $sameitem);
|
||
}
|
||
|
||
map { $form->{"a_$_"} = $ref->{$_} } qw(partnumber description);
|
||
|
||
push(@{ $form->{description} },
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{description} },
|
||
$form->format_amount($myconfig, $ref->{qty} * $form->{"qty_$i"}
|
||
)
|
||
. qq| -- $form->{"a_partnumber"}, $form->{"a_description"}|);
|
||
map({ push(@{ $form->{$_} }, "") } grep({ $_ ne "description" } @arrays));
|
||
map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
|
||
|
||
}
|
||
$sth->finish;
|
||
... | ... | |
}
|
||
|
||
foreach my $item (sort keys %taxaccounts) {
|
||
push(@{ $form->{taxbase} },
|
||
$form->format_amount($myconfig, $taxbase{$item}, 2));
|
||
|
||
$tax += $taxamount = $form->round_amount($taxaccounts{$item}, 2);
|
||
|
||
push(@{ $form->{tax} }, $form->format_amount($myconfig, $taxamount, 2));
|
||
push(@{ $form->{taxdescription} }, $form->{"${item}_description"} . q{ } . 100 * $form->{"${item}_rate"} . q{%});
|
||
push(@{ $form->{taxrate} },
|
||
$form->format_amount($myconfig, $form->{"${item}_rate"} * 100));
|
||
push(@{ $form->{taxnumber} }, $form->{"${item}_taxnumber"});
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{taxbase} }, $form->format_amount($myconfig, $taxbase{$item}, 2));
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{tax} }, $form->format_amount($myconfig, $taxamount, 2));
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{taxrate} }, $form->format_amount($myconfig, $form->{"${item}_rate"} * 100));
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{taxdescription} }, $form->{"${item}_description"} . q{ } . 100 * $form->{"${item}_rate"} . q{%});
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{taxnumber} }, $form->{"${item}_taxnumber"});
|
||
}
|
||
|
||
for my $i (1 .. $form->{paidaccounts}) {
|
||
if ($form->{"paid_$i"}) {
|
||
push(@{ $form->{payment} }, $form->{"paid_$i"});
|
||
my ($accno, $description) = split(/--/, $form->{"AR_paid_$i"});
|
||
push(@{ $form->{paymentaccount} }, $description);
|
||
push(@{ $form->{paymentdate} }, $form->{"datepaid_$i"});
|
||
push(@{ $form->{paymentsource} }, $form->{"source_$i"});
|
||
push(@{ $form->{paymentmemo} }, $form->{"memo_$i"});
|
||
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{payment} }, $form->{"paid_$i"});
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{paymentaccount} }, $description);
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{paymentdate} }, $form->{"datepaid_$i"});
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{paymentsource} }, $form->{"source_$i"});
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{paymentmemo} }, $form->{"memo_$i"});
|
||
|
||
$form->{paid} += $form->parse_amount($myconfig, $form->{"paid_$i"});
|
||
}
|
SL/OE.pm | ||
---|---|---|
linetotal nodiscount_linetotal tax_rate projectnumber
|
||
price_factor price_factor_name partsgroup);
|
||
|
||
my @tax_arrays = qw(taxbase tax taxdescription taxrate taxnumber);
|
||
|
||
$form->{TEMPLATE_ARRAYS} = { map { $_ => [] } (@arrays, @tax_arrays) };
|
||
|
||
my $sameitem = "";
|
||
foreach $item (sort { $a->[1] cmp $b->[1] } @partsgroup) {
|
||
$i = $item->[0];
|
||
|
||
if ($item->[1] ne $sameitem) {
|
||
push(@{ $form->{description} }, qq|$item->[1]|);
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, qq|$item->[1]|);
|
||
$sameitem = $item->[1];
|
||
|
||
map({ push(@{ $form->{$_} }, "") } grep({ $_ ne "description" } @arrays));
|
||
map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @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->{runningnumber} }, $position;
|
||
push @{ $form->{number} }, $form->{"partnumber_$i"};
|
||
push @{ $form->{description} }, $form->{"description_$i"};
|
||
push @{ $form->{longdescription} }, $form->{"longdescription_$i"};
|
||
push @{ $form->{qty} }, $form->format_amount($myconfig, $form->{"qty_$i"});
|
||
push @{ $form->{ship} }, $form->format_amount($myconfig, $form->{"ship_$i"});
|
||
push @{ $form->{unit} }, $form->{"unit_$i"};
|
||
push @{ $form->{bin} }, $form->{"bin_$i"};
|
||
push @{ $form->{partnotes} }, $form->{"partnotes_$i"};
|
||
push @{ $form->{serialnumber} }, $form->{"serialnumber_$i"};
|
||
push @{ $form->{reqdate} }, $form->{"reqdate_$i"};
|
||
push @{ $form->{sellprice} }, $form->{"sellprice_$i"};
|
||
push @{ $form->{listprice} }, $form->{"listprice_$i"};
|
||
push @{ $form->{price_factor} }, $price_factor->{formatted_factor};
|
||
push @{ $form->{price_factor_name} }, $price_factor->{description};
|
||
push @{ $form->{partsgroup} }, $form->{"partsgroup_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{runningnumber} }, $position;
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{number} }, $form->{"partnumber_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{description} }, $form->{"description_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{longdescription} }, $form->{"longdescription_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{qty} }, $form->format_amount($myconfig, $form->{"qty_$i"});
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{ship} }, $form->format_amount($myconfig, $form->{"ship_$i"});
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{unit} }, $form->{"unit_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{bin} }, $form->{"bin_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{partnotes} }, $form->{"partnotes_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{serialnumber} }, $form->{"serialnumber_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{reqdate} }, $form->{"reqdate_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{sellprice} }, $form->{"sellprice_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{listprice} }, $form->{"listprice_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{price_factor} }, $price_factor->{formatted_factor};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{price_factor_name} }, $price_factor->{description};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{partsgroup} }, $form->{"partsgroup_$i"};
|
||
|
||
my $sellprice = $form->parse_amount($myconfig, $form->{"sellprice_$i"});
|
||
my ($dec) = ($sellprice =~ /\.(\d+)/);
|
||
... | ... | |
my $nodiscount_linetotal = $form->round_amount($form->{"qty_$i"} * $sellprice / $price_factor->{factor}, 2);
|
||
$form->{"netprice_$i"} = $form->round_amount($form->{"qty_$i"} ? ($linetotal / $form->{"qty_$i"}) : 0, 2);
|
||
|
||
push @{ $form->{netprice} }, ($form->{"netprice_$i"} != 0) ? $form->format_amount($myconfig, $form->{"netprice_$i"}, $decimalplaces) : '';
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{netprice} }, ($form->{"netprice_$i"} != 0) ? $form->format_amount($myconfig, $form->{"netprice_$i"}, $decimalplaces) : '';
|
||
|
||
$linetotal = ($linetotal != 0) ? $linetotal : '';
|
||
|
||
push @{ $form->{discount} }, ($discount != 0) ? $form->format_amount($myconfig, $discount * -1, 2) : '';
|
||
push @{ $form->{p_discount} }, $form->{"discount_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{discount} }, ($discount != 0) ? $form->format_amount($myconfig, $discount * -1, 2) : '';
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{p_discount} }, $form->{"discount_$i"};
|
||
|
||
$form->{ordtotal} += $linetotal;
|
||
$form->{nodiscount_total} += $nodiscount_linetotal;
|
||
... | ... | |
}
|
||
|
||
if ($form->{"subtotal_$i"} && $subtotal_header && ($subtotal_header != $i)) {
|
||
push @{ $form->{discount_sub} }, $form->format_amount($myconfig, $discount_subtotal, 2);
|
||
push @{ $form->{nodiscount_sub} }, $form->format_amount($myconfig, $nodiscount_subtotal, 2);
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{discount_sub} }, $form->format_amount($myconfig, $discount_subtotal, 2);
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_sub} }, $form->format_amount($myconfig, $nodiscount_subtotal, 2);
|
||
|
||
$discount_subtotal = 0;
|
||
$nodiscount_subtotal = 0;
|
||
$subtotal_header = 0;
|
||
|
||
} else {
|
||
push @{ $form->{discount_sub} }, "";
|
||
push @{ $form->{nodiscount_sub} }, "";
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{discount_sub} }, "";
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_sub} }, "";
|
||
}
|
||
|
||
if (!$form->{"discount_$i"}) {
|
||
$nodiscount += $linetotal;
|
||
}
|
||
|
||
push @{ $form->{linetotal} }, $form->format_amount($myconfig, $linetotal, 2);
|
||
push @{ $form->{nodiscount_linetotal} }, $form->format_amount($myconfig, $nodiscount_linetotal, 2);
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{linetotal} }, $form->format_amount($myconfig, $linetotal, 2);
|
||
push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_linetotal} }, $form->format_amount($myconfig, $nodiscount_linetotal, 2);
|
||
|
||
push(@{ $form->{projectnumber} }, $projectnumbers{$form->{"project_id_$i"}});
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{projectnumber} }, $projectnumbers{$form->{"project_id_$i"}});
|
||
|
||
my ($taxamount, $taxbase);
|
||
my $taxrate = 0;
|
||
... | ... | |
}
|
||
|
||
$tax_rate = $taxrate * 100;
|
||
push(@{ $form->{tax_rate} }, qq|$tax_rate|);
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{tax_rate} }, qq|$tax_rate|);
|
||
|
||
if ($form->{"assembly_$i"}) {
|
||
$sameitem = "";
|
||
... | ... | |
|
||
while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
|
||
if ($form->{groupitems} && $ref->{partsgroup} ne $sameitem) {
|
||
map({ push(@{ $form->{$_} }, "") } grep({ $_ ne "description" } @arrays));
|
||
map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
|
||
$sameitem = ($ref->{partsgroup}) ? $ref->{partsgroup} : "--";
|
||
push(@{ $form->{description} }, $sameitem);
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, $sameitem);
|
||
}
|
||
|
||
push(@{ $form->{description} }, $form->format_amount($myconfig, $ref->{qty} * $form->{"qty_$i"}) . qq|, $ref->{partnumber}, $ref->{description}|);
|
||
map({ push(@{ $form->{$_} }, "") } grep({ $_ ne "description" } @arrays));
|
||
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));
|
||
}
|
||
$sth->finish;
|
||
}
|
||
... | ... | |
|
||
my $tax = 0;
|
||
foreach $item (sort keys %taxaccounts) {
|
||
push(@{ $form->{taxbase} },
|
||
$form->format_amount($myconfig, $taxbase{$item}, 2));
|
||
|
||
$tax += $taxamount = $form->round_amount($taxaccounts{$item}, 2);
|
||
|
||
push(@{ $form->{tax} }, $form->format_amount($myconfig, $taxamount, 2));
|
||
push(@{ $form->{taxdescription} }, $form->{"${item}_description"} . q{ } . 100 * $form->{"${item}_rate"} . q{%});
|
||
push(@{ $form->{taxrate} },
|
||
$form->format_amount($myconfig, $form->{"${item}_rate"} * 100));
|
||
push(@{ $form->{taxnumber} }, $form->{"${item}_taxnumber"});
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{taxbase} }, $form->format_amount($myconfig, $taxbase{$item}, 2));
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{tax} }, $form->format_amount($myconfig, $taxamount, 2));
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{taxrate} }, $form->format_amount($myconfig, $form->{"${item}_rate"} * 100));
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{taxdescription} }, $form->{"${item}_description"} . q{ } . 100 * $form->{"${item}_rate"} . q{%});
|
||
push(@{ $form->{TEMPLATE_ARRAYS}->{taxnumber} }, $form->{"${item}_taxnumber"});
|
||
}
|
||
|
||
$form->{nodiscount_subtotal} = $form->format_amount($myconfig, $form->{nodiscount_total}, 2);
|
SL/Template.pm | ||
---|---|---|
return 0;
|
||
}
|
||
|
||
sub _get_loop_variable_value {
|
||
my $self = shift;
|
||
my $var = shift;
|
||
my @indices = @_;
|
||
sub _get_loop_variable {
|
||
my $self = shift;
|
||
my $var = shift;
|
||
my $get_array = shift;
|
||
my @indices = @_;
|
||
|
||
my $form = $self->{form};
|
||
my $value = $form->{$var};
|
||
my $form = $self->{form};
|
||
my $value;
|
||
|
||
if (($get_array || @indices) && (ref $form->{TEMPLATE_ARRAYS} eq 'HASH') && (ref $form->{TEMPLATE_ARRAYS}->{$var} eq 'ARRAY')) {
|
||
$value = $form->{TEMPLATE_ARRAYS}->{$var};
|
||
} else {
|
||
$value = $form->{$var};
|
||
}
|
||
|
||
for (my $i = 0; $i < scalar(@indices); $i++) {
|
||
last unless (ref($value) eq "ARRAY");
|
||
... | ... | |
my ($tag_pos, $tag_len) = ($-[0], $+[0] - $-[0]);
|
||
my ($var, @options) = split(/\s+/, $1);
|
||
|
||
my $value = $self->_get_loop_variable_value($var, @indices);
|
||
my $value = $self->_get_loop_variable($var, 0, @indices);
|
||
$value = $self->format_string($value) unless (grep(/^NOESCAPE$/, @options));
|
||
|
||
substr($text, $tag_pos, $tag_len, $value);
|
||
... | ... | |
|
||
my ($form, $new_contents) = ($self->{"form"}, "");
|
||
|
||
my $ary = $form->{$var};
|
||
for (my $i = 0; $i < scalar(@indices); $i++) {
|
||
last unless (ref($ary) eq "ARRAY");
|
||
$ary = $ary->[$indices[$i]];
|
||
}
|
||
my $ary = $self->_get_loop_variable($var, 1, @indices);
|
||
|
||
my $sum = 0;
|
||
my $current_page = 1;
|
||
... | ... | |
|
||
my ($form, $new_contents) = ($self->{"form"}, "");
|
||
|
||
my $ary = $form->{$var};
|
||
for (my $i = 0; $i < scalar(@indices); $i++) {
|
||
last unless (ref($ary) eq "ARRAY");
|
||
$ary = $ary->[$indices[$i]];
|
||
}
|
||
my $ary = $self->_get_loop_variable($var, 1, @indices);
|
||
|
||
for (my $i = 0; $i < scalar(@{$ary}); $i++) {
|
||
$form->{"__first__"} = $i == 0;
|
Auch abrufbar als: Unified diff
Die Funktionen in Template.pm zum Ersetzen von Schleifenvariablen so erweitert, dass die Schleifenarrays auch in $form->{TEMPLATE_ARRAYS} gesucht werden. Weiterhin die Druckmechanismen in IS.pm, OE.pm und DN.pm so angepasst, dass sie diese Unterebene benutzen, um die Positionswerte zu speichern. Dadurch wird verhindert, dass Elemente direkt in $form sowohl als Skalar als auch als Array benutzt werden (z.B. $form->{reqdate} = ... und push @{ $form->{reqdate} }, ...).