|
|
define(function (require, exports, module) {
|
|
|
//引入业务类基类
|
|
|
let BaseBiz = require('apps/rht/base/rhtBiz');
|
|
|
let rhtComm = require('apps/rht/comm/rhtComm');
|
|
|
//引入业务服务
|
|
|
let Service = require('./stk180308service');
|
|
|
|
|
|
/**
|
|
|
* 定义业务类对象
|
|
|
* @param vm 界面相关ViewModule
|
|
|
*/
|
|
|
function Biz(vm) {
|
|
|
//继承第一步,构造继承
|
|
|
BaseBiz.call(this, vm);
|
|
|
}
|
|
|
|
|
|
//继承第二步,方法继承
|
|
|
inherits(Biz, BaseBiz);
|
|
|
|
|
|
//新增行后处理,默认值已经处理
|
|
|
Biz.prototype.afterNewRow = function (dataSrc, newRow) {
|
|
|
if (dataSrc.uiObjCode === this.dsMaster.uiObjCode) {
|
|
|
let InOrgCode = rhtComm.GetInOrgCode(Store.logOn.orgCode).message;
|
|
|
newRow.setColumnValue('InOrgCode', InOrgCode);
|
|
|
}
|
|
|
this.super('afterNewRow', dataSrc, newRow);
|
|
|
};
|
|
|
//明细行单行提交触发的校验
|
|
|
Biz.prototype.dataRowValidate = function (dataSrc, dr) {
|
|
|
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
|
|
|
let self = this;
|
|
|
let curMaster = self.dsMaster.currentRow;
|
|
|
let BillNo = TypeUtil.toString(curMaster['BillNo']);
|
|
|
let InOrgCode = TypeUtil.toString(curMaster['InOrgCode']);
|
|
|
let CkCode = TypeUtil.toString(curMaster['CkCode']);
|
|
|
|
|
|
let TzCount = TypeUtil.toFloat(dr['TzCount']);
|
|
|
let InPcNo = TypeUtil.toString(dr['InPcNo']);
|
|
|
let OutPcNo = TypeUtil.toString(dr['OutPcNo']);
|
|
|
let DepID = TypeUtil.toString(dr['DepID']);
|
|
|
if (TzCount <= 0) {
|
|
|
return "调整数量应该大于0!";
|
|
|
}
|
|
|
if (InPcNo.length <= 0) {
|
|
|
return "调入批次不能为空!";
|
|
|
}
|
|
|
if (OutPcNo.length <= 0) {
|
|
|
return "调出批次不能为空!";
|
|
|
}
|
|
|
if (DepID.length <= 0) {
|
|
|
return "请录入正确的部门信息!";
|
|
|
}
|
|
|
|
|
|
//判断商品库存是否充足
|
|
|
let Params = BillNo+";"+"1814;*;"+InOrgCode+";"+DepID+";"+CkCode+";"+OutPcNo;
|
|
|
let JSONObject={DataType:"1",Params:Params};
|
|
|
let retKyCount = Service.getSlideMenuData("pubsysBaseBL","MSysGetLsKcKyCount",JSONObject,"","","","");
|
|
|
if (retKyCount.result === 1) {
|
|
|
if (TzCount > TypeUtil.toFloat(retKyCount.message)){
|
|
|
let errmsg = "商品调整数量大于当前可用数量"+retKyCount.message;
|
|
|
return errmsg;
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
return "查询商品库存失败:"+retKyCount.message;
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* @description 数据发生变化时调用
|
|
|
* @param dataSrc 数据集
|
|
|
* @param dr 数据行
|
|
|
* @param dc 数据列
|
|
|
*/
|
|
|
Biz.prototype.fieldChanged = function (dataSrc, dr, dc) {
|
|
|
let self = this;
|
|
|
let currentRow = self.dsMaster.currentRow;
|
|
|
if (currentRow === null) return false;
|
|
|
|
|
|
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
|
|
|
switch (dc.fieldName) {
|
|
|
case 'InPcNo':
|
|
|
this.fieldChangedInPcNo(dataSrc, dr, dc);
|
|
|
break;
|
|
|
case 'OutPcNo':
|
|
|
this.fieldChangedOutPcNo(dataSrc, dr, dc);
|
|
|
break;
|
|
|
case 'SglCount':
|
|
|
this.fieldChangedSglCount(dataSrc, dr, dc);
|
|
|
break;
|
|
|
case 'PackCount':
|
|
|
this.fieldChangedPackCount(dataSrc, dr, dc);
|
|
|
break;
|
|
|
case 'PluCode':
|
|
|
/**使用Text属性重新赋值,引发数据字典中字段OutPcNo、InPcNo的参照条件的检查
|
|
|
*此问题背景:输入商品和调入调出批次号后,再修改商品时,调入调出批次号没有清空,
|
|
|
*直接保存记账可能会因为商品与批次不一致造成库存混乱.
|
|
|
**/
|
|
|
dr.setColumnText('OutPcNo', TypeUtil.toString(dataSrc['OutPcNo']));
|
|
|
dr.setColumnText('InPcNo', TypeUtil.toString(dataSrc['InPcNo']));
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
this.super('fieldChanged');
|
|
|
};
|
|
|
//InPcNo 字段变化执行事件
|
|
|
Biz.prototype.fieldChangedInPcNo = function (dataSrc, dr, dc) {
|
|
|
let self = this;
|
|
|
let currentRow = self.dsDetail.currentRow;
|
|
|
let InPcNo = currentRow['InPcNo'];
|
|
|
let OutPcNo = currentRow ? TypeUtil.toString(currentRow['OutPcNo']) : '';
|
|
|
if (OutPcNo.length > 0) {
|
|
|
if(InPcNo == OutPcNo){
|
|
|
dr.setColumnError('ShOrgCode', "调入调出批次号不能相同!");
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
let SglCount = TypeUtil.toFloat(dr['SglCount']);
|
|
|
let PackCount = TypeUtil.toFloat(dr['PackCount']);
|
|
|
let PackQty = TypeUtil.toFloat(dr['PackQty']);
|
|
|
let OutHJPrice = TypeUtil.toFloat(dr['OutHJPrice']);
|
|
|
let OutWJPrice = TypeUtil.toFloat(dr['OutWJPrice']);
|
|
|
let InHJPrice = TypeUtil.toFloat(dr['InHJPrice']);
|
|
|
let InWJPrice = TypeUtil.toFloat(dr['InWJPrice']);
|
|
|
|
|
|
let TzCount = (PackCount * PackQty) + SglCount;
|
|
|
let OutHCost = OutHJPrice * TzCount;
|
|
|
let OutWCost = OutWJPrice * TzCount;
|
|
|
let InHCost = InHJPrice * TzCount;
|
|
|
let InWCost = InWJPrice * TzCount;
|
|
|
dr.setColumnValue("TzCount", TzCount);
|
|
|
dr.setColumnValue("OutHCost", OutHCost);
|
|
|
dr.setColumnValue("OutWCost", OutWCost);
|
|
|
dr.setColumnValue("InHCost", InHCost);
|
|
|
dr.setColumnValue("InWCost", InWCost);
|
|
|
dr.setColumnValue("TzHTotal", InHCost - OutHCost);
|
|
|
dr.setColumnValue("TzWTotal", InWCost - OutWCost);
|
|
|
return true;
|
|
|
};
|
|
|
//OutPcNo 字段变化执行事件
|
|
|
Biz.prototype.fieldChangedOutPcNo = function (dataSrc, dr, dc) {
|
|
|
let self = this;
|
|
|
let currentRow = self.dsDetail.currentRow;
|
|
|
let OutPcNo = currentRow['OutPcNo'];
|
|
|
let InPcNo = currentRow ? TypeUtil.toString(currentRow['InPcNo']) : '';
|
|
|
if (InPcNo.length > 0) {
|
|
|
if(InPcNo == OutPcNo){
|
|
|
dr.setColumnError('ShOrgCode', "调入调出批次号不能相同!");
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
let SglCount = TypeUtil.toFloat(dr['SglCount']);
|
|
|
let PackCount = TypeUtil.toFloat(dr['PackCount']);
|
|
|
let PackQty = TypeUtil.toFloat(dr['PackQty']);
|
|
|
let OutHJPrice = TypeUtil.toFloat(dr['OutHJPrice']);
|
|
|
let OutWJPrice = TypeUtil.toFloat(dr['OutWJPrice']);
|
|
|
let InHJPrice = TypeUtil.toFloat(dr['InHJPrice']);
|
|
|
let InWJPrice = TypeUtil.toFloat(dr['InWJPrice']);
|
|
|
|
|
|
let TzCount = (PackCount * PackQty) + SglCount;
|
|
|
let OutHCost = OutHJPrice * TzCount;
|
|
|
let OutWCost = OutWJPrice * TzCount;
|
|
|
let InHCost = InHJPrice * TzCount;
|
|
|
let InWCost = InWJPrice * TzCount;
|
|
|
dr.setColumnValue("TzCount", TzCount);
|
|
|
dr.setColumnValue("OutHCost", OutHCost);
|
|
|
dr.setColumnValue("OutWCost", OutWCost);
|
|
|
dr.setColumnValue("InHCost", InHCost);
|
|
|
dr.setColumnValue("InWCost", InWCost);
|
|
|
dr.setColumnValue("TzHTotal", InHCost - OutHCost);
|
|
|
dr.setColumnValue("TzWTotal", InWCost - OutWCost);
|
|
|
return true;
|
|
|
};
|
|
|
//SglCount 字段变化执行事件
|
|
|
Biz.prototype.fieldChangedSglCount = function (dataSrc, dr, dc) {
|
|
|
let SglCount = TypeUtil.toFloat(dr['SglCount']);
|
|
|
let PackCount = TypeUtil.toFloat(dr['PackCount']);
|
|
|
let PackQty = TypeUtil.toFloat(dr['PackQty']);
|
|
|
let OutHJPrice = TypeUtil.toFloat(dr['OutHJPrice']);
|
|
|
let OutWJPrice = TypeUtil.toFloat(dr['OutWJPrice']);
|
|
|
let InHJPrice = TypeUtil.toFloat(dr['InHJPrice']);
|
|
|
let InWJPrice = TypeUtil.toFloat(dr['InWJPrice']);
|
|
|
|
|
|
let TzCount = (PackCount * PackQty) + SglCount;
|
|
|
let OutHCost = OutHJPrice * TzCount;
|
|
|
let OutWCost = OutWJPrice * TzCount;
|
|
|
let InHCost = InHJPrice * TzCount;
|
|
|
let InWCost = InWJPrice * TzCount;
|
|
|
dr.setColumnValue("TzCount", TzCount);
|
|
|
dr.setColumnValue("OutHCost", OutHCost);
|
|
|
dr.setColumnValue("OutWCost", OutWCost);
|
|
|
dr.setColumnValue("InHCost", InHCost);
|
|
|
dr.setColumnValue("InWCost", InWCost);
|
|
|
dr.setColumnValue("TzHTotal", InHCost - OutHCost);
|
|
|
dr.setColumnValue("TzWTotal", InWCost - OutWCost);
|
|
|
};
|
|
|
//PackCount 字段变化执行事件
|
|
|
Biz.prototype.fieldChangedPackCount = function (dataSrc, dr, dc) {
|
|
|
let SglCount = TypeUtil.toFloat(dr['SglCount']);
|
|
|
let PackCount = TypeUtil.toFloat(dr['PackCount']);
|
|
|
let PackQty = TypeUtil.toFloat(dr['PackQty']);
|
|
|
|
|
|
let TzCount = (PackCount * PackQty) + SglCount;
|
|
|
dr.setColumnValue("TzCount", TzCount);
|
|
|
};
|
|
|
/*
|
|
|
//控制主界面按钮状态
|
|
|
Biz.prototype.getOpEnabled = function (opCode) {
|
|
|
let isOk = this.super('getOpEnabled', opCode);
|
|
|
if (!isOk) return false;
|
|
|
let curRow = this.dsMaster.currentRow;
|
|
|
|
|
|
if (opCode == 'edit') {
|
|
|
let OrgCode = curRow ? TypeUtil.toString(curRow['OrgCode']) : '';
|
|
|
if (!curRow)
|
|
|
return false;
|
|
|
|
|
|
if (OrgCode != Store.logOn.orgCode)
|
|
|
return false;
|
|
|
}
|
|
|
if (opCode == 'delete') {
|
|
|
let OrgCode = curRow ? TypeUtil.toString(curRow['OrgCode']) : '';
|
|
|
if (!curRow)
|
|
|
return false;
|
|
|
|
|
|
if (OrgCode != Store.logOn.orgCode)
|
|
|
return false;
|
|
|
}
|
|
|
if (opCode == 'acc') {
|
|
|
let OrgCode = curRow ? TypeUtil.toString(curRow['OrgCode']) : '';
|
|
|
if (!curRow)
|
|
|
return false;
|
|
|
|
|
|
if (OrgCode != Store.logOn.orgCode)
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
};
|
|
|
|
|
|
//按钮事件控制
|
|
|
Biz.prototype.doOp = function (opCode) {
|
|
|
let self = this;
|
|
|
if (opCode == 'acc') {
|
|
|
let ds = self.dsMaster;
|
|
|
this.onpause(self, ds);
|
|
|
}
|
|
|
};
|
|
|
//按钮事件
|
|
|
Biz.prototype.onpause = function (biz, ds) {
|
|
|
let dsrow=ds.currentRow;
|
|
|
let BillNo = dsrow ? TypeUtil.toString(dsrow['BillNo']) : '';
|
|
|
|
|
|
if (BillNo.length > 0){
|
|
|
if (!Store.confirm("您确定要记账当前批次调整单吗?")) {
|
|
|
return false;
|
|
|
}
|
|
|
let ret= Service.getSlideMenuData("doAccount","acc",BillNo,ChOrgCode,Remark,Store.logOn.userCode,Store.logOn.userName,TimeMark);
|
|
|
if (ret.result !== 1) {
|
|
|
dsrow.setColumnError('BillNo', '终止失败:'+ret.message);
|
|
|
return false;
|
|
|
}
|
|
|
else{
|
|
|
Store.messager.tip('调拨通知单已终止!');
|
|
|
//刷新当前行
|
|
|
biz.dsMaster.updateRow();
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
};*/
|
|
|
return Biz;
|
|
|
}); |