LP#1850547: Angular Acq Search: Perl API changes
authorMike Rylander <mrylander@gmail.com>
Thu, 31 Oct 2019 19:23:22 +0000 (15:23 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Thu, 13 Aug 2020 15:49:33 +0000 (11:49 -0400)
commit0856c40871f8655e5626ae54f80b4dc5250e53a5
tree3fd8f1506d06486eeee06bd05c3ab46479d915a2
parent8c83473d135e9f2bdbddefaa0dbd299dba0ffaaf
LP#1850547: Angular Acq Search: Perl API changes

This patch makes a variety of changes to methods used by
acquisitions search and retrieval. The overall intention of this
patch is to not change functionality used by the old Dojo
search interface but to add support for new functionality for
the Angular search form.

Specific changes include:

open-ils.acq.*.unified_search
-----------------------------
* Add __age (interval), __starts, __ends, __gt, and __lt operators.

Update __between to support __castdate modifier, for a more natural
comparison of dates entered by humans to timestamps stored in the
database.

* fix sorting by line item attributes

* add support for __gte, __gt, __lte, and __lt for acqlia searches

* add permissions checks for retrieving POs and invoices via
  unified_search

* improvements to server-side sorting of search results

- create joins for aou, acqim, and acqipm as needed
- look up identity column for a class rather than assuming
  that it's always 'id'

* allow searching on an explicit null value

This adjusts the special logic introduced in LP#1031535 so
that explicitly searching with a field set to not null (e.g.,
when using the Angular grid 'exists' filter) will work.

* add __isnotnull as an acq search field modifier

* allow __fuzzy to override au_by_id in unified search

* Sort by remote selector column when sort-on-link is requested and
  selector exists

* Add additional fleshing for purchase order, selection lists,
  and invoice searches.

* Add au_by_id option

This specifies performing queries on au-linked fields by
ID rather than adding joins to query the fields by user
barcode or username, etc.

* Implement "contains" operator for searches on provider
  fields.

This is similar to how user searches are handled.

Other methods
-------------
* teach open-ils.acq.lineitem.retrieve more fleshing

In particular, teach it how to flesh the LI provider, Vandelay queue,
creator, editor, selector, and claim policy so that Angular LI search
can display them without having to make additional server requests.

* clarify open-ils.acq.picklist.clone

Method is now clear that _nothing_ of the acq.picklist row
itself gets copied over.

This patch contains work by Mike Rylander, Galen Charlton, and Jason
Etheridge.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Financials.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Invoice.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Lineitem.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Picklist.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Search.pm