summaryrefslogtreecommitdiff
path: root/httemplate/edit/svc_dsl.cgi
blob: 3568fbd7db023d2420d84628d105d6d83ac78ce6 (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
<% include( 'elements/svc_Common.html',
            'table'   	=> 'svc_dsl',
	    'fields'	=> \@fields,
	    'svc_new_callback' => $new_cb,
	    'svc_edit_callback' => $edit_cb,
	  )
%>
<%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 @uneditable = qw( pushed vendor_qual_id isp_chg isp_prev staticips last_pull notes );

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 {
	    # XXX
	}
    }
    else {
	# XXX
    }
};

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 => 'svctn',
	      value => $defsvctn,
	    },
	);

	my $loop_type = { field => 'loop_type' };

	my $export = @exports[0];		
	if($export->exporttype eq 'ikano') {
	    $cgi->param('vendor_qual_id') =~ /^(\d+)$/ 
		or die 'unparsable vendor_qual_id';
	    my $vendor_qual_id = $1;

	    die "no start date set on customer package" if !$cust_pkg->start_date;

	    $loop_type = { field => 'loop_type',
		    type => 'select',
		    options => [ '', '0' ],
		    labels => { '' => 'Line-share', '0', => 'Standalone' },
		   # onchange => "document.getElementById('svctn').value = ''",
		};
	    push @fields, { field => 'isp_chg', type => 'checkbox', };
	    push @fields, 'isp_prev';
	    push @fields, { field => 'vendor_qual_id',
			    type => 'fixed',
			    value => $vendor_qual_id, 
			  };
	}
	else {
	    push @fields, 'username';
	}
	
	push @fields, 'password';

	push @fields, $loop_type;
	    
	push @fields, { field => 'vendor_order_type',
			type => 'hidden',
			value => 'N' };
	push @fields, { field => 'desired_dd',
			type => 'fixed',
			formatted_value => 
			    time2str($date_format,$cust_pkg->start_date),
			value => $cust_pkg->start_date, 
		      };
    }
    else {
	# XXX
    }
};
</%init>