X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_bill.pm;h=32c2cb1a85bdb8055b6f9d4b2b875e1e706ed7b6;hb=d04a3f3b11ab9e1d32ffb328bf994e8f21fc51a1;hp=4975974014c20327487be7a1c08180a00afc9cb8;hpb=ef398b33e062bbb7a89c527bf4b34d62414c372c;p=freeside.git diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 497597401..32c2cb1a8 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -2132,7 +2132,7 @@ sub print_text { $params{'time'} = $today if $today; $params{'template'} = $template if $template; $params{$_} = $opt{$_} - foreach grep $opt{$_}, qw( unsquealch_cdr notice_name ); + foreach grep $opt{$_}, qw( unsquelch_cdr notice_name ); $self->print_generic( %params ); } @@ -2174,7 +2174,7 @@ sub print_latex { $params{'time'} = $today if $today; $params{'template'} = $template if $template; $params{$_} = $opt{$_} - foreach grep $opt{$_}, qw( unsquealch_cdr notice_name ); + foreach grep $opt{$_}, qw( unsquelch_cdr notice_name ); $template ||= $self->_agent_template; @@ -2857,8 +2857,7 @@ sub print_generic { push @detail_items, { 'description' => $didsummary_desc, 'ext_description' => [ $didsummary, $minutes ], - } - if !$multisection; + }; } foreach my $section (@sections, @$late_sections) { @@ -3952,6 +3951,8 @@ sub _items_extra_usage_sections { my %classnums = (); my %lines = (); + my $maxlength = $conf->config('cust_bill-latex_lineitem_maxlength') || 50; + my %usage_class = map { $_->classnum => $_ } qsearch( 'usage_class', {} ); foreach my $cust_bill_pkg ( $self->cust_bill_pkg ) { next unless $cust_bill_pkg->pkgnum > 0; @@ -3971,8 +3972,8 @@ sub _items_extra_usage_sections { my $desc = $detail->regionname; my $description = $desc; - $description = substr($desc, 0, 50). '...' - if $format eq 'latex' && length($desc) > 50; + $description = substr($desc, 0, $maxlength). '...' + if $format eq 'latex' && length($desc) > $maxlength; $lines{$section}{$desc} ||= { description => &{$escape}($description), @@ -4055,7 +4056,7 @@ sub _did_summary { my $inserted = $h_cust_svc->date_inserted; my $deleted = $h_cust_svc->date_deleted; - my $phone_inserted = $h_cust_svc->h_svc_x($inserted); + my $phone_inserted = $h_cust_svc->h_svc_x($inserted+5); my $phone_deleted; $phone_deleted = $h_cust_svc->h_svc_x($deleted) if $deleted; @@ -4088,10 +4089,13 @@ sub _did_summary { } # increment usage minutes - my @cdrs = $phone_inserted->get_cdrs('begin'=>$start,'end'=>$end); - foreach my $cdr ( @cdrs ) { - $minutes += $cdr->billsec/60; - } + if ( $phone_inserted ) { + my @cdrs = $phone_inserted->get_cdrs('begin'=>$start,'end'=>$end,'billsec_sum'=>1); + $minutes = $cdrs[0]->billsec_sum if scalar(@cdrs) == 1; + } + else { + warn "WARNING: no matching h_svc_phone insert record for insert time $inserted, svcnum " . $h_cust_svc->svcnum; + } # don't look at this service again push @seen, $h_cust_svc->svcnum; @@ -4113,6 +4117,8 @@ sub _items_svc_phone_sections { my %classnums = (); my %lines = (); + my $maxlength = $conf->config('cust_bill-latex_lineitem_maxlength') || 50; + my %usage_class = map { $_->classnum => $_ } qsearch( 'usage_class', {} ); $usage_class{''} ||= new FS::usage_class { 'classname' => '', 'weight' => 0 }; @@ -4142,8 +4148,8 @@ sub _items_svc_phone_sections { my $desc = $detail->regionname; my $description = $desc; - $description = substr($desc, 0, 50). '...' - if $format eq 'latex' && length($desc) > 50; + $description = substr($desc, 0, $maxlength). '...' + if $format eq 'latex' && length($desc) > $maxlength; $lines{$phonenum}{$desc} ||= { description => &{$escape}($description), @@ -4455,6 +4461,8 @@ sub _items_cust_bill_pkg { my $multisection = $opt{multisection} || ''; my $discount_show_always = 0; + my $maxlength = $conf->config('cust_bill-latex_lineitem_maxlength') || 50; + my @b = (); my ($s, $r, $u) = ( undef, undef, undef ); foreach my $cust_bill_pkg ( @$cust_bill_pkgs ) @@ -4480,8 +4488,8 @@ sub _items_cust_bill_pkg { my $type = $display->type; my $desc = $cust_bill_pkg->desc; - $desc = substr($desc, 0, 50). '...' - if $format eq 'latex' && length($desc) > 50; + $desc = substr($desc, 0, $maxlength). '...' + if $format eq 'latex' && length($desc) > $maxlength; my %details_opt = ( 'format' => $format, 'escape_function' => $escape_function, @@ -4495,13 +4503,21 @@ sub _items_cust_bill_pkg { my $cust_pkg = $cust_bill_pkg->cust_pkg; - if ( $cust_bill_pkg->setup != 0 && (!$type || $type eq 'S') ) { + if ( (!$type || $type eq 'S') + && ( $cust_bill_pkg->setup != 0 + || $cust_bill_pkg->setup_show_zero + ) + ) + { warn "$me _items_cust_bill_pkg adding setup\n" if $DEBUG > 1; my $description = $desc; - $description .= ' Setup' if $cust_bill_pkg->recur != 0; + $description .= ' Setup' + if $cust_bill_pkg->recur != 0 + || $discount_show_always + || $cust_bill_pkg->recur_show_zero; my @d = (); unless ( $cust_pkg->part_pkg->hide_svc_detail @@ -4514,8 +4530,8 @@ sub _items_cust_bill_pkg { if ( $multilocation ) { my $loc = $cust_pkg->location_label; - $loc = substr($loc, 0, 50). '...' - if $format eq 'latex' && length($loc) > 50; + $loc = substr($loc, 0, $maxlength). '...' + if $format eq 'latex' && length($loc) > $maxlength; push @d, &{$escape_function}($loc); } @@ -4530,6 +4546,7 @@ sub _items_cust_bill_pkg { push @{ $s->{ext_description} }, @d; } else { $s = { + _is_setup => 1, description => $description, #pkgpart => $part_pkg->pkgpart, pkgnum => $cust_bill_pkg->pkgnum, @@ -4562,7 +4579,8 @@ sub _items_cust_bill_pkg { $description .= " (" . time2str($date_format, $cust_bill_pkg->sdate). " - ". time2str($date_format, $cust_bill_pkg->edate). ")" - unless $conf->exists('disable_line_item_date_ranges'); + unless $conf->exists('disable_line_item_date_ranges') + || $cust_pkg->part_pkg->option('disable_line_item_date_ranges',1); my @d = (); @@ -4593,8 +4611,8 @@ sub _items_cust_bill_pkg { if ( $multilocation ) { my $loc = $cust_pkg->location_label; - $loc = substr($loc, 0, 50). '...' - if $format eq 'latex' && length($loc) > 50; + $loc = substr($loc, 0, $maxlength). '...' + if $format eq 'latex' && length($loc) > $maxlength; push @d, &{$escape_function}($loc); } @@ -4705,7 +4723,9 @@ sub _items_cust_bill_pkg { push @b, { %$_ } if $_->{amount} != 0 || $discount_show_always - || $cust_bill_pkg->recur_show_zero; + || ( ! $_->{_is_setup} && $cust_bill_pkg->recur_show_zero ) + || ( $_->{_is_setup} && $cust_bill_pkg->setup_show_zero ) + ; $_ = undef; } }