diff options
| author | Christopher Burger <burgerc@freeside.biz> | 2017-09-19 12:12:16 -0400 | 
|---|---|---|
| committer | Christopher Burger <burgerc@freeside.biz> | 2018-11-20 16:42:09 -0500 | 
| commit | f4fc05af8e1ba11e79c70dfa074b143185c4cb02 (patch) | |
| tree | 813f725c4c4fb04bbc4b3b70b17789626677ab15 | |
| parent | 203aa3dbe95397f85b02e5c626cae1419ca6c9c9 (diff) | |
RT# 77532 - Updated advanced customer report to search contacts
Conflicts:
	httemplate/search/cust_main.html
	httemplate/search/report_cust_main.html
| -rw-r--r-- | FS/FS/cust_main/Search.pm | 39 | ||||
| -rwxr-xr-x | httemplate/search/cust_main.html | 5 | ||||
| -rw-r--r-- | httemplate/search/elements/options_cust_contacts.html | 36 | ||||
| -rwxr-xr-x | httemplate/search/report_cust_main.html | 12 | 
4 files changed, 92 insertions, 0 deletions
| diff --git a/FS/FS/cust_main/Search.pm b/FS/FS/cust_main/Search.pm index 78c7320e5..f552a2726 100644 --- a/FS/FS/cust_main/Search.pm +++ b/FS/FS/cust_main/Search.pm @@ -1102,6 +1102,45 @@ sub search {    my @extra_fields      = ();    my @extra_sort_fields = (); +  ## search contacts +  if ($params->{'contacts'}) { +    my $contact_params = $params->{'contacts'}; + +    $addl_from .= +      ' LEFT JOIN cust_contact ON ( cust_main.custnum = cust_contact.custnum ) '; + +    if ($contact_params->{'contacts_firstname'} || $contact_params->{'contacts_lastname'}) { +      $addl_from .= ' LEFT JOIN contact ON ( cust_contact.contactnum = contact.contactnum ) '; +      my $first_query = " AND contact.first = '" . $contact_params->{'contacts_firstname'} . "'" +        unless !$contact_params->{'contacts_firstname'}; +      my $last_query = " AND contact.last = '" . $contact_params->{'contacts_lastname'} . "'" +        unless !$contact_params->{'contacts_lastname'}; +      $extra_sql .= " AND ( '1' $first_query $last_query )"; +    } + +    if ($contact_params->{'contacts_email'}) { +      $addl_from .= ' LEFT JOIN contact_email ON ( cust_contact.contactnum = contact_email.contactnum ) '; +      $extra_sql .= " AND ( contact_email.emailaddress = '" . $contact_params->{'contacts_email'} . "' )"; +    } + +    if ($contact_params->{'contacts_homephone'} || $contact_params->{'contacts_workphone'} || $contact_params->{'contacts_mobilephone'}) { +      $addl_from .= ' LEFT JOIN contact_phone ON ( cust_contact.contactnum = contact_phone.contactnum ) '; +      my $contacts_mobilephone; +      foreach my $phone (qw( contacts_homephone contacts_workphone contacts_mobilephone )) { +        (my $num = $contact_params->{$phone}) =~ s/\W//g; +        if ( $num =~ /^1?(\d{3})(\d{3})(\d{4})(\d*)$/ ) { $contact_params->{$phone} = "$1$2$3"; } +      } +      my $home_query = " AND ( contact_phone.phonetypenum = '2' AND contact_phone.phonenum = '" . $contact_params->{'contacts_homephone'} . "' )" +        unless !$contact_params->{'contacts_homephone'}; +      my $work_query = " AND ( contact_phone.phonetypenum = '1' AND contact_phone.phonenum = '" . $contact_params->{'contacts_workphone'} . "' )" +        unless !$contact_params->{'contacts_workphone'}; +      my $mobile_query = " AND ( contact_phone.phonetypenum = '3' AND contact_phone.phonenum = '" . $contact_params->{'contacts_mobilephone'} . "' )" +        unless !$contact_params->{'contacts_mobilephone'}; +      $extra_sql .= " AND ( '1' $home_query $work_query $mobile_query )"; +    } + +  } +    if ($params->{'flattened_pkgs'}) {      #my $pkg_join = ''; diff --git a/httemplate/search/cust_main.html b/httemplate/search/cust_main.html index 18c9e153d..0d80b6dfe 100755 --- a/httemplate/search/cust_main.html +++ b/httemplate/search/cust_main.html @@ -72,6 +72,11 @@ for my $param (qw( classnum refnum payby tagnum pkg_classnum )) {    $search_hash{$param} = [ $cgi->param($param) ];  } +#contacts +$search_hash{'contacts'} = { +  map { $_ => $cgi->param($_), } grep { /^(contacts_*)/ && $cgi->param($_) } keys $cgi->Vars +}; +  ###  # parse dates  ### diff --git a/httemplate/search/elements/options_cust_contacts.html b/httemplate/search/elements/options_cust_contacts.html new file mode 100644 index 000000000..cfbf834b0 --- /dev/null +++ b/httemplate/search/elements/options_cust_contacts.html @@ -0,0 +1,36 @@ +    <TR> +      <TH ALIGN="right" VALIGN="center"><% mt('First name') |h %></TH> +      <TD><INPUT TYPE="text" NAME="<%$field_prefix%>firstname" SIZE=54></TD> +    </TR> + +    <TR> +      <TH ALIGN="right" VALIGN="center"><% mt('Last name') |h %></TH> +      <TD><INPUT TYPE="text" NAME="<%$field_prefix%>lastname" SIZE=54></TD> +    </TR> + +    <TR> +      <TH ALIGN="right" VALIGN="center"><% mt('Email') |h %></TH> +      <TD><INPUT TYPE="text" NAME="<%$field_prefix%>email" SIZE=54></TD> +    </TR> + +    <TR> +      <TH ALIGN="right" VALIGN="center"><% mt('Home Phone') |h %></TH> +      <TD><INPUT TYPE="text" NAME="<%$field_prefix%>homephone" SIZE=54></TD> +    </TR> + +    <TR> +      <TH ALIGN="right" VALIGN="center"><% mt('Work Phone') |h %></TH> +      <TD><INPUT TYPE="text" NAME="<%$field_prefix%>workphone" SIZE=54></TD> +    </TR> + +    <TR> +      <TH ALIGN="right" VALIGN="center"><% mt('Mobile Phone') |h %></TH> +      <TD><INPUT TYPE="text" NAME="<%$field_prefix%>mobilephone" SIZE=54></TD> +    </TR> + +<%init> + +my %opt = @_; +my $field_prefix = $opt{'pre_fix'} ? $opt{'pre_fix'} : ''; + +</%init>
\ No newline at end of file diff --git a/httemplate/search/report_cust_main.html b/httemplate/search/report_cust_main.html index 9edd3ee5c..47d46e1cd 100755 --- a/httemplate/search/report_cust_main.html +++ b/httemplate/search/report_cust_main.html @@ -228,6 +228,18 @@      </TR>      <TR> +      <TH CLASS="background" COLSPAN=2 ALIGN="left"><FONT SIZE="+1"><% emt('Contacts search options') %></FONT></TH> +    </TR> + +    <& elements/options_cust_contacts.html, +      'pre_fix'   => 'contacts_', +    &> + +    <TR> +      <TH CLASS="background" COLSPAN=2> </TH> +    </TR> + +    <TR>        <TH CLASS="background" COLSPAN=2 ALIGN="left"><FONT SIZE="+1"><% mt('Billing search options') |h %></FONT></TH>      </TR> | 
