<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/eframe.js"></script>
<script src="[% ctx.media_prefix %]/js/ui/default/staff/cat/services/record.js"></script>
<script src="[% ctx.media_prefix %]/js/ui/default/staff/cat/services/tagtable.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/serials/services/core.js"></script>
[% INCLUDE 'staff/cat/share/marcedit_strings.tt2' %]
<script src="[% ctx.media_prefix %]/js/ui/default/staff/cat/services/marcedit.js"></script>
<script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/services/circ.js"></script>
"[% l('Item Transfer Target set') %]";
s.MARK_OVERLAY_TARGET =
"[% l('Record Overlay Target set') %]";
+
+ s.SERIALS_NO_SUBS = "[% l('No subscriptions at the selected library') %]";
+ s.SERIALS_NO_ITEMS = "[% l('No items at the selected library') %]";
+
+ s.SERIALS_ISSUANCE_FAIL_SAVE = "[% l('Failed to save issuance') %]";
+ s.SERIALS_ISSUANCE_SUCCESS_SAVE = "[% l('Issuance saved') %]";
+
+ s.SERIALS_ITEM_STATUS = {};
+ s.SERIALS_ITEM_STATUS.Expected = "[% l('Expected') %]";
+ s.SERIALS_ITEM_STATUS.Received = "[% l('Received') %]";
+ s.SERIALS_ITEM_STATUS.Claimed = "[% l('Claimed') %]";
+ s.SERIALS_ITEM_STATUS.Bindery = "[% l('Bindery') %]";
+ s.SERIALS_ITEM_STATUS.Bound = "[% l('Bound') %]";
+ s.SERIALS_ITEM_STATUS.Discarded = "[% l('Discarded') %]";
+ s.SERIALS_ITEM_STATUS['Not Held'] = "[% l('Not Held' ) %]";
+ s.SERIALS_ITEM_STATUS['Not Published'] = "[% l('Not Published') %]";
+
}])
</script>
*
*/
-angular.module('egCatalogApp', ['ui.bootstrap','ngRoute','ngLocationUpdate','egCoreMod','egGridMod', 'egMarcMod', 'egUserMod', 'egHoldingsMod', 'ngToast'])
+angular.module('egCatalogApp', ['ui.bootstrap','ngRoute','ngLocationUpdate','egCoreMod','egGridMod', 'egMarcMod', 'egUserMod', 'egHoldingsMod', 'ngToast', 'egSerialsMod'])
.config(['ngToastProvider', function(ngToastProvider) {
ngToastProvider.configure({
.controller('CatalogCtrl',
['$scope','$routeParams','$location','$window','$q','egCore','egHolds','egCirc','egConfirmDialog','ngToast',
'egGridDataProvider','egHoldGridActions','egProgressDialog','$timeout','$uibModal','holdingsSvc','egUser','conjoinedSvc',
- '$cookies',
+ '$cookies','egSerialsCoreSvc',
function($scope , $routeParams , $location , $window , $q , egCore , egHolds , egCirc , egConfirmDialog , ngToast ,
egGridDataProvider , egHoldGridActions , egProgressDialog , $timeout , $uibModal , holdingsSvc , egUser , conjoinedSvc,
- $cookies
+ $cookies , egSerialsCoreSvc
) {
var holdingsSvcInst = new holdingsSvc();
$scope.current_voltransfer_target = egCore.hatch.getLocalItem('eg.cat.marked_volume_transfer_record');
$scope.current_conjoined_target = egCore.hatch.getLocalItem('eg.cat.marked_conjoined_record');
+ $scope.quickReceive = function () {
+ var list = [];
+ var next_per_stream = {};
+
+ return $uibModal.open({
+ templateUrl: './share/t_org_select_dialog',
+ controller: ['$scope', '$uibModalInstance',
+ function($scope, $uibModalInstance) {
+
+ $scope.focus = true;
+ $scope.rememberMe = 'eg.serials.quickreceive.last_org';
+
+ $scope.ok = function() { $uibModalInstance.close($scope.ws_ou.id()) }
+ $scope.cancel = function() { $uibModalInstance.dismiss(); }
+ }
+ ]
+ }).result.then(function(org) {
+ if (org) {
+ return egSerialsCoreSvc.fetch($scope.record_id, egCore.org.descendants(org, true)).then(function(sub_list){
+ if (!sub_list.length) {
+ ngToast.warning(egCore.strings.SERIALS_NO_SUBS);
+ return $q.reject();
+ }
+
+ var promises = [];
+ angular.forEach(sub_list, function (sub) {
+ promises.push(egSerialsCoreSvc.fetchItemsForSub(sub.id(),{status:'Expected'}).then(function(){
+ angular.forEach(egSerialsCoreSvc.itemTree, function (item) {
+ if (next_per_stream[item.stream().id()]) return;
+ if (item.status() == 'Expected') {
+ next_per_stream[item.stream().id()] = item;
+ list.push(egCore.idl.Clone(item));
+ }
+ });
+ }));
+ });
+
+ return $q.all(promises).then(function() {
+
+ if (!list.length) {
+ ngToast.warning(egCore.strings.SERIALS_NO_ITEMS);
+ return $q.reject();
+ }
+
+ return egSerialsCoreSvc.process_items(
+ 'receive',
+ $scope.record_id,
+ list,
+ true, // barcode
+ false,// bind
+ false, // print by default
+ function() { $scope.holdings_record_id_changed($scope.record_id) }
+ );
+ });
+ });
+ } else {
+ return $q.reject();
+ }
+ });
+ }
+
$scope.markConjoined = function () {
$scope.current_conjoined_target = $scope.record_id;
egCore.hatch.setLocalItem('eg.cat.marked_conjoined_record',$scope.record_id);