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                         align : 'right',
202                         dataIndex : 'poitem_linenumber',
203                         header : 'Line#',
204                         width : 50,
205                         renderer : function(v) { return String.format('{0}', v); }
206                     },
207                     {
208                         xtype: 'ColumnModel',
209                         xns: Roo.grid,
210                         dataIndex : 'item_number',
211                         header : 'Item code',
212                         width : 100,
213                         renderer : function(v) { return String.format('{0}', v); },
214                         editor : {
215                             xtype: 'GridEditor',
216                             xns: Roo.grid,
217                             field : {
218                                 xtype: 'ComboBox',
219                                 xns: Roo.form,
220                                 listeners : {
221                                     beforeselect : function (combo, record, index)
222                                     {
223                                       var ar = _this.grid.activeEditor.record;
224                                       
225                                       (function() { 
226                                           ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);
227                                           ar.set('poitem_itemsite_id', record.data.itemsite_id);
228                                       }).defer(100);
229                                       
230                                     }
231                                 },
232                                 allowBlank : false,
233                                 displayField : 'itemsite_item_id_item_number',
234                                 editable : true,
235                                 emptyText : "Select item",
236                                 forceSelection : true,
237                                 hiddenName : 'itemsite_item_id_item_number',
238                                 listWidth : 400,
239                                 loadingText : "Searching...",
240                                 minChars : 2,
241                                 name : 'item_number',
242                                 pageSize : 20,
243                                 qtip : "Select item",
244                                 queryParam : 'query[number]',
245                                 selectOnFocus : true,
246                                 tpl : '<div class="x-grid-cell-text x-btn button"><b>{itemsite_item_id_item_number}</b> - {itemsite_item_id_item_descrip1} </div>',
247                                 triggerAction : 'all',
248                                 typeAhead : false,
249                                 valueField : 'item_number',
250                                 store : {
251                                     xtype: 'Store',
252                                     xns: Roo.data,
253                                     listeners : {
254                                         beforeload : function (_self, o){
255                                             o.params = o.params || {}; 
256                                             o.params.itemsite_posupply = 1;
257                                         }
258                                     },
259                                     remoteSort : true,
260                                     sortInfo : { direction : 'ASC', field: 'item_number' },
261                                     proxy : {
262                                         xtype: 'HttpProxy',
263                                         xns: Roo.data,
264                                         method : 'GET',
265                                         url : baseURL + '/Roo/itemsite.php'
266                                     },
267                                     reader : {
268                                         xtype: 'JsonReader',
269                                         xns: Roo.data,
270                                         id : 'itemsite_id',
271                                         root : 'data',
272                                         totalProperty : 'total',
273                                         fields : [{"name":"item_id","type":"int"},"item_number"]
274                                     }
275                                 }
276                             }
277                         }
278                     },
279                     {
280                         xtype: 'ColumnModel',
281                         xns: Roo.grid,
282                         dataIndex : 'item_descrip1',
283                         header : 'Item description',
284                         width : 150,
285                         renderer : function(v) { return String.format('{0}', v); }
286                     },
287                     {
288                         xtype: 'ColumnModel',
289                         xns: Roo.grid,
290                         dataIndex : 'poitem_duedate',
291                         header : 'Due date',
292                         width : 100,
293                         renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
294                     },
295                     {
296                         xtype: 'ColumnModel',
297                         xns: Roo.grid,
298                         align : 'right',
299                         dataIndex : 'poitem_qty_ordered',
300                         header : 'Ordered',
301                         width : 75,
302                         renderer : function(v) { return String.format('{0}', v); },
303                         editor : {
304                             xtype: 'GridEditor',
305                             xns: Roo.grid,
306                             field : {
307                                 xtype: 'NumberField',
308                                 xns: Roo.form,
309                                 allowDecimals : false,
310                                 decimalPrecision : 0,
311                                 minValue : 1,
312                                 style : 'text-align:right'
313                             }
314                         }
315                     },
316                     {
317                         xtype: 'ColumnModel',
318                         xns: Roo.grid,
319                         align : 'right',
320                         dataIndex : 'poitem_qty_received',
321                         header : 'Received',
322                         width : 75,
323                         renderer : function(v,x,r) { 
324                             return String.format(
325                                 r.data.poitem_qty_ordered != (v-r.data.poitem_qty_returned) ? '<span style="color:red">{0}</span>':  '{0}',
326                                  v - r.data.poitem_qty_returned);
327                         }
328                     },
329                     {
330                         xtype: 'ColumnModel',
331                         xns: Roo.grid,
332                         align : 'right',
333                         dataIndex : 'poitem_qty_vouchered',
334                         header : 'Vouchered',
335                         width : 65,
336                         renderer : function(v,x,r) { 
337                             return String.format(
338                                 r.data.poitem_qty_ordered != v ? '<span style="color:red">{0}</span>':  '{0}',
339                                  v);
340                         }
341                     },
342                     {
343                         xtype: 'ColumnModel',
344                         xns: Roo.grid,
345                         align : 'right',
346                         dataIndex : 'poitem_unitprice',
347                         header : 'Unit price',
348                         width : 100,
349                         renderer : function(v) { return String.format('{0}', (v || v == 0) ? parseFloat(v).toFixed(3) : ''); },
350                         editor : {
351                             xtype: 'GridEditor',
352                             xns: Roo.grid,
353                             field : {
354                                 xtype: 'NumberField',
355                                 xns: Roo.form,
356                                 allowBlank : false,
357                                 allowDecimals : false,
358                                 decimalPrecision : 0,
359                                 minValue : 1,
360                                 style : 'text-align:right'
361                             }
362                         }
363                     }
364                 ]
365             }
366         };
367     }
368 });