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': 'poitem_id',
94                                 'type': 'int'
95                             }
96                         ]
97                     }
98                 },
99                 toolbar : {
100                     xtype: 'Toolbar',
101                     xns: Roo,
102                     items : [
103                         {
104                             xtype: 'Button',
105                             xns: Roo.Toolbar,
106                             listeners : {
107                                 click : function()
108                                 {
109                                     var status = _this.form.findField('pohead_status').getValue();
110                                     
111                                     if(status == 'C'){
112                                         Roo.MessageBox.alert("Error", "This PO has been closed");
113                                         return;
114                                     }
115                                     
116                                     var ct  =    _this.grid.ds.getCount();
117                                     
118                                     var last = ct ? _this.grid.ds.getAt(ct-1).data.poitem_linenumber * 1 + 1 : 1;
119                                     
120                                     var dt = _this.form.findField('pohead_orderdate').getValue();
121                                     
122                                     var nr = _this.grid.ds.reader.newRow({
123                                         poitem_id : 0,
124                                         poitem_linenumber : last,
125                                         item_number : '',
126                                         item_descrip1 : '',
127                                         poitem_duedate : dt,
128                                         poitem_qty_ordered : 1,
129                                         poitem_unitprice : 0
130                                     });
131                                     
132                                     _this.grid.stopEditing();
133                                     _this.grid.ds.insert(_this.grid.ds.getCount(), nr); 
134                                     _this.grid.startEditing(_this.grid.ds.getCount()-1, 1);
135                                 }
136                             },
137                             cls : 'x-btn-text-icon',
138                             text : "Add",
139                             icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
140                         },
141                         {
142                             xtype: 'Button',
143                             xns: Roo.Toolbar,
144                             listeners : {
145                                 click : function ()
146                                 {
147                                     var status = _this.form.findField('pohead_status').getValue();
148                                     
149                                     if(status == 'C'){
150                                         Roo.MessageBox.alert("Error", "This PO has been closed");
151                                         return;
152                                     }
153                                     
154                                     var cs = _this.grid.getSelectionModel().getSelectedCell();
155                                     if (!cs) {
156                                         Roo.MessageBox.alert("Error", "Select a cell");
157                                         return;
158                                     }
159                                     _this.grid.stopEditing();
160                                     var r = _this.grid.ds.getAt(cs[0]);
161                                     
162                                     if(r.data.poitem_qty_received * 1 > 0){
163                                         Roo.MessageBox.alert("Error", "This item has been receipted");
164                                         return;
165                                     }
166                                     
167                                     
168                                     _this.grid.ds.remove(r);
169                                    
170                                 }
171                             },
172                             cls : 'x-btn-text-icon',
173                             text : "Remove",
174                             icon : rootURL + '/Pman/templates/images/trash.gif'
175                         }
176                     ]
177                 },
178                 footer : {
179                     xtype: 'PagingToolbar',
180                     xns: Roo,
181                     displayInfo : true,
182                     emptyMsg : "No Metric found",
183                     pageSize : 50
184                 },
185                 colModel : [
186                     {
187                         xtype: 'ColumnModel',
188                         xns: Roo.grid,
189                         align : 'right',
190                         dataIndex : 'poitem_linenumber',
191                         header : 'Line#',
192                         width : 50,
193                         renderer : function(v) { return String.format('{0}', v); }
194                     },
195                     {
196                         xtype: 'ColumnModel',
197                         xns: Roo.grid,
198                         dataIndex : 'item_number',
199                         header : 'Item code',
200                         width : 100,
201                         renderer : function(v) { return String.format('{0}', v); },
202                         editor : {
203                             xtype: 'GridEditor',
204                             xns: Roo.grid,
205                             field : {
206                                 xtype: 'ComboBox',
207                                 xns: Roo.form,
208                                 listeners : {
209                                     beforeselect : function (combo, record, index)
210                                     {
211                                       var ar = _this.grid.activeEditor.record;
212                                       
213                                       (function() { 
214                                           ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);
215                                           ar.set('poitem_itemsite_id', record.data.itemsite_id);
216                                       }).defer(100);
217                                       
218                                     }
219                                 },
220                                 allowBlank : false,
221                                 displayField : 'itemsite_item_id_item_number',
222                                 editable : true,
223                                 emptyText : "Select item",
224                                 forceSelection : true,
225                                 hiddenName : 'itemsite_item_id_item_number',
226                                 listWidth : 400,
227                                 loadingText : "Searching...",
228                                 minChars : 2,
229                                 name : 'item_number',
230                                 pageSize : 20,
231                                 qtip : "Select item",
232                                 queryParam : 'query[number]',
233                                 selectOnFocus : true,
234                                 tpl : '<div class="x-grid-cell-text x-btn button"><b>{itemsite_item_id_item_number}</b> - {itemsite_item_id_item_descrip1} </div>',
235                                 triggerAction : 'all',
236                                 typeAhead : false,
237                                 valueField : 'item_number',
238                                 store : {
239                                     xtype: 'Store',
240                                     xns: Roo.data,
241                                     listeners : {
242                                         beforeload : function (_self, o){
243                                             o.params = o.params || {}; 
244                                             o.params.itemsite_posupply = 1;
245                                         }
246                                     },
247                                     remoteSort : true,
248                                     sortInfo : { direction : 'ASC', field: 'item_number' },
249                                     proxy : {
250                                         xtype: 'HttpProxy',
251                                         xns: Roo.data,
252                                         method : 'GET',
253                                         url : baseURL + '/Roo/itemsite.php'
254                                     },
255                                     reader : {
256                                         xtype: 'JsonReader',
257                                         xns: Roo.data,
258                                         id : 'itemsite_id',
259                                         root : 'data',
260                                         totalProperty : 'total',
261                                         fields : [{"name":"item_id","type":"int"},"item_number"]
262                                     }
263                                 }
264                             }
265                         }
266                     },
267                     {
268                         xtype: 'ColumnModel',
269                         xns: Roo.grid,
270                         dataIndex : 'item_descrip1',
271                         header : 'Item description',
272                         width : 150,
273                         renderer : function(v) { return String.format('{0}', v); }
274                     },
275                     {
276                         xtype: 'ColumnModel',
277                         xns: Roo.grid,
278                         dataIndex : 'poitem_duedate',
279                         header : 'Due date',
280                         width : 100,
281                         renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
282                     },
283                     {
284                         xtype: 'ColumnModel',
285                         xns: Roo.grid,
286                         align : 'right',
287                         dataIndex : 'poitem_qty_ordered',
288                         header : 'Ordered',
289                         width : 75,
290                         renderer : function(v) { return String.format('{0}', v); },
291                         editor : {
292                             xtype: 'GridEditor',
293                             xns: Roo.grid,
294                             field : {
295                                 xtype: 'NumberField',
296                                 xns: Roo.form,
297                                 allowDecimals : false,
298                                 decimalPrecision : 0,
299                                 minValue : 1,
300                                 style : 'text-align:right'
301                             }
302                         }
303                     },
304                     {
305                         xtype: 'ColumnModel',
306                         xns: Roo.grid,
307                         align : 'right',
308                         dataIndex : 'poitem_qty_received',
309                         header : 'Received',
310                         width : 75,
311                         renderer : function(v,x,r) { 
312                             return String.format(
313                                 r.data.poitem_qty_ordered != (v-r.data.poitem_qty_returned) ? '<span style="color:red">{0}</span>':  '{0}',
314                                  v - r.data.poitem_qty_returned);
315                         }
316                     },
317                     {
318                         xtype: 'ColumnModel',
319                         xns: Roo.grid,
320                         align : 'right',
321                         dataIndex : 'poitem_qty_vouchered',
322                         header : 'Vouchered',
323                         width : 65,
324                         renderer : function(v,x,r) { 
325                             return String.format(
326                                 r.data.poitem_qty_ordered != v ? '<span style="color:red">{0}</span>':  '{0}',
327                                  v);
328                         }
329                     },
330                     {
331                         xtype: 'ColumnModel',
332                         xns: Roo.grid,
333                         align : 'right',
334                         dataIndex : 'poitem_unitprice',
335                         header : 'Unit price',
336                         width : 100,
337                         renderer : function(v) { return String.format('{0}', (v || v == 0) ? parseFloat(v).toFixed(3) : ''); },
338                         editor : {
339                             xtype: 'GridEditor',
340                             xns: Roo.grid,
341                             field : {
342                                 xtype: 'NumberField',
343                                 xns: Roo.form,
344                                 allowBlank : false,
345                                 allowDecimals : false,
346                                 decimalPrecision : 0,
347                                 minValue : 1,
348                                 style : 'text-align:right'
349                             }
350                         }
351                     }
352                 ]
353             }
354         };
355     }
356 });