volumes on save
authorJason Etheridge <jason@esilibrary.com>
Thu, 10 Mar 2011 05:48:13 +0000 (00:48 -0500)
committerJason Etheridge <jason@esilibrary.com>
Thu, 10 Mar 2011 05:48:13 +0000 (00:48 -0500)
Open-ILS/xul/staff_client/server/cat/volume_copy_creator.js

index 13d7c96..d55ed41 100644 (file)
@@ -836,12 +836,7 @@ g.gather_copies = function() {
                         copy.ischanged('1');
                     }
                     copy.barcode( barcode );
-                    if (typeof g.acn_map[ acn_id ] != 'undefined') {
-                        copy.call_number( g.acn_map[ acn_id].id() ); /* handles vivicated call numbers */
-                    } else {
-                        dump('FIXME: In volume_copy_creator.js, g.gather_copies(), using acn_id, but no g.acn_map[acn_id].  acn_id = ' + acn_id + '\n');
-                        copy.call_number( acn_id );
-                    }
+                    copy.call_number( acn_id );
                     // FIXME - at some point we will have multi-home multi-part items, and will need to preserve foreign parts
                     copy.parts( bmp_id ? [ g.parts_hash[ bmp_id ] ] : null );
                     copies.push( copy );
@@ -857,8 +852,9 @@ g.gather_copies = function() {
     }
 }
 
-g.vivicate_volumes = function() {
+g.vivicate_update_volumes = function() {
     try {
+        var volumes = [];
         for (var ou_id in g.volumes_scaffold) {
             for (var composite_key in g.volumes_scaffold[ou_id]) {
 
@@ -895,6 +891,7 @@ g.vivicate_volumes = function() {
                     }
 
                 }
+/*
                 var my_acn = g.acn_map[ acn_id ];
 
                 var node = g.volumes_scaffold[ou_id][composite_key].node;
@@ -902,15 +899,35 @@ g.vivicate_volumes = function() {
                 var prefix_menulist = node.parentNode.previousSibling.firstChild;
                 var suffix_menulist = node.parentNode.nextSibling.firstChild;
 
-                    class_menulist.value = my_acn.label_class();
-                    prefix_menulist.value = my_acn.prefix();
-                    suffix_menulist.value = my_acn.suffix();
+                if ( String(class_menulist.value) != String(my_acn.label_class()) {
+                    my_acn.label_class( class_menulist.value );
+                    my_acn.ischanged( get_db_true() );
+                }
+                if ( String(prefix_menulist.value) != String(my_acn.prefix()) {
+                    my_acn.prefix( prefix_menulist.value );
+                    my_acn.ischanged( get_db_true() );
+                }
+                if ( String(suffix_menulist.value) != String(my_acn.suffix()) {
+                    my_acn.suffix( suffix_menulist.value );
+                    my_acn.ischanged( get_db_true() );
+                }
 
                 if (get_bool( my_acn.ischanged() )) {
-                    dump('******\nPUSHING my_acn = ' + js2JSON(my_acn) + '\n',4);
                     volumes.push( my_acn );
-                } else {
-                    dump('******\nNOT PUSHING my_acn = ' + js2JSON(my_acn) + '\n',4);
+                }
+*/
+            }
+        }
+        if (volumes.length > 0) {
+            if (typeof xul_param('update_volume') == 'function') {
+                xul_param('update_volume')(volumes);
+            } else {
+                 var r = g.network.simple_request(
+                    'FM_ACN_TREE_UPDATE',
+                    [ ses(),volumes, false, { 'auto_merge_vols' : false } ]
+                );
+                if (typeof r.ilsevent != 'undefined') {
+                    g.error.standard_unexpected_error_alert('volume update',r);
                 }
             }
         }
@@ -923,7 +940,6 @@ g.stash_and_close = function(param) {
 
     try {
 
-        var volumes;
         var copies;
         if (xulG.unified_interface) {
             copies = xulG.copies;
@@ -933,19 +949,18 @@ g.stash_and_close = function(param) {
         }
 
         var dont_close = false;
-        if (volumes.length > 0) {
-            if (typeof xul_param('update_volume') == 'function') {
-                xul_param('update_volume')(volumes);
+
+        g.vivicate_update_volumes();
+        for (var i = 0; i < copies.length; i++) {
+            var acn_id = copies[i].call_number();
+            if (typeof g.acn_map[acn_id] != 'undefined') {
+                // handle vivicated-callnumbers
+                copies[i].call_number( g.acn_map[acn_id].id() );
             } else {
-                 var r = g.network.simple_request(
-                    'FM_ACN_TREE_UPDATE',
-                    [ ses(),volumes, false, { 'auto_merge_vols' : false } ]
-                );
-                if (typeof r.ilsevent != 'undefined') {
-                    g.error.standard_unexpected_error_alert('volume update',r);
-                }
+                alert('error in stash and close, acn_id = ' + acn_id);
             }
         }
+
         if (copies.length > 0) {
             if (param == 'edit') {
                 JSAN.use('cat.util');