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.

339 lines
15 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

define(function (require, exports, module) {
let BaseBiz = require('apps/rht/base/rhtBiz');
let Service = require('./cou190205service');
let rhtComm = require('../../comm/rhtComm');
/**
* 控制按钮的可用
* @param opCode 按钮编码
* @return [description]
*/
function Biz(vm) {
//继承第一步,构造继承
BaseBiz.call(this, vm);
vm.remark =''
}
//继承第二步,方法继承
inherits(Biz, BaseBiz);
let Cou_LsPdDataLrPacket = rhtComm.getRhtOptionValue('*','COU','Cou_LsPdDataLrPacket','1');
let COU_PdDataKcPacket = rhtComm.getRhtOptionValue('*','COU','COU_PdDataKcPacket','1');
let Cou_LsPdDataLrMulti = rhtComm.getRhtOptionValue('*','COU','Cou_LsPdDataLrMulti','1');
let Cou_LsSamePdLrMulti = rhtComm.getRhtOptionValue('*','COU','Cou_LsSamePdLrMulti','1');
//功能初始化完毕调用该方法
Biz.prototype.initCompleted = function() {
let Cou_LsPdDataLrDep = rhtComm.getRhtOptionValue('*','COU','Cou_LsPdDataLrDep','1');
if (Cou_LsPdDataLrDep != "1"){
this.dsDetail.getColumn('DepCode').set('isEditable',false);
}
if (Cou_LsPdDataLrPacket != "1"){
this.dsDetail.getColumn('PackUnit').set('isEditable',false);
this.dsDetail.getColumn('PackQty').set('isEditable',false);
this.dsDetail.getColumn('PackCount').set('isEditable',false);
}
return this.super('initCompleted');
};
//单据编辑前处理
Biz.prototype.beforeEdit = function () {
let masterRow = this.dsMaster.currentRow;
let sSpDataType = TypeUtil.toString(masterRow['SpDataType']);
if ((sSpDataType == '0') && (Cou_LsPdDataLrMulti == "1")){
this.dsDetail.multiType = "0";
this.dsDetail.multiFields = "";
this.dsDetail.multiMsg = "";
}
else{
this.dsDetail.multiType = "1";
this.dsDetail.multiFields = "DepCode,PluCode,ExPluCode";
this.dsDetail.multiMsg = "不能重复录入商品!";
}
return this.super('beforeEdit');
};
//明细行单行提交触发的校验
Biz.prototype.dataRowValidate = function (dataSrc, dr) {
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
let masterRow = this.dsMaster.currentRow;
let sSpDataType = TypeUtil.toString(masterRow['SpDataType']);
let sPdBillNo = TypeUtil.toString(masterRow['PdBillNo']);
let sPluCode = TypeUtil.toString(dr['PluCode']);
let sPluID = TypeUtil.toString(dr['PluID']);
if (sPluCode.length > 0) {
if ((Cou_LsSamePdLrMulti != "1" ) && (sSpDataType == "0")) {
let ret= Service.getSlideMenuData("DoOnDetailCalcRule","UChecIsExistPlu", sPdBillNo,sPluID,"","","");
if (ret.result !== 1) {
return ret.message;
}
}
if ((Cou_LsPdDataLrPacket == "1") && (COU_PdDataKcPacket == "1")){
let retPacket= Service.getSlideMenuData("DoOnDetailCalcRule","CheckKcPacket",JSONObject,"","","","");
if (retPacket.result !== 1) {
return "输入此商品的包装单位必须是库存基础包装!";
}
}
}
}
return true;
};
// 列校验,列赋值时调用,发生异常表示校验失败
Biz.prototype.dataColumnValidate = function (dataSrc, dr, dc, value) {
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
if (this.dsDetail.rows.length == 0){
let masterRow = this.dsMaster.currentRow;
let sSpDataType = TypeUtil.toString(masterRow['SpDataType']);
let sPdBillNo = TypeUtil.toString(masterRow['PdBillNo']);
let ret= Service.getSlideMenuData("DoOnDetailCalcRule","CouSpDataLrChk", sPdBillNo,sSpDataType,"","","");
if (ret.result !== 1) {
dr.setColumnError("BillNo", ret.message);
return false;
}
if ((sSpDataType == '0') && (Cou_LsPdDataLrMulti == "1")){
this.dsDetail.multiType = "0";
this.dsDetail.multiFields = "";
this.dsDetail.multiMsg = "";
}
else{
this.dsDetail.multiType = "1";
this.dsDetail.multiFields = "DepCode,PluCode,ExPluCode";
this.dsDetail.multiMsg = "不能重复录入商品!";
}
}
}
return this.super('dataColumnValidate');
};
//校验小数精度
Biz.prototype.getPrecision = function (dataSrc, dr, dc, defaultPrecision) {
if (dataSrc.uiObjCode == this.dsDetail.uiObjCode) {
//把这里改成需要控制的字段
if (dc.fieldName == 'SjCount') {
return TypeUtil.toInt(dr['R_DotDecimal']);
}
}
return this.super('getPrecision', dataSrc, dr, dc, defaultPrecision);
};
//字段变化触发事件
Biz.prototype.fieldChanged = function (dataSrc, dr, dc) {
if (dataSrc.uiObjCode === this.dsMaster.uiObjCode) {
switch (dc.fieldName) {
case 'PdBillNo':
this.fieldChangedPdBillNo(dataSrc, dr, dc);
break;
}
}
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
switch (dc.fieldName) {
case 'PluCode':
this.fieldChangedPluCode(dataSrc, dr, dc);
break;
case 'DepCode':
this.fieldChangedDepCode(dataSrc, dr, dc);
break;
case 'PackCount':
this.fieldChangedPackCount(dataSrc, dr, dc);
break;
case 'PackUnit':
this.fieldChangedPackUnit(dataSrc, dr, dc);
break;
case 'SglCount':
this.fieldChangedSglCount(dataSrc, dr, dc);
break;
}
}
this.super('fieldChanged');
};
//PdBillNo 字段变化执行事件
Biz.prototype.fieldChangedPdBillNo = function (dataSrc, dr, dc) {
let sPdBillNo = TypeUtil.toString(dr['PdBillNo']);
let sSpDataType = "0";
if (sPdBillNo.length > 0){
let ret= Service.getSlideMenuData("DoOnMasterRule","PdBillNo", sPdBillNo,"","","","");
if (ret.result === 1) {
sSpDataType = "1";
}
dr.setColumnValue('OrgCode', dc.getRefValue('orgcode'));
dr.setColumnValue('OrgName', dc.getRefValue('orgname'));
dr.setColumnValue('InOrgCode', dc.getRefValue('inorgcode'));
dr.setColumnValue('DeptId', dc.getRefValue('deptid'));
dr.setColumnValue('DepCode', dc.getRefValue('depcode'));
dr.setColumnValue('DepName', dc.getRefValue('depname'));
dr.setColumnValue('CkCode', dc.getRefValue('ckcode'));
dr.setColumnValue('CkName', dc.getRefValue('ckname'));
dr.setColumnValue('BillType', dc.getRefValue('billtype'));
dr.setColumnText('LyType', "0");
dr.setColumnText('SpDataType', sSpDataType);
}
return true;
};
//PluCode 字段变化执行事件
Biz.prototype.fieldChangedPluCode = function (dataSrc, dr, dc) {
let masterRow = this.dsMaster.currentRow;
let sPdBillNo = TypeUtil.toString(masterRow['PdBillNo']);
let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : '';
let sPluID = dr ? TypeUtil.toString(dr['PluID']) : '';
let sDepCode = dr ? TypeUtil.toString(dr['DepCode']) : '';
if (sPluCode === '') return false;
let ret= Service.getSlideMenuData("DoOnDetailCalcRule","PluCode", sPdBillNo, sPluCode,"","","");
if (ret.result !== 1) {
dr.setColumnError(dc.fieldName, ret.message);
return false;
}
if (ret.data != null) {
dr.setColumnValue('ExPluCode', ret.data.explucode);
dr.setColumnValue('ExPluName', ret.data.expluname);
if (sDepCode.length <= 0){
dr.setColumnValue('DeptId', ret.data.depid);
dr.setColumnValue('DepCode', ret.data.depcode);
dr.setColumnValue('DepName', ret.data.depname);
sDepCode = ret.data.depcode;
}
}
let retchk= Service.getSlideMenuData("DoOnDetailCalcRule","UCheckInput", sPdBillNo,sPluCode,sDepCode,"","");
if (retchk.result !== 1) {
dr.setColumnError(dc.fieldName, "该部门商品不存在于对应盘点单,请核对!");
return false;
}
//获取包装信息
if (Cou_LsPdDataLrPacket == "1"){
if (COU_PdDataKcPacket == "1"){
let JSONObject={PluID:sPluID};
let retPacket= Service.getSlideMenuData("pubsysBaseBL","GetDefaultLsKcPackUnit",JSONObject,"","","","");
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");
}
}
}
else{
let JSONObject={PluCode:sPluCode};
let retPacket= Service.getSlideMenuData("pubsysBaseBL","GetDefaultPluPackUnit",JSONObject,"","","","");
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");
}
}
}
}
else{
dr.setColumnValue('PackUnit', "");
dr.setColumnValue('PackQty', 0);
dr.setColumnValue('PackCount', "0");
dr.setColumnText('SglCount', "0");
}
return true;
};
//DepCode 字段变化执行事件
Biz.prototype.fieldChangedDepCode = function (dataSrc, dr, dc) {
let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : '';
let sDepCode = dr ? TypeUtil.toString(dr['DepCode']) : '';
if (sPluCode === '') return false;
if (sDepCode === '') return false;
let masterRow = this.dsMaster.currentRow;
let sPdBillNo = TypeUtil.toString(masterRow['PdBillNo']);
let ret= Service.getSlideMenuData("DoOnDetailCalcRule","UCheckInput", sPdBillNo,sPluCode,sDepCode,"","");
if (ret.result !== 1) {
dr.setColumnError(dc.fieldName, "该部门商品不存在于对应盘点单,请核对!");
return false;
}
return true;
};
//PackUnit 字段变化执行事件
Biz.prototype.fieldChangedPackUnit = function (dataSrc, dr, dc) {
let PackUnit = TypeUtil.toString(dr['PackUnit']);
if (PackUnit == "")
{
dr.setColumnValue('PackQty', "0");
}
return true;
};
//PackCount 字段变化执行事件
Biz.prototype.fieldChangedPackCount = function (dataSrc, dr, dc) {
let fPackCount = TypeUtil.toFloat(dr['PackCount']);
let fPackQty = TypeUtil.toFloat(dr['PackQty']);
let fSglCount = TypeUtil.toFloat(dr['SglCount']);
let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : '';
let fSjCount = fPackCount*fPackQty+fSglCount;
if (sPluCode === '') return false;
dr.setColumnValue('SjCount', fSjCount);
if (fSjCount < 0)
{
dr.setColumnError(dc.fieldName, '盘点数量必须大于等于0');
return false;
}
return true;
};
//SglCount 字段变化执行事件
Biz.prototype.fieldChangedSglCount = function (dataSrc, dr, dc) {
let fPackCount = TypeUtil.toFloat(dr['PackCount']);
let fPackQty = TypeUtil.toFloat(dr['PackQty']);
let fSglCount = TypeUtil.toFloat(dr['SglCount']);
let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : '';
let fSjCount = fPackCount*fPackQty+fSglCount;
if (sPluCode === '') return false;
dr.setColumnValue('SjCount', fSjCount);
if (fSjCount < 0)
{
dr.setColumnError(dc.fieldName, '盘点数量必须大于等于0');
return false;
}
return true;
};
//按钮事件控制
Biz.prototype.doOp = function (opCode) {
if (opCode == 'myacc') {
this.onmyacc();
}
};
//控制主界面按钮状态
Biz.prototype.getOpEnabled = function (opCode) {
let isOk = this.super('getOpEnabled', opCode);
if (!isOk) {
return false;
}
let curRow = this.dsMaster.currentRow;
let sJzDate = curRow ? TypeUtil.toString(curRow['JzDate']) : '';
let sDataStatus = curRow ? TypeUtil.toString(curRow['DataStatus']) : '';
if (opCode == 'myacc'){
if (!curRow)
return false;
if (this.isEdit())
return false;
if ((sJzDate != "") || (sDataStatus != "0"))
return false;
}
return true;
};
//记账事件处理
Biz.prototype.onmyacc = function () {
let curHRow = this.dsMaster.currentRow;
let sBillNo = curHRow ? TypeUtil.toString(curHRow['BillNo']) : '';
let sSpDataType = curHRow ? TypeUtil.toString(curHRow['SpDataType']) : '';
let sShowMsg = "确认要记账选择的单据吗?";
if (sSpDataType == "1"){
sShowMsg = "您录入的实盘数据录入单为复盘类型,这张单据将以覆盖的方式回写商品的实际数量,确认要记账选择的单据吗?";
}
//弹出是否确认提交对话框
if (!Store.confirm(sShowMsg)) {
return false;
}
let ret= Service.getSlideMenuData("actExecute","onmyacc", sBillNo,"","","","");
if (ret.result !== 1) {
Store.messager.err(ret.message);
return false;
}
this.dsMaster.updateRow();
Store.messager.tip("记账成功!");
return true;
};
return Biz;
});