]> git.evergreen-ils.org Git - working/Evergreen.git/blob - docs/RELEASE_NOTES_NEXT/Circulation/enhanced-mark-item-functionality.adoc
9e02269012f6eac754407952efb2ed5b87db1940
[working/Evergreen.git] / docs / RELEASE_NOTES_NEXT / Circulation / enhanced-mark-item-functionality.adoc
1 Enhanced Mark Item Functionality
2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3
4 Evergreen's Mark Item Damaged and Mark Item Missing functionality has
5 been enhanced, and the ability to mark an item with the Discard/Weed
6 status has been added.  This enhancement affects both the Evergreen
7 back end code and the staff client.
8
9 Staff Client Changes
10 ++++++++++++++++++++
11
12 The option to "Mark Item as Discard/Weed" has been added to areas
13 where the option(s) to "Mark Item as Missing" and/or "Mark Item as
14 Damaged" appear.  This is primarily in the action menus on the
15 following interfaces:
16
17  * Item Status
18  * Checkin
19  * Renew
20  * Holds Pull List
21  * Patron Holds List
22  * Record Holds List
23  * Holds Shelf
24  * Holdings Edit
25
26 This new option allows staff to mark a copy with the Discard/Weed
27 status quickly and easily without necessarily requiring the
28 intervention of cataloging staff.  In order to mark an item with the
29 Discard/Weed status, staff will require either the `MARK_ITEM_DISCARD`
30 or `UPDATE_COPY status` at the item's owning library.  (NOTE: This
31 permission choice is consistent with the permission requirements for
32 the current Mark Item Damaged or Missing functionality.)
33
34 If the item to be marked Discard/Weed is checked out to a patron, the
35 staff will be presented with a dialog informing them that the item is
36 checked out and asking if they would like to check it in and proceed.
37 If they choose to continue, the item will be checked in and then
38 marked with the Discard/Weed status.  If the staff person chooses to
39 cancel, then the item will not be checked in, and it will not be
40 marked Discard/Weed.  The Mark Item Missing functionality has also
41 been changed to exhibit this behavior with checked out items.  The
42 Mark Item Damaged functionality already handles checked out item.
43
44 Should the item have a status of In Transit at the time it is to be
45 marked, then staff will be prompted to abort the transit before
46 proceeding with changing the item's status.  If they choose to abort
47 the transit and they have the permission to do so, the transit will be
48 aborted and the item's status changed.  If they choose to cancel, then
49 the transit will not be aborted and the item's status will remain
50 unchanged.  This change applies to all three of the current Mark Item
51 statuses: Missing, Damaged, and Discard/Weed.
52
53 Marking an item Discard/Weed is typically one step away from deleting
54 the item.  For this reason, if the item to be marked Discard/Weed is
55 not in a Checked Out or In Transit status, but it is in a status that
56 restricts item deletion, the staff will be presented with a dialog
57 notifying them of the item's status and asking if they wish to
58 proceed.  If staff choose to proceed and they have the
59 `COPY_DELETE_WARNING.override` permission, then the item will be
60 marked with the Discard/Weed status.  Naturally, the item's status
61 will be unchanged if they choose not to proceed.  This change does not
62 affect the marking of an item as Missing or Damaged.
63
64 Marking an item as Discard/Weed has one more additional check that the
65 other statuses do not.  If the item being marked as Discard/Weed is
66 the last copy that can fill a hold, then staff will also be notified
67 of this condition and asked if they wish to continue.  In this case,
68 there is no permission required.  Whether or not the item is marked as
69 Discard/Weed in this case depends solely on the staff's choice.
70
71 Back End Changes
72 ++++++++++++++++
73
74 In order to accommodate the presentation of dialogs and overrides in
75 the staff client, the `OpenILS::Application::Circ` module's method for
76 marking item statuses has had a few changes made.  Firstly, the code
77 of the `mark_item` function has been rearranged to a more logical
78 flow.  Most of the condition and permission checks are made before
79 creating a transaction.  Secondly, it has been modified to return 3
80 new events when certain conditions are met:
81
82  * `ITEM_TO_MARK_CHECKED_OUT`
83  * `ITEM_TO_MARK_IN_TRANSIT`
84  * `ITEM_TO_MARK_LAST_HOLD_COPY`
85
86 The `COPY_DELETE_WARNING` event will be returned when attempting to
87 mark an item with the Discard/Weed status and the status has the
88 `restrict_copy_delete` flag set to true.
89
90 The function now also recognizes a hash of extra arguments for all
91 statuses and not just for the mark Damaged functionality.  This
92 argument hash can be used to bypass or override any or all of the
93 above mentioned events.  Each event has a corresponding argument that
94 if set to a "true" value will cause the `mark_item` to bypass the
95 given event.  These argument flags are, respectively:
96
97  * `handle_checkin`
98  * `handle_transit`
99  * `handle_last_hold_copy`
100  * `handle_copy_delete_warning`
101
102 The code to mark an item damaged still accepts its previous hash
103 arguments in addition to these new ones.
104
105 The function still returns other errors and events as before.  It
106 still returns 1 on success.
107
108 It is also worth noting here that the staff client can be easily
109 extended with the ability to mark items into the other statuses
110 offered by the back end functions.  Most of the staff client
111 functionality is implemented in two functions with placeholders in the
112 main function (`egCirc.mark_item`) for the unimplemented statuses.