my @results = GetOrders( $basketno );
my $count = scalar @results;
-
- my $sub_total; # total of line totals
- my $grand_total; # $subttotal + $gist
-
- # my $line_total_est; # total of each line
- my $sub_total_est; # total of line totals
- my $sub_total_rrp; # total of line totals
- my $grand_total_est; # $subttotal + $gist
-
+
+ my $gist = $bookseller->{gstrate} || C4::Context->preference("gist") || 0;
+ my $discount = $bookseller->{'discount'} / 100;
+ my $total_rrp; # RRP Total, its value will be assigned to $total_rrp_gsti or $total_rrp_gste depending of $bookseller->{'listincgst'}
+ my $total_rrp_gsti; # RRP Total, GST included
+ my $total_rrp_gste; # RRP Total, GST excluded
+ my $gist_rrp;
+
my $qty_total;
my @books_loop;
my $budget = GetBudget( $results[$i]->{'budget_id'} );
$rrp = ConvertCurrency( $results[$i]->{'currency'}, $rrp );
- $sub_total_rrp += $qty * $results[$i]->{'rrp'};
+ $total_rrp += $qty * $results[$i]->{'rrp'};
my $line_total = $qty * $results[$i]->{'ecost'};
# FIXME: what about the "actual cost" field?
- $sub_total += $line_total;
$qty_total += $qty;
my %line = %{ $results[$i] };
($i%2) and $line{toggle} = 1;
push @books_loop, \%line;
}
-
-
-
- my $prefgist = $bookseller->{gstrate} || C4::Context->preference("gist") || 0;
- my $gist = $sub_total * $prefgist;
- my $gist_rrp = $sub_total_rrp * $prefgist;
- $grand_total = $sub_total_est = $sub_total;
- $grand_total_est = $sub_total_est; # FIXME: Too many things that are ALL the SAME
- my $temp;
- if ($temp = $bookseller->{'listincgst'}) {
- $template->param(listincgst => $temp);
- $gist = 0;
- } else {
- $grand_total += $gist;
- $grand_total_est += $sub_total_est * $prefgist; # same thing as += gist
- }
- if ($temp = $bookseller->{'discount'}) {
- $template->param(discount => sprintf( "%.2f", $temp ));
+ if ($bookseller->{'listincgst'}) { # if prices already includes GST
+ $total_rrp_gsti = $total_rrp; # we know $total_rrp_gsti
+ $total_rrp_gste = $total_rrp_gsti / ($gist + 1); # and can reverse compute other values
+ $gist_rrp = $total_rrp_gsti - $total_rrp_gste; #
+ } else { # if prices does not include GST
+ $total_rrp_gste = $total_rrp; # then we use the common way to compute other values
+ $gist_rrp = $total_rrp_gste * $gist; #
+ $total_rrp_gsti = $total_rrp_gste + $gist_rrp; #
}
+ # These vars are estimated totals and GST, taking in account the booksellet discount
+ my $total_est_gsti = $total_rrp_gsti - ($total_rrp_gsti * $discount);
+ my $gist_est = $gist_rrp - ($gist_rrp * $discount);
+ my $total_est_gste = $total_rrp_gste - ($total_rrp_gste * $discount);
+
my $contract = &GetContract($basket->{contractnumber});
$template->param(
basketno => $basketno,
entrydate => format_date( $results[0]->{'entrydate'} ),
books_loop => \@books_loop,
count => $count,
- gist => $gist ? sprintf( "%.2f", $gist ) : 0,
- gist_rate => sprintf( "%.2f", $prefgist * 100 ) . '%',
- gist_est => sprintf( "%.2f", $sub_total_est * $prefgist ),
- gist_rrp => sprintf( "%.2f", $gist_rrp ),
- sub_total => sprintf( "%.2f", $sub_total ),
- grand_total => sprintf( "%.2f", $grand_total ),
- sub_total_est => sprintf( "%.2f", $sub_total_est ),
- grand_total_est => sprintf( "%.2f", $grand_total_est ),
- sub_total_rrp => sprintf( "%.2f", $sub_total_rrp ),
- grand_total_rrp => sprintf( "%.2f", $sub_total_rrp + $gist_rrp ),
- currency => $bookseller->{'listprice'},
- qty_total => $qty_total,
- GST => $prefgist,
- basketgroups => $basketgroups,
- grouped => $basket->{basketgroupid},
+ gist_rate => sprintf( "%.2f", $gist * 100 ) . '%',
+ total_rrp_gste => sprintf( "%.2f", $total_rrp_gste ),
+ total_est_gste => sprintf( "%.2f", $total_est_gste ),
+ gist_est => sprintf( "%.2f", $gist_est ),
+ gist_rrp => sprintf( "%.2f", $gist_rrp ),
+ total_rrp_gsti => sprintf( "%.2f", $total_rrp_gsti ),
+ total_est_gsti => sprintf( "%.2f", $total_est_gsti ),
+ currency => $bookseller->{'listprice'},
+ qty_total => $qty_total,
+ GST => $gist,
+ basketgroups => $basketgroups,
+ grouped => $basket->{basketgroupid},
);
}
output_html_with_http_headers $query, $cookie, $template->output;
<!-- /TMPL_LOOP -->
</tbody>
<tr>
- <td colspan="3" rowspan="3">
+ <td colspan="2" rowspan="3">
<input type="hidden" name="number" value="<!-- TMPL_VAR NAME="count" -->" />
<input type="hidden" name="basketno" value="<!-- TMPL_VAR NAME="basketno" -->" />
</td>
- <th>SubTotal</th>
- <th><!-- TMPL_VAR NAME="sub_total_rrp" --></th>
- <th><!-- currently duplicative <!-- TMPL_VAR NAME="sub_total_est" --> --></th>
+ <th colspan="2">Total GST Exc.</th>
+ <th><!-- TMPL_VAR NAME="total_rrp_gste" --></th>
+ <th> </th>
<th><!-- TMPL_VAR name="qty_total" --></th>
- <th><!-- TMPL_VAR NAME="sub_total" --></th>
+ <th><!-- TMPL_VAR NAME="total_est_gste" --></th>
<!-- TMPL_IF name="active" -->
<!-- TMPL_IF name="closedate" -->
<td colspan="1" rowspan="3"> </td>
<!-- /TMPL_IF -->
</tr>
<tr>
- <th>GST (<!-- TMPL_VAR NAME="gist_rate" -->)</th>
+ <th colspan="2">GST (<!-- TMPL_VAR NAME="gist_rate" -->)</th>
<th><!-- TMPL_VAR NAME="gist_rrp" --></th>
- <!-- TMPL_UNLESS NAME="listincgst" -->
- <th><!-- currently duplicative <!-- TMPL_VAR NAME="gist_est" --> --></th>
<th> </th>
- <th><!-- TMPL_VAR NAME="gist" --></th>
- <!-- TMPL_ELSE -->
- <th colspan="3">**</th>
- <!-- /TMPL_UNLESS -->
+ <th> </th>
+ <th><!-- TMPL_VAR NAME="gist_est" --></th>
</tr>
<tr>
- <th>TOTAL (<!-- TMPL_VAR NAME="currency" -->)</th>
- <th><!-- TMPL_VAR NAME="grand_total_rrp" --></th>
+ <th colspan="2">Total GST Inc. (<!-- TMPL_VAR NAME="currency" -->)</th>
+ <th><!-- TMPL_VAR NAME="total_rrp_gsti" --></th>
<th> </th>
<th><!-- TMPL_VAR name="qty_total" --></th>
- <th><!-- TMPL_VAR NAME="grand_total" --></th>
+ <th><!-- TMPL_VAR NAME="total_est_gsti" --></th>
</tr>
</table>
<!-- TMPL_ELSE -->