diff options
| author | ivan <ivan> | 2004-12-09 09:21:43 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2004-12-09 09:21:43 +0000 | 
| commit | 8d4abaa99403699aa5b5f02e899d2ea33980f913 (patch) | |
| tree | 08cb2a528d281f9f5861fc94b8f3657abf57b8a7 | |
| parent | 8127468dc459a8257ab7c15cca10801b9b2a3551 (diff) | |
more RT integration
| -rw-r--r-- | FS/FS/TicketSystem/RT_External.pm | 108 | ||||
| -rw-r--r-- | FS/FS/TicketSystem/RT_Internal.pm | 19 | ||||
| -rwxr-xr-x | httemplate/search/cust_main.cgi | 13 | ||||
| -rwxr-xr-x | httemplate/view/cust_main.cgi | 273 | ||||
| -rw-r--r-- | httemplate/view/cust_main/billing.html | 119 | ||||
| -rw-r--r-- | httemplate/view/cust_main/contacts.html | 131 | ||||
| -rw-r--r-- | httemplate/view/cust_main/misc.html | 75 | ||||
| -rw-r--r-- | httemplate/view/cust_main/tickets.html | 54 | 
8 files changed, 533 insertions, 259 deletions
| diff --git a/FS/FS/TicketSystem/RT_External.pm b/FS/FS/TicketSystem/RT_External.pm index 3bb1991f5..7a39c9153 100644 --- a/FS/FS/TicketSystem/RT_External.pm +++ b/FS/FS/TicketSystem/RT_External.pm @@ -25,42 +25,93 @@ sub num_customer_tickets {    #$dbh ||= create one from some config options +  my( $from_sql, @param) = $self->_from_customer( $custnum, $priority ); + +  my $sql = "select count(*) $from_sql"; +  my $sth = $dbh->prepare($sql) or die $dbh->errstr. " preparing $sql"; +  $sth->execute(@param)         or die $sth->errstr. " executing $sql"; + +  $sth->fetchrow_arrayref->[0]; + +} + +sub customer_tickets { +  my( $self, $custnum, $limit, $priority, $dbh ) = @_; +  $limit ||= 0; + +  #$dbh ||= create one from some config options + +  my( $from_sql, @param) = $self->_from_customer( $custnum, $priority ); +  my $sql = "select * $from_sql order by priority desc limit $limit"; +  my $sth = $dbh->prepare($sql) or die $dbh->errstr. "preparing $sql"; +  $sth->execute(@param)         or die $sth->errstr. "executing $sql"; + +  #munge column names???  #httemplate/view/cust_main/tickets.html has column +  #names that might not make sense now... +  $sth->fetchall_arrayref({}); + +} + +sub _from_customer { +  my( $self, $custnum, $priority ) = @_; +    my @param = (); -  my $priority_sql = ''; +  my $join = ''; +  my $where = '';    if ( defined($priority) ) { + +    my $queue_sql = " customfields.queue = ( select id from queues +                                              where queues.name = ? ) +                      or ( ? = '' and customfields.queue = 0 )"; +      if ( length($priority) ) { -      my $queue_sql = " queue = ( select id from queues where queues.name = ? ) -                        or ( ? = '' and queue = 0 )"; -      $priority_sql = " -        and ? = ( select content from TicketCustomFieldValues -                   where ticket = tickets.id -                     and customfield = ( select id from customfields -                                          where name = ? -                                            and ( $queue_sql ) -                                       ) -                ) -      "; -      push @param, $priority, -                   $priority_field, -                   $priority_field_queue, -                   $priority_field_queue; +      #$where = "     +      #  and ? = ( select content from TicketCustomFieldValues +      #             where ticket = tickets.id +      #               and customfield = ( select id from customfields +      #                                    where name = ? +      #                                      and ( $queue_sql ) +      #                                 ) +      #          ) +      #"; +      push @param, $priority; + +      $join = "join TicketCustomFieldValues +                 on ( tickets.id = TicketCustomFieldValues.ticket )"; +       +      $where = "and content = ? +                and customfield = ( select id from customfields +                                     where name = ? +                                       and ( $queue_sql ) +                                  ) +               ";      } else { -      return '0nothandledyet0'; +      $where = +               "and 0 = ( select count(*) from TicketCustomFieldValues +                           where ticket = tickets.id +                             and customfield = ( select id from customfields +                                                  where name = ? +                                                    and ( $queue_sql ) +                                               ) +                        ) +               ";      } +    push @param, $priority_field, +                 $priority_field_queue, +                 $priority_field_queue;    }    my $sql = " -    select count(*) from tickets +                    from tickets +                    join queues on ( tickets.queue = queues.id )                      join links on ( tickets.id = links.localbase ) +                    $join          where ( status = 'new' or status = 'open' or status = 'stalled' )           and target = 'freeside://freeside/cust_main/$custnum' -         $priority_sql +         $where    "; -  my $sth = $dbh->prepare($sql) or die $dbh->errstr; -  $sth->execute(@param)         or die $sth->errstr; - -  $sth->fetchrow_arrayref->[0]; +  ( $sql, @param );  } @@ -99,5 +150,16 @@ sub href_customer_tickets {    $href;  } + +sub href_new_ticket { +  my( $self, $custnum ) = @_; +  'Ticket/Create.html?Queue=1&new-MemberOf=freeside://freeside/cust_main/'.$custnum; +} + +sub href_ticket { +  my($self, $ticketnum) = @_; +  'Ticket/Display.html?id='.$ticketnum; +} +  1; diff --git a/FS/FS/TicketSystem/RT_Internal.pm b/FS/FS/TicketSystem/RT_Internal.pm index a2cd0246a..00398230f 100644 --- a/FS/FS/TicketSystem/RT_Internal.pm +++ b/FS/FS/TicketSystem/RT_Internal.pm @@ -8,7 +8,7 @@ use FS::TicketSystem::RT_Libs;  @ISA = qw( FS::TicketSystem::RT_Libs ); -sub sql_customer_tickets { +sub sql_num_customer_tickets {    "( select count(*) from tickets                       join links on ( tickets.id = links.localbase )       where ( status = 'new' or status = 'open' or status = 'stalled' ) @@ -21,11 +21,28 @@ sub num_customer_tickets {    $self->SUPER::num_customer_tickets( $custnum, $priority, dbh );  } +sub customer_tickets { +  my( $self, $custnum, $limit, $priority ) = ( shift, shift, shift, shift ); +  $self->SUPER::customer_tickets( $custnum, $limit, $priority, dbh ); +} +  sub href_customer_tickets {    my $self = shift;    # well, 2 is wrong here but will have to do for now    popurl(2).'rt/'. $self->SUPER::href_customer_tickets(@_);  } +sub href_new_ticket { +  my $self = shift; +  # well, 2 is wrong here but will have to do for now +  popurl(2).'rt/'. $self->SUPER::href_new_ticket(@_); +} + +sub href_ticket { +  my $self = shift; +  # well, 2 is wrong here but will have to do for now +  popurl(2).'rt/'. $self->SUPER::href_ticket(@_); +} +  1; diff --git a/httemplate/search/cust_main.cgi b/httemplate/search/cust_main.cgi index a12c180a5..ca9df87a6 100755 --- a/httemplate/search/cust_main.cgi +++ b/httemplate/search/cust_main.cgi @@ -71,7 +71,7 @@ if ( $cgi->param('browse')      } elsif ( $query eq 'tickets' ) {        $sortby = \*tickets_sort;        $orderby = "ORDER BY tickets DESC"; -      push @select, FS::TicketSystem->sql_customer_tickets. " as tickets"; +      push @select, FS::TicketSystem->sql_num_customer_tickets. " as tickets";        push @addl_headers, 'Tickets';        push @addl_cols, 'tickets';      } else { @@ -402,7 +402,7 @@ END        if ( $addl_col eq 'tickets' ) {          if ( @custom_priorities ) {            print '<TABLE>'; -          foreach my $priority ( @custom_priorities ) { +          foreach my $priority ( @custom_priorities, '' ) {              my $ahref =                '<A HREF="'.                  FS::TicketSystem->href_customer_tickets($custnum,$priority). @@ -410,16 +410,19 @@ END              print "<TR><TD ALIGN=right>$ahref".                      FS::TicketSystem->num_customer_tickets($custnum,$priority).                    "</A></TD>". -                  "<TD ALIGN=left>$ahref$priority</A></TD></TR>"; +                  "<TD ALIGN=left>$ahref". +                  ( $priority || '<i>(none)</i>' ). +                  </A></TD></TR>";            } -          print "<TR><TD ALIGN=right>"; +          print '<TR><TD BGCOLOR="#000000" COLSPAN=2> </TD></TR>'. +                '<TR><TD ALIGN=right>';          }          my $ahref =            '<A HREF="'.              FS::TicketSystem->href_customer_tickets($custnum).            '">';          print $ahref. $cust_main->get($addl_col). '</A>'; -        print "</TD><TD ALIGN=left>${ahref}total</A></TD></TR></TABLE>" +        print "</TD><TD ALIGN=left>${ahref}Total</A></TD></TR></TABLE>"            if @custom_priorities;        } else {          print $cust_main->get($addl_col); diff --git a/httemplate/view/cust_main.cgi b/httemplate/view/cust_main.cgi index 9aa008969..322f0674e 100755 --- a/httemplate/view/cust_main.cgi +++ b/httemplate/view/cust_main.cgi @@ -70,239 +70,43 @@ print "This customer's signup URL: ".        "<a href=\"$signupurl?ref=$custnum\">$signupurl?ref=$custnum</a><BR><BR>";  } -print '<A NAME="cust_main"></A>'; - -print &itable(), '<TR>'; - -print '<TD VALIGN="top">'; - -  print "Billing address", &ntable("#cccccc"), "<TR><TD>", -        &ntable("#cccccc",2), -    '<TR><TD ALIGN="right">Contact name</TD>', -      '<TD COLSPAN=3 BGCOLOR="#ffffff">', -      $cust_main->last, ', ', $cust_main->first, -      '</TD>'; -print '<TD ALIGN="right">SS#</TD><TD BGCOLOR="#ffffff">', -      $cust_main->ss || ' ', '</TD>' -  if $conf->exists('show_ss'); - -print '</TR>', -    '<TR><TD ALIGN="right">Company</TD><TD COLSPAN=5 BGCOLOR="#ffffff">', -      $cust_main->company, -      '</TD></TR>', -    '<TR><TD ALIGN="right">Address</TD><TD COLSPAN=5 BGCOLOR="#ffffff">', -      $cust_main->address1, -      '</TD></TR>', -  ; -  print '<TR><TD ALIGN="right"> </TD><TD COLSPAN=5 BGCOLOR="#ffffff">', -        $cust_main->address2, '</TD></TR>' -    if $cust_main->address2; -  print '<TR><TD ALIGN="right">City</TD><TD BGCOLOR="#ffffff">', -          $cust_main->city, -          '</TD><TD ALIGN="right">State</TD><TD BGCOLOR="#ffffff">', -          $cust_main->state, -          '</TD><TD ALIGN="right">Zip</TD><TD BGCOLOR="#ffffff">', -          $cust_main->zip, '</TD></TR>', -        '<TR><TD ALIGN="right">Country</TD><TD BGCOLOR="#ffffff">', -          $cust_main->country, -          '</TD></TR>', -  ; -  my $daytime_label = FS::Msgcat::_gettext('daytime') || 'Day Phone'; -  my $night_label = FS::Msgcat::_gettext('night') || 'Night Phone'; -  print '<TR><TD ALIGN="right">'. $daytime_label. -          '</TD><TD COLSPAN=5 BGCOLOR="#ffffff">', -          $cust_main->daytime || ' ', '</TD></TR>', -        '<TR><TD ALIGN="right">'. $night_label.  -          '</TD><TD COLSPAN=5 BGCOLOR="#ffffff">', -          $cust_main->night || ' ', '</TD></TR>', -        '<TR><TD ALIGN="right">Fax</TD><TD COLSPAN=5 BGCOLOR="#ffffff">', -          $cust_main->fax || ' ', '</TD></TR>', -        '</TABLE>', "</TD></TR></TABLE>" -  ; - -  if ( defined $cust_main->dbdef_table->column('ship_last') ) { - -    my $pre = $cust_main->ship_last ? 'ship_' : ''; - -    print "<BR>Service address", &ntable("#cccccc"), "<TR><TD>", -          &ntable("#cccccc",2), -      '<TR><TD ALIGN="right">Contact name</TD>', -        '<TD COLSPAN=5 BGCOLOR="#ffffff">', -        $cust_main->get("${pre}last"), ', ', $cust_main->get("${pre}first"), -        '</TD></TR>', -      '<TR><TD ALIGN="right">Company</TD><TD COLSPAN=5 BGCOLOR="#ffffff">', -        $cust_main->get("${pre}company"), -        '</TD></TR>', -      '<TR><TD ALIGN="right">Address</TD><TD COLSPAN=5 BGCOLOR="#ffffff">', -        $cust_main->get("${pre}address1"), -        '</TD></TR>', -    ; -    print '<TR><TD ALIGN="right"> </TD><TD COLSPAN=5 BGCOLOR="#ffffff">', -          $cust_main->get("${pre}address2"), '</TD></TR>' -      if $cust_main->get("${pre}address2"); -    print '<TR><TD ALIGN="right">City</TD><TD BGCOLOR="#ffffff">', -            $cust_main->get("${pre}city"), -            '</TD><TD ALIGN="right">State</TD><TD BGCOLOR="#ffffff">', -            $cust_main->get("${pre}state"), -            '</TD><TD ALIGN="right">Zip</TD><TD BGCOLOR="#ffffff">', -            $cust_main->get("${pre}zip"), '</TD></TR>', -          '<TR><TD ALIGN="right">Country</TD><TD BGCOLOR="#ffffff">', -            $cust_main->get("${pre}country"), -            '</TD></TR>', -    ; -    print '<TR><TD ALIGN="right">'. $daytime_label. '</TD>', -          '<TD COLSPAN=5 BGCOLOR="#ffffff">', -            $cust_main->get("${pre}daytime") || ' ', '</TD></TR>', -          '<TR><TD ALIGN="right">'. $night_label. '</TD>'. -          '<TD COLSPAN=5 BGCOLOR="#ffffff">', -            $cust_main->get("${pre}night") || ' ', '</TD></TR>', -          '<TR><TD ALIGN="right">Fax</TD><TD COLSPAN=5 BGCOLOR="#ffffff">', -            $cust_main->get("${pre}fax") || ' ', '</TD></TR>', -          '</TABLE>', "</TD></TR></TABLE>" -    ; - -  } - -print '</TD>'; - -print '<TD VALIGN="top">'; - -  print &ntable("#cccccc"), "<TR><TD>", &ntable("#cccccc",2), -        '<TR><TD ALIGN="right">Customer number</TD><TD BGCOLOR="#ffffff">', -        $custnum, '</TD></TR>', -  ; - -  my @agents = qsearch( 'agent', {} ); -  my $agent; -  unless ( scalar(@agents) == 1 ) { -    $agent = qsearchs('agent',{ 'agentnum' => $cust_main->agentnum } ); -    print '<TR><TD ALIGN="right">Agent</TD><TD BGCOLOR="#ffffff">', -        $agent->agentnum, ": ", $agent->agent, '</TD></TR>'; -  } else { -    $agent = $agents[0]; -  } -  my @referrals = qsearch( 'part_referral', {} ); -  unless ( scalar(@referrals) == 1 ) { -    my $referral = qsearchs('part_referral', { -      'refnum' => $cust_main->refnum -    } ); -    print '<TR><TD ALIGN="right">Advertising source</TD><TD BGCOLOR="#ffffff">', -          $referral->refnum, ": ", $referral->referral, '</TD></TR>'; -  } -  print '<TR><TD ALIGN="right">Order taker</TD><TD BGCOLOR="#ffffff">', -    $cust_main->otaker, '</TD></TR>'; - -  print '<TR><TD ALIGN="right">Referring Customer</TD><TD BGCOLOR="#ffffff">'; -  my $referring_cust_main = ''; -  if ( $cust_main->referral_custnum -       && ( $referring_cust_main = -            qsearchs('cust_main', { custnum => $cust_main->referral_custnum } ) -          ) -     ) { -    print '<A HREF="'. popurl(1). 'cust_main.cgi?'. -          $cust_main->referral_custnum. '">'. -          $cust_main->referral_custnum. ': '. -          ( $referring_cust_main->company -              ? $referring_cust_main->company. ' ('. -                  $referring_cust_main->last. ', '. $referring_cust_main->first. -                  ')' -              : $referring_cust_main->last. ', '. $referring_cust_main->first -          ). -          '</A>'; -  } -  print '</TD></TR>'; - -  print '</TABLE></TD></TR></TABLE>'; - -print '<BR>'; - -if ( $conf->config('payby-default') ne 'HIDE' ) { - -  my @invoicing_list = $cust_main->invoicing_list; -  print "Billing information (", -       qq!<A HREF="!, popurl(2), qq!misc/bill.cgi?$custnum">!, "Bill now</A>)", -        &ntable("#cccccc"), "<TR><TD>", &ntable("#cccccc",2), -        '<TR><TD ALIGN="right">Tax exempt</TD><TD BGCOLOR="#ffffff">', -        $cust_main->tax ? 'yes' : 'no', -        '</TD></TR>', -        '<TR><TD ALIGN="right">Postal invoices</TD><TD BGCOLOR="#ffffff">', -        ( grep { $_ eq 'POST' } @invoicing_list ) ? 'yes' : 'no', -        '</TD></TR>', -        '<TR><TD ALIGN="right">Email invoices</TD><TD BGCOLOR="#ffffff">', -        join(', ', grep { $_ ne 'POST' } @invoicing_list ) || 'no', -        '</TD></TR>', -        '<TR><TD ALIGN="right">Billing type</TD><TD BGCOLOR="#ffffff">', -  ; - -  if ( $cust_main->payby eq 'CARD' || $cust_main->payby eq 'DCRD' ) { -    my $payinfo = $cust_main->payinfo_masked; -    print 'Credit card ', -          ( $cust_main->payby eq 'CARD' ? '(automatic)' : '(on-demand)' ), -          '</TD></TR>', -          '<TR><TD ALIGN="right">Card number</TD><TD BGCOLOR="#ffffff">', -          $payinfo, '</TD></TR>', -          '<TR><TD ALIGN="right">Expiration</TD><TD BGCOLOR="#ffffff">', -          $cust_main->paydate, '</TD></TR>', -          '<TR><TD ALIGN="right">Name on card</TD><TD BGCOLOR="#ffffff">', -          $cust_main->payname, '</TD></TR>' -    ; -  } elsif ( $cust_main->payby eq 'CHEK' || $cust_main->payby eq 'DCHK') { -    my( $account, $aba ) = split('@', $cust_main->payinfo ); -    print 'Electronic check ', -          ( $cust_main->payby eq 'CHEK' ? '(automatic)' : '(on-demand)' ), -          '</TD></TR>', -          '<TR><TD ALIGN="right">Account number</TD><TD BGCOLOR="#ffffff">', -          $account, '</TD></TR>', -          '<TR><TD ALIGN="right">ABA/Routing code</TD><TD BGCOLOR="#ffffff">', -          $aba, '</TD></TR>', -          '<TR><TD ALIGN="right">Bank name</TD><TD BGCOLOR="#ffffff">', -          $cust_main->payname, '</TD></TR>' -    ; -  } elsif ( $cust_main->payby eq 'LECB' ) { -    $cust_main->payinfo =~ /^(\d{3})(\d{3})(\d{4})$/; -    my $payinfo = "$1-$2-$3"; -    print 'Phone bill billing</TD></TR>', -          '<TR><TD ALIGN="right">Phone number</TD><TD BGCOLOR="#ffffff">', -          $payinfo, '</TD></TR>', -    ; -  } elsif ( $cust_main->payby eq 'BILL' ) { -    print 'Billing</TD></TR>'; -    print '<TR><TD ALIGN="right">P.O. </TD><TD BGCOLOR="#ffffff">', -          $cust_main->payinfo, '</TD></TR>', -      if $cust_main->payinfo; -    print '<TR><TD ALIGN="right">Expiration</TD><TD BGCOLOR="#ffffff">', -          $cust_main->paydate, '</TD></TR>', -          '<TR><TD ALIGN="right">Attention</TD><TD BGCOLOR="#ffffff">', -          $cust_main->payname, '</TD></TR>', -    ; -  } elsif ( $cust_main->payby eq 'COMP' ) { -    print 'Complimentary</TD></TR>', -          '<TR><TD ALIGN="right">Authorized by</TD><TD BGCOLOR="#ffffff">', -          $cust_main->payinfo, '</TD></TR>', -          '<TR><TD ALIGN="right">Expiration</TD><TD BGCOLOR="#ffffff">', -          $cust_main->paydate, '</TD></TR>', -    ; -  } - -  print "</TABLE></TD></TR></TABLE>"; - -} +%> -print '</TD></TR></TABLE>'; +<A NAME="cust_main"></A> +<%= &itable() %> +<TR> +  <TD VALIGN="top"> +    <%= include('cust_main/contacts.html', $cust_main ) %> +  </TD> +  <TD VALIGN="top"> +    <%= include('cust_main/misc.html', $cust_main ) %> +    <% if ( $conf->config('payby-default') ne 'HIDE' ) { %> +      <BR> +      <%= include('cust_main/billing.html', $cust_main ) %> +    <% } %> +  </TD> +</TR> +</TABLE> +<%  if ( defined $cust_main->dbdef_table->column('comments') -     && $cust_main->comments =~ /[^\s\n\r]/ ) -{ -  print "<BR>Comments". &ntable("#cccccc"). "<TR><TD>". -        &ntable("#cccccc",2). -        '<TR><TD BGCOLOR="#ffffff"><PRE>'. -        encode_entities($cust_main->comments). -        '</PRE></TD></TR></TABLE></TABLE>'; -} - +     && $cust_main->comments =~ /[^\s\n\r]/              ) {  %> +<BR> +Comments +<%= ntable("#cccccc") %><TR><TD><%= ntable("#cccccc",2) %> +<TR> +  <TD BGCOLOR="#ffffff"> +    <PRE><%= encode_entities($cust_main->comments) %></PRE> +  </TD> +</TR> +</TABLE></TABLE> +<% } %> -</TD></TR></TABLE> +<% if ( $conf->config('ticket_system') ) { %> +  <BR> +  <%= include('cust_main/tickets.html', $cust_main ) %> +<% } %>  <BR>  <SCRIPT TYPE="text/javascript"> @@ -319,6 +123,15 @@ function enable_order_pkg () {  <SELECT NAME="pkgpart" onChange="enable_order_pkg()"><OPTION>Order additional package  <% + +my @agents = qsearch( 'agent', {} ); +my $agent; +unless ( scalar(@agents) == 1 ) { +  $agent = qsearchs('agent',{ 'agentnum' => $cust_main->agentnum } ); +} else { +  $agent = $agents[0]; +} +  foreach my $part_pkg (    qsearch( 'part_pkg', { 'disabled' => '' }, '',             ' AND 0 < ( SELECT COUNT(*) FROM type_pkgs '. @@ -330,7 +143,7 @@ foreach my $part_pkg (  <OPTION VALUE="<%= $part_pkg->pkgpart %>"><%= $part_pkg->pkg %> - <%= $part_pkg->comment %>  <% } %> -</SELECT><INPUT NAME="submit" TYPE="submit" VALUE="Order Package" disabled></FORM><BR> +</SELECT><INPUT NAME="submit" TYPE="submit" VALUE="Order Package" disabled></FORM>  <% @@ -364,7 +177,7 @@ if ( $conf->config('payby-default') ne 'HIDE' ) {  }  print qq!<A NAME="cust_pkg">Packages</A> !, -      qq!( <A HREF="!, popurl(2), qq!edit/cust_pkg.cgi?$custnum">Order and cancel packages</A> (preserves services) )!, +      qq!( <A HREF="!, popurl(2), qq!edit/cust_pkg.cgi?$custnum">Bulk order and cancel packages</A> (preserves services) )!,  ;  #begin display packages diff --git a/httemplate/view/cust_main/billing.html b/httemplate/view/cust_main/billing.html new file mode 100644 index 000000000..18a203bd6 --- /dev/null +++ b/httemplate/view/cust_main/billing.html @@ -0,0 +1,119 @@ +<% +  my( $cust_main ) = @_; +  my @invoicing_list = $cust_main->invoicing_list; +%> + +Billing information +(<A HREF="<%= $p %>misc/bill.cgi?<%= $cust_main->custnum %>">Bill now</A>) +<%= ntable("#cccccc") %><TR><TD><%= ntable("#cccccc",2) %> +<TR> +  <TD ALIGN="right">Tax exempt</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->tax ? 'yes' : 'no' %></TD> +</TR> +<TR> +  <TD ALIGN="right">Postal invoices</TD> +  <TD BGCOLOR="#ffffff"> +    <%= ( grep { $_ eq 'POST' } @invoicing_list ) ? 'yes' : 'no' %> +  </TD> +</TR> +<TR> +  <TD ALIGN="right">Email invoices</TD> +  <TD BGCOLOR="#ffffff"> +    <%= join(', ', grep { $_ ne 'POST' } @invoicing_list ) || 'no' %> +  </TD> +</TR> +<TR> +  <TD ALIGN="right">Billing type</TD> +  <TD BGCOLOR="#ffffff"> + +<% if ( $cust_main->payby eq 'CARD' || $cust_main->payby eq 'DCRD' ) { %> + +    Credit card <%= $cust_main->payby eq 'CARD' ? '(automatic)' : '(on-demand)' %> +  </TD> +</TR> +<TR> +  <TD ALIGN="right">Card number</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->payinfo_masked %></TD> +</TR> +<TR> +  <TD ALIGN="right">Expiration</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->paydate %></TD> +</TR> +<TR> +  <TD ALIGN="right">Name on card</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->payname %></TD> +</TR> + +<% } elsif ( $cust_main->payby eq 'CHEK' || $cust_main->payby eq 'DCHK') { +     my( $account, $aba ) = split('@', $cust_main->payinfo ); +%> + +    Electronic check <%= $cust_main->payby eq 'CHEK' ? '(automatic)' : '(on-demand)' %> +  </TD> +</TR> +<TR> +  <TD ALIGN="right">ABA/Routing code</TD> +  <TD BGCOLOR="#ffffff"><%= $aba %></TD> +</TR> +<TR> +  <TD ALIGN="right">Account number</TD> +  <TD BGCOLOR="#ffffff"><%= $account %></TD> +</TR> +<TR> +  <TD ALIGN="right">Bank name</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->payname %></TD> +</TR> + +<% } elsif ( $cust_main->payby eq 'LECB' ) { +     $cust_main->payinfo =~ /^(\d{3})(\d{3})(\d{4})$/; +     my $payinfo = "$1-$2-$3"; +%> + +    Phone bill billing +  </TD> +</TR> +<TR> +  <TD ALIGN="right">Phone number</TD> +  <TD BGCOLOR="#ffffff"><%= $payinfo %></TD> +</TR> + +<% } elsif ( $cust_main->payby eq 'BILL' ) { %> + +    Billing +  </TD> +</TR> + +  <% if ( $cust_main->payinfo ) { %> +<TR> +  <TD ALIGN="right">P.O. </TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->payinfo %></TD> +</TR> +  <% } %> + +<TR> +  <TD ALIGN="right">Expiration</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->paydate %></TD> +</TR> +<TR> +  <TD ALIGN="right">Attention</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->payname %></TD> +</TR> + +<% } elsif ( $cust_main->payby eq 'COMP' ) { %> + +    Complimentary +  </TD> +</TR> +<TR> +  <TD ALIGN="right">Authorized by</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->payinfo %></TD> +</TR> +<TR> +  <TD ALIGN="right">Expiration</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->paydate %></TD> +</TR> + +<% } %> + +</TABLE></TD></TR></TABLE> + diff --git a/httemplate/view/cust_main/contacts.html b/httemplate/view/cust_main/contacts.html new file mode 100644 index 000000000..456d117a6 --- /dev/null +++ b/httemplate/view/cust_main/contacts.html @@ -0,0 +1,131 @@ +<% +  my( $cust_main ) = @_; +  my $conf = new FS::Conf; +%> + +Billing address +<%= ntable("#cccccc") %><TR><TD><%= ntable("#cccccc",2) %> +<TR> +  <TD ALIGN="right">Contact name</TD> +  <TD COLSPAN=3 BGCOLOR="#ffffff"> +    <%= $cust_main->last. ', '. $cust_main->first %> +  </TD> +<% if ( $conf->exists('show_ss') ) { %> +  <TD ALIGN="right">SS#</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->ss || ' ' %></TD> +<% } %> +</TR> +<TR> +  <TD ALIGN="right">Company</TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"><%= $cust_main->company %></TD> +</TR> +<TR> +  <TD ALIGN="right">Address</TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"><%= $cust_main->address1 %></TD> +</TR> +<% if ( $cust_main->address2 ) { %> +<TR> +  <TD ALIGN="right"> </TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"><%= $cust_main->address2 %></TD> +</TR> +<% } %> +<TR> +  <TD ALIGN="right">City</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->city %></TD> +  <TD ALIGN="right">State</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->state %></TD> +  <TD ALIGN="right">Zip</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->zip %></TD> +</TR> +<TR> +  <TD ALIGN="right">Country</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->country %></TD> +</TR> +<% +  my $daytime_label = FS::Msgcat::_gettext('daytime') =~ /^(daytime)?$/ +                        ? 'Day Phone' +                        : FS::Msgcat::_gettext('daytime'); +  my $night_label = FS::Msgcat::_gettext('night') =~ /^(night)?$/ +                        ? 'Night Phone' +                        : FS::Msgcat::_gettext('night'); +%> +<TR> +  <TD ALIGN="right"><%= $daytime_label %></TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"> +    <%= $cust_main->daytime || ' ' %> +  </TD> +</TR> +<TR> +  <TD ALIGN="right"><%= $night_label %></TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"> +    <%= $cust_main->night || ' ' %> +  </TD> +</TR> +<TR> +  <TD ALIGN="right">Fax</TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"> +    <%= $cust_main->fax || ' ' %> +  </TD> +</TR> +</TABLE></TD></TR></TABLE> + +<% if ( defined $cust_main->dbdef_table->column('ship_last') ) { +     my $pre = $cust_main->ship_last ? 'ship_' : ''; +%> + +<BR> +Service address +<%= ntable("#cccccc") %><TR><TD><%= ntable("#cccccc",2) %> +<TR> +  <TD ALIGN="right">Contact name</TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"> +    <%= $cust_main->get("${pre}last"). ', '. $cust_main->get("${pre}first") %> +  </TD> +</TR> +<TR> +  <TD ALIGN="right">Company</TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"><%= $cust_main->get("${pre}company") %></TD> +</TR> +<TR> +  <TD ALIGN="right">Address</TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"><%= $cust_main->get("${pre}address1") %></TD> +</TR> +<% if ( $cust_main->get("${pre}address2") ) { %> +<TR> +  <TD ALIGN="right"> </TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"><%= $cust_main->get("${pre}address2") %></TD> +</TR> +<% } %> +<TR> +  <TD ALIGN="right">City</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->get("${pre}city") %></TD> +  <TD ALIGN="right">State</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->get("${pre}state") %></TD> +  <TD ALIGN="right">Zip</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->get("${pre}zip") %></TD> +</TR> +<TR> +  <TD ALIGN="right">Country</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->get("${pre}country") %></TD> +</TR> +<TR> +  <TD ALIGN="right"><%= $daytime_label %></TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"> +    <%= $cust_main->get("${pre}daytime") || ' ' %> +  </TD> +</TR> +<TR> +  <TD ALIGN="right"><%= $night_label %></TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"> +    <%= $cust_main->get("${pre}night") || ' ' %> +  </TD> +</TR> +<TR> +  <TD ALIGN="right">Fax</TD> +  <TD COLSPAN=5 BGCOLOR="#ffffff"> +    <%= $cust_main->get("${pre}fax") || ' ' %> +  </TD> +</TR> +</TABLE></TD></TR></TABLE> + +<% } %> diff --git a/httemplate/view/cust_main/misc.html b/httemplate/view/cust_main/misc.html new file mode 100644 index 000000000..69e120573 --- /dev/null +++ b/httemplate/view/cust_main/misc.html @@ -0,0 +1,75 @@ +<% +  my( $cust_main ) = @_; +%> + +<%= ntable("#cccccc") %><TR><TD><%= &ntable("#cccccc",2) %> +<TR> +  <TD ALIGN="right">Customer number</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->custnum %></TD> +</TR> + +<% +  my @agents = qsearch( 'agent', {} ); +  my $agent; +  unless ( scalar(@agents) == 1 ) { +    $agent = qsearchs('agent',{ 'agentnum' => $cust_main->agentnum } ); +%> + +<TR> +  <TD ALIGN="right">Agent</TD> +  <TD BGCOLOR="#ffffff"><%= $agent->agentnum %>: <%= $agent->agent %></TD> +</TR> + +<% +  } else { +    $agent = $agents[0]; +  } + +  my @referrals = qsearch( 'part_referral', {} ); +  unless ( scalar(@referrals) == 1 ) { +    my $referral = qsearchs('part_referral', { +      'refnum' => $cust_main->refnum +    } ); +%> + +<TR> +  <TD ALIGN="right">Advertising source</TD> +  <TD BGCOLOR="#ffffff"><%= $referral->refnum %>: <%= $referral->referral%></TD> +</TR> + +<% } %> + +<TR> +  <TD ALIGN="right">Order taker</TD> +  <TD BGCOLOR="#ffffff"><%= $cust_main->otaker %></TD> +</TR> +<TR> +  <TD ALIGN="right">Referring Customer</TD> +  <TD BGCOLOR="#ffffff"> + +<% +  my $referring_cust_main = ''; +  if ( $cust_main->referral_custnum +       && ( $referring_cust_main = +            qsearchs('cust_main', { custnum => $cust_main->referral_custnum } ) +          ) +     ) { +%> + +<A HREF="<%= popurl(1) %>cust_main.cgi?<%= $cust_main->referral_custnum %>"><%=$cust_main->referral_custnum %>:  +<%= +  ( $referring_cust_main->company +      ? $referring_cust_main->company. ' ('. +          $referring_cust_main->last. ', '. $referring_cust_main->first. +          ')' +      : $referring_cust_main->last. ', '. $referring_cust_main->first +  ) +%></A> + +<% } %> + +  </TD> +</TR> + +</TABLE></TD></TR></TABLE> + diff --git a/httemplate/view/cust_main/tickets.html b/httemplate/view/cust_main/tickets.html new file mode 100644 index 000000000..61c94d61f --- /dev/null +++ b/httemplate/view/cust_main/tickets.html @@ -0,0 +1,54 @@ +<% +  my( $cust_main ) = @_; + +  my $conf = new FS::Conf; +  my $num = 10; + +  my @tickets = (); +  unless ( $conf->config('ticket_system-custom_priority_field') ) { + +    @tickets = +      @{ FS::TicketSystem->customer_tickets($cust_main->custnum, $num) }; + +  } else { + +    foreach my $priority ( +      $conf->config('ticket_system-custom_priority_field-values'), '' +    ) { +      last if scalar(@tickets) >= $num; +      push @tickets,  +        @{ FS::TicketSystem->customer_tickets( $cust_main->custnum, +                                               $num - scalar(@tickets), +                                               $priority, +                                             ) +         }; +    } + +  } + +%> + +Highest priority tickets +(<A HREF="<%= FS::TicketSystem->href_customer_tickets($cust_main->custnum) %>">View all tickets for this customer</A>) +(<A HREF="<%= FS::TicketSystem->href_new_ticket($cust_main->custnum) %>">New ticket for this customer</A>) +<%= table() %> +<TR> +  <TH>#</TH> +  <TH>Subject</TH> +  <TH>Priority</TH> +  <TH>Queue</TH> +  <TH>Status</TH> +</TR> +<% foreach my $ticket ( @tickets ) { +     my $href = FS::TicketSystem->href_ticket($ticket->{id}); +%> +<TR> +  <TD><A HREF=<%=$href%>><%= $ticket->{id} %></A></TD> +  <TD><A HREF=<%=$href%>><%= $ticket->{subject} %></A></TD> +  <TD ALIGN="right"><%= $ticket->{content} || $ticket->{priority} %></TD> +  <TD><%= $ticket->{name} %></TD> +  <TD><%= $ticket->{status} %></TD> +</TR> +<% } %> +</TABLE> + | 
