{ "id": "roo-file-324", "name": "Pman.Dialog.XtupleAdjustmentGroup", "parent": "", "title": "", "path": "/home/alan/gitlive/web.xtuple/Pman/Xtuple/Pman.Dialog.XtupleAdjustmentGroup.bjs", "items": [ { "closable": false, "collapsible": false, "height": 500, "modal": true, "resizable": false, "title": "Edit / Create Inventory Adjustment Group", "width": 600, "xtype": "LayoutDialog", "|xns": "Roo", "items": [ { "*prop": "center", "tabPosition": "top", "xtype": "LayoutRegion", "|xns": "Roo" }, { "region": "center", "xtype": "NestedLayoutPanel", "|xns": "Roo", "items": [ { "|xns": "Roo", "xtype": "BorderLayout", "*prop": "layout", "items": [ { "*prop": "north", "height": 150, "split": true, "xtype": "LayoutRegion", "|xns": "Roo" }, { "|xns": "Roo", "xtype": "LayoutRegion", "*prop": "center" }, { "region": "north", "xtype": "ContentPanel", "|xns": "Roo", "items": [ { "listeners": { "|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", "|rendered": "function (form)\n{\n _this.form= form;\n}\n" }, "method": "POST", "style": "margin:10px;", "xtype": "Form", "|url": "baseURL + '/Roo/Invadjgrp.php'", "|xns": "Roo.form", "items": [ { "legend": "Inventory Adjustment Group Detail", "style": "width:520px", "xtype": "FieldSet", "|xns": "Roo.form", "items": [ { "allowBlank": false, "fieldLabel": "Name", "name": "invadjgrp_name", "width": 200, "xtype": "TextField", "|xns": "Roo.form" }, { "allowBlank": false, "fieldLabel": "Date", "format": "Y-m-d", "name": "invadjgrp_transdate", "useIso": true, "width": 200, "xtype": "DateField", "|xns": "Roo.form" }, { "allowBlank": false, "displayField": "location_name", "editable": false, "emptyText": "Select Location", "fieldLabel": "Location", "forceSelection": true, "hiddenName": "invadjgrp_location_id", "listWidth": 400, "loadingText": "Searching...", "minChars": 2, "name": "invadjgrp_location_id_location_name", "pageSize": 20, "qtip": "Select Location", "queryParam": "query[location_name]", "selectOnFocus": true, "tpl": "
{location_name} {location_descrip}
", "triggerAction": "all", "typeAhead": true, "valueField": "location_id", "width": 200, "xtype": "ComboBox", "|xns": "Roo.form", "items": [ { "listeners": { "|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" }, "*prop": "store", "remoteSort": true, "xtype": "Store", "|sortInfo": "{ direction : 'ASC', field: 'curr_id' }", "|xns": "Roo.data", "items": [ { "*prop": "proxy", "method": "GET", "xtype": "HttpProxy", "|url": "baseURL + '/Roo/location.php'", "|xns": "Roo.data" }, { "*prop": "reader", "id": "location_id", "root": "data", "totalProperty": "total", "xtype": "JsonReader", "|fields": "[\n {\"name\":\"location_id\",\"type\":\"int\"},\n {\"name\":\"location_name\",\"type\":\"string\"}\n]", "|xns": "Roo.data" } ] } ] }, { "allowBlank": true, "fieldLabel": "Comments", "name": "invadjgrp_comments", "width": 400, "xtype": "TextField", "|xns": "Roo.form" } ] }, { "name": "invadjgrp_id", "xtype": "Hidden", "|xns": "Roo.form" }, { "name": "adjustments", "xtype": "Hidden", "|xns": "Roo.form" } ] } ] }, { "listeners": { "|activate": "function() {\n _this.panel = this;\n if (_this.grid) {\n _this.grid.ds.load({});\n }\n}" }, "background": false, "fitContainer": true, "fitToframe": true, "region": "center", "tableName": "invadj", "title": "Invadj", "xtype": "GridPanel", "|xns": "Roo", "items": [ { "listeners": { "|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}", "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}", "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}" }, "*prop": "grid", "autoExpandColumn": "invadj_itemsite_id_item_number", "clicksToEdit": 1, "loadMask": true, "xtype": "EditorGrid", "|xns": "Roo.grid", "items": [ { "listeners": { "tabend": "function (_self)\n{\n _this.addItemBtn.fireEvent('click', _this.addItemBtn);\n}" }, "*prop": "sm", "xtype": "CellSelectionModel", "|xns": "Roo.grid" }, { "|xns": "Roo", "xtype": "Toolbar", "*prop": "toolbar", "items": [ { "listeners": { "|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", "render": "function (_self)\n{\n _this.addItemBtn = _self;\n}" }, "cls": "x-btn-text-icon", "text": "Add", "xtype": "Button", "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'", "|xns": "Roo.Toolbar" }, { "listeners": { "|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}" }, "cls": "x-btn-text-icon", "text": "Delete", "xtype": "Button", "|icon": "rootURL + '/Pman/templates/images/trash.gif'", "|xns": "Roo.Toolbar" }, { "|xns": "Roo.Toolbar", "xtype": "Fill" }, { "cls": "x-btn-text-icon", "text": "Upload", "xtype": "Button", "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'", "|xns": "Roo.Toolbar", "items": [ { "|xns": "Roo.menu", "xtype": "Menu", "*prop": "menu", "items": [ { "listeners": { "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}" }, "cls": "x-btn-text-icon", "text": "Upload Inventory Adjustments (eg. increases or decreases)", "xtype": "Item", "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'", "|xns": "Roo.menu" }, { "listeners": { "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}" }, "cls": "x-btn-text-icon", "text": "Upload Inventory Stock take Results", "xtype": "Item", "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'", "|xns": "Roo.menu" } ] } ] }, { "listeners": { "click": "function ()\n{\n new Pman.Download({\n grid : _this.grid\n });\n Roo.MessageBox.alert(\"Downloading\", \"File is downloading\");\n}" }, "cls": "x-btn-text-icon", "text": "Download", "xtype": "Button", "|icon": "rootURL + '/Pman/templates/images/spreadsheet.gif'", "|xns": "Roo.Toolbar" } ] }, { "listeners": { "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" }, "*prop": "dataSource", "remoteSort": true, "xtype": "Store", "|sortInfo": "{ field : 'invadj_itemsite_id_item_number', direction: 'ASC' }", "|xns": "Roo.data", "items": [ { "*prop": "proxy", "method": "GET", "timeout": 90000, "xtype": "HttpProxy", "|url": "baseURL + '/Roo/Invadj.php'", "|xns": "Roo.data" }, { "*prop": "reader", "id": "invadj_id", "root": "data", "totalProperty": "total", "xtype": "JsonReader", "|fields": "[\n {\n 'name': 'invadj_id',\n 'type': 'int'\n },\n {\n 'name': 'invadj_qty_by',\n 'type': 'int'\n }\n]", "|xns": "Roo.data" } ] }, { "*prop": "colModel[]", "align": "right", "dataIndex": "invadj_id", "header": "Ref#", "hidden": true, "width": 75, "xtype": "ColumnModel", "|renderer": "function(v) { return String.format('{0}', parseInt(v).toFixed(0)); }", "|xns": "Roo.grid" }, { "*prop": "colModel[]", "dataIndex": "invadj_itemsite_id_item_number", "header": "Code", "width": 200, "xtype": "ColumnModel", "|renderer": "function(v) { return String.format('{0}', v); }", "|xns": "Roo.grid", "items": [ { "|xns": "Roo.grid", "xtype": "GridEditor", "*prop": "editor", "items": [ { "listeners": { "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}" }, "*prop": "field", "allowBlank": false, "displayField": "itemsite_item_id_item_number", "editable": true, "emptyText": "Select item", "forceSelection": true, "hiddenName": "invadj_itemsite_id", "listWidth": 400, "loadingText": "Searching...", "minChars": 2, "name": "invadj_itemsite_id_item_number", "pageSize": 20, "qtip": "Select item", "queryParam": "query[number]", "selectOnFocus": true, "tpl": "
{itemsite_item_id_item_number} {itemsite_item_id_item_descrip1} ({balance_atdate})
", "triggerAction": "all", "valueField": "itemsite_id", "xtype": "ComboBox", "|xns": "Roo.form", "items": [ { "listeners": { "|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" }, "*prop": "store", "remoteSort": true, "xtype": "Store", "|sortInfo": "{ direction : 'ASC', field: 'itemsite_item_id_item_number' }", "|xns": "Roo.data", "items": [ { "*prop": "proxy", "method": "GET", "xtype": "HttpProxy", "|url": "baseURL + '/Roo/itemsite.php'", "|xns": "Roo.data" }, { "*prop": "reader", "id": "item_id", "root": "data", "totalProperty": "total", "xtype": "JsonReader", "|fields": "[{\"name\":\"item_id\",\"type\":\"int\"},\"item_number\"]", "|xns": "Roo.data" } ] } ] } ] } ] }, { "*prop": "colModel[]", "align": "right", "dataIndex": "invadj_qty_before", "header": "Qty Before", "width": 75, "xtype": "ColumnModel", "|renderer": "function(v) { return String.format('{0}', parseInt(v).toFixed(0)); }", "|xns": "Roo.grid" }, { "*prop": "colModel[]", "align": "right", "dataIndex": "invadj_qty_by", "header": "Qty", "width": 75, "xtype": "ColumnModel", "|renderer": "function(v) { return String.format('{0}', parseInt(v).toFixed(0)); }", "|xns": "Roo.grid", "items": [ { "|xns": "Roo.grid", "xtype": "GridEditor", "*prop": "editor", "items": [ { "*prop": "field", "allowDecimals": false, "decimalPrecision": 0, "style": "text-align:right", "xtype": "NumberField", "|xns": "Roo.form" } ] } ] }, { "*prop": "colModel[]", "align": "right", "dataIndex": "invadj_qty_after", "header": "Qty After", "width": 75, "xtype": "ColumnModel", "|renderer": "function(v) { return String.format('{0}', parseInt(v).toFixed(0)); }", "|xns": "Roo.grid", "items": [ { "|xns": "Roo.grid", "xtype": "GridEditor", "*prop": "editor", "items": [ { "*prop": "field", "allowDecimals": false, "decimalPrecision": 0, "style": "text-align:right", "xtype": "NumberField", "|xns": "Roo.form" } ] } ] } ] } ] } ] } ] }, { "listeners": { "click": "function (_self, e)\n{\n _this.dialog.hide();\n}" }, "*prop": "buttons[]", "text": "Cancel", "xtype": "Button", "|xns": "Roo" }, { "listeners": { "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 :
\" + err.join(\"
\"));\n return;\n }\n \n _this.form.findField('adjustments').setValue(Roo.encode(ar));\n _this.form.doAction(\"submit\");\n\n}", "render": "function (_self)\n{\n _this.saveBtn = _self;\n}" }, "*prop": "buttons[]", "text": "Save", "xtype": "Button", "|xns": "Roo" } ] } ], "permname": "", "modOrder": "001" }