issue #22155: Make vendor item number required and make history key for tests.
authorJohn Rogelstad <john@xtuple.com>
Thu, 26 Dec 2013 13:30:15 +0000 (08:30 -0500)
committerJohn Rogelstad <john@xtuple.com>
Thu, 26 Dec 2013 13:30:15 +0000 (08:30 -0500)
enyo-client/extensions/source/purchasing/client/en/strings.js
enyo-client/extensions/source/purchasing/client/models/item_source.js
enyo-client/extensions/source/purchasing/client/views/list.js
enyo-client/extensions/source/purchasing/database/orm/models/item_source.json
enyo-client/extensions/source/purchasing/database/source/manifest.js
enyo-client/extensions/source/purchasing/database/source/public/tables/itemsrc.sql [new file with mode: 0644]
enyo-client/extensions/source/purchasing/database/source/xt/trigger_functions/itemsrc_did_change.sql [new file with mode: 0644]

index 8c99727..5d9f066 100644 (file)
@@ -32,6 +32,7 @@ strict:true, trailing:true, white:true */
     "_ranking": "Ranking",
     "_unitRatio": "Unit Ratio",
     "_vendorItem": "Vendor Item",
+    "_vendorItemNumber": "VendorItemNumber",
     "_vouchered": "Vouchered"
   });
 
index d3f94ea..177df59 100644 (file)
@@ -33,6 +33,8 @@ white:true*/
         "status:READY_CLEAN": "statusReadyClean"
       },
 
+      nameAttribute: "vendorItemNumber",
+
       findPrice: function (quantity, site) {
         site = site || {};
         quantity = quantity || 0;
@@ -79,7 +81,7 @@ white:true*/
         if (!item || !vendor || !effective || !expires) {
           // no need to check for duplicates unless both fields are set
           if (typeof callback === "function") {
-            callback();
+            callback.call(that);
           }
           return;
         }
@@ -95,12 +97,12 @@ white:true*/
             err = XT.Error.clone("xt1008", { params: params });
             that.trigger("invalid", that, err, options);
             if (typeof callback === "function") {
-              callback(err);
+              callback.call(that, err);
             }
 
           } else {
             if (typeof callback === "function") {
-              callback();
+              callback.call(that);
             }
           }
         };
@@ -108,7 +110,7 @@ white:true*/
         options.error = function (err) {
           console.log("Error searching for duplicate item source", err);
           if (typeof callback === "function") {
-            callback(true);
+            callback.call(that, true);
           }
         };
 
index bdda852..e7191a8 100644 (file)
@@ -17,25 +17,16 @@ trailing:true, white:true, strict:false*/
       label: "_itemSources".loc(),
       collection: "XM.ItemSourceCollection",
       query: {orderBy: [
-        {attribute: "item.number"},
+        {attribute: "vendorItemNumber"},
         {attribute: "vendor.name"}
       ]},
       parameterWidget: "XV.ItemSourceListParameters",
       components: [
         {kind: "XV.ListItem", components: [
           {kind: "FittableColumns", components: [
-            {kind: "XV.ListColumn", classes: "first",
-              components: [
-              {kind: "FittableColumns", components: [
-                {kind: "XV.ListAttr", attr: "item.number", isKey: true},
-                {kind: "XV.ListAttr", attr: "item.inventoryUnit.name", fit: true,
-                  classes: "right"}
-              ]},
-              {kind: "XV.ListAttr", formatter: "formatDescription"}
-            ]},
             {kind: "XV.ListColumn", classes: "first", components: [
               {kind: "FittableColumns", components: [
-                {kind: "XV.ListAttr", attr: "vendorItemNumber", classes: "italic",
+                {kind: "XV.ListAttr", attr: "vendorItemNumber", isKey: true,
                   placeholder: "_noVendorNumber".loc()},
                 {kind: "XV.ListAttr", attr: "vendorUnit", fit: true,
                   classes: "right"}
@@ -46,6 +37,15 @@ trailing:true, white:true, strict:false*/
                   classes: "right"}
               ]},
             ]},
+            {kind: "XV.ListColumn", classes: "first",
+              components: [
+              {kind: "FittableColumns", components: [
+                {kind: "XV.ListAttr", attr: "item.number", classes: "italic"},
+                {kind: "XV.ListAttr", attr: "item.inventoryUnit.name", fit: true,
+                  classes: "right"}
+              ]},
+              {kind: "XV.ListAttr", formatter: "formatDescription"}
+            ]},
             {kind: "XV.ListColumn", classes: "last", components: [
               {kind: "XV.ListAttr", attr: "effective"},
               {kind: "XV.ListAttr", attr: "expires"}
index dcd51e2..eb2d5e9 100644 (file)
@@ -71,7 +71,8 @@
         "name": "vendorItemNumber",
         "attr": {
           "type": "String",
-          "column": "itemsrc_vend_item_number"
+          "column": "itemsrc_vend_item_number",
+          "required": true
         }
       },
       {
index 4bf9fe2..52eb5c3 100644 (file)
@@ -10,6 +10,7 @@
     "xt/functions/po_subtotal.sql",
     "xt/functions/po_tax_total.sql",
     "xt/functions/po_total.sql",
+    "xt/trigger_functions/itemsrc_did_change.sql",
     "xt/tables/poemlprofile.sql",
     "xt/tables/powf.sql",
     "xt/tables/potype.sql",
@@ -21,6 +22,7 @@
     "xt/views/poheadinfo.sql",
     "xt/views/poiteminfo.sql",
     "xm/javascript/item_source.sql",
-    "xm/javascript/purchasing.sql"
+    "xm/javascript/purchasing.sql",
+    "public/tables/itemsrc.sql"
   ]
 }
diff --git a/enyo-client/extensions/source/purchasing/database/source/public/tables/itemsrc.sql b/enyo-client/extensions/source/purchasing/database/source/public/tables/itemsrc.sql
new file mode 100644 (file)
index 0000000..381bc31
--- /dev/null
@@ -0,0 +1,9 @@
+select dropIfExists('TRIGGER', 'itemsrc_did_change', 'xt');
+
+update itemsrc set itemsrc_vend_item_number = item_number
+from item where item_id=itemsrc_item_id
+and length(itemsrc_vend_item_number) = 0;
+
+-- create trigger
+
+create trigger itemsrc_vendor_item_number_did_change before insert or update on itemsrc for each row execute procedure xt.itemsrc_did_change();
\ No newline at end of file
diff --git a/enyo-client/extensions/source/purchasing/database/source/xt/trigger_functions/itemsrc_did_change.sql b/enyo-client/extensions/source/purchasing/database/source/xt/trigger_functions/itemsrc_did_change.sql
new file mode 100644 (file)
index 0000000..0c67bda
--- /dev/null
@@ -0,0 +1,11 @@
+create or replace function xt.itemsrc_did_change() returns trigger as $$
+/* Copyright (c) 1999-2013 by OpenMFG LLC, d/b/a xTuple.
+   See www.xm.ple.com/CPAL for the full text of the software license. */
+
+ if (NEW.itemsrc_vend_item_number.length === 0) {
+   throw "Vendor Item Number is required."
+ }
+ return NEW;
+
+$$ language plv8;