use Date::Language;
use Text::Template 1.20;
use File::Temp 0.14;
+use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
+use IO::Scalar;
use HTML::Entities;
-use Locale::Country;
use Cwd;
use FS::UID;
use FS::Misc qw( send_email );
if ( $cust_main->country eq $countrydefault ) {
$invoice_data{'country'} = '';
} else {
- $invoice_data{'country'} = &$escape_function(code2country($cust_main->country));
+ $invoice_data{'country'} = &$escape_function($cust_main->bill_country_full);
}
my @address = ();
if ($format eq 'latex');
}
- # let invoices use either of these as needed
- $invoice_data{'po_num'} = ($cust_main->payby eq 'BILL')
- ? $cust_main->payinfo : '';
- $invoice_data{'po_line'} =
- ( $cust_main->payby eq 'BILL' && $cust_main->payinfo )
- ? &$escape_function($self->mt("Purchase Order #").$cust_main->payinfo)
- : $nbsp;
+# if (well, probably when) we still need PO numbers in the brave new world of
+# 4.x, then we'll have to add them back as their own customer fields
+# # let invoices use either of these as needed
+# $invoice_data{'po_num'} = ($cust_main->payby eq 'BILL')
+# ? $cust_main->payinfo : '';
+# $invoice_data{'po_line'} =
+# ( $cust_main->payby eq 'BILL' && $cust_main->payinfo )
+# ? &$escape_function($self->mt("Purchase Order #").$cust_main->payinfo)
+# : $nbsp;
my %money_chars = ( 'latex' => '',
'html' => $conf->config('money_char') || '$',
my @otherparts = ();
if ( ref($self) eq 'FS::cust_bill' && $cust_main->email_csv_cdr ) {
- push @otherparts, build MIME::Entity
- 'Type' => 'text/csv',
- 'Encoding' => '7bit',
- 'Data' => [ map { "$_\n" }
- $self->call_details('prepend_billed_number' => 1)
- ],
- 'Disposition' => 'attachment',
- 'Filename' => 'usage-'. $self->invnum. '.csv',
- ;
+ if ( $conf->exists('voip-cust_email_csv_cdr_zip') ) {
+
+ my $data = join('', map "$_\n",
+ $self->call_details(prepend_billed_number=>1)
+ );
+
+ my $zip = new Archive::Zip;
+ my $file = $zip->addString( $data, 'usage-'.$self->invnum.'.csv' );
+ $file->desiredCompressionMethod( COMPRESSION_DEFLATED );
+
+ my $zipdata = '';
+ my $SH = IO::Scalar->new(\$zipdata);
+ my $status = $zip->writeToFileHandle($SH);
+ die "Error zipping CDR attachment: $!" unless $status == AZ_OK;
+
+ push @otherparts, build MIME::Entity
+ 'Type' => 'application/zip',
+ 'Encoding' => 'base64',
+ 'Data' => $zipdata,
+ 'Filename' => 'usage-'. $self->invnum. '.zip',
+ ;
+
+ } else {
+
+ push @otherparts, build MIME::Entity
+ 'Type' => 'text/csv',
+ 'Encoding' => '7bit',
+ 'Data' => [ map { "$_\n" }
+ $self->call_details('prepend_billed_number' => 1)
+ ],
+ 'Disposition' => 'attachment',
+ 'Filename' => 'usage-'. $self->invnum. '.csv',
+ ;
+
+ }
}