Ext.QuickTips.init();
Ext.define('erp.controller.fa.arp.PayPlease', {
extend: 'Ext.app.Controller',
FormUtil: Ext.create('erp.util.FormUtil'),
GridUtil: Ext.create('erp.util.GridUtil'),
BaseUtil: Ext.create('erp.util.BaseUtil'),
ppdid:0,
views:[
'core.form.Panel','fa.arp.PayPlease','fa.arp.payplease.PayPleaseDetailDetGrid','fa.arp.payplease.PayPleaseDetailGrid','core.button.Save','core.button.Add','core.button.Close','core.button.Delete','core.button.Update','core.button.DeleteDetail',
'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.button.ResAccounted','core.button.AssMain','core.button.Accounted','core.form.FileField',
'core.button.StrikeBalance','core.grid.AssPanel','core.window.AssWindow','core.trigger.CateTreeDbfindTrigger','core.trigger.HrOrgTreeDbfindTrigger',
'core.button.Post','core.button.ResPost','core.button.Print','core.button.Submit','core.button.ResAudit','core.button.Audit','core.button.ResSubmit',
'erp.view.core.button.AddDetail','erp.view.core.button.DeleteDetail','erp.view.core.button.Copy','erp.view.core.button.Paste','erp.view.core.button.Up',
'erp.view.core.button.Down','erp.view.core.button.UpExcel','core.button.TurnPayBalance','core.button.TurnBankRegister','core.button.TurnBillAP','core.button.TurnBillARChange',
'core.trigger.MultiDbfindTrigger', 'core.form.SeparNumber','core.form.MultiField','core.button.GetSumAmount','core.form.MonthDateField',
'core.button.End','core.button.ResEnd'
],
init:function(){
var me = this;
me.gridLastSelected = null;
this.control({
'textfield[name=pp_thispayamount]':{
beforerender: function(field){
field.readOnly=false;
}
},
'field[name=pp_thispaydate]':{
beforerender: function(field){
field.readOnly = false;
//!field.value && (field.setValue(new Date()));
}
},
'field[name=pp_refno]':{
beforerender: function(field){
field.readOnly=false;
}
},
'field[name=pp_paymentcode]':{
beforerender: function(field){
field.readOnly=false;
}
},
'erpGetSumAmountButton':{
click: function(btn){
var grid1 = Ext.getCmp("paypleasedetailGrid"),grid2 = Ext.getCmp("paypleasedetaildetGrid"),items1 = grid1.store.data.items,items2 = grid2.store.data.items;
var detailamount1 = 0;
var detailamount2 = 0;
Ext.each(items2,function(item,index){
if(!me.GridUtil.isBlank(grid2,item.data)) {
detailamount2 = detailamount2 + Number(item.data['ppdd_thisapplyamount']);
}
});
me.gridLastSelected.set('ppd_applyamount',detailamount2);
}
},
//第一个从表
'paypleasedetailGrid':{
itemclick:me.onGridItemClick1,
afterrender:function(grid){
grid.plugins[0].on('afteredit',function(e){
setTimeout(function(){
var amount = 0;
Ext.each(grid.store.data.items,function(item,index){
amount=amount+Number(item.data['ppd_applyamount']);
});
Ext.getCmp('pp_total').setValue(Ext.util.Format.number(amount,'0.00'));
},200);
});
}
},
//第二个从表
'paypleasedetaildetGrid':{
afterrender: function(btn) {
me.BaseUtil.getSetting('sys', 'autoCreateApBill', function(bool) {
me.BaseUtil.getSetting('sys', 'useBillOutAP', function(bool) {
Ext.getCmp('bi_code').show();
});
});
},
itemclick:me.onGridItemClick2
},
'erpDeleteDetailButton': {
afterdelete: function(d, r, btn){
//还原发票锁定金额
Ext.Ajax.request({
url: basePath + 'fa/arp/reLockAmount.action',
params: {
id: d.ppdd_id,
abcode: d.ppdd_billcode,
amount: d.ppdd_thisapplyamount
},
callback: function(opt, s, r){
var res = Ext.decode(r.responseText);
if(res.success) {
}
}
});
}
},
//转付款单
'erpTurnPayBalanceButton':{
click:function(btn){
me.turnPayBalance();
},
afterrender: function(btn){
var status = Ext.getCmp(me.getForm(btn).statuscodeField);
if(status && status.value != 'AUDITED'){
btn.hide();
}
}
},
//转银行登记
'erpTurnBankRegisterButton':{
click:function(btn){
me.turnBankRegister();
},
afterrender: function(btn){
var status = Ext.getCmp(me.getForm(btn).statuscodeField);
if(status && status.value != 'AUDITED'){
btn.hide();
}
}
},
//应付票据付款
'erpTurnBillAPButton':{
click:function(btn){
me.turnBillAP();
},
afterrender: function(btn){
var status = Ext.getCmp(me.getForm(btn).statuscodeField);
if(status && status.value != 'AUDITED'){
btn.hide();
}
}
},
//应付票据付款
'erpTurnBillARChangeButton':{
click:function(btn){
me.turnBillARChange();
},
afterrender: function(btn){
var status = Ext.getCmp(me.getForm(btn).statuscodeField);
if(status && status.value != 'AUDITED'){
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.beforeSavePayPlease();
}
},
'erpDeleteButton' : {
click: function(btn){
me.FormUtil.onDelete(Ext.getCmp('pp_id').value);
}
},
'erpUpdateButton': {
click: function(btn){
this.beforeUpdatePayPlease();
}
},
'erpAddButton': {
click: function(){
me.FormUtil.onAdd('addPayBalance', '新增付款申请单', 'jsps/fa/arp/payplease.jsp?whoami='+caller);
}
},
'erpCloseButton': {
click: function(btn){
me.FormUtil.beforeClose(me);
}
},
'erpSubmitButton': {
afterrender: function(btn){
var status = Ext.getCmp(me.getForm(btn).statuscodeField);
if(status && status.value != 'ENTERING'){
btn.hide();
}
},
click: function(btn){
me.beforeSubmit(btn);
}
},
'erpResSubmitButton': {
afterrender: function(btn){
var status = Ext.getCmp(me.getForm(btn).statuscodeField);
if(status && status.value != 'COMMITED'){
btn.hide();
}
},
click: function(btn){
me.FormUtil.onResSubmit(Ext.getCmp('pp_id').value);
}
},
'erpAuditButton': {
afterrender: function(btn){
var status = Ext.getCmp(me.getForm(btn).statuscodeField);
if(status && status.value != 'COMMITED'){
btn.hide();
}
},
click: function(btn){
me.FormUtil.onAudit(Ext.getCmp('pp_id').value);
}
},
'erpResAuditButton': {
afterrender: function(btn){
var status = Ext.getCmp(me.getForm(btn).statuscodeField);
if(status && status.value != 'AUDITED'){
btn.hide();
}
},
click: function(btn){
me.FormUtil.onResAudit(Ext.getCmp('pp_id').value);
}
},
'erpEndButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pp_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 + 'fa/arp/endPayPlease.action',
params: {
caller: caller,
id: Ext.getCmp('pp_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){
alert("结案成功!");
window.location.reload();
}
}
});
}
});
}
},
'erpResEndButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pp_statuscode');
if (status && status.value != 'FINISH') {
btn.hide();
}
},
click: function(btn) {
warnMsg("确定反结案?", function(btn){
if(btn == 'yes'){
me.FormUtil.getActiveTab().setLoading(true);//loading...
Ext.Ajax.request({
url : basePath + 'fa/arp/resEndPayPlease.action',
params: {
caller: caller,
id: Ext.getCmp('pp_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){
alert("反结案成功!");
window.location.reload();
}
}
});
}
});
}
},
'erpPrintButton': {
click: function(btn){
var reportName="APPay_app";
var condition = '{PayPlease.pp_id}=' + Ext.getCmp('pp_id').value + '';
var id = Ext.getCmp('pp_id').value;
me.FormUtil.onwindowsPrint(id, reportName, condition);
}
},
'dbfindtrigger[name=ppdd_billcode]':{
focus: function(t){
t.setHideTrigger(false);
t.setReadOnly(false);
var record = Ext.getCmp('paypleasedetailGrid').selModel.selected.first();
if(!record || !record.data['ppd_vendcode']) {
showError("请先选择供应商!");
t.setHideTrigger(true);
t.setReadOnly(true);
} else {
var code = record.data['ppd_vendcode'];
t.dbBaseCondition = " ab_vendcode = '" + code + "'";
}
}
},
'dbfindtrigger[name=ppd_bankaccount]':{
focus: function(t){
var vecode = t.record.data['ppd_vendcode'];
if(vecode != ''){
t.dbBaseCondition = " vpd_vecode='"+vecode+"' ";
}
}
},
'multidbfindtrigger[name=ppdd_billcode]':{
focus: function(t){
t.setHideTrigger(false);
t.setReadOnly(false);
var record = Ext.getCmp('paypleasedetailGrid').selModel.selected.first();
if(!record || !record.data['ppd_vendcode']) {
showError("请先选择供应商!");
t.setHideTrigger(true);
t.setReadOnly(true);
} else {
var code = record.data['ppd_vendcode'];
t.dbBaseCondition = " ab_vendcode = '" + code + "'";
}
}
},
'#bi_code':{
beforetrigger: function(t){
t.setHideTrigger(false);
t.setReadOnly(false);
var record = Ext.getCmp('paypleasedetailGrid').selModel.selected.first();
if(!record || !record.data['ppd_vendcode']) {
showError("请先选择供应商!");
return false;
} else if (!record.data['ppd_currency']){
showError("请先选择币别!");
return false;
} else {
t.dbBaseCondition = " bi_vendcode = '" + record.data['ppd_vendcode'] + "' and bi_currency='" + record.data['ppd_currency'] + "'";
}
}
},
//抓取发票信息
'button[name=catchab]':{
click:function(btn){
var grid2 = Ext.getCmp('paypleasedetaildetGrid');
var form = Ext.getCmp('form');
var lastselect = me.gridLastSelected;
var params = new Object();
var thisamount = lastselect.data['ppd_applyamount'].toString();
if(lastselect == null){
//grid1 没有选择数据
Ext.Msg.alert('警告','请先填写供应商信息!');
}else{
//grid1 选择了数据
var array = new Array();
Ext.each(grid2.store.data.items,function(item,index){
var d = item.get('ppdd_id');
if(d != null && Number(d) > 0){
array.push(item);
}
});
if(array.length>0){
Ext.Msg.alert('警告','需要先清除明细行中的数据!');
} else {
params['ppd_id'] = lastselect.data['ppd_id'].toString();
params['ppd_ppid'] = lastselect.data['ppd_ppid'].toString();
params['startdate'] = Ext.getCmp('startdate').value;
params['enddate'] = Ext.getCmp('enddate').value;
params['caller'] = caller;
params['bicode'] = Ext.getCmp('bi_code').value;
me.FormUtil.getActiveTab().setLoading(true);
//抓取
Ext.Ajax.request({
url : basePath + form.catchAPUrl,
params : params,
method : 'post',
callback : function(options,success,response){
me.FormUtil.getActiveTab().setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.success){
catchSuccess(function(){
var condition = 'ppdd_ppdid='+lastselect.data['ppd_id'].toString();
if(thisamount != '0'){
grid2.getMyData(condition);
} else {
window.location.reload();
}
});
} else if(localJson.exceptionInfo){
showError(localJson.exceptionInfo);
} else{
catchFailure();//@i18n/i18n.js
}
}
});
}
}
}
},
//清除发票信息
'button[name=cleanab]':{
click:function(btn){
var grid2 = Ext.getCmp('paypleasedetaildetGrid');
warnMsg('确定清除所有明细行么?',function(t){
if(t=='yes'){
var lastselect = me.gridLastSelected;
var form = Ext.getCmp('form');
var params = new Object();
if(lastselect == null){
//grid1 没有选择数据
Ext.Msg.alert('警告','请先从第一明细表中选择一行明细行!');
}else{
params['ppd_id'] = lastselect.data['ppd_id'].toString();
params['ppd_ppid'] = lastselect.data['ppd_ppid'].toString();
params['caller'] = caller;
Ext.Ajax.request({
url : basePath + form.cleanAPUrl,
params : params,
method : 'post',
callback : function(options,success,response){
me.FormUtil.getActiveTab().setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.success){
cleanSuccess(function(){
//add成功后刷新页面进入可编辑的页面
var condition = 'ppdd_ppdid='+lastselect.data['ppd_id'].toString();
grid2.getMyData(condition);
});
} else if(localJson.exceptionInfo){
showError(localJson.exceptionInfo);return;
} else{
cleanFailure();//@i18n/i18n.js
}
}
});
}
}else{
return;
}
});
}
},
//发票明细
'button[name=detail]':{
click:function(btn){
var det = Ext.getCmp('paypleasedetaildetGrid');
if(det.store.data.items.length == 0) {
showError('请先选择申请单明细!');
return;
}
var id = det.store.data.items[0].get('ppdd_ppdid');
if(id == 0) {
showError('请先选择申请单明细!');
return;
}
var win = Ext.getCmp('bill-win');
if(!win) {
var url = basePath +'jsps/common/datalist.jsp?whoami=APBill!CWIM!Detail&_noc=1';
url += '&urlcondition=ab_code in (select ppdd_billcode from paypleasedetaildet where ppdd_ppdid=' +
id + ')';
win = new Ext.window.Window({
id : 'bill-win',
title: '发票明细',
height: '100%',
width: '80%',
maximizable : true,
buttonAlign : 'center',
closeAction: 'hide',
layout : 'anchor',
items: [{
tag : 'iframe',
frame : true,
anchor : '100% 100%',
layout : 'fit',
html : ''
}],
buttons : [{
text : '关 闭',
iconCls: 'x-button-icon-close',
cls: 'x-btn-gray',
handler : function(){
Ext.getCmp('bill-win').hide();
}
}]
});
}
win.show();
}
}
});
},
turnPayBalance: function(){
var grid = Ext.getCmp('paypleasedetailGrid');
var items = grid.selModel.getSelection();
if(items.length==0){
Ext.Msg.alert('警告','请勾选需要转付款单的明细行!');
return;
}
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){
grid.multiselected.push(item);
}
});
var form = Ext.getCmp('form');
var records = Ext.Array.unique(grid.multiselected);
var r = form.getValues();
if(records.length > 0){
var params = new Object();
params.caller = caller;
var data = new Array();
params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
var bool = false;
Ext.each(records, function(record, index){
var f = form.fo_detailMainKeyField;
if(((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
&& this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
||(f && this.data[f] != null && this.data[f] != ''
&& this.data[f] != '0' && this.data[f] != 0))&&(record.data['ppd_statuscode']!='TURNPB')){
bool = true;
var o = new Object();
if(grid.keyField){
o[grid.keyField] = record.data[grid.keyField];
} else {
params.id[index] = record.data[form.fo_detailMainKeyField];
}
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.data = Ext.encode(data);
var main = parent.Ext.getCmp("content-panel");
main.getActiveTab().setLoading(true);//loading...
Ext.Ajax.request({
url : basePath + 'fa/PayPleaseController/turnPayBalance.action',
params: params,
method : 'post',
callback : function(options,success,response){
main.getActiveTab().setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.exceptionInfo){
showError(localJson.exceptionInfo);
return "";
}
if(localJson.success){
if(localJson.log){
showMessage("提示", localJson.log);
}
Ext.Msg.alert("提示", "处理成功!", function(){
var me = this;
//add成功后刷新页面进入可编辑的页面
var value = r[form.keyField];
var formCondition = form.keyField + "IS" + value ;
if(me.contains(window.location.href, '?', true)){
window.location.href = window.location.href + '&formCondition=' +
formCondition;
} else {
window.location.href = window.location.href + '?formCondition=' +
formCondition;
}
});
}
}
});
} else {
showError("没有需要处理的数据!");
}
}
},
turnBankRegister: function(){
var grid = Ext.getCmp('paypleasedetailGrid'), catecode = Ext.getCmp('pp_paymentcode').value;
var items = grid.selModel.getSelection();
var thisamount = Ext.getCmp('pp_thispayamount').value, amount = 0;
var ppamount = Ext.getCmp('pp_total').value;
var thispaydate = Ext.getCmp('pp_thispaydate').value;
if(Ext.isEmpty(thispaydate)){
Ext.Msg.alert('警告','请填写本次付款日期!');
return;
}
Ext.each(grid.store.data.items,function(item,index){
amount=amount+Number(item.data['ppd_account']);
});
if(thisamount-(ppamount-amount)>0.01){
Ext.Msg.alert('警告','本次付款金额超过剩余未转金额!未转金额:'+ (ppamount-amount));
return;
}
if(items.length==0){
Ext.Msg.alert('警告','请勾选需要转银行登记的明细行!');
return;
}
if(catecode == null || catecode == ''){
Ext.Msg.alert('警告','请填写需要转银行登记的付款方信息!');
return;
}
if(thisamount == null || thisamount=='' || thisamount==0){
Ext.Msg.alert('警告','本次付款金额未填写!');
return;
}
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){
grid.multiselected.push(item);
}
});
var form = Ext.getCmp('form');
var records = Ext.Array.unique(grid.multiselected);
var r = form.getValues();
if(records.length > 0){
var params = new Object();
params.caller = caller;
var data = new Array();
params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
var bool = false;
Ext.each(records, function(record, index){
var f = form.fo_detailMainKeyField;
if(((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
&& this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
||(f && this.data[f] != null && this.data[f] != ''
&& this.data[f] != '0' && this.data[f] != 0))&&(record.data['ppd_statuscode']!='TURNPB')){
bool = true;
var o = new Object();
if(grid.keyField){
o[grid.keyField] = record.data[grid.keyField];
} else {
params.id[index] = record.data[form.fo_detailMainKeyField];
}
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.data = Ext.encode(data);
var main = parent.Ext.getCmp("content-panel");
main.getActiveTab().setLoading(true);//loading...
Ext.Ajax.request({
url : basePath + 'fa/PayPleaseController/turnBankRegister.action',
params: params,
method : 'post',
callback : function(options,success,response){
main.getActiveTab().setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.exceptionInfo){
showError(localJson.exceptionInfo);
return "";
}
if(localJson.success){
if(localJson.log){
showMessage("提示", localJson.log);
}
Ext.Msg.alert("提示", "处理成功!", function(){
var me = this;
//add成功后刷新页面进入可编辑的页面
var value = r[form.keyField];
var formCondition = form.keyField + "IS" + value ;
if(me.contains(window.location.href, '?', true)){
window.location.href = window.location.href + '&formCondition=' +
formCondition;
} else {
window.location.href = window.location.href + '?formCondition=' +
formCondition;
}
});
}
}
});
} else {
showError("没有需要处理的数据!");
}
}
},
turnBillAP: function(){
var grid = Ext.getCmp('paypleasedetailGrid'), catecode = Ext.getCmp('pp_paymentcode').value;
var items = grid.selModel.getSelection();
var thisamount = Ext.getCmp('pp_thispayamount').value, amount = 0;
var ppamount = Ext.getCmp('pp_total').value;
var thispaydate = Ext.getCmp('pp_thispaydate').value;
if(Ext.isEmpty(thispaydate)){
Ext.Msg.alert('警告','请填写本次付款日期!');
return;
}
Ext.each(grid.store.data.items,function(item,index){
amount=amount+Number(item.data['ppd_account']);
});
if(thisamount-(ppamount-amount)>0.01){
Ext.Msg.alert('警告','本次付款金额超过剩余未转金额!未转金额:'+ (ppamount-amount));
return;
}
if(items.length==0){
Ext.Msg.alert('警告','请勾选需要转应付票据的明细行!');
return;
}
if(catecode == null || catecode == ''){
Ext.Msg.alert('警告','请填写需要转应付票据的付款方信息!');
return;
}
if(thisamount == null || thisamount=='' || thisamount==0){
Ext.Msg.alert('警告','本次付款金额未填写!');
return;
}
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){
grid.multiselected.push(item);
}
});
var form = Ext.getCmp('form');
var records = Ext.Array.unique(grid.multiselected);
var r = form.getValues();
if(records.length > 0){
var params = new Object();
params.caller = caller;
var data = new Array();
params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
var bool = false;
Ext.each(records, function(record, index){
var f = form.fo_detailMainKeyField;
if(((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
&& this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
||(f && this.data[f] != null && this.data[f] != ''
&& this.data[f] != '0' && this.data[f] != 0))&&(record.data['ppd_statuscode']!='TURNPB')){
bool = true;
var o = new Object();
if(grid.keyField){
o[grid.keyField] = record.data[grid.keyField];
} else {
params.id[index] = record.data[form.fo_detailMainKeyField];
}
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.data = Ext.encode(data);
var main = parent.Ext.getCmp("content-panel");
main.getActiveTab().setLoading(true);//loading...
Ext.Ajax.request({
url : basePath + 'fa/PayPleaseController/turnBillAP.action',
params: params,
method : 'post',
callback : function(options,success,response){
main.getActiveTab().setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.exceptionInfo){
showError(localJson.exceptionInfo);
return "";
}
if(localJson.success){
if(localJson.log){
showMessage("提示", localJson.log);
}
Ext.Msg.alert("提示", "处理成功!", function(){
var me = this;
//add成功后刷新页面进入可编辑的页面
var value = r[form.keyField];
var formCondition = form.keyField + "IS" + value ;
if(me.contains(window.location.href, '?', true)){
window.location.href = window.location.href + '&formCondition=' +
formCondition;
} else {
window.location.href = window.location.href + '?formCondition=' +
formCondition;
}
});
}
}
});
} else {
showError("没有需要处理的数据!");
}
}
},
turnBillARChange: function(){
var grid = Ext.getCmp('paypleasedetailGrid'), catecode = Ext.getCmp('pp_paymentcode').value;
var items = grid.selModel.getSelection();
var thisamount = Ext.getCmp('pp_thispayamount').value, amount = 0;
var ppamount = Ext.getCmp('pp_total').value;
var thispaydate = Ext.getCmp('pp_thispaydate').value;
if(Ext.isEmpty(thispaydate)){
Ext.Msg.alert('警告','请填写本次付款日期!');
return;
}
Ext.each(grid.store.data.items,function(item,index){
amount=amount+Number(item.data['ppd_account']);
});
if(thisamount-(ppamount-amount)>0.01){
Ext.Msg.alert('警告','本次付款金额超过剩余未转金额!未转金额:'+ (ppamount-amount));
return;
}
if(items.length==0){
Ext.Msg.alert('警告','请勾选需要转应付票据的明细行!');
return;
}
/*if(catecode == null || catecode == ''){
Ext.Msg.alert('警告','请填写需要转应付票据的付款方信息!');
return;
}*/
if(thisamount == null || thisamount=='' || thisamount==0){
Ext.Msg.alert('警告','本次付款金额未填写!');
return;
}
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){
grid.multiselected.push(item);
}
});
var form = Ext.getCmp('form');
var records = Ext.Array.unique(grid.multiselected);
var r = form.getValues();
if(records.length > 0){
var params = new Object();
params.caller = caller;
var data = new Array();
params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
var bool = false;
Ext.each(records, function(record, index){
var f = form.fo_detailMainKeyField;
if(((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
&& this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
||(f && this.data[f] != null && this.data[f] != ''
&& this.data[f] != '0' && this.data[f] != 0))&&(record.data['ppd_statuscode']!='TURNPB')){
bool = true;
var o = new Object();
if(grid.keyField){
o[grid.keyField] = record.data[grid.keyField];
} else {
params.id[index] = record.data[form.fo_detailMainKeyField];
}
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.data = Ext.encode(data);
var main = parent.Ext.getCmp("content-panel");
main.getActiveTab().setLoading(true);//loading...
Ext.Ajax.request({
url : basePath + 'fa/PayPleaseController/turnBillARChange.action',
params: params,
method : 'post',
callback : function(options,success,response){
main.getActiveTab().setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.exceptionInfo){
showError(localJson.exceptionInfo);
return "";
}
if(localJson.success){
if(localJson.log){
showMessage("提示", localJson.log);
}
Ext.Msg.alert("提示", "处理成功!", function(){
var me = this;
//add成功后刷新页面进入可编辑的页面
var value = r[form.keyField];
var formCondition = form.keyField + "IS" + value ;
if(me.contains(window.location.href, '?', true)){
window.location.href = window.location.href + '&formCondition=' +
formCondition;
} else {
window.location.href = window.location.href + '?formCondition=' +
formCondition;
}
});
}
}
});
} else {
showError("没有需要处理的数据!");
}
}
},
//点击第一个grid
onGridItemClick1: function(selModel,record){
var me = this;
me.gridLastSelected = record;
var ppd_id = record.data['ppd_id'];
this.ppdid = ppd_id;
var grid = Ext.getCmp('paypleasedetailGrid');
var ppddgrid = Ext.getCmp('paypleasedetaildetGrid');
if(ppd_id > 0 && !me.GridUtil.isBlank(grid,record.data)){
var condition = "ppdd_ppdid='"+ppd_id+"'";
ppddgrid.getMyData(condition);
}
this.onGridItemClick(selModel,record,'paypleasedetailGrid');
},
//点击第二个GRID
onGridItemClick2: function(selModel,record){
this.onGridItemClick(selModel,record,'paypleasedetaildetGrid');
},
onGridItemClick: function(selModel, record,id){//grid行选择
this.GridUtil.onGridItemClick(selModel, record,id);
},
getForm: function(btn){
return btn.ownerCt.ownerCt;
},
beforeSavePayPlease: function(){
this.beforeSave();
},
beforeUpdatePayPlease:function(){
var s = ' ';
var ppdgrid = Ext.getCmp('paypleasedetailGrid');
var items = ppdgrid.store.data.items;
var bool = true;
var pptotal = Number(Ext.getCmp('pp_total').getValue());
var amount = 0;
Ext.each(items,function(item){
var keys = Ext.Object.getKeys(item.modified);
Ext.each(keys,function(key){
if(key=='ppd_auditamount'||key=='ppd_ifpay'){
item.set('ppd_editor',em_name);
item.set('ppd_editorid',em_uu);
}
});
var applyamount = item.data['ppd_applyamount'];
var auditamount = item.data['ppd_auditamount'];
if(applyamount'+s+')' + $I18N.common.form.necessaryInfo2);
return false;
},
beforeUpdate: function(me){
var mm = this;
var form = Ext.getCmp('form');
if(! this.checkForm()){
return;
}
var grid = Ext.getCmp('paypleasedetailGrid');
var date = Ext.getCmp('pp_date').getValue();
grid.store.each(function(record){
if(record.dirty && !mm.GridUtil.isBlank(grid, record.data)){
if(Ext.isEmpty(record.get('ppd_startdate'))) {
record.set('ppd_startdate', Ext.Date.getFirstDateOfMonth(date));
}
if(Ext.isEmpty(record.get('ppd_overdate'))) {
record.set('ppd_overdate', Ext.Date.getLastDateOfMonth(date));
}
}
});
var gridsDet = Ext.getCmp('paypleasedetaildetGrid');
var currency1 = '';
if(this.gridLastSelected){
if(this.gridLastSelected.data['ppd_id']){
currency1 = this.gridLastSelected.data['ppd_currency'];
mm.ppdid = this.gridLastSelected.data['ppd_id'];
}
}else{
currency1 = grid.store.data.items[0].data['ppd_currency'];
}
var sameCurrency = true;
Ext.each(gridsDet.store.data.items,function(item, index){
if(item.dirty && !mm.GridUtil.isBlank(gridsDet, item.data)){
var thisapplyamount = item.data['ppdd_thisapplyamount'];
if(thisapplyamount == 0 || thisapplyamount == null){
showError('明细表第' + item.data['ppdd_detno'] + '行本次申请金额不能为空!');return;
return;
}
if(!Ext.isEmpty(currency1) && item.data['ppdd_currency'] != currency1){
sameCurrency = false;
}
}
});
if(!sameCurrency){
showError($I18N.common.msg.failure_update_currency);
return;
}
if(mm.ppdid == 0 || mm.ppdid == null){
if(grid){
mm.ppdid = grid.store.data.items[0].data['ppd_id'];
}else{
mm.ppdid = 0;
}
}
//如果ppdid == 0 则次页面为新建页面 活着以前也没有在grid1中添加数据
//grid1 中的数据
var param1 = mm.GridUtil.getGridStore(grid);
//grid2中的数据
var param2 = mm.getGridStoreDet(gridsDet);
//ppdid==0的情况为 grid1第一条没有数据的情况 次情况只能保存grid1中的数据 grid2中的数据保存不上
//如果ppdid!=0 则可能的情况为 1.点击grid1选择了一条数据 2.没有点击grid1 但是grid1中有数据 此时
//grid2中的数据自动保存在grid1中第一条数据下
if(mm.ppdid == 0){
if(param2 == null || param2 == ''){
//此时grid2数据为空 可以保存grid1的数据
mm.onUpdate(param1);
}else{
warnMsg('不能保存从表二中的数据,是否只保存从表一?',function(btn){
if(btn =='yes'){
//保存从表一中的数据
mm.onUpdate(param1);
}else{
//return
return;
}
});
}
}else{
if(param2 ==null||param2==''){
mm.onUpdate(param1);
}else{
mm.onUpdate(param1,param2);
}
}
},
beforeSave: function(me){
var mm = this;
var form = Ext.getCmp('form');
if(! this.checkForm()){
return;
}
if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
mm.FormUtil.getSeqId(form);
}
var grid = Ext.getCmp('paypleasedetailGrid');
var date = Ext.getCmp('pp_date').getValue();
grid.store.each(function(record){
if(record.dirty && !mm.GridUtil.isBlank(grid, record.data)){
if(Ext.isEmpty(record.get('ppd_startdate'))) {
record.set('ppd_startdate', Ext.Date.getFirstDateOfMonth(date));
}
if(Ext.isEmpty(record.get('ppd_overdate'))) {
record.set('ppd_overdate', Ext.Date.getLastDateOfMonth(date));
}
}
});
var gridsDet = Ext.getCmp('paypleasedetaildetGrid');
var currency1 = '';
if(this.gridLastSelected){
currency1 = this.gridLastSelected.data['ppd_currency'];
mm.ppdid = this.gridLastSelected.data['ppd_id'];
} else{
currency1 = grid.store.first().data['ppd_currency'];
}
var sameCurrency = true;
Ext.each(gridsDet.store.data.items,function(item, index){
if(item.dirty && !mm.GridUtil.isBlank(gridsDet,item.data)){
if(!Ext.isEmpty(currency1) && item.data['ppdd_currency'] != currency1){
sameCurrency = false;
}
}
});
if(!sameCurrency){
showError($I18N.common.msg.failure_save_currency);
return;
}
if(mm.ppdid == 0 || mm.ppdid == null){
if(grid){
mm.ppdid = grid.store.data.items[0].data['ppd_id'];
}else{
mm.ppdid = 0;
}
}
//如果ppdid == 0 则次页面为新建页面 活着以前也没有在grid1中添加数据
//grid1 中的数据
var param1 = mm.GridUtil.getGridStore(grid);
//grid2中的数据
var param2 = mm.getGridStoreDet(gridsDet);
//ppdid==0的情况为 grid1第一条没有数据的情况 次情况只能保存grid1中的数据 grid2中的数据保存不上
//如果ppdid!=0 则可能的情况为 1.点击grid1选择了一条数据 2.没有点击grid1 但是grid1中有数据 此时
//grid2中的数据自动保存在grid1中第一条数据下
if(mm.ppdid == 0){
if(param2 == null || param2 == ''){
//此时grid2数据为空 可以保存grid1的数据
mm.onSave(param1);
}else{
warnMsg('不能保存从表二中的数据,是否只保存从表一?',function(btn){
if(btn =='yes'){
//保存从表一中的数据
mm.onSave(param1);
}else{
//return
return;
}
});
}
}else{
if(param2 ==null||param2==''){
mm.onSave(param1);
}else{
mm.onSave(param1,param2);
}
}
},
beforeSubmit: function(){
var me = this;
var grid1 = Ext.getCmp('paypleasedetailGrid'),items1=grid1.store.data.items;
var grid2 = Ext.getCmp('paypleasedetaildetGrid'),items2=grid2.store.data.items;
var applyamount = 0, nowamount=0,amount=0;
var bool = true;
Ext.each(items2,function(item,index){
if(!me.GridUtil.isBlank(grid2, item.data)){
nowamount = nowamount+Number(item.data['ppdd_thisapplyamount']);
if(Math.abs(Number(item.data['ppdd_billamount']))0.001){
//冲账金额与明细行本次结算总和不等
//抛出异常
bool = false;
showError('申请金额与发票详情中本次申请金额不等,不能提交');return;
}
}
});
if(amount != pptotal){
bool = false;
showError($I18N.common.grid.submitPayPleaseError1);return;
}
if(bool)
me.FormUtil.onSubmit(Ext.getCmp('pp_id').value);
} else {
if(bool)
me.FormUtil.onSubmit(Ext.getCmp('pp_id').value);
}
},
/**
* 拿到grid里面要提交的数据
*/
getGridStoreDet: function(grid){
if(grid == null){
grid = Ext.getCmp('grid');
}
var jsonGridData = new Array();
var form = Ext.getCmp('form');
var s = grid.getStore().data.items;//获取store里面的数据
var dd;
for(var i=0;i 0){
tab = win[win.length-1];
}
}
return tab;
},
/**
* string:原始字符串
* substr:子字符串
* isIgnoreCase:忽略大小写
*/
contains: function(string,substr,isIgnoreCase){
if(isIgnoreCase){
string=string.toLowerCase();
substr=substr.toLowerCase();
}
var startChar=substr.substring(0,1);
var strLen=substr.length;
for(var j=0;j