3870c568d5c3c6dde9b61655c062e40975dd1074
[koha.git] / misc / add_statistics_borrowers_categorycode.pl
1 #!/usr/bin/perl
2
3 ## EXTRACTED USING THIS:
4 # grep -Pnir "'notforloan' => '6'" 01_items0* | grep -Po "'id' => '-?(\d+)'" | grep -Po "\d+" > itemnumbers_notforloan_6.txt
5
6 use Modern::Perl;
7
8 use C4::Context;
9 use utf8;
10
11 use Koha::Patrons;
12
13 print "\nTHE FOLLOWING STATISTIC ENTRIES HAVE BEEN UPDATED\n------------------------------------------------\n";
14
15 ##Caches all the loaded Borrowers
16 my $borrowers = {};
17 my $deletedBorrowers = {};
18
19 my $dbh = C4::Context->dbh;
20
21 my $sthDelBor   = $dbh->prepare("SELECT * FROM deletedborrowers WHERE borrowernumber = ? ");
22 my $sthUpdateStat   = $dbh->prepare("UPDATE statistics SET categorycode = ? WHERE datetime = ? AND branch = ? AND type = ? AND itemnumber = ? ");
23
24 my $query2 = "SELECT * FROM statistics WHERE type = 'issue' OR type = 'cud-renew' OR type = 'localuse'";
25 my $sth2   = $dbh->prepare($query2);
26 $sth2->execute();
27 my $stats =  $sth2->fetchall_arrayref({});
28
29 foreach my $stat (@$stats) {
30   my $borrower = getCachedBorrower( $stat->{borrowernumber} );
31
32   $borrower = getCachedDeletedBorrower( $stat->{borrowernumber} ) unless $borrower;
33
34   if ($borrower) {
35     $borrower = $borrower->unblessed;
36     $stat->{categorycode} = $borrower->{categorycode};
37     $sthUpdateStat->execute( $stat->{categorycode},
38                              $stat->{datetime},
39                              $stat->{branch},
40                              $stat->{type},
41                              $stat->{itemnumber},
42                            );
43     print(  $stat->{categorycode} . " " .
44             $stat->{datetime} . " " .
45             $stat->{branch} . " " .
46             $stat->{type} . " " .
47             $stat->{itemnumber} . " "
48           );
49     print "\n";
50   }
51 }
52
53
54
55 ##Members are repeatedly loaded in various parts of this code. Better to cache them.
56 sub getCachedBorrower {
57     my $borrowernumber = shift; #The hash to store all branches by branchcode
58
59     if (exists $borrowers->{$borrowernumber}) {
60         return $borrowers->{$borrowernumber};
61     }
62     my $borrower = Koha::Patrons->find({ borrowernumber => $borrowernumber });
63     $borrowers->{$borrowernumber} = $borrower;
64     return $borrower;
65 }
66 ##Deleted members are repeatedly loaded in various parts of this code. Better to cache them.
67 sub getCachedDeletedBorrower {
68     my $borrowernumber = shift; #The hash to store all branches by branchcode
69
70     if (exists $deletedBorrowers->{$borrowernumber}) {
71         return $deletedBorrowers->{$borrowernumber};
72     }
73     $sthDelBor->execute( $borrowernumber );
74
75     my $borrower = $sthDelBor->fetchrow_hashref();
76     $borrowers->{$borrowernumber} = $borrower;
77     return $borrower;
78 }