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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/patron_lists/lists.tt (-1 / +21 lines)
Lines 47-52 Link Here
47
                    <th>&nbsp;</th>
47
                    <th>&nbsp;</th>
48
                    <th>&nbsp;</th>
48
                    <th>&nbsp;</th>
49
                    <th>&nbsp;</th>
49
                    <th>&nbsp;</th>
50
                    [% IF CAN_user_tools_edit_patrons %]
51
                        <th>&nbsp;</th>
52
                    [% END %]
53
                    [% IF CAN_user_tools_delete_anonymize_patrons %]
54
                        <th>&nbsp;</th>
55
                    [% END %]
50
                </tr>
56
                </tr>
51
            </thead>
57
            </thead>
52
58
Lines 57-63 Link Here
57
                        <td>[% l.patron_list_patrons_rs.count || 0 %]</td>
63
                        <td>[% l.patron_list_patrons_rs.count || 0 %]</td>
58
                        <td>
64
                        <td>
59
                            <a class="btn btn-mini" href="list.pl?patron_list_id=[% l.patron_list_id %]">
65
                            <a class="btn btn-mini" href="list.pl?patron_list_id=[% l.patron_list_id %]">
60
                                <i class="fa fa-plus-sign"></i> Add patrons <i class="fa fa-user"></i>
66
                                <i class="icon-plus-sign"></i> Add patrons</i>
61
                            </a>
67
                            </a>
62
                        </td>
68
                        </td>
63
                        <td>
69
                        <td>
Lines 75-80 Link Here
75
                                <i class="icon-print"></i> Print patron cards
81
                                <i class="icon-print"></i> Print patron cards
76
                            </a>
82
                            </a>
77
                        </td>
83
                        </td>
84
                        [% IF CAN_user_tools_edit_patrons %]
85
                            <td>
86
                                <a class="btn btn-mini" href="/cgi-bin/koha/tools/modborrowers.pl?patron_list_id=[% l.patron_list_id %]&op=show">
87
                                    <i class="icon-edit"></i> Edit patrons</i>
88
                                </a>
89
                            </td>
90
                        [% END %]
91
                        [% IF CAN_user_tools_delete_anonymize_patrons %]
92
                            <td>
93
                                <a class="btn btn-mini" href="/cgi-bin/koha/tools/cleanborrowers.pl?step=2&patron_list_id=[% l.patron_list_id %]">
94
                                    <i class="icon-trash"></i> Delete patrons</i>
95
                                </a>
96
                            </td>
97
                        [% END %]
78
                    </tr>
98
                    </tr>
79
                [% END %]
99
                [% END %]
80
            </tbody>
100
            </tbody>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt (-8 / +22 lines)
Lines 12-18 Link Here
12
         */
12
         */
13
          function checkForm(form) {
13
          function checkForm(form) {
14
              if((form.checkbox[0].checked)){
14
              if((form.checkbox[0].checked)){
15
                  if ( (!form.date1.value) && (!form.borrower_dateexpiry.value) && (!form.borrower_categorycode.value) ){
15
                  if ( (!form.date1.value) && (!form.borrower_dateexpiry.value) && (!form.borrower_categorycode.value) && (!form.patron_list_id.value)){
16
                    alert(_("Please enter at least one criterion for deletion!"));
16
                    alert(_("Please enter at least one criterion for deletion!"));
17
                    return false;
17
                    return false;
18
                  }
18
                  }
Lines 88-95 Link Here
88
                        [% END %]
88
                        [% END %]
89
                    </select>
89
                    </select>
90
                </li>
90
                </li>
91
                [% IF patron_lists %]
92
                <li>
93
                    <label for="patron_list_id"><strong>Or</strong> use a patron list: </label>
94
                    <select id="patron_list_id" name="patron_list_id">
95
                        <option value=""></option>
96
                        [% FOREACH pl IN patron_lists %]
97
                            <option value="[% pl.patron_list_id %]">[% pl.name %]</option>
98
                        [% END %]
99
                    </select>
100
                    <span class="hint">If using a patron list, no other criteria will be used.</span>
101
                </li>
102
                [% END %]
91
            </ul>
103
            </ul>
92
        </fieldset>
104
        </fieldset>
105
93
        <fieldset>
106
        <fieldset>
94
        <legend>Anonymize checkout history</legend>
107
        <legend>Anonymize checkout history</legend>
95
        [% UNLESS Koha.Preference('AnonymousPatron') %]
108
        [% UNLESS Koha.Preference('AnonymousPatron') %]
Lines 121-132 Link Here
121
    <fieldset>
134
    <fieldset>
122
        <legend>Warnings</legend>
135
        <legend>Warnings</legend>
123
        <ul>
136
        <ul>
124
            <li>[% IF ( totalToDelete ) %][% totalToDelete %] [% ELSE %]0 [% END %] patrons will be deleted</li>
137
            <li>[% patrons_to_delete.size || 0 %] patrons will be deleted</li>
125
            <li>[% IF ( totalToAnonymize ) %][% totalToAnonymize %] [% ELSE %]0 [% END %] checkout history will be anonymized</li>
138
            <li>[% patrons_to_anonymize.size || 0 %] patron's checkout histories will be anonymized</li>
126
        </ul>
139
        </ul>
127
140
128
        <br />
141
        <br />
129
            [% IF ( totalToDelete ) %]
142
            [% IF patrons_to_delete.size %]
130
                <fieldset><legend>What do you want to do for deleted patrons?</legend>
143
                <fieldset><legend>What do you want to do for deleted patrons?</legend>
131
                <input id="delete" type="radio" name="radio" value="delete" />
144
                <input id="delete" type="radio" name="radio" value="delete" />
132
                <label for="delete">Permanently delete these patrons</label>
145
                <label for="delete">Permanently delete these patrons</label>
Lines 136-147 Link Here
136
149
137
                <br /><input id="testrun" type="radio" name="radio" value="testrun" checked="checked" />
150
                <br /><input id="testrun" type="radio" name="radio" value="testrun" checked="checked" />
138
                <label for="testrun">Do not remove any patrons (test run)</label>
151
                <label for="testrun">Do not remove any patrons (test run)</label>
139
                <input type="hidden" name="do_delete" value="[% totalToDelete %]" /></fieldset>
152
                <input type="hidden" name="do_delete" value="[% patrons_to_delete.size %]" /></fieldset>
140
153
141
            [% END %]
154
            [% END %]
142
            [% IF ( totalToAnonymize ) %]
155
            [% IF patrons_to_anonymize.size %]
143
                Checkout history for [% totalToAnonymize %] patrons will be anonymized
156
                Checkout history for [% patrons_to_anonymize.size %] patrons will be anonymized
144
                <input type="hidden" name="do_anonym" value="[% totalToAnonymize %]" />
157
                <input type="hidden" name="do_anonym" value="[% patrons_to_anonymize.size %]" />
145
            [% END %]
158
            [% END %]
146
159
147
            <input type="hidden" name="step" value="3" />
160
            <input type="hidden" name="step" value="3" />
Lines 149-154 Link Here
149
            <input type="hidden" name="last_issue_date" value="[% last_issue_date | $KohaDates %]" />
162
            <input type="hidden" name="last_issue_date" value="[% last_issue_date | $KohaDates %]" />
150
            <input type="hidden" name="borrower_dateexpiry" value="[% borrower_dateexpiry | $KohaDates %]" />
163
            <input type="hidden" name="borrower_dateexpiry" value="[% borrower_dateexpiry | $KohaDates %]" />
151
            <input type="hidden" name="borrower_categorycode" value="[% borrower_categorycode %]" />
164
            <input type="hidden" name="borrower_categorycode" value="[% borrower_categorycode %]" />
165
            <input type="hidden" name="patron_list_id" value="[% patron_list_id %] />
152
    </fieldset>
166
    </fieldset>
153
    <fieldset class="action"><input type="submit" value="Finish" /> <a class="cancel" href="/cgi-bin/koha/tools/cleanborrowers.pl">Cancel</a></fieldset>
167
    <fieldset class="action"><input type="submit" value="Finish" /> <a class="cancel" href="/cgi-bin/koha/tools/cleanborrowers.pl">Cancel</a></fieldset>
154
        </form>
168
        </form>
(-)a/tools/cleanborrowers.pl (-27 / +52 lines)
Lines 40-46 use C4::Output; Link Here
40
use C4::Members;        # GetBorrowersWhoHavexxxBorrowed.
40
use C4::Members;        # GetBorrowersWhoHavexxxBorrowed.
41
use C4::Circulation;    # AnonymiseIssueHistory.
41
use C4::Circulation;    # AnonymiseIssueHistory.
42
use Koha::DateUtils qw( dt_from_string output_pref );
42
use Koha::DateUtils qw( dt_from_string output_pref );
43
use Koha::Database;
43
use Date::Calc qw/Today Add_Delta_YM/;
44
use Date::Calc qw/Today Add_Delta_YM/;
45
use Koha::List::Patron;
44
46
45
my $cgi = new CGI;
47
my $cgi = new CGI;
46
48
Lines 63-68 my $borrower_dateexpiry = Link Here
63
  $params->{borrower_dateexpiry}
65
  $params->{borrower_dateexpiry}
64
  ? dt_from_string $params->{borrower_dateexpiry}
66
  ? dt_from_string $params->{borrower_dateexpiry}
65
  : undef;
67
  : undef;
68
my $patron_list_id = $params->{patron_list_id};
66
69
67
my $borrower_categorycode = $params->{'borrower_categorycode'} || q{};
70
my $borrower_categorycode = $params->{'borrower_categorycode'} || q{};
68
71
Lines 80-107 if ( $step == 2 ) { Link Here
80
83
81
    my %checkboxes = map { $_ => 1 } split /\0/, $params->{'checkbox'};
84
    my %checkboxes = map { $_ => 1 } split /\0/, $params->{'checkbox'};
82
85
83
    my $totalDel;
86
    my $patrons_to_delete;
84
    my $membersToDelete;
87
    if ($patron_list_id) {
85
    if ( $checkboxes{borrower} ) {
88
        my @patron_list_patrons =
86
        $membersToDelete = GetBorrowersToExpunge(
89
          Koha::Database->new()->schema()->resultset('PatronListPatron')
87
            _get_selection_params($not_borrowered_since, $borrower_dateexpiry, $borrower_categorycode)
90
          ->search( { patron_list_id => $patron_list_id } );
88
        );
91
        $patrons_to_delete = \@patron_list_patrons;
89
        _skip_borrowers_with_nonzero_balance( $membersToDelete );
90
        $totalDel = scalar @$membersToDelete;
91
92
    }
92
    }
93
    my $totalAno;
93
    else {
94
    my $membersToAnonymize;
94
        if ( $checkboxes{borrower} ) {
95
            $patrons_to_delete = GetBorrowersToExpunge(
96
                _get_selection_params(
97
                    $not_borrowered_since,
98
                    $borrower_dateexpiry,
99
                    $borrower_categorycode,
100
                )
101
            );
102
        }
103
    }
104
    _skip_borrowers_with_nonzero_balance_or_issues($patrons_to_delete);
105
106
    my $members_to_anonymize;
95
    if ( $checkboxes{issue} ) {
107
    if ( $checkboxes{issue} ) {
96
        $membersToAnonymize = GetBorrowersWithIssuesHistoryOlderThan($last_issue_date);
108
        $members_to_anonymize = GetBorrowersWithIssuesHistoryOlderThan($last_issue_date);
97
        $totalAno           = scalar @$membersToAnonymize;
98
    }
109
    }
99
110
100
    $template->param(
111
    $template->param(
101
        totalToDelete           => $totalDel,
112
        patrons_to_delete    => $patrons_to_delete,
102
        totalToAnonymize        => $totalAno,
113
        patrons_to_anonymize => $members_to_anonymize,
103
        memberstodelete_list    => $membersToDelete,
114
        patron_list_id          => $patron_list_id,
104
        memberstoanonymize_list => $membersToAnonymize,
105
    );
115
    );
106
}
116
}
107
117
Lines 113-130 elsif ( $step == 3 ) { Link Here
113
123
114
    # delete members
124
    # delete members
115
    if ($do_delete) {
125
    if ($do_delete) {
116
        my $membersToDelete = GetBorrowersToExpunge(
126
        my $patrons_to_delete;
117
            _get_selection_params($not_borrowered_since, $borrower_dateexpiry, $borrower_categorycode)
127
        if ($patron_list_id) {
118
        );
128
            my @patron_list_patrons =
119
        _skip_borrowers_with_nonzero_balance( $membersToDelete );
129
              Koha::Database->new()->schema()->resultset('PatronListPatron')
120
        $totalDel = scalar(@$membersToDelete);
130
              ->search( { patron_list_id => $patron_list_id } );
131
            $patrons_to_delete = \@patron_list_patrons;
132
        }
133
        else {
134
            $patrons_to_delete = GetBorrowersToExpunge(
135
                _get_selection_params(
136
                    $not_borrowered_since, $borrower_dateexpiry,
137
                    $borrower_categorycode
138
                )
139
            );
140
        }
141
        _skip_borrowers_with_nonzero_balance_or_issues($patrons_to_delete);
142
143
        $totalDel = scalar(@$patrons_to_delete);
121
        $radio    = $params->{'radio'};
144
        $radio    = $params->{'radio'};
122
        for ( my $i = 0 ; $i < $totalDel ; $i++ ) {
145
        for ( my $i = 0 ; $i < $totalDel ; $i++ ) {
123
            $radio eq 'testrun' && last;
146
            $radio eq 'testrun' && last;
124
            my $borrowernumber = $membersToDelete->[$i]->{'borrowernumber'};
147
            my $borrowernumber = $patrons_to_delete->[$i]->{'borrowernumber'}
125
            $radio eq 'trash' && MoveMemberToDeleted( $borrowernumber );
148
              || $patrons_to_delete->[$i]->get_column('borrowernumber');
126
            C4::Members::HandleDelBorrower( $borrowernumber );
149
            $radio eq 'trash' && MoveMemberToDeleted($borrowernumber);
127
            DelMember( $borrowernumber );
150
            C4::Members::HandleDelBorrower($borrowernumber);
151
            DelMember($borrowernumber);
128
        }
152
        }
129
        $template->param(
153
        $template->param(
130
            do_delete => '1',
154
            do_delete => '1',
Lines 145-150 elsif ( $step == 3 ) { Link Here
145
        trash => ( $radio eq "trash" ) ? (1) : (0),
169
        trash => ( $radio eq "trash" ) ? (1) : (0),
146
        testrun => ( $radio eq "testrun" ) ? 1: 0,
170
        testrun => ( $radio eq "testrun" ) ? 1: 0,
147
    );
171
    );
172
} else { # $step == 1
173
    $template->param( patron_lists => [ GetPatronLists() ] );
148
}
174
}
149
175
150
$template->param(
176
$template->param(
151
- 

Return to bug 10612