Ext.QuickTips.init(); Ext.define('erp.controller.scm.reserve.SetBarcode', { extend: 'Ext.app.Controller', requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil', 'erp.util.RenderUtil'], views:[ 'scm.reserve.setBarcode.Viewport','scm.reserve.setBarcode.Form','scm.reserve.setBarcode.GridPanel','core.trigger.AddDbfindTrigger', 'core.trigger.DbfindTrigger','core.form.FtField','core.form.FtFindField','core.form.ConDateField', 'core.trigger.TextAreaTrigger','core.form.YnField', 'core.form.MonthDateField','core.form.ConMonthDateField','core.button.Close', 'core.grid.YnColumn','core.form.DateHourMinuteField','core.button.GenerateBarcode','core.button.PrintAll','core.button.DeleteAllDetails', 'core.button.PrintAllPackage','core.button.GeneratePaCode' ], BaseUtil: Ext.create('erp.util.BaseUtil'), GridUtil: Ext.create('erp.util.GridUtil'), FormUtil: Ext.create('erp.util.FormUtil'), init:function(){ var me = this; me.resized = false; var LODOP = null; var postStatuscode = window.parent.Ext.getCmp("pi_statuscode").value; this.control({ 'erpSetBarcodeGridPanel':{ itemclick : function(selModel, record){ //判断出入库是否已过帐,已过帐不允许对明细行进行操作,后台也需要判断 if(caller == 'ProdInOut!BarcodeIn' && postStatuscode != 'POSTED' && postStatuscode!='已过帐'){ if(record.data.bi_pdaget != 1){ this.GridUtil.onGridItemClick(selModel, record); } } }, afterrender:function(m){ var grid =Ext.getCmp("setBarcodeGridPanel"); Ext.each(grid.columns, function(c){ if(c.dataIndex == 'bi_printstatus'){ c.editor = null; } }); }, beforeedit: function(){//如果是单件管控则明细行中的入库数量不允许修改 var grid =Ext.getCmp("setBarcodeGridPanel"); var pr_tracekind = Ext.getCmp("pr_tracekind").value; if(pr_tracekind == 1 || pr_tracekind == "单件管控"){ Ext.each(grid.columns, function(c){ if(c.dataIndex == 'bi_inqty'||c.dataIndex == 'bi_outqty'){ c.editor = null; } }); } } }, 'erpCloseButton': { click: function(btn){ me.FormUtil.onClose(); } }, 'textfield[name=pd_outqty]':{ afterrender:function(m){ if(caller =='ProdInOut!BarcodeIn'){ m.hide(); } } }, 'textfield[name=pd_qty]':{ afterrender:function(m){ if(caller =='ProdInOut!BarcodeOut'){ m.hide(); } } }, 'dbfindtrigger[name=bi_location]':{ afterrender:function (m){ Ext.Ajax.request({//是否启用仓位 url : basePath + "common/getFieldData.action", params: { caller:'configs', field:'data', condition:"code='UseLocationOrNot' and caller='BarCodeSetting'" }, method : 'post', callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.data == 'N' || res.data == 0){//不启用仓位 m.allowBlank = true; m.hide(); } } }) } }, 'textfield[name=pd_inqty]':{ afterrender:function(m){ if(caller == 'ProdInOut!BarcodeOut'){ m.hide(); } } }, 'button[id=generateBarcodebtn]':{ afterrender: function(btn){ if(caller == 'ProdInOut!BarcodeOut'){ btn.hide(); } if(postStatuscode == 'POSTED' || postStatuscode=='已过帐'){ btn.disable(true); } }, click:function(btn){ //产生新的条码并插到grid行中 var form = Ext.getCmp("setBarcodeform"); var pd_inqty = Ext.getCmp("pd_inqty"); if(pd_inqty && (Number(pd_inqty.value)=='0' ||Number(pd_inqty.value) == 0)){ showError("批总量不允许为0!");return; } if(pd_inqty && (Number(pd_inqty.value) > Number(Ext.getCmp("pd_qty").value))){ showError("批总量不允许大于来料总量");return; } var r = form.getValues(); var keys = Ext.Object.getKeys(r); Ext.each(keys, function(k){ f = form.down('#' + k); if(f && f.logic == 'ignore') { delete r[k]; } }); var param = unescape(escape(Ext.JSON.encode(r))); Ext.Ajax.request({ url : basePath + "scm/reserve/generateBarcode.action", params: { caller: caller, formStore:param }, method : 'post', callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ showError(res.exceptionInfo);return; }else { window.location.href = basePath +'jsps/scm/reserve/setBarcode.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition; } } }) }, enable:function(btn){ var pr_tracekind = Ext.getCmp("pr_tracekind").value; if(pr_tracekind == 1 || pr_tracekind == "单件管控"){ btn.setDisabled(true); } } } , 'button[id=save]': { afterrender: function(btn){ if(caller == 'ProdInOut!BarcodeOut'){ btn.hide(); } if(postStatuscode == 'POSTED' || postStatuscode=='已过帐'){ btn.disable(true); } }, click: function (btn){ var grid =Ext.getCmp("setBarcodeGridPanel"); if( grid.selModel.getCount() == 0 ){ showError("没有需要处理的数据!"); return; } var params = new Object(); var items = grid.selModel.getSelection(); Ext.each(items, function(item, index){ if(this.data[grid.keyField] != null && this.data[grid.keyField] != '' && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){ item.index = this.data[grid.keyField]; grid.multiselected.push(item); } var records = Ext.Array.unique(grid.multiselected); if(records.length > 0){ params.caller = caller; var data = new Array(); var bool = false; Ext.each(records, function(record, index){ if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != '' && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)){ bool = true; var o = new Object(); if(grid.keyField){ o[grid.keyField] = record.data[grid.keyField]; } if(grid.toField){ Ext.each(grid.toField, function(f, index){ var v = Ext.getCmp(f).value; if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){ o[f] = v; } }); } if(grid.necessaryFields){ Ext.each(grid.necessaryFields, function(f, index){ var v = record.data[f]; if(Ext.isDate(v)){ v = Ext.Date.toString(v); } o[f] = v; }); } data.push(o); } }); if(bool){ params.gridStore = unescape(Ext.JSON.encode(data).replace(/\\/g,"%")); me.FormUtil.setLoading(true); Ext.Ajax.request({ url : basePath + "scm/reserve/saveBarcode.action", params: params, method : 'post', callback : function(options,success,response){ me.FormUtil.setLoading(false); var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ showError(res.exceptionInfo);return; }else { window.location.href = basePath +'jsps/scm/reserve/setBarcode.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition; } } }) } else { showError("没有需要处理的数据!"); } } }) } }, 'button[id=batchGenBarcode]':{ afterrender: function(btn){ if(caller == 'ProdInOut!BarcodeOut'){ btn.hide(); } }, enable: function (btn){ if(postStatuscode == 'POSTED' || postStatuscode=='已过帐'){ btn.disable(true); } }, click: function (btn){ //产生新的条码并插到grid行中 var form = Ext.getCmp("setBarcodeform"); var pr_zxbzs = Ext.getCmp("pr_zxbzs").value; if((pr_zxbzs == 0) || pr_zxbzs < 0 ){ showError("最小包装数必须大于0!"); return ; } var pr_tracekind = Ext.getCmp("pr_tracekind").value; if(pr_tracekind == 1 || pr_tracekind == "单件管控"){ if(pr_zxbzs!=1){ showError("单件管控类型的物料最小包装数只能为1 !"); return ; } } var pd_inqty = Ext.getCmp("pd_inqty"); if(pd_inqty && (Number(pd_inqty.value)=='0' ||Number(pd_inqty.value) == 0)){ showError("批总量不允许为0!");return; } if(pd_inqty && (Number(pd_inqty.value) > Number(Ext.getCmp("pd_qty").value))){ showError("批总量不允许大于来料总量");return; } var r = form.getValues(); var keys = Ext.Object.getKeys(r); Ext.each(keys, function(k){ f = form.down('#' + k); if(f && f.logic == 'ignore') { delete r[k]; } }); var param = unescape(escape(Ext.JSON.encode(r))); me.FormUtil.setLoading(true); Ext.Ajax.request({ url : basePath + "scm/reserve/batchGenBarcode.action", params: { caller: caller, formStore:param }, method : 'post', callback : function(options,success,response){ me.FormUtil.setLoading(false); var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ showError(res.exceptionInfo);return; }else { window.location.href = basePath +'jsps/scm/reserve/setBarcode.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition; } } }) } }, 'button[id=batchGenBarOBcode]':{ afterrender: function(btn){ if(caller == 'ProdInOut!BarcodeOut'){ btn.hide(); } }, enable: function (btn){ if(postStatuscode == 'POSTED' || postStatuscode=='已过帐'){ btn.disable(true); } }, click: function (btn){ //产生新的条码并插到grid行中 var form = Ext.getCmp("setBarcodeform"); var pr_zxbzs = Ext.getCmp("pr_zxbzs").value; if((pr_zxbzs == 0) || pr_zxbzs < 0 ||pr_zxbzs ==null){ showError("最小包装数必须大于0!"); return ; } var pr_tracekind = Ext.getCmp("pr_tracekind").value; if(pr_tracekind == 1 || pr_tracekind == "单件管控"){ if(pr_zxbzs!=1){ showError("单件管控类型的物料最小包装数只能为1 !"); return ; } } var pd_inqty = Ext.getCmp("pd_inqty"); if(pd_inqty && (Number(pd_inqty.value) > Number(Ext.getCmp("pd_qty").value))){ showError("批总量不允许大于来料总量");return; } if(Ext.getCmp("pk_qty").value == ''|| Ext.getCmp("pk_qty").value == 0 ||Ext.getCmp("pk_qty").value == '0' ||Ext.getCmp("pk_qty").value == null){ showError("请输入箱内总数");return ; }else { var pk_qty = Ext.getCmp("pk_qty").value; var pr_zxbzs = Ext.getCmp("pr_zxbzs").value; if(pr_zxbzs == ''||pr_zxbzs == 0 || pr_zxbzs == '0'||pr_zxbzs ==null){ showError("请输入最小包装数");return ; }else { if(pk_qty%pr_zxbzs !=0 ){ showError("箱内总数必须是最小包装数的整数倍!");return ; } } } var r = form.getValues(); var keys = Ext.Object.getKeys(r); Ext.each(keys, function(k){ f = form.down('#' + k); if(f && f.logic == 'ignore') { delete r[k]; } }); var param = unescape(escape(Ext.JSON.encode(r))); me.FormUtil.setLoading(true); Ext.Ajax.request({ url : basePath + "scm/reserve/batchGenBarOBcode.action", params: { caller: caller, formStore:param }, method : 'post', callback : function(options,success,response){ me.FormUtil.setLoading(false); var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ showError(res.exceptionInfo);return; }else { window.location.href = basePath +'jsps/scm/reserve/setBarcode.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition; } } }) } }, //删除全部明细 'erpDeleteAllDetailsButton':{ afterrender: function(btn){ if(caller == 'ProdInOut!BarcodeOut'){ btn.hide(); } if(postStatuscode == 'POSTED' || postStatuscode=='已过帐'){ btn.disable(true); } }, click:function (btn){ var grid =Ext.getCmp("setBarcodeGridPanel"); var items = grid.store.data.items; var bool = false; Ext.each(items, function(item, index){ if(this.data[grid.keyField] != null && this.data[grid.keyField] != '' && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){ bool = true; } }) if(!bool){ showError("没有需要处理的数据!"); return; }else{ warnMsg("确定清空所有明细", function(btn){ if(btn == 'yes'){ Ext.Ajax.request({ url : basePath + "scm/reserve/deleteAllBarDetails.action", params: { caller: window.parent.caller, no:Ext.getCmp("bi_piid").value, detno:Ext.getCmp("bi_pdno").value }, method : 'post', callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ var str = res.exceptionInfo; if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){ str = str.replace('AFTERSUCCESS', ''); window.location.href = basePath +'jsps/scm/reserve/setBarcode.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition; } showError(str);return; }else { window.location.href = basePath +'jsps/scm/reserve/setBarcode.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition; } } }) }else{ return ; } }) } } }, //打印条码 'erpPrintAllButton':{ afterrender: function(){ }, click: function (btn){ var win = new Ext.window.Window({ id : 'win', maximizable : true, buttonAlign : 'center', layout : 'anchor', title: '打印模板选择', modal : true, items: [{ tag : 'iframe', frame : true, anchor : '100% 100%', layout : 'fit', html : '' }] }); win.show(); } }, 'erpGeneratePaCodeButton':{//生成包装箱号,要先提示生成条码之后再生成包装箱号 afterrender: function(btn){ if(caller == 'ProdInOut!BarcodeOut'){ btn.hide(); } if(postStatuscode == 'POSTED' || postStatuscode=='已过帐'){ btn.disable(true); } }, click : function (btn){ if(Ext.getCmp("pk_qty").value == ''|| Ext.getCmp("pk_qty").value == 0 ||Ext.getCmp("pk_qty").value == '0' ||Ext.getCmp("pk_qty").value == null){ showError("请输入箱内总数");return ; }else { var pk_qty = Ext.getCmp("pk_qty").value; var pr_zxbzs = Ext.getCmp("pr_zxbzs").value; if(pr_zxbzs == ''||pr_zxbzs == 0 || pr_zxbzs == '0'||pr_zxbzs ==null){ showError("请输入最小包装数");return ; }else { if(pk_qty%pr_zxbzs !=0 ){ showError("箱内总数必须是最小包装数的整数倍!");return ; } } var form = Ext.getCmp("setBarcodeform"); var r = form.getValues(); var keys = Ext.Object.getKeys(r); Ext.each(keys, function(k){ f = form.down('#' + k); if(f && f.logic == 'ignore') { delete r[k]; } }); var param = unescape(escape(Ext.JSON.encode(r))); Ext.Ajax.request({ url : basePath + "scm/reserve/generatePaCode.action", params :{ caller: caller, data : param }, method : 'post', callback : function(options, success, response) { var res = new Ext.decode(response.responseText); if (res.exceptionInfo != null) { showError(res.exceptionInfo); return; }else { var grid =Ext.getCmp("setBarcodeGridPanel"); gridCondition = (gridCondition == null) ? "" : gridCondition.replace(/IS/g,"="); grid.GridUtil.loadNewStore(grid,{caller:caller,condition:gridCondition}); } } }); } } }, 'erpPrintAllPackageButton':{//打印全部箱号 click : function (btn){ var win = new Ext.window.Window({ id : 'win', maximizable : true, buttonAlign : 'center', layout : 'anchor', title: '打印模板选择', modal : true, items: [{ tag : 'iframe', frame : true, anchor : '100% 100%', layout : 'fit', html : '' }] }); win.show(); } } }); } });