[Jira Ticket created] Drafts UI - Inventory: Add Additional Call Numbers to Items Records
Jira Ticket created
This draft is finished. Further work and discussion will happen in the Jira Ticket:
UIIN-3328: Inventory: Add Additional Call Numbers to Items RecordsBlocked
- 1 User Story
- 2 Description
- 3 Acceptance Criteria
- 4 Scenarios
- 5 Mock-up
- 6 Translations
- 7 Questions
- 8 Comments
- 9 Labels
- 10 Dependencies
- 11 Requirement analysis
- 12 API-calls
User Story
As a librarian, I want to add, edit, delete, and switch between multiple/additioanl call numbers for an item record so I can accurately track an item's location history and manage complex cataloging information.
Further User story statement(s):
As a librarian I want to keep an old call number in the record after I assigned a new call number in order to be able to ensure traceability in the future. For example, items are moved from one location to another, and I want to capture the previous call number as well as the current one.
Certain reference works in the reading room (open collection) already have a stacks call number assigned. They'll be moved into the closed stacks some time in the future, e.g. as soon as they are outdated or no longer used on a regular basis.
The current issues of print journals are presented in the reading room, but the older volumes are placed in the stacks. The records of the new issues should already contain the stacks call number under which they will be placed in the future.
Description
Currently, the inventory app only allows one call number to be associated with an item record. This presents challenges when items have additional call numbers due to various reasons, such as different editions, copies in different locations, or historical changes in cataloging. This user story aims to address this limitation by enabling librarians to add, edit, delete, and switch between multiple/additional call numbers for a single item record. This will allow for accurate tracking of an item's location history and simplify the management of items with complex cataloging information.
Acceptance Criteria
Adding Call Numbers: Librarians can add additional call numbers to an item record. The system should allow for a reasonable maximum number of additional call numbers.
Call Number Types: The system allows specifying the type of call number (e.g., Dewey Decimal, Library of Congress, local call number) for both the primary and additional call numbers.
Call Number Components: The system should accommodate different parts of a call number (prefix, number, suffix) for both primary and additional call numbers.
Mandatory Fields: The "Call Number" field itself should be mandatory for all additional call numbers.
Editing Call Numbers: Librarians can edit existing call numbers (both primary and additional), including their type and components.
Deleting Call Numbers: Librarians can delete additional call numbers.
Switching Call Numbers: Librarians can easily switch between the primary call number and any additional call number. The UI should clearly indicate which call number is currently primary.
Data Integrity: Managing additional call numbers does not corrupt existing data or cause inconsistencies in the database.
Error Handling: The system handles errors gracefully, providing informative messages to the user when issues occur.
Testing: Thorough testing (unit, integration, and user acceptance testing) is conducted to ensure the functionality works correctly and meets all requirements.
Scenarios
Scenario: Add additional call numbers to an item record
Given I am on the item details page for item "XYZ123" in edit mode
When I add the call number "ABC456" with type "Dewey Decimal"
And I add the call number "DEF789" with type "Library of Congress"
Then the item record should display both call numbers "ABC456" and "DEF789"
And the call numbers should be associated with their respective types
Scenario: Validate mandatory call number field (for additional call numbers)
Given I am on the item details page for item "XYZ123" in edit mode
When I leave the "Call number" field blank
And I attempt to save the changes
Then an error message "Please select to continue" should be displayed
Scenario: Switch between primary and additional call numbers
Given I am on the item details page for item "XYZ123"
And the item has call number "ABC456" (primary) and "DEF789" (additional)
When I switch the primary call number to "DEF789"
Then "DEF789" should be displayed as the primary call number
And "ABC456" should be displayed as an additional call number
Scenario: Delete an additional call number
Given I am on the item details page for item "XYZ123" in edit mode
And the item has call numbers "ABC456" (primary) and "DEF789" (additional)
When I delete the call number "DEF789"
Then the item record should only display the call number "ABC456"
Mock-up
View Mode
Alternative Variants
Edit Mode
Edit Mode - Obligatory input fields
Edit Mode - Pop-up Deleting additional call number
Translations
English | German |
---|---|
Change with primary call number | Zur Hauptsignatur machen |
Additional call number | Zusätzliche Signatur |
Questions
How many additional call numbers can you add? Which limit should be set for this?
Are there any export functions which need to be addressed in any other apps?
e.g. List or Bulk edit?
Comments
Is the "exchange" of call numbers (primary and additional) technically feasible? → YES, it is (BM)
Blue backgrounds for repeatable fields: presumably this is how unsaved content is marked. → If this is correct, then implement interaction. (There is no mock-up here yet)
The Primary Call number should not be mandatory, because that would be a major intervention in existing functions.
There still can be Duplicates, because the call numbers are not unambiguously.
Labels
Using labes from UX-Ticket: UXPROD-4334 -Inventory: Make call number a repeatable element
Dependencies
Requirement analysis
Erstellung eines wiederholbaren Feldes für weitere Signaturen - Anforderungsanalyse
Creation of a repeatable field for additional call numbers - requirements analysis
API-calls
The values of the call number can only be called via the holding-record.
The challenge will probably be to "exchange" the values of itemLevelCallNumber
and itemLevelCallNumberAdditional
in two item records.
The values must be cashed, to avoid deleting a value.
The additional call numbers must be numbered a least Internally in order to exchange the correct call number, in case there are several ones.
In the PUT-calls, some mandatory metadata has to be sent additionally to the call number value, Otherwise error-messages occur.
Example of the values in the body of the PUT-call.
{
"id": "854e20cf-16ca-4aa9-9a94-cd2f327ba7bd",
"_version": 5,
"hrid": "it00028681790",
"holdingsRecordId": "9680fa07-5fe3-497c-853a-c8ce833d161e",
"permanentLoanTypeId": "82b7ad81-c82d-449b-b707-a34b9032fa19",
"materialTypeId": "1e5959d9-0582-4e14-843c-b98cfe412e92",
"status": {
"name": "In process",
"date": "2025-01-28T14:33:53.354+00:00"
},
"itemLevelCallNumber": "MT 8256 C328",
"itemLevelCallNumberPrefix": "Signatur-Präfix",
"itemLevelCallNumberSuffix": "Signatur-Suffix",
"itemLevelCallNumberTypeId": "a6f592dd-43f0-42b5-a3e7-eb0858e76ee6"
}
Example 1: Existing call number with all sub fields
Existing call number
{
"id": "33ccd696-491e-571b-8e4f-2b3fb19f93c4",
"callNumberTypeId": "a6f592dd-43f0-42b5-a3e7-eb0858e76ee6",
"callNumberPrefix": "Signatur-Präfix",
"callNumber": "Hist.Sax.F.263.wd",
"callNumberSuffix": "Signatur-Suffix",
} |
Additional call number (proposal)
{
"id": "33ccd696-491e-571b-8e4f-2b3fb19f93c4",
"CallNumbersAdditional": [
{
"CallNumberAdditional": "MT 8256 C328",
"CallNumberAdditionalPrefix": "Signatur-Präfix",
"CallNumberAdditionalSuffix": "Signatur-Suffix",
"CallNumberAdditionalTypeId": "a6f592dd-43f0-42b5-a3e7-eb0858e76ee6",
"CallNumberAdditionalId": "1"
}
]
} |
Additional call numbers (proposal)
{
"id": "33ccd696-491e-571b-8e4f-2b3fb19f93c4",
"CallNumbersAdditional": [
{
"CallNumberAdditional": "MT 8256 C328",
"CallNumberAdditionalPrefix": "Signatur-Präfix",
"CallNumberAdditionalSuffix": "Signatur-Suffix",
"CallNumberAdditionalTypeId": "a6f592dd-43f0-42b5-a3e7-eb0858e76ee6",
"CallNumberAdditionalId": "1"
},
{
"CallNumberAdditional": "Hist.Sax.1268.f",
"CallNumberAdditionalPrefix": "Signatur-Präfix",
"CallNumberAdditionalSuffix": "Signatur-Suffix",
"CallNumberAdditionalTypeId": "a6f592dd-43f0-42b5-a3e7-eb0858e76ee6",
"CallNumberAdditionalId": "2"
}
]
} |
Example 2: Existing call number with one sub field
Existing call number
{
"id": "854e20cf-16ca-4aa9-9a94-cd2f327ba7bd",
"itemLevelCallNumber": "2025 8 1234567"
} |
Additional call number (proposal)
{
"id": "854e20cf-16ca-4aa9-9a94-cd2f327ba7bd",
"itemLevelCallNumberAdditional": "MT 8256 C328"
} |