View | Details | Raw Unified | Return to bug 9076
Collapse All | Expand All

(-)a/tools/cleanborrowers.pl (-42 / +40 lines)
Lines 17-23 Link Here
17
#
17
#
18
#   Written by Antoine Farnault antoine@koha-fr.org on Nov. 2006.
18
#   Written by Antoine Farnault antoine@koha-fr.org on Nov. 2006.
19
19
20
21
=head1 cleanborrowers.pl
20
=head1 cleanborrowers.pl
22
21
23
This script allows to do 2 things.
22
This script allows to do 2 things.
Lines 33-38 This script allows to do 2 things. Link Here
33
=cut
32
=cut
34
33
35
use strict;
34
use strict;
35
36
#use warnings; FIXME - Bug 2505
36
#use warnings; FIXME - Bug 2505
37
use CGI;
37
use CGI;
38
use C4::Auth;
38
use C4::Auth;
Lines 40-46 use C4::Output; Link Here
40
use C4::Dates qw/format_date format_date_in_iso/;
40
use C4::Dates qw/format_date format_date_in_iso/;
41
use C4::Members;        # GetBorrowersWhoHavexxxBorrowed.
41
use C4::Members;        # GetBorrowersWhoHavexxxBorrowed.
42
use C4::Circulation;    # AnonymiseIssueHistory.
42
use C4::Circulation;    # AnonymiseIssueHistory.
43
use C4::VirtualShelves (); #no import
43
use C4::VirtualShelves ();    #no import
44
use Date::Calc qw/Today Add_Delta_YM/;
44
use Date::Calc qw/Today Add_Delta_YM/;
45
45
46
my $cgi = new CGI;
46
my $cgi = new CGI;
Lines 51-65 my $cgi = new CGI; Link Here
51
#  * multivalued CGI paramaters are returned as a packaged string separated by "\0" (null)
51
#  * multivalued CGI paramaters are returned as a packaged string separated by "\0" (null)
52
my $params = $cgi->Vars;
52
my $params = $cgi->Vars;
53
53
54
my $filterdate1;               # the date which filter on issue history.
54
my $filterdate1;              # the date which filter on issue history.
55
my $filterdate2;               # the date which filter on borrowers last issue.
55
my $filterdate2;              # the date which filter on borrowers last issue.
56
my $borrower_dateexpiry;
56
my $borrower_dateexpiry;
57
my $borrower_categorycode;
57
my $borrower_categorycode;
58
58
59
# getting the template
59
# getting the template
60
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
60
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
61
    {
61
    {   template_name   => "tools/cleanborrowers.tmpl",
62
        template_name   => "tools/cleanborrowers.tmpl",
63
        query           => $cgi,
62
        query           => $cgi,
64
        type            => "intranet",
63
        type            => "intranet",
65
        authnotrequired => 0,
64
        authnotrequired => 0,
Lines 68-105 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
68
);
67
);
69
68
70
if ( $params->{'step2'} ) {
69
if ( $params->{'step2'} ) {
71
    $filterdate1 = format_date_in_iso($params->{'filterdate1'});
70
    $filterdate1           = format_date_in_iso( $params->{'filterdate1'} );
72
    $filterdate2 = format_date_in_iso($params->{'filterdate2'});
71
    $filterdate2           = format_date_in_iso( $params->{'filterdate2'} );
73
    $borrower_dateexpiry = format_date_in_iso($params->{'borrower_dateexpiry'});
72
    $borrower_dateexpiry   = format_date_in_iso( $params->{'borrower_dateexpiry'} );
74
    $borrower_categorycode = $params->{'borrower_categorycode'};
73
    $borrower_categorycode = $params->{'borrower_categorycode'};
75
74
76
    my %checkboxes = map { $_ => 1 } split /\0/, $params->{'checkbox'};
75
    my %checkboxes = map { $_ => 1 } split /\0/, $params->{'checkbox'};
77
76
78
    my $totalDel;
77
    my $totalDel;
79
    my $membersToDelete;
78
    my $membersToDelete;
80
    if ($checkboxes{borrower}) {
79
    if ( $checkboxes{borrower} ) {
81
        $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince({ not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode });
80
        $membersToDelete =
81
          GetBorrowersWhoHaveNotBorrowedSince( { not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode } );
82
        $totalDel = scalar @$membersToDelete;
82
        $totalDel = scalar @$membersToDelete;
83
            
83
84
    }
84
    }
85
    my $totalAno;
85
    my $totalAno;
86
    my $membersToAnonymize;
86
    my $membersToAnonymize;
87
    if ($checkboxes{issue}) {
87
    if ( $checkboxes{issue} ) {
88
        $membersToAnonymize =
88
        $membersToAnonymize = GetBorrowersWithIssuesHistoryOlderThan($filterdate2);
89
          GetBorrowersWithIssuesHistoryOlderThan($filterdate2);
89
        $totalAno           = scalar @$membersToAnonymize;
90
        $totalAno = scalar @$membersToAnonymize;
91
    }
90
    }
92
91
93
    $template->param(
92
    $template->param(
94
        step2            => 1,
93
        step2                   => 1,
95
        totalToDelete    => $totalDel,
94
        totalToDelete           => $totalDel,
96
        totalToAnonymize => $totalAno,
95
        totalToAnonymize        => $totalAno,
97
        memberstodelete_list => $membersToDelete,    
96
        memberstodelete_list    => $membersToDelete,
98
        memberstoanonymize_list => $membersToAnonymize,    
97
        memberstoanonymize_list => $membersToAnonymize,
99
        filterdate1      => format_date($filterdate1),
98
        filterdate1             => format_date($filterdate1),
100
        filterdate2      => format_date($filterdate2),
99
        filterdate2             => format_date($filterdate2),
101
        borrower_dateexpiry => $borrower_dateexpiry,
100
        borrower_dateexpiry     => $borrower_dateexpiry,
102
        borrower_categorycode => $borrower_categorycode,
101
        borrower_categorycode   => $borrower_categorycode,
103
    );
102
    );
104
103
105
    ### TODO : Use GetBorrowersNamesAndLatestIssue function in order to get the borrowers to delete or anonymize.
104
    ### TODO : Use GetBorrowersNamesAndLatestIssue function in order to get the borrowers to delete or anonymize.
Lines 108-141 if ( $params->{'step2'} ) { Link Here
108
}
107
}
109
108
110
if ( $params->{'step3'} ) {
109
if ( $params->{'step3'} ) {
111
    $filterdate1 = format_date_in_iso($params->{'filterdate1'});
110
    $filterdate1           = format_date_in_iso( $params->{'filterdate1'} );
112
    $filterdate2 = format_date_in_iso($params->{'filterdate2'});
111
    $filterdate2           = format_date_in_iso( $params->{'filterdate2'} );
113
    $borrower_dateexpiry = format_date_in_iso($params->{'borrower_dateexpiry'});
112
    $borrower_dateexpiry   = format_date_in_iso( $params->{'borrower_dateexpiry'} );
114
    $borrower_categorycode = $params->{'borrower_categorycode'};
113
    $borrower_categorycode = $params->{'borrower_categorycode'};
115
114
116
    my $do_delete = $params->{'do_delete'};
115
    my $do_delete = $params->{'do_delete'};
117
    my $do_anonym = $params->{'do_anonym'};
116
    my $do_anonym = $params->{'do_anonym'};
118
117
119
    my ( $totalDel, $totalAno, $radio ) = ( 0, 0, 0 );
118
    my ( $totalDel, $totalAno, $radio ) = ( 0, 0, 0 );
120
    
119
121
    # delete members
120
    # delete members
122
    if ($do_delete) {
121
    if ($do_delete) {
123
        my $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince({ not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode });
122
        my $membersToDelete =
123
          GetBorrowersWhoHaveNotBorrowedSince( { not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode } );
124
        $totalDel = scalar(@$membersToDelete);
124
        $totalDel = scalar(@$membersToDelete);
125
        $radio    = $params->{'radio'};
125
        $radio    = $params->{'radio'};
126
        if ( $radio eq 'trash' ) {
126
        if ( $radio eq 'trash' ) {
127
            my $i;
127
            my $i;
128
            for ( $i = 0 ; $i < $totalDel ; $i++ ) {
128
            for ( $i = 0 ; $i < $totalDel ; $i++ ) {
129
                MoveMemberToDeleted( $membersToDelete->[$i]->{'borrowernumber'} );
129
                MoveMemberToDeleted( $membersToDelete->[$i]->{'borrowernumber'} );
130
                C4::VirtualShelves::HandleDelBorrower($membersToDelete->[$i]->{'borrowernumber'});
130
                C4::VirtualShelves::HandleDelBorrower( $membersToDelete->[$i]->{'borrowernumber'} );
131
                DelMember( $membersToDelete->[$i]->{'borrowernumber'} );
131
                DelMember( $membersToDelete->[$i]->{'borrowernumber'} );
132
            }
132
            }
133
        }
133
        } else {    # delete completly.
134
        else {    # delete completly.
135
            my $i;
134
            my $i;
136
            for ( $i = 0 ; $i < $totalDel ; $i++ ) {
135
            for ( $i = 0 ; $i < $totalDel ; $i++ ) {
137
                C4::VirtualShelves::HandleDelBorrower($membersToDelete->[$i]->{'borrowernumber'});
136
                C4::VirtualShelves::HandleDelBorrower( $membersToDelete->[$i]->{'borrowernumber'} );
138
                DelMember($membersToDelete->[$i]->{'borrowernumber'});
137
                DelMember( $membersToDelete->[$i]->{'borrowernumber'} );
139
            }
138
            }
140
        }
139
        }
141
        $template->param(
140
        $template->param(
Lines 143-149 if ( $params->{'step3'} ) { Link Here
143
            TotalDel  => $totalDel
142
            TotalDel  => $totalDel
144
        );
143
        );
145
    }
144
    }
146
    
145
147
    # Anonymising all members
146
    # Anonymising all members
148
    if ($do_anonym) {
147
    if ($do_anonym) {
149
        $totalAno = AnonymiseIssueHistory($filterdate2);
148
        $totalAno = AnonymiseIssueHistory($filterdate2);
Lines 152-158 if ( $params->{'step3'} ) { Link Here
152
            do_anonym   => '1',
151
            do_anonym   => '1',
153
        );
152
        );
154
    }
153
    }
155
    
154
156
    $template->param(
155
    $template->param(
157
        step3 => '1',
156
        step3 => '1',
158
        trash => ( $radio eq "trash" ) ? (1) : (0),
157
        trash => ( $radio eq "trash" ) ? (1) : (0),
Lines 164-174 if ( $params->{'step3'} ) { Link Here
164
}
163
}
165
164
166
$template->param(
165
$template->param(
167
    step1       => '1',
166
    step1                    => '1',
168
    filterdate1 => $filterdate1,
167
    filterdate1              => $filterdate1,
169
    filterdate2 => $filterdate2,
168
    filterdate2              => $filterdate2,
170
    DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(),
169
    DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(),
171
    borrower_categorycodes => GetBorrowercategoryList(),
170
    borrower_categorycodes   => GetBorrowercategoryList(),
172
);
171
);
173
172
174
#writing the template
173
#writing the template
175
- 

Return to bug 9076