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