salleman33 / reservation

Plugin GLPI to manage reservation
http://plugins.glpi-project.org/#/plugin/reservation
GNU General Public License v3.0
7 stars 13 forks source link

More Clarification on General Use #90

Open StunPals opened 4 months ago

StunPals commented 4 months ago

Questions / Clarifications / Requests

I have been testing the Reservation plugin for a bit now but have a few questions on its functionality. I have looked through the available files on Github and don't see any information that answers my questions.

  1. The "My Reservations" tab, is this intended for admin only or should the user be able to see this to view their own reservations? The title implies the end user but this is not visible to the self-service profile nor do any changes to the available options under expose this to the end user. I suspect this is only for the Reservation Admin. eg Under Setup--Admin--Profiles I have tried enabling Read for "Reservable" items but don't see any affect.

  2. Is there any explanation of what the arrows (green/red) graphics mean for Moves column? I can probably sort it out after using for a while but confirmation would be great.

  3. Is it possible to use an IF/ENDIF to only show a message content/line based on if the EndDate has passed? I want to expose a line in the message with additional formatting (eg Red/bold color) in the Expired email highlighting the item must be returned. I am not sure if an operator (< > = etc) can be used similar to Ticket Status (eg ##IFticket.storestatus=5##) For example ##IFreservation.end<[Today]## ##lang.reservation.end##:  ##reservation.end## ##ENDIFreservation.end## Or a way to send a notice on update by the Reservation Admin to the User when the item is ready for pickup (checkin?) eg ##IFCheckin is set## (NOT NUL) notify User. I know the user will receive an email for the Update but would be nice to be able to add a ##IF/ENDIF## tag to highlight to make in more clear for the end user about the update and to eliminate the need for the Reservation Admin to notify the user manually. eg

"Your reserved device ##Associated.Device.Item## is ready for pickup"

  1. Note tags for "##lang.reservation.note##:  ##reservation.note##", doesn't seem there is anywhere for users or admin to see/update said field.

  2. Who is the Reservation Tech, is it "Device-Tech in Charge" or set somewhere else? The following tags are used in the default Translation but no matter if I add myself to the Tech or Group in charge I don't see this line ever populated.

    IFreservation.tech## ##lang.reservation.tech## ##reservation.tech####ENDIFreservation.tech

  3. As an Reservation Admin, is there a way to only show reservations for items that are out (in use and/or overdue) other than setting the Start Date & End Date in the search criteria o the "Current and Incoming Reservations" tab then looking for NUL in the Checkout column? Doing so shows all reservations, even if the item was returned. For example, say someone hasn't returned the item in 30-90days or longer and its long overdue, the search could return hundreds of items since it is essentially is showing all reservations when we only want to see items overdue.

If any of these questions are already documented, I was not able to find them, could you please direct me to the correct file/location.

Expected Behaviour

Observed Behaviour

Context

Technical Info

Analysis

StunPals commented 4 months ago

I typed up what I have figured out so far maybe you can confirm this and/or add this to your documentation in case others have similar questions. Sorry if you have this already, I couldn't find it.


Admin Consoles

Setup--Plugins--Reservations

This is the global setting for the Reservation system. Typically, the only changes here will be under the "Categories Configuration" and will be needed when a new device is added that is using custom categories, eg Portable Internet, Scanner, Portable Monitor. image

Plugins--Reservations

This is where the Reservation Admin (IT Staff) will manage all reservations, checkin/checkout items (see definitions below).

Definitions

image

Additional Notes

Device (Assets--Device--Reservations tab)

Tabs

Modifying the default "Start date" & "End dates" settings does affect the view

Known Bugs & Workarounds

The End Date Incorrectly Updated on Checkin

This bug occurs on most reservations, where during the "Checkin" the process the End date is updated to the same time of the Checkin is selected. To fix this the Reservation Admin will need to "Edit" the actual reservation add a small comment and save. 

This will update the End date to the correct time reflected in the reservation.

salleman33 commented 4 months ago

Hi,

  1. The "My Reservations" tab, is this intended for admin only or should the user be able to see this to view their own reservations? The title implies the end user but this is not visible to the self-service profile nor do any changes to the available options under expose this to the end user. I suspect this is only for the Reservation Admin. eg Under Setup--Admin--Profiles I have tried enabling Read for "Reservable" items but don't see any affect.

User needs to have the rights "create", "delete" or "update" to access the plugin page. The plugin aims to be use by admin/tech, not general users.

  1. Is there any explanation of what the arrows (green/red) graphics mean for Moves column? I can probably sort it out after using for a while but confirmation would be great.

the red arrow corresponds to articles that must be go out today (or between the start/end dates chosen in the form) the green arrow corresponds to items expected to return today (or between the start/end dates chosen in the form)

  1. Is it possible to use an IF/ENDIF to only show a message content/line based on if the EndDate has passed? I want to expose a line in the message with additional formatting (eg Red/bold color) in the Expired email highlighting the item must be returned. I am not sure if an operator (< > = etc) can be used similar to Ticket Status (eg ##IFticket.storestatus=5##) For example ##IFreservation.end<[Today]## ##lang.reservation.end##: ##reservation.end## ##ENDIFreservation.end## Or a way to send a notice on update by the Reservation Admin to the User when the item is ready for pickup (checkin?) eg ##IFCheckin is set## (NOT NUL) notify User. I know the user will receive an email for the Update but would be nice to be able to add a ##IF/ENDIF## tag to highlight to make in more clear for the end user about the update and to eliminate the need for the Reservation Admin to notify the user manually. eg

I don't understand. You can only send an email if a item has his endDate passed. You can use the notification template "User Reservation Expired (plugin)" for that. For the "ready to pickup" mail, this is a new feature with development needs...

  1. Note tags for "##lang.reservation.note##: ##reservation.note##", doesn't seem there is anywhere for users or admin to see/update said field.
  2. Who is the Reservation Tech, is it "Device-Tech in Charge" or set somewhere else? The following tags are used in the default Translation but no matter if I add myself to the Tech or Group in charge I don't see this line ever populated.

    IFreservation.tech## ##lang.reservation.tech## ##reservation.tech####ENDIFreservation.tech

I don't know these fields. They are (core) glpi fields, not from the plugin.

As an Reservation Admin, is there a way to only show reservations for items that are out (in use and/or overdue) other than setting the Start Date & End Date in the search criteria o the "Current and Incoming Reservations" tab then looking for NUL in the Checkout column? Doing so shows all reservations, even if the item was returned. For example, say someone hasn't returned the item in 30-90days or longer and its long overdue, the search could return hundreds of items since it is essentially is showing all reservations when we only want to see items overdue.

No, it's not possible for now. It's a good idea !

salleman33 commented 4 months ago

Thank you for your documentation and your feedback !

StunPals commented 3 months ago

Thanks salleman for the responses, sorry for the delay I had some time off and other projects on the go, I'll get back to this as time permits and respond to your comments.

StunPals commented 3 months ago

Question 3, to clarify I was trying to add a specific line in the translation template to only be exposed if the item is overdue. Just to draw more attention to the line, eg Bold and Red for example but that same line would not be included in all other emails.

Questions 6, as for the challenge to filter overdue items, are you planning to add any features to make in easier to see/filter only overdue items, eg a new tab "Overdue" or a search with the ability to filter out only overdue? image

If yes, any idea on the timeline for this, it will likely be a determining factor if we are able to use the Reservation plugin, which would be our preference if we can sort out the few Admin side limitations.

On the topic of Overdue, items and dealing with a large reservation pool (120+ items and growing), we regularly have staff that return items weeks late, not just 1-2 days. The feature to "Replace an Item" is great for one offs and shorter overdue times but for the longer overdue items the Reservation Admin has to remember to set "Make Unavailable" on each individual item to avoid it from being reserved again, while waiting for the items return. Would it be possible to consider an Automate Action to set "Make Unavailable" only when: The item is past its return date AND it has NOT been Checked Out (available again).

This would potentially save the Reservation admin having to manually set the "Make Unavailable" on multiple items. For example we are just testing the Reservations plugin during our slowest time of year and there are 5 items more than a week overdue where we have to chase the item down and REMEMBER to Make the item unavailable.

salleman33 commented 2 months ago

Question 3, to clarify I was trying to add a specific line in the translation template to only be exposed if the item is overdue. Just to draw more attention to the line, eg Bold and Red for example but that same line would not be included in all other emails

If you set the notification for an expired reservation, you can use ##reservation.item.name## to get the item who is overdue

Questions 6, as for the challenge to filter overdue items, are you planning to add any features to make in easier to see/filter only overdue items, eg a new tab "Overdue" or a search with the ability to filter out only overdue? image

If yes, any idea on the timeline for this, it will likely be a determining factor if we are able to use the Reservation plugin, which would be our preference if we can sort out the few Admin side limitations.

On the topic of Overdue, items and dealing with a large reservation pool (120+ items and growing), we regularly have staff that return items weeks late, not just 1-2 days. The feature to "Replace an Item" is great for one offs and shorter overdue times but for the longer overdue items the Reservation Admin has to remember to set "Make Unavailable" on each individual item to avoid it from being reserved again, while waiting for the items return. Would it be possible to consider an Automate Action to set "Make Unavailable" only when: The item is past its return date AND it has NOT been Checked Out (available again).

This would potentially save the Reservation admin having to manually set the "Make Unavailable" on multiple items. For example we are just testing the Reservations plugin during our slowest time of year and there are 5 items more than a week overdue where we have to chase the item down and REMEMBER to Make the item unavailable.

For the while, I don't have time to add new features. One day, I hope...

flonou commented 2 months ago

Hi, I'd like to discuss one aspect that has been talked about here. @salleman33 you specify that the plugin is meant to be use by admins and not general users.

User needs to have the rights "create", "delete" or "update" to access the plugin page. The plugin aims to be use by admin/tech, not general users.

However our use case has been different from the beggining. We have admins creating items and enabling reservation on them and users using your plugin to book items.

As a result, we changed the rights check in menu.php to Session::checkRightsOr("reservation", [READ, ReservationItem::RESERVEANITEM, CREATE, UPDATE, DELETE]);

Would it make sense to propose a merge request making that an option ? (If you agree with this usecase of course)

StunPals commented 2 months ago

Question 3, to clarify I was trying to add a specific line in the translation template to only be exposed if the item is overdue. Just to draw more attention to the line, eg Bold and Red for example but that same line would not be included in all other emails

If you set the notification for an expired reservation, you can use ##reservation.item.name## to get the item who is overdue

Questions 6, as for the challenge to filter overdue items, are you planning to add any features to make in easier to see/filter only overdue items, eg a new tab "Overdue" or a search with the ability to filter out only overdue? image If yes, any idea on the timeline for this, it will likely be a determining factor if we are able to use the Reservation plugin, which would be our preference if we can sort out the few Admin side limitations. On the topic of Overdue, items and dealing with a large reservation pool (120+ items and growing), we regularly have staff that return items weeks late, not just 1-2 days. The feature to "Replace an Item" is great for one offs and shorter overdue times but for the longer overdue items the Reservation Admin has to remember to set "Make Unavailable" on each individual item to avoid it from being reserved again, while waiting for the items return. Would it be possible to consider an Automate Action to set "Make Unavailable" only when: The item is past its return date AND it has NOT been Checked Out (available again). This would potentially save the Reservation admin having to manually set the "Make Unavailable" on multiple items. For example we are just testing the Reservations plugin during our slowest time of year and there are 5 items more than a week overdue where we have to chase the item down and REMEMBER to Make the item unavailable.

For the while, I don't have time to add new features. One day, I hope...

Regarding Question 3 I probably wasn't doing a great job explaining what I was hoping to accomplish with the alert. But I solved this with a bit more guess and check, here is an example of the proper IF/END syntax and was placed at the top of the translation. I assumed a numerical value but it turns out it works with the "reservation.action" string.

**##IFreservation.action=User Reservation Expired (plugin)##**
URGENT! OVERDUE Equipment Reservation 

The equipment signed out for the below reservation is now overdue and must be returned to fulfill upcoming reservations.

Please contact the IT Dept immediately to arrange a time to return the equipment, do not hand off the equipment to other staff unless directed by the IT Dept.
**##ENDIFreservation.action##**

The above content is only included in the email notification when the items is overdue, which is perfect.

For Question 6, Looking forward to this if it can be added would make the admin side a bit easier to manage, thanks. Appreciate your work on this plugin. Without your add-on features this wasn't usable for sign-out items.

salleman33 commented 2 months ago

Hi, I'd like to discuss one aspect that has been talked about here. @salleman33 you specify that the plugin is meant to be use by admins and not general users.

User needs to have the rights "create", "delete" or "update" to access the plugin page. The plugin aims to be use by admin/tech, not general users.

However our use case has been different from the beggining. We have admins creating items and enabling reservation on them and users using your plugin to book items.

As a result, we changed the rights check in menu.php to Session::checkRightsOr("reservation", [READ, ReservationItem::RESERVEANITEM, CREATE, UPDATE, DELETE]);

Would it make sense to propose a merge request making that an option ? (If you agree with this usecase of course)

With this change, your users can checkin/checkout any reservations, even for another user ?!

flonou commented 2 months ago

Yes they can (which happen sometimes when a user directly recovers an item from another that's late and they discuss it directly). They however cannot create reservations for others (unless admin). We also had to made this change at some other places since the last updates (otherwise GLPI refused to perform some actions like checkout/edit when the profiles rights where not permitting these actions, which makes sense)

salleman33 commented 2 months ago

In my opinion and my use case, I cannot give checkin/checkout rights for all users. I think that a work would be necessary to improve the rights for the differents actions with the plugin.