Bug 41229: Fix desk and register session persistence on library change
When changing library in circ/set-library.pl, desk and register values were not being properly cleared from the session. This caused stale desk/register data from the previous library to persist, resulting in: - Incorrect cashup displays showing wrong library's register - POS defaulting to registers from different libraries - Session state inconsistent with visual UI Three issues fixed: 1. Template: Changed register "None" option ID from "set-library-noregister" to "noregister" to match JavaScript expectations (consistent with desk handling) 2. Desk logic: Changed condition to use defined() and explicitly clear session when "No desk" is selected 3. Register logic: Added session clearing when "No register" is selected and fixed condition to handle empty initial state Test plan: 1. Select Library A with Register 5 2. Change to Library B without selecting a register 3. Verify register is cleared from session (check POS page) 4. Repeat for desk selection 5. Verify explicit "-- None --" selection clears session values Signed-off-by: Jason Robb <jrobb@sekls.org> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
parent
46bfbfee2d
commit
92d6fcf2bd
|
|
@ -71,26 +71,37 @@ if (
|
||||||
$branch = $userenv_branch; # fallback value
|
$branch = $userenv_branch; # fallback value
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $desk_id && ( !$userenv_desk or $userenv_desk ne $desk_id ) ) {
|
if ( defined($desk_id) && ( !$userenv_desk || $userenv_desk ne $desk_id ) ) {
|
||||||
my $desk = Koha::Desks->find( { desk_id => $desk_id } );
|
if ($desk_id) {
|
||||||
my $old_desk_name = '';
|
|
||||||
if ($userenv_desk) {
|
# A desk was selected
|
||||||
$old_desk_name = Koha::Desks->find( { desk_id => $userenv_desk } )->desk_name;
|
my $desk = Koha::Desks->find( { desk_id => $desk_id } );
|
||||||
|
$session->param( desk_name => $desk->desk_name );
|
||||||
|
$session->param( desk_id => $desk->desk_id );
|
||||||
|
} else {
|
||||||
|
|
||||||
|
# "No desk" was explicitly selected - clear desk from session
|
||||||
|
$session->clear( [ 'desk_name', 'desk_id' ] );
|
||||||
}
|
}
|
||||||
$session->param( desk_name => $desk->desk_name );
|
|
||||||
$session->param( desk_id => $desk->desk_id );
|
|
||||||
$updated = 1;
|
$updated = 1;
|
||||||
} else {
|
} else {
|
||||||
$desk_id = $userenv_desk;
|
$desk_id = $userenv_desk;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( defined($register_id)
|
if ( defined($register_id)
|
||||||
&& ( $userenv_register_id ne $register_id ) )
|
&& ( !$userenv_register_id || $userenv_register_id ne $register_id ) )
|
||||||
{
|
{
|
||||||
my $old_register_name = C4::Context->userenv->{'register_name'} || '';
|
if ($register_id) {
|
||||||
my $register = Koha::Cash::Registers->find($register_id);
|
|
||||||
$session->param( 'register_id', $register_id );
|
# A register was selected
|
||||||
$session->param( 'register_name', $register ? $register->name : '' );
|
my $register = Koha::Cash::Registers->find($register_id);
|
||||||
|
$session->param( 'register_id', $register_id );
|
||||||
|
$session->param( 'register_name', $register ? $register->name : '' );
|
||||||
|
} else {
|
||||||
|
|
||||||
|
# "No register" was explicitly selected - clear register from session
|
||||||
|
$session->clear( [ 'register_id', 'register_name' ] );
|
||||||
|
}
|
||||||
$updated = 1;
|
$updated = 1;
|
||||||
} else {
|
} else {
|
||||||
$register_id = $userenv_register_id;
|
$register_id = $userenv_register_id;
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@
|
||||||
<li>
|
<li>
|
||||||
<label for="set-library-register_id">Choose cash register:</label>
|
<label for="set-library-register_id">Choose cash register:</label>
|
||||||
<select name="register_id" id="set-library-register_id">
|
<select name="register_id" id="set-library-register_id">
|
||||||
<option id="set-library-noregister" selected="selected" value="">-- None --</option>
|
<option id="noregister" selected="selected" value="">-- None --</option>
|
||||||
[% PROCESS options_for_registers registers => Registers.all() %]
|
[% PROCESS options_for_registers registers => Registers.all() %]
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue