From 25b48e1acbf6ad7ebd3e85b479ee6cd3a8ccd098 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 20 Mar 2011 19:38:28 +0000 Subject: [PATCH] qualification address handling changes, RT#7111 --- httemplate/edit/cust_main/contact.html | 2 +- httemplate/edit/process/qual.cgi | 4 +- httemplate/elements/tr-select-cust_location.html | 66 +++++++++++++++++++++--- httemplate/misc/location.cgi | 3 +- httemplate/misc/qual.html | 9 ++-- httemplate/search/qual.cgi | 2 +- httemplate/view/qual.cgi | 2 +- 7 files changed, 70 insertions(+), 18 deletions(-) diff --git a/httemplate/edit/cust_main/contact.html b/httemplate/edit/cust_main/contact.html index 99bc558c3..01d024ca2 100644 --- a/httemplate/edit/cust_main/contact.html +++ b/httemplate/edit/cust_main/contact.html @@ -2,7 +2,7 @@ <%$r%>Contact name
(last, first) - + <%$style%>> , <%$style%>> diff --git a/httemplate/edit/process/qual.cgi b/httemplate/edit/process/qual.cgi index a702047c5..dd8d00b11 100644 --- a/httemplate/edit/process/qual.cgi +++ b/httemplate/edit/process/qual.cgi @@ -52,7 +52,7 @@ my %location_hash = ( qw( location_type location_number location_kind ) ); -if ( $locationnum == -1 ) { # adding a new one +if ( $locationnum == -1 || $locationnum == -3 ) { # adding a new one $cust_location = new FS::cust_location { $cust_or_prospect."num" => $custnum_or_prospectnum, @@ -80,7 +80,7 @@ $qual->phonenum($phonenum) if $phonenum ne ''; #$qual->locationnum($locationnum) if $locationnum > 0; $qual->exportnum($exportnum) if $exportnum > 0; $qual->set( $cust_or_prospect."num" => $custnum_or_prospectnum ) - unless $locationnum == -1 || $locationnum > 0; + unless $locationnum == -1 || $locationnum == -3 || $locationnum > 0; $error ||= $qual->insert( 'cust_location' => $cust_location ); diff --git a/httemplate/elements/tr-select-cust_location.html b/httemplate/elements/tr-select-cust_location.html index d7566262e..b882c3d46 100644 --- a/httemplate/elements/tr-select-cust_location.html +++ b/httemplate/elements/tr-select-cust_location.html @@ -34,29 +34,39 @@ Example: % } } + function location_clear(what) { +% for (grep { $_ ne 'location_number' } @location_fields, 'city_select') { + var ftype = what.form.<%$_%>.tagName; + if( ftype == 'INPUT' ) what.form.<%$_%>.value = ''; +% } +% if ( $opt{'alt_format'} ) { + changeSelect(what.form.location_kind, ''); + changeSelect(what.form.location_type, ''); + what.form.location_number.value = ''; +% } + } + function location_enable(what) { % for (grep { $_ ne 'location_number' } @location_fields, 'city_select') { what.form.<%$_%>.disabled = false; var ftype = what.form.<%$_%>.tagName; if( ftype != 'SELECT') what.form.<%$_%>.style.backgroundColor = '#ffffff'; - if( ftype == 'INPUT' ) what.form.<%$_%>.value = ''; % } if ( what.form.location_type.options[what.form.location_type.selectedIndex].value ) { what.form.location_number.disabled = false; what.form.location_number.style.backgroundColor = '#ffffff'; } - what.form.location_number.value = ''; } function locationnum_changed(what) { var locationnum = what.options[what.selectedIndex].value; - if ( locationnum == -2 ) { + if ( locationnum == -2 ) { //(not required) location_disable(what); return; } - if ( locationnum == -1 ) { - location_enable(what); + if ( locationnum == -1 ) { //Add new location + location_clear(what); changeSelect(what.form.country, <% $countrydefault |js_string %>); @@ -65,10 +75,33 @@ Example: '' ) ); + + location_enable(what); + return; + } + if ( locationnum == -3 ) { //service address location for qualificaitons + what.form.address1.value = <% $cust_location->address1 |js_string %>; + what.form.address2.value = <% $cust_location->address2 |js_string %>; + what.form.city.value = <% $cust_location->city |js_string %>; + what.form.zip.value = <% $cust_location->zip |js_string %>; +% if ( $opt{'alt_format'} ) { + what.form.location_number.value = <% $cust_location->location_number |js_string %>; + changeSelect(what.form.location_kind, <% $cust_location->location_kind |js_string %> ); + changeSelect(what.form.location_type, <% $cust_location->location_type |js_string %> ); +% } + + changeSelect(what.form.country, <% $cust_location->country | js_string %> ); + + country_changed( what.form.country, + fix_state_factory( <% $cust_location->state | js_string %>, + <% $cust_location->county | js_string %> + ) + ); + location_enable(what); return; } - if ( locationnum == 0 ) { + if ( locationnum == 0 ) { //(default service address) % if ( $cust_main ) { what.form.address1.value = <% $cust_main->get($prefix.'address1') |js_string %>; what.form.address2.value = <% $cust_main->get($prefix.'address2') |js_string %>; @@ -139,10 +172,17 @@ Example: function update_location( string ) { var hash = eval('('+string+')'); document.getElementById('address1').value = hash['address1']; - document.getElementById('address2').value = hash['address2']; document.getElementById('city').value = hash['city']; document.getElementById('zip').value = hash['zip']; +% if ( $opt{'alt_format'} ) { + changeSelect( document.getElementById('location_kind'), hash['location_kind']); + changeSelect( document.getElementById('location_type'), hash['location_type']); + document.getElementById('location_number').value = hash['location_number']; +% } else { + document.getElementById('address2').value = hash['address2']; +% } + var country_el = document.getElementById('country'); changeSelect( country_el, hash['country'] ); @@ -238,7 +278,7 @@ if ( $locationnum && $locationnum > 0 ) { or die "unknown locationnum"; } else { $cust_location = new FS::cust_location; - if ( $locationnum == -1 ) { + if ( $locationnum == -1 || $locationnum == -3 ) { $cust_location->$_( $cgi->param($_) ) foreach @location_fields; } elsif ( $cust_pkg && $cust_pkg->locationnum ) { my $pkg_location = $cust_pkg->cust_location; @@ -265,6 +305,10 @@ push @cust_location, $cust_location @cust_location = sort $location_sort grep !$_->disabled, @cust_location; +if ( ( $prospect_main || $opt{'disable_empty'} ) && !$opt{'is_optional'} ) { + $cust_location = $cust_location[0]; +} + my $disabled = ( $locationnum < 0 || ( $editable && $locationnum ) @@ -275,6 +319,12 @@ my $disabled = ? '' : 'DISABLED'; +if ( $cust_main && $opt{'alt_format'} && ! @cust_location ) { + $cust_location->locationnum(-3); + $cust_location->alternize; + push @cust_location, $cust_location; +} + my $th = $opt{'no_bold'} ? 'TD' : 'TH'; diff --git a/httemplate/misc/location.cgi b/httemplate/misc/location.cgi index 82ad636c4..188c5c3df 100644 --- a/httemplate/misc/location.cgi +++ b/httemplate/misc/location.cgi @@ -24,7 +24,8 @@ my $cust_location = qsearchs({ my %hash = (); %hash = map { $_ => $cust_location->$_() } - qw( address1 address2 city county state zip country ) + qw( address1 address2 city county state zip country + location_kind location_type location_number ) if $cust_location; diff --git a/httemplate/misc/qual.html b/httemplate/misc/qual.html index ed6ba2d6c..78d85edca 100644 --- a/httemplate/misc/qual.html +++ b/httemplate/misc/qual.html @@ -45,10 +45,11 @@ %> <% include('/elements/tr-select-cust_location.html', - 'cgi' => $cgi, - $table => $cust_main_or_prospect_main, - 'alt_format' => $conf->exists('qual-alt_address_format'), - 'no_bold' => 1, + 'cgi' => $cgi, + $table => $cust_main_or_prospect_main, + 'alt_format' => $conf->exists('qual-alt_address_format'), + 'disable_empty' => $conf->exists('qual-alt_address_format'), + 'no_bold' => 1, #required for ikano.. config? 'is_optional' => 1, ) %> diff --git a/httemplate/search/qual.cgi b/httemplate/search/qual.cgi index 1803ab827..7133ef056 100755 --- a/httemplate/search/qual.cgi +++ b/httemplate/search/qual.cgi @@ -22,7 +22,7 @@ $self->status_long; }, sub { shift->cust_or_prospect->name }, - 'phonenum', + sub { shift->phonenum || '(none - dry loop)' }, sub { my $self = shift; my %location_hash= $self->location_hash; diff --git a/httemplate/view/qual.cgi b/httemplate/view/qual.cgi index ec3a7cf1d..5e706a18d 100644 --- a/httemplate/view/qual.cgi +++ b/httemplate/view/qual.cgi @@ -16,7 +16,7 @@ Qualification #<% $qual->qualnum %> <% ntable("#cccccc", 2) %> <% include('elements/tr.html', label => 'Status', value => $qual->status_long ) %> -<% include('elements/tr.html', label => 'Service Telephone Number', value => $qual->phonenum ) %> +<% include('elements/tr.html', label => 'Service Telephone Number', value => $qual->phonenum || '(none - dry loop)' ) %> <% include('elements/tr.html', label => 'Address', value => $location_line ) %> % if ( $location_kind ) { <% include('elements/tr.html', label => 'Location Kind', value => $location_kind ) %> -- 2.11.0