Bug 20598: Accruing fines not closed out by longoverdue.pl if WhenLostForgiveFine...
[koha.git] / members / memberentry.pl
index 3618c4f..14a1136 100755 (executable)
@@ -48,10 +48,6 @@ use Koha::Patron::HouseboundRole;
 use Koha::Patron::HouseboundRoles;
 use Koha::Token;
 use Email::Valid;
-use Module::Load;
-if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) {
-    load Koha::NorwegianPatronDB, qw( NLGetSyncDataFromBorrowernumber );
-}
 use Koha::SMS::Providers;
 
 use vars qw($debug);
@@ -78,6 +74,10 @@ my ($template, $loggedinuser, $cookie)
 my $borrowernumber = $input->param('borrowernumber');
 my $patron         = Koha::Patrons->find($borrowernumber);
 
+if ( $borrowernumber and not $patron ) {
+    output_and_exit( $input, $cookie, $template,  'unknown_patron' );
+}
+
 if ( C4::Context->preference('SMSSendDriver') eq 'Email' ) {
     my @providers = Koha::SMS::Providers->search();
     $template->param( sms_providers => \@providers );
@@ -156,9 +156,8 @@ if ( $op eq 'modify' or $op eq 'save' or $op eq 'duplicate' ) {
 
     $borrower_data = $patron->unblessed;
     $borrower_data->{category_type} = $patron->category->category_type;
-} else {
-    $patron = Koha::Patron->new;
 }
+
 my $categorycode  = $input->param('categorycode') || $borrower_data->{'categorycode'};
 my $category_type = $input->param('category_type') || '';
 unless ($category_type or !($categorycode)){
@@ -281,21 +280,23 @@ $newdata{'lang'}    = $input->param('lang')    if defined($input->param('lang'))
 # builds default userid
 # userid input text may be empty or missing because of syspref BorrowerUnwantedField
 if ( ( defined $newdata{'userid'} && $newdata{'userid'} eq '' ) || $check_BorrowerUnwantedField =~ /userid/ && !defined $data{'userid'} ) {
+    my $fake_patron = Koha::Patron->new;
+    $fake_patron->userid($patron->userid) if $patron; # editing
     if ( ( defined $newdata{'firstname'} || $category_type eq 'I' ) && ( defined $newdata{'surname'} ) ) {
         # Full page edit, firstname and surname input zones are present
-        $patron->firstname($newdata{firstname});
-        $patron->surname($newdata{surname});
-        $patron->generate_userid;
-        $newdata{'userid'} = $patron->userid;
+        $fake_patron->firstname($newdata{firstname});
+        $fake_patron->surname($newdata{surname});
+        $fake_patron->generate_userid;
+        $newdata{'userid'} = $fake_patron->userid;
     }
     elsif ( ( defined $data{'firstname'} || $category_type eq 'I' ) && ( defined $data{'surname'} ) ) {
         # Partial page edit (access through "Details"/"Library details" tab), firstname and surname input zones are not used
         # Still, if the userid field is erased, we can create a new userid with available firstname and surname
         # FIXME clean thiscode newdata vs data is very confusing
-        $patron->firstname($data{firstname});
-        $patron->surname($data{surname});
-        $patron->generate_userid;
-        $newdata{'userid'} = $patron->userid;
+        $fake_patron->firstname($data{firstname});
+        $fake_patron->surname($data{surname});
+        $fake_patron->generate_userid;
+        $newdata{'userid'} = $fake_patron->userid;
     }
     else {
         $newdata{'userid'} = $data{'userid'};
@@ -478,10 +479,6 @@ if ((!$nok) and $nodouble and ($op eq 'insert' or $op eq 'save')){
         if (C4::Context->preference('EnhancedMessagingPreferences') and $input->param('setting_messaging_prefs')) {
             C4::Form::MessagingPreferences::handle_form_action($input, { borrowernumber => $borrowernumber }, $template, 1, $newdata{'categorycode'});
         }
-        # Try to do the live sync with the Norwegian national patron database, if it is enabled
-        if ( exists $data{'borrowernumber'} && C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) {
-            NLSync({ 'borrowernumber' => $borrowernumber });
-        }
 
         # Create HouseboundRole if necessary.
         # Borrower did not exist, so HouseboundRole *cannot* yet exist.
@@ -594,15 +591,6 @@ if ($op eq "modify")  {
     if ( $step == 4 ) {
         $template->param( categorycode => $borrower_data->{'categorycode'} );
     }
-    # Add sync data to the user data
-    if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) {
-        my $sync = NLGetSyncDataFromBorrowernumber( $borrowernumber );
-        if ( $sync ) {
-            $template->param(
-                sync => $sync->sync,
-            );
-        }
-    }
 }
 if ( $op eq "duplicate" ) {
     $template->param( updtype => 'I' );