From: Bill Erickson Date: Fri, 10 Aug 2012 18:06:36 +0000 (-0400) Subject: Fiscal year selector in ACQ order record upload X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=c997cba9081b07db3779c84ab6b11baae789cfff;p=working%2FEvergreen.git 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 --- 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 ec94c04995..8d65d6d319 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm @@ -1324,6 +1324,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; @@ -1403,7 +1404,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); @@ -1428,7 +1430,7 @@ sub upload_records { } 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; @@ -1441,7 +1443,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; @@ -1477,7 +1479,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; @@ -1503,7 +1505,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 6d04d7f9a0..d88bd235a1 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 1a6653ac6b..1361685897 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);