[freeside-commits] branch master updated. cce5bb928a54c98c17fe7f63fa555f101970b248
Mark Wells
mark at 420.am
Tue Feb 4 18:59:36 PST 2014
The branch, master has been updated
via cce5bb928a54c98c17fe7f63fa555f101970b248 (commit)
via 8acc9ad4acef84ace01e80cae1eb18ce90512c60 (commit)
via b34c29fb67ed6a08005e439ceb0393fef03e2c61 (commit)
from 6156461dcd934da26e53f78a4aed450259e4ae55 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit cce5bb928a54c98c17fe7f63fa555f101970b248
Author: Mark Wells <mark at freeside.biz>
Date: Tue Feb 4 18:59:19 2014 -0800
better display of usage details w/ unit prices, #27303
diff --git a/FS/FS/TemplateItem_Mixin.pm b/FS/FS/TemplateItem_Mixin.pm
index 66ccfb5..569d98c 100644
--- a/FS/FS/TemplateItem_Mixin.pm
+++ b/FS/FS/TemplateItem_Mixin.pm
@@ -48,7 +48,7 @@ sub part_pkg {
}
-=item desc
+=item desc LOCALE
Returns a description for this line item. For typical line items, this is the
I<pkg> field of the corresponding B<FS::part_pkg> object (see L<FS::part_pkg>).
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index 00151ae..c4c2d7f 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -936,7 +936,7 @@ sub print_generic {
my $detail = {
ref => $line_item->{'pkgnum'},
pkgpart => $line_item->{'pkgpart'},
- quantity => 1,
+ #quantity => 1, # not really correct
section => $previous_section, # which might be $default_section
description => &$escape_function($line_item->{'description'}),
ext_description => [ map { &$escape_function($_) }
@@ -2576,7 +2576,8 @@ sub _items_cust_bill_pkg {
my $is_summary = $display->summary;
my $description = $desc;
- if ( $type eq 'U' and ($is_summary or $cust_bill_pkg->hidden) ) {
+ if ( $type eq 'U' and defined($r) ) {
+ # don't just show the same description as the recur line
$description = $self->mt('Usage charges');
}
@@ -2596,10 +2597,19 @@ sub _items_cust_bill_pkg {
push @dates, $prev->sdate if $prev;
push @dates, undef if !$prev;
+ # show service labels, unless...
+ # the package is set not to display them
unless ( $part_pkg->hide_svc_detail
+ # or this is a tax-like line item
|| $cust_bill_pkg->itemdesc
+ # or this is a hidden (bundled) line item
|| $cust_bill_pkg->hidden
+ # or this is a usage summary line
|| $is_summary && $type && $type eq 'U'
+ # or this is a usage line and there's a recurring line
+ # for the package in the same section (which will
+ # have service labels already)
+ || ($type eq 'U' and defined($r))
)
{
@@ -2647,7 +2657,7 @@ sub _items_cust_bill_pkg {
}
} #if svc_acct-usage_seconds
- }
+ } # if we are showing service labels
unless ( $is_summary ) {
warn "$me _items_cust_bill_pkg adding details\n"
@@ -2673,15 +2683,15 @@ sub _items_cust_bill_pkg {
$amount = $cust_bill_pkg->usage;
}
- my $unit_amount =
- ( $cust_bill_pkg->unitrecur > 0 ) ? $cust_bill_pkg->unitrecur
- : $amount;
-
if ( !$type || $type eq 'R' ) {
warn "$me _items_cust_bill_pkg adding recur\n"
if $DEBUG > 1;
+ my $unit_amount =
+ ( $cust_bill_pkg->unitrecur > 0 ) ? $cust_bill_pkg->unitrecur
+ : $amount;
+
if ( $cust_bill_pkg->hidden ) {
$r->{amount} += $amount;
$r->{unit_amount} += $unit_amount;
@@ -2712,7 +2722,6 @@ sub _items_cust_bill_pkg {
# line for the bundle, add this package's total amount and
# usage details to it
$u->{amount} += $amount;
- $u->{unit_amount} += $unit_amount,
push @{ $u->{ext_description} }, @d;
} elsif ( $amount ) {
# create a new usage line
@@ -2722,8 +2731,6 @@ sub _items_cust_bill_pkg {
pkgnum => $cust_bill_pkg->pkgnum,
amount => $amount,
recur_show_zero => $cust_bill_pkg->recur_show_zero,
- unit_amount => $unit_amount,
- quantity => $cust_bill_pkg->quantity,
%item_dates,
ext_description => \@d,
};
@@ -2764,8 +2771,11 @@ sub _items_cust_bill_pkg {
foreach ( $s, $r, ($opt{skip_usage} ? () : $u ) ) {
if ( $_ ) {
$_->{amount} = sprintf( "%.2f", $_->{amount} ),
+ if exists($_->{amount});
$_->{amount} =~ s/^\-0\.00$/0.00/;
- $_->{unit_amount} = sprintf( "%.2f", $_->{unit_amount} ),
+ $_->{unit_amount} = sprintf('%.2f', $_->{unit_amount})
+ if exists($_->{unit_amount});
+
push @b, { %$_ }
if $_->{amount} != 0
|| $discount_show_always
commit 8acc9ad4acef84ace01e80cae1eb18ce90512c60
Author: Mark Wells <mark at freeside.biz>
Date: Tue Feb 4 16:33:22 2014 -0800
silence annoying warning
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm
index 229d4f6..3a210ba 100644
--- a/FS/FS/part_pkg/voip_cdr.pm
+++ b/FS/FS/part_pkg/voip_cdr.pm
@@ -453,10 +453,10 @@ sub calc_usage {
}
my %options = (
- 'disable_src' => $self->option('disable_src'),
- 'default_prefix' => $self->option('default_prefix'),
- 'cdrtypenum' => $self->option('use_cdrtypenum'),
- 'calltypenum' => $self->option('use_calltypenum'),
+ 'disable_src' => $self->option('disable_src',1),
+ 'default_prefix' => $self->option('default_prefix',1),
+ 'cdrtypenum' => $self->option('use_cdrtypenum',1),
+ 'calltypenum' => $self->option('use_calltypenum',1),
'status' => '',
'for_update' => 1,
); # $last_bill, $$sdate )
commit b34c29fb67ed6a08005e439ceb0393fef03e2c61
Author: Mark Wells <mark at freeside.biz>
Date: Tue Feb 4 16:18:14 2014 -0800
missing file for date_format localization
diff --git a/FS/FS/cust_main_Mixin.pm b/FS/FS/cust_main_Mixin.pm
index 92dea28..769b049 100644
--- a/FS/FS/cust_main_Mixin.pm
+++ b/FS/FS/cust_main_Mixin.pm
@@ -7,6 +7,7 @@ use FS::UID qw(dbh);
use FS::cust_main;
use FS::Record qw( qsearch qsearchs );
use FS::Misc qw( send_email generate_email );
+use HTML::Entities;
$DEBUG = 0;
$me = '[FS::cust_main_Mixin]';
@@ -582,16 +583,31 @@ sub mt {
return $lh->maketext(@_);
}
-=item time2str_local FORMAT, TIME
+=item time2str_local FORMAT, TIME[, ESCAPE]
Localizes a date (see L<Date::Language>) for the customer's locale.
+FORMAT can be a L<Date::Format> string, or one of these special words:
+
+- "short": the value of the "date_format" config setting for the customer's
+ locale, defaulting to "%x".
+- "rdate": the same as "short" except that the default has a four-digit year.
+- "long": the value of the "date_format_long" config setting for the
+ customer's locale, defaulting to "%b %o, %Y".
+
+ESCAPE, if specified, is one of "latex" or "html", and will escape non-ASCII
+characters and convert spaces to nonbreaking spaces.
+
=cut
sub time2str_local {
# renamed so that we don't have to change every single reference to
# time2str everywhere
my $self = shift;
+ my ($format, $time, $escape) = @_;
+ return '' unless $time > 0; # work around time2str's traditional stupidity
+
+ $self->{_date_format} ||= {};
if (!exists($self->{_dh})) {
my $cust_main = $self->cust_main;
my $locale = $cust_main->locale if $cust_main;
@@ -601,7 +617,31 @@ sub time2str_local {
Date::Language->new(); # fall back to English
$self->{_dh} = $dh;
}
- $self->{_dh}->time2str(@_);
+
+ if ($format eq 'short') {
+ $format = $self->{_date_format}->{short}
+ ||= $self->conf->config('date_format') || '%x';
+ } elsif ($format eq 'rdate') {
+ $format = $self->{_date_format}->{rdate}
+ ||= $self->conf->config('date_format') || '%m/%d/%Y';
+ } elsif ($format eq 'long') {
+ $format = $self->{_date_format}->{long}
+ ||= $self->conf->config('date_format_long') || '%b %o, %Y';
+ }
+
+ # actually render the date
+ my $string = $self->{_dh}->time2str($format, $time);
+
+ if ($escape) {
+ if ($escape eq 'html') {
+ $string = encode_entities($string);
+ $string =~ s/ +/ /g;
+ } elsif ($escape eq 'latex') { # just do nbsp's here
+ $string =~ s/ +/~/g;
+ }
+ }
+
+ $string;
}
=back
-----------------------------------------------------------------------
Summary of changes:
FS/FS/TemplateItem_Mixin.pm | 2 +-
FS/FS/Template_Mixin.pm | 32 ++++++++++++++++++++----------
FS/FS/cust_main_Mixin.pm | 44 +++++++++++++++++++++++++++++++++++++++++-
FS/FS/part_pkg/voip_cdr.pm | 8 +++---
4 files changed, 68 insertions(+), 18 deletions(-)
More information about the freeside-commits
mailing list