From a4f62178549a572b2b823eff7a6d19b2dc2cf87d Mon Sep 17 00:00:00 2001 From: erickson Date: Tue, 20 May 2008 21:49:04 +0000 Subject: [PATCH] initial lineitem search git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@9646 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/extras/ils_events.xml | 3 + .../perlmods/OpenILS/Application/Acq/Picklist.pm | 14 ++-- Open-ILS/web/oilsweb/oilsweb/controllers/acq/po.py | 4 + .../media/ui_js/oils/default/acq/po/li_search.js | 97 ++++++++++++++++++++++ .../templates/oils/default/acq/po/li_search.html | 46 ++++++++++ 5 files changed, 159 insertions(+), 5 deletions(-) create mode 100644 Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/po/li_search.js create mode 100644 Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/po/li_search.html diff --git a/Open-ILS/src/extras/ils_events.xml b/Open-ILS/src/extras/ils_events.xml index 43bb8f7207..1e7de32ba7 100644 --- a/Open-ILS/src/extras/ils_events.xml +++ b/Open-ILS/src/extras/ils_events.xml @@ -613,6 +613,9 @@ The requested acq.lineitem_provider_attr_definition was not found + + The requested acq.currency_type was not found + diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm index 71e31604e5..3aaa95e2b9 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm @@ -733,11 +733,15 @@ sub lineitem_search { my $e = new_editor(authtoken=>$auth, xact=>1); return $e->event unless $e->checkauth; return $e->event unless $e->allowed('CREATE_PICKLIST'); - # XXX needs serious permissions consideration! - my $pls = $e->search_acq_lineitem($search, {idlist=>$$options{idlist}}); - for my $pl (@$pls) { - $pl->clear_marc if $$options{clear_marc}; - $conn->respond($_) for $pl; + # XXX needs permissions consideration + my $pls = $e->search_acq_lineitem($search, {idlist=>1}); + for my $li_id (@$pls) { + if($$options{idlist}) { + $conn->respond($li_id); + } else { + my $res = retrieve_lineitem($self, $conn, $auth, $li_id, $options); + $conn->respond($res) unless $U->event_code($res); + } } return undef; } diff --git a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/po.py b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/po.py index 73f8dc534e..499d0eb955 100644 --- a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/po.py +++ b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/po.py @@ -33,6 +33,10 @@ class PoController(BaseController): r.ctx.acq.po_id.value = kwargs['id'] return r.render('acq/po/view_po.html') + def li_search(self): + r = RequestMgr() + return r.render('acq/po/li_search.html') + # Create PO from contents of picklist def create(self, **kwargs): r = RequestMgr() diff --git a/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/po/li_search.js b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/po/li_search.js new file mode 100644 index 0000000000..0e255fcc49 --- /dev/null +++ b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/po/li_search.js @@ -0,0 +1,97 @@ +dojo.require('fieldmapper.Fieldmapper'); +dojo.require('dijit.ProgressBar'); +dojo.require('dijit.form.Form'); +dojo.require('dijit.form.TextBox'); +dojo.require('dijit.form.FilteringSelect'); +dojo.require('openils.Event'); +dojo.require('openils.acq.Lineitems'); +dojo.require('openils.acq.Provider'); + +var recvCount = 0; +var user = new openils.User(); + +var lineitems = []; + +function drawForm() { + +} + +var liReceived; +function doSearch(values) { + search = {}; + search = {state:'new'}; + search = [search, {limit:searchLimit, offset:searchOffset}]; + options = {clear_marc:1, flesh_attrs:1}; + + liReceived = 0; + dojo.style('searchProgress', 'visibility', 'visible'); + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.lineitem.search'], + { async: true, + params: [user.authtoken, search, options], + onresponse: handleResult, + oncomplete: viewList + } + ); +} + +function handleResult(r) { + var result = r.recv().content(); + searchProgress.update({maximum: searchLimit, progress: ++liReceived}); + lineitems.push(result); +} + +function viewList() { + dojo.style('searchProgress', 'visibility', 'hidden'); + var store = new dojo.data.ItemFileReadStore({data:jub.toStoreData(lineitems)}); + var model = new dojox.grid.data.DojoData( + null, store, {rowsPerPage: 20, clientSort: true, query:{id:'*'}}); + liGrid.setModel(model); + liGrid.update(); +} + + +function getProvider(rowIndex) { + data = liGrid.model.getRow(rowIndex); + if(!data) return; + if(!data.provider) return ''; + return openils.acq.Provider.retrieve(data.provider).code(); +} + +function getLi(id) { + for(var i in lineitems) { + var li = lineitems[i]; + if(li.id() == id) + return li; + } +} + +function getJUBTitle(rowIndex) { + var data = liGrid.model.getRow(rowIndex); + if(!data) return ''; + return new openils.acq.Lineitems( + {lineitem:getLi(data.id)}).findAttr('title', 'lineitem_marc_attr_definition') +} + +function getJUBIsbn(rowIndex) { + var data = liGrid.model.getRow(rowIndex); + if(!data) return ''; + return new openils.acq.Lineitems( + {lineitem:getLi(data.id)}).findAttr('isbn', 'lineitem_marc_attr_definition') +} + +function getJUBPubdate(rowIndex) { + var data = liGrid.model.getRow(rowIndex); + if(!data) return ''; + return new openils.acq.Lineitems( + {lineitem:getLi(data.id)}).findAttr('pubdate', 'lineitem_marc_attr_definition') +} + +function getJUBPrice(rowIndex) { + var data = liGrid.model.getRow(rowIndex); + if(!data) return; + return new openils.acq.Lineitems( + {lineitem:getLi(data.id)}).findAttr('price', 'lineitem_marc_attr_definition') +} + +dojo.addOnLoad(drawForm); diff --git a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/po/li_search.html b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/po/li_search.html new file mode 100644 index 0000000000..82a0238e63 --- /dev/null +++ b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/po/li_search.html @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +<%inherit file='base.html'/> +<%def name="page_title()">${_('Lineitem Search')} + +<%def name="block_content()"> + + + +
+
+ + +
${_("Search")}
+
+ +
+
+
+ + + +
+ + + -- 2.11.0