summaryrefslogtreecommitdiff
path: root/httemplate/edit/svc_dsl.cgi
blob: 7493d98b9919df7f73f593aeaccd8ef1a50d570c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<% include( 'elements/svc_Common.html',
            'table'   	=> 'svc_dsl',
	    'fields'	=> \@fields,
	    'svc_new_callback' => $new_cb,
	    'svc_edit_callback' => $edit_cb,
	    'html_foot' => $html_foot,
	  )
%>
<%init>

die "access denied"
  unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific?

my $conf = new FS::Conf;
my $date_format = $conf->config('date_format') || '%m/%d/%Y';

my $ti_fields = FS::svc_dsl->table_info->{'fields'};

my @fields = ();

my $html_foot = sub {
    return "
<SCRIPT TYPE=\"text/javascript\">
  function ikano_loop_type_changed() {
	var loop_type = document.getElementById('loop_type').value;
	var phonenum = document.getElementById('phonenum');
	if(loop_type == '0') {
	    phonenum.value = '';
	    phonenum.disabled = true;	
	}
	else phonenum.disabled = false;
  }
</SCRIPT>";
};

my $edit_cb = sub {
    my( $cgi,$svc_x, $part_svc,$cust_pkg, $fields1,$opt) = @_;
    my @exports = $part_svc->part_export_dsl_pull;
    die "more than one DSL-pulling export attached to svcpart ".$part_svc->svcpart
	if ( scalar(@exports) > 1 );

    if ( scalar(@exports) == 1 ) {
	my $export = @exports[0];		
	if($export->exporttype eq 'ikano') {
	    @fields = ( 'password', 'monitored', );

	    foreach my $hf ( keys %$ti_fields ) {
		push @fields, {
		    field => $hf,
		    type => 'hidden',
		    value => $svc_x->$hf,
		} unless ( $hf eq 'password' || $hf eq 'monitored' );
	    }
	}
	# else add any other export-specific stuff here
    }
    else {
	# XXX allow editing everything
    }
};

my $new_cb = sub {
    my( $cgi,$svc_x, $part_svc,$cust_pkg, $fields1,$opt) = @_;
    my @exports = $part_svc->part_export_dsl_pull;
    die "more than one DSL-pulling export attached to svcpart ".$part_svc->svcpart
	if ( scalar(@exports) > 1 );

    if ( scalar(@exports) == 1 ) {
	my $cust_main = $cust_pkg->cust_main;
	my $defsvctn = $cust_main->ship_daytime ? $cust_main->ship_daytime
						: $cust_main->daytime;
	$defsvctn =~ s/[^0-9]//g;

	@fields = (
	    { field => 'first',
	      value => $cust_main->ship_first ? $cust_main->ship_first
					      : $cust_main->first,
	    },
	    { field => 'last',
	      value => $cust_main->ship_last ? $cust_main->ship_last
					     : $cust_main->last,
	    },
	    { field => 'company',
	      value => $cust_pkg->cust_main->ship_company,
	      value => $cust_main->ship_company ? $cust_main->ship_company
						: $cust_main->company,
	    },
	    { field => 'phonenum',
	      value => $defsvctn,
	    },
	);

	my $export = @exports[0];		
	if($export->exporttype eq 'ikano') {
	    my $ddd = $cust_pkg->start_date;
	    $ddd = time unless $ddd;

	    my @addl_fields = ( 
		{ field => 'loop_type',
		  type => 'select',
		  options => [ '', '0' ],
		  labels => { '' => 'Line-share', '0', => 'Standalone' },
		  onchange => 'ikano_loop_type_changed',
		},
		'password', 
		{ field => 'isp_chg', type => 'checkbox', },
		'isp_prev',
		'vendor_qual_id',
		{ field => 'vendor_order_type', 
		  type => 'hidden', 
		  value => 'NEW' },
		{ field => 'desired_due_date',
		  type => 'fixed',
		  formatted_value => 
		    time2str($date_format,$ddd),
		  value => $ddd, 
		},
	    );
	    push @fields, @addl_fields;
	}
	# else add any other export-specific stuff here
    }
    else {
	# XXX display everything when no exports attached
    }
};
</%init>