Ext.QuickTips.init();
Ext.define('erp.controller.scm.purchase.Purchase', {
extend: 'Ext.app.Controller',
FormUtil: Ext.create('erp.util.FormUtil'),
GridUtil: Ext.create('erp.util.GridUtil'),
BaseUtil: Ext.create('erp.util.BaseUtil'),
views: ['core.form.Panel', 'scm.purchase.Purchase', 'core.grid.Panel2', 'core.toolbar.Toolbar',
'core.form.MultiField', 'core.button.Save', 'core.button.Add', 'core.button.Submit',
'core.button.Print', 'core.button.PrintHK', 'core.button.PrintEn','core.button.Upload', 'core.button.ResAudit',
'core.button.Audit', 'core.button.Close', 'core.button.Delete', 'core.button.Update', 'core.button.B2B',
'core.button.DeleteDetail', 'core.button.ResSubmit', 'core.button.End','core.button.Printyestax', 'core.button.Printnotax','core.button.AttendDataCom',
'core.button.ResEnd', 'core.button.GetPrice', 'core.button.Export', 'core.button.StandardPrice',
'core.trigger.DbfindTrigger', 'core.trigger.TextAreaTrigger', 'core.form.YnField',
'core.grid.YnColumn', 'core.form.StatusField', 'core.form.FileField', 'core.button.PrintByCondition',
'core.button.CopyAll', 'core.button.ResetSync', 'core.button.RefreshSync','core.button.RefreshQty','core.button.Split'],
init: function() {
var me = this;
this.control({
'erpGridPanel2': {
afterrender: function(grid) {
var status = Ext.getCmp('pu_statuscode');
if (status && status.value != 'ENTERING' && status.value != 'COMMITED') {
Ext.each(grid.columns,
function(c) {
c.setEditor(null);
});
}
},
itemclick: this.onGridItemClick
},
'field[name=pu_currency]': {
beforetrigger: function(field) {
var t = field.up('form').down('field[name=pu_date]'),
value = t.getValue();
if(value) {
field.findConfig = 'cm_yearmonth=' + Ext.Date.format(value, 'Ym');
}
}
},
'field[name=pu_vendremarkcode]': {
beforetrigger: function(field) {
var t = field.up('form').down('field[name=pu_vendcode]'),
value = t.getValue();
if(value) {
field.findConfig = "vr_vendcode='" + value + "'";
}
}
},
'field[name=pu_outcredit]': {
afterrender: function(f){
if(f.value != null && f.value != '' && f.value != 0){
f.inputEl.setStyle({color: 'OrangeRed'});
}
}
},
'field[name=pu_outamount]': {
afterrender: function(f){
if(f.value != null && f.value != '' && f.value != 0){
f.inputEl.setStyle({color: 'OrangeRed'});
}
}
},
'dbfindtrigger[name=pd_price]': {
focus: function(t){
t.setHideTrigger(false);
t.setReadOnly(false);
if(Ext.getCmp('pu_vendcode')){
var cucode = Ext.getCmp('pu_vendcode').value,
currency = Ext.getCmp('pu_currency').value;
record = Ext.getCmp('grid').selModel.lastSelected,
prodcode = record.data['pd_prodcode'];
if(Ext.isEmpty(cucode)){
showError("请先选择供应商编号!");
t.setHideTrigger(true);
t.setReadOnly(true);
} else if(Ext.isEmpty(currency)){
showError("请先填写币别!");
t.setHideTrigger(true);
t.setReadOnly(true);
} else if(Ext.isEmpty(prodcode)){
showError("请先选择物料编号!");
t.setHideTrigger(true);
t.setReadOnly(true);
} else {
t.dbBaseCondition = "PPD_VENDCODE='" + cucode + "' and PPD_CURRENCY='" + currency + "' and ppd_prodcode='" + prodcode + "'";
}
}
}
},
'erpSaveButton': {
click: function(btn) {
var form = me.getForm(btn), codeField = Ext.getCmp(form.codeField);
if(codeField.value == null || codeField.value == ''){
me.BaseUtil.getRandomNumber(caller);//自动添加编号
var res = me.getLeadCode(Ext.getCmp('pu_kind').value);
if(res != null && res != ''){
codeField.setValue(res + codeField.getValue());
}
}
//保存之前的一些前台的逻辑判定
this.beforeSavePurchase();
}
},
'erpDeleteButton': {
click: function(btn) {
me.FormUtil.onDelete(Ext.getCmp('pu_id').value);
}
},
'erpAttendDataComButton':{
beforerender:function(btn){
btn.setText("计算");
},
click: function(btn){
var id=Ext.getCmp('pu_id').value;
grid = Ext.getCmp('grid');
Ext.Ajax.request({
url : basePath + "scm/purchase/purchasedataupdate.action",
params: {
id:id
},
method : 'post',
async: false,
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.exceptionInfo){
showError(res.exceptionInfo);
return;
}
grid.GridUtil.loadNewStore(grid,{
caller:'Purchase',
condition:gridCondition,
_noc:1
});
showError("计算成功!");
}
});
}
},
'erpGetPriceButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pu_statuscode');
if (status && status.value != 'ENTERING') {
btn.hide();
}
},
click: function(btn) {
id = Ext.getCmp('pu_id').value;
Ext.Ajax.request({
url: basePath + "scm/purchase/getPrice.action",
params: {
id: id
},
method: 'post',
callback: function(options, success, response) {
var res = new Ext.decode(response.responseText);
if (res.exceptionInfo != null) {
showError(res.exceptionInfo);
return;
}
if (res.success) {
updateSuccess(function(btn) {
//update成功后刷新页面进入可编辑的页面
window.location.reload();
});
}
}
});
}
},
'erpStandardPriceButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pu_statuscode');
if (status && status.value != 'ENTERING') {
btn.hide();
}
},
click: function(btn) {
id = Ext.getCmp('pu_id').value;
Ext.Ajax.request({
url: basePath + "scm/purchase/getStandardPrice.action",
params: {
id: id
},
method: 'post',
callback: function(options, success, response) {
var res = new Ext.decode(response.responseText);
if (res.exceptionInfo != null) {
showError(res.exceptionInfo);
return;
}
if (res.success) {
updateSuccess(function(btn) {
//update成功后刷新页面进入可编辑的页面
window.location.reload();
});
}
}
});
}
},
'erpUpdateButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pu_statuscode');
if (status && status.value != 'ENTERING') {
btn.hide();
}
},
click: function(btn) {
me.beforeUpdate();
}
},
'erpAddButton': {
click: function() {
me.FormUtil.onAdd('addPurchase', '新增采购单', 'jsps/scm/purchase/purchase.jsp');
}
},
'erpCloseButton': {
click: function(btn) {
me.FormUtil.beforeClose(me);
}
},
'erpSubmitButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pu_statuscode');
if (status && status.value != 'ENTERING') {
btn.hide();
}
},
click: function(btn) {
var grid = Ext.getCmp('grid'), items = grid.store.data.items;
var bool = true, pudate = Ext.getCmp('pu_date').value;
//数量不能为空或0
Ext.each(items,
function(item) {
if (item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != "") {
if (item.data['pd_qty'] == null) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的数量为空');
return;
} else if (Ext.Date.format(item.data['pd_delivery'],'Y-m-d') < Ext.Date.format(pudate,'Y-m-d')) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的交货日期小于单据日期');
return;
} else if (Ext.Date.format(item.data['pd_delivery'],'Y-m-d') < Ext.Date.format(new Date(),'Y-m-d')) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的交货日期小于当前日期');
return;
}
}
});
//物料交货日期不能小于录入日期
Ext.each(items,
function(item) {
if (item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != "") {
if (item.data['pd_delivery'] == null) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的承诺日期为空');
return;
} else if (Ext.Date.format(item.data['pd_delivery'],'Y-m-d') < Ext.Date.format(Ext.getCmp('pu_indate').value,'Y-m-d')) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的承诺日期小于单据录入日期');
return;
}
}
});
if (bool) {
me.FormUtil.onSubmit(Ext.getCmp('pu_id').value);
}
}
},
'erpResSubmitButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pu_statuscode');
if (status && status.value != 'COMMITED') {
btn.hide();
}
},
click: function(btn) {
me.FormUtil.onResSubmit(Ext.getCmp('pu_id').value);
}
},
'erpAuditButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pu_statuscode');
if (status && status.value != 'COMMITED') {
btn.hide();
}
},
click: function(btn) {
me.FormUtil.onAudit(Ext.getCmp('pu_id').value);
}
},
'erpB2BButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pu_statuscode');
if (status && status.value != 'AUDITED') {
btn.hide();
}
},
click: function(btn) {
me.FormUtil.onB2b(Ext.getCmp('pu_id').value);
}
},
'erpResAuditButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pu_statuscode');
if (status && status.value != 'AUDITED') {
btn.hide();
}
},
click: function(btn) {
me.FormUtil.onResAudit(Ext.getCmp('pu_id').value);
}
},
'erpEndButton': {
afterrender: function(btn) {
var status = Ext.getCmp('pu_statuscode');
if (status && status.value != 'AUDITED') {
btn.hide();
}
},
click: function(btn) {
warnMsg("确定结案?", function(btn){
if(btn == 'yes'){
me.FormUtil.getActiveTab().setLoading(true);//loading...
var grid = Ext.getCmp('grid'), jsonData=new Array();
grid.store.each(function(item){
if(item.get('pd_id') > 0)
jsonData.push({pd_id: item.get('pd_id')});
});
Ext.Ajax.request({
url : basePath + 'scm/purchase/endPurchase.action',
params: {
caller: caller,
data: Ext.JSON.encode(jsonData)
},
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();
}
}
});
}
});
}
},
/**
* 更改供应商回复信息
*/
'#updatevendorbackInfo': {
click: function(btn) {
var record = btn.ownerCt.ownerCt.getSelectionModel().getLastSelected();
me.UpdateVendorInfo(record);
}
},
'erpPrintButton': {
click: function(btn) {
var reportName = '';
reportName = "PURCLIST";
var condition = '{Purchase.pu_id}=' + Ext.getCmp('pu_id').value + '';
var id = Ext.getCmp('pu_id').value;
me.FormUtil.onwindowsPrint2(id, reportName, condition);
}
},
'erpPrintEnButton': {
click: function(btn) {
var reportName = '';
reportName = "PURCLIST_EN";
var condition = '{Purchase.pu_id}=' + Ext.getCmp('pu_id').value + '';
var id = Ext.getCmp('pu_id').value;
me.FormUtil.onwindowsPrint2(id, reportName, condition);
}
},
'erpPrintHKButton': {
click: function(btn) {
var reportName = '';
reportName = "PURCLIST_HK";
var condition = '{Purchase.pu_id}=' + Ext.getCmp('pu_id').value + '';
var id = Ext.getCmp('pu_id').value;
me.FormUtil.onwindowsPrint2(id, reportName, condition);
}
},
'erpPrintyestaxButton': {
click: function(btn) {
var reportName = '';
reportName = "PURCLIST_yestax";
var condition = '{Purchase.pu_id}=' + Ext.getCmp('pu_id').value + '';
var id = Ext.getCmp('pu_id').value;
me.FormUtil.onwindowsPrint2(id, reportName, condition);
}
},
'erpPrintnotaxButton': {
click: function(btn) {
var reportName = '';
reportName = "PURCLIST_notax";
var condition = '{Purchase.pu_id}=' + Ext.getCmp('pu_id').value + '';
var id = Ext.getCmp('pu_id').value;
me.FormUtil.onwindowsPrint2(id, reportName, condition);
}
},
'erpPrintByConditionButton': {
/*afterrender: function(btn){
var status = Ext.getCmp('dgl_statuscode');
if(status && status.value != 'AUDITED'){
btn.hide();
}
}*/
},
'field[name=pu_vendcode]': {
change: function(f) {
if (f.value != null && f.value != '') {
if (Ext.getCmp('pu_receivecode').value == null || Ext.getCmp('pu_receivecode').value.toString().trim() == '') {
Ext.getCmp('pu_receivecode').setValue(f.value);
}
}
}
},
'field[name=pu_vendname]': {
change: function(f) {
if (f.value != null && f.value != '') {
if (Ext.getCmp('pu_receivename').value == null || Ext.getCmp('pu_receivename').value.toString().trim() == '') {
Ext.getCmp('pu_receivename').setValue(f.value);
}
}
}
},
'erpCopyButton': {
click: function(btn) {
me.copy();
}
},
'erpResetSyncButton': {
afterrender: function(btn) {
var form = btn.ownerCt.ownerCt,
s = form.down('#pu_statuscode'),
v = form.down('#pu_receivecode');
if (s.getValue() != 'AUDITED' || v.getValue() != '02.01.028') {
btn.hide();
}
},
click: function(btn) {
var form = btn.ownerCt.ownerCt,
id = form.down('#pu_id').getValue();
btn.resetSyncStatus(basePath + 'scm/purchase/syncstatus.action', id);
}
},
'erpRefreshSyncButton': {
afterrender: function(btn) {
var form = btn.ownerCt.ownerCt,
s = form.down('#pu_statuscode'),
v = form.down('#pu_sync');
if (s.getValue() != 'AUDITED' || (v && v.getValue() == null)) {
btn.hide();
}
}
},
'dbfindtrigger[name=pu_vendcontact]': {
afterrender:function(trigger){
trigger.dbKey='pu_vendcode';
trigger.mappingKey='vc_vecode';
trigger.dbMessage='请先选供应商编号!';
}
},
'erpRefreshQtyButton':{
click: function(btn){
var puid=Ext.getCmp('pu_id').value;
Ext.Ajax.request({
url : basePath + "scm/purchase/refreshqty.action",
params:{
id: puid
},
method:'post',
callback:function(options,success,response){
var localJson = new Ext.decode(response.responseText);
if(localJson.success){
Ext.Msg.alert("提示","刷新成功!");
window.location.reload();
} else {
if(localJson.exceptionInfo){
var str = localJson.exceptionInfo;
if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
str = str.replace('AFTERSUCCESS', '');
showError(str);
} else {
showError(str);return;
}
}
}
}
});
}
},
/**
* PO分拆
*/
'erpSplitButton': {
beforerender: function(btn) {
btn.text="拆分及交期回复";
btn.width=130;
},
click: function(btn) {
var record=btn.ownerCt.ownerCt.getSelectionModel().getLastSelected();
me.PurchaseSplit(record);
}
}
});
},
UpdateVendorInfo: function(record) {
win = this.getVendorInfoWindow(record);
win.show();
},
getVendorInfoWindow: function(record) {
var me = this;
var date = record.data.pd_deliveryreply;
if (date != null) {
date = Ext.Date.parse(date, "Y-m-d");
}
return Ext.create('Ext.window.Window', {
width: 430,
height: 250,
closeAction: 'destroy',
cls: 'custom-blue',
title: '
更改供应商回信息
',
layout: {
type: 'vbox'
},
items: [{
width: '100%',
html: '' + '*注:修改采购单跟多信息请制作采购变更单
进入 '
},
{
margin: '5 0 0 5',
xtype: 'datefield',
fieldLabel: '回复交期',
name: 'DELIVERYREPLY',
format: 'Y-m-d',
value: date,
id: 'DELIVERYREPLY'
},
{
margin: '5 0 0 5',
xtype: 'numberfield',
fieldLabel: '回复数量',
name: 'QTYREPLY',
hideTrigger: true,
value: record.data.pd_qtyreply,
id: 'QTYREPLY'
},{
margin: '5 0 0 5',
xtype: 'checkbox',
columnidth: 0.4,
fieldLabel: '能否按时交货',
name: 'isok',
value:(record.data.pd_isok && record.data.pd_isok=='是'),
id: 'isok'
},
{
margin: '5 0 0 5',
xtype: 'textfield',
columnidth: 0.4,
fieldLabel: '回复明细',
name: 'replydetail',
value:record.data.pd_replydetail,
id: 'replydetail'
}
],
buttonAlign: 'center',
buttons: [{
xtype: 'button',
text: '保存',
width: 60,
iconCls: 'x-button-icon-save',
handler: function(btn) {
var w = btn.up('window');
me.saveVendorInfo(w);
win.close();
win.destroy();
}
},
{
xtype: 'button',
columnWidth: 0.1,
text: '关闭',
width: 60,
iconCls: 'x-button-icon-close',
margin: '0 0 0 10',
handler: function(btn) {
var win = btn.up('window');
win.close();
win.destroy();
}
}]
});
},
saveVendorInfo: function(w) {
var deliveryreply = w.down('field[name=DELIVERYREPLY]').getValue();
var qty = w.down('field[name=QTYREPLY]').getValue();
grid = Ext.getCmp('grid'),
record = grid.getSelectionModel().getLastSelected();
if (!deliveryreply && !qty && !Ext.getCmp('replydetail').value) {
showError('请先设置回复信息');
return;
} else {
var isok = w.down('field[name=isok]').getValue();
var dd = {
pd_id: record.data.pd_id,
pd_qtyreply: qty ? qty: 0,
pd_deliveryreply: deliveryreply ? Ext.Date.format(deliveryreply, 'Y-m-d') : null,
pd_isok: isok ? '是': '否',
pd_replydetail:Ext.getCmp('replydetail').value
};
Ext.Ajax.request({
url: basePath + 'scm/purchase/updateVendorBackInfo.action',
params: {
data: unescape(Ext.JSON.encode(dd)),
caller: caller
},
method: 'post',
callback: function(opt, s, res) {
var r = new Ext.decode(res.responseText);
if (r.success) {
grid.GridUtil.loadNewStore(grid, {
caller: caller,
condition: gridCondition
});
showMessage('提示', '更新成功!', 1000);
} else if (r.exceptionInfo) {
showError(r.exceptionInfo);
} else {
saveFailure();
}
}
});
}
},
onGridItemClick: function(selModel, record) { //grid行选择
if (record.data.pd_id != 0 && record.data.pd_id != null && record.data.pd_id != '') {
var btn = Ext.getCmp('updatevendorbackInfo');
btn && btn.setDisabled(false);
btn = Ext.getCmp('erpSplitButton');
btn && btn.setDisabled(false);
}
this.GridUtil.onGridItemClick(selModel, record);
},
getForm: function(btn) {
return btn.ownerCt.ownerCt;
},
beforeSavePurchase: function() {
var grid = Ext.getCmp('grid'), items = grid.store.data.items,
c = Ext.getCmp('pu_code').value, pudate = Ext.getCmp('pu_date').value;
var vend = Ext.getCmp('pu_vendid').value,
vendcode = Ext.getCmp('pu_vendcode').value,
vendname = Ext.getCmp('pu_vendname').value;
if (vend == null || vend == '' || vend == '0' || vend == 0) {
showError('未选择供应商,或供应商编号无效!');
return;
}
Ext.Array.each(items,
function(item) {
item.set('pd_code', c);
item.set('pd_vendid', vend);
item.set('pd_vendcode', vendcode);
item.set('pd_vendname', vendname);
});
//手工录入采购单,合同类型不能为标准
var pu_kind = Ext.getCmp('pu_kind').value;
if (pu_kind == null || pu_kind == '') {
showError('合同类型不能为空');
return;
}
if (pu_kind == '标准' || pu_kind == 'normal' || pu_kind == '標準') {
showError('手工录入采购单,合同类型不能为标准');
return;
}
var items = grid.store.data.items;
var bool = true;
//数量不能为空或0
Ext.each(items,function(item) {
if (item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != "") {
if (item.data['pd_qty'] == null || item.data['pd_qty'] == '' || item.data['pd_qty'] == '0' || item.data['pd_qty'] == 0) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的数量为空');
return;
}
}
});
//物料交货日期不能小于录入日期
Ext.each(items, function(item) {
if (item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != "") {
if (item.data['pd_delivery'] == null) {
item.set('pd_delivery', Ext.getCmp('pu_delivery'));
} else if (Ext.Date.format(item.data['pd_delivery'],'Y-m-d') < Ext.Date.format(new Date(),'Y-m-d')) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的交货日期小于当前日期');
return;
} else if (Ext.Date.format(item.data['pd_delivery'],'Y-m-d') < Ext.Date.format(pudate,'Y-m-d')) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的交货日期小于单据日期');
return;
}
}
});
//保存purchase
if (bool) this.FormUtil.beforeSave(this);
},
beforeUpdate: function() {
var grid = Ext.getCmp('grid'), items = grid.store.data.items,
c = Ext.getCmp('pu_code').value, pudate = Ext.getCmp('pu_date').value;
var vend = Ext.getCmp('pu_vendid').value,
vendcode = Ext.getCmp('pu_vendcode').value,
vendname = Ext.getCmp('pu_vendname').value;
if (vend == null || vend == '' || vend == '0' || vend == 0) {
showError('未选择供应商,或供应商编号无效!');
return;
}
Ext.Array.each(items,
function(item) {
item.set('pd_code', c);
item.set('pd_vendid', vend);
item.set('pd_vendcode', vendcode);
item.set('pd_vendname', vendname);
});
var items = grid.store.data.items;
var bool = true;
//数量不能为空或0
Ext.each(items,
function(item) {
if (item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != "") {
if (item.data['pd_qty'] == null || item.data['pd_qty'] == '' || item.data['pd_qty'] == '0' || item.data['pd_qty'] == 0) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的数量为空');
return;
}
}
});
/*//采购价格不能为0
if (Ext.getCmp('pu_getprice').value == 0) { //是否自动获取单价
Ext.each(items,
function(item) {
if (item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != "") {
if (item.data['pd_price'] == null) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的价格为空');
return;
} else if (item.data['pd_price'] == 0 || item.data['pd_price'] == '0') {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的价格为0');
return;
}
}
});
}*/
//物料交货日期不能小于录入日期
Ext.each(items,
function(item) {
if (item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != "") {
if (item.data['pd_delivery'] == null) {
item.set('pd_delivery', Ext.getCmp('pu_delivery'));
} else if (Ext.Date.format(item.data['pd_delivery'],'Y-m-d') < Ext.Date.format(new Date(),'Y-m-d')) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的交货日期小于当前日期');
return;
} else if (Ext.Date.format(item.data['pd_delivery'],'Y-m-d') < Ext.Date.format(pudate,'Y-m-d')) {
bool = false;
showError('明细表第' + item.data['pd_detno'] + '行的交货日期小于单据日期');
return;
}
}
});
//更新
if (bool) this.FormUtil.onUpdate(this);
},
/**
* 复制采购单
*/
copy: function() {
var me = this,
form = Ext.getCmp('form');
var v = form.down('#pu_id').value;
if (v > 0) {
form.setLoading(true);
Ext.Ajax.request({
url: basePath + 'scm/purchase/copyPurchase.action',
params: {
caller: caller,
id: v
},
callback: function(opt, s, r) {
form.setLoading(false);
var res = Ext.decode(r.responseText);
if (res.data) {
var url = 'jsps/scm/purchase/purchase.jsp?formCondition=pu_idIS' + res.data.id + '&gridCondition=pd_puidIS' + res.data.id;
showMessage('提示', '复制成功', 2000);
me.FormUtil.onAdd(null, '采购单', url);
} else {
showError(res.exceptionInfo);
}
}
});
}
},
/**
*采购单拆分
* */
PurchaseSplit:function(record){
var me=this,originaldetno=Number(record.data.pd_detno);
var puid=record.data.pd_puid;
var pdid=record.data.pd_id;
Ext.create('Ext.window.Window',{
width:850,
height:'95%',
iconCls:'x-grid-icon-partition',
title:'采购单拆分
',
id:'win',
items:[{
xtype:'form',
layout:'column',
region:'north',
frame:true,
defaults:{
xtype:'textfield',
columnWidth:0.5,
readOnly:true,
fieldStyle:'background:#f0f0f0;border: 0px solid #8B8970;color:blue;'
},
items:[{
fieldLabel:'采购单号',
value:record.data.pd_code,
id:'sacode'
},{
fieldLabel:'物料编号' ,
value:record.data.pd_prodcode
},{
fieldLabel:'物料名称',
value:record.data.pr_detail
},{
fieldLabel:'原序号' ,
value:record.data.pd_detno
},{
fieldLabel:'原数量',
value:record.data.pd_qty
}],
buttonAlign:'center',
buttons:[{
xtype:'button',
columnWidth:0.12,
text:'保存',
width:60,
iconCls: 'x-button-icon-save',
margin:'0 0 0 30',
handler:function(btn){
var store=Ext.getCmp('smallgrid').getStore();
var count=0;
var jsonData=new Array();
var dd;
Ext.Array.each(store.data.items,function(item){
if(item.data.pd_qty!=0&&item.data.pd_delivery!=null&&item.data.pd_qty>0){
if(item.dirty){
dd=new Object();
//说明是新增批次
dd['pd_qty']=item.data.pd_qty;
dd['pd_id']=item.data.pd_id;
dd['pd_detno']=item.data.pd_detno;
dd['pd_delivery']=Ext.Date.format(item.data.pd_delivery, 'Y-m-d');
dd['pd_replydetail']=item.data.pd_replydetail;
dd['pd_isok']=item.data.pd_isok=='-1'?'是':'否';
dd['pd_qtyreply']=item.data.pd_qtyreply;
if(item.data.pd_deliveryreply){
dd['pd_deliveryreply']=Ext.Date.format(item.data.pd_deliveryreply, 'Y-m-d');
}else
dd['pd_deliveryreply']=null;
jsonData.push(Ext.JSON.encode(dd));
}
count+=Number(item.data.pd_qty);
}
});
var assqty=Number(record.data.pd_qty);
if(count!=assqty){
showError('分拆数量必须等于原数量!') ;
return;
}else{
var r=new Object();
r['pd_id']=record.data.pd_id;
r['pd_puid']=record.data.pd_puid;
r['pd_detno']=record.data.pd_detno;
var params=new Object();
params.formdata = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
params.data = unescape(jsonData.toString().replace(/\\/g,"%"));
Ext.Ajax.request({
url : basePath +'scm/purchase/splitPurchase.action',
params : params,
waitMsg:'拆分中...',
method : 'post',
callback : function(options,success,response){
var localJson = new Ext.decode(response.responseText);
if(localJson.success){
saveSuccess(function(){
//add成功后刷新页面进入可编辑的页面
Ext.getCmp('win').close();
me.loadSplitData(originaldetno,puid,record);
});
} else if(localJson.exceptionInfo){
var str = localJson.exceptionInfo;
if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
str = str.replace('AFTERSUCCESS', '');
saveSuccess(function(){
//add成功后刷新页面进入可编辑的页面
me.loadSplitData(originaldetno,puid,record);
});
showError(str);
} else {
showError(str);
return;
}
} else{
saveFailure();
}
}
});
}
}
},{
xtype:'button',
columnWidth:0.1,
text:'关闭',
width:60,
iconCls: 'x-button-icon-close',
margin:'0 0 0 10',
handler:function(btn){
Ext.getCmp('win').close();
}
}]
},{
xtype:'gridpanel',
region:'south',
id:'smallgrid',
layout:'fit',
height:'80%',
columnLines:true,
store:Ext.create('Ext.data.Store',{
fields:[{name:'pd_delivery',type:'date'},{name:'pd_qty',type:'int'},{name:'pd_deliveryreply',type:'date'},{name:'pd_qtyreply',type:'int'},{name:'pd_replydetail',type:'string'},{name:'pd_isok',type:'int'},{name:'pd_acceptqty',type:'int'},{name:'pd_yqty',type:'int'},{name:'pd_id',type:'int'}],
data:[]
}),
plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1,
listeners:{
'edit':function(editor,e,Opts){
var record=e.record;
var version=record.data.ma_version;
if(version){
e.record.reject();
Ext.Msg.alert('提示','不能修改已拆分明细!');
}
}
}
})],
tbar: [{
tooltip: '添加批次',
iconCls: 'x-button-icon-add',
width:25,
handler : function() {
var store = Ext.getCmp('smallgrid').getStore();
var r = new Object();
r.pd_delivery=record.get('pd_delivery');
r.pd_qty=0;
r.pd_id=0;
r.pd_detno=store.getCount()+1;
store.insert(store.getCount(), r);
}
}, {
tooltip: '删除批次',
width:25,
itemId: 'delete',
iconCls: 'x-button-icon-delete',
handler: function(btn) {
var sm = Ext.getCmp('smallgrid').getSelectionModel();
var record=sm.getSelection();
var pd_id=record[0].data.pd_id;
if(pd_id&&pd_id!=0){
Ext.Msg.alert('提示','不能删除已拆批次或原始行号!');
return;
}
var store=Ext.getCmp('smallgrid').getStore();
store.remove(record);
if (store.getCount() > 0) {
sm.select(0);
}
},
disabled: true
}],
listeners:{
itemmousedown:function(selmodel, record){
selmodel.ownerCt.down('#delete').setDisabled(false);
}
},
columns:[{
dataIndex:'pd_detno',
header:'序号',
format:'0',
xtype:'numbercolumn'
},{
dataIndex:'pd_delivery',
header:'交货日期',
xtype:'datecolumn',
width:120,
editable:true,
renderer:function(val,meta,record){
if(record.data.ma_version){
meta.tdCls = "x-grid-cell-renderer-cl";
}
if(val)
return Ext.Date.format(val, 'Y-m-d');
else return null;
},
editor:{
xtype: 'datefield',
format:'Y-m-d'
}
},{
dataIndex:'pd_qty',
header:'数量',
width:120,
xtype:'numbercolumn',
editable:true,
renderer:function(val,meta,record){
if(record.data.ma_version){
meta.tdCls = "x-grid-cell-renderer-cl";
}
return val;
},
editor:{
xtype:'numberfield',
format:'0',
hideTrigger: true
}
},{
dataIndex:'pd_deliveryreply',
header:'回复交期',
xtype:'datecolumn',
width:120,
editable:true,
renderer:function(val,meta,record){
if(val)
return Ext.Date.format(val, 'Y-m-d');
else return null;
},
editor:{
xtype: 'datefield',
format:'Y-m-d'
}
},{
dataIndex:'pd_qtyreply',
header:'回复数量',
width:120,
xtype:'numbercolumn',
editable:true,
renderer:function(val,meta,record){
if(record.data.ma_version){
meta.tdCls = "x-grid-cell-renderer-cl";
}
return val;
},
editor:{
xtype:'numberfield',
format:'0',
hideTrigger: true
}
},{
dataIndex:'pd_isok',
header:'是否准时',
xtype:'yncolumn',
width:100,
editable:true
},{
dataIndex:'pd_replydetail',
header:'回复明细',
width:100,
renderer:function(val,meta,record){
if(record.data.originaldetno){
meta.tdCls = "x-grid-cell-renderer-cl";
}
return val;
} ,
editor:{
xtype:'textfield',
format:'0',
hideTrigger: true
},
editable:true
},{
dataIndex:'pd_yqty',
header:'已转收料数',
xtype:'numbercolumn',
width:100,
editable:false
},{
dataIndex:'pd_acceptqty',
header:'已转验收数',
xtype:'numbercolumn',
width:100,
editable:false
},{
dataIndex:'pd_id',
header:'pdid',
width:0,
xtype:'numbercolumn',
editable:true,
editor:{
xtype:'numberfield',
format:'0',
hideTrigger: true
}
}]
}] ,
listeners:{
'beforeclose':function(view ,opt){
var grid = Ext.getCmp('grid');
var value = Ext.getCmp('pu_id').value;
var gridCondition = grid.mainField + '=' + value,
gridParam = {caller: caller, condition: gridCondition};
me.GridUtil.loadNewStore(grid, gridParam);
}
}
}).show();
this.loadSplitData(originaldetno,puid,record);
},
loadSplitData:function(detno,puid,record){
var grid=Ext.getCmp('smallgrid');
grid.setLoading(true);//loading...
Ext.Ajax.request({//拿到grid的columns
url : basePath + "common/loadNewGridStore.action",
params:{
caller:'PurchaseSplit',
condition:"pd_detno="+detno+" AND pd_puid="+puid+" order by pd_id asc"
},
method : 'post',
callback : function(options,success,response){
grid.setLoading(false);
var res = new Ext.decode(response.responseText);
if(res.exceptionInfo){
showError(res.exceptionInfo);return;
}
var data = res.data;
grid.store.loadData(data);
//自定义event
grid.addEvents({
storeloaded: true
});
grid.fireEvent('storeloaded', grid, data);
}
});
},
getLeadCode: function(type) {
var result = null;
Ext.Ajax.request({
url : basePath + 'common/getFieldData.action',
async: false,
params: {
caller: 'PurchaseKind',
field: 'pk_excode',
condition: 'pk_name=\'' + type + '\''
},
method : 'post',
callback : function(opt, s, res){
var r = new Ext.decode(res.responseText);
if(r.exceptionInfo){
showError(r.exceptionInfo);return;
} else if(r.success){
result = r.data;
}
}
});
return result;
}
});