define(function (require, exports, module) { //引入业务类基类 let BaseBiz = require('apps/rht/base/rhtBiz'); let rhtComm = require('apps/rht/comm/rhtComm'); //引入业务服务 let Service = require('./pri100102service'); /** * 定义业务类对象 * @param vm 界面相关ViewModule */ function Biz(vm) { //继承第一步,构造继承 BaseBiz.call(this, vm); } //继承第二步,方法继承 inherits(Biz, BaseBiz); /** * 全局变量 */ let IsProAdjustPrice = rhtComm.getRhtOptionValue('*','PRC','IsProAdjustPrice','1'); let Prc_IsChgCmp = rhtComm.getRhtOptionValue(Store.logOn.orgCode,'PRC','Prc_IsChgCmp','0'); let PluMlLimit = rhtComm.getRhtOptionValue(Store.logOn.orgCode,'CAT','PluMlLimit','0'); let OrgType = rhtComm.GetOrgType(Store.logOn.orgCode); let FbCatMlLimit = false; if (OrgType != "1001"){ if (PluMlLimit=="1"){ FbCatMlLimit = true; } } Biz.prototype.beforeFieldEdit = function(dataSrc, dr, dc) { let masterRow = this.dsMaster.currentRow; var IsTzPrice = TypeUtil.toString(masterRow['IsTzPrice']); var IsTzHyPrice = TypeUtil.toString(masterRow['IsTzHyPrice']); var IsTzPfPrice = TypeUtil.toString(masterRow['IsTzPfPrice']); if (dataSrc.uiObjCode == this.dsDetail.uiObjCode) { if (dc.fieldName == 'NewPrice') { if (IsTzPrice === '0') { return false; } } if (dc.fieldName == 'NewHyPrice') { if (IsTzHyPrice === '0') { return false; } } if (dc.fieldName == 'NewPfPrice') { if (IsTzPfPrice === '0') { return false; } } } return this.super('beforeFieldEdit', dataSrc, dr, dc); }; //保存前校验 计算主表合计数量等字段 Biz.prototype.beforeSave = function () { let curRow = this.dsMaster.currentRow; let IsTzPrice = curRow['IsTzPrice']; let IsTzHyPrice = curRow['IsTzHyPrice']; let IsTzPfPrice = curRow['IsTzPfPrice']; let TzDate = curRow['TzDate']; let BillType = curRow['BillType']; let sdate=new Date(Store.bizDao.getSysDate()).format('yyyy-MM-dd'); if (OrgType != "1001"){ if ((IsTzPrice =="0") && (IsTzHyPrice =="0") && (IsTzPfPrice =="0")){ curRow.setColumnError('IsTzPrice', "没有设置调整范围,请设置后再进行保存!" ); return false; } for (let i =0; i < this.dsDetail.rows.length; i++) { let row = this.dsDetail.rows[i]; let PluID = row['PluID']; let PluCode = row['PluCode']; let PluName = row['PluName']; let HjPrice = TypeUtil.toFloat(row['HJPrice']); let NewPrice = TypeUtil.toFloat(row['NewPrice']); if ((row['NewHyPrice'] > row['NewPrice']) && (IsTzHyPrice == "1")) { curRow.setColumnError('NewHyPrice', "会员价不应大于售价!" ); return false; } if (FbCatMlLimit){ let ret= Service.getSlideMenuData("OnBeforeSave","GetMlRate",PluCode,"","","",""); if (ret.result === 1) { if (ret.data != null) { let curMinMlRate=TypeUtil.toFloat(ret.data.MinMlRate); let curMaxMlRate=TypeUtil.toFloat(ret.data.MaxMlRate); if ((curMinMlRate != 0) || (curMaxMlRate != 0) || (NewPrice != 0)) { let curRate = Math.round(0); if (NewPrice !== 0){ curRate = Math.round((NewPrice-HjPrice)*10000/NewPrice)/100; } if ((curMinMlRate != 0) && (curRate < curMinMlRate)){ if (!Store.confirm("商品["+PluName+"]进价为"+HjPrice+",售价为"+NewPrice+",毛利率为"+curRate+",毛利率低于品类最低毛利率"+curMinMlRate+"的限制,是否继续?")) { return false; } } if ((curMaxMlRate != 0) && (curRate > curMaxMlRate)){ if (!Store.confirm("商品["+PluName+"]进价为"+HjPrice+",售价为"+NewPrice+",毛利率为"+curRate+",毛利率低于品类最高毛利率"+curMaxMlRate+"的限制,是否继续?")) { return false; } } } } } ret= Service.getSlideMenuData("OnBeforeSave","GetPluPackage",PluID,"","","",""); if (ret.result === 1) { if (ret.data != null) { if (ret.data.PackageName != "*"){ if (!Store.confirm("商品["+PluName+"]已被商品包["+ret.data.PackageName+"]引用,是否继续?")) { return false; } } } } } } } if (BillType=="1"){ if (TzDate <= sdate){ curRow.setColumnError('TzDate', "输入错误,计划调价日期应大于当前日期!" ); return false; } } for (let i =0; i < this.dsDetail.rows.length; i++) { let row = this.dsDetail.rows[i]; let PluCode = row['PluCode']; let PluName = row['PluName']; let NewPrice = TypeUtil.toFloat(row['NewPrice']); let NewHyPrice = TypeUtil.toFloat(row['NewHyPrice']); let NewPfPrice = TypeUtil.toFloat(row['NewPfPrice']); if ((IsTzPrice =="1") && (NewPrice == 0)){ if (!Store.confirm("确认将商品"+PluCode+"-"+PluName+"现售价置为零吗?")) { return false; } } if ((IsTzHyPrice =="1") && (NewHyPrice == 0)){ if (!Store.confirm("确认将商品"+PluCode+"-"+PluName+"现售价置为零吗?")) { return false; } } if ((IsTzPfPrice =="1") && (NewPfPrice == 0)){ if (!Store.confirm("确认将商品"+PluCode+"-"+PluName+"现售价置为零吗?")) { return false; } } } return this.super('beforeSave'); } //新增行后处理,默认值已经处理 Biz.prototype.afterNewRow = function (dataSrc, newRow) { if (dataSrc.uiObjCode === this.dsMaster.uiObjCode) { newRow.setColumnValue('YwType',"1002"); let sdate=new Date(Store.bizDao.getSysDate()).format('yyyy-MM-dd'); newRow.setColumnValue('TzDate', sdate); } }; //明细行单行提交触发的校验 Biz.prototype.dataRowValidate = function (dataSrc, dr) { if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { let PluCode = TypeUtil.toString(dr['PluCode']); let NewPrice = TypeUtil.toFloat(dr['NewPrice']); let Price = TypeUtil.toFloat(dr['Price']); if ((IsProAdjustPrice != "1") && (PluCode != "") && (NewPrice != Price)) { let ret= Service.getSlideMenuData("OnDetailBeforePost","CheckCX", PluCode, Store.logOn.orgCode,"","",""); if (ret.result == 1) { if (ret.data != null){ if (TypeUtil.toFloat(ret.data.con) > 0) { if (IsProAdjustPrice == "0") { return "本商品正在促销,不允许调整售价!"; } if (IsProAdjustPrice == "2") { if (!Store.confirm("本商品正在促销,是否要调整售价? \r\n 如要对商品进行售价调整注意以下两点 \r\n 1.请注意打印价签,以备促销期结束后使用!\r\n 2.请注意该售价调整会影响按比例促销商品的促销价格!")) { return "请重新修改!"; } } } } } } } 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 'IsTzPrice': case 'IsTzHyPrice': case 'IsTzPfPrice': this.fieldChangedIsTzPrice(dataSrc, dr, dc); break; } }*/ if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { switch (dc.fieldName) { case 'PluCode': this.fieldChangedPluCode(dataSrc, dr, dc); break; case 'NewPrice': this.fieldChangedNewPrice(dataSrc, dr, dc); break; case 'NewHyPrice': this.fieldChangedNewHyPrice(dataSrc, dr, dc); break; case 'NewPfPrice': this.fieldChangedNewPfPrice(dataSrc, dr, dc); break; } } this.super('fieldChanged'); }; //PluCode 字段变化执行事件 Biz.prototype.fieldChangedPluCode = function (dataSrc, dr, dc) { let self = this; let currentRow = self.dsMaster.currentRow; let PluCode = dr['PluCode']; let PluType = currentRow['PluType']; let ret= Service.getSlideMenuData("DoOnDetailCalcRule","PluCode","",Store.logOn.orgCode,PluCode,PluType,"Price,HyPrice,PfPrice"); if (ret.result === 1) { if (ret.data != null) { dr.setColumnValue('HJPrice', ret.data.HjPrice); dr.setColumnValue('Price', ret.data.Price); dr.setColumnValue('HyPrice', ret.data.HyPrice); dr.setColumnValue('PfPrice', ret.data.PfPrice); dr.setColumnValue('NewPrice', ret.data.Price); dr.setColumnValue('NewHyPrice', ret.data.HyPrice); dr.setColumnValue('NewPfPrice', ret.data.PfPrice); } } return true; }; //NewPrice 字段变化执行事件 Biz.prototype.fieldChangedNewPrice = function (dataSrc, dr, dc) { let self = this; let NewPrice = TypeUtil.toFloat(dr['NewPrice']); let Price = TypeUtil.toFloat(dr['Price']); let currentRow = self.dsMaster.currentRow; let PluType = TypeUtil.toString(currentRow['PluType']); let PluID = TypeUtil.toString(dr['PluID']); let PluCode = TypeUtil.toString(dr['PluCode']); if (NewPrice < 0){ dr.setColumnError(dc.fieldName, "现售价不能小于零,请重新录入!"); return false; } if ((PluType == "0") && (PluID != "")){ let ret= Service.getSlideMenuData("DoOnDetailCalcRule","NewPrice",PluID,PluCode,Store.logOn.orgCode,"",""); if (ret.result === 1) { if (ret.data != null) { if (TypeUtil.toFloat(ret.data.HjPrice) > NewPrice) { if (Prc_IsChgCmp =="1"){ if (!Store.confirm("商品售价小于商品最新进价,是否继续?")) { return false; } } else{ dr.setColumnError(dc.fieldName, "商品售价不允许小于商品最新进价:" + ret.data.HjPrice + ",请重新录入!"); return false; } } } } else { dr.setColumnError(dc.fieldName, ret.message); return false; } ret= Service.getSlideMenuData("DoOnDetailCalcRule","NewPricePluEx",PluID,PluCode,Store.logOn.orgCode,NewPrice,""); if (ret.result === 2) { dr.setColumnError(dc.fieldName, ret.message); } else if (ret.result !== 1) { dr.setColumnError(dc.fieldName, ret.message); return false; } dr.setColumnValue('CjPrice', (NewPrice-Price).round(2)); if (Price == 0){ dr.setColumnValue('TzRate', "0"); } else{ dr.setColumnValue('TzRate', ((NewPrice-Price)*100/Price).round(2)); } } return true; }; //NewHyPrice 字段变化执行事件 Biz.prototype.fieldChangedNewHyPrice = function (dataSrc, dr, dc) { let self = this; let NewPrice = TypeUtil.toFloat(dr['NewPrice']); let NewHyPrice = TypeUtil.toFloat(dr['NewHyPrice']); let HyPrice = TypeUtil.toFloat(dr['HyPrice']); let currentRow = self.dsMaster.currentRow; let PluType = TypeUtil.toString(currentRow['PluType']); let PluID = TypeUtil.toString(dr['PluID']); let IsTzHyPrice = currentRow['IsTzHyPrice']; if (NewHyPrice < 0){ dr.setColumnError(dc.fieldName, "现会员价不能小于零,请重新录入!"); return false; } if ((PluType == "0") && (PluID != "")){ if ((OrgType != "1001") && (IsTzHyPrice == "1")){ if (NewHyPrice > NewPrice){ dr.setColumnError(dc.fieldName, "会员价不应大于售价!"); return false; } } dr.setColumnValue('CjHyPrice', (NewHyPrice-HyPrice).round(2)); } return true; }; //NewPfPrice 字段变化执行事件 Biz.prototype.fieldChangedNewPfPrice = function (dataSrc, dr, dc) { let self = this; let currentRow = self.dsMaster.currentRow; let PluType = TypeUtil.toString(currentRow['PluType']); let NewPfPrice = TypeUtil.toFloat(dr['NewPfPrice']); let PfPrice = TypeUtil.toFloat(dr['PfPrice']); let PluID = TypeUtil.toString(dr['PluID']); let PluCode = TypeUtil.toString(dr['PluCode']); if (NewPfPrice < 0){ dr.setColumnError(dc.fieldName, "批发价不能小于零,请重新录入!"); return false; } if ((PluType == "0") && (PluID != "")){ let ret= Service.getSlideMenuData("DoOnDetailCalcRule","NewPfPrice",PluID,PluCode,Store.logOn.orgCode,NewPfPrice,""); if (ret.result !== 1) { dr.setColumnError(dc.fieldName, ret.message); return false; } dr.setColumnValue('CjPfPrice', (NewPfPrice-PfPrice).round(2)); } return true; }; //按钮事件控制 Biz.prototype.doOp = function (opCode) { let self = this; if (opCode == 'shoutiao') { let ds = self.dsMaster; this.onshoutiao(self, ds); } }; //手调按钮事件 Biz.prototype.onshoutiao = function (biz, ds) { let dsrow=ds.currentRow; let BillNo = dsrow ? TypeUtil.toString(dsrow['BillNo']) : ''; let ret= Service.getSlideMenuData("doAccount","doAccount",BillNo,"1002-1"); if (ret.result === 1) { biz.dsMaster.updateRow(); } else { Store.messager.err("记账失败!"+ret.message); return false; } return true; }; //控制主界面按钮状态 Biz.prototype.getOpEnabled = function (opCode) { let isOk = this.super('getOpEnabled', opCode); if (!isOk) { return false; } let curRow = this.dsMaster.currentRow; if (opCode == 'shoutiao') { let IsEnabled = curRow ? TypeUtil.toString(curRow['IsEnabled']) : ''; let DataStatus = curRow ? TypeUtil.toString(curRow['DataStatus']) : ''; if (!curRow) return false; if ((IsEnabled !="1") && (DataStatus == "9")) return false; } return true; }; return Biz; });