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

(-)a/C4/Members.pm (-39 / +9 lines)
Lines 627-645 sub ModMember { Link Here
627
    $new_borrower->{dateexpiry}      ||= undef if exists $new_borrower->{dateexpiry};
627
    $new_borrower->{dateexpiry}      ||= undef if exists $new_borrower->{dateexpiry};
628
    $new_borrower->{debarred}        ||= undef if exists $new_borrower->{debarred};
628
    $new_borrower->{debarred}        ||= undef if exists $new_borrower->{debarred};
629
    $new_borrower->{sms_provider_id} ||= undef if exists $new_borrower->{sms_provider_id};
629
    $new_borrower->{sms_provider_id} ||= undef if exists $new_borrower->{sms_provider_id};
630
    $new_borrower->{guarantorid}     ||= undef if exists $new_borrower->{guarantorid};
630
631
631
    my $rs = $schema->resultset('Borrower')->search({
632
    my $patron = Koha::Patrons->find( $new_borrower->{borrowernumber} );
632
        borrowernumber => $new_borrower->{borrowernumber},
633
     });
634
633
635
    delete $new_borrower->{userid} if exists $new_borrower->{userid} and not $new_borrower->{userid};
634
    delete $new_borrower->{userid} if exists $new_borrower->{userid} and not $new_borrower->{userid};
636
635
637
    my $execute_success = $rs->update($new_borrower);
636
    my $execute_success = $patron->store if $patron->set($new_borrower);
638
    if ($execute_success ne '0E0') { # only proceed if the update was a success
637
638
    if ($execute_success) { # only proceed if the update was a success
639
        # If the patron changes to a category with enrollment fee, we add a fee
639
        # If the patron changes to a category with enrollment fee, we add a fee
640
        if ( $data{categorycode} and $data{categorycode} ne $old_categorycode ) {
640
        if ( $data{categorycode} and $data{categorycode} ne $old_categorycode ) {
641
            if ( C4::Context->preference('FeeOnChangePatronCategory') ) {
641
            if ( C4::Context->preference('FeeOnChangePatronCategory') ) {
642
                AddEnrolmentFeeIfNeeded( $data{categorycode}, $data{borrowernumber} );
642
                $patron->add_enrolment_fee_if_needed;
643
            }
643
            }
644
        }
644
        }
645
645
Lines 726-733 sub AddMember { Link Here
726
    my $new_member = { map { join(' ',@columns) =~ /$_/ ? ( $_ => $data{$_} )  : () } keys(%data) } ;
726
    my $new_member = { map { join(' ',@columns) =~ /$_/ ? ( $_ => $data{$_} )  : () } keys(%data) } ;
727
    delete $new_member->{borrowernumber};
727
    delete $new_member->{borrowernumber};
728
728
729
    my $rs = $schema->resultset('Borrower');
729
    my $patron = Koha::Patron->new($new_member)->store;
730
    $data{borrowernumber} = $rs->create($new_member)->id;
730
    $data{borrowernumber} = $patron->id;
731
731
732
    # If NorwegianPatronDBEnable is enabled, we set syncstatus to something that a
732
    # If NorwegianPatronDBEnable is enabled, we set syncstatus to something that a
733
    # cronjob will use for syncing with NL
733
    # cronjob will use for syncing with NL
Lines 741-750 sub AddMember { Link Here
741
        });
741
        });
742
    }
742
    }
743
743
744
    # mysql_insertid is probably bad.  not necessarily accurate and mysql-specific at best.
745
    logaction("MEMBERS", "CREATE", $data{'borrowernumber'}, "") if C4::Context->preference("BorrowersLog");
744
    logaction("MEMBERS", "CREATE", $data{'borrowernumber'}, "") if C4::Context->preference("BorrowersLog");
746
745
747
    AddEnrolmentFeeIfNeeded( $data{categorycode}, $data{borrowernumber} );
746
    $patron->add_enrolment_fee_if_needed;
748
747
749
    return $data{borrowernumber};
748
    return $data{borrowernumber};
750
}
749
}
Lines 2119-2153 sub AddMember_Opac { Link Here
2119
    return ( $borrowernumber, $borrower{'password'} );
2118
    return ( $borrowernumber, $borrower{'password'} );
2120
}
2119
}
2121
2120
2122
=head2 AddEnrolmentFeeIfNeeded
2123
2124
    AddEnrolmentFeeIfNeeded( $borrower->{categorycode}, $borrower->{borrowernumber} );
2125
2126
Add enrolment fee for a patron if needed.
2127
2128
=cut
2129
2130
sub AddEnrolmentFeeIfNeeded {
2131
    my ( $categorycode, $borrowernumber ) = @_;
2132
    # check for enrollment fee & add it if needed
2133
    my $dbh = C4::Context->dbh;
2134
    my $sth = $dbh->prepare(q{
2135
        SELECT enrolmentfee
2136
        FROM categories
2137
        WHERE categorycode=?
2138
    });
2139
    $sth->execute( $categorycode );
2140
    if ( $sth->err ) {
2141
        warn sprintf('Database returned the following error: %s', $sth->errstr);
2142
        return;
2143
    }
2144
    my ($enrolmentfee) = $sth->fetchrow;
2145
    if ($enrolmentfee && $enrolmentfee > 0) {
2146
        # insert fee in patron debts
2147
        C4::Accounts::manualinvoice( $borrowernumber, '', '', 'A', $enrolmentfee );
2148
    }
2149
}
2150
2151
=head2 HasOverdues
2121
=head2 HasOverdues
2152
2122
2153
=cut
2123
=cut
(-)a/Koha/Patron.pm (-2 / +21 lines)
Lines 190-201 sub extend_subscription { Link Here
190
190
191
    $self->dateexpiry($expiry_date)->store;
191
    $self->dateexpiry($expiry_date)->store;
192
192
193
    C4::Members::AddEnrolmentFeeIfNeeded( $self->categorycode, $self->borrowernumber );
193
    $self->add_enrolment_fee_if_needed;
194
194
195
    logaction( "MEMBERS", "RENEW", $self->borrowernumber, "Membership renewed" ) if C4::Context->preference("BorrowersLog");
195
    logaction( "MEMBERS", "RENEW", $self->borrowernumber, "Membership renewed" ) if C4::Context->preference("BorrowersLog");
196
    return dt_from_string( $expiry_date )->truncate( to => 'day' );
196
    return dt_from_string( $expiry_date )->truncate( to => 'day' );
197
}
197
}
198
198
199
200
=head3 add_enrolment_fee_if_needed
201
202
my $enrolment_fee = $patron->add_enrolment_fee_if_needed;
203
204
Add enrolment fee for a patron if needed.
205
206
=cut
207
208
sub add_enrolment_fee_if_needed {
209
    my ($self) = @_;
210
    my $patron_category = Koha::Patron::Categories->find( $self->categorycode );
211
    my $enrolment_fee = $patron_category->enrolmentfee;
212
    if ( $enrolment_fee && $enrolment_fee > 0 ) {
213
        # insert fee in patron debts
214
        C4::Accounts::manualinvoice( $self->borrowernumber, '', '', 'A', $enrolment_fee );
215
    }
216
    return $enrolment_fee || 0;
217
}
218
199
=head3 type
219
=head3 type
200
220
201
=cut
221
=cut
202
- 

Return to bug 16912