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 : 150,
212                         renderer : function(v) { return String.format('{0}', v); }
213                     },
214                     {
215                         xtype: 'ColumnModel',
216                         xns: Roo.grid,
217                         dataIndex : 'item_descrip1',
218                         header : 'Item description',
219                         width : 150,
220                         renderer : function(v) { return String.format('{0}', v); }
221                     },
222                     {
223                         xtype: 'ColumnModel',
224                         xns: Roo.grid,
225                         dataIndex : 'poitem_duedate',
226                         header : 'Due date',
227                         width : 100,
228                         renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
229                     },
230                     {
231                         xtype: 'ColumnModel',
232                         xns: Roo.grid,
233                         align : 'right',
234                         dataIndex : 'poitem_qty_ordered',
235                         header : 'Ordered',
236                         width : 75,
237                         renderer : function(v) { return String.format('{0}', v); },
238                         editor : {
239                             xtype: 'GridEditor',
240                             xns: Roo.grid,
241                             field : {
242                                 xtype: 'NumberField',
243                                 xns: Roo.form,
244                                 allowDecimals : false,
245                                 decimalPrecision : 0,
246                                 minValue : 1,
247                                 style : 'text-align:right'
248                             }
249                         }
250                     },
251                     {
252                         xtype: 'ColumnModel',
253                         xns: Roo.grid,
254                         align : 'right',
255                         dataIndex : 'poitem_qty_received',
256                         header : 'Received',
257                         width : 75,
258                         renderer : function(v,x,r) { 
259                             return String.format(
260                                 r.data.poitem_qty_ordered != (v-r.data.poitem_qty_returned) ? '<span style="color:red">{0}</span>':  '{0}',
261                                  v - r.data.poitem_qty_returned);
262                         }
263                     },
264                     {
265                         xtype: 'ColumnModel',
266                         xns: Roo.grid,
267                         align : 'right',
268                         dataIndex : 'poitem_qty_vouchered',
269                         header : 'Vouchered',
270                         width : 65,
271                         renderer : function(v,x,r) { 
272                             return String.format(
273                                 r.data.poitem_qty_ordered != v ? '<span style="color:red">{0}</span>':  '{0}',
274                                  v);
275                         }
276                     },
277                     {
278                         xtype: 'ColumnModel',
279                         xns: Roo.grid,
280                         align : 'right',
281                         dataIndex : 'poitem_unitprice',
282                         header : 'Unit price',
283                         width : 100,
284                         renderer : function(v) { return String.format('{0}', (v || v == 0) ? parseFloat(v).toFixed(3) : ''); },
285                         editor : {
286                             xtype: 'GridEditor',
287                             xns: Roo.grid,
288                             field : {
289                                 xtype: 'NumberField',
290                                 xns: Roo.form,
291                                 allowBlank : false,
292                                 allowDecimals : false,
293                                 decimalPrecision : 0,
294                                 minValue : 1,
295                                 style : 'text-align:right'
296                             }
297                         }
298                     }
299                 ]
300             }
301         };
302     }
303 });