You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

283 lines
12 KiB

define(function (require, exports, module) {
//引入业务类基类
let BaseBiz = require('apps/rht/base/rhtBiz');
let rhtComm = require('apps/rht/comm/rhtComm');
//引入业务服务
let Service = require('./stk180305service');
/**
* 定义业务类对象
* @param vm 界面相关ViewModule
*/
function Biz(vm) {
//继承第一步,构造继承
BaseBiz.call(this, vm);
}
//继承第二步,方法继承
inherits(Biz, BaseBiz);
let IsMdKwMng = rhtComm.getRhtOptionValue(Store.logOn.orgCode,'STK','IsMdKwMng','1');
//新增行后处理,默认值已经处理
Biz.prototype.afterNewRow = function (dataSrc, newRow) {
if (dataSrc.uiObjCode === this.dsMaster.uiObjCode) {
let InOrgCode = rhtComm.GetInOrgCode(Store.logOn.orgCode).message;
newRow.setColumnText('InOrgCode', InOrgCode);
}
this.super('afterNewRow', dataSrc, newRow);
};
//单据删除前处理
Biz.prototype.beforeDelete = function () {
let masterRow = this.dsMaster.currentRow;
let BillNo = masterRow ? TypeUtil.toString(masterRow['BillNo']) : '';
let ret= Service.getSlideMenuData("DoOnMasterRule","DoLsYkKcLock",BillNo,"1808","1","","");
if (ret.result !== 1) {
masterRow.setColumnError('BillNo', '删除锁定库存失败:'+ret.message);
return false;
}
return this.super('beforeDelete');
};
//保存前校验 计算主表合计数量等字段
Biz.prototype.beforeSave = function () {
let masterRow = this.dsMaster.currentRow;
if(masterRow){
let YkCount = 0.0;
for(let i=0;i<this.dsDetail.rows.length;i++){
let row = this.dsDetail.rows[i];
YkCount = YkCount + TypeUtil.toFloat(row['YkCount']);
}
masterRow.setColumnValue('YkCount',YkCount);
}
let BillNo = masterRow ? TypeUtil.toString(masterRow['BillNo']) : '';
let ret= Service.getSlideMenuData("DoOnMasterRule","DoLsYkKcLock",BillNo,"1808","0","","");
if (ret.result !== 1) {
masterRow.setColumnError('BillNo', '锁定库存失败:'+ret.message);
return false;
}
return this.super('beforeSave');
};
//明细行单行提交触发的校验
Biz.prototype.dataRowValidate = function (dataSrc, dr) {
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
let masterRow = this.dsMaster.currentRow;
let BillNo = masterRow ? TypeUtil.toString(masterRow['BillNo']) : '';
let InOrgCode = masterRow ? TypeUtil.toString(masterRow['InOrgCode']) : '';
let OldCkCode = masterRow ? TypeUtil.toString(masterRow['OldCkCode']) : '';
let NewCkCode = masterRow ? TypeUtil.toString(masterRow['NewCkCode']) : '';
let PluCode = dr ? TypeUtil.toString(dr['PluCode']) : '';
if (PluCode.length <= 0) {
return "商品编码不能为空!";
}
let PcNo = dr ? TypeUtil.toString(dr['PcNo']) : '';
let YkCount = TypeUtil.toFloat(dr['YkCount']);
if (YkCount <= 0) {
return "移库数量不能小于或等于零!";
}
if (PcNo != "*") {
retPc = Service.getSlideMenuData("DoOnDetailCalcRule","GetPcNo",PcNo,"","","","");
if (retPc.result === 1) {
if (retPc.data == null) {
return "此批次不存在。请重新选择。";
}
else{
dr.setColumnText('PluType', retPc.data.PluType);
}
}
}
let PluId = dr ? TypeUtil.toString(dr['PluId']) : '';
let PluType = TypeUtil.toString(dr['PluType']);
let ExPluCode = TypeUtil.toString(dr['ExPluCode']);
let fKyCount = 0.0;
let fLockCount = 0.0;
let retPc = Service.getSlideMenuData("DoOnDetailCalcRule","GetLockCount",InOrgCode,OldCkCode,PluId,PluType,BillNo,PcNo);
if (retPc.result === 1) {
if (retPc.data != null) {
fLockCount = retPc.data.LockCount;
}
}
let Params = BillNo+";"+"1808;*;"+InOrgCode+";"+OldCkCode+";"+NewCkCode+";"+PluId+";"+ExPluCode+";"+PluType+";"+PcNo;
let JSONObject={DataType:"9",Params:Params};
let retKyCount = Service.getSlideMenuData("pubsysBaseBL","MSysGetLsKcKyCount",JSONObject,"","","","");
if (retKyCount.result === 1) {
fKyCount = TypeUtil.toFloat(retKyCount.message);
if ((fKyCount + fLockCount) < YkCount){
let errmsg = "商品"+PluCode+"的移库数量大于当前可用数量:"+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.dsMaster.uiObjCode) {
switch (dc.fieldName) {
case 'OldCkCode':
this.fieldChangedOldCkCode(dataSrc, dr, dc);
break;
case 'NewCkCode':
this.fieldChangedNewCkCode(dataSrc, dr, dc);
break;
case 'IsPcNo':
this.fieldChangedIsPcNo(dataSrc, dr, dc);
break;
}
}
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
switch (dc.fieldName) {
case 'PluCode':
this.fieldChangedPluCode(dataSrc, dr, dc);
break;
case 'SglCount':
this.fieldChangedSglCount(dataSrc, dr, dc);
break;
case 'PackCount':
this.fieldChangedPackCount(dataSrc, dr, dc);
break;
}
}
this.super('fieldChanged');
};
//OldCkCode 字段变化执行事件
Biz.prototype.fieldChangedOldCkCode = function (dataSrc, dr, dc) {
let OldCkCode = dr ? TypeUtil.toString(dr['OldCkCode']) : '';
let NewCkCode = dr ? TypeUtil.toString(dr['NewCkCode']) : '';
if (OldCkCode.length > 0){
if (NewCkCode == OldCkCode) {
dr.setColumnError(dc.fieldName, "移出仓库与移入仓库不能相同!");
return false;
}
}
return true;
};
//NewCkCode 字段变化执行事件
Biz.prototype.fieldChangedNewCkCode = function (dataSrc, dr, dc) {
let OldCkCode = dr ? TypeUtil.toString(dr['OldCkCode']) : '';
let NewCkCode = dr ? TypeUtil.toString(dr['NewCkCode']) : '';
if (NewCkCode.length > 0){
if (NewCkCode == OldCkCode) {
dr.setColumnError(dc.fieldName, "移入仓库与移出仓库不能相同!");
return false;
}
}
return true;
};
//IsPcNo 字段变化执行事件
Biz.prototype.fieldChangedIsPcNo = function (dataSrc, dr, dc) {
let IsPcNo = dr ? TypeUtil.toString(dr['IsPcNo']) : '';
if (IsPcNo == "1"){
dr.setColumnText("IsPluType", "0");
}
else{
dr.setColumnText("IsPluType", "1");
}
return true;
};
//PluCode 字段变化执行事件
Biz.prototype.fieldChangedPluCode = function (dataSrc, dr, dc) {
let PluCode = dr ? TypeUtil.toString(dr['PluCode']) : '';
if (PluCode.length > 0){
let self = this;
let currentRow = self.dsMaster.currentRow;
let InOrgCode = currentRow ? TypeUtil.toString(currentRow['InOrgCode']) : '';
let OldCkCode = currentRow ? TypeUtil.toString(currentRow['OldCkCode']) : '';
let NewCkCode = currentRow ? TypeUtil.toString(currentRow['NewCkCode']) : '';
let CurInOrgCode = rhtComm.GetInOrgCode(Store.logOn.orgCode).message;
let fPrice = 0.0;
let ret= Service.getSlideMenuData("DoOnDetailCalcRule","PluCode","",PluCode,CurInOrgCode,"","");
if (ret.result !== 1) {
dr.setColumnError(dc.fieldName, ret.message);
return false;
}
if (ret.data != null) {
fPrice = TypeUtil.toFloat(ret.data.Price);
}
if (IsMdKwMng == "1"){
let PluId = dr ? TypeUtil.toString(dr['PluId']) : '';
let retKw= Service.getSlideMenuData("DoOnMasterRule","GetPluKw",OldCkCode,InOrgCode,PluId,"","");
if (retKw.result === 1) {
if (retKw.data !== null) {
dr.setColumnValue('OutKwCode', retKw.data.KwCode);
}
}
retKw= Service.getSlideMenuData("DoOnMasterRule","GetPluKw",NewCkCode,InOrgCode,PluId,"","");
if (retKw.result === 1) {
if (retKw.data !== null) {
dr.setColumnValue('InKwCode', retKw.data.KwCode);
}
}
}
let JSONObject={psPluCode:PluCode,psYwType:"1808"};
let retPacket= Service.getSlideMenuData("pubsysBaseBL","GetDefaultPluPackUnitByYwType",JSONObject,PluCode,"","","");
if (retPacket.result === 1) {
if (retPacket.data != null) {
dr.setColumnValue('PackUnit', retPacket.data.Unit);
dr.setColumnValue('PackQty', retPacket.data.Qty);
}
}
dr.setColumnValue("PackCount", "0");
dr.setColumnText("SglCount", "0");
dr.setColumnValue("Price", fPrice);
}
return true;
};
//SglCount 字段变化执行事件
Biz.prototype.fieldChangedSglCount = function (dataSrc, dr, dc) {
let PackQty = TypeUtil.toFloat(dr['PackQty']);
let PackCount = TypeUtil.toFloat(dr['PackCount']);
let SglCount = TypeUtil.toFloat(dr['SglCount']);
let YkCount = (PackCount*PackQty)+SglCount;
let DotDecimal = TypeUtil.toFloat(dr['R_DotDecimal']);
dr.setColumnValue("YkCount", YkCount);
let sdl= 0;
if (SglCount.toString().indexOf(".") !== -1) {
sdl= SglCount.toString().split(".")[1].length || 0;
}
if (DotDecimal < sdl){
dr.setColumnError(dc.fieldName, "此商品的小数精度是" + dr['R_DotDecimal'] );
return false;
}
return true;
};
//PackCount 字段变化执行事件
Biz.prototype.fieldChangedPackCount = function (dataSrc, dr, dc) {
let PackQty = TypeUtil.toFloat(dr['PackQty']);
let PackCount = TypeUtil.toFloat(dr['PackCount']);
let SglCount = TypeUtil.toFloat(dr['SglCount']);
let YkCount = (PackCount*PackQty)+SglCount;
let DotDecimal = TypeUtil.toFloat(dr['R_DotDecimal']);
dr.setColumnValue("YkCount", YkCount);
let sdl= 0;
if (YkCount.toString().indexOf(".") !== -1) {
sdl= YkCount.toString().split(".")[1].length || 0;
}
if (DotDecimal < sdl){
dr.setColumnError(dc.fieldName, "此商品的小数精度是" + dr['R_DotDecimal'] );
return false;
}
return true;
};
return Biz;
});