X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_bill.pm;h=7669479eb4f17455eef8224ca6252a3aaa01e314;hp=25f9c495a210c3d49588fff1cdb9d54d7d8989b5;hb=982ded2d929bdcdfa72efa810273f3bc753bf036;hpb=06a1de4f0969dbbe1a689c1185393e664cdb907f diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 25f9c495a..7669479eb 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -1520,14 +1520,36 @@ isn't an open batch, one will be created. sub batch_invoice { my ($self, $opt) = @_; - my $batch = FS::bill_batch->get_open_batch; + my $bill_batch = $self->get_open_bill_batch; my $cust_bill_batch = FS::cust_bill_batch->new({ - batchnum => $batch->batchnum, + batchnum => $bill_batch->batchnum, invnum => $self->invnum, }); return $cust_bill_batch->insert($opt); } +=item get_open_batch + +Returns the currently open batch as an FS::bill_batch object, creating a new +one if necessary. (A per-agent batch if invoice_print_pdf-spoolagent is +enabled) + +=cut + +sub get_open_bill_batch { + my $self = shift; + my $hashref = { status => 'O' }; + $hashref->{'agentnum'} = $conf->exists('invoice_print_pdf-spoolagent') + ? $self->cust_main->agentnum + : ''; + my $batch = qsearchs('bill_batch', $hashref); + return $batch if $batch; + $batch = FS::bill_batch->new($hashref); + my $error = $batch->insert; + die $error if $error; + return $batch; +} + =item ftp_invoice [ TEMPLATENAME ] Sends this invoice data via FTP. @@ -3997,6 +4019,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; @@ -4016,8 +4040,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), @@ -4230,6 +4254,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 }; @@ -4259,8 +4285,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), @@ -4572,6 +4598,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 ) @@ -4597,8 +4625,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, @@ -4639,8 +4667,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); } @@ -4720,8 +4748,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); }