[freeside-commits] freeside/FS/FS/UI Web.pm,1.6,1.7
Ivan,,,
ivan at wavetail.420.am
Thu Jul 14 03:52:48 PDT 2005
Update of /home/cvs/cvsroot/freeside/FS/FS/UI
In directory wavetail:/tmp/cvs-serv8300/FS/FS/UI
Modified Files:
Web.pm
Log Message:
move account search (httemplate/search/svc_acct.cgi) to new template, cust-fields configuration value to control which customer fields are shown on reports
Index: Web.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/UI/Web.pm,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- Web.pm 2 Jun 2005 09:29:52 -0000 1.6
+++ Web.pm 14 Jul 2005 10:52:46 -0000 1.7
@@ -1,5 +1,8 @@
package FS::UI::Web;
+use FS::Conf;
+use FS::Record qw(dbdef);
+
#use vars qw(@ISA);
#use FS::UI
#@ISA = qw( FS::UI );
@@ -18,7 +21,102 @@
( $beginning, $ending );
}
+###
+# cust_main report methods
+###
+
+=item cust_header
+
+Returns an array of customer information headers according to the
+B<cust-fields> configuration setting.
+
+=cut
+
+use vars qw( @cust_fields );
+
+sub cust_sql_fields {
+ my @fields = qw( last first company );
+ push @fields, map "ship_$_", @fields
+ if dbdef->table('cust_main')->column('ship_last');
+ map "cust_main.$_", @fields;
+}
+
+sub cust_header {
+
+ warn "FS::svc_Common::cust_header called"
+ if $DEBUG;
+
+ my $conf = new FS::Conf;
+
+ my %header2method = (
+ 'Customer' => 'name',
+ 'Cust#' => 'custnum',
+ 'Name' => 'contact',
+ 'Company' => 'company',
+ '(bill) Customer' => 'name',
+ '(service) Customer' => 'ship_name',
+ '(bill) Name' => 'contact',
+ '(service) Name' => 'ship_contact',
+ '(bill) Company' => 'company',
+ '(service) Company' => 'ship_company',
+ );
+
+ my @cust_header;
+ if ( $conf->exists('cust-fields')
+ && $conf->config('cust-fields') =~ /^([\w \|\#\(\)]+):/
+ )
+ {
+ warn " found cust-fields configuration value"
+ if $DEBUG;
+
+ my $cust_fields = $1;
+ @cust_header = split(/ \| /, $cust_fields);
+ @cust_fields = map { $header2method{$_} } @cust_header;
+ } else {
+ warn " no cust-fields configuration value found; using default 'Customer'"
+ if $DEBUG;
+ @cust_header = ( 'Customer' );
+ @cust_fields = ( 'cust_name' );
+ }
+
+ #my $svc_x = shift;
+ @cust_header;
+}
+
+=item cust_fields
+
+Given a svc_ object that contains fields from cust_main (say, from a
+JOINed search. See httemplate/search/svc_* for examples), returns an array
+of customer information according to the <B>cust-fields</B> configuration
+setting, or "(unlinked)" if this service is not linked to a customer.
+
+=cut
+
+sub cust_fields {
+ my $svc_x = shift;
+ warn "FS::svc_Common::cust_fields called for $svc_x ".
+ "(cust_fields: @cust_fields)"
+ if $DEBUG > 1;
+
+ cust_header() unless @cust_fields;
+
+ my $seen_unlinked = 0;
+ map {
+ if ( $svc_x->custnum ) {
+ warn " $svc_x -> $_"
+ if $DEBUG > 1;
+ $svc_x->$_(@_);
+ } else {
+ warn " ($svc_x unlinked)"
+ if $DEBUG > 1;
+ $seen_unlinked++ ? '' : '(unlinked)';
+ }
+ } @cust_fields;
+}
+
+###
# begin JSRPC code...
+###
package FS::UI::Web::JSRPC;
More information about the freeside-commits
mailing list