3 "name": "Pman.Tab.XtuplePriceLists",
4 "parent": "Pman.Tab.XtupleManage",
5 "title": "Pman.Tab.XtuplePriceLists",
6 "path": "/home/edward/gitlive/web.xtuple/Pman/Xtuple/Pman.Tab.XtuplePriceLists.bjs",
13 "title": "Price List",
14 "xtype": "NestedLayoutPanel",
19 "xtype": "BorderLayout",
24 "xtype": "LayoutRegion",
30 "xtype": "LayoutRegion",
35 "|activate": "function() {\n _this.panel = this;\n if (_this.grid) {\n _this.grid.footer.onClick('first');\n }\n}"
41 "tableName": "ipshead",
42 "title": "Price Lists",
48 "|render": "function() \n{\n _this.grid = this; \n _this.dialog = Pman.Dialog.XtuplePriceList\n if (_this.panel.active) {\n this.footer.onClick('first');\n }\n}",
49 "|rowdblclick": "function (_self, rowIndex, e)\n{\n if (!_this.dialog) return;\n _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {\n _this.grid.footer.onClick('first');\n }); \n \n}\n"
52 "autoExpandColumn": "ipshead_descrip",
60 "xtype": "RowSelectionModel",
64 "*prop": "dataSource",
67 "|sortInfo": "{ field : 'ipshead_name', direction: 'ASC' }",
74 "|url": "baseURL + '/Roo/ipshead.php'",
79 "xtype": "JsonReader",
80 "totalProperty": "total",
84 "|fields": "[\n {\n 'name': 'ipshead_id',\n 'type': 'int'\n },\n {\n 'name': 'ipshead_name',\n 'type': 'string'\n },\n {\n 'name': 'ipshead_descrip',\n 'type': 'string'\n },\n {\n 'name': 'ipshead_effective',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'ipshead_expires',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'ipshead_curr_id',\n 'type': 'int'\n },\n {\n 'name': 'ipshead_updated',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'ipshead_curr_id_curr_id',\n 'type': 'int'\n },\n {\n 'name': 'ipshead_curr_id_curr_base',\n 'type': 'int'\n },\n {\n 'name': 'ipshead_curr_id_curr_name',\n 'type': 'string'\n },\n {\n 'name': 'ipshead_curr_id_curr_symbol',\n 'type': 'string'\n },\n {\n 'name': 'ipshead_curr_id_curr_abbr',\n 'type': 'string'\n }\n]"
91 "displayMsg": "Displaying ipshead{0} - {1} of {2}",
92 "emptyMsg": "No ipshead found",
94 "xtype": "PagingToolbar",
104 "click": "function (_self, e)\n{\n new Pman.Download({\n method: 'GET',\n url : baseURL + '/Roo/Ipsiteminfo',\n params : {\n _pricegrid : 1\n }\n });\n}"
106 "text": "Download Price Matrix",
108 "|xns": "Roo.Toolbar"
112 "click": "function (_self, e)\n{\n Pman.Dialog.Image.show(\n {\n _url : baseURL+'/Xtuple/Pricing'\n \n },\n function (data) {\n var msg = [];\n if (data.deleted) {\n msg.push(\"Deleted \" + data.deleted + \" Price(s)\");\n }\n if (data.updated) {\n msg.push(\"Updated \" + data.updated + \" Price(s)\");\n } \n if (data.inserted) {\n msg.push(\"Added \" + data.inserted + \" Price(s)\");\n }\n if (!msg.length) {\n msg.push(\"No data changed\");\n }\n Roo.MessageBox.alert(\"Notice\", msg.join(\"\\n\"));\n\n }\n );\n}"
114 "text": "Upload Price Matrix",
116 "|xns": "Roo.Toolbar"
119 "|xns": "Roo.Toolbar",
125 "cls": "x-btn-text-icon",
126 "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'",
128 "|click": "function()\n{\n if (!_this.dialog) return;\n _this.dialog.show( { id : 0 } , function() {\n _this.grid.footer.onClick('first');\n }); \n}\n"
130 "|xns": "Roo.Toolbar"
134 "cls": "x-btn-text-icon",
135 "|icon": "rootURL + '/Pman/templates/images/trash.gif'",
138 "|click": "function()\n{\n Pman.genericDelete(_this, 'ipshead'); \n}\n "
140 "|xns": "Roo.Toolbar"
145 "*prop": "colModel[]",
146 "dataIndex": "ipshead_curr_id_curr_name",
147 "header": "Ipshead curr",
150 "xtype": "ColumnModel",
151 "|renderer": "function(v) { return String.format('{0}', v); }",
155 "*prop": "colModel[]",
156 "dataIndex": "ipshead_name",
157 "header": "Ipshead name",
160 "xtype": "ColumnModel",
161 "|renderer": "function(v) { return String.format('{0}', v); }",
165 "xtype": "ColumnModel",
166 "header": "Ipshead descrip",
168 "dataIndex": "ipshead_descrip",
169 "|renderer": "function(v) { return String.format('{0}', v); }",
171 "*prop": "colModel[]"
174 "xtype": "ColumnModel",
175 "header": "Ipshead effective",
177 "dataIndex": "ipshead_effective",
178 "|renderer": "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
180 "*prop": "colModel[]"
183 "*prop": "colModel[]",
184 "dataIndex": "ipshead_expires",
185 "header": "Ipshead expires",
187 "xtype": "ColumnModel",
188 "|renderer": "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
192 "xtype": "ColumnModel",
193 "header": "Ipshead updated",
195 "dataIndex": "ipshead_updated",
196 "|renderer": "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
198 "*prop": "colModel[]"
206 "|activate": "function() {\n _this.ipanel = this;\n if (_this.igrid) {\n // _this.igrid.footer.onClick('first');\n }\n}"
209 "fitContainer": true,
214 "xtype": "GridPanel",
219 "|render": "function() \n{\n _this.igrid = this; \n //_this.dialog = Pman.Dialog.FILL_IN\n if (_this.ipanel.active) {\n //this.footer.onClick('first');\n }\n}",
220 "cellclick": "function (_self, row, col, e)\n{\n var di = _this.grid.colModel.getDataIndex(col);\n \n var rec = _this.grid.ds.getAt(row);\n \n if(di == 'item_image_filename'){\n if(!rec.data.item_image_id){\n return;\n }\n var u = baseURL;\n if(rec.data.item_image_from_hk){\n u = u.split('/');\n u.pop();\n u = u.join('/') + '/hk.php';\n }\n Pman.download( {\n url: u + '/Images/Download/' + rec.data.item_image_id + '/' + rec.data.item_image_filename\n });\n return;\n }\n \n if (di == 'item_active') {\n \n var nv = rec.data.item_active ? 0 : 1;\n new Pman.Request({\n mask : 'Saving',\n url : baseURL + '/Roo/Item',\n params : {\n item_id : rec.data.item_id,\n item_active : nv\n },\n success : function() {\n rec.set('item_active', nv);\n }\n });\n return;\n \n \n }\n \n if(di == 'itemsrc_active'){\n if(!rec.data.itemsrc_active){\n Roo.MessageBox.alert('Error','Please edit it on Xtuple tool');\n return;\n }\n if(rec.data.itemsrc_active){\n Roo.MessageBox.confirm(\"Confirm\", \"Are you sure this product is no longer purchased\",\n function (res) {\n if(res!='yes') {\n return;\n }\n rec.commit();\n });\n }\n }\n \n _this.locgrid.footer.onClick('first');\n \n \n \n \n}",
221 "afteredit": "function (e)\n{\n \n \n Roo.log(e);\n new Pman.Request({\n url : baseURL +'/Roo/Charass',\n params : {\n charass_char_id_char_name : e.field.replace(/^item_char_/,'').toUpperCase(),\n charass_value : e.value,\n charass_target_type : 'I',\n charass_default : 1,\n charass_target_id : e.record.data.item_id\n },\n method : 'POST'\n });\n \n \n e.record.commit();\n \n \n \n}",
222 "rowdblclick": "function (_self, rowIndex, e)\n{\n if (!_this.dialog) return;\n _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {\n _this.grid.footer.onClick('first');\n }); \n}\n"
225 "autoExpandColumn": "item_descrip1",
228 "xtype": "EditorGrid",
233 "beforeload": "function (_self, o)\n{\n o.params = o.params || {}\n \n var p = _this.grid.getSelectionModel().getSelected();\n \n if(!p || p.ipshead_id * 1 < 1){\n this.ds.removeAll();\n return;\n }\n \n o.params.item_active = 1;\n\n}",
234 "update": "function (_self, record, operation)\n{\n if(operation != 'commit'){\n return;\n }\n \n var nv = record.data.itemsrc_active ? 0 : 1;\n new Pman.Request({\n mask : 'Saving',\n url : baseURL + '/Roo/Itemsrc',\n params : {\n _update_by_item : 1,\n item_id : record.data.item_id,\n itemsrc_active : nv\n },\n success : function(res) {\n record.set('itemsrc_active', nv);\n }\n });\n}"
236 "*prop": "dataSource",
239 "|sortInfo": "{ field : 'item_number', direction: 'ASC' }",
244 "xtype": "HttpProxy",
246 "|url": "baseURL + '/Roo/item.php'",
251 "xtype": "JsonReader",
252 "totalProperty": "total",
256 "|fields": "[\n {\n 'name': 'item_id',\n 'type': 'int'\n },\n {\n 'name': 'item_number',\n 'type': 'string'\n },\n {\n 'name': 'item_descrip1',\n 'type': 'string'\n },\n {\n 'name': 'item_descrip2',\n 'type': 'string'\n },\n {\n 'name': 'item_classcode_id',\n 'type': 'int'\n },\n {\n 'name': 'item_picklist',\n 'type': 'int'\n },\n {\n 'name': 'item_comments',\n 'type': 'string'\n },\n {\n 'name': 'item_sold',\n 'type': 'int'\n },\n {\n 'name': 'item_fractional',\n 'type': 'int'\n },\n {\n 'name': 'item_active',\n 'type': 'int'\n },\n {\n 'name': 'item_type',\n 'type': 'string'\n },\n {\n 'name': 'item_prodweight',\n 'type': 'float'\n },\n {\n 'name': 'item_packweight',\n 'type': 'float'\n },\n {\n 'name': 'item_prodcat_id',\n 'type': 'int'\n },\n {\n 'name': 'item_exclusive',\n 'type': 'int'\n },\n {\n 'name': 'item_listprice',\n 'type': 'float'\n },\n {\n 'name': 'item_config',\n 'type': 'int'\n },\n {\n 'name': 'item_extdescrip',\n 'type': 'string'\n },\n {\n 'name': 'item_upccode',\n 'type': 'string'\n },\n {\n 'name': 'item_maxcost',\n 'type': 'float'\n },\n {\n 'name': 'item_inv_uom_id',\n 'type': 'int'\n },\n {\n 'name': 'item_price_uom_id',\n 'type': 'int'\n },\n {\n 'name': 'item_warrdays',\n 'type': 'int'\n },\n {\n 'name': 'item_freightclass_id',\n 'type': 'int'\n },\n {\n 'name': 'item_tax_recoverable',\n 'type': 'int'\n },\n {\n 'name': 'item_price_uom_id_uom_id',\n 'type': 'int'\n },\n {\n 'name': 'item_price_uom_id_uom_name',\n 'type': 'string'\n },\n {\n 'name': 'item_price_uom_id_uom_descrip',\n 'type': 'string'\n },\n {\n 'name': 'item_price_uom_id_uom_item_weight',\n 'type': 'int'\n },\n {\n 'name': 'item_inv_uom_id_uom_id',\n 'type': 'int'\n },\n {\n 'name': 'item_inv_uom_id_uom_name',\n 'type': 'string'\n },\n {\n 'name': 'item_inv_uom_id_uom_descrip',\n 'type': 'string'\n },\n {\n 'name': 'item_inv_uom_id_uom_item_weight',\n 'type': 'int'\n },\n {\n 'name': 'item_freightclass_id_freightclass_id',\n 'type': 'int'\n },\n {\n 'name': 'item_freightclass_id_freightclass_code',\n 'type': 'string'\n },\n {\n 'name': 'item_freightclass_id_freightclass_descrip',\n 'type': 'string'\n },\n {\n 'name': 'item_classcode_id_classcode_id',\n 'type': 'int'\n },\n {\n 'name': 'item_classcode_id_classcode_code',\n 'type': 'string'\n },\n {\n 'name': 'item_classcode_id_classcode_descrip',\n 'type': 'string'\n },\n {\n 'name': 'item_classcode_id_classcode_mfg',\n 'type': 'int'\n },\n {\n 'name': 'item_classcode_id_classcode_creator',\n 'type': 'string'\n },\n {\n 'name': 'item_classcode_id_classcode_created',\n 'type': 'date'\n },\n {\n 'name': 'item_classcode_id_classcode_modifier',\n 'type': 'string'\n },\n {\n 'name': 'item_classcode_id_classcode_modified',\n 'type': 'date'\n },\n {\n 'name': 'item_classcode_id_classcode_type',\n 'type': 'string'\n }\n]"
267 "render": "function (_self)\n{\n _this.brandSel = _self;\n}",
268 "select": "function (combo, record, index)\n{\n _this.grid.footer.onClick('first');\n}"
272 "displayField": "charass_value",
274 "forceSelection": true,
276 "loadingText": "Searching...",
279 "qtip": "Select Brand",
280 "queryParam": "query[charass_value]",
281 "selectOnFocus": true,
282 "tpl": "<div class=\"x-grid-cell-text x-btn button\"><b>{charass_value}</b> </div>",
283 "triggerAction": "all",
290 "|beforeload": "function (_self, o)\n{\n o.params = o.params || {};\n // staff can see all logs, other companies can only see their own.\n // look for all of the charass 's with the same type= eg. brand.\n \n o.params.charass_char_id_char_name = 'BRAND';\n o.params.charass_target_type ='I';\n o.params._distinct = 'charass_value';\n o.params._columns = 'charass_value';\n\n}"
295 "|sortInfo": "{ field : 'charass_value' , direction : 'ASC' }",
301 "xtype": "HttpProxy",
302 "|url": "baseURL + '/Roo/Charass.php'",
307 "xtype": "JsonReader",
308 "totalProperty": "total",
312 "|fields": "[\n {\n 'name': 'id',\n 'type': 'int'\n },\n {\n 'name': 'person_name',\n 'type': 'string'\n },\n {\n 'name': 'event_when',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'action',\n 'type': 'string'\n },\n {\n 'name': 'ipaddr',\n 'type': 'string'\n },\n {\n 'name': 'on_id',\n 'type': 'int'\n },\n {\n 'name': 'on_table',\n 'type': 'string'\n },\n {\n 'name': 'person_id',\n 'type': 'int'\n },\n {\n 'name': 'remarks',\n 'type': 'string'\n },\n {\n 'name': 'person_id_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_office_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_name',\n 'type': 'string'\n },\n {\n 'name': 'person_id_phone',\n 'type': 'string'\n },\n {\n 'name': 'person_id_fax',\n 'type': 'string'\n },\n {\n 'name': 'person_id_email',\n 'type': 'string'\n },\n {\n 'name': 'person_id_company_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_role',\n 'type': 'string'\n },\n {\n 'name': 'person_id_active',\n 'type': 'int'\n },\n {\n 'name': 'person_id_remarks',\n 'type': 'string'\n },\n {\n 'name': 'person_id_passwd',\n 'type': 'string'\n },\n {\n 'name': 'person_id_owner_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_lang',\n 'type': 'string'\n },\n {\n 'name': 'person_id_no_reset_sent',\n 'type': 'int'\n },\n {\n 'name': 'person_id_action_type',\n 'type': 'string'\n },\n {\n 'name': 'person_id_project_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_deleted_by',\n 'type': 'int'\n },\n {\n 'name': 'person_id_deleted_dt',\n 'type': 'date'\n }\n]"
320 "render": "function (_self)\n{\n _this.search = _self;\n}",
321 "specialkey": "function (_self, e)\n{\n _this.grid.footer.onClick('first');\n}"
323 "xtype": "TextField",
328 "|click": "function (_self, e)\n{\n_this.grid.footer.onClick('first');\n}"
332 "|icon": "rootURL + '/Pman/templates/images/search.gif'",
333 "|xns": "Roo.Toolbar"
337 "|click": "function (_self, e)\n{\n _this.search.setValue('');\n \n\n \n _this.grid.footer.onClick('first');\n}"
341 "|icon": "rootURL + '/Pman/templates/images/edit-clear.gif'",
342 "|xns": "Roo.Toolbar"
345 "|xns": "Roo.Toolbar",
350 "toggle": "function (_self, pressed)\n{\n\n this.setText(pressed ? \"Hide Inactive\" : \"Show Inactive\");\n (function() { _this.grid.footer.onClick('first'); }).defer(100);\n}",
351 "render": "function (_self)\n{\n _this.active = _self;\n}"
353 "enableToggle": true,
354 "text": "Show Inactive",
356 "|xns": "Roo.Toolbar"
359 "|xns": "Roo.Toolbar",
363 "text": "Report start :",
365 "|xns": "Roo.Toolbar"
369 "render": "function (_self)\n{\n _this.dateFrom = _self;\n}"
373 "xtype": "DateField",
374 "|value": "(function() { return (new Date()).format('Y') + '-01-01'; })()",
379 "render": "function (_self)\n{\n _this.datespan = _self;\n}"
382 "displayField": "fname",
384 "fieldLabel": "Status",
385 "hiddenName": "cm_status",
388 "name": "cm_status_name",
389 "triggerAction": "all",
391 "valueField": "ftype",
398 "xtype": "SimpleStore",
399 "|data": "[ \n [ '1', \"Single Month Sales\"],\n [ '3', \"Quarter Sales\"],\n [ '6', \"Half year Sales\"] ,\n [ '12', \"Full Year Sales\"] \n]\n",
400 "|fields": "[ 'ftype', 'fname']",
407 "click": "function (_self, e)\n{\n if (!_this.brandSel.getValue().length) {\n Roo.MessageBox.alert(\"Error\", \"Select a brand to download\");\n return;\n }\n\n new Pman.Download({\n url : baseURL + '/Xtuple/Reports/SalesByCountryItemYear',\n params: { \n date_from : _this.dateFrom.getValue(),\n brand : _this.brandSel.getValue(),\n span : _this.datespan.getValue()\n }\n });\n \n\n}"
409 "text": "Download Sales Report",
411 "|xns": "Roo.Toolbar"
417 "xtype": "PagingToolbar",
420 "displayMsg": "Displaying item{0} - {1} of {2}",
421 "emptyMsg": "No item found",
426 "click": "function (_self, e)\n{\n new Pman.Download({\n method: 'GET',\n url : baseURL + '/Roo/item',\n params : {\n _costgrid : 1\n }\n });\n}"
428 "text": "Download Standard costs",
430 "|xns": "Roo.Toolbar"
434 "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}"
436 "text": "Upload new products and costs",
438 "|xns": "Roo.Toolbar"
442 "click": "function (_self, e)\n{\n \n var sel = _this.grid.selModel.getSelectedCell();\n if (!sel) {\n Roo.MessageBox.alert(\"Error\", \"Select a row\");\n return;\n }\n \n var rec = _this.grid.ds.getAt(sel[0]);\n if(rec.data.item_id * 1 < 1){\n return;\n }\n \n Pman.Dialog.Image.show({\n id : rec.data.item_image_id ? rec.data.item_image_id : 0,\n onid : rec.data.item_id,\n ontable : 'Item'\n }, function(data) {\n if (data) {\n _this.grid.footer.onClick('first');\n \n }\n \n });\n}"
444 "text": "Upload an image",
446 "|xns": "Roo.Toolbar"
450 "click": "function (_self, e)\n{\n Roo.MessageBox.progress (\"Syncing Stock\", \"Sending\");\n \n var offset = 0;\n \n function runSync() {\n \n new Pman.Request( {\n url : baseURL+'/Roo/Item',\n method : 'GET',\n params : {\n _syncFromHK : 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 }\n runSync();\n}"
452 "text": "Sync Product Data from HK",
454 "|hidden": "(function() {\n\n return baseURL.match(/hk\\.php$/) ? true : false;\n})()",
455 "|xns": "Roo.Toolbar"
460 "*prop": "colModel[]",
461 "dataIndex": "item_image_filename",
462 "header": "Image ( Click to download )",
464 "xtype": "ColumnModel",
465 "|renderer": "function(v,x,r)\r\n{\n if(!v){\n return '';\n }\n if(r.data.item_image_from_hk){\n var url = baseURL.split('/');\n url.pop();\n url = url.join('/');\n return '<img src=\"' + url + '/hk.php/Images/Thumb/150x150/' + r.data.item_image_id + '/' + v + '\" width=\"150\" height=\"150\" />'; \n }\r\n return '<img src=\"' + baseURL + '/Images/Thumb/150x150/' + r.data.item_image_id + '/' + v + '\" width=\"150\" height=\"150\" />';\r\n}",
469 "*prop": "colModel[]",
470 "dataIndex": "item_char_brand",
474 "xtype": "ColumnModel",
475 "|renderer": "function(v) { return String.format('{0}', v); }",
480 "xtype": "GridEditor",
487 "displayField": "charass_value",
489 "forceSelection": false,
491 "loadingText": "Searching...",
494 "qtip": "Select Brand",
495 "queryParam": "query[charass_value]",
496 "selectOnFocus": true,
497 "tpl": "<div class=\"x-grid-cell-text x-btn button\"><b>{charass_value}</b> </div>",
498 "triggerAction": "all",
505 "|beforeload": "function (_self, o)\n{\n o.params = o.params || {};\n // staff can see all logs, other companies can only see their own.\n // look for all of the charass 's with the same type= eg. brand.\n \n o.params.charass_char_id_char_name = 'BRAND';\n o.params.charass_target_type ='I';\n o.params._distinct = 'charass_value';\n o.params._columns = 'charass_value';\n\n}"
510 "|sortInfo": "{ field : 'charass_value' , direction : 'ASC' }",
516 "xtype": "HttpProxy",
517 "|url": "baseURL + '/Roo/Charass.php'",
522 "xtype": "JsonReader",
523 "totalProperty": "total",
527 "|fields": "[\n {\n 'name': 'id',\n 'type': 'int'\n },\n {\n 'name': 'person_name',\n 'type': 'string'\n },\n {\n 'name': 'event_when',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'action',\n 'type': 'string'\n },\n {\n 'name': 'ipaddr',\n 'type': 'string'\n },\n {\n 'name': 'on_id',\n 'type': 'int'\n },\n {\n 'name': 'on_table',\n 'type': 'string'\n },\n {\n 'name': 'person_id',\n 'type': 'int'\n },\n {\n 'name': 'remarks',\n 'type': 'string'\n },\n {\n 'name': 'person_id_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_office_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_name',\n 'type': 'string'\n },\n {\n 'name': 'person_id_phone',\n 'type': 'string'\n },\n {\n 'name': 'person_id_fax',\n 'type': 'string'\n },\n {\n 'name': 'person_id_email',\n 'type': 'string'\n },\n {\n 'name': 'person_id_company_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_role',\n 'type': 'string'\n },\n {\n 'name': 'person_id_active',\n 'type': 'int'\n },\n {\n 'name': 'person_id_remarks',\n 'type': 'string'\n },\n {\n 'name': 'person_id_passwd',\n 'type': 'string'\n },\n {\n 'name': 'person_id_owner_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_lang',\n 'type': 'string'\n },\n {\n 'name': 'person_id_no_reset_sent',\n 'type': 'int'\n },\n {\n 'name': 'person_id_action_type',\n 'type': 'string'\n },\n {\n 'name': 'person_id_project_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_deleted_by',\n 'type': 'int'\n },\n {\n 'name': 'person_id_deleted_dt',\n 'type': 'date'\n }\n]"
538 "*prop": "colModel[]",
539 "dataIndex": "item_char_productgroup",
540 "header": "Product Group",
542 "xtype": "ColumnModel",
543 "|renderer": "function(v) { return String.format('{0}', v); }",
548 "xtype": "GridEditor",
555 "displayField": "charass_value",
557 "forceSelection": false,
559 "loadingText": "Searching...",
562 "qtip": "Select Brand",
563 "queryParam": "query[charass_value]",
564 "selectOnFocus": true,
565 "tpl": "<div class=\"x-grid-cell-text x-btn button\"><b>{charass_value}</b> </div>",
566 "triggerAction": "all",
573 "|beforeload": "function (_self, o)\n{\n o.params = o.params || {};\n // staff can see all logs, other companies can only see their own.\n // look for all of the charass 's with the same type= eg. brand.\n \n o.params.charass_char_id_char_name = 'PRODUCTGROUP';\n o.params.charass_target_type ='I';\n o.params._distinct = 'charass_value';\n o.params._columns = 'charass_value'; \n}"
578 "|sortInfo": "{ field : 'charass_value' , direction : 'ASC' }",
584 "xtype": "HttpProxy",
585 "|url": "baseURL + '/Roo/Charass.php'",
590 "xtype": "JsonReader",
591 "totalProperty": "total",
595 "|fields": "[\n {\n 'name': 'id',\n 'type': 'int'\n },\n {\n 'name': 'person_name',\n 'type': 'string'\n },\n {\n 'name': 'event_when',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'action',\n 'type': 'string'\n },\n {\n 'name': 'ipaddr',\n 'type': 'string'\n },\n {\n 'name': 'on_id',\n 'type': 'int'\n },\n {\n 'name': 'on_table',\n 'type': 'string'\n },\n {\n 'name': 'person_id',\n 'type': 'int'\n },\n {\n 'name': 'remarks',\n 'type': 'string'\n },\n {\n 'name': 'person_id_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_office_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_name',\n 'type': 'string'\n },\n {\n 'name': 'person_id_phone',\n 'type': 'string'\n },\n {\n 'name': 'person_id_fax',\n 'type': 'string'\n },\n {\n 'name': 'person_id_email',\n 'type': 'string'\n },\n {\n 'name': 'person_id_company_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_role',\n 'type': 'string'\n },\n {\n 'name': 'person_id_active',\n 'type': 'int'\n },\n {\n 'name': 'person_id_remarks',\n 'type': 'string'\n },\n {\n 'name': 'person_id_passwd',\n 'type': 'string'\n },\n {\n 'name': 'person_id_owner_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_lang',\n 'type': 'string'\n },\n {\n 'name': 'person_id_no_reset_sent',\n 'type': 'int'\n },\n {\n 'name': 'person_id_action_type',\n 'type': 'string'\n },\n {\n 'name': 'person_id_project_id',\n 'type': 'int'\n },\n {\n 'name': 'person_id_deleted_by',\n 'type': 'int'\n },\n {\n 'name': 'person_id_deleted_dt',\n 'type': 'date'\n }\n]"
606 "*prop": "colModel[]",
607 "dataIndex": "item_number",
610 "xtype": "ColumnModel",
611 "|renderer": "function(v) { return String.format('{0}', v); }",
615 "*prop": "colModel[]",
616 "dataIndex": "item_descrip1",
617 "header": "Description",
619 "xtype": "ColumnModel",
620 "|renderer": "function(v) { return String.format('{0}', v); }",
624 "*prop": "colModel[]",
625 "dataIndex": "itemsrc_active",
626 "header": "Purchased",
628 "xtype": "ColumnModel",
629 "|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 }",
633 "*prop": "colModel[]",
634 "dataIndex": "item_sold",
635 "header": "is Sold?",
637 "xtype": "ColumnModel",
638 "|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 }",
642 "*prop": "colModel[]",
643 "dataIndex": "item_active",
644 "header": "is Active?",
646 "xtype": "ColumnModel",
647 "|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 }",
651 "*prop": "colModel[]",
652 "dataIndex": "last_purchase_price",
653 "header": "Last purchase price",
655 "xtype": "ColumnModel",
656 "|renderer": "function(v,x,r) {\n\n return String.format('{0}{1}', r.data.last_purchase_price_curr_name, Roo.util.Format.number(v,2)) ; \n \n }",
660 "*prop": "colModel[]",
661 "dataIndex": "item_type",
662 "header": "Item type",
664 "xtype": "ColumnModel",
665 "|renderer": "function(v) { return String.format('{0}', v); }",
669 "*prop": "colModel[]",
670 "dataIndex": "item_prodcat_id_prodcat_code",
671 "header": "Item prodcat",
673 "xtype": "ColumnModel",
674 "|renderer": "function(v) { return String.format('{0}', v); }",
678 "*prop": "colModel[]",
680 "dataIndex": "item_actcost",
683 "xtype": "ColumnModel",
684 "|renderer": "function(v,x,r) {\n\n return String.format('{0}{1}', r.data.item_curr_name, Roo.util.Format.number(v,2)) ; \n \n }",
688 "*prop": "colModel[]",
690 "dataIndex": "item_base_cost",
691 "header": "Cost (base)",
693 "xtype": "ColumnModel",
694 "|renderer": "function(v,x,r) {\n\n return String.format('{0}{1}', r.data.item_base_curr, Roo.util.Format.number(v,2)) ; \n \n }",