misc fixes
authorJason Etheridge <jason@EquinoxInitiative.org>
Fri, 13 Jul 2018 16:29:20 +0000 (12:29 -0400)
committerJason Etheridge <jason@EquinoxInitiative.org>
Fri, 13 Jul 2018 16:29:20 +0000 (12:29 -0400)
to the IDL and for the email_notify checkbox.

some refactoring to avoid using foreign fields in the request object

Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
Open-ILS/examples/fm_IDL.xml
Open-ILS/web/js/ui/default/staff/acq/services/requests.js

index 1671334..d8e77e2 100644 (file)
@@ -6241,6 +6241,7 @@ SELECT  usr,
                        <field reporter:label="Shelf Expire Time" name="shelf_expire_time" reporter:datatype="timestamp"/>
                        <field reporter:label="Notes" name="notes" reporter:datatype="link" oils_persist:virtual="true"/>
                        <field reporter:label="Current Shelf Lib" name="current_shelf_lib" reporter:datatype="org_unit"/>
+                       <field reporter:label="Acquisition Request" name="acq_request" reporter:datatype="link" />
                        <field reporter:label="Copy Location Sort Order" name="copy_location_order_position" reporter:datatype="int" />
                        <field reporter:label="User First Given Name" name="usr_first_given_name" reporter:datatype="text" />
                        <field reporter:label="User Second Given Name" name="usr_second_given_name" reporter:datatype="text" />
@@ -6274,6 +6275,7 @@ SELECT  usr,
                        <link field="notes" reltype="has_many" key="hold" map="" class="ahrn"/>
                        <link field="current_shelf_lib" reltype="has_a" key="id" map="" class="aou"/>
                        <link field="sms_carrier" reltype="has_a" key="id" map="" class="csc"/>
+                       <link field="acq_request" reltype="has_a" key="id" map="" class="aur"/>
                </links>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
                        <actions>
@@ -6325,6 +6327,7 @@ SELECT  usr,
                        <field reporter:label="Notes" name="notes" reporter:datatype="link" oils_persist:virtual="true"/>
                        <field reporter:label="Current Shelf Lib" name="current_shelf_lib" reporter:datatype="org_unit"/>
                        <field reporter:label="Behind Desk" name="behind_desk" reporter:datatype="bool"/>
+                       <field reporter:label="Acquisition Request" name="acq_request" reporter:datatype="link" />
                </fields>
                <links>
                        <link field="fulfillment_lib" reltype="has_a" key="id" map="" class="aou"/>
@@ -6342,6 +6345,7 @@ SELECT  usr,
                        <link field="cancel_cause" reltype="might_have" key="id" map="" class="ahrcc"/>
                        <link field="notes" reltype="has_many" key="hold" map="" class="ahrn"/>
                        <link field="current_shelf_lib" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="acq_request" reltype="has_a" key="id" map="" class="aur"/>
                </links>
        </class>
 
index f407d54..a9fbbdc 100644 (file)
@@ -169,9 +169,11 @@ function($uibModal , $q , egCore , egOrg , ngToast) {
             templateUrl: './acq/requests/t_edit',
             backdrop: 'static',
             controller: ['$scope',  '$uibModalInstance','egCore',
-                         'request','request_types','request_status_types',
+                         'request_and_extra','request_types','request_status_types',
                  function($m_scope , $uibModalInstance , egCore ,
-                          request , request_types , request_status_types ) {
+                          request_and_extra , request_types , request_status_types ) {
+                    var request = request_and_extra.request;
+                    var extra = request_and_extra.extra || {};
                     var today = new Date();
                     today.setHours(0);
                     today.setMinutes(0);
@@ -181,10 +183,14 @@ function($uibModal , $q , egCore , egOrg , ngToast) {
                     $m_scope.mode = mode;
                     $m_scope.request = request;
                     $m_scope.request_types = request_types;
-                    $m_scope.extra = {};
+                    $m_scope.extra = extra;
                     $m_scope.extra.user_obj = request.usr;
                     angular.forEach(['hold', 'email_notify'], function(field) {
-                        request[field] = request[field] == 't';
+                        if (request[field] == 't') {
+                            request[field] = true;
+                        } else if (request[field] == 'f') {
+                            request[field] = false;
+                        }
                     });
                     if (request.request_type) {
                         if (typeof request.request_type.id != 'undefined') {
@@ -199,9 +205,6 @@ function($uibModal , $q , egCore , egOrg , ngToast) {
                     if (request.need_before) {
                         request.need_before = new Date(request.need_before);
                     }
-                    if (request.phone_notify) {
-                        $m_scope.extra.phone_notify = true;
-                    }
                     if (request.pickup_lib) {
                         $m_scope.request.pickup_lib =
                             egCore.idl.fromHash('aou',request.pickup_lib);
@@ -282,6 +285,7 @@ function($uibModal , $q , egCore , egOrg , ngToast) {
                                 $m_scope.extra.user_obj = usr;
                                 $m_scope.request.usr = usr.id;
                                 $m_scope.request.pickup_lib = egOrg.get(usr.home_ou.id);
+                                $m_scope.request.phone_notify = usr.day_phone;
                                 angular.forEach(usr.settings, function(s) {
                                     if (s.name == 'opac.hold_notify') {
                                         if (s.value.match('phone')) {
@@ -292,13 +296,14 @@ function($uibModal , $q , egCore , egOrg , ngToast) {
                                         }
                                     }
                                     if (s.name == 'opac.default_phone') {
-                                        $m_scope.request.phone_notify = s.value;
+                                        $m_scope.request.phone_notify = s.value.replace(/^"/,'').replace(/"$/,'');
                                     }
                                     if (s.name == 'opac.default_pickup_location') {
                                         $m_scope.request.pickup_lib =
                                             egOrg.get(s.value);
                                     }
                                 });
+                                return $m_scope.request;
                             });
                         });
                     }
@@ -316,9 +321,10 @@ function($uibModal , $q , egCore , egOrg , ngToast) {
                     );
             }],
             resolve : {
-                 request : function() {
+                 request_and_extra : function() {
                     if (mode=='create') {
                         var aur_obj = egCore.idl.toHash(new egCore.idl.aurs());
+                        var extra = {};
                         if (row['usr']) {
                             return egCore.pcrud.search('au', {
                                     id : row['usr']
@@ -341,14 +347,18 @@ function($uibModal , $q , egCore , egOrg , ngToast) {
                                 aur_obj.pickup_lib = egCore.idl.toHash(
                                     egOrg.get(usr.home_ou.id)
                                 );
+                                aur_obj.phone_notify = usr.day_phone;
                                 angular.forEach(usr.settings, function(s) {
                                     if (s.name == 'opac.hold_notify') {
+                                        if (s.value.match('phone')) {
+                                            extra.phone_notify = true;
+                                        }
                                         if (s.value.match('email')) {
                                             aur_obj.email_notify = true;
                                         }
                                     }
                                     if (s.name == 'opac.default_phone') {
-                                        aur_obj.phone_notify = s.value;
+                                        aur_obj.phone_notify = s.value.replace(/^"/,'').replace(/"$/,'');
                                     }
                                     if (s.name == 'opac.default_pickup_location') {
                                         aur_obj.pickup_lib = egCore.idl.toHash(
@@ -356,10 +366,11 @@ function($uibModal , $q , egCore , egOrg , ngToast) {
                                         );
                                     }
                                 });
-                                return aur_obj;
+                                return { 'request' : aur_obj, 'extra' : extra };
                             });
                         } else {
-                            return aur_obj;
+                            console.log('here');
+                            return { 'request' : aur_obj, 'extra': extra };
                         }
                     } else {
                         return egCore.pcrud.search('aurs', {
@@ -368,7 +379,12 @@ function($uibModal , $q , egCore , egOrg , ngToast) {
                                 atomic : true
                             }
                         ).then(function(requests) {
-                            return egCore.idl.toHash(requests[0]);
+                            var aur_obj = egCore.idl.toHash(requests[0]);
+                            var extra = {};
+                            if (aur_obj.phone_notify) {
+                                extra.phone_notify = true;
+                            }
+                            return { 'request' : aur_obj, 'extra' : extra };
                         });
                     }
                 }
@@ -550,7 +566,6 @@ function($uibModal , $q , egCore , egOrg , ngToast) {
                 'open-ils.acq.clear_completed_user_requests',
                 egCore.auth.token(), ids
             ).then(function(obj) {
-                console.log('obj',obj);
                 if (callback) {
                     callback(obj);
                 }