define(function (require, exports, module) { let BaseBiz = require('apps/rht/base/rhtBiz'); let Service = require('./cou190211service'); let rhtComm = require('../../comm/rhtComm'); /** * 控制按钮的可用 * @param opCode 按钮编码 * @return [description] */ function Biz(vm) { //继承第一步,构造继承 BaseBiz.call(this, vm); vm.remark ='' } //继承第二步,方法继承 inherits(Biz, BaseBiz); //功能初始化完毕调用该方法 Biz.prototype.initCompleted = function() { let orgType = rhtComm.GetOrgType(Store.logOn.orgCode); let COU_ZmDecSpIsYkCount = rhtComm.getRhtOptionValue('*','COU','COU_ZmDecSpIsYkCount','1'); if ((orgType >= '1003') && (orgType <= '1999')){ this.dsMaster.getColumn('OrgCode').set('isEditable',false); } if (COU_ZmDecSpIsYkCount != "1"){ this.dsDetail.getColumn('SjCount').set('isEditable',false); } else{ this.dsDetail.getColumn('SjCount').set('isEditable',true); } return this.super('initCompleted'); }; //明细行单行提交触发的校验 Biz.prototype.dataRowValidate = function (dataSrc, dr) { if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { let masterRow = this.dsMaster.currentRow; let sYkType = TypeUtil.toString(masterRow['YkType']); let fYkCount = TypeUtil.toFloat(dr['YkCount']); let fZmCount = TypeUtil.toFloat(dr['ZmCount']); let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : ''; if (sPluCode.length > 0) { dr.setColumnValue('HzDate', rhtComm.GetServerDateTime(0)); if (fYkCount == 0) { return "盈亏数量不能等于0!"; } if ((fZmCount+fYkCount) < 0) { return "盈亏数量不能大于账面数量!"; } if (sYkType == "1") { if (fYkCount > 0) { return "盈亏类型为“盘亏”,盈亏数量必须小于0!"; } } if (sYkType == "2") { if (fYkCount < 0) { return "盈亏类型为“盘盈”,盈亏数量必须大于0!"; } } } } return true; }; //校验小数精度 Biz.prototype.getPrecision = function (dataSrc, dr, dc, defaultPrecision) { if (dataSrc.uiObjCode == this.dsDetail.uiObjCode) { //把这里改成需要控制的字段 if (dc.fieldName == 'YkCount') { 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 'OrgCode': this.fieldChangedOrgCode(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 'YkCount': this.fieldChangedYkCount(dataSrc, dr, dc); break; case 'SjCount': this.fieldChangedSjCount(dataSrc, dr, dc); break; } } this.super('fieldChanged'); }; //OrgCode 字段变化执行事件 Biz.prototype.fieldChangedOrgCode = function (dataSrc, dr, dc) { dr.setColumnText('CkCode', ""); dr.setColumnText('DepCode', ""); return true; }; //PluCode 字段变化执行事件 Biz.prototype.fieldChangedPluCode = function (dataSrc, dr, dc) { let masterRow = this.dsMaster.currentRow; let sInOrgCode = masterRow ? 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 sPluID = dr ? TypeUtil.toString(dr['PluID']) : ''; if (sPluCode === '') return false; dr.setColumnValue('ZmCount', "0"); dr.setColumnText('YkCount', "0"); let ret= Service.getSlideMenuData("DoOnDetailCalcRule","PluCode", sInOrgCode,sHeadDepCode,sCkCode,sPluCode,sPluID); if (ret.result !== 1) { dr.setColumnError(dc.fieldName, ret.message); return false; } if (ret.data != null) { dr.setColumnValue('Price', ret.data.price); if (ret.data.depcode.length > 0){ dr.setColumnValue('DepID', ret.data.depid); dr.setColumnText('DepCode', ret.data.depcode); dr.setColumnValue('ExPluCode', ret.data.explucode); } } 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('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 masterRow = this.dsMaster.currentRow; let sInOrgCode = masterRow ? TypeUtil.toString(masterRow['InOrgCode']) : ''; let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : ''; let sDepCode = dr ? TypeUtil.toString(dr['DepCode']) : ''; let sPluID = dr ? TypeUtil.toString(dr['PluID']) : ''; let sDepID = dr ? TypeUtil.toString(dr['DepID']) : ''; if (sPluCode === '') return false; if (sDepCode === '') return false; let ret= Service.getSlideMenuData("DoOnDetailCalcRule","DepCode", sInOrgCode,sDepID,sPluID,"",""); if (ret.result !== 1) { dr.setColumnError(dc.fieldName, ret.message); return false; } dr.setColumnValue('ZmCount', "0"); dr.setColumnText('YkCount', "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('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 sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : ''; let fHJPrice = TypeUtil.toFloat(dr['HJPrice']); let fWJPrice = TypeUtil.toFloat(dr['WJPrice']); let fPrice = TypeUtil.toFloat(dr['Price']); if (sPluCode === '') return false; if (sPluCode.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)); let fYkHCost = (fHJPrice*fYkCount).round(2); let fYkWCost = (fWJPrice*fYkCount).round(2); let fYkSCost = (fPrice*fYkCount).round(2); let fSjHCost = TypeUtil.toFloat(dr['ZmHCost'])+TypeUtil.toFloat(fYkHCost); let fSjWCost = TypeUtil.toFloat(dr['ZmWCost'])+TypeUtil.toFloat(fYkWCost); let fSjSCost = TypeUtil.toFloat(dr['ZmSCost'])+TypeUtil.toFloat(fYkSCost); dr.setColumnValue('YkHCost', fYkHCost); dr.setColumnValue('YkWCost', fYkWCost); dr.setColumnValue('YkSCost', fYkSCost); dr.setColumnValue('SjCount', (fZmCount+fYkCount)); dr.setColumnValue('SjHCost', fSjHCost.round(2)); dr.setColumnValue('SjWCost', fSjWCost.round(2)); dr.setColumnValue('SjSCost', fSjSCost.round(2)); } return true; }; //SjCount 字段变化执行事件 Biz.prototype.fieldChangedSjCount = function (dataSrc, dr, dc) { let fSjCount = TypeUtil.toFloat(dr['SjCount']); let fZmCount = TypeUtil.toFloat(dr['ZmCount']); let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : ''; if (sPluCode === '') return false; if (COU_ZmDecSpIsYkCount == "1") { dr.setColumnValue('YkCount', (fSjCount-fZmCount)); } return true; }; //按钮事件控制 Biz.prototype.doOp = function (opCode) { if (opCode == 'acttz') { this.opRouter('edit'); } }; //控制主界面按钮状态 Biz.prototype.getOpEnabled = function (opCode) { let isOk = this.super('getOpEnabled', opCode); if (!isOk) { return false; } let curRow = this.dsMaster.currentRow; let sDataStatus = curRow ? TypeUtil.toString(curRow['DataStatus']) : ''; if (opCode == 'acttz'){ if (!curRow) return false; if (this.isEdit()) return false; if ((sDataStatus == "Z") || (sDataStatus == "9")) return false; } return true; }; return Biz; });