define(function (require, exports, module) { let BaseBiz = require('apps/rht/base/rhtBiz'); let Service = require('./dst200109service'); let rhtComm = require('../../comm/rhtComm'); /** * 控制按钮的可用 * @param opCode 按钮编码 * @return [description] */ function Biz(vm) { //继承第一步,构造继承 BaseBiz.call(this, vm); vm.remark ='' } //继承第二步,方法继承 inherits(Biz, BaseBiz); let gbCheck = "1"; let Dst_PsCyDefCk = rhtComm.getRhtOptionValue('*','DST','Dst_PsCyDefCk','0'); //编辑后 Biz.prototype.afterEdit = function () { let masterRow = this.dsMaster.currentRow; let sBillType = TypeUtil.toString(masterRow['BillType']); let fOriCyCount = TypeUtil.toFloat(masterRow['OriCyCount']); if (sBillType == "1"){ this.dsDetail.allowDel = false; this.dsDetail.allowEdit = false; this.dsDetail.allowInsert = false; } else{ this.dsDetail.allowDel = true; this.dsDetail.allowEdit = true; this.dsDetail.allowInsert = true; } if (fOriCyCount != 0){ this.dsMaster.getColumn('CyYy').set('isEditable',false); this.dsDetail.getColumn('CyYy').set('isEditable',false); } else{ this.dsMaster.getColumn('CyYy').set('isEditable',true); this.dsDetail.getColumn('CyYy').set('isEditable',true); } return this.super('afterEdit'); }; //保存前校验 Biz.prototype.beforeSave = function () { let masterRow = this.dsMaster.currentRow; if(masterRow){ let iErrCount = 0; for (let i=0;i 0){ if (!Store.confirm("此单据存在商品差异数量等于零的数据,是否继续保存?")) { return false; } } } return this.super('beforeSave'); }; //新增行后处理,默认值已经处理 Biz.prototype.afterNewRow = function (dataSrc, newRow) { if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { let masterRow = this.dsMaster.currentRow; let sCyYy = masterRow ? TypeUtil.toString(masterRow['CyYy']) : ''; let sCkCode = masterRow ? TypeUtil.toString(masterRow['CkCode']) : ''; if (sCyYy.length > 0){ newRow.setColumnText('CyYy', sCyYy); } newRow.setColumnText('CkCode', sCkCode); } this.super('afterNewRow', dataSrc, newRow); }; //明细行单行提交触发的校验 Biz.prototype.dataRowValidate = function (dataSrc, dr) { if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { let sPluCode = TypeUtil.toString(dr['PluCode']); if (gbCheck == "1"){ if (sPluCode.length > 0) { let masterRow = this.dsMaster.currentRow; let ret= Service.getSlideMenuData("DoOnDetailCalcRule","dataRowValidate", masterRow.getData(), dr.getData(), "","",""); if (ret.result !== 1) { return ret.message; } } else{ return '商品编码不能为空!'; } } } return true; }; //校验小数精度 Biz.prototype.getPrecision = function (dataSrc, dr, dc, defaultPrecision) { if (dataSrc.uiObjCode == this.dsDetail.uiObjCode) { if (gbCheck == "1"){ //把这里改成需要控制的字段 if ((dc.fieldName == 'CyCount') || (dc.fieldName == 'CsCount')) { return TypeUtil.toInt(dr['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 'RefBillNo': this.fieldChangedRefBillNo(dataSrc, dr, dc); break; case 'CyYy': this.fieldChangedCyYy(dataSrc, dr, dc); break; } } if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { switch (dc.fieldName) { case 'PluCode': this.fieldChangedPluCode(dataSrc, dr, dc); break; case 'PluType': this.fieldChangedPluType(dataSrc, dr, dc); break; case 'CyCount': this.fieldChangedCyCsCount(dataSrc, dr, dc); break; case 'CsCount': this.fieldChangedCyCsCount(dataSrc, dr, dc); break; case 'CyYy': this.fieldChangedBodyCyYy(dataSrc, dr, dc); break; } } this.super('fieldChanged'); }; //RefBillNo 字段变化执行事件 Biz.prototype.fieldChangedRefBillNo = function (dataSrc, dr, dc) { let sRefBillNo = dr ? TypeUtil.toString(dr['RefBillNo']) : ''; if (sRefBillNo.length > 0) { let sZrr = TypeUtil.toString(dr['Zrr']); if (sZrr.length <= 0){ dr.setColumnError('BillNo','请先输入责任人!'); dr.setColumnText('RefBillNo', ''); return false; } let sCyYy = dr ? TypeUtil.toString(dr['CyYy']) : ''; let sShOrgCode = dr ? TypeUtil.toString(dr['ShOrgCode']) : ''; let sBillType = dr ? TypeUtil.toString(dr['BillType']) : ''; //调取服务端插件获取参照主表表数据 let retHead= Service.getSlideMenuData("getRefBill","Head",sRefBillNo,"","","",""); //如果没有结果报错并结束 if (retHead.result !== 1){ dr.setColumnError('BillNo',retHead.message); dr.setColumnText('RefBillNo', ''); return false; } else{ dr.setColumnValue('ShOrgCode', retHead.data[0].shorgcode); dr.setColumnValue('ShOrgName', retHead.data[0].shorgname); if (Dst_PsCyDefCk == "1"){ dr.setColumnValue('CkCode', retHead.data[0].ckcode); dr.setColumnValue('CkName', retHead.data[0].ckname); } else if (Dst_PsCyDefCk == "2"){ let ret= Service.getSlideMenuData("DoOnMasterCalcRule","UQueryCkCode", sRefBillNo, sShOrgCode, "0",sCyYy,""); if (ret.result === 1) { dr.setColumnText('CkCode', ret.message); } } let sCkCode = dr ? TypeUtil.toString(dr['CkCode']) : ''; if (sCkCode.length <= 0){ dr.setColumnError('BillNo','主表仓库不能为空!'); dr.setColumnText('RefBillNo', ''); return false; } //调取服务端插件获取明细表数据 let retBody= Service.getSlideMenuData("getRefBill","Body",sRefBillNo,"","","",""); //如果没有结果报错并结束 if (retBody.result !== 1){ dr.setColumnError('BillNo',retBody.message); dr.setColumnText('RefBillNo', ''); return false; } else{ if (sBillType == "1"){ gbCheck = "0"; //首先清空明细表 this.dsDetail.deleteAll(); //循环插入记录 for(let i = 0; i <= retBody.data.length - 1; i++){ let drdetail = this.dsDetail.addRow(); drdetail.setColumnValue('SerialNo', retBody.data[i].serialno) drdetail.setColumnValue('PluID', retBody.data[i].pluid); drdetail.setColumnText('PluCode', retBody.data[i].plucode); drdetail.setColumnValue('PluName', retBody.data[i].pluname); drdetail.setColumnValue('ExPluCode',retBody.data[i].explucode); drdetail.setColumnValue('ExPluName',retBody.data[i].expluname); drdetail.setColumnValue('PsPrice',parseFloat(retBody.data[i].psprice).round(4)); drdetail.setColumnValue('PsTotal',parseFloat(retBody.data[i].pstotal).round(2)); if (sCyYy.length > 0){ drdetail.setColumnText('CyYy',sCyYy); } drdetail.setColumnText('PluType',retBody.data[i].plutype); drdetail.setColumnValue('CyCount',parseFloat(retBody.data[i].pscount).round(4)); drdetail.setColumnValue('CsCount',"0"); drdetail.setColumnValue('DotDecimal',retBody.data[i].dotdecimal); } gbCheck = "1"; } } } } return true; }; //CyYy 字段变化执行事件 Biz.prototype.fieldChangedCyYy = function (dataSrc, dr, dc) { let sCyYy = dr ? TypeUtil.toString(dr['CyYy']) : ''; let sRefBillNo = dr ? TypeUtil.toString(dr['RefBillNo']) : ''; let sShOrgCode = dr ? TypeUtil.toString(dr['ShOrgCode']) : ''; if (Dst_PsCyDefCk == "2"){ if (sRefBillNo.length > 0){ let ret= Service.getSlideMenuData("DoOnMasterCalcRule","UQueryCkCode", sRefBillNo, sShOrgCode, "0",sCyYy,""); if (ret.result === 1) { dr.setColumnText('CkCode', ret.message); } } } return true; }; //PluCode 字段变化执行事件 Biz.prototype.fieldChangedPluCode = function (dataSrc, dr, dc) { let masterRow = this.dsMaster.currentRow; let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : ''; let sPluID = dr ? TypeUtil.toString(dr['PluID']) : ''; if (sPluCode === '') return false; let JSONObject={PluCode:sPluCode,PluID:sPluID,FieldNameGrp:"DotDecimal",FieldCount:1}; let retPlu = Service.getSlideMenuData("pubsysBaseBL","USkuGetPluPropInfo",JSONObject,"","","",""); if (retPlu.result === 1) { if (retPlu.data != null) { dr.setColumnValue('DotDecimal', retPlu.data.DotDecimal); } } else{ dr.setColumnError('BillNo', retPlu.message); dr.setColumnValue('PluCode', ""); dr.setColumnValue('PluName', ""); dr.setColumnValue('PsPrice', "0"); return false; } if (Dst_PsCyDefCk == "2"){ let sCyYy = dr ? TypeUtil.toString(dr['CyYy']) : ''; let sRefBillNo = masterRow ? TypeUtil.toString(masterRow['RefBillNo']) : ''; let sShOrgCode = masterRow ? TypeUtil.toString(masterRow['ShOrgCode']) : ''; if (sRefBillNo.length > 0){ let ret= Service.getSlideMenuData("DoOnMasterCalcRule","UQueryCkCode", sRefBillNo, sShOrgCode, sPluID,sCyYy,""); if (ret.result === 1) { dr.setColumnText('CkCode', ret.message); } } } dr.setColumnText('PluType', "0"); let fPsPrice = TypeUtil.toFloat(dr['PsPrice']); let fCyCount = TypeUtil.toFloat(dr['CyCount']); dr.setColumnValue('PsTotal', (fPsPrice*fCyCount).round(2)); return true; }; //PluType 字段变化执行事件 Biz.prototype.fieldChangedPluType = function (dataSrc, dr, dc) { let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : ''; if (sPluCode === '') return false; if (gbCheck == "1"){ let masterRow = this.dsMaster.currentRow; let sRefBillNo = masterRow ? TypeUtil.toString(masterRow['RefBillNo']) : ''; let sPluType = dr ? TypeUtil.toString(dr['PluType']) : ''; let fCyCount = TypeUtil.toFloat(dr['CyCount']); let ret= Service.getSlideMenuData("DoOnDetailCalcRule","PluType", sRefBillNo, sPluCode, sPluType,"",""); if (ret.result !== 1) { dr.setColumnError('BillNo',ret.message); return false; } else{ if (ret.data != null){ let fPsPrice = TypeUtil.toFloat(ret.data.psprice); dr.setColumnValue('PsPrice', fPsPrice); dr.setColumnValue('PsTotal', (fCyCount*fPsPrice).round(2)); } } } return true; }; //CyCsCount 字段变化执行事件 Biz.prototype.fieldChangedCyCsCount = function (dataSrc, dr, dc) { let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : ''; let sPluID = dr ? TypeUtil.toString(dr['PluID']) : ''; if (gbCheck == "1"){ if (sPluCode === ''){ dr.setColumnError(dc.fieldName, "请先录入商品!"); return false; } let JSONObject={PluCode:sPluCode,PluID:sPluID,FieldNameGrp:"DotDecimal",FieldCount:1}; let retPlu = Service.getSlideMenuData("pubsysBaseBL","USkuGetPluPropInfo",JSONObject,"","","",""); if (retPlu.result === 1) { if (retPlu.data != null) { dr.setColumnValue('DotDecimal', retPlu.data.DotDecimal); } } else{ dr.setColumnError('BillNo', retPlu.message); dr.setColumnValue('PluCode', ""); dr.setColumnValue('PluName', ""); dr.setColumnValue('PsPrice', "0"); return false; } } let fPsPrice = TypeUtil.toFloat(dr['PsPrice']); let fPrice = TypeUtil.toFloat(dr['Price']); let fCyCount = TypeUtil.toFloat(dr['CyCount']); dr.setColumnValue('PsTotal', (fPsPrice*fCyCount).round(2)); dr.setColumnValue('STotal', (fPrice*fCyCount).round(2)); return true; }; //CyYy 字段变化执行事件 Biz.prototype.fieldChangedBodyCyYy = function (dataSrc, dr, dc) { let sCyYy = dr ? TypeUtil.toString(dr['CyYy']) : ''; if ((sCyYy == "0") || (sCyYy == "3") || (sCyYy == "7")){ dr.setColumnValue('IsPk', "1"); } else{ dr.setColumnValue('IsPk', "0"); } return true; }; return Biz; });