residential prospects, RT#7111
[freeside.git] / httemplate / edit / svc_dsl.cgi
1 <% include( 'elements/svc_Common.html',
2             'table'     => 'svc_dsl',
3             'fields'    => \@fields,
4             'svc_new_callback' => $new_cb,
5             'svc_edit_callback' => $edit_cb,
6             'html_foot' => $html_foot,
7           )
8 %>
9 <%init>
10
11 die "access denied"
12   unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific?
13
14 my $conf = new FS::Conf;
15 my $date_format = $conf->config('date_format') || '%m/%d/%Y';
16
17 my $ti_fields = FS::svc_dsl->table_info->{'fields'};
18
19 my @fields = ();
20
21 my $html_foot = sub {
22     return "
23 <SCRIPT TYPE=\"text/javascript\">
24   function ikano_loop_type_changed() {
25         var loop_type = document.getElementById('loop_type').value;
26         var phonenum = document.getElementById('phonenum');
27         if(loop_type == '0') {
28             phonenum.value = '';
29             phonenum.disabled = true;   
30         }
31         else phonenum.disabled = false;
32   }
33 </SCRIPT>";
34 };
35
36 my $edit_cb = sub {
37     my( $cgi,$svc_x, $part_svc,$cust_pkg, $fields1,$opt) = @_;
38     my @exports = $part_svc->part_export_dsl_pull;
39     die "more than one DSL-pulling export attached to svcpart ".$part_svc->svcpart
40         if ( scalar(@exports) > 1 );
41
42     if ( scalar(@exports) == 1 ) {
43         my $export = @exports[0];               
44         if($export->exporttype eq 'ikano') {
45             @fields = ( 'password', 'monitored', );
46
47             foreach my $hf ( keys %$ti_fields ) {
48                 push @fields, {
49                     field => $hf,
50                     type => 'hidden',
51                     value => $svc_x->$hf,
52                 } unless ( $hf eq 'password' || $hf eq 'monitored' );
53             }
54         }
55         # else add any other export-specific stuff here
56     }
57     else {
58         push @fields, qw( first last company phonenum circuitnum rate_band vpi vci );
59     }
60 };
61
62 my $new_cb = sub {
63     my( $cgi,$svc_x, $part_svc,$cust_pkg, $fields1,$opt) = @_;
64     my @exports = $part_svc->part_export_dsl_pull;
65     die "more than one DSL-pulling export attached to svcpart ".$part_svc->svcpart
66         if ( scalar(@exports) > 1 );
67
68         my $cust_main = $cust_pkg->cust_main;
69         my $defsvctn = $cust_main->ship_daytime ? $cust_main->ship_daytime
70                                                 : $cust_main->daytime;
71         $defsvctn =~ s/[^0-9]//g;
72
73         @fields = (
74             { field => 'first',
75               value => $cust_main->ship_first ? $cust_main->ship_first
76                                               : $cust_main->first,
77             },
78             { field => 'last',
79               value => $cust_main->ship_last ? $cust_main->ship_last
80                                              : $cust_main->last,
81             },
82             { field => 'company',
83               value => $cust_pkg->cust_main->ship_company,
84               value => $cust_main->ship_company ? $cust_main->ship_company
85                                                 : $cust_main->company,
86             },
87             { field => 'phonenum',
88               value => $defsvctn,
89             },
90         );
91
92     if ( scalar(@exports) == 1 ) {
93         my $export = @exports[0];               
94         if($export->exporttype eq 'ikano') {
95             my $ddd = $cust_pkg->start_date;
96             $ddd = time unless $ddd;
97
98             my @quals = $export->quals_by_cust_and_pkg($cust_pkg->cust_main->custnum,$cust_pkg->pkgpart);
99             my @prequalids;
100             my %prequal_labels;
101             foreach my $qual ( @quals ) {
102                 my $prequalid = $qual->vendor_qual_id;
103                 push @prequalids, $prequalid;
104                 $prequal_labels{$prequalid} = "$prequalid - qualification #"
105                                                             .$qual->qualnum;
106             }
107
108             my @addl_fields = ( 
109                 { field => 'loop_type',
110                   type => 'select',
111                   options => [ '', '0' ],
112                   labels => { '' => 'Line-share', '0', => 'Standalone' },
113                   onchange => 'ikano_loop_type_changed',
114                 },
115                 'password', 
116                 { field => 'isp_chg', type => 'checkbox', },
117                 'isp_prev',
118                 { field => 'vendor_qual_id', 
119                   type => 'select',
120                   options => \@prequalids,
121                   labels => \%prequal_labels,
122                   onchange => 'ikano_vendor_qual_id_changed',
123                 },
124                 { field => 'vendor_order_type', 
125                   type => 'hidden', 
126                   value => 'NEW' },
127                 { field => 'desired_due_date',
128                   type => 'fixed',
129                   formatted_value => 
130                     time2str($date_format,$ddd),
131                   value => $ddd, 
132                 },
133             );
134             push @fields, @addl_fields;
135         }
136         # else add any other export-specific stuff here
137     }
138     else { # display non-export and non-Ikano fields
139         push @fields, qw( rate_band circuitnum vpi vci );
140     }
141 };
142 </%init>