Pman.Tab.XtupleMetric.bjs
[Pman.Xtuple] / Pman.Tab.XtupleMetric.js
1 //<script type="text/javascript">
2
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
4
5 Pman.Tab.XtupleMetric = new Roo.XComponent({
6     part     :  ["Xtuple","Metric"],
7     order    : '900-Pman.Tab.XtupleMetric',
8     region   : 'center',
9     parent   : 'Pman.Admin',
10     name     : "unnamed module",
11     disabled : false, 
12     permname : '', 
13     _tree : function()
14     {
15         var _this = this;
16         var MODULE = this;
17         return {
18             xtype: 'GridPanel',
19             xns: Roo,
20             listeners : {
21                 activate : function() {
22                     _this.panel = this;
23                     if (_this.grid) {
24                         _this.grid.footer.onClick('first');
25                     }
26                 }
27             },
28             background : true,
29             fitContainer : true,
30             fitToframe : true,
31             region : 'center',
32             tableName : 'metric',
33             title : "Metric",
34             grid : {
35                 xtype: 'EditorGrid',
36                 xns: Roo.grid,
37                 listeners : {
38                     render : function() 
39                     {
40                         _this.grid = this; 
41                         if (_this.panel.active) {
42                            this.footer.onClick('first');
43                         }
44                     },
45                     beforeedit : function (e)
46                     {
47                         var r = e.record.data.poitem_qty_received * 1;
48                         
49                         if(r > 0){
50                             Roo.MessageBox.alert("Error", "This item has been receipted");
51                             return false;
52                         }
53                         
54                         var status = _this.form.findField('pohead_status').getValue();
55                         
56                         if(status == 'C'){
57                             Roo.MessageBox.alert("Error", "This PO has been closed");
58                             return false;
59                         }
60                         
61                         
62                     }
63                 },
64                 autoExpandColumn : 'metric_value',
65                 clicksToEdit : 1,
66                 loadMask : true,
67                 dataSource : {
68                     xtype: 'Store',
69                     xns: Roo.data,
70                     listeners : {
71                         beforeload : function (_self, o){
72                             o.params = o.params || {};
73                             
74                         }
75                     },
76                     remoteSort : true,
77                     sortInfo : { field : 'metric_name', direction: 'ASC' },
78                     proxy : {
79                         xtype: 'HttpProxy',
80                         xns: Roo.data,
81                         method : 'GET',
82                         timeout : 90000,
83                         url : baseURL + '/Xtuple/Roo/Metric.php'
84                     },
85                     reader : {
86                         xtype: 'JsonReader',
87                         xns: Roo.data,
88                         id : 'metric_id',
89                         root : 'data',
90                         totalProperty : 'total',
91                         fields : [
92                             {
93                                 'name': 'metric_id',
94                                 'type': 'int'
95                             },
96                             {
97                                 'name': 'metric_name',
98                                 'type': 'string'
99                             },
100                             {
101                                 'name': 'metric_value',
102                                 'type': 'string'
103                             },
104                             {
105                                 'name': 'metric_module',
106                                 'type': 'string'
107                             }
108                         ]
109                     }
110                 },
111                 toolbar : {
112                     xtype: 'Toolbar',
113                     xns: Roo,
114                     items : [
115                         {
116                             xtype: 'Button',
117                             xns: Roo.Toolbar,
118                             listeners : {
119                                 click : function()
120                                 {
121                                     var status = _this.form.findField('pohead_status').getValue();
122                                     
123                                     if(status == 'C'){
124                                         Roo.MessageBox.alert("Error", "This PO has been closed");
125                                         return;
126                                     }
127                                     
128                                     var ct  =    _this.grid.ds.getCount();
129                                     
130                                     var last = ct ? _this.grid.ds.getAt(ct-1).data.poitem_linenumber * 1 + 1 : 1;
131                                     
132                                     var dt = _this.form.findField('pohead_orderdate').getValue();
133                                     
134                                     var nr = _this.grid.ds.reader.newRow({
135                                         poitem_id : 0,
136                                         poitem_linenumber : last,
137                                         item_number : '',
138                                         item_descrip1 : '',
139                                         poitem_duedate : dt,
140                                         poitem_qty_ordered : 1,
141                                         poitem_unitprice : 0
142                                     });
143                                     
144                                     _this.grid.stopEditing();
145                                     _this.grid.ds.insert(_this.grid.ds.getCount(), nr); 
146                                     _this.grid.startEditing(_this.grid.ds.getCount()-1, 1);
147                                 }
148                             },
149                             cls : 'x-btn-text-icon',
150                             text : "Add",
151                             icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
152                         },
153                         {
154                             xtype: 'Button',
155                             xns: Roo.Toolbar,
156                             listeners : {
157                                 click : function ()
158                                 {
159                                     var status = _this.form.findField('pohead_status').getValue();
160                                     
161                                     if(status == 'C'){
162                                         Roo.MessageBox.alert("Error", "This PO has been closed");
163                                         return;
164                                     }
165                                     
166                                     var cs = _this.grid.getSelectionModel().getSelectedCell();
167                                     if (!cs) {
168                                         Roo.MessageBox.alert("Error", "Select a cell");
169                                         return;
170                                     }
171                                     _this.grid.stopEditing();
172                                     var r = _this.grid.ds.getAt(cs[0]);
173                                     
174                                     if(r.data.poitem_qty_received * 1 > 0){
175                                         Roo.MessageBox.alert("Error", "This item has been receipted");
176                                         return;
177                                     }
178                                     
179                                     
180                                     _this.grid.ds.remove(r);
181                                    
182                                 }
183                             },
184                             cls : 'x-btn-text-icon',
185                             text : "Remove",
186                             icon : rootURL + '/Pman/templates/images/trash.gif'
187                         }
188                     ]
189                 },
190                 footer : {
191                     xtype: 'PagingToolbar',
192                     xns: Roo,
193                     displayInfo : true,
194                     emptyMsg : "No Metric found",
195                     pageSize : 50
196                 },
197                 colModel : [
198                     {
199                         xtype: 'ColumnModel',
200                         xns: Roo.grid,
201                         dataIndex : 'metric_id',
202                         header : 'ID',
203                         width : 75,
204                         renderer : function(v) { return String.format('{0}', v); }
205                     },
206                     {
207                         xtype: 'ColumnModel',
208                         xns: Roo.grid,
209                         dataIndex : 'metric_name',
210                         header : 'Name',
211                         width : 100,
212                         renderer : function(v) { return String.format('{0}', v); },
213                         editor : {
214                             xtype: 'GridEditor',
215                             xns: Roo.grid,
216                             field : {
217                                 xtype: 'ComboBox',
218                                 xns: Roo.form,
219                                 listeners : {
220                                     beforeselect : function (combo, record, index)
221                                     {
222                                       var ar = _this.grid.activeEditor.record;
223                                       
224                                       (function() { 
225                                           ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);
226                                           ar.set('poitem_itemsite_id', record.data.itemsite_id);
227                                       }).defer(100);
228                                       
229                                     }
230                                 },
231                                 allowBlank : false,
232                                 displayField : 'itemsite_item_id_item_number',
233                                 editable : true,
234                                 emptyText : "Select item",
235                                 forceSelection : true,
236                                 hiddenName : 'itemsite_item_id_item_number',
237                                 listWidth : 400,
238                                 loadingText : "Searching...",
239                                 minChars : 2,
240                                 name : 'item_number',
241                                 pageSize : 20,
242                                 qtip : "Select item",
243                                 queryParam : 'query[number]',
244                                 selectOnFocus : true,
245                                 tpl : '<div class="x-grid-cell-text x-btn button"><b>{itemsite_item_id_item_number}</b> - {itemsite_item_id_item_descrip1} </div>',
246                                 triggerAction : 'all',
247                                 typeAhead : false,
248                                 valueField : 'item_number',
249                                 store : {
250                                     xtype: 'Store',
251                                     xns: Roo.data,
252                                     listeners : {
253                                         beforeload : function (_self, o){
254                                             o.params = o.params || {}; 
255                                             o.params.itemsite_posupply = 1;
256                                         }
257                                     },
258                                     remoteSort : true,
259                                     sortInfo : { direction : 'ASC', field: 'item_number' },
260                                     proxy : {
261                                         xtype: 'HttpProxy',
262                                         xns: Roo.data,
263                                         method : 'GET',
264                                         url : baseURL + '/Roo/itemsite.php'
265                                     },
266                                     reader : {
267                                         xtype: 'JsonReader',
268                                         xns: Roo.data,
269                                         id : 'itemsite_id',
270                                         root : 'data',
271                                         totalProperty : 'total',
272                                         fields : [{"name":"item_id","type":"int"},"item_number"]
273                                     }
274                                 }
275                             }
276                         }
277                     },
278                     {
279                         xtype: 'ColumnModel',
280                         xns: Roo.grid,
281                         dataIndex : 'item_descrip1',
282                         header : 'Item description',
283                         width : 150,
284                         renderer : function(v) { return String.format('{0}', v); }
285                     },
286                     {
287                         xtype: 'ColumnModel',
288                         xns: Roo.grid,
289                         dataIndex : 'poitem_duedate',
290                         header : 'Due date',
291                         width : 100,
292                         renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
293                     },
294                     {
295                         xtype: 'ColumnModel',
296                         xns: Roo.grid,
297                         align : 'right',
298                         dataIndex : 'poitem_qty_ordered',
299                         header : 'Ordered',
300                         width : 75,
301                         renderer : function(v) { return String.format('{0}', v); },
302                         editor : {
303                             xtype: 'GridEditor',
304                             xns: Roo.grid,
305                             field : {
306                                 xtype: 'NumberField',
307                                 xns: Roo.form,
308                                 allowDecimals : false,
309                                 decimalPrecision : 0,
310                                 minValue : 1,
311                                 style : 'text-align:right'
312                             }
313                         }
314                     },
315                     {
316                         xtype: 'ColumnModel',
317                         xns: Roo.grid,
318                         align : 'right',
319                         dataIndex : 'poitem_qty_received',
320                         header : 'Received',
321                         width : 75,
322                         renderer : function(v,x,r) { 
323                             return String.format(
324                                 r.data.poitem_qty_ordered != (v-r.data.poitem_qty_returned) ? '<span style="color:red">{0}</span>':  '{0}',
325                                  v - r.data.poitem_qty_returned);
326                         }
327                     },
328                     {
329                         xtype: 'ColumnModel',
330                         xns: Roo.grid,
331                         align : 'right',
332                         dataIndex : 'poitem_qty_vouchered',
333                         header : 'Vouchered',
334                         width : 65,
335                         renderer : function(v,x,r) { 
336                             return String.format(
337                                 r.data.poitem_qty_ordered != v ? '<span style="color:red">{0}</span>':  '{0}',
338                                  v);
339                         }
340                     },
341                     {
342                         xtype: 'ColumnModel',
343                         xns: Roo.grid,
344                         align : 'right',
345                         dataIndex : 'poitem_unitprice',
346                         header : 'Unit price',
347                         width : 100,
348                         renderer : function(v) { return String.format('{0}', (v || v == 0) ? parseFloat(v).toFixed(3) : ''); },
349                         editor : {
350                             xtype: 'GridEditor',
351                             xns: Roo.grid,
352                             field : {
353                                 xtype: 'NumberField',
354                                 xns: Roo.form,
355                                 allowBlank : false,
356                                 allowDecimals : false,
357                                 decimalPrecision : 0,
358                                 minValue : 1,
359                                 style : 'text-align:right'
360                             }
361                         }
362                     }
363                 ]
364             }
365         };
366     }
367 });