convert sales persons to agents, R#30315
[freeside.git] / bin / sales2agent
1 #!/usr/bin/perl
2
3 use FS::UID qw(adminsuidsetup dbh);
4 use FS::Record qw(qsearch);
5 use FS::sales;
6 use FS::agent;
7 use FS::access_group;
8 use FS::access_groupagent;
9 use FS::cust_main;
10
11 adminsuidsetup shift or die &usage;
12
13 $FS::UID::AutoCommit = 0;
14
15 my @sales = qsearch('sales', {'disabled'=>''});
16
17 foreach my $sales (@sales) {
18
19   my $agent = new FS::agent {
20     'agent'         => $sales->salesperson,
21     'agent_custnum' => $sales->sales_custnum,
22   };
23   my $error = $agent->insert;
24   if ( $error ) {
25     dbh->rollback or die dbh->errstr;
26     die $error;
27   }
28
29   my $access_group = new FS::access_group {
30     'groupname' => $agent->agent,
31   };
32   $error = $access_group->insert;
33   if ( $error ) {
34     dbh->rollback or die dbh->errstr;
35     die $error;
36   }
37
38   my $access_groupagent = new FS::access_groupagent {
39     'groupnum' => $access_group->groupnum,
40     'agentnum' => $agent->agentnum,
41   };
42   $error = $access_groupagent->insert;
43   if ( $error ) {
44     dbh->rollback or die dbh->errstr;
45     die $error;
46   }
47
48   foreach my $cust_main (qsearch('cust_main', {'salesnum'=>$sales->salesnum})) {
49
50     $cust_main->salesnum('');
51     $cust_main->agentnum($agent->agentnum);
52     $error = $cust_main->replace;
53     if ( $error ) {
54       dbh->rollback or die dbh->errstr;
55       die $error;
56     }
57
58   }
59
60   $sales->disabled('');
61   $error = $sales->replace;
62   if ( $error ) {
63     dbh->rollback or die dbh->errstr;
64     die $error;
65   }
66   
67 }
68
69 dbh->commit or die dbh->errstr;
70
71 1;
72
73 sub usage {
74   die "Usage:\n\n  sales2agent username\n";
75 }