combine ticket notification scrips, #15353
[freeside.git] / httemplate / elements / location.html
1 <%doc>
2
3 Example:
4
5   include( '/elements/location.html',
6              'object'         => $cust_main,  # or $cust_location
7              'prefix'         => $pre,        #only for cust_main objects
8              'onchange'       => $javascript,
9              'disabled'       => $disabled,
10              'same_checked'   => $same_checked,
11              'geocode'        => $geocode, #passed through
12              'censustract'    => $censustract, #passed through
13              'no_asterisks'   => 0, #set true to disable the red asterisks next
14                                     #to required fields
15              'address1_label' => 'Address', #label for address
16          )
17
18 </%doc>
19
20 % if ( $opt{'alt_format'} ) {
21
22 <TR>
23     <<%$th%> ALIGN="right">Location&nbsp;kind</<%$th%>>
24     <TD>
25     <% include('/elements/select.html',
26                  'cgi'        => $cgi,
27                  'field'      => 'location_kind',
28                  'id'         => 'location_kind',
29                  'disabled'   => $disabled,
30                  #'style'      => \@style,
31                  'options'    => \@location_kind_options,
32                  'labels'     => $location_kind_labels,
33                  'curr_value' => scalar($cgi->param('location_kind'))
34                                    || $object->get($pre.'location_kind'),
35               )
36     %>
37     </TD>
38   </TR>
39
40 % } 
41
42 <TR>
43   <<%$th%> ALIGN="right"><%$r%><% $opt{'address1_label'} || emt('Address') %></<%$th%>>
44   <TD COLSPAN=7>
45     <INPUT TYPE     = "text"
46            NAME     = "<%$pre%>address1"
47            ID       = "<%$pre%>address1"
48            VALUE    = "<% $object->get($pre.'address1') |h %>"
49            SIZE     = 54
50            onChange = "<% $onchange %>"
51            <% $disabled %>
52            <% $style %>
53     >
54   </TD>
55 </TR>
56
57 % if ( ! $opt{'alt_format'} ) { #regular format
58
59 <TR>
60       <TD ALIGN="right"><FONT ID="<% $pre %>address2_required" color="#ff0000" <% $address2_label_style %>>*</FONT>&nbsp;<FONT ID="<% $pre %>address2_label" <% $address2_label_style %>><B>Unit&nbsp;#</B></FONT></TD>
61       <TD COLSPAN=7>
62         <INPUT TYPE     = "text"
63                NAME     = "<%$pre%>address2"
64                ID       = "<%$pre%>address2"
65                VALUE    = "<% $object->get($pre.'address2') |h %>"
66                SIZE     = 54
67                onChange = "<% $onchange %>"
68                <% $disabled %>
69                <% $style %>
70         >
71       </TD>
72 </TR>
73
74 % } else { # alternate format
75
76       <INPUT TYPE  = "hidden"
77              NAME  = "<%$pre%>address2"
78              VALUE = "<% $object->get($pre.'address2') |h %>"
79       >
80
81 <TR>
82     <<%$th%> ALIGN="right">Unit&nbsp;type&nbsp;and&nbsp;#</<%$th%>>
83     <TD COLSPAN=7>
84
85 %     my $location_type = scalar($cgi->param('location_type'))
86 %                           || $object->get($pre.'location_type');
87 %     #my $location_number = scalar($cgi->param('location_number'))
88 %     #                        || $object->get($pre.'location_number');
89 %
90 %   if ( $object->get($pre.'address2') && ! $location_type ) {
91 %   }
92 %
93 %     if ( 1 ) { #ikano, switch on via config
94 %       tie my %location_types, 'Tie::IxHash',
95 %         FS::part_export::ikano->location_types;
96         <% include('/elements/select.html',
97                      'cgi'        => $cgi,
98                      'field'      => 'location_type',
99                      'id'         => 'location_type',
100                      'disabled'   => $disabled,
101                      #'style'      => \@style,
102                      'options'    => [ keys %location_types ],
103                      'labels'     => \%location_types,
104                      'curr_value' => $location_type,
105                      'onchange'   => 'location_type_changed',
106                   )
107         %>
108         <SCRIPT TYPE="text/javascript">
109           function location_type_changed (what) {
110             if ( what.options[what.selectedIndex].value == '' ) {
111               what.form.location_number.disabled = true;
112               what.form.location_number.style.backgroundColor = '#dddddd';
113             } else {
114               what.form.location_number.disabled = false;
115               what.form.location_number.style.backgroundColor = '#ffffff';
116             }
117           }
118         </SCRIPT>
119 %     } else {
120         <INPUT TYPE  = "text" 
121                NAME  = "location_type" 
122                ID    = "location_type"
123                VALUE = "<% $location_type |h %>"
124                SIZE  = "10"
125                <% $disabled %>
126                <% $style %>
127         >
128 %     }
129
130     <INPUT TYPE="text" 
131                NAME  = "location_number"
132                ID    = "location_number"
133                VALUE = "<% scalar($cgi->param('location_number')) || $object->get($pre.'location_number') |h %>"
134                SIZE  = "5"
135                <% $disabled || ($location_type ? '' : 'DISABLED') %>
136                <% $style %>
137         >
138
139 %    #XXX i don't work so well when the dropdown is changed :/  i probably need to be triggered by "default service address"
140 %    $alt_err =~ s/(ship_)?address2/'<B>'.encode_entities($object->get($1.'address2')).'<\/B>'/e;
141      <% $alt_err %>
142
143     </TD>
144
145 </TR>
146
147 % } 
148
149
150 <TR>
151   <<%$th%> ALIGN="right"><%$r%><% mt('City') |h %></<%$th%>>
152   <TD WIDTH="1"><% include('/elements/city.html', %select_hash) %></TD>
153   <<%$th%> ALIGN="right" WIDTH="1" ID="<%$pre%>countylabel" <%$county_style%>><%$r%>County</<%$th%>>
154   <TD WIDTH="1"><% include('/elements/select-county.html', %select_hash ) %></TD>
155   <<%$th%> ALIGN="right" WIDTH="1"><%$r%><% mt('State') |h %></<%$th%>>
156   <TD WIDTH="1">
157     <% include('/elements/select-state.html', %select_hash ) %>
158   </TD>
159   <<%$th%> ALIGN="right" WIDTH="1"><%$r%><% mt('Zip') |h %></<%$th%>>
160   <TD>
161     <INPUT TYPE     = "text"
162            NAME     = "<%$pre%>zip"
163            ID       = "<%$pre%>zip"
164            VALUE    = "<% $object->get($pre.'zip') |h %>"
165            SIZE     = 10
166            onChange = "<% $onchange %>"
167            <% $disabled %>
168            <% $style %>
169     >
170   </TD>
171 </TR>
172
173 <TR>
174   <<%$th%> ALIGN="right"><%$r%><% mt('Country') |h %></<%$th%>>
175   <TD COLSPAN=6><% include('/elements/select-country.html', %select_hash ) %></TD>
176 </TR>
177
178 % if ( !$pre ) { 
179   <INPUT TYPE="hidden" NAME="geocode" VALUE="<% $opt{geocode} %>">
180 % } else {
181 %   if ( $pre eq 'ship_' && $conf->exists('cust_main-require_censustract') ) {
182       <TR><<%$th%> ALIGN="right">Census tract<BR>(automatic)</<%$th%>>
183         <TD>
184           <INPUT TYPE="text" NAME="censustract" VALUE="<% $opt{censustract} %>">
185         </TD>
186       </TR>
187 %   } else {
188       <INPUT TYPE="hidden" NAME="censustract" VALUE="<% $opt{censustract} %>">
189 %   } 
190 % } 
191
192 <%init>
193
194 my %opt = @_;
195
196 my $pre      = $opt{'prefix'};
197 my $object   = $opt{'object'};
198 my $onchange = $opt{'onchange'};
199 my $disabled = $opt{'disabled'};
200
201 my $conf = new FS::Conf;
202
203 my $r = $opt{'no_asterisks'} ? '' : qq!<font color="#ff0000">*</font>&nbsp;!;
204
205 #false laziness with ship state
206 my $countrydefault = $conf->config('countrydefault') || 'US';
207 $object->set($pre.'country', $countrydefault )
208   unless $object->get($pre.'country');
209
210 my $statedefault = $conf->config('statedefault')
211                    || ($countrydefault eq 'US' ? 'CA' : '');
212 $object->set($pre.'state', $statedefault )
213   unless $object->get($pre.'state')
214          || $object->get($pre.'country') ne $countrydefault;
215
216 my $alt_err = ($opt{'alt_format'} && !$disabled) ? $object->alternize : '';
217
218 my @style = ();
219 push @style, 'background-color: #dddddd' if $disabled;
220
221 my @address2_label_style = ();
222 push @address2_label_style, 'visibility:hidden'
223   if $disabled
224   || ! $conf->exists('cust_main-require_address2')
225   || ( !$pre && !$opt{'same_checked'} );
226
227 my @counties = counties( $object->get($pre.'state'),
228                          $object->get($pre.'country'),
229                        );
230 my @county_style = ();
231 push @county_style, 'display:none' # 'visibility:hidden'
232   unless scalar(@counties) > 1;
233
234 my $style =
235   scalar(@style)
236     ? 'STYLE="'. join(';', @style). '"'
237     : '';
238 my $address2_label_style =
239   scalar(@address2_label_style)
240     ? 'STYLE="'. join(';', @address2_label_style). '"'
241     : '';
242 my $county_style = 
243   scalar(@county_style)
244     ? 'STYLE="'. join(';', @county_style). '"'
245     : '';
246
247 my %select_hash = (
248   'city'     => $object->get($pre.'city'),
249   'county'   => $object->get($pre.'county'),
250   'state'    => $object->get($pre.'state'),
251   'country'  => $object->get($pre.'country'),
252   'prefix'   => $pre,
253   'onchange' => $onchange,
254   'disabled' => $disabled,
255   #'style'    => \@style,
256 );
257
258 my $th = $opt{'no_bold'} ? 'TD' : 'TH';
259
260 my @location_kind_options = ( '', 'R', 'B' );
261 my $location_kind_labels = { '' => '', 'R' => 'Residential', 'B' => 'Business' };
262
263 </%init>