summaryrefslogtreecommitdiff
path: root/FS/FS/quotation.pm
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2015-06-29 21:21:57 -0700
committerIvan Kohler <ivan@freeside.biz>2015-06-29 21:21:57 -0700
commitda77773f5fb48f16ead80647e176a5c1914e1a97 (patch)
treeaf0b99fb14659f9fd6110d1b102a648889db430d /FS/FS/quotation.pm
parent7aebaecacccf7966d464733fd9718fe182e2489b (diff)
setup+recur total on quotations, RT#36997
Diffstat (limited to 'FS/FS/quotation.pm')
-rw-r--r--FS/FS/quotation.pm32
1 files changed, 30 insertions, 2 deletions
diff --git a/FS/FS/quotation.pm b/FS/FS/quotation.pm
index 8843a87..7bf5ecb 100644
--- a/FS/FS/quotation.pm
+++ b/FS/FS/quotation.pm
@@ -260,15 +260,30 @@ sub _items_sections {
my %opt = @_;
my $escape = $opt{escape}; # the only one we care about
- my %subtotals; # package frequency => subtotal
+ my %subtotals = (); # package frequency => subtotal
+ my $disable_total = 0;
foreach my $pkg ($self->quotation_pkg) {
- my $recur_freq = $pkg->part_pkg->freq;
+
+ my $part_pkg = $pkg->part_pkg;
+
+ my $recur_freq = $part_pkg->freq;
($subtotals{0} ||= 0) += $pkg->setup + $pkg->setup_tax;
($subtotals{$recur_freq} ||= 0) += $pkg->recur + $pkg->recur_tax;
+
+ #this is a shitty hack based on what's in part_pkg/ at the moment
+ # but its good enough for the 99% common case of preventing totals from
+ # displaying for prorate packages
+ $disable_total = 1
+ if $part_pkg->plan =~ /^prorate/
+ || $part_pkg->plan eq 'agent'
+ || $part_pkg->plan =~ /^torrus/
+ || $part_pkg->option('sync_bill_date');
+
}
my @pkg_freq_order = keys %{ FS::Misc->pkg_freqs };
my @sections;
+ my $no_recurring = 0;
foreach my $freq (keys %subtotals) {
next if $subtotals{$freq} == 0;
@@ -279,6 +294,7 @@ sub _items_sections {
if ( $freq eq '0' ) {
if ( scalar(keys(%subtotals)) == 1 ) {
# there are no recurring packages
+ $no_recurring = 1;
$desc = $self->mt('Charges');
} else {
$desc = $self->mt('Setup Charges');
@@ -295,6 +311,18 @@ sub _items_sections {
'subtotal' => sprintf('%.2f',$subtotals{$freq}),
};
}
+
+ unless ( $disable_total || $no_recurring ) {
+ my $total = 0;
+ $total += $_ for values %subtotals;
+ push @sections, {
+ 'description' => 'First payment',
+ 'sort_weight' => 0,
+ 'category' => 'Total category', #required but what's it used for?
+ 'subtotal' => sprintf('%.2f',$total)
+ };
+ }
+
return \@sections, [];
}