Pman.Tab.XtupleMetric.bjs
[Pman.Xtuple] / Pman.Tab.XtupleMetric.bjs
1 {
2     "id": "roo-file-374",
3     "name": "Pman.Tab.XtupleMetric",
4     "parent": "Pman.Admin",
5     "title": "",
6     "path": "/home/edward/gitlive/web.xtuple/Pman/Xtuple/Pman.Tab.XtupleMetric.bjs",
7     "items": [
8         {
9             "listeners": {
10                 "|activate": "function() {\n    _this.panel = this;\n    \n    \n    var pid = _this.form.findField('pohead_id').getValue() * 1;\n    if (pid < 1) {\n        Roo.MessageBox.alert(\"Save First\", \"Please save the purchase order first, before adding items\");\n        _this.dialog.layout.getRegion('center').showPanel(0);\n        return;\n    }\n    \n    if (_this.grid) {\n        _this.grid.footer.onClick('first');\n    }\n}",
11                 "deactivate": "function (_self)\n{\n     if(_this.grid){\n        var ar = [];\n\n        _this.grid.ds.each(function(r) {\n            ar.push({\n                poitem_id : r.data.poitem_id,\n                poitem_itemsite_id : r.data.poitem_itemsite_id,\n                poitem_unitprice : r.data.poitem_unitprice,\n                poitem_qty_ordered : r.data.poitem_qty_ordered\n            });\n                \n        });\n        \n        _this.form.findField('items').setValue(JSON.stringify(ar));\n    }\n    _this.dontClose = true;\n    _this.form.doAction(\"submit\");\n\n}"
12             },
13             "background": true,
14             "fitContainer": true,
15             "fitToframe": true,
16             "region": "center",
17             "tableName": "metric",
18             "title": "Metric",
19             "xtype": "GridPanel",
20             "|xns": "Roo",
21             "items": [
22                 {
23                     "listeners": {
24                         "|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}",
25                         "beforeedit": "function (e)\n{\n    var r = e.record.data.poitem_qty_received * 1;\n    \n    if(r > 0){\n        Roo.MessageBox.alert(\"Error\", \"This item has been receipted\");\n        return false;\n    }\n    \n    var status = _this.form.findField('pohead_status').getValue();\n    \n    if(status == 'C'){\n        Roo.MessageBox.alert(\"Error\", \"This PO has been closed\");\n        return false;\n    }\n    \n    \n}"
26                     },
27                     "*prop": "grid",
28                     "autoExpandColumn": "item_descrip1",
29                     "clicksToEdit": 1,
30                     "loadMask": true,
31                     "xtype": "EditorGrid",
32                     "|xns": "Roo.grid",
33                     "items": [
34                         {
35                             "listeners": {
36                                 "beforeload": "function (_self, o){\n    o.params = o.params || {};\n    var hid = _this.form.findField('pohead_id').getValue();\n    \n    if(!hid.length){\n        return false;\n    }\n    \n    o.params.poitem_pohead_id = hid;\n    o.params._with_item = 1;\n    o.params._roo_office = _this.data.office ? _this.data.office : baseURL.split('/').pop().substr(0,2);\n\n}\n",
37                                 "load": "function (_self, records, options)\n{\n    _this.grid.footer.updateSummary();\n}"
38                             },
39                             "*prop": "dataSource",
40                             "remoteSort": true,
41                             "xtype": "Store",
42                             "|sortInfo": "{ field : 'poitem_linenumber', direction: 'ASC' }",
43                             "|xns": "Roo.data",
44                             "items": [
45                                 {
46                                     "*prop": "proxy",
47                                     "method": "GET",
48                                     "timeout": 90000,
49                                     "xtype": "HttpProxy",
50                                     "|url": "baseURL + '/Xtuple/Roo/Poitem.php'",
51                                     "|xns": "Roo.data"
52                                 },
53                                 {
54                                     "*prop": "reader",
55                                     "id": "poitem_id",
56                                     "root": "data",
57                                     "totalProperty": "total",
58                                     "xtype": "JsonReader",
59                                     "|fields": "[\n    {\n        'name': 'poitem_id',\n        'type': 'int'\n    }\n]",
60                                     "|xns": "Roo.data"
61                                 }
62                             ]
63                         },
64                         {
65                             "|xns": "Roo",
66                             "xtype": "Toolbar",
67                             "*prop": "toolbar",
68                             "items": [
69                                 {
70                                     "listeners": {
71                                         "|click": "function()\n{\n    var status = _this.form.findField('pohead_status').getValue();\n    \n    if(status == 'C'){\n        Roo.MessageBox.alert(\"Error\", \"This PO has been closed\");\n        return;\n    }\n    \n    var ct  =    _this.grid.ds.getCount();\n    \n    var last = ct ? _this.grid.ds.getAt(ct-1).data.poitem_linenumber * 1 + 1 : 1;\n    \n    var dt = _this.form.findField('pohead_orderdate').getValue();\n    \n    var nr = _this.grid.ds.reader.newRow({\n        poitem_id : 0,\n        poitem_linenumber : last,\n        item_number : '',\n        item_descrip1 : '',\n        poitem_duedate : dt,\n        poitem_qty_ordered : 1,\n        poitem_unitprice : 0\n    });\n    \n    _this.grid.stopEditing();\n    _this.grid.ds.insert(_this.grid.ds.getCount(), nr); \n    _this.grid.startEditing(_this.grid.ds.getCount()-1, 1);\n}\n"
72                                     },
73                                     "cls": "x-btn-text-icon",
74                                     "text": "Add",
75                                     "xtype": "Button",
76                                     "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'",
77                                     "|xns": "Roo.Toolbar"
78                                 },
79                                 {
80                                     "listeners": {
81                                         "|click": "function ()\n{\n    var status = _this.form.findField('pohead_status').getValue();\n    \n    if(status == 'C'){\n        Roo.MessageBox.alert(\"Error\", \"This PO has been closed\");\n        return;\n    }\n    \n    var cs = _this.grid.getSelectionModel().getSelectedCell();\n    if (!cs) {\n        Roo.MessageBox.alert(\"Error\", \"Select a cell\");\n        return;\n    }\n    _this.grid.stopEditing();\n    var r = _this.grid.ds.getAt(cs[0]);\n    \n    if(r.data.poitem_qty_received * 1 > 0){\n        Roo.MessageBox.alert(\"Error\", \"This item has been receipted\");\n        return;\n    }\n    \n    \n    _this.grid.ds.remove(r);\n   \n}"
82                                     },
83                                     "cls": "x-btn-text-icon",
84                                     "text": "Remove",
85                                     "xtype": "Button",
86                                     "|icon": "rootURL + '/Pman/templates/images/trash.gif'",
87                                     "|xns": "Roo.Toolbar"
88                                 }
89                             ]
90                         },
91                         {
92                             "*prop": "footer",
93                             "displayInfo": true,
94                             "emptyMsg": "No Item found",
95                             "pageSize": 100,
96                             "xtype": "PagingToolbar",
97                             "|updateSummary": "function() {\n\r\n    var f = this;\r\n    new Pman.Request({\r\n        url : baseURL + '/Xtuple/Roo/Poitem',\r\n        method : 'GET',\r\n        params : {\n            _roo_office : _this.data.office ? _this.data.office : baseURL.split('/').pop().substr(0,2),\r\n            _totals : 1,\r\n            poitem_pohead_id : _this.form.findField('pohead_id').getValue()\r\n        },\r\n        success : function(d) {\n            Roo.log(d);\r\n            f.displayEl.update(String.format(\r\n                \"{0} items | Total : {1} {2}\",\r\n                d.data[0].count_item,\r\n                _this.form.findField('pohead_curr_id').el.dom.value,\r\n                d.data[0].totals\r\n            ));\r\n                \r\n        }\r\n    });\r\n\n}\n",
98                             "|xns": "Roo"
99                         },
100                         {
101                             "*prop": "colModel[]",
102                             "align": "right",
103                             "dataIndex": "poitem_linenumber",
104                             "header": "Line#",
105                             "width": 50,
106                             "xtype": "ColumnModel",
107                             "|renderer": "function(v) { return String.format('{0}', v); }",
108                             "|xns": "Roo.grid"
109                         },
110                         {
111                             "*prop": "colModel[]",
112                             "dataIndex": "item_number",
113                             "header": "Item code",
114                             "width": 100,
115                             "xtype": "ColumnModel",
116                             "|renderer": "function(v) { return String.format('{0}', v); }",
117                             "|xns": "Roo.grid",
118                             "items": [
119                                 {
120                                     "|xns": "Roo.grid",
121                                     "xtype": "GridEditor",
122                                     "*prop": "editor",
123                                     "items": [
124                                         {
125                                             "listeners": {
126                                                 "beforeselect": "function (combo, record, index)\n{\n  var ar = _this.grid.activeEditor.record;\n  \n  (function() { \n      ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);\n      ar.set('poitem_itemsite_id', record.data.itemsite_id);\n  }).defer(100);\n  \n}"
127                                             },
128                                             "*prop": "field",
129                                             "allowBlank": false,
130                                             "displayField": "itemsite_item_id_item_number",
131                                             "editable": true,
132                                             "emptyText": "Select item",
133                                             "forceSelection": true,
134                                             "hiddenName": "itemsite_item_id_item_number",
135                                             "listWidth": 400,
136                                             "loadingText": "Searching...",
137                                             "minChars": 2,
138                                             "name": "item_number",
139                                             "pageSize": 20,
140                                             "qtip": "Select item",
141                                             "queryParam": "query[number]",
142                                             "selectOnFocus": true,
143                                             "tpl": "<div class=\"x-grid-cell-text x-btn button\"><b>{itemsite_item_id_item_number}</b> - {itemsite_item_id_item_descrip1} </div>",
144                                             "triggerAction": "all",
145                                             "typeAhead": false,
146                                             "valueField": "item_number",
147                                             "xtype": "ComboBox",
148                                             "|xns": "Roo.form",
149                                             "items": [
150                                                 {
151                                                     "listeners": {
152                                                         "|beforeload": "function (_self, o){\n    o.params = o.params || {}; \n    o.params.itemsite_posupply = 1;\n}\n"
153                                                     },
154                                                     "*prop": "store",
155                                                     "remoteSort": true,
156                                                     "xtype": "Store",
157                                                     "|sortInfo": "{ direction : 'ASC', field: 'item_number' }",
158                                                     "|xns": "Roo.data",
159                                                     "items": [
160                                                         {
161                                                             "*prop": "proxy",
162                                                             "method": "GET",
163                                                             "xtype": "HttpProxy",
164                                                             "|url": "baseURL + '/Roo/itemsite.php'",
165                                                             "|xns": "Roo.data"
166                                                         },
167                                                         {
168                                                             "*prop": "reader",
169                                                             "id": "itemsite_id",
170                                                             "root": "data",
171                                                             "totalProperty": "total",
172                                                             "xtype": "JsonReader",
173                                                             "|fields": "[{\"name\":\"item_id\",\"type\":\"int\"},\"item_number\"]",
174                                                             "|xns": "Roo.data"
175                                                         }
176                                                     ]
177                                                 }
178                                             ]
179                                         }
180                                     ]
181                                 }
182                             ]
183                         },
184                         {
185                             "*prop": "colModel[]",
186                             "dataIndex": "item_descrip1",
187                             "header": "Item description",
188                             "width": 150,
189                             "xtype": "ColumnModel",
190                             "|renderer": "function(v) { return String.format('{0}', v); }",
191                             "|xns": "Roo.grid"
192                         },
193                         {
194                             "*prop": "colModel[]",
195                             "dataIndex": "poitem_duedate",
196                             "header": "Due date",
197                             "width": 100,
198                             "xtype": "ColumnModel",
199                             "|renderer": "function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }",
200                             "|xns": "Roo.grid"
201                         },
202                         {
203                             "*prop": "colModel[]",
204                             "align": "right",
205                             "dataIndex": "poitem_qty_ordered",
206                             "header": "Ordered",
207                             "width": 75,
208                             "xtype": "ColumnModel",
209                             "|renderer": "function(v) { return String.format('{0}', v); }",
210                             "|xns": "Roo.grid",
211                             "items": [
212                                 {
213                                     "|xns": "Roo.grid",
214                                     "xtype": "GridEditor",
215                                     "*prop": "editor",
216                                     "items": [
217                                         {
218                                             "*prop": "field",
219                                             "allowDecimals": false,
220                                             "decimalPrecision": 0,
221                                             "minValue": 1,
222                                             "style": "text-align:right",
223                                             "xtype": "NumberField",
224                                             "|xns": "Roo.form"
225                                         }
226                                     ]
227                                 }
228                             ]
229                         },
230                         {
231                             "*prop": "colModel[]",
232                             "align": "right",
233                             "dataIndex": "poitem_qty_received",
234                             "header": "Received",
235                             "width": 75,
236                             "xtype": "ColumnModel",
237                             "|renderer": "function(v,x,r) { \n    return String.format(\n        r.data.poitem_qty_ordered != (v-r.data.poitem_qty_returned) ? '<span style=\"color:red\">{0}</span>':  '{0}',\n         v - r.data.poitem_qty_returned);\n}",
238                             "|xns": "Roo.grid"
239                         },
240                         {
241                             "*prop": "colModel[]",
242                             "align": "right",
243                             "dataIndex": "poitem_qty_vouchered",
244                             "header": "Vouchered",
245                             "width": 65,
246                             "xtype": "ColumnModel",
247                             "|renderer": "function(v,x,r) { \n    return String.format(\n        r.data.poitem_qty_ordered != v ? '<span style=\"color:red\">{0}</span>':  '{0}',\n         v);\n}",
248                             "|xns": "Roo.grid"
249                         },
250                         {
251                             "*prop": "colModel[]",
252                             "align": "right",
253                             "dataIndex": "poitem_unitprice",
254                             "header": "Unit price",
255                             "width": 100,
256                             "xtype": "ColumnModel",
257                             "|renderer": "function(v) { return String.format('{0}', (v || v == 0) ? parseFloat(v).toFixed(3) : ''); }",
258                             "|xns": "Roo.grid",
259                             "items": [
260                                 {
261                                     "|xns": "Roo.grid",
262                                     "xtype": "GridEditor",
263                                     "*prop": "editor",
264                                     "items": [
265                                         {
266                                             "*prop": "field",
267                                             "allowBlank": false,
268                                             "allowDecimals": false,
269                                             "decimalPrecision": 0,
270                                             "minValue": 1,
271                                             "style": "text-align:right",
272                                             "xtype": "NumberField",
273                                             "|xns": "Roo.form"
274                                         }
275                                     ]
276                                 }
277                             ]
278                         }
279                     ]
280                 }
281             ]
282         }
283     ],
284     "permname": "",
285     "modOrder": "900"
286 }