summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Template_Mixin.pm25
-rw-r--r--FS/FS/quotation.pm24
2 files changed, 36 insertions, 13 deletions
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index c8b419d1c..652756e1c 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -1156,14 +1156,27 @@ sub print_generic {
if ( $invoice_data{finance_section} &&
$section->{'description'} eq $invoice_data{finance_section} );
- $section->{'subtotal'} = $other_money_char.
- sprintf('%.2f', $section->{'subtotal'})
- if $multisection;
+ if ( $multisection ) {
+
+ if ( ref($section->{'subtotal'}) ) {
+
+ $section->{'subtotal'} =
+ sprintf("$other_money_char%.2f to $other_money_char%.2f",
+ $section->{'subtotal'}[0],
+ $section->{'subtotal'}[1]
+ );
+
+ } else {
+
+ $section->{'subtotal'} = $other_money_char.
+ sprintf('%.2f', $section->{'subtotal'})
- # continue some normalization
- $section->{'amount'} = $section->{'subtotal'}
- if $multisection;
+ }
+ # continue some normalization
+ $section->{'amount'} = $section->{'subtotal'}
+
+ }
if ( $section->{'description'} ) {
push @buf, ( [ &$escape_function($section->{'description'}), '' ],
diff --git a/FS/FS/quotation.pm b/FS/FS/quotation.pm
index e2f6f02ea..1a6641f7d 100644
--- a/FS/FS/quotation.pm
+++ b/FS/FS/quotation.pm
@@ -133,8 +133,9 @@ sub check {
$self->usernum($FS::CurrentUser::CurrentUser->usernum) unless $self->usernum;
- return 'confidence must be an integer between 1 and 100'
- if length($self->confidence) && (($self->confidence < 1) || ($self->confidence > 100));
+ return 'confidence percentage must be an integer between 1 and 100'
+ if length($self->confidence)
+ && ( ($self->confidence < 1) || ($self->confidence > 100) );
return 'prospectnum or custnum must be specified'
if ! $self->prospectnum
@@ -364,9 +365,8 @@ sub _items_total {
'total_amount' => sprintf('%.2f',$total_recur),
'break_after' => 1,
};
- # show 'first payment' line (setup + recur) if there are no prorated
- # packages included
- my $disable_total = 0;
+
+ my $prorate_total = 0;
foreach my $quotation_pkg ($self->quotation_pkg) {
my $part_pkg = $quotation_pkg->part_pkg;
if ( $part_pkg->plan =~ /^(prorate|torrus|agent$)/
@@ -376,17 +376,27 @@ sub _items_total {
&& $self->cust_main->billing_pkgs #num_billing_pkgs when we have it
)
) {
- $disable_total = 1;
+ $prorate_total = 1;
last;
}
}
- if (!$disable_total) {
+
+ if ( $prorate_total ) {
+ push @items, {
+ 'total_item' => $self->mt('First payment (depending on day of month)'),
+ 'total_amount' => [ sprintf('%.2f', $total_setup),
+ sprintf('%.2f', $total_setup + $total_recur)
+ ],
+ 'break_after' => 1,
+ };
+ } else {
push @items, {
'total_item' => $self->mt('First payment'),
'total_amount' => sprintf('%.2f', $total_setup + $total_recur),
'break_after' => 1,
};
}
+
}
return @items;