3 "name": "Pman.Dialog.XtupleAdjustmentGroup",
6 "path": "/home/alan/gitlive/web.xtuple/Pman/Xtuple/Pman.Dialog.XtupleAdjustmentGroup.bjs",
14 "title": "Edit / Create Inventory Adjustment Group",
16 "xtype": "LayoutDialog",
22 "xtype": "LayoutRegion",
27 "xtype": "NestedLayoutPanel",
32 "xtype": "BorderLayout",
39 "xtype": "LayoutRegion",
44 "xtype": "LayoutRegion",
49 "xtype": "ContentPanel",
54 "|actioncomplete": "function(_self,action)\n{\n if (action.type == 'setdata') {\n _this.grid.ds.removeAll();\n _this.saveBtn.show();\n if(_this.data.invadjgrp_id){\n \n this.load({ method: 'GET', params: { '_id' : _this.data.invadjgrp_id }});\n }\n return;\n }\n if (action.type == 'load') {\n _this.data = action.result.data;\n if(_this.data.invadjgrp_posted){\n _this.saveBtn.hide();\n }\n\n _this.grid.ds.load({});\n return;\n }\n if (action.type =='submit') {\n \n \n if (!_this.grid.ds.getCount() && this.findField('invadjgrp_id').getValue()*1 < 1) {\n \n \n \n this.load({ method: 'GET', params: { '_id' : action.result.data.invadjgrp_id }});\n return;\n \n }\n\n _this.dialog.hide();\n \n if (_this.callback) {\n _this.callback.call(_this, _this.form.getValues());\n }\n _this.form.reset();\n return;\n }\n}\n",
55 "|rendered": "function (form)\n{\n _this.form= form;\n}\n"
58 "style": "margin:10px;",
60 "|url": "baseURL + '/Roo/Invadjgrp.php'",
64 "legend": "Inventory Adjustment Group Detail",
65 "style": "width:520px",
72 "name": "invadjgrp_name",
81 "name": "invadjgrp_transdate",
89 "displayField": "location_name",
91 "emptyText": "Select Location",
92 "fieldLabel": "Location",
93 "forceSelection": true,
94 "hiddenName": "invadjgrp_location_id",
96 "loadingText": "Searching...",
98 "name": "invadjgrp_location_id_location_name",
100 "qtip": "Select Location",
101 "queryParam": "query[location_name]",
102 "selectOnFocus": true,
103 "tpl": "<div class=\"x-grid-cell-text x-btn button\"><b>{location_name}</b> {location_descrip} </div>",
104 "triggerAction": "all",
106 "valueField": "location_id",
113 "|beforeload": "function (_self, o){\n \n o.params = o.params || {};\n o.params.location_netable = 1;\n o.params._notinternalcompany = 1;\n o.params.location_restrict = 0;\n}\n"
118 "|sortInfo": "{ direction : 'ASC', field: 'curr_id' }",
124 "xtype": "HttpProxy",
125 "|url": "baseURL + '/Roo/location.php'",
132 "totalProperty": "total",
133 "xtype": "JsonReader",
134 "|fields": "[\n {\"name\":\"location_id\",\"type\":\"int\"},\n {\"name\":\"location_name\",\"type\":\"string\"}\n]",
143 "fieldLabel": "Comments",
144 "name": "invadjgrp_comments",
146 "xtype": "TextField",
152 "name": "invadjgrp_id",
157 "name": "adjustments",
167 "|activate": "function() {\n _this.panel = this;\n if (_this.grid) {\n _this.grid.ds.load({});\n }\n}"
170 "fitContainer": true,
173 "tableName": "invadj",
175 "xtype": "GridPanel",
180 "|render": "function() \n{\n _this.grid = this; \n //_this.dialog = Pman.Dialog.FILL_IN\n if (_this.panel.active) {\n this.ds.load({});\n }\n}",
181 "beforeedit": "function (e)\n{\n if(_this.data.invadjgrp_posted){\n Roo.MessageBox.alert('Error', 'This group has been posted');\n return false;\n }\n \n if(e.record.data.invadj_posted){\n Roo.MessageBox.alert('Error', 'Can not update the posted adjustment');\n return false;\n }\n \n if(e.field != 'invadj_itemsite_id_item_number'){\n var itemsite_id = e.record.data.invadj_itemsite_id * 1;\n if(isNaN(itemsite_id) || itemsite_id < 1){\n Roo.MessageBox.alert('Error', 'Please select a item first');\n return false;\n }\n }\n}",
182 "afteredit": "function (e)\n{\n if (e.originalValue == e.value) {\n return;\n }\n \n switch(e.field) {\n case 'invadj_qty_by' :\n e.record.set('invadj_qty_after', parseInt(e.record.data.invadj_qty_before * 1 + e.value * 1));\n break;\n \n case 'invadj_qty_after' :\n e.record.set('invadj_qty_by', parseInt(e.value * 1 - e.record.data.invadj_qty_before * 1));\n break;\n \n case 'invadj_itemsite_id_item_number' :\n e.record.set('invadj_qty_after', parseInt(e.record.data.invadj_qty_before * 1 + e.record.data.invadj_qty_by * 1));\n break;\n \n }\n}"
185 "autoExpandColumn": "invadj_itemsite_id_item_number",
188 "xtype": "EditorGrid",
193 "tabend": "function (_self)\n{\n _this.addItemBtn.fireEvent('click', _this.addItemBtn);\n}"
196 "xtype": "CellSelectionModel",
206 "|click": "function()\n{\n var group = _this.form.findField('invadjgrp_id').getValue() * 1;\n \n if(!group || group < 1){\n Roo.MessageBox.alert('Error', 'Please save the group first!');\n return;\n }\n \n if(_this.data.invadjgrp_posted){\n Roo.MessageBox.alert('Error', 'This group has been posted');\n return;\n }\n \n var nr = _this.grid.ds.reader.newRow({\n invadj_itemsite_id_item_number : '',\n invadj_itemsite_id : 0,\n invadj_qty_before : 0,\n invadj_qty_by : 0,\n invadj_qty_after : 0\n \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, 0); // type..\n \n}\n",
207 "render": "function (_self)\n{\n _this.addItemBtn = _self;\n}"
209 "cls": "x-btn-text-icon",
212 "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'",
213 "|xns": "Roo.Toolbar"
217 "|click": "function ()\n{\n _this.grid.stopEditing();\n \n if(_this.data.invadjgrp_posted){\n Roo.MessageBox.alert('Error', 'This group has been posted');\n return;\n }\n \n var s = _this.grid.getSelectionModel().getSelectedCell();\n \n if(!s){\n Roo.MessageBox.alert('Error', 'Please select a adjustment to delete');\n return;\n }\n \n var i = _this.grid.ds.getAt(s[0]);\n \n if(i.data.invadj_posted){\n Roo.MessageBox.alert('Error', 'Can not delete the posted adjustment');\n return;\n }\n \n _this.grid.ds.remove(i);\n \n\n i = _this.grid.ds.getAt(s[0]);\n if (i) {\n _this.grid.selModel.select(s[0], s[1]);\n return;\n }\n var ln = s[0]-1;\n if (ln < 0) {\n return;\n } // nothing left to select..\n _this.grid.selModel.select(s[0]-1, s[1]);\n \n \n \n}"
219 "cls": "x-btn-text-icon",
222 "|icon": "rootURL + '/Pman/templates/images/trash.gif'",
223 "|xns": "Roo.Toolbar"
226 "|xns": "Roo.Toolbar",
230 "cls": "x-btn-text-icon",
233 "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'",
234 "|xns": "Roo.Toolbar",
243 "click": "function (_self, e)\n{\n var group = _this.form.findField('invadjgrp_id').getValue() * 1;\n \n if(!group || group < 1){\n Roo.MessageBox.alert('Error', 'Please save the group first!');\n return;\n }\n if(_this.data.invadjgrp_posted){\n Roo.MessageBox.alert('Error', 'This group has been posted');\n return;\n }\n \n var rn = _this.grid.ds.getCount();\n \n var addRow = function(r) {\n if(r.invadj_itemsite_id * 1 < 1 || r.qty * 1 == 0){\n return;\n }\n \n var nr = _this.grid.ds.reader.newRow({\n invadj_itemsite_id_item_number : r.item_number,\n invadj_itemsite_id : r.itemsite_id,\n invadj_qty_before : r.balance * 1,\n invadj_qty_by : r.qty * 1,\n invadj_qty_after : r.balance * 1 + r.qty * 1\n \n });\n _this.grid.ds.insert(rn++, nr); \n \n \n }\n \n Pman.Dialog.Image.show(\n {\n timeout : 90000,\n _url : baseURL+'/Xtuple/Import/InvAdjustment?' + Roo.urlEncode({'invadjgrp_id' : group})\n \n },\n function (r) {\n\n Roo.each(r, addRow);\n \n Roo.MessageBox.alert(\"Notice\", 'UPLOADED');\n }\n );\n}"
245 "cls": "x-btn-text-icon",
246 "text": "Upload Inventory Adjustments (eg. increases or decreases)",
248 "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'",
253 "click": "function (_self, e)\n{\n var group = _this.form.findField('invadjgrp_id').getValue() * 1;\n \n if(!group || group < 1){\n Roo.MessageBox.alert('Error', 'Please save the group first!');\n return;\n }\n if(_this.data.invadjgrp_posted){\n Roo.MessageBox.alert('Error', 'This group has been posted');\n return;\n }\n \n var rn = _this.grid.ds.getCount();\n \n var addRow = function(r) {\n if(r.invadj_itemsite_id * 1 < 1 || (r.qty * 1 - r.balance * 1) == 0){\n return;\n }\n \n var nr = _this.grid.ds.reader.newRow({\n invadj_itemsite_id_item_number : r.item_number,\n invadj_itemsite_id : r.itemsite_id,\n invadj_qty_before : r.balance * 1,\n invadj_qty_by : r.qty * 1 - r.balance * 1,\n invadj_qty_after : r.qty * 1\n \n });\n _this.grid.ds.insert(rn++, nr); \n \n \n }\n \n Pman.Dialog.Image.show(\n {\n timeout : 90000,\n _url : baseURL+'/Xtuple/Import/InvAdjustment?' + Roo.urlEncode({'invadjgrp_id' : group})\n \n },\n function (r) {\n\n Roo.each(r, addRow);\n \n Roo.MessageBox.alert(\"Notice\", 'UPLOADED');\n }\n );\n}"
255 "cls": "x-btn-text-icon",
256 "text": "Upload Inventory Stock take Results",
258 "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'",
267 "click": "function ()\n{\n new Pman.Download({\n grid : _this.grid\n });\n Roo.MessageBox.alert(\"Downloading\", \"File is downloading\");\n}"
269 "cls": "x-btn-text-icon",
272 "|icon": "rootURL + '/Pman/templates/images/spreadsheet.gif'",
273 "|xns": "Roo.Toolbar"
279 "beforeload": "function (_self, o){\n \n o.params = o.params || {};\n var group = _this.form.findField('invadjgrp_id').getValue() * 1;\n\n if(!group || group < 1){\n _this.grid.ds.removeAll();\n return false;\n }\n o.params.invadj_invadjgrp_id = group;\n\n o.params._with_detail = 1; \n o.params.limit = 99999;\n}\n"
281 "*prop": "dataSource",
284 "|sortInfo": "{ field : 'invadj_itemsite_id_item_number', direction: 'ASC' }",
291 "xtype": "HttpProxy",
292 "|url": "baseURL + '/Roo/Invadj.php'",
299 "totalProperty": "total",
300 "xtype": "JsonReader",
301 "|fields": "[\n {\n 'name': 'invadj_id',\n 'type': 'int'\n },\n {\n 'name': 'invadj_qty_by',\n 'type': 'int'\n }\n]",
307 "*prop": "colModel[]",
309 "dataIndex": "invadj_id",
313 "xtype": "ColumnModel",
314 "|renderer": "function(v) { return String.format('{0}', parseInt(v).toFixed(0)); }",
318 "*prop": "colModel[]",
319 "dataIndex": "invadj_itemsite_id_item_number",
322 "xtype": "ColumnModel",
323 "|renderer": "function(v) { return String.format('{0}', v); }",
328 "xtype": "GridEditor",
333 "beforeselect": "function (combo, record, index)\n{\n var ar = _this.grid.activeEditor.record;\n\n ar.set('invadj_itemsite_id_item_number', record.data.itemsite_item_id_item_number);\n ar.set('invadj_itemsite_id', record.data.itemsite_id);\n ar.set('invadj_qty_before', record.data.balance_atdate);\n\n \n}"
337 "displayField": "itemsite_item_id_item_number",
339 "emptyText": "Select item",
340 "forceSelection": true,
341 "hiddenName": "invadj_itemsite_id",
343 "loadingText": "Searching...",
345 "name": "invadj_itemsite_id_item_number",
347 "qtip": "Select item",
348 "queryParam": "query[number]",
349 "selectOnFocus": true,
350 "tpl": "<div class=\"x-grid-cell-text x-btn button\"><b>{itemsite_item_id_item_number}</b> {itemsite_item_id_item_descrip1} ({balance_atdate})</div>",
351 "triggerAction": "all",
352 "valueField": "itemsite_id",
358 "|beforeload": "function (_self, o){\n o.params = o.params || {};\n \n o.params._location = _this.form.findField('invadjgrp_location_id').getValue();\n \n var dt = _this.form.findField('invadjgrp_transdate').getValue();\n \n o.params._atdate = (typeof(dt) == 'string') ? dt : dt.format('Y-m-d');\n}\n"
363 "|sortInfo": "{ direction : 'ASC', field: 'itemsite_item_id_item_number' }",
369 "xtype": "HttpProxy",
370 "|url": "baseURL + '/Roo/itemsite.php'",
377 "totalProperty": "total",
378 "xtype": "JsonReader",
379 "|fields": "[{\"name\":\"item_id\",\"type\":\"int\"},\"item_number\"]",
391 "*prop": "colModel[]",
393 "dataIndex": "invadj_qty_before",
394 "header": "Qty Before",
396 "xtype": "ColumnModel",
397 "|renderer": "function(v) { return String.format('{0}', parseInt(v).toFixed(0)); }",
401 "*prop": "colModel[]",
403 "dataIndex": "invadj_qty_by",
406 "xtype": "ColumnModel",
407 "|renderer": "function(v) { return String.format('{0}', parseInt(v).toFixed(0)); }",
412 "xtype": "GridEditor",
417 "allowDecimals": false,
418 "decimalPrecision": 0,
419 "style": "text-align:right",
420 "xtype": "NumberField",
428 "*prop": "colModel[]",
430 "dataIndex": "invadj_qty_after",
431 "header": "Qty After",
433 "xtype": "ColumnModel",
434 "|renderer": "function(v) { return String.format('{0}', parseInt(v).toFixed(0)); }",
439 "xtype": "GridEditor",
444 "allowDecimals": false,
445 "decimalPrecision": 0,
446 "style": "text-align:right",
447 "xtype": "NumberField",
464 "click": "function (_self, e)\n{\n _this.dialog.hide();\n}"
466 "*prop": "buttons[]",
473 "click": "function (_self, e)\n{\n var items = [];\n var ar = [];\n var err = [];\n \n _this.grid.ds.each(function (r) {\n if(r.data.invadj_qty_by * 1 == 0){\n return;\n }\n if(items.indexOf(r.data.invadj_itemsite_id * 1) != -1){\n err.push(r.data.invadj_itemsite_id_item_number);\n return;\n }\n \n items.push(r.data.invadj_itemsite_id * 1);\n \n ar.push({\n invadj_id : r.data.invadj_id * 1,\n invadj_itemsite_id : r.data.invadj_itemsite_id * 1,\n invadj_qty_by : r.data.invadj_qty_by * 1\n })\n });\n \n if(err.length){\n Roo.MessageBox.alert(\"Error\", \"Duplicate Item found : <br/>\" + err.join(\"<br/>\"));\n return;\n }\n \n _this.form.findField('adjustments').setValue(Roo.encode(ar));\n _this.form.doAction(\"submit\");\n\n}",
474 "render": "function (_self)\n{\n _this.saveBtn = _self;\n}"
476 "*prop": "buttons[]",