blob: c69114ea4190f51e89b1a183cf5dd0c177ce13ee (
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
|
%
%
%local $FS::UID::AutoCommit=0;
%
%sub check {
% my $error = shift;
% if($error) {
% $cgi->param('error', $error);
% print $cgi->redirect(popurl(3) . "edit/router.cgi?". $cgi->query_string);
% dbh->rollback;
% exit;
% }
%}
%
%my $error = '';
%my $routernum = $cgi->param('routernum');
%my $routername = $cgi->param('routername');
%my $old = qsearchs('router', { routernum => $routernum });
%my @old_psr;
%
%my $new = new FS::router {
% map {
% ($_, scalar($cgi->param($_)));
% } fields('router')
%};
%
%if($old) {
% $error = $new->replace($old);
%} else {
% $error = $new->insert;
% $routernum = $new->routernum;
%}
%
%check($error);
%
%if ($old) {
% @old_psr = $old->part_svc_router;
% foreach my $psr (@old_psr) {
% if($cgi->param('svcpart_'.$psr->svcpart) eq 'ON') {
% # do nothing
% } else {
% $error = $psr->delete;
% }
% }
% check($error);
%}
%
%foreach($cgi->param) {
% if($cgi->param($_) eq 'ON' and /^svcpart_(\d+)$/) {
% my $svcpart = $1;
% if(grep {$_->svcpart == $svcpart} @old_psr) {
% # do nothing
% } else {
% my $new_psr = new FS::part_svc_router { svcpart => $svcpart,
% routernum => $routernum };
% $error = $new_psr->insert;
% }
% check($error);
% }
%}
%
%
%# Yay, everything worked!
%dbh->commit or die dbh->errstr;
%print $cgi->redirect(popurl(3). "browse/router.cgi");
%
%
|