summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2011-03-20 19:38:28 +0000
committerivan <ivan>2011-03-20 19:38:28 +0000
commit25b48e1acbf6ad7ebd3e85b479ee6cd3a8ccd098 (patch)
tree76a7b1cefa290a28610525ef02766f9c9f49318a
parentec16e50b394e928b6810d6d3867de6d6ef918ce5 (diff)
qualification address handling changes, RT#7111
-rw-r--r--httemplate/edit/cust_main/contact.html2
-rw-r--r--httemplate/edit/process/qual.cgi4
-rw-r--r--httemplate/elements/tr-select-cust_location.html66
-rw-r--r--httemplate/misc/location.cgi3
-rw-r--r--httemplate/misc/qual.html9
-rwxr-xr-xhttemplate/search/qual.cgi2
-rw-r--r--httemplate/view/qual.cgi2
7 files changed, 70 insertions, 18 deletions
diff --git a/httemplate/edit/cust_main/contact.html b/httemplate/edit/cust_main/contact.html
index 99bc558..01d024c 100644
--- a/httemplate/edit/cust_main/contact.html
+++ b/httemplate/edit/cust_main/contact.html
@@ -2,7 +2,7 @@
<TR>
<TH ALIGN="right"><%$r%>Contact&nbsp;name<BR>(last,&nbsp;first)</TH>
- <TD COLSPAN=5>
+ <TD COLSPAN=7>
<INPUT TYPE="text" NAME="<%$pre%>last" VALUE="<% $cust_main->get($pre.'last') |h %>" onChange="<% $onchange %>" <%$disabled%> <%$style%>> ,
<INPUT TYPE="text" NAME="<%$pre%>first" VALUE="<% $cust_main->get($pre.'first') |h %>" onChange="<% $onchange %>" <%$disabled%> <%$style%>>
</TD>
diff --git a/httemplate/edit/process/qual.cgi b/httemplate/edit/process/qual.cgi
index a702047..dd8d00b 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 d756626..b882c3d 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';
</%init>
diff --git a/httemplate/misc/location.cgi b/httemplate/misc/location.cgi
index 82ad636..188c5c3 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;
</%init>
diff --git a/httemplate/misc/qual.html b/httemplate/misc/qual.html
index ed6ba2d..78d85ed 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 1803ab8..7133ef0 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 ec3a7cf..5e706a1 100644
--- a/httemplate/view/qual.cgi
+++ b/httemplate/view/qual.cgi
@@ -16,7 +16,7 @@
<B>Qualification #<% $qual->qualnum %></B>
<% 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 ) %>