Ext.QuickTips.init(); Ext.define('erp.controller.scm.sale.PreSale', { extend: 'Ext.app.Controller', FormUtil: Ext.create('erp.util.FormUtil'), BaseUtil: Ext.create('erp.util.BaseUtil'), views:[ 'scm.sale.PreSale','core.form.Panel','core.form.MultiField', 'core.button.Add','core.button.Save','core.button.Update','core.button.Delete','core.button.Submit','core.button.ResSubmit', 'core.button.Audit','core.button.ResAudit','core.button.Close','core.button.TurnSale','core.form.FileField', 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.form.YnField','core.form.CheckBoxGroup','core.form.CheckBoxContainer', 'scm.sale.buttons.Buttons1','scm.sale.buttons.Buttons2','scm.sale.buttons.Buttons3','scm.sale.buttons.Buttons4','scm.sale.buttons.Buttons5', 'scm.sale.buttons.Buttons6','scm.sale.buttons.Buttons7','scm.sale.buttons.Buttons8','scm.sale.buttons.Buttons9','scm.sale.buttons.Buttons10', 'core.form.RadioGroup','core.form.SplitTextField','core.grid.ItemGrid','core.button.TurnSaleSelect', 'core.button.TurnNormalSale','core.button.RunATP' ], init:function(){ var me = this; this.control({ 'erpFormPanel': { afterrender: function(){ var panel = parent.Ext.getCmp('tree-tab'); if(panel && !panel.collapsed) { panel.toggleCollapse(); } } }, 'field[name=ps_currency]': { beforetrigger: function(field) { var t = field.up('form').down('field[name=ps_date]'), value = t.getValue(); if(value) { field.findConfig = 'cm_yearmonth=' + Ext.Date.format(value, 'Ym'); } } }, 'erpPreSaleButton1': { click: function(){ me.updateButton(1); } }, 'erpPreSaleButton2': { click: function(){ me.updateButton(2); } }, 'erpPreSaleButton3': { click: function(){ me.updateButton(3); } }, 'erpPreSaleButton4': { click: function(){ me.updateButton(4); } }, 'erpPreSaleButton5': { click: function(){ me.updateButton(5); } }, 'erpPreSaleButton6': { click: function(){ me.updateButton(6); } }, 'erpPreSaleButton7': { click: function(){ me.updateButton(7); } }, 'erpPreSaleButton8': { click: function(){ me.updateButton(8); } }, 'erpPreSaleButton9': { click: function(){ me.updateButton(9); } }, 'erpPreSaleButton10': { click: function(){ me.updateButton(10); } }, 'erpTurnSaleSelectButton':{ afterrender: function(btn){ var status = Ext.getCmp('ps_statuscode'); if(status && status.value != 'AUDITED'&&status.value !='TURNSA'){ btn.hide(); } } }, 'erpRunATPButton':{ click: function(btn){ if(Ext.getCmp('ps_code').value != null){ var mb = new Ext.window.MessageBox(); mb.wait('正在运算中','请稍后...',{ interval: 10000, //bar will move fast! duration: 1000000, increment: 20, scope: this, }); Ext.Ajax.request({//拿到grid的columns url : basePath + "/pm/atp/runATPFromOther.action", params: { fromcode:Ext.getCmp('ps_code').value, fromwhere:'PRESALE' }, method : 'post', timeout: 600000, callback : function(options,success,response){ mb.close(); var res = new Ext.decode(response.responseText); if(res.exceptionInfo){ showError(res.exceptionInfo);return; } if(res.success){ if(res.atpid != '' && res.atpid != null && res.atpid>0){ me.FormUtil.onAdd(null, 'ATP运算', 'jsps/pm/atp/ATPMain.jsp?formCondition=am_id=' + res.atpid + '&&gridCondition=ad_amid='+res.atpid+'&_noc=1'); } else { showError('无数据,运算失败');return; } } } }); } } }, 'erpTurnNormalSaleButton':{ click: function(m){ warnMsg("确定要转入销售单吗?", function(btn){ if(btn == 'yes'){ Ext.Ajax.request({ url: basePath + 'scm/sale/turnPreSaleToSale.action', params: { type:'sale', ps_id:Ext.getCmp('ps_id').value }, waitMsg: '转单中...', method: 'post', callback: function(options, success, response) { var localJson = new Ext.decode(response.responseText); if (localJson.success) { turnSuccess(function() { //add成功后刷新页面进入可编辑的页面 // this.loadSplitData(originaldetno, said, record); if(localJson.clickurl){ showError(localJson.clickurl); window.location.reload(); } }); } else if (localJson.exceptionInfo) { showError(localJson.exceptionInfo); } else { saveFailure(); } } }); } }); }, afterrender: function(btn){ var status = Ext.getCmp('ps_statuscode'); if(status && status.value != 'AUDITED'&&status.value !='TURNSA'){ btn.hide(); } } }, 'erpTurnSaleSelectButton':{ afterrender: function(btn){ var status = Ext.getCmp('ps_statuscode'); if(status && status.value != 'AUDITED'&&status.value !='TURNSA'){ btn.hide(); } } }, 'erpSaveButton': { click: function(btn){ var form = me.getForm(btn); if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){ me.BaseUtil.getRandomNumber();//自动添加编号 } this.FormUtil.beforeSave(this); } }, 'erpDeleteButton' : { afterrender: function(btn){ var status = Ext.getCmp('ps_statuscode'); if(status && status.value != 'ENTERING'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onDelete(Ext.getCmp('ps_id').value); } }, 'erpUpdateButton': { afterrender: function(btn){ var status = Ext.getCmp('ps_statuscode'); if(status && status.value != 'ENTERING'){ btn.hide(); } }, click: function(btn){ me.onUpdate(this); } }, 'erpAddButton': { click: function(){ me.FormUtil.onAdd('addPreSale', '新增订单评审', 'jsps/scm/sale/preSale.jsp?v_width='+v_width); } }, 'erpCloseButton': { click: function(btn){ me.FormUtil.beforeClose(me); } }, 'erpSubmitButton': { afterrender: function(btn){ var status = Ext.getCmp('ps_statuscode'); if(status && status.value != 'ENTERING'){ btn.hide(); } }, click: function(btn){ me.onSubmit(Ext.getCmp('ps_id').value); } }, 'erpResSubmitButton': { afterrender: function(btn){ var status = Ext.getCmp('ps_statuscode'); if(status && status.value != 'COMMITED'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onResSubmit(Ext.getCmp('ps_id').value); } }, 'erpAuditButton': { afterrender: function(btn){ var status = Ext.getCmp('ps_statuscode'); if(status && status.value != 'COMMITED'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onAudit(Ext.getCmp('ps_id').value); } }, 'erpResAuditButton': { afterrender: function(btn){ var status = Ext.getCmp('ps_statuscode'); if(status && status.value != 'AUDITED'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onResAudit(Ext.getCmp('ps_id').value); } }, 'dbfindtrigger[name=ps_address]': { afterrender:function(trigger){ trigger.dbKey='ps_custcode'; trigger.mappingKey='cu_code'; trigger.dbMessage='请先选客户编号!'; } }, 'combo[name=ps_type]': { delay: 200, change: function(m){ this.hidecolumns(m); // var f = m.ownerCt, s = f.down('field[name=ar_sellercode]'); // if (s) { // if(m.value == '应收款') { // s.allowBlank = false; // } else { // s.allowBlank = true; // } // } } }/*, 'erpTurnSaleButton':{ afterrender: function(btn){ var status = Ext.getCmp('ps_statuscode'); if(status && status.value != 'AUDITED'){ btn.hide(); } }, click: function(btn){ warnMsg("确定要转入销售单吗?", function(btn){ if(btn == 'yes'){ me.FormUtil.getActiveTab().setLoading(true);//loading... Ext.Ajax.request({ url : basePath + 'scm/sale/preSaleToSale.action', params: { id: Ext.getCmp('ps_id').value }, method : 'post', callback : function(options,success,response){ me.FormUtil.getActiveTab().setLoading(false); var localJson = new Ext.decode(response.responseText); if(localJson.exceptionInfo){ showError(localJson.exceptionInfo); } if(localJson.success){ turnSuccess(function(){ var id = localJson.id; var url = "jsps/scm/sale/sale.jsp?whoami=Sale&formCondition=sa_id=" + id + "&gridCondition=sd_said=" + id; me.FormUtil.onAdd('Sale' + id, '销售单' + id, url); }); } } }); } }); } }*/ }); }, getForm: function(btn){ return btn.ownerCt.ownerCt; }, updateButton: function(type){ var me = this; // var form = Ext.getCmp('form'); if(type == 1){ Ext.getCmp('rg_1').logic = ''; Ext.getCmp('ta_1').logic = ''; Ext.getCmp('tf_1').logic = ''; Ext.getCmp('rg_2').logic = ''; Ext.getCmp('ta_2').logic = ''; Ext.getCmp('tf_2').logic = ''; } if(type == 2){ Ext.getCmp('rg_3').logic = ''; Ext.getCmp('ta_3').logic = ''; Ext.getCmp('tf_3').logic = ''; Ext.getCmp('rg_4').logic = ''; Ext.getCmp('ta_4').logic = ''; Ext.getCmp('tf_4').logic = ''; Ext.getCmp('tf_19').logic = ''; Ext.getCmp('tf_20').logic = ''; Ext.getCmp('tf_21').logic = ''; Ext.getCmp('tf_22').logic = ''; Ext.getCmp('tf_23').logic = ''; Ext.getCmp('tf_24').logic = ''; Ext.getCmp('tf_25').logic = ''; Ext.getCmp('tf_26').logic = ''; Ext.getCmp('tf_27').logic = ''; Ext.getCmp('tf_28').logic = ''; Ext.getCmp('tf_29').logic = ''; Ext.getCmp('tf_30').logic = ''; Ext.getCmp('tf_31').logic = ''; Ext.getCmp('tf_32').logic = ''; } if(type == 3){ Ext.getCmp('rg_5').logic = ''; Ext.getCmp('ta_5').logic = ''; Ext.getCmp('tf_5').logic = ''; } if(type == 4){ Ext.getCmp('rg_6').logic = ''; Ext.getCmp('ta_6').logic = ''; Ext.getCmp('tf_6').logic = ''; Ext.getCmp('rg_7').logic = ''; Ext.getCmp('ta_7').logic = ''; Ext.getCmp('tf_7').logic = ''; Ext.getCmp('rg_8').logic = ''; Ext.getCmp('ta_8').logic = ''; Ext.getCmp('tf_8').logic = ''; } if(type == 5){ Ext.getCmp('rg_9').logic = ''; Ext.getCmp('ta_9').logic = ''; Ext.getCmp('tf_9').logic = ''; Ext.getCmp('rg_10').logic = ''; Ext.getCmp('ta_10').logic = ''; Ext.getCmp('tf_10').logic = ''; } if(type == 6){ Ext.getCmp('rg_11').logic = ''; Ext.getCmp('ta_11').logic = ''; Ext.getCmp('tf_11').logic = ''; Ext.getCmp('rg_12').logic = ''; Ext.getCmp('ta_12').logic = ''; Ext.getCmp('tf_12').logic = ''; Ext.getCmp('rg_13').logic = ''; Ext.getCmp('ta_13').logic = ''; Ext.getCmp('tf_13').logic = ''; } if(type == 7){ Ext.getCmp('rg_14').logic = ''; Ext.getCmp('ta_14').logic = ''; Ext.getCmp('tf_14').logic = ''; } if(type == 8){ Ext.getCmp('rg_15').logic = ''; Ext.getCmp('ta_15').logic = ''; Ext.getCmp('tf_15').logic = ''; } if(type == 9){ Ext.getCmp('rg_16').logic = ''; Ext.getCmp('ta_16').logic = ''; Ext.getCmp('tf_16').logic = ''; Ext.getCmp('rg_17').logic = ''; Ext.getCmp('ta_17').logic = ''; Ext.getCmp('tf_17').logic = ''; } if(type == 10){ Ext.getCmp('rg_18').logic = ''; Ext.getCmp('ta_18').logic = ''; Ext.getCmp('tf_18').logic = ''; } this.FormUtil.onUpdate(this); }, getOtherPreSaleValues: function () { var me = this; var form = Ext.getCmp('form'); var param; if(formCondition && formCondition!= ''){ var con = formCondition.split('='); if(con.length>1){ param = { id : con[1] }; } } Ext.Ajax.request({ url : basePath + form.getOtherPreSaleValues, params : param, method : 'post', callback : function(options,success,response){ var localJson = new Ext.decode(response.responseText); if(localJson.success){ if(localJson.values){ var vs = localJson.values.replace('{',''); vs = vs.replace('}',''); vs = vs.replace(/"/gi,""); var os =vs.split(','); Ext.each(os,function(o,index){ var oo = o.split(':'); var fi = Ext.getCmp(oo[0]); if(fi){ if(fi.xtype == 'radiogroup'){ var ob = new Object(); ob[oo[0]] = oo[1]; fi.setValue(ob); }else { fi.setValue(oo[1]); } } } ); } } else if(localJson.exceptionInfo){ } else{ } } }); }, /** * 单据保存 * @param param 传递过来的数据,比如gridpanel的数据 */ onSave: function(param){ var me = this; var form = Ext.getCmp('form'); if(form.getForm().isValid()){ //form里面数据 Ext.each(form.items.items, function(item){ if(item.xtype == 'numberfield'){ //number类型赋默认值,不然sql无法执行 if(item.value == null || item.value == ''){ item.setValue(0); } } }); var r = form.getValues(); //去除ignore字段 var keys = Ext.Object.getKeys(r), f; var reg = /[!@#$%^&*()'":,\/?]/; Ext.each(keys, function(k){ f = form.down('#' + k); if(f && f.logic == 'ignore') { delete r[k]; } //codeField值强制大写,自动过滤特殊字符 if(k == form.codeField && !Ext.isEmpty(r[k])) { r[k] = r[k].trim().toUpperCase().replace(reg, ''); } }); if(!me.FormUtil.contains(form.saveUrl, '?caller=', true)){ form.saveUrl = form.saveUrl + "?caller=" + caller; } me.save(r, param); }else{ me.FormUtil.checkForm(); } }, save: function(){ var params = new Object(); var r = arguments[0]; Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段 if(contains(k, 'ext-', true)){ delete r[k]; } }); params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%")); var me = this; var form = Ext.getCmp('form'); me.FormUtil.setLoading(true); Ext.Ajax.request({ url : basePath + form.saveUrl, params : params, method : 'post', callback : function(options,success,response){ me.FormUtil.setLoading(false); var localJson = new Ext.decode(response.responseText); if(localJson.success){ saveSuccess(function(){ //add成功后刷新页面进入可编辑的页面 var value = r[form.keyField]; var formCondition = form.keyField + "IS" + value ; var gridCondition = ''; if(me.FormUtil.contains(window.location.href, '?', true)){ window.location.href = window.location.href + '&formCondition=' + formCondition + '&gridCondition=' + gridCondition; } else { window.location.href = window.location.href + '?formCondition=' + formCondition + '&gridCondition=' + gridCondition; } }); } else if(localJson.exceptionInfo){ var str = localJson.exceptionInfo; if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面 str = str.replace('AFTERSUCCESS', ''); saveSuccess(function(){ //add成功后刷新页面进入可编辑的页面 var value = r[form.keyField]; var formCondition = form.keyField + "IS" + value ; var gridCondition = ''; if(me.FormUtil.contains(window.location.href, '?', true)){ window.location.href = window.location.href + '&formCondition=' + formCondition + '&gridCondition=' + gridCondition; } else { window.location.href = window.location.href + '?formCondition=' + formCondition + '&gridCondition=' + gridCondition; } }); showError(str); } else { showError(str); return; } } else{ saveFailure();//@i18n/i18n.js } } }); }, /** * 检查form未完善的字段 */ checkForm: function(){ var s = ''; var form = Ext.getCmp('form'); form.getForm().getFields().each(function (item, index, length){ if(!item.isValid()){ if(s != ''){ s += ','; } if(item.fieldLabel || item.ownerCt.fieldLabel){ s += item.fieldLabel || item.ownerCt.fieldLabel; } } }); if(s == ''){ return true; } showError($I18N.common.form.necessaryInfo1 + '(' + s.replace(/ /g,'') + ')' + $I18N.common.form.necessaryInfo2); return false; }, /** * 单据修改 * @param form formpanel表 * @param param 传递过来的数据,比如gridpanel的数据 */ onUpdate: function(me){ var mm = this; var form = Ext.getCmp('form'); // var s1 = mm.checkFormDirty(form); var s2 = ''; var grids = Ext.ComponentQuery.query('gridpanel'); var removea = new Array(); Ext.each(grids,function(g,index){ if(g.xtype=='itemgrid'){ g.updateValue(); removea.push(g); } }); Ext.each(removea,function(r,index){ Ext.Array.remove(grids,r); }); if(grids.length > 0){//check所有grid是否已修改 Ext.each(grids, function(grid, index){ if(grid.GridUtil){ var msg = grid.GridUtil.checkGridDirty(grid); if(msg.length > 0){ s2 = s2 + '
' + grid.GridUtil.checkGridDirty(grid); } } }); } if(form && form.getForm().isValid()){ //form里面数据 var r = form.getValues(false, true); //去除ignore字段 var keys = Ext.Object.getKeys(r), f; Ext.each(keys, function(k){ f = form.down('#' + k); if(f && f.logic == 'ignore') { delete r[k]; } }); if(!mm.FormUtil.contains(form.updateUrl, '?caller=', true)){ form.updateUrl = form.updateUrl + "?caller=" + caller; } var params = []; if(grids.length > 0){ var param = grids[0].GridUtil.getGridStore(); if(grids[0].necessaryField.length > 0 && (param == null || param == '')){ warnMsg('明细表还未添加数据,是否继续?', function(btn){ if(btn == 'yes'){ params = unescape("[" + param.toString().replace(/\\/g,"%") + "]"); } else { return; } }); } else { params = unescape("[" + param.toString().replace(/\\/g,"%") + "]"); } } mm.update(r, params); }else{ mm.checkForm(form); } }, update: function(){ var me = this, params = new Object(); var r = arguments[0]; Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段 if(contains(k, 'ext-', true)){ delete r[k]; } }); params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%")); params.param = unescape(arguments[1].toString().replace(/\\/g,"%")); for(var i=2; i 0){//check所有grid是否已修改 var param = grids[0].GridUtil.getAllGridStore(grids[0]); if(grids[0].necessaryField && grids[0].necessaryField.length > 0 && (param == null || param == '') && (allowEmpty !== true)){ showError("明细表还未添加数据,无法提交!"); return; } Ext.each(grids, function(grid, index){ if(grid.GridUtil){ var msg = grid.GridUtil.checkGridDirty(grid); if(msg.length > 0){ // s = s + '
' + grid.GridUtil.checkGridDirty(grid); } } }); } me.submit(id); // if(s == '' || s == '
'){ // me.submit(id); // } else { // Ext.MessageBox.show({ // title:'保存修改?', // msg: '该单据已被修改:
' + s + '
提交前要先保存吗?', // buttons: Ext.Msg.YESNOCANCEL, // icon: Ext.Msg.WARNING, // fn: function(btn){ // if(btn == 'yes'){ // me.onUpdate(form); // } else if(btn == 'no'){ // me.submit(id); // } else { // return; // } // } // }); // } } else { me.checkForm(); } }, submit: function(id){ var me = this; var form = Ext.getCmp('form'); if(!me.FormUtil.contains(form.submitUrl, '?caller=', true)){ form.submitUrl = form.submitUrl + "?caller=" + caller; } me.FormUtil.setLoading(true);//loading... Ext.Ajax.request({ url : basePath + form.submitUrl, params: { id: id }, method : 'post', callback : function(options,success,response){ me.FormUtil.setLoading(false); var localJson = new Ext.decode(response.responseText); if(localJson.success){ me.FormUtil.getMultiAssigns(id, caller,form); //submit成功后刷新页面进入可编辑的页面 } else { if(localJson.exceptionInfo){ var str = localJson.exceptionInfo; if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面 str = str.replace('AFTERSUCCESS', ''); me.FormUtil.getMultiAssigns(id, caller,form); } showMessage("提示", str);return; } } } }); } });