2 "name" : "Pman.Tab.XtupleStock",
3 "parent" : "Pman.Tab.XtupleManage",
4 "title" : "Pman.Tab.XtupleStock",
5 "path" : "/home/alan/gitlive/Pman.Xtuple/Pman.Tab.XtupleStock.bjs",
11 "render" : "function (_self)\n{\n _this.toppanel = _self;\n}"
15 "title" : "Locations /Stock ",
16 "xtype" : "NestedLayoutPanel",
20 "xtype" : "BorderLayout",
25 "xtype" : "LayoutRegion",
31 "xtype" : "LayoutRegion",
39 "|activate" : "function() {\n _this.panel = this;\n if (_this.grid) {\n _this.grid.footer.onClick('first');\n }\n}"
45 "xtype" : "GridPanel",
46 "fitContainer" : true,
48 "tableName" : "location",
52 "|rowdblclick" : "function (_self, rowIndex, e)\n{\n \n Pman.Dialog.XtupleLocation.show( this.getDataSource().getAt(rowIndex).data, function() {\n _this.grid.footer.onClick('first');\n }); \n}\n",
53 "cellclick" : "function (_self, rowIndex, col, e)\n{\n \n var ix = this.colModel.getDataIndex(col);\n var rec = _this.grid.ds.getAt(rowIndex);\n \n \n \n if (ix == 'location_restrict') {\n \n var nv = rec.data.location_restrict ? 0 : 1;\n new Pman.Request({\n mask : 'Saving',\n url : baseURL + '/Roo/Location',\n params : {\n location_id : rec.data.location_id,\n location_restrict : nv\n },\n success : function() {\n rec.set('location_restrict', nv);\n }\n });\n return;\n \n \n }\n \n \n \n \n _this.itemgrid.viewtype = 1;\n \n \n if ('location_qty_neg' == ix || 'location_netsuite_stock_neg' == ix ) {\n _this.itemgrid.viewtype = -1;\n }\n if ('location_netsuite_stock' == ix || 'location_netsuite_stock_neg' == ix ) {\n _this.itemgrid.viewtype *= 2;\n }\n \n (function() { _this.itemgrid.footer.onClick('first'); }).defer(100);\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n}",
54 "|render" : "function() \n{\n _this.grid = this; \n //_this.dialog = Pman.Dialog.FILL_IN\n if (_this.panel.active) {\n this.footer.onClick('first');\n }\n}"
56 "autoExpandColumn" : "location_name",
64 "selectionchange" : "function (_self)\n{\n \n // _this.toppanel.layout.getRegion('east').expand();\n}"
66 "xtype" : "RowSelectionModel",
72 "beforeload" : "function (_self, o)\n{\n \n o.params._as_of = _this.dateTo.getValue();\n\n if (!o.params._as_of.length) {\n return false;\n }\n o.params._with_stock_and_value = 1;\n \n o.params._viewType = _this.viewType.getValue();\n}",
73 "load" : "function (_self, records, options)\n{\n // build index.\n \n var dt = Date.parseDate(_this.dateTo.getValue(), 'Y-m-d');\n var maxd = Date.parseDate('2012-11-01', 'Y-m-d');\n \n if (!records.length) {\n return;\n }\n \n var map = {};\n \n Roo.each(records, function(r) {\n map[r.data.location_id] = r;\n r.set('location_qty',undefined);\n r.set('location_qty_neg', undefined);\n r.set('location_value', undefined);\n \n });\n var pqty = 0;\n var nqty = 0;\n var tval = 0.0;\n var overlaydata = function (type, data) {\n Roo.each(data, function(r) {\n var rec= map[r.location_id];\n \n //switch(type) { \n //case 'netsuite':\n rec.set('location_netsuite_stock', r.location_netsuite_stock);\n rec.set('location_netsuite_stock_neg', r.location_netsuite_stock_neg); \n // break;\n // case 'dragon':\n rec.set('location_qty', r.location_qty);\n pqty += r.location_qty *1; \n rec.set('location_qty_neg', r.location_qty_neg);\n nqty += r.location_qty_neg *1;\n rec.set('location_value', r.location_value);\n tval += r.location_value * 1.0;\n // break;\n \n \n //}\n })\n \n \n \n };\n \n var i = 0; \n \n var loadoverlay = function(type) {\n \n \n new Pman.Request({\n method : 'GET',\n //mask : 'Loading ' + type + ' stock levels (takes around 30s)',\n timeout: 60000,\n url : baseURL + '/Roo/Location',\n params : {\n _as_of : _this.dateTo.getValue(),\n _with_stock_and_value : 'both',\n location_id : records[i++].data.location_id \n },\n success : function( res ) {\n \n overlaydata(type, res.data);\n \n if (i >= records.length) {\n _this.grid.footer.displayEl.update(String.format(\"Total: pos={0} neg={1} eq={2} val={3}\", \n Roo.util.Format.number(pqty,0), \n Roo.util.Format.number(nqty,0), \n Roo.util.Format.number(pqty+nqty,0), \n Roo.util.Format.number(tval,0)\n ));\n return;\n } \n loadoverlay(type);\n //if (type == 'dragon' && dt < maxd ) {\n // loadoverlay('netsuite');\n // } else {\n //\n // }\n \n \n },\n failure : function( ) {\n Roo.MessageBox.alert('Error' , 'Loading data failed, try again');\n }\n });\n \n };\n \n loadoverlay('dragon');\n \n \n}"
77 "$ sortInfo" : "{ field : 'location_name', direction: 'ASC' }",
79 "* prop" : "dataSource",
82 "$ url" : "baseURL + '/Roo/location.php'",
83 "xtype" : "HttpProxy",
91 "xtype" : "JsonReader",
93 "$ fields" : "[\n {\n 'name': 'location_id',\n 'type': 'int'\n },\n {\n 'name': 'location_warehous_id',\n 'type': 'int'\n },\n {\n 'name': 'location_name',\n 'type': 'string'\n },\n {\n 'name': 'location_descrip',\n 'type': 'string'\n },\n {\n 'name': 'location_restrict',\n 'type': 'int'\n },\n {\n 'name': 'location_netable',\n 'type': 'int'\n },\n {\n 'name': 'location_whsezone_id',\n 'type': 'int'\n },\n {\n 'name': 'location_aisle',\n 'type': 'string'\n },\n {\n 'name': 'location_rack',\n 'type': 'string'\n },\n {\n 'name': 'location_bin',\n 'type': 'string'\n }\n]",
95 "totalProperty" : "total"
101 "xtype" : "PagingToolbar",
102 "emptyMsg" : "No location found",
104 "displayMsg" : "Displaying location{0} - {1} of {2}",
105 "displayInfo" : true,
110 "click" : "function (_self, e)\n{\n Roo.MessageBox.progress (\"Syncing Balances\", \"Sending\");\n \n var offset = 0;\n \n function runSync() {\n \n new Pman.Request( {\n url : baseURL+'/Roo/Locbal',\n method : 'GET',\n params : {\n _sync : 1,\n offset : offset\n },\n success : function(res) {\n // Roo.log(res);\n if (!res.data.total) {\n Roo.MessageBox.hide();\n return;\n }\n offset += res.data.limit;\n Roo.MessageBox.updateProgress ( offset / res.data.total, \"Done \" + offset + '/' + res.data.total);\n runSync();\n }\n \n });\n }\n runSync();\n}"
112 "text" : "Sync Stock Balances",
115 "$ xns" : "Roo.Toolbar"
119 "click" : "function (_self, e)\n{\n Pman.Dialog.Image.show(\n {\n _url : baseURL+'/Xtuple/Import/Products'\n \n },\n function (data) {\n var msg = [];\n \n if (data.updated) {\n msg.push(\"Updated \" + data.updated + \" Products(s)\");\n } \n if (data.inserted) {\n msg.push(\"Added \" + data.inserted + \" Products(s)\");\n }\n if (data.skipped) {\n msg.push(\"Skipped \" + data.skipped);\n }\n \n if (!msg.length) {\n msg.push(\"No data changed\");\n }\n Roo.MessageBox.alert(\"Notice\", msg.join(\"\\n\"));\n\n }\n );\n}"
121 "text" : "Upload new products and costs",
124 "$ xns" : "Roo.Toolbar",
128 "$ xns" : "Roo.menu",
133 "click" : "function (_self, e)\n{\n var l = _this.grid.selModel ? _this.grid.selModel.getSelected() : false;\n if (!l) {\n Roo.MessageBox.alert(\"Error\", \"Select location\");\n return;\n }\n \n Pman.Dialog.XtupleTransfer.show({\n id : 0,\n _ns_autofill : 1,\n invhist_transfer_to : l.data.location_id,\n invhist_transfer_to_location_descrip : l.data.location_descrip,\n \n invhist_transfer_transdate : _this.dateTo.getValue(),\n invhist_transfer_arrivaldate : _this.dateTo.getValue()\n \n \n }, function() { _this.grid.ds.load({}); }\n );\n \n \n}"
135 "text" : "Transfer to Fix +ve number",
141 "click" : "function (_self, e)\n{\n var l = _this.grid.selModel ? _this.grid.selModel.getSelected() : false;\n if (!l) {\n Roo.MessageBox.alert(\"Error\", \"Select location\");\n return;\n }\n \n Pman.Dialog.XtupleTransfer.show({\n id : 0,\n _ns_autofill : -1,\n invhist_transfer_from : l.data.location_id,\n invhist_transfer_from_location_descrip : l.data.location_descrip,\n \n invhist_transfer_transdate : _this.dateTo.getValue(),\n invhist_transfer_arrivaldate : _this.dateTo.getValue()\n \n \n }, function() { _this.grid.ds.load({}); }\n );\n \n \n}\n "
143 "text" : "Transfer to Fix -ve number",
156 "* prop" : "toolbar",
160 "xtype" : "TextItem",
161 "$ xns" : "Roo.Toolbar"
165 "render" : "function (_self)\n{\n _this.dateTo = _self;\n}",
166 "select" : "function (combo, date)\n{\n _this.grid.footer.onClick('first');\n}"
170 "xtype" : "DateField",
176 "render" : "function (_self)\n{\n _this.viewType = _self;\n}",
177 "select" : "function (combo, record, index)\n{\n _this.grid.footer.onClick('first');\n}"
180 "triggerAction" : "all",
181 "fieldLabel" : "Status",
182 "displayField" : "fname",
183 "hiddenName" : "loctype",
185 "valueField" : "ftype",
186 "xtype" : "ComboBox",
187 "allowBlank" : false,
190 "$ xns" : "Roo.form",
192 "name" : "loctype_name",
195 "xtype" : "SimpleStore",
196 "$ data" : "[ ['local', \"Local\"],[ 'remote' , \"Remote\"],[ 'disabled', \"Disabled\"] ]\n",
197 "$ fields" : "[ 'ftype', 'fname']",
198 "$ xns" : "Roo.data",
205 "$ xns" : "Roo.Toolbar"
209 "|click" : "function()\n{\n // work out last \n Pman.Dialog.XtupleLocation.show( { }, function() {\n _this.grid.footer.onClick('first');\n }); \n}\n",
210 "render" : "function (_self)\n{\n _this.addItemBtn = _self;\n}"
214 "cls" : "x-btn-text-icon",
215 "$ icon" : "Roo.rootURL + 'images/default/dd/drop-add.gif'",
216 "$ xns" : "Roo.Toolbar"
219 "text" : "Download Reports",
221 "$ xns" : "Roo.Toolbar",
225 "$ xns" : "Roo.menu",
230 "click" : "function (_self, e)\n{\n\n var ret= [];\n var hr = [];\n var cols = [];\n Roo.each( _this.grid.colModel.config, function(h) {\n hr.push(h.header);\n cols.push(h.dataIndex);\n });\n ret.push(hr);\n _this.grid.ds.each(function(rec) {\n hr = [];\n for(var i =0;i<cols.length;i++) {\n hr.push(rec.get(cols[i]));\n }\n ret.push(hr);\n });\n \n new Pman.Download({\n url : baseURL + '/Core/JsonToExcel',\n method : 'POST',\n params : {\n _json : Roo.encode(ret) \n }\n });\n \n}"
232 "text" : "Summary of Stock in all Locatoins",
237 "xtype" : "Separator",
242 "click" : "function (_self, e)\n{\n \n \n\n new Pman.Download({\n url : baseURL + '/Roo/Invdetail',\n method : 'GET',\n timeout: 60000,\n params : {\n _summary_at_date : _this.dateTo.getValue(),\n 'csvCols[0]' : 'location_name', \n 'csvCols[1]' : 'item_number',\n 'csvCols[2]' : 'item_descrip1', \n 'csvCols[3]' : 'stock_qty',\n 'csvCols[4]' : 'stdcost_value',\n 'csvCols[5]' : 'fifo_value', \n 'csvTitles[0]' :'Location', \n 'csvTitles[1]' : 'Item Number',\n 'csvTitles[2]' : 'Item Description', \n 'csvTitles[3]' : 'Qty', \n 'csvTitles[4]' : 'Std Cost Valued',\n 'csvTitles[5]' : 'FIFO Value', \n 'sort' : 'location_name,item_number',\n 'dir' : 'ASC', \n _with_empty_stock : 1, \n limit : 99999\n \n }\n });\n Roo.MessageBox.alert(\"Notice\", \"Report will download shortly (around 30s)\");\n \n}\n"
244 "text" : "All Stock in all locations (active)",
250 "click" : "function (_self, e)\n{\n var p = {\n 'csvCols[0]' : 'itemsite_item_id_item_number',\n 'csvCols[1]' : 'item_brand_name',\n 'csvCols[2]' : 'itemsite_item_id_item_descrip1',\n 'csvCols[3]' : 'itemsite_qty_before',\n 'csvCols[4]' : 'itemsite_sold_atdate' ,\n 'csvCols[5]' : 'itemsite_qty', \n 'csvCols[6]' : 'itemsite_sold_after', \n 'csvCols[7]' : 'last_transaction',\n 'csvCols[8]' : 'customer_price_each', \n 'csvCols[9]' : 'customer_total_value', \n 'csvCols[10]' : 'itemsite_value',\n 'csvCols[11]' : 'item_last_purchase_price',\n \n 'csvTitles[0]' : 'SKU',\n 'csvTitles[1]' : 'Brand' ,\n 'csvTitles[2]' : 'Description', \n 'csvTitles[3]' : 'Qty Before' , \n 'csvTitles[4]' : 'Total Sold' , \n 'csvTitles[5]' : 'Qty' , \n 'csvTitles[6]' : 'Sold After' , \n 'csvTitles[7]' : 'Last Transaction' ,\n 'csvTitles[8]' : 'Customer unit price' ,\n 'csvTitles[9]' : 'Customer Total Value' ,\n 'csvTitles[10]' : 'FIFO value' ,\n 'csvTitles[11]' : 'Last Purchase Price' , \n\n\n \n \n 'sort' : 'itemsite_item_id_item_number',\n 'dir' : 'ASC', \n limit : 9999\n };\n var l = _this.grid.selModel ? _this.grid.selModel.getSelected() : false;\n if (!l) {\n Roo.MessageBox.alert(\"Error\", \"Select location\");\n return;\n }\n p.location_id = l.data.location_id;\n p._as_of = _this.dateTo.getValue();\n p._with_stock_and_value = 1;\n p._viewtype = 1;\n p._with_brand = 1;\n p._with_last_purchase_price = 1;\n p._with_qty_detail = 1;\n \n new Pman.Download({\n url : baseURL + '/Roo/itemsite',\n timeout : 60000,\n \n method : 'GET',\n params : p\n\n \n });\n Roo.MessageBox.alert(\"Notice\", \"Report will download shortly\");\n}"
252 "text" : "Stock at Selected Location (inc. empty)",
257 "xtype" : "Separator",
262 "click" : "function (_self, e)\n{\n \n var p = {\n _group : 'itemsite',\n _name : 'stockatlocation',\n csvCols : '*',\n limit : 99999\n };\n var l = _this.grid.selModel ? _this.grid.selModel.getSelected() : false;\n if (!l) {\n Roo.MessageBox.alert(\"Error\", \"Select location\");\n return;\n }\n p['location_id:number'] = l.data.location_id;\n p['as_of:text'] = _this.dateTo.getValue();\n \n new Pman.Download({\n url : baseURL + '/Roo/Metasql',\n newWindow : 1,\n timeout : 60000,\n \n method : 'GET',\n params : p\n\n \n });\n Roo.MessageBox.alert(\"Notice\", \"Report will download shortly\");\n}"
264 "text" : "Stock at Selected Location (inc. empty) with Adjustment details",
275 "xtype" : "ColumnModel",
278 "$ renderer" : "function(v) { \n var state = v * 1 > 0 ? '' : '-checked' ;\n\n return '<img class=\"x-grid-check-icon' + state + '\" src=\"' + Roo.BLANK_IMAGE_URL + '\"/>';\n \n }",
279 "$ xns" : "Roo.grid",
280 "* prop" : "colModel[]",
281 "dataIndex" : "location_restrict"
284 "xtype" : "ColumnModel",
287 "$ renderer" : "function(v) { return String.format('{0}', v); }",
288 "$ xns" : "Roo.grid",
289 "* prop" : "colModel[]",
290 "dataIndex" : "location_name"
293 "xtype" : "ColumnModel",
294 "header" : "Description",
296 "$ renderer" : "function(v) { return String.format('{0}', v); }",
297 "$ xns" : "Roo.grid",
298 "* prop" : "colModel[]",
299 "dataIndex" : "location_descrip"
302 "xtype" : "ColumnModel",
303 "header" : "Customer",
305 "$ renderer" : "function(v,x,r) { \n\n if (!r.data.location_cust_id_char_internalcompany.length) {\n return String.format('{0}', v); \n }\n return String.format('<span style=\"color:red\">[Internal Company : {0}] {1} </span>', \n r.data.location_cust_id_char_internalcompany, v); \n \n}\n",
306 "$ xns" : "Roo.grid",
307 "* prop" : "colModel[]",
308 "dataIndex" : "location_cust_id_cust_name"
312 "xtype" : "ColumnModel",
315 "$ renderer" : "function(v,x,r) { return typeof(v) == 'undefined' ? '...' : String.format('{0} ', (v*1).toFixed(0) ); }",
316 "$ xns" : "Roo.grid",
317 "* prop" : "colModel[]",
318 "dataIndex" : "location_qty"
322 "xtype" : "ColumnModel",
323 "header" : "Missing TX",
325 "$ renderer" : "function(v,x,r) { \n if ( typeof(v) == 'undefined') {\n return '';\n }\n if (v == 0) {\n return '';\n }\n \n return String.format('<span style=\"color:red;\">{0}</span>', (v*1).toFixed(0) ); \n}",
326 "$ xns" : "Roo.grid",
327 "* prop" : "colModel[]",
328 "dataIndex" : "location_qty_neg"
332 "xtype" : "ColumnModel",
333 "header" : "Est. Net Qty",
335 "$ renderer" : "function(v,x,r) { \n \n return typeof(v) == 'undefined' ? '...' : \n String.format('{0}', ((v*1) + (r.data.location_qty_neg*1)).toFixed(0) ); \n}",
336 "$ xns" : "Roo.grid",
337 "* prop" : "colModel[]",
338 "dataIndex" : "location_qty"
343 "xtype" : "ColumnModel",
346 "$ renderer" : "function(v,x,r) {\n var f= '{0}';\n if ((r.data.location_qty) *1 != (v*1)) {\n f = '<span style=\"color:red;font-weight:bold\">{0}</span>';\n }\n return typeof(v) == 'undefined' ? '...' : String.format(f, (v*1).toFixed(0) );\n \n }",
347 "$ xns" : "Roo.grid",
348 "* prop" : "colModel[]",
349 "dataIndex" : "location_netsuite_stock"
354 "xtype" : "ColumnModel",
355 "header" : "NS -ve Qty",
357 "$ renderer" : "function(v,x,r) { \n var f= '{0}';\n if ((r.data.location_qty_neg) *1 != (v*1)) {\n f = '<span style=\"color:red;font-weight:bold\">{0}</span>';\n }\n return typeof(v) == 'undefined' ? '...' : String.format(f, (v*1).toFixed(0) ); \n }",
358 "$ xns" : "Roo.grid",
359 "* prop" : "colModel[]",
360 "dataIndex" : "location_netsuite_stock_neg"
364 "xtype" : "ColumnModel",
367 "$ renderer" : "function(v) { return typeof(v) == 'undefined' ? '...' : Roo.util.Format.usMoney( v); }",
368 "$ xns" : "Roo.grid",
369 "* prop" : "colModel[]",
370 "dataIndex" : "location_value"
378 "|activate" : "function() {\n _this.itempanel = this;\n if (_this.itemgrid) {\n // _this.itemgrid.footer.onClick('first');\n }\n}"
384 "xtype" : "GridPanel",
385 "fitContainer" : true,
387 "tableName" : "itemloc",
391 "|rowdblclick" : "function (_self, rowIndex, e)\n{ \n var rec =this.getDataSource().getAt(rowIndex);\n\n var loc = _this.grid.selModel.getSelected();\n \n var dt = _this.dateTo.getValue();\n \n Pman.Dialog.XtupleInvHistory.show({\n itemsite_item_id_item_number : rec.data.itemsite_item_id_item_number,\n \n location_name : loc.data.location_name,\n location_descrip : loc.data.location_descrip,\n \n invhist_transdate : typeof(dt) == 'string' ? dt : dt.format('Y-m-d')\n }); \n \n \n\n}\n",
392 "cellclick" : "function (_self, row, col, e)\n{\n\n if ('netsuite_qty' == this.colModel.getDataIndex(col)) {\n var d = this.ds.getAt(row); \n var loc = _this.grid.selModel.getSelected();\n \n new Pman.Download({\n url: baseURL + '/Xtuple/NetsuiteFix/StockCheck',\n params : {\n item_id : d.data.itemsite_item_id,\n location_id : loc.data.location_id\n }\n \n \n });\n }\n}",
393 "|render" : "function() \n{\n _this.itemgrid = this; \n //_this.dialog = Pman.Dialog.FILL_IN\n if (_this.itempanel.active) {\n // this.footer.onClick('first');\n }\n}"
395 "autoExpandColumn" : "itemsite_item_id_item_number",
398 "$ xns" : "Roo.grid",
403 "beforeload" : "function (_self, o)\n{\n var l = _this.grid.selModel ? _this.grid.selModel.getSelected() : false;\n if (!l) {\n return false;\n }\n o.params.location_id = l.data.location_id;\n o.params._as_of = _this.dateTo.getValue();\n o.params._with_stock_and_value = 1;\n o.params._viewtype = _this.itemgrid.viewtype;\n}"
407 "$ sortInfo" : "{ field : 'itemsite_item_id_item_number', direction: 'ASC' }",
408 "$ xns" : "Roo.data",
409 "* prop" : "dataSource",
412 "$ url" : "baseURL + '/Roo/itemsite.php'",
414 "xtype" : "HttpProxy",
416 "$ xns" : "Roo.data",
422 "xtype" : "JsonReader",
423 "$ xns" : "Roo.data",
424 "$ fields" : "[\n {\n 'name': 'itemloc_id',\n 'type': 'int'\n },\n {\n 'name': 'itemloc_itemsite_id',\n 'type': 'int'\n },\n {\n 'name': 'itemloc_location_id',\n 'type': 'int'\n },\n {\n 'name': 'itemloc_qty',\n 'type': 'float'\n },\n {\n 'name': 'itemloc_expiration',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'itemloc_consolflag',\n 'type': 'int'\n },\n {\n 'name': 'itemloc_ls_id',\n 'type': 'int'\n },\n {\n 'name': 'itemloc_warrpurc',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n }\n]",
426 "totalProperty" : "total"
432 "xtype" : "PagingToolbar",
433 "emptyMsg" : "No itemloc found",
435 "displayMsg" : "{0} - {1} of {2}",
436 "displayInfo" : true,
440 "xtype" : "ColumnModel",
443 "$ renderer" : "function(v) { return String.format('{0}', v); }",
444 "$ xns" : "Roo.grid",
445 "* prop" : "colModel[]",
446 "dataIndex" : "itemsite_item_id_item_number"
450 "xtype" : "ColumnModel",
453 "$ renderer" : "function(v) { return String.format('{0}', (v*1).toFixed(0)); }",
454 "$ xns" : "Roo.grid",
455 "* prop" : "colModel[]",
456 "dataIndex" : "itemsite_qty"
461 "xtype" : "ColumnModel",
464 "$ renderer" : "function(v,x,r) { \n var f= '<span style=\"color:blue;text-decoration:underline;cursor:pointer;\">{0}</span>';\n if ((r.data.itemsite_qty) *1 != (v*1)) {\n f = '<span style=\"color:red;font-weight:bold;text-decoration:underline;cursor:pointer;\">{0}</span>';\n }\n return String.format(f, (v*1).toFixed(0) ); \n}",
465 "$ xns" : "Roo.grid",
466 "* prop" : "colModel[]",
467 "dataIndex" : "netsuite_qty"
471 "xtype" : "ColumnModel",
474 "$ renderer" : "function(v) { return Roo.util.Format.usMoney(v); }",
475 "$ xns" : "Roo.grid",
476 "* prop" : "colModel[]",
477 "dataIndex" : "itemsite_value"