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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt (-10 / +17 lines)
Lines 76-82 Link Here
76
                    <select id="borrower_categorycode" name="borrower_categorycode">
76
                    <select id="borrower_categorycode" name="borrower_categorycode">
77
                        <option value="" selected="selected">Any</option>
77
                        <option value="" selected="selected">Any</option>
78
                        [% FOREACH bc IN borrower_categorycodes %]
78
                        [% FOREACH bc IN borrower_categorycodes %]
79
                            [% UNLESS bc.categorycode == 'S' %]
79
                            [% UNLESS ( bc.categorycode == 'S' || bc.category_type == 'S' ) %]
80
                                <option value="[% bc.categorycode %]">[% bc.description %]</option>
80
                                <option value="[% bc.categorycode %]">[% bc.description %]</option>
81
                            [% END %]
81
                            [% END %]
82
                        [% END %]
82
                        [% END %]
Lines 119-129 Link Here
119
        <br />
119
        <br />
120
            [% IF ( totalToDelete ) %]
120
            [% IF ( totalToDelete ) %]
121
                <fieldset><legend>What do you want to do for deleted patrons?</legend>
121
                <fieldset><legend>What do you want to do for deleted patrons?</legend>
122
                <input id="delete" type="radio" name="radio" value="delete" />
122
                <label for="delete">Permanently delete these patrons</label>
123
                <label for="delete">Permanently delete these patrons</label>
123
                <input id="delete" type="radio" name="radio" value="delete" checked="checked" />
124
124
125
                <br /><input id="trash" type="radio" name="radio" value="trash" />
125
                <label for="trash">Move these patrons to the trash</label>
126
                <label for="trash">Move these patrons to the trash</label>
126
                <input id="trash" type="radio" name="radio" value="trash" />
127
128
                <br /><input id="testrun" type="radio" name="radio" value="testrun" checked="checked" />
129
                <label for="testrun">Do not remove any patrons (test run)</label>
127
                <input type="hidden" name="do_delete" value="[% totalToDelete %]" /></fieldset>
130
                <input type="hidden" name="do_delete" value="[% totalToDelete %]" /></fieldset>
128
131
129
            [% END %]
132
            [% END %]
Lines 148-162 Link Here
148
<!-- Step 3 START -->
151
<!-- Step 3 START -->
149
152
150
    <div id="step3">
153
    <div id="step3">
151
154
        [% IF ( testrun ) %]
152
        [% IF ( do_delete ) %]
155
            <h4>[% TotalDel %] patrons would have been removed (if it wasn't a test run)</h4>
153
            [% IF ( trash ) %]
156
            <h4>No patron records have been actually removed</h4>
154
                <h4>[% TotalDel %] patrons have been successfully moved to trash</h4>
157
        [% ELSE %]
158
            [% IF ( do_delete ) %]
159
                [% IF ( trash ) %]
160
                    <h4>[% TotalDel %] patrons have been successfully moved to trash</h4>
161
                [% ELSE %]
162
                    <h4>[% TotalDel %] patrons have been successfully deleted</h4>
163
                [% END %]
155
            [% ELSE %]
164
            [% ELSE %]
156
                <h4>[% TotalDel %] patrons have been successfully deleted</h4>
165
                <h4>No patron records have been removed</h4>
157
            [% END %]
166
            [% END %]
158
        [% ELSE %]
159
            <h4>No patron records have been removed</h4>
160
        [% END %]
167
        [% END %]
161
        [% IF ( do_anonym ) %]
168
        [% IF ( do_anonym ) %]
162
            <h4>All patrons with checkouts older than [% filterdate1 %] have been anonymized</h4>
169
            <h4>All patrons with checkouts older than [% filterdate1 %] have been anonymized</h4>
(-)a/tools/cleanborrowers.pl (-15 / +19 lines)
Lines 79-84 if ( $params->{'step2'} ) { Link Here
79
    if ( $checkboxes{borrower} ) {
79
    if ( $checkboxes{borrower} ) {
80
        $membersToDelete =
80
        $membersToDelete =
81
          GetBorrowersToExpunge( { not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode } );
81
          GetBorrowersToExpunge( { not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode } );
82
        _skip_borrowers_with_nonzero_balance( $membersToDelete );
82
        $totalDel = scalar @$membersToDelete;
83
        $totalDel = scalar @$membersToDelete;
83
84
84
    }
85
    }
Lines 97-103 if ( $params->{'step2'} ) { Link Here
97
        memberstoanonymize_list => $membersToAnonymize,
98
        memberstoanonymize_list => $membersToAnonymize,
98
        filterdate1             => format_date($filterdate1),
99
        filterdate1             => format_date($filterdate1),
99
        filterdate2             => format_date($filterdate2),
100
        filterdate2             => format_date($filterdate2),
100
        borrower_dateexpiry     => $borrower_dateexpiry,
101
        borrower_dateexpiry     => format_date($borrower_dateexpiry),
101
        borrower_categorycode   => $borrower_categorycode,
102
        borrower_categorycode   => $borrower_categorycode,
102
    );
103
    );
103
104
Lines 121-141 if ( $params->{'step3'} ) { Link Here
121
    if ($do_delete) {
122
    if ($do_delete) {
122
        my $membersToDelete =
123
        my $membersToDelete =
123
          GetBorrowersToExpunge( { not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode } );
124
          GetBorrowersToExpunge( { not_borrowered_since => $filterdate1, expired_before => $borrower_dateexpiry, category_code => $borrower_categorycode } );
125
        _skip_borrowers_with_nonzero_balance( $membersToDelete );
124
        $totalDel = scalar(@$membersToDelete);
126
        $totalDel = scalar(@$membersToDelete);
125
        $radio    = $params->{'radio'};
127
        $radio    = $params->{'radio'};
126
        if ( $radio eq 'trash' ) {
128
        for ( my $i = 0 ; $i < $totalDel ; $i++ ) {
127
            my $i;
129
            $radio eq 'testrun' && last;
128
            for ( $i = 0 ; $i < $totalDel ; $i++ ) {
130
            my $borrowernumber = $membersToDelete->[$i]->{'borrowernumber'};
129
                MoveMemberToDeleted( $membersToDelete->[$i]->{'borrowernumber'} );
131
            $radio eq 'trash' && MoveMemberToDeleted( $borrowernumber );
130
                C4::VirtualShelves::HandleDelBorrower( $membersToDelete->[$i]->{'borrowernumber'} );
132
            C4::VirtualShelves::HandleDelBorrower( $borrowernumber );
131
                DelMember( $membersToDelete->[$i]->{'borrowernumber'} );
133
            DelMember( $borrowernumber );
132
            }
133
        } else {    # delete completly.
134
            my $i;
135
            for ( $i = 0 ; $i < $totalDel ; $i++ ) {
136
                C4::VirtualShelves::HandleDelBorrower( $membersToDelete->[$i]->{'borrowernumber'} );
137
                DelMember( $membersToDelete->[$i]->{'borrowernumber'} );
138
            }
139
        }
134
        }
140
        $template->param(
135
        $template->param(
141
            do_delete => '1',
136
            do_delete => '1',
Lines 156-161 if ( $params->{'step3'} ) { Link Here
156
    $template->param(
151
    $template->param(
157
        step3 => '1',
152
        step3 => '1',
158
        trash => ( $radio eq "trash" ) ? (1) : (0),
153
        trash => ( $radio eq "trash" ) ? (1) : (0),
154
        testrun => ( $radio eq "testrun" ) ? 1: 0,
159
    );
155
    );
160
156
161
    #writing the template
157
    #writing the template
Lines 172-174 $template->param( Link Here
172
168
173
#writing the template
169
#writing the template
174
output_html_with_http_headers $cgi, $cookie, $template->output;
170
output_html_with_http_headers $cgi, $cookie, $template->output;
175
- 
171
172
sub _skip_borrowers_with_nonzero_balance {
173
    my $borrowers = shift;
174
    my $balance;
175
    @$borrowers = map {
176
        (undef, undef, $balance) = GetMemberIssuesAndFines( $_->{borrowernumber} );
177
        ($balance != 0) ? (): ($_);
178
    } @$borrowers;
179
}

Return to bug 11352