Bug 24113: guarantor info lost when a duplicate is found
authorKyle M Hall <kyle@bywatersolutions.com>
Tue, 26 Nov 2019 15:23:36 +0000 (10:23 -0500)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Wed, 27 Nov 2019 07:51:04 +0000 (07:51 +0000)
When a patron is created with a guarantor but a duplicate is found (or any other warnings I guess) the guarantor's info are lost.

This patch improves on previous functionality by retaining the select guarantor relationship as well.

Test Plan:
1) Create a new child with a name already used, add a guarantor
2) Attempt to save, no the guarantor is not shown when the editor is redisplayed
3) Apply this patch
4) Restart all the things!
5) Repeat 1
6) Note the guarantor is retained and the relationship is as well!

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt
koha-tmpl/intranet-tmpl/prog/js/members.js
members/memberentry.pl

index 4bbd264..a2c491c 100644 (file)
                 }
             [% END %]
 
-            [% IF guarantor %]
-                select_user( '[% guarantor.borrowernumber | html %]', [% To.json( guarantor.unblessed ) | $raw %] );
+            [% IF new_guarantors %]
+                [% FOREACH g IN new_guarantors %]
+                    select_user( '[% g.patron.borrowernumber | html %]', [% To.json( g.patron.unblessed ) | $raw %], '[% g.relationship | html %]' );
+                [% END %]
             [% END %]
 
             $("#cn_max").hide();
index 7cdc1b9..da7d47e 100644 (file)
@@ -165,7 +165,7 @@ function update_category_code(category_code) {
     $(mytables).find(" li[data-category_code='']").show();
 }
 
-function select_user(borrowernumber, borrower) {
+function select_user(borrowernumber, borrower, relationship) {
     let is_guarantor = $(`.guarantor-details[data-borrowernumber=${borrower.borrowernumber}]`).length;
 
     if ( is_guarantor ) {
@@ -205,6 +205,10 @@ function select_user(borrowernumber, borrower) {
 
         $('#guarantor_relationships').append( fieldset );
         fieldset.show();
+
+        if ( relationship ) {
+            fieldset.find('.new_guarantor_relationship').val(relationship);
+        }
     }
 
     return 0;
index fa5cbe4..2471457 100755 (executable)
@@ -261,6 +261,19 @@ if ( ( $op eq 'insert' ) and !$nodouble ) {
     if ( $patrons->count > 0) {
         $nodouble = 0;
         $check_member = $patrons->next->borrowernumber;
+
+
+        my @new_guarantors;
+        my @new_guarantor_id           = $input->multi_param('new_guarantor_id');
+        my @new_guarantor_relationship = $input->multi_param('new_guarantor_relationship');
+        foreach my $gid ( @new_guarantor_id ) {
+            my $patron = Koha::Patrons->find( $gid );
+            my $relationship = shift( @new_guarantor_relationship );
+            next unless $patron;
+            my $g = { patron => $patron, relationship => $relationship };
+            push( @new_guarantors, $g );
+        }
+        $template->param( new_guarantors => \@new_guarantors );
     }
 }