6 local $FS::UID::AutoCommit=0;
11 $cgi->param('error', $error);
12 print $cgi->redirect(popurl(3) . "edit/router.cgi?". $cgi->query_string);
19 my $routernum = $cgi->param('routernum');
20 my $routername = $cgi->param('routername');
21 my $old = qsearchs('router', { routernum => $routernum });
25 my $new = new FS::router {
26 routernum => $routernum,
27 routername => $routername,
32 if($old->routername ne $new->routername) {
33 $error = $new->replace($old);
36 $error = $new->insert;
37 $routernum = $new->routernum;
43 @old_psr = $old->part_svc_router;
44 foreach $psr (@old_psr) {
45 if($cgi->param('svcpart_'.$psr->svcpart) eq 'ON') {
48 $error = $psr->delete;
52 @old_rf = $old->router_field;
53 foreach $rf (@old_rf) {
54 if(my $new_val = $cgi->param('rf_'.$rf->routerfieldpart)) {
55 if($new_val ne $rf->value) {
56 my $new_rf = new FS::router_field
57 { routernum => $routernum,
59 routerfieldpart => $rf->routerfieldpart };
60 $error = $new_rf->replace($rf);
69 foreach($cgi->param) {
70 if($cgi->param($_) eq 'ON' and /^svcpart_(\d+)$/) {
72 if(grep {$_->svcpart == $svcpart} @old_psr) {
75 my $new_psr = new FS::part_svc_router { svcpart => $svcpart,
76 routernum => $routernum };
77 $error = $new_psr->insert;
80 } elsif($cgi->param($_) ne '' and /^rf_(\d+)$/) {
82 if(my @x = grep {$_->routerfieldpart == $part} @old_rf) {
83 # already handled all of these
85 my $new_rf = new FS::router_field
86 { routernum => $routernum,
87 value => $cgi->param('rf_'.$part),
88 routerfieldpart => $part };
89 $error = $new_rf->insert;
97 # Yay, everything worked!
98 $dbh->commit or die $dbh->errstr;
99 print $cgi->redirect(popurl(3). "browse/router.cgi");