Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 9c63c160

Von Moritz Bunkus vor etwa 16 Jahren hinzugefügt

  • ID 9c63c1600059dca1ca295e264413e911da3d15bf
  • Vorgänger 560d94b2
  • Nachfolger 52dd34aa

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} }, ...).

Unterschiede anzeigen:

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