Ext.define('erp.view.fa.ars.Voucher',{
extend: 'Ext.Viewport',
layout: 'anchor',
hideBorders: true,
initComponent : function(){
var me = this;
Ext.apply(me, {
items: [{
anchor: '100% 26%',
xtype: 'erpFormPanel',
saveUrl: 'fa/ars/saveVoucher.action',
deleteUrl: 'fa/ars/deleteVoucher.action',
updateUrl: 'fa/ars/updateVoucher.action',
submitUrl: 'fa/ars/submitVoucher.action',
auditUrl: 'fa/ars/auditVoucher.action',
printUrl: 'fa/ars/printVoucher.action',
resAuditUrl: 'fa/ars/resAuditVoucher.action',
resSubmitUrl: 'fa/ars/resSubmitVoucher.action',
getIdUrl: 'common/getId.action?seq=VOUCHER_SEQ',
keyField: 'vo_id',
statusField: 'vo_statuscode',
codeField: 'vo_code'
},{
anchor: '100% 13%',
xtype: 'erpFormPanel',
id: 'form_disable',
caller: 'Voucher!Disable',
_noc: 1,
enableTools: false,
enableKeyEvents: false
}]
});
me.callParent(arguments);
me.createGrid();
me.getAssKind();
},
createGrid: function() {
var me = this;
me.getGridSet(function(config){
var data = config.data ? Ext.decode(config.data.replace(/,}/g, '}').replace(/,]/g, ']')) : [];
if(data.length == 0) {
for(var i = 0;i < 40;i++ ){
var o = new Object();
o.vd_detno = i + 1;
data.push(o);
}
} else {
config.fields.push({name: 'ass'});
}
var gridConfig = {}, cols = me.renderColumns(gridConfig, config.columns);
var grid = Ext.create('erp.view.core.grid.Panel2', Ext.apply(gridConfig, {
anchor: '100% 61%',
columns: cols,
store: new Ext.data.Store({
fields: config.fields,
data: data
}),
boxready: true,
plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
}), Ext.create('erp.view.core.plugin.CopyPasteMenu'), {
ptype: 'rowexpander',
expandOnDblClick: false,
startExpand: true,
rowBodyTpl : new Ext.XTemplate(
'',
'',
'',
'
',
'| {vds_asstype} | ',
'{vds_asscode} | {vds_assname} |
',
'
',
'
',
'',
'', {
onQueryClick: function() {
var id = Ext.id();
Ext.defer(this.onQuery, 1, this, [id]);
return id;
},
onQuery: function(id) {
var elm = Ext.get(id);
if(elm) {
var grid = this.owner;
Ext.EventManager.on(elm, {
click: function(event, el) {
if(!grid.readOnly) {
me.queryAss(el.getAttribute('title'), el.getAttribute('rel'));
}
Ext.EventManager.stopEvent(event);
},
buffer: 100
});
}
}
}),
renderer: function(value, metadata, record) {
if(metadata)
metadata.tdCls = Ext.baseCSSPrefix + 'grid-cell-special';
var ass = record.get('ass') || [];
return ass.length > 0 ? '
' : '';
}
}],
listeners: {
storeloaded: function(grid, data) {
me.getAssData(grid);
}
},
onExport: function() {
this.BaseUtil.exportGrid(this);
}
}));
me.insert(1, grid);
grid.fireEvent('storeloaded', grid);
grid.generateSummaryData();
if(config.dbfinds && config.dbfinds.length > 0){
grid.dbfinds = config.dbfinds;
}
Ext.defer(function(){
var status = Ext.getCmp('vo_statuscode');
if(status && status.getValue() != 'ENTERING' && status.getValue() != 'UNPOST') {
grid.readOnly = true;
Ext.util.CSS.createStyleSheet('.u-icon{display: none !important}', 'icon_readonly');
}
}, 300);
});
},
/**
* Grid配置及数据
*/
getGridSet: function(callback) {
var condition = getUrlParam('gridCondition');
condition = ((!condition || "null" == condition) ? "" : condition).replace(/IS/g, "=");
Ext.Ajax.request({
url : basePath + 'common/singleGridPanel.action',
params: {
caller: caller,
condition: condition
},
method : 'post',
callback : function(opt, s, res){
if (res) {
var r = new Ext.decode(res.responseText);
if(r.exceptionInfo){
showError(res.exceptionInfo);
} else {
callback.call(null, r);
}
}
}
});
},
renderColumns: function(gridConfig, cols) {
Ext.Array.each(cols, function(col){
var logic = col.logic;
delete col.locked;
if(!Ext.isEmpty(logic)) {
if(logic == 'detno'){
gridConfig.detno = col.dataIndex;
col.width = 40;
col.align = 'center';
col.renderer = function(val, meta) {
meta.tdCls = Ext.baseCSSPrefix + 'grid-cell-special';
return val;
};
} else if(logic == 'keyField'){
gridConfig.keyField = col.dataIndex;
} else if(logic == 'mainField'){
gridConfig.mainField = col.dataIndex;
} else if(logic == 'orNecessField'){
if(!gridConfig.orNecessField){
gridConfig.orNecessField = new Array();
}
gridConfig.orNecessField.push(col.dataIndex);
} else if(logic == 'necessaryField'){
gridConfig.necessaryField = col.dataIndex;
if(!gridConfig.necessaryFields){
gridConfig.necessaryFields = new Array();
}
gridConfig.necessaryFields.push(col.dataIndex);
if(!col.haveRendered){
col.renderer = function(val, meta, record, x, y, store, view){
var c = this.columns[y];
if(val != null && val.toString().trim() != ''){
if(c.xtype == 'datecolumn' && typeof val === 'object'){
val = Ext.Date.format(val, 'Y-m-d');
} else if(c.xtype == 'numbercolumn') {
val = Ext.util.Format.number(val, c.format || '0,000.00');
}
return val;
} else {
if(c.xtype == 'datecolumn'){
val = '';
}
return '
' +
'' + val + '';
}
};
}
} else if(logic == 'groupField'){
gridConfig.groupField = col.dataIndex;
}
}
});
return cols;
},
/**
* 所有核算类型
*/
getAssKind: function() {
var me = this;
Ext.Ajax.request({
url: basePath + 'fa/ars/assKind.action',
method: 'GET',
callback: function(opt, s, r) {
if(s) {
var data = Ext.decode(r.responseText), ks = {};
Ext.Array.each(data, function(d){
ks[d.AK_NAME] = d;
});
me.asskind = ks;
}
}
});
},
/**
* 辅助核算
*/
getAssData: function(grid) {
var data = {}, has = false;
grid.store.each(function(item, idx){
if(!Ext.isEmpty(item.get('ca_asstype'))){
has = true;
data[item.get('vd_id')] = item;
}
});
if(has) {
Ext.Ajax.request({
url: basePath + 'common/getFieldsDatas.action',
params: {
caller: 'VoucherDetailAss',
fields: 'vds_id,vds_vdid,vds_asstype,vds_asscode,vds_assname',
condition: 'vds_vdid in (' +Ext.Object.getKeys(data).join(',') + ') order by vds_vdid,vds_detno'
},
callback: function(opt, s, r) {
if(s) {
var rs = Ext.decode(r.responseText);
if(rs.success){
var ds = Ext.decode(rs.data), x, d;
for(var i in ds) {
x = ds[i];
d = data[x.VDS_VDID];
var ass = d.get('ass') || [];
ass.push({
vds_id: x.VDS_ID,
vds_vdid: x.VDS_VDID,
vds_asstype: x.VDS_ASSTYPE,
vds_asscode: x.VDS_ASSCODE,
vds_assname: x.VDS_ASSNAME
});
d.set('ass', ass);
d.modified = {};
d.dirty = false;
}
}
grid.store.each(function(item, idx){
if(!Ext.isEmpty(item.get('ca_asstype'))){
var ass = item.get('ass') || [], names = item.get('ca_assname').split('#'), len = names.length,
id = item.get('vd_id');
if(ass.length < len) {
for(var i in names) {
var d = Ext.Array.findBy(ass, function(t){
return t.vds_asstype == names[i];
});
if(!d) {
ass.push({vds_vdid: id, vds_asstype: names[i]});
if(ass.length == len)
break;
}
}
item.set('ass', ass);
}
}
});
}
}
});
}
},
/**
* 查找辅助核算
*/
queryAss: function(type, vdId) {
var me = this, kind = me.asskind[type];
if(kind) {
var search = kind.AK_DBFIND + '|' + kind.AK_ASSCODE, con = kind.AK_DBFIND == 'AssKindDetail' ? ('akd_akid=' + kind.AK_ID) : '';
var win = new Ext.window.Window({
id: 'dbwin',
title: '查找',
height: '80%',
width: '95%',
maximizable: true,
buttonAlign: 'center',
layout: 'anchor',
items: [{
tag: 'iframe',
frame: true,
anchor: '100% 100%',
layout: 'fit',
html: ''
},{
xtype: 'hidden',
hidden: true,
id: 'dbfind-ass-hidden',
listeners: {
aftertrigger: function(trigger, findRecord) {
var grid = Ext.getCmp('grid'), index = grid.store.findBy(function(t){
return t.get('vd_id') == vdId;
}), record = grid.store.getAt(index), ass = record.get('ass') || [];
for(var i in ass) {
if(ass[i].vds_asstype == type) {
ass[i].vds_asscode = findRecord.get(kind.AK_ASSCODE);
ass[i].vds_assname = findRecord.get(kind.AK_ASSNAME);
break;
}
}
record.set('ass', ass);
}
}
}],
buttons: [{
text: '关 闭',
iconCls: 'x-button-icon-close',
cls: 'x-btn-gray',
handler: function(btn) {
btn.ownerCt.ownerCt.close();
}
},
{
text: '重置条件',
id: 'reset',
cls: 'x-btn-gray',
handler: function(btn) {
var dbGrid = btn.ownerCt.ownerCt.el.dom.getElementsByTagName('iframe')[0].contentWindow.document.defaultView.Ext.getCmp('dbfindGridPanel');
dbGrid.resetCondition();
dbGrid.getCount();
}
}]
});
win.show();
}
}
});