{
"*prop": "east",
"split": true,
- "width": 200,
+ "width": 350,
"xtype": "LayoutRegion",
"|xns": "Roo"
},
"|xns": "Roo.grid",
"items": [
{
+ "listeners": {
+ "afterselectionchange": "function (_self)\n{\n _this.igrid.footer.onClick('first');\n}"
+ },
"*prop": "sm",
"singleSelect": true,
"xtype": "RowSelectionModel",
{
"listeners": {
"|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}",
- "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}",
- "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}",
- "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"
+ "afteredit": "function (e)\n{\n if(e.value == e.originalValue){\n return false; \n }\n \n var p = _this.grid.getSelectionModel().getSelected();\n \n if(!p || p.data.ipshead_id * 1 < 1){\n Roo.MessageBox.alert('Error','Please select a price list');\n return false; \n }\n \n new Pman.Request({\n url : baseURL +'/Roo/Item',\n method : 'POST',\n marks : 'Posting',\n params : {\n update_ipshead : 1,\n ipshead_id : p.data.ipshead_id,\n item_id : e.record.data.item_id,\n _price : e.value,\n },\n success : function() {\n _this.igrid.footer.onClick('refresh');\n }\n \n });\n \n}",
+ "beforeedit": "function (e)\n{\n if(e.field != 'ipshead_price'){\n return false;\n }\n\n}"
},
"*prop": "grid",
- "autoExpandColumn": "item_descrip1",
+ "autoExpandColumn": "item_number",
"clicksToEdit": 1,
"loadMask": true,
"xtype": "EditorGrid",
"items": [
{
"listeners": {
- "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.removeAll();\n return;\n }\n \n o.params.item_active = 1;\n\n}",
- "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}"
+ "beforeload": "function (_self, o)\n{\n o.params = o.params || {}\n \n var p = _this.grid.getSelectionModel().getSelected();\n \n if(!p || p.data.ipshead_id * 1 < 1){\n this.removeAll();\n return false;\n }\n \n //o.params.item_active = 1;\n o.params._ipshead_price = 1;\n o.params._ipshead_id = p.data.ipshead_id;\n\n}"
},
"*prop": "dataSource",
"remoteSort": true,
"|xns": "Roo.data"
},
{
- "|xns": "Roo.data",
- "xtype": "JsonReader",
- "totalProperty": "total",
- "root": "data",
"*prop": "reader",
"id": "id",
- "|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]"
+ "root": "data",
+ "totalProperty": "total",
+ "xtype": "JsonReader",
+ "|fields": "[\n {\n 'name': 'item_id',\n 'type': 'int'\n },\n {\n 'name': 'item_number',\n 'type': 'string'\n }\n]",
+ "|xns": "Roo.data"
}
]
},
"emptyMsg": "",
"pageSize": 25,
"xtype": "PagingToolbar",
- "|xns": "Roo",
- "items": [
- {
- "listeners": {
- "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}"
- },
- "text": "Download Standard costs",
- "xtype": "Button",
- "|xns": "Roo.Toolbar"
- },
- {
- "listeners": {
- "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}"
- },
- "text": "Upload new products and costs",
- "xtype": "Button",
- "|xns": "Roo.Toolbar"
- },
- {
- "listeners": {
- "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}"
- },
- "text": "Upload an image",
- "xtype": "Button",
- "|xns": "Roo.Toolbar"
- },
- {
- "listeners": {
- "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}"
- },
- "text": "Sync Product Data from HK",
- "xtype": "Button",
- "|hidden": "(function() {\n\n return baseURL.match(/hk\\.php$/) ? true : false;\n})()",
- "|xns": "Roo.Toolbar"
- }
- ]
+ "|xns": "Roo"
},
{
"*prop": "colModel[]",
"dataIndex": "item_number",
"header": "Number",
- "width": 100,
+ "width": 150,
"xtype": "ColumnModel",
"|renderer": "function(v) { return String.format('{0}', v); }",
"|xns": "Roo.grid"
{
"*prop": "colModel[]",
"align": "right",
- "dataIndex": "item_actcost",
- "header": "Cost",
- "width": 75,
+ "dataIndex": "ipshead_price",
+ "header": "Price",
+ "width": 100,
"xtype": "ColumnModel",
- "|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 }",
- "|xns": "Roo.grid"
+ "|renderer": "function(v) { return String.format('{0}', Roo.util.Format.number(v*1,2)); }",
+ "|xns": "Roo.grid",
+ "items": [
+ {
+ "|xns": "Roo.grid",
+ "xtype": "GridEditor",
+ "*prop": "editor",
+ "items": [
+ {
+ "*prop": "field",
+ "decimalPrecision": 2,
+ "minValue": 1,
+ "style": "text-align:right",
+ "xtype": "NumberField",
+ "|xns": "Roo.form"
+ }
+ ]
+ }
+ ]
}
]
}