define(function (require, exports, module) { let BaseBiz = require('apps/rht/base/rhtBiz'); let Service = require('./cou190115service'); let rhtComm = require('../../comm/rhtComm'); /** * 控制按钮的可用 * @param opCode 按钮编码 * @return [description] */ function Biz(vm) { //继承第一步,构造继承 BaseBiz.call(this, vm); vm.remark ='' } //继承第二步,方法继承 inherits(Biz, BaseBiz); //取部门核算级别 let accLength = rhtComm.getOptionOrgAccLevel(); //功能初始化完毕调用该方法 Biz.prototype.initCompleted = function() { let sOrgType = rhtComm.GetOrgType(Store.logOn.orgCode); if ((sOrgType != "1001") && (sOrgType != "1002")){ this.dsMaster.getColumn('OrgCode').set('isEditable',false); } return this.super('initCompleted'); }; //给字段赋默认值 Biz.prototype.getDefaultValue = function (dataSrc, dr, dc, defaultValue) { if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { if (dc.fieldName == 'DepCode'){ let self = this; let masterRow = self.dsMaster.currentRow; let DepCodeHead = masterRow ? TypeUtil.toString(masterRow['DepCode']) : ''; if (DepCodeHead.length > 0){ return DepCodeHead; } } } return this.super("getDefaultValue", dataSrc, dr, dc, defaultValue); }; //明细行单行提交触发的校验 Biz.prototype.dataRowValidate = function (dataSrc, dr) { if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { let PluCode = TypeUtil.toString(dr['PluCode']); let fKcCount = TypeUtil.toFloat(dr['KcCount']); let fZmCount = TypeUtil.toFloat(dr['ZmCount']); if (PluCode.length > 0) { dr.setColumnValue('HzDate', rhtComm.GetServerDate(0)); if (fZmCount < 0 ) { return "报损数量不能为负值!"; } if (fZmCount > fKcCount ) { return "报损数量不能大于库存数量!"; } dr.setColumnValue('YkRate', "100"); } } return true; }; // 列校验,列赋值时调用,发生异常表示校验失败 Biz.prototype.dataColumnValidate = function (dataSrc, dr, dc, value) { let self = this; if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { let masterRow = self.dsMaster.currentRow; let DepCodeHead = masterRow ? TypeUtil.toString(masterRow['DepCode']) : ''; if ((accLength > 0) && (DepCodeHead.length == 0)){ return "核算到部门,必须录入主表部门!"; } } return this.super('dataColumnValidate'); }; //校验小数精度 Biz.prototype.getPrecision = function (dataSrc, dr, dc, defaultPrecision) { if (dataSrc.uiObjCode == this.dsDetail.uiObjCode) { //把这里改成需要控制的字段 if (dc.fieldName == 'ZmCount') { 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) { if (dc.fieldName == 'OrgCode') { this.fieldChangedOrgCode(dataSrc, dr, dc); } } if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { switch (dc.fieldName) { case 'ZmCount': this.fieldChangedZmCount(dataSrc, dr, dc); break; case 'PluCode': this.fieldChangedPluCode(dataSrc, dr, dc); break; case 'DepCode': this.fieldChangedDepCode(dataSrc, dr, dc); break; case 'YkCount': this.fieldChangedYkCount(dataSrc, dr, dc); break; } } this.super('fieldChanged'); }; //OrgCode 字段变化执行事件 Biz.prototype.fieldChangedOrgCode = function (dataSrc, dr, dc) { let sOrgCode = TypeUtil.toString(dr['OrgCode']); let sOldOrgCode = TypeUtil.toString(dr.transData['OrgCode']); if (sOldOrgCode != sOrgCode){ dr.setColumnValue('CkCode', ""); dr.setColumnValue('DepCode', ""); } return true; }; //ZmCount 字段变化执行事件 Biz.prototype.fieldChangedZmCount = function (dataSrc, dr, dc) { let sPluCode = TypeUtil.toString(dr['PluCode']); let fZmCount = TypeUtil.toFloat(dr['ZmCount']); let fHJPrice = TypeUtil.toFloat(dr['HJPrice']); let fWJPrice = TypeUtil.toFloat(dr['WJPrice']); let fPrice = TypeUtil.toFloat(dr['Price']); if (sPluCode.length > 0) { let fZmHCost = (fHJPrice*fZmCount).round(2); let fZmWCost = (fWJPrice*fZmCount).round(2); let fZmSCost = (fPrice*fZmCount).round(2); dr.setColumnValue('ZmHCost', fZmHCost); dr.setColumnValue('ZmWCost', fZmWCost); dr.setColumnValue('ZmSCost', fZmSCost); dr.setColumnValue('SjCount', "0"); dr.setColumnValue('SjHCost', "0"); dr.setColumnValue('SjWCost', "0"); dr.setColumnValue('SjSCost', "0"); dr.setColumnValue('YkCount', (-1*fZmCount)); dr.setColumnValue('YkHCost', (-1*fZmHCost)); dr.setColumnValue('YkWCost', (-1*fZmWCost)); dr.setColumnValue('YkSCost', (-1*fZmSCost)); /* let DotDecimal = TypeUtil.toFloat(dr['R_DotDecimal']); if (fZmCount.toString().indexOf(".") == -1) { let sdl= 0; } else { let sdl= fZmCount.toString().split(".")[1].length || 0; } if (DotDecimal < sdl){ dr.setColumnError(dc.fieldName, "此商品的小数精度是" + dr['R_DotDecimal'] ); return false; } */ } return true; }; //PluCode 字段变化执行事件 Biz.prototype.fieldChangedPluCode = function (dataSrc, dr, dc) { let masterRow = this.dsMaster.currentRow; let sInOrgCode = TypeUtil.toString(masterRow['InOrgCode']); let sHeadDepCode = masterRow ? TypeUtil.toString(masterRow['DepCode']) : ''; let sCkCode = masterRow ? TypeUtil.toString(masterRow['CkCode']) : ''; let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : ''; let sDepCode = dr ? TypeUtil.toString(dr['DepCode']) : ''; if (sPluCode === '') return false; dr.setColumnValue('ZmCount', "0"); dr.setColumnText('YkCount', "0"); let ret= Service.getSlideMenuData("DoOnDetailCalcRule","PluCode", sInOrgCode,sHeadDepCode,sCkCode,sPluCode,""); if (ret.result !== 1) { dr.setColumnError(dc.fieldName, ret.message); return false; } if (ret.data != null) { dr.setColumnValue('Price', ret.data.price); if (sDepCode.length <= 0){ dr.setColumnValue('DepID', ret.data.depid); dr.setColumnValue('DepCode', ret.data.depcode); dr.setColumnValue('DepName', ret.data.depname); dr.setColumnValue('ExPluCode', ret.data.explucode); dr.setColumnValue('ExPluName', ret.data.expluname); } } if (dr['DepID'].length > 0){ let MRow = masterRow.getData(); let DRow = dr.getData(); let retGetPluKc= Service.getSlideMenuData("DoOnDetailCalcRule","GetPluKc", MRow,DRow,"","",""); if (retGetPluKc.result !== 1) { dr.setColumnError(dc.fieldName, retGetPluKc.message); return false; } if (retGetPluKc.data != null) { let fZmCount = TypeUtil.toFloat(retGetPluKc.data.kccount); let fHJPrice = TypeUtil.toFloat(retGetPluKc.data.hjprice); let fWJPrice = TypeUtil.toFloat(retGetPluKc.data.wjprice); dr.setColumnValue('ZmCount', retGetPluKc.data.kccount); dr.setColumnValue('KcCount', retGetPluKc.data.kccount); dr.setColumnValue('HJPrice', fHJPrice); dr.setColumnValue('WJPrice', fWJPrice); dr.setColumnValue('ZmHCost', (fZmCount*fHJPrice).round(2)); dr.setColumnValue('ZmWCost', (fZmCount*fWJPrice).round(2)); dr.setColumnValue('ZmSCost', (fZmCount*TypeUtil.toFloat(dr['Price'])).round(2)); } } return true; }; //DepCode 字段变化执行事件 Biz.prototype.fieldChangedDepCode = function (dataSrc, dr, dc) { let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : ''; if (sPluCode === '') return false; dr.setColumnValue('ZmCount', "0"); dr.setColumnText('YkCount', "0"); let masterRow = this.dsMaster.currentRow; let MRow = masterRow.getData(); let DRow = dr.getData(); let retGetPluKc= Service.getSlideMenuData("DoOnDetailCalcRule","GetPluKc", MRow,DRow,"","",""); if (retGetPluKc.result !== 1) { dr.setColumnError(dc.fieldName, retGetPluKc.message); return false; } if (retGetPluKc.data != null) { let fZmCount = TypeUtil.toFloat(retGetPluKc.data.kccount); let fHJPrice = TypeUtil.toFloat(retGetPluKc.data.hjprice); let fWJPrice = TypeUtil.toFloat(retGetPluKc.data.wjprice); dr.setColumnValue('ZmCount', retGetPluKc.data.kccount); dr.setColumnValue('KcCount', retGetPluKc.data.kccount); dr.setColumnValue('HJPrice', fHJPrice); dr.setColumnValue('WJPrice', fWJPrice); dr.setColumnValue('ZmHCost', (fZmCount*fHJPrice).round(2)); dr.setColumnValue('ZmWCost', (fZmCount*fWJPrice).round(2)); dr.setColumnValue('ZmSCost', (fZmCount*TypeUtil.toFloat(dr['Price'])).round(2)); } return true; }; //YkCount 字段变化执行事件 Biz.prototype.fieldChangedYkCount = function (dataSrc, dr, dc) { let fYkCount = TypeUtil.toFloat(dr['YkCount']); let fZmCount = TypeUtil.toFloat(dr['ZmCount']); let PluCode = TypeUtil.toString(dr['PluCode']); if (PluCode.length > 0) { let fKyTmp= Math.abs((100*fYkCount)/fZmCount); let fYkRate = 0.0; if ((fZmCount == 0) || ((fZmCount != 0) && (fKyTmp > 100))){ if (fYkCount > 0){ fYkRate = 1; } else{ fYkRate = -1; } } else{ fYkRate = fYkCount/fZmCount; } dr.setColumnValue('YkRate', (fYkRate*100).round(2)); } return true; }; return Biz; });