##
# address
##
- if ( $params->{'address'} =~ /\S/ ) {
- my $address = dbh->quote('%'. lc($params->{'address'}). '%');
- push @where, "EXISTS(
- SELECT 1 FROM cust_location
- WHERE cust_location.custnum = cust_main.custnum
- AND (LOWER(cust_location.address1) LIKE $address OR
- LOWER(cust_location.address2) LIKE $address)
- )";
+ if ( $params->{'address'} ) {
+ # allow this to be an arrayref
+ my @values = ($params->{'address'});
+ @values = @{$values[0]} if ref($values[0]);
+ my @orwhere;
+ foreach (grep /\S/, @values) {
+ my $address = dbh->quote('%'. lc($_). '%');
+ push @orwhere,
+ "LOWER(cust_location.address1) LIKE $address",
+ "LOWER(cust_location.address2) LIKE $address";
+ }
+ if (@orwhere) {
+ push @where, "EXISTS(
+ SELECT 1 FROM cust_location
+ WHERE cust_location.custnum = cust_main.custnum
+ AND (".join(' OR ',@orwhere).")
+ )";
+ }
}
##
push @fixups, 'confirm_censustract'
if $conf->exists('cust_main-require_censustract');
-# currently doesn't work; disable to avoid problems
-#push @fixups, 'check_unique'
-# if $conf->exists('cust_main-check_unique') and !$opt{'custnum'};
+my $uniqueness = $conf->config('cust_main-check_unique');
+push @fixups, 'check_unique'
+ if $uniqueness and !$opt{'custnum'};
push @fixups, 'do_submit'; # always last
</%init>
-
var fixups = <% encode_json(\@fixups) %>;
var fixup_position;
var running = false;
+<&| /elements/onload.js &>
+submit_abort();
+</&>
+
%# state machine to deal with all the asynchronous stuff we're doing
%# call this after each fixup on success:
function submit_continue() {
}
function check_unique() {
- var search_hash = new Object;
-% foreach ($conf->config('cust_main-check_unique')) {
- search_hash['<% $_ %>'] = document.CustomerForm.elements['<% $_ %>'].value;
+ var search_hash = {};
+% if ($uniqueness eq 'address') {
+ search_hash['address'] = [
+ document.CustomerForm.elements['bill_address1'].value,
+ document.CustomerForm.elements['ship_address1'].value
+ ];
% }
+%# no other options yet
%# supported in IE8+, Firefox 3.5+, WebKit, Opera 10.5+
duplicates_form(JSON.stringify(search_hash), confirm_unique);
my $sub = $cgi->param('sub');
my $hashref = decode_json($cgi->param('arg'));
-my @cust_main = qsearch('cust_main', $hashref);
+my $search = FS::cust_main->search($hashref);
+#warn Dumper($search);
+my @cust_main = qsearch( $search );
my $set_to_customer = <<EOF;
var custnum_array = document.getElementsByName('dup_custnum');