From ea51d9f8e2300799a153d4006939afb9c01812ed Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Fri, 10 Aug 2012 14:06:36 -0400 Subject: [PATCH] Fiscal year selector in ACQ order record upload * Support a 'fiscal_year' parameter to ACQ order record upload API. * Adds a new "Fiscal Year" selector to the upload form to facilitate uploading orders to different fiscal years. This partially resolves LP 1031927 by allowing manual selection of the correct fiscal year. Signed-off-by: Bill Erickson Signed-off-by: Lebbeous Fogle-Weekley --- .../perlmods/lib/OpenILS/Application/Acq/Order.pm | 12 ++++--- Open-ILS/src/templates/acq/picklist/upload.tt2 | 10 ++++++ Open-ILS/web/js/ui/default/acq/picklist/upload.js | 30 +++++++++++++++++++- 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm index aa8a45d..8bbb550 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm @@ -1331,6 +1331,7 @@ sub upload_records { my $activate_po = $args->{activate_po}; my $vandelay = $args->{vandelay}; my $ordering_agency = $args->{ordering_agency} || $e->requestor->ws_ou; + my $fiscal_year = $args->{fiscal_year} || DateTime->now->year; my $po; my $evt; @@ -1410,7 +1411,8 @@ sub upload_records { $mgr->respond; $li->provider($provider); # flesh it, we'll need it later - import_lineitem_details($mgr, $ordering_agency, $li) or return $mgr->editor->die_event; + import_lineitem_details($mgr, $ordering_agency, $li, $fiscal_year) + or return $mgr->editor->die_event; $mgr->respond; push(@li_list, $li->id); @@ -1478,7 +1480,7 @@ sub extract_po_name { } sub import_lineitem_details { - my($mgr, $ordering_agency, $li) = @_; + my($mgr, $ordering_agency, $li, $fiscal_year) = @_; my $holdings = $mgr->editor->json_query({from => ['acq.extract_provider_holding_data', $li->id]}); return 1 unless @$holdings; @@ -1491,7 +1493,7 @@ sub import_lineitem_details { while(1) { # create a lineitem detail for each copy in the data - my $compiled = extract_lineitem_detail_data($mgr, $org_path, $holdings, $idx); + my $compiled = extract_lineitem_detail_data($mgr, $org_path, $holdings, $idx, $fiscal_year); last unless defined $compiled; return 0 unless $compiled; @@ -1527,7 +1529,7 @@ sub import_lineitem_details { # return hash on success, 0 on error, undef on no more holdings sub extract_lineitem_detail_data { - my($mgr, $org_path, $holdings, $index) = @_; + my($mgr, $org_path, $holdings, $index, $fiscal_year) = @_; my @data_list = grep { $_->{holding} eq $index } @$holdings; return undef unless @data_list; @@ -1553,7 +1555,7 @@ sub extract_lineitem_detail_data { # search up the org tree for the most appropriate fund for my $org (@$org_path) { $fund = $mgr->editor->search_acq_fund( - {org => $org, code => $code, year => DateTime->now->year}, {idlist => 1})->[0]; + {org => $org, code => $code, year => $fiscal_year}, {idlist => 1})->[0]; last if $fund; } } diff --git a/Open-ILS/src/templates/acq/picklist/upload.tt2 b/Open-ILS/src/templates/acq/picklist/upload.tt2 index 6d04d7f..d88bd23 100644 --- a/Open-ILS/src/templates/acq/picklist/upload.tt2 +++ b/Open-ILS/src/templates/acq/picklist/upload.tt2 @@ -32,6 +32,16 @@ + + [% l('Fiscal Year') %] + + + +
[% PROCESS vlagent_form vl_show_copy_option=1 %] diff --git a/Open-ILS/web/js/ui/default/acq/picklist/upload.js b/Open-ILS/web/js/ui/default/acq/picklist/upload.js index 1a6653a..1361685 100644 --- a/Open-ILS/web/js/ui/default/acq/picklist/upload.js +++ b/Open-ILS/web/js/ui/default/acq/picklist/upload.js @@ -22,6 +22,8 @@ var usingNewPl = false; function init() { dojo.byId('acq-pl-upload-ses').value = openils.User.authtoken; + loadYearSelector(); + new openils.widget.AutoFieldWidget({ fmClass : 'acqpo', fmField : 'provider', @@ -104,7 +106,8 @@ function acqHandlePostUpload(key, plId) { ordering_agency : orderAgencyWidget.attr('value'), create_po : acqPlUploadCreatePo.attr('value'), activate_po : acqPlUploadActivatePo.attr('value'), - vandelay : vlAgent.values() + vandelay : vlAgent.values(), + fiscal_year : acqUploadYearSelector.attr('value') }; fieldmapper.standardRequest( @@ -161,6 +164,31 @@ function acqHandlePostUpload(key, plId) { ); } +function loadYearSelector() { + + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.fund.org.years.retrieve'], + { async : true, + params : [openils.User.authtoken, {}, {limit_perm : 'VIEW_FUND'}], + oncomplete : function(r) { + + var yearList = openils.Util.readResponse(r); + if(!yearList) return; + yearList = yearList.map(function(year){return {year:year+''};}); // dojo wants strings + + var yearStore = {identifier:'year', name:'year', items:yearList}; + yearStore.items = yearStore.items.sort().reverse(); + acqUploadYearSelector.store = new dojo.data.ItemFileReadStore({data:yearStore}); + + // default to this year + // TODO: current fiscal year + acqUploadYearSelector.setValue(new Date().getFullYear().toString()); + } + } + ); +} + + openils.Util.addOnLoad(init); -- 1.7.2.5