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>
Tue, 25 Aug 2020 16:31:05 +0000 (12:31 -0400)
commit71d89713b10df8ad2f3e27b42d85e6f3bacfc6b1
tree5be31f0dfa541880b5fdbdfe54adce4953e8b5a4
parenta365529d5b8fdf8533211b959a51347d786239f9
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