4 use FS::UID qw(adminsuidsetup);
5 use FS::Record qw(qsearch qsearchs dbh);
11 print "started time=".time."\n";
16 local $SIG{HUP} = 'IGNORE';
17 local $SIG{INT} = 'IGNORE';
18 local $SIG{QUIT} = 'IGNORE';
19 local $SIG{TERM} = 'IGNORE';
20 local $SIG{TSTP} = 'IGNORE';
21 local $SIG{PIPE} = 'IGNORE';
23 my $oldAutoCommit = $FS::UID::AutoCommit;
24 local $FS::UID::AutoCommit = 0;
27 my %latas = map { $_->latanum => $_ } qsearch('lata', {});
29 foreach my $lata ( keys %latas ) {
30 next unless $latas{$lata}->have_usage > 0;
31 $latas{$lata}->have_usage(0);
32 my $error = $latas{$lata}->replace;
34 $dbh->rollback if $oldAutoCommit;
35 die "error replacing LATA $lata: $error";
38 print "cleared have_usage for all LATAs time=".time."\n";
40 my @dids = qsearch({ 'table' => 'svc_phone',
47 'addl_from' => 'join phone_avail using (svcnum)',
49 print "DID query finished time=".time."\n";
52 foreach my $did ( @dids ) {
53 print "count=$count time=".time."\n" if $count % 1000 == 0;
54 my @cdrs = $did->get_cdrs;
55 my $lata = $latas{$did->latanum};
57 if ( scalar(@cdrs) ) {
58 if ( !$lata->have_usage ) {
62 $lata->have_usage($lata->have_usage+1);
67 print "Set have_usage finished time=".time."\n";
69 foreach my $lata ( keys %latas ) {
70 if ( $latas{$lata}->modified ) {
71 print "$lata ".$latas{$lata}->have_usage."\n";
72 my $error = $latas{$lata}->replace;
74 $dbh->rollback if $oldAutoCommit;
75 die "error replacing LATA $lata: $error";
80 $dbh->commit or die $dbh->errstr if $oldAutoCommit;
81 print "done time=".time."\n";