Bug 34101

Summary: Limit items types that can be checked out via SIP2
Product: Koha Reporter: Nick Clemens (kidclamp) <nick>
Component: SIP2Assignee: Sam Lau <samalau>
Status: Needs documenting --- QA Contact: Martin Renvoize <martin.renvoize>
Severity: enhancement    
Priority: P5 - low CC: christofer.zorn, martin.renvoize, matt.blenkinsop, samalau
Version: Main   
Hardware: All   
OS: All   
See Also: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=35130
Change sponsored?: --- Patch complexity: ---
Documentation contact: Documentation submission:
Text to go in the release notes:
Version(s) released in:
23.11.00,23.05.02
Attachments: Bug 34101: Unit Tests
Bug 34101: Limit items types that can be checked out via SIP2
Bug 34101: Unit Tests
Bug 34101: Limit items types that can be checked out via SIP2
Bug 34101: Unit Tests
Bug 34101: Limit items types that can be checked out via SIP2

Description Nick Clemens (kidclamp) 2023-06-22 19:21:48 UTC
Some libraries have different types of SIP2 checkout stations - staffed or unstaffed. There are certin itemtypes (passes, equipment, etc.) that should not be checked out from unstaffed stations,

This bug proposes to add the ability to define a list of item types in the SIP configuration for an account and prevent those items from being issued by that SIP account
Comment 1 Sam Lau 2023-06-27 23:03:24 UTC
Created attachment 152773 [details] [review]
Bug 34101: Unit Tests

prove t/db_dependent/SIP/Message.t
Comment 2 Sam Lau 2023-06-27 23:03:27 UTC
Created attachment 152774 [details] [review]
Bug 34101: Limit items types that can be checked out via SIP2

This bug adds the ability to define a list of item types that are blocked from being issued at that SIP account

To test:
1) Apply this patch
2) Visit Administration->Item types and select edit on the music item type
3) Make the rental charge 0 and save changes (this allows for the item to be checked out via SIP)
4) In the terminal, vim /etc/koha/sites/kohadev/SIPconfig.xml
5) Edit the term1 account and add the following *inside* the login section:
     blocked_item_types="BK|MU"
     You should have something similar to this: <login id ="term1" ........... checked_in_ok="1" blocked_item_types="BK|MU" />
6) Restart SIP (sudo koha-sip --restart <instancename>)
7) Run a checkout query for an item with the item type book. Here is an example you could use:
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000011418-m checkout
8) Notice the checkout failed and you are given the screen msg "Item type cannot be checked out at this checkout location"
9) Run a checkout query for an item with the item type music. Here is an example you could use:
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000008715 -m checkout
10) Notice the checkout failed and you are given the screen msg "Item type cannot be checked out at this checkout location"
11) vim /etc/koha/sites/kohadev/SIPconfig.xml and delete the BK from the blocked_item
12) Delete the BK from blocked_item_types. It should now look like :
    blocked_item_types="MU"
13) Restart SIP (sudo koha-sip --restart <instancename>)
14) Run a checkout query for the item with the item type book
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000011418    -m checkout
15) Checkout succesful
16) Run a checkout query for the item with the item type music
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000008715     -m checkout
17) Still fails (because it is blocked)
18) prove t/db_dependent/SIP/Message.t
19) Congratulate yourself for making it through the long test and sign-off :)
Comment 3 Nick Clemens (kidclamp) 2023-06-28 12:45:18 UTC
Created attachment 152798 [details] [review]
Bug 34101: Unit Tests

prove t/db_dependent/SIP/Message.t

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Comment 4 Nick Clemens (kidclamp) 2023-06-28 12:45:20 UTC
Created attachment 152799 [details] [review]
Bug 34101: Limit items types that can be checked out via SIP2

This bug adds the ability to define a list of item types that are blocked from being issued at that SIP account

To test:
1) Apply this patch
2) Visit Administration->Item types and select edit on the music item type
3) Make the rental charge 0 and save changes (this allows for the item to be checked out via SIP)
4) In the terminal, vim /etc/koha/sites/kohadev/SIPconfig.xml
5) Edit the term1 account and add the following *inside* the login section:
     blocked_item_types="BK|MU"
     You should have something similar to this: <login id ="term1" ........... checked_in_ok="1" blocked_item_types="BK|MU" />
6) Restart SIP (sudo koha-sip --restart <instancename>)
7) Run a checkout query for an item with the item type book. Here is an example you could use:
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000011418-m checkout
8) Notice the checkout failed and you are given the screen msg "Item type cannot be checked out at this checkout location"
9) Run a checkout query for an item with the item type music. Here is an example you could use:
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000008715 -m checkout
10) Notice the checkout failed and you are given the screen msg "Item type cannot be checked out at this checkout location"
11) vim /etc/koha/sites/kohadev/SIPconfig.xml and delete the BK from the blocked_item
12) Delete the BK from blocked_item_types. It should now look like :
    blocked_item_types="MU"
13) Restart SIP (sudo koha-sip --restart <instancename>)
14) Run a checkout query for the item with the item type book
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000011418    -m checkout
15) Checkout succesful
16) Run a checkout query for the item with the item type music
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000008715     -m checkout
17) Still fails (because it is blocked)
18) prove t/db_dependent/SIP/Message.t
19) Congratulate yourself for making it through the long test and sign-off :)

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Comment 5 Martin Renvoize 2023-07-03 10:30:01 UTC
Created attachment 152924 [details] [review]
Bug 34101: Unit Tests

prove t/db_dependent/SIP/Message.t

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Comment 6 Martin Renvoize 2023-07-03 10:30:04 UTC
Created attachment 152925 [details] [review]
Bug 34101: Limit items types that can be checked out via SIP2

This bug adds the ability to define a list of item types that are blocked from being issued at that SIP account

To test:
1) Apply this patch
2) Visit Administration->Item types and select edit on the music item type
3) Make the rental charge 0 and save changes (this allows for the item to be checked out via SIP)
4) In the terminal, vim /etc/koha/sites/kohadev/SIPconfig.xml
5) Edit the term1 account and add the following *inside* the login section:
     blocked_item_types="BK|MU"
     You should have something similar to this: <login id ="term1" ........... checked_in_ok="1" blocked_item_types="BK|MU" />
6) Restart SIP (sudo koha-sip --restart <instancename>)
7) Run a checkout query for an item with the item type book. Here is an example you could use:
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000011418-m checkout
8) Notice the checkout failed and you are given the screen msg "Item type cannot be checked out at this checkout location"
9) Run a checkout query for an item with the item type music. Here is an example you could use:
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000008715 -m checkout
10) Notice the checkout failed and you are given the screen msg "Item type cannot be checked out at this checkout location"
11) vim /etc/koha/sites/kohadev/SIPconfig.xml and delete the BK from the blocked_item
12) Delete the BK from blocked_item_types. It should now look like :
    blocked_item_types="MU"
13) Restart SIP (sudo koha-sip --restart <instancename>)
14) Run a checkout query for the item with the item type book
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000011418    -m checkout
15) Checkout succesful
16) Run a checkout query for the item with the item type music
    perl misc/sip_cli_emulator.pl -a localhost -p 6001 -su term1 -sp term1 -l CPL --patron 23529001000463 --item 39999000008715     -m checkout
17) Still fails (because it is blocked)
18) prove t/db_dependent/SIP/Message.t
19) Congratulate yourself for making it through the long test and sign-off :)

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Comment 7 Martin Renvoize 2023-07-03 10:30:39 UTC
Nice work.. all looks good here.

Passing QA
Comment 8 Tomás Cohen Arazi 2023-07-05 15:19:43 UTC
Pushed to master for 23.11.

Nice work everyone, thanks!
Comment 9 Christofer Zorn 2023-07-06 14:03:15 UTC
Thank you for your hard work on this everyone! Is it possible to have this back ported to either 23.05 or 22.11, or both?

Thanks!

Chris
Comment 10 Martin Renvoize 2023-07-17 15:34:34 UTC
As this requires serverside configuration changes to have any effect, I think we're safe to backport this one to 23.05.x series.
Comment 11 Martin Renvoize 2023-07-17 15:35:55 UTC
Thanks for all the hard work!

Pushed to 23.05.x for the next release
Comment 12 Matt Blenkinsop 2023-07-18 13:15:30 UTC
Enhancement - not backporting to 22.11.x

Nice work everyone!