From a8bfe123ee544bd0d1be1d2a5517f614126e053b Mon Sep 17 00:00:00 2001 From: erickson Date: Thu, 16 Apr 2009 15:57:49 +0000 Subject: [PATCH] initial support for lineitem notes git-svn-id: svn://svn.open-ils.org/ILS/trunk@12893 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm | 13 +++++++------ Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm | 9 +++++++-- Open-ILS/web/js/ui/default/acq/common/li_table.js | 10 ++++++++-- Open-ILS/web/js/ui/default/acq/picklist/view.js | 2 +- Open-ILS/web/js/ui/default/acq/po/view_po.js | 2 +- Open-ILS/web/templates/default/acq/common/li_table.tt2 | 10 +++++++--- 6 files changed, 31 insertions(+), 15 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm index c25e6b249d..06b0938a82 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm @@ -90,14 +90,15 @@ sub retrieve_lineitem { my $li; - if($$options{flesh_attrs}) { - $li = $e->retrieve_acq_lineitem([ - $li_id, {flesh => 1, flesh_fields => {jub => ['attributes']}}]) - or return $e->event; - } else { - $li = $e->retrieve_acq_lineitem($li_id) or return $e->event; + my $flesh = {}; + if($$options{flesh_attrs} or $$options{flesh_notes}) { + $flesh = {flesh => 1, flesh_fields => {jub => []}}; + push(@{$flesh->{flesh_fields}->{jub}}, 'lineitem_notes') if $$options{flesh_notes}; + push(@{$flesh->{flesh_fields}->{jub}}, 'attributes') if $$options{flesh_attrs}; } + $li = $e->retrieve_acq_lineitem([$li_id, $flesh]); + if($$options{flesh_li_details}) { my $ops = { flesh => 1, diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm index 06be58685e..4c84eadf61 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm @@ -333,6 +333,7 @@ __PACKAGE__->register_method( "idlist", return a list of IDs instead of objects "flesh_attrs", additionaly return the list of flattened attributes "clear_marc", discards the raw MARC data to reduce data size + "flesh_notes", flesh lineitem notes /, type => 'hash'} ], @@ -393,8 +394,12 @@ sub retrieve_pl_lineitem { } my $entry; - my $flesh = ($$options{flesh_attrs}) ? - {flesh => 1, flesh_fields => {jub => ['attributes']}} : {}; + my $flesh = {}; + if($$options{flesh_attrs} or $$options{flesh_notes}) { + $flesh = {flesh => 1, flesh_fields => {jub => []}}; + push(@{$flesh->{flesh_fields}->{jub}}, 'lineitem_notes') if $$options{flesh_notes}; + push(@{$flesh->{flesh_fields}->{jub}}, 'attributes') if $$options{flesh_attrs}; + } $entry = $e->retrieve_acq_lineitem([$id, $flesh]); my $details = $e->search_acq_lineitem_detail({lineitem => $id}, {idlist=>1}); diff --git a/Open-ILS/web/js/ui/default/acq/common/li_table.js b/Open-ILS/web/js/ui/default/acq/common/li_table.js index f8b760bc38..c8cc76d281 100644 --- a/Open-ILS/web/js/ui/default/acq/common/li_table.js +++ b/Open-ILS/web/js/ui/default/acq/common/li_table.js @@ -125,6 +125,7 @@ function AcqLiTable() { this.addLineitem = function(li) { this.liCache[li.id()] = li; + if(!li.lineitem_notes()) li.lineitem_notes([]); var liWrapper = new openils.acq.Lineitem({lineitem:li}); var row = self.rowTemplate.cloneNode(true); row.setAttribute('li', li.id()); @@ -140,7 +141,9 @@ function AcqLiTable() { dojo.query('[attr=title]', row)[0].onclick = function() {self.drawInfo(li.id())}; dojo.query('[name=copieslink]', row)[0].onclick = function() {self.drawCopies(li.id())}; - dojo.query('[name=count]', row)[0].appendChild(document.createTextNode(li.item_count())); + dojo.query('[name=count]', row)[0].innerHTML = li.item_count(); + dojo.query('[name=notes_count]', row)[0].innerHTML = li.lineitem_notes().length; + dojo.query('[name=noteslink]', row)[0].onclick = function() {self.drawLiNotes(li)}; var priceInput = dojo.query('[name=estimated_price]', row)[0]; var priceData = liWrapper.getPrice(); @@ -151,7 +154,10 @@ function AcqLiTable() { self.selectors.push(dojo.query('[name=selectbox]', row)[0]); }; - self.updateLiPrice = function(input, li) { + this.drawLiNotes = function(li) { + } + + this.updateLiPrice = function(input, li) { var price = input.value; var liWrapper = new openils.acq.Lineitem({lineitem:li}); diff --git a/Open-ILS/web/js/ui/default/acq/picklist/view.js b/Open-ILS/web/js/ui/default/acq/picklist/view.js index 5fd05fce62..aad6d64cc9 100644 --- a/Open-ILS/web/js/ui/default/acq/picklist/view.js +++ b/Open-ILS/web/js/ui/default/acq/picklist/view.js @@ -77,7 +77,7 @@ function loadLIs() { ['open-ils.acq', 'open-ils.acq.lineitem.picklist.retrieve'], { async: true, params: [openils.User.authtoken, plId, - {flesh_attrs:true, clear_marc:true, offset:plOffset, limit:plLimit}], + {flesh_notes:true, flesh_attrs:true, clear_marc:true, offset:plOffset, limit:plLimit}], onresponse: function(r) { liTable.show('list'); liTable.addLineitem(openils.Util.readResponse(r)); diff --git a/Open-ILS/web/js/ui/default/acq/po/view_po.js b/Open-ILS/web/js/ui/default/acq/po/view_po.js index d8900c367f..26e61b5d22 100644 --- a/Open-ILS/web/js/ui/default/acq/po/view_po.js +++ b/Open-ILS/web/js/ui/default/acq/po/view_po.js @@ -24,7 +24,7 @@ function init() { fieldmapper.standardRequest( ['open-ils.acq', 'open-ils.acq.lineitem.search'], { async: true, - params: [openils.User.authtoken, {purchase_order:poId}, {flesh_attrs:true}], + params: [openils.User.authtoken, {purchase_order:poId}, {flesh_attrs:true, flesh_notes:true}], onresponse: function(r) { liTable.show('list'); liTable.addLineitem(openils.Util.readResponse(r)); diff --git a/Open-ILS/web/templates/default/acq/common/li_table.tt2 b/Open-ILS/web/templates/default/acq/common/li_table.tt2 index 9288d4cb2f..d3e5f34c60 100644 --- a/Open-ILS/web/templates/default/acq/common/li_table.tt2 +++ b/Open-ILS/web/templates/default/acq/common/li_table.tt2 @@ -47,7 +47,8 @@ Line Items Estimated Price - Copies + Items + Notes @@ -80,8 +81,11 @@ - Copies() + Copies(0) + + + Notes(0) -- 2.11.0