issue #23165: get itemsite fetch with keysearch working
authorSteve Hackbarth <stephenhackbarth@gmail.com>
Wed, 7 May 2014 16:51:03 +0000 (12:51 -0400)
committerSteve Hackbarth <stephenhackbarth@gmail.com>
Wed, 7 May 2014 16:51:03 +0000 (12:51 -0400)
enyo-client/database/source/xm/javascript/item_site.sql
test/database/joins.js

index 6ec1b6d..e4ad4eb 100644 (file)
@@ -54,7 +54,7 @@ select xt.install_js('XM','ItemSite','xtuple', $$
         /* Over-ride usual search behavior */
         if (param.keySearch) {
           keySearch = param.value;
-          sql1 += ' and (jt0.item_number ~^ ${p1} or jt0.item_upccode ~^ ${p1}) ' +
+          sql1 += ' and itemsite_item_id in (select item_id from item where item_number ~^ ${p1} or item_upccode ~^ ${p1}) ' +
             'union ' +
            'select t1.itemsite_id ' +
            'from %1$I.%2$I t1 {joins} ' +
@@ -131,9 +131,7 @@ select xt.install_js('XM','ItemSite','xtuple', $$
     /* Query the model */
     sql1 = sql1.replace(/{conditions}/g, clause.conditions)
              .replace(/{extra}/g, extra)
-             .replace('{joins}', clause.joins)
-             .replace('{joins}', clause.joins)
-             .replace('{joins}', clause.joins)
+             .replace(/{joins}/g, clause.joins)
              .replace('{orderBy}', clause.orderBy)
              .replace('{limit}', limit)
              .replace('{offset}', offset)
index 6b5834c..f0b3013 100644 (file)
@@ -188,6 +188,20 @@ var _ = require("underscore"),
       });
     });
 
+    it('should be able to do an item-site search with a keysearch', function (done) {
+      var sql = 'select xt.js_init(true);select xt.post($${"nameSpace":"XM","type":"ItemSiteRelation","dispatch":{"functionName":"fetch","parameters":{"parameters":[{"attribute":["number","barcode"],"operator":"BEGINS_WITH","value":"BTR","keySearch":true}],"orderBy":[{"attribute":"number"},{"attribute":"barcode"}],"rowLimit":10}},"username":"admin","encryptionKey":"this is any content"}$$);';
+
+      datasource.query(sql, creds, function (err, res) {
+        var results;
+        assert.isNull(err);
+        assert.equal(1, res.rowCount, JSON.stringify(res.rows));
+        results = JSON.parse(res.rows[1].post);
+        assert.isNumber(results.length);
+        done();
+      });
+    });
+
+
     it('should support a nested order-by', function (done) {
       var sql = 'select xt.js_init(true);select xt.get($${"nameSpace":"XM","type":"ItemSource","query":{"orderBy":[{"attribute":"vendorItemNumber"},{"attribute":"vendor.name"}],"parameters":[{"attribute":"isActive","value":true},{"attribute":"effective","operator":"<=","value":"2014-03-20T04:00:00.000Z"},{"attribute":"expires","operator":">=","value":"2014-03-22T01:18:09.202Z"}],"rowOffset":0,"rowLimit":50},"username":"admin","encryptionKey":"this is any content"}$$);';
 
@@ -310,6 +324,7 @@ var _ = require("underscore"),
       });
     });
 
+
 // incident plus
 //select xt.js_init(true);select xt.get($${"nameSpace":"XM","type":"IncidentListItem","query":{"orderBy":[{"attribute":"priorityOrder"},{"attribute":"updated","descending":true},{"attribute":"number","descending":true,"numeric":true}],"rowOffset":0,"rowLimit":50,"parameters":[{"attribute":["owner.username","assignedTo.username"],"operator":"","isCharacteristic":false,"value":"admin"},{"attribute":"project","operator":"","isCharacteristic":false,"value":"GREENLEAF"},{"attribute":"foundIn","operator":"","isCharacteristic":false,"value":"d0e6c507-eac5-461c-f63e-91e352a3ffb1"}]},"username":"admin","encryptionKey":"this is any content"}$$)