Ext.QuickTips.init();
Ext.define('erp.controller.plm.test.TestPost', {
extend: 'Ext.app.Controller',
requires: ['erp.util.FormUtil', 'erp.util.GridUtil','erp.util.BaseUtil'],
views: ['plm.test.TestPost'],
init:function(){
var me = this;
me.FormUtil = Ext.create('erp.util.FormUtil');
me.GridUtil = Ext.create('erp.util.GridUtil');
me.BaseUtil = Ext.create('erp.util.BaseUtil');
this.control({
'button': {
click: function(btn){
var cal = btn.caller;
switch(cal) {
case 'ProdInOut!PurcCheckin':
me.test(cal, btn.text,"采购验收单");
break;
case 'ProdInOut!PurcCheckout':
me.test(cal, btn.text,"采购验退单");
break;
case 'ProdInOut!Sale':
break;
case 'ProdInOut!SaleReturn':
break;
case 'ProdInOut!Picking':
break;
case 'ProdInOut!Make!Return':
break;
}
}
}
});
},
test: function(caller, title, piclass){
var me = this;
Ext.create('Ext.Window', {
id: 'test-win',
height: '100%',
width: '100%',
title: title,
layout: 'border',
caller: caller,
items: [{
region: 'center',
layout: 'anchor',
items: [{
xtype: 'form',
anchor: '100% 5%',
layout: 'hbox',
items: [{
fieldLabel: '压力指数',
xtype: 'combo',
editable: false,
store: Ext.create('Ext.data.Store', {
fields: ['display', 'value'],
data: [{display: 10, value: 10}, {display: 20, value: 20}, {display: 50, value: 50},
{display: 100, value: 100}, {display: 200, value: 200}, {display: 500, value: 500},
{display: 1000, value: 1000}]
}),
displayField: 'display',
valueField: 'value',
queryMode: 'local',
value: 10
},{
xtype: 'button',
text: '生成测试单据',
cls: 'x-btn-blue',
width: 100,
handler: function(btn){
me.createPreData(caller, btn.ownerCt.down('combo').value,piclass);
}
},{
xtype: 'button',
text: '过账',
cls: 'x-btn-blue',
width: 100,
handler: function(){
me.post();
}
},{
xtype: 'button',
text: '查看物料库存',
cls: 'x-btn-blue',
width: 100,
handler: function(){
me.wareHouse();
}
},{
xtype: 'button',
text: '清除测试数据',
cls: 'x-btn-blue',
width: 100,
handler: function(){
me.clear();
}
}]
},{
xtype: 'panel',
anchor: '100% 95%',
layout : 'fit',
html : ''
}]
},{
region: 'east',
width: '30%',
id: 'log',
xtype: 'panel',
title: '
测试记录
',
layout: 'anchor',
items: [{
anchor: '100% 100%',
xtype: 'textarea',
value: ''
}],
append: function(val){
var v = this.down('textarea').value || '';
this.down('textarea').setValue(v + '\n' + '时间:' + Ext.Date.format(new Date(), 'Y-m-d H:i:s')
+ '\n>>>>' + val + '\n');
},
clear: function(){
this.down('textarea').setValue('');
}
}],
listeners: {
close: function(){
me.clear();
}
}
}).show();
},
createPreData: function(caller, count, piclass){
var me = this,w = Ext.getCmp('test-win');
w.down('#log').clear();
me.logger('正在生成采购单数据');
//生成采购
Ext.Ajax.request({
url: basePath + 'plm/test/initPurchase.action',
params: {
count: count
},
callback: function(opt, s, r){
var res = Ext.decode(r.responseText);
if(res.exceptionInfo) {
me.logger(res.exceptionInfo.replace(/
|
|
/g, '\n'));return;
}
if(res.data) {
var c = Ext.decode(res.data)[0].pd_code;
me.logger('生成采购单,单号:' + c);
w.preData = c;
me.createTestData(caller, count, res.data, piclass);
}
}
});
},
createTestData: function(caller, count, data, piclass){
var me = this;
me.logger('正在生成出入库单数据');
var t1 = new Date().getTime();
var win = Ext.getCmp('test-win');
win.setLoading(true);
//生成采购
Ext.Ajax.request({
url: basePath + 'plm/test/initProdIOPurc.action',
params: {
data: data,
count: count,
piclass:piclass,
caller:caller
},
timeout: 100000,
callback: function(opt, s, r){
win.setLoading(false);
var res = Ext.decode(r.responseText);
if(res.exceptionInfo) {
me.logger(res.exceptionInfo.replace(/
|
|
/g, '\n'));return;
}
if(res.data) {
me.logger("已生成" + count + "条出入库单据\n>>>>耗时:" + (new Date().getTime() - t1)/1000 + "秒");
win.testData = res.data;
var co = res.data[0];
var iframe = win.getEl().select('iframe').elements[0];
iframe.src = basePath + 'jsps/scm/reserve/prodInOut.jsp?whoami=' + caller +
'&formCondition=pi_inoutnoIS\'' + co + '\'&gridCondition=pd_inoutnoIS\'' + co + '\'';
}
}
});
},
post: function(){
var w = Ext.getCmp('test-win'), me = this;
if(w) {
if(w.testData) {
var ok = 0,ng = 0, len = w.testData.length,t = new Date().getTime();
w.setLoading(true);
Ext.each(w.testData, function(c){
Ext.Ajax.request({
url: basePath + 'plm/test/postProdIOPurc.action',
params: {
code: c
},
timeout: 150000,
callback: function(opt, s, r) {
var res = Ext.decode(r.responseText);
if(res.result) {
me.logger('过账失败,单号:' + c + '\n原因:' + res.result);
ng++;
} else {
ok++;
}
if(ok + ng == len) {
w.setLoading(true);
me.logger('过账通过率:' + (100 * ok/len) + '%\n' + '>>>>过账失败率:' + (100 * ng/len) + '%\n' +
'>>>>总用时:' + ((new Date().getTime() - t)/1000) + '秒');
var iframe = w.getEl().select('iframe').elements[0];
iframe.src = iframe.src;
}
}
});
});
}
}
},
wareHouse: function(){
var w = Ext.getCmp('test-win');
if(w) {
if(w.preData) {
var ww = Ext.create('Ext.Window', {
width: '70%',
height: '90%',
title: '物料库存查询',
layout: 'anchor',
items: [{
anchor: '100% 100%',
xtype: 'grid',
columnLines: true,
columns: [{
text: '物料编号',
width: 160,
dataIndex: 'PD_PRODCODE'
},{
text: '数量',
width: 400,
columns: [{
text: 'Productwh',
flex: 1,
xtype: 'numbercolumn',
dataIndex: 'PW_ONHAND'
},{
text: 'PurchaseDetail',
flex: 1,
dataIndex: 'PD_ACCEPTQTY'
},{
text: 'Batch',
flex: 1,
dataIndex: 'BA_REMAIN'
},{
text: 'ProdIoDetail',
flex: 1,
dataIndex: 'PD_INQTY'
}]
},{
width: 400,
renderer: function(val, meta, record){
return (record.get('PW_ONHAND') == record.get('PD_ACCEPTQTY') == record.get('BA_REMAIN')
== record.get('PD_INQTY')) ? "正常" : "数量有异";
}
}],
store: Ext.create('Ext.data.Store', {
fields: ['PD_PRODCODE', 'PW_ONHAND', 'PD_ACCEPTQTY', 'BA_REMAIN', 'PD_INQTY'],
data: []
})
}]
});
ww.show();
ww.setLoading(true);
Ext.Ajax.request({
url : basePath + 'common/getFieldsDatas.action',
params: {
caller: 'PurchaseDetail left join io_pdinqty_view ' +
'on PurchaseDetail.pd_prodcode=io_pdinqty_view.pd_prodcode ' +
'left join io_pwonhand_view on PurchaseDetail.pd_prodcode=io_pwonhand_view.pw_prodcode ' +
'left join io_batch_remain_view on PurchaseDetail.pd_prodcode=io_batch_remain_view.ba_prodcode',
fields: 'PurchaseDetail.pd_prodcode pd_prodcode,pw_onhand,pd_inqty,ba_remain,pd_acceptqty',
condition: 'pd_code=\'' + w.preData + '\''
},
method : 'post',
callback : function(options,success,response){
ww.setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.exceptionInfo){
showError(localJson.exceptionInfo);return;
}
if(localJson.success){
var data = localJson.data;
ww.down('grid').store.loadData(Ext.decode(data));
}
}
});
}
}
},
clear: function(){
var w = Ext.getCmp('test-win');
if(w) {
if(w.preData) {
var codes = new Array();
Ext.each(w.testData, function(){
codes.push('\'' + this + '\'');
});
w.setLoading(true);
Ext.Ajax.request({
url: basePath + 'plm/test/clearProdIOPurc.action',
params: {
code: w.preData,
codes: Ext.Array.concate(codes, ',')
},
callback: function(opt, s, r) {
w.setLoading(false);
var res = Ext.decode(r.responseText);
if(res.success) {
alert('测试数据已清除');
w.down('#log').clear();
w.preData = null;
w.testData = null;
var iframe = w.getEl().select('iframe').elements[0];
iframe.src = basePath + 'jsps/scm/reserve/prodInOut.jsp?whoami=' + w.caller;
}
}
});
}
}
},
logger: function(msg){
Ext.getCmp('log').append(msg);
}
});