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.

727 lines
30 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 rhtComm = require('apps/rht/comm/rhtComm');
//引入业务服务
let Service = require('./cnt070210service');
let OutLayDetail = require('./OutLayDetail');
/**
* 定义业务类对象
* @param vm 界面相关ViewModule
*/
function Biz(vm) {
//继承第一步,构造继承
BaseBiz.call(this, vm);
}
//继承第二步,方法继承
inherits(Biz, BaseBiz);
Biz.prototype.initCompleted = function () {
this.super('initCompleted');
this.orgType = rhtComm.GetOrgType(Store.logOn.orgCode);
this.isForeignCheck = rhtComm.getRhtOptionValue(Store.logOn.orgCode,'SYS','Sys_IsForeignCheck','0');
this.ctrlCntOrgDepRight = rhtComm.getRhtOptionValue("",'CNT','CtrlCntOrgDepRight','0');
};
//控制主界面按钮状态
Biz.prototype.getOpEnabled = function (opCode) {
let self = this;
let isOk = this.super('getOpEnabled', opCode);
if (!isOk) return false;
let curRow = this.dsMaster.currentRow;
let orgCode = curRow ? TypeUtil.toString(curRow['OrgCode']) : '';
let forChkStatus = curRow ? TypeUtil.toString(curRow['ForeignChkStatus']) : '';
let jzDate = curRow ? TypeUtil.toString(curRow['JzDate']) : '';
if (opCode == 'edit') {
if (!curRow)
return false;
if (orgCode != Store.logOn.orgCode)
return false;
if(forChkStatus != '0' && forChkStatus != '3')
return false;
if(jzDate != '')
return false;
}
if (opCode == 'delete') {
if (!curRow)
return false;
if (orgCode != Store.logOn.orgCode)
return false;
if(forChkStatus != '0' && forChkStatus != '3')
return false;
if(jzDate != '')
return false;
}
if (opCode == 'acc') {
// 入账
if (!curRow)
return false;
if (orgCode != Store.logOn.orgCode)
return false;
if(this.isForeignCheck != '0')
return false;
if(jzDate != '')
return false;
}
if (opCode == 'forchk') {
// 外部审核
if (!curRow)
return false;
if (orgCode != Store.logOn.orgCode)
return false;
if(jzDate != '')
return false;
if(this.isForeignCheck != '1')
return false;
if(forChkStatus != '0' && forChkStatus != '3')
return false;
}
if (opCode == 'additem') {
if(self.getState() != 'edit' && self.getState() != 'add')
return false;
}
if (opCode == 'edititem') {
if(self.getState() != 'edit' && self.getState() != 'add')
return false;
}
if (opCode == 'delitem') {
if(self.getState() != 'edit' && self.getState() != 'add')
return false;
}
if (opCode == 'nochg') {
if(self.getState() != 'edit' && self.getState() != 'add')
return false;
}
return true;
};
/**
* @description 数据发生变化时调用
* @param dataSrc 数据集
* @param dr 数据行
* @param dc 数据列
*/
Biz.prototype.fieldChanged = function (dataSrc, dr, dc) {
let self = this;
if (dataSrc.uiObjCode === this.dsMaster.uiObjCode) {
let currentRow = self.dsMaster.currentRow;
if (currentRow === null) return false;
switch (dc.fieldName) {
case 'HtCode':
this.fieldChangedHtCode(dataSrc, dr, dc);
break;
// case 'EtpCode':
// this.fieldChangedEtpCode(dataSrc, dr, dc);
// break;
}
}else if (dataSrc.uiObjCode === this.dsDetailCjKxRate.uiObjCode) {
let currentRow = self.dsDetailCjKxRate.currentRow;
if (currentRow === null) return false;
switch (dc.fieldName) {
case 'KxRate':
this.fieldChangedKxRate(dataSrc, dr, dc);
break;
case 'MinTotal':
this.fieldChangedMinTotal(dataSrc, dr, dc);
break;
case 'MaxTotal':
this.fieldChangedMaxTotal(dataSrc, dr, dc);
break;
}
}
return this.super('fieldChanged');
};
Biz.prototype.fieldChangedHtCode = function (dataSrc, dr, dc) {
let htCode = TypeUtil.toString(dr.HtCode);
if(htCode == '') {
return true;
}
let ret = Service.CntValid(htCode);
if (ret.result != 1) {
throw '校验合同失败!' + ret.message;
//dr.setColumnError('HtCode','校验合同失败!' + ret.message);
//return false;
}
ret = Service.GetCntEtp(htCode);
if (ret.result != 1) {
throw '加载合同信息失败!' + ret.message;
// dr.setColumnError('HtCode','加载合同信息失败!' + ret.message);
// return false;
}
dr.setColumnText('EtpCode', ret.data.etpcode);
ret = Service.GetCntOutLay(htCode);
if (ret.result != 1) {
throw '加载合同信息失败!' + ret.message;
// dr.setColumnError('HtCode','加载合同信息失败!' + ret.message);
// return false;
}
let dsKx = this.dsDetailKx;
dsKx.deleteAll();
for(let i = 0; i < ret.data.length; i++) {
let newRow = dsKx.addRow();
newRow.setColumnValue('ChangeType', '0');
newRow.setColumnValue('ItemCode', ret.data[i].itemcode);
newRow.setColumnValue('OrgCode', ret.data[i].orgcode);
newRow.setColumnValue('OrgName', ret.data[i].orgname);
newRow.setColumnValue('ItemNo', ret.data[i].itemno);
newRow.setColumnValue('BgnDate', ret.data[i].bgndate);
newRow.setColumnValue('EndDate', ret.data[i].enddate);
newRow.setColumnValue('JsBase', ret.data[i].jsbase);
newRow.setColumnValue('ZfCode', ret.data[i].zfcode);
newRow.setColumnValue('KxRate', ret.data[i].kxrate);
newRow.setColumnValue('TkTotal', ret.data[i].tktotal);
newRow.setColumnValue('ClType', ret.data[i].cltype);
newRow.setColumnValue('ClDate', ret.data[i].cldate);
newRow.setColumnValue('ScClDate', ret.data[i].sccldate);
newRow.setColumnValue('ZfType', ret.data[i].zftype);
newRow.setColumnValue('IsCalMl', ret.data[i].iscalml);
newRow.setColumnValue('CalMode', ret.data[i].calmode);
newRow.setColumnValue('CalBgnDate', ret.data[i].calbgndate);
newRow.setColumnValue('CalEndDate', ret.data[i].calenddate);
newRow.setColumnValue('IsInvoice', ret.data[i].isinvoice);
newRow.setColumnValue('SfRate', ret.data[i].sfrate);
newRow.setColumnValue('TkType', ret.data[i].tktype);
newRow.setColumnValue('Remark', ret.data[i].remark);
newRow.setColumnValue('IsSr', ret.data[i].issr);
newRow.setColumnValue('Months', ret.data[i].months);
newRow.setColumnValue('PluID', ret.data[i].pluid);
newRow.setColumnValue('PluCode', ret.data[i].plucode);
newRow.setColumnValue('PluName', ret.data[i].pluname);
newRow.setColumnValue('IsCjKx', ret.data[i].iscjkx);
newRow.setColumnValue('CalcType', ret.data[i].calctype);
newRow.setColumnValue('ClsID', ret.data[i].clsid);
newRow.setColumnValue('ClsCode', ret.data[i].clscode);
newRow.setColumnValue('ClsName', ret.data[i].clsname);
newRow.setColumnValue('BrandCode', ret.data[i].brandcode);
newRow.setColumnValue('BrandName', ret.data[i].brandname);
newRow.setColumnValue('FormulaId', ret.data[i].formulaid);
newRow.setColumnValue('FormulaName', ret.data[i].formulaname);
newRow.setColumnValue('CgyId', ret.data[i].cgyid);
newRow.setColumnValue('CgyCode', ret.data[i].cgycode);
newRow.setColumnValue('CgyName', ret.data[i].cgyname);
newRow.setColumnValue('GsOrgCode', ret.data[i].gsorgcode);
newRow.setColumnValue('GsOrgName', ret.data[i].gsorgname);
// 以下给记录扣项原值的字段赋值
newRow.setColumnValue('OldBgnDate', ret.data[i].bgndate);
newRow.setColumnValue('OldEndDate', ret.data[i].enddate);
newRow.setColumnValue('OldJsBase', ret.data[i].jsbase);
newRow.setColumnValue('OldZfCode', ret.data[i].zfcode);
newRow.setColumnValue('OldKxRate', ret.data[i].kxrate);
newRow.setColumnValue('OldTkTotal', ret.data[i].tktotal);
newRow.setColumnValue('OldClType', ret.data[i].cltype);
newRow.setColumnValue('OldZfType', ret.data[i].zftype);
newRow.setColumnValue('OldIsCalMl', ret.data[i].iscalml);
newRow.setColumnValue('OldCalMode', ret.data[i].calmode);
newRow.setColumnValue('OldCalBgnDate', ret.data[i].calbgndate);
newRow.setColumnValue('OldCalEndDate', ret.data[i].calenddate);
newRow.setColumnValue('OldIsInvoice', ret.data[i].isinvoice);
newRow.setColumnValue('OldTkType', ret.data[i].tktype);
newRow.setColumnValue('OldRemark', ret.data[i].remark);
newRow.setColumnValue('OldIsSr', ret.data[i].issr);
newRow.setColumnValue('OldPluID', ret.data[i].pluid);
newRow.setColumnValue('OldPluCode', ret.data[i].plucode);
newRow.setColumnValue('OldPluName', ret.data[i].pluname);
newRow.setColumnValue('OldIsCjKx', ret.data[i].iscjkx);
newRow.setColumnValue('OldCalcType', ret.data[i].calctype);
newRow.setColumnValue('OldClsID', ret.data[i].clsid);
newRow.setColumnValue('OldClsCode', ret.data[i].clscode);
newRow.setColumnValue('OldClsName', ret.data[i].clsname);
newRow.setColumnValue('OldBrandCode', ret.data[i].brandcode);
newRow.setColumnValue('OldBrandName', ret.data[i].brandname);
newRow.setColumnValue('OldFormulaId', ret.data[i].formulaid);
newRow.setColumnValue('OldFormulaName', ret.data[i].formulaname);
newRow.setColumnValue('OldCgyId', ret.data[i].cgyid);
newRow.setColumnValue('OldCgyCode', ret.data[i].cgycode);
newRow.setColumnValue('OldCgyName', ret.data[i].cgyname);
newRow.setColumnValue('OldGsOrgCode', ret.data[i].gsorgcode);
newRow.setColumnValue('OldGsOrgName', ret.data[i].gsorgname);
}
ret = Service.GetCntKxRate(htCode);
if (ret.result != 1) {
throw '加载合同信息失败!' + ret.message;
// dr.setColumnError('HtCode','加载合同信息失败!' + ret.message);
// return false;
}
let dsKxRate = this.dsDetailCjKxRate;
dsKxRate.deleteAll();
for(let i = 0; i < ret.data.length; i++) {
let newRow = dsKxRate.addRow();
newRow.setColumnValue('CntID', ret.data[i].cntid);
newRow.setColumnValue('ItemCode', ret.data[i].itemcode);
newRow.setColumnValue('ItemNo', ret.data[i].itemno);
newRow.setColumnValue('Months', ret.data[i].months);
newRow.setColumnValue('OrgCode', ret.data[i].orgcode);
newRow.setColumnValue('MinTotal', ret.data[i].mintotal);
newRow.setColumnValue('MaxTotal', ret.data[i].maxtotal);
newRow.setColumnValue('KxRate', ret.data[i].kxrate);
}
return true;
};
// Biz.prototype.fieldChangedEtpCode = function (dataSrc, dr, dc) {
// dr.setColumnValue('HtCode', '');
// this.dsDetailKx.deleteAll();
// }
Biz.prototype.fieldChangedKxRate = function (dataSrc, dr, dc) {
let kxRate = TypeUtil.toFloat(dr.KxRate);
if(kxRate < 0 || kxRate > 100) {
dr.setColumnError('KxRate','合同扣项比率应在0至100之间!');
return false;
}
}
Biz.prototype.fieldChangedMinTotal = function (dataSrc, dr, dc) {
let minTotal = TypeUtil.toFloat(dr.MinTotal);
let maxTotal = TypeUtil.toFloat(dr.MaxTotal);
if(minTotal < 0 || minTotal > 99999999999999) {
dr.setColumnError('MinTotal','输入金额必须在0-99999999999999之间!');
return false;
}
if(maxTotal != 0 && minTotal > maxTotal) {
dr.setColumnError('MinTotal','金额下限应小于金额上限!');
return false;
}
}
Biz.prototype.fieldChangedMaxTotal = function (dataSrc, dr, dc) {
let minTotal = TypeUtil.toFloat(dr.MinTotal);
let maxTotal = TypeUtil.toFloat(dr.MaxTotal);
if(maxTotal < 0 || maxTotal > 99999999999999) {
dr.setColumnError('MaxTotal','输入金额必须在0-99999999999999之间!');
return false;
}
if(maxTotal != 0 && minTotal > maxTotal) {
dr.setColumnError('MaxTotal','金额上限应大于金额下限!');
return false;
}
}
// 数据行变化
Biz.prototype.currentChanged = function (dataSrc, oldRow, newRow) {
/*if (dataSrc.name == 'dsMaster') {
}else if (dataSrc.name == 'dsDetailCjKxRate') {
}*/
return this.super('currentChanged', dataSrc, oldRow, newRow);
};
//新增行后处理,默认值已经处理
Biz.prototype.afterNewRow = function (dataSrc, newRow) {
if (dataSrc.uiObjCode === this.dsDetailCjKxRate.uiObjCode) {
if(this.dsDetailKx.currentRow.IsCjKx != '1') {
Store.messager.err('扣项不是层进扣项,不能设置层进明细!');
this.dsDetailCjKxRate.deleteRow(newRow);
return false;
}
}
return this.super('afterNewRow', dataSrc, newRow);
};
//按钮事件控制
Biz.prototype.doOp = function (opCode) {
let self = this;
// if (opCode == 'account') {
// let ds = self.dsMaster;
// this.onAcc(self, ds);
// }
if (opCode == 'forchk') {
let ds = self.dsMaster;
this.onForchk(self, ds);
}
if (opCode == 'additem') {
let ds = self.dsMaster;
this.onAddItem(self, ds);
}
if (opCode == 'edititem') {
let ds = self.dsMaster;
this.onEditItem(self, ds);
}
if (opCode == 'delitem') {
let ds = self.dsMaster;
this.onDeleteItem(self, ds);
}
if (opCode == 'nochg') {
let ds = self.dsMaster;
this.onNoChg(self, ds);
}
};
//按钮事件
// Biz.prototype.onAcc = function (biz, ds) {
// let billNo = TypeUtil.toString(ds.currentRow['BillNo']);
// let ret = Service.DoAccount(billNo, '0702');
// if (ret.result != 1) {
// Store.messager.err('记账失败!' + ret.message);
// return false;
// }
// Store.messager.tip('记账成功!');
// biz.dsMaster.updateRow();
// return true;
// };
Biz.prototype.onForchk = function (biz, ds) {
let billNo = TypeUtil.toString(ds.currentRow['BillNo']);
let ret = Service.DoForchk(billNo);
if (ret.result != 1) {
Store.messager.err('提交外部审核失败!' + ret.message);
return false;
}
Store.messager.tip('提交外部审核成功!');
biz.dsMaster.updateRow();
return true;
};
Biz.prototype.onAddItem = function (biz, ds) {
if(TypeUtil.toString(this.dsMaster.currentRow['HtCode']) == '') {
Store.messager.err('请录入合同!');
return false;
}
let outLayDetail = new OutLayDetail(this.dsDetailKx, 0);
outLayDetail.callback = function () {
}
outLayDetail.open();
return true;
};
Biz.prototype.onEditItem = function (biz, ds) {
if(TypeUtil.toString(this.dsMaster.currentRow['HtCode']) == '') {
Store.messager.err('请录入合同!');
return false;
}
let kxRow = this.dsDetailKx.currentRow;
if(!kxRow) {
Store.messager.err('请选择合同扣项!');
return false;
}
let months = TypeUtil.toString(kxRow.Months);
if(months != '*') {
Store.messager.err('此合同扣款专为扣项单据使用,在此不允许修改!');
return false;
}
let clType = TypeUtil.toString(kxRow.ClType);
let scClDate = TypeUtil.toString(kxRow.ScClDate);
if(clType == '0' && scClDate != '') {
Store.messager.err('当前一次性扣款已经使用,不再允许修改!');
return false;
}
let outLayDetail = new OutLayDetail(this.dsDetailKx, 1);
outLayDetail.callback = function () {
let changeType = TypeUtil.toString(kxRow.ChangeType);
// 仅当当前扣项的变更类型不是“新增”时,才修改它的变更类型。
if(changeType != '1') {
kxRow.setColumnValue('ChangeType', 2)
}
}
outLayDetail.open();
return true;
};
Biz.prototype.onDeleteItem = function (biz, ds) {
if(TypeUtil.toString(this.dsMaster.currentRow['HtCode']) == '') {
Store.messager.err('请录入合同!');
return false;
}
let kxRow = this.dsDetailKx.currentRow;
if(!kxRow) {
Store.messager.err('请选择合同扣项!');
return false;
}
let months = TypeUtil.toString(kxRow.Months);
if(months != '*') {
Store.messager.err('此合同扣款专为扣项单据使用,在此不允许删除!');
return false;
}
let scClDate = TypeUtil.toString(kxRow.ScClDate);
if(scClDate != '') {
Store.messager.err('当前一次性扣款已经使用,不允许删除!');
return false;
}
if (!Store.confirm("您确定要删除选中的扣项吗?")) {
return false;
}
let changeType = TypeUtil.toString(kxRow.ChangeType);
// 对于新增的扣项,直接将其删除,对于原有的扣项,将其变更类型修改为“删除”
if(changeType == '1') {
this.dsDetailKx.deleteRow(kxRow);
}else {
if(changeType == '2') {
// 如果原来的变更类型为“修改”,则将扣项的各项值复原
this.RecoverDetailKx(kxRow);
}
kxRow.setColumnValue('ChangeType', 3)
}
return true;
};
Biz.prototype.onNoChg = function (biz, ds) {
if(TypeUtil.toString(this.dsMaster.currentRow['HtCode']) == '') {
Store.messager.err('请录入合同!');
return false;
}
let kxRow = this.dsDetailKx.currentRow;
if(!kxRow) {
Store.messager.err('请选择合同扣项!');
return false;
}
if (!Store.confirm("确定要将当前选中扣项的变更类型设置为“无变更”吗?")) {
return false;
}
let changeType = TypeUtil.toString(kxRow.ChangeType);
// 对于新增的扣项,直接将其删除,对于原有的扣项,将其变更类型修改为“无变更”
if(changeType == '1') {
this.dsDetailKx.deleteRow(kxRow);
}else {
if(changeType == '2') {
// 如果原来的变更类型为“修改”,则将扣项的各项值复原
this.RecoverDetailKx(kxRow);
}
kxRow.setColumnValue('ChangeType', 0)
}
return true;
};
Biz.prototype.RecoverDetailKx = function (ksRow) {
ksRow.setColumnValue('BgnDate',ksRow.OldBgnDate);
ksRow.setColumnValue('EndDate',ksRow.OldEndDate);
ksRow.setColumnValue('JsBase',ksRow.OldJsBase);
ksRow.setColumnValue('ZfCode',ksRow.OldZfCode);
ksRow.setColumnValue('KxRate',ksRow.OldKxRate);
ksRow.setColumnValue('TkTotal',ksRow.OldTkTotal);
ksRow.setColumnValue('ClType',ksRow.OldClType);
ksRow.setColumnValue('ZfType',ksRow.OldZfType);
ksRow.setColumnValue('IsCalMl',ksRow.OldIsCalMl);
ksRow.setColumnValue('CalMode',ksRow.OldCalMode);
ksRow.setColumnValue('TkType',ksRow.OldTkType);
ksRow.setColumnValue('CalBgnDate',ksRow.OldCalBgnDate);
ksRow.setColumnValue('CalEndDate',ksRow.OldCalEndDate);
ksRow.setColumnValue('IsInvoice',ksRow.OldIsInvoice);
ksRow.setColumnValue('Remark',ksRow.OldRemark);
ksRow.setColumnValue('IsSr',ksRow.OldIsSr);
ksRow.setColumnValue('PluID',ksRow.OldPluID);
ksRow.setColumnValue('PluCode',ksRow.OldPluCode);
ksRow.setColumnValue('PluName',ksRow.OldPluName);
ksRow.setColumnValue('ClsID',ksRow.OldClsID);
ksRow.setColumnValue('ClsCode',ksRow.OldClsCode);
ksRow.setColumnValue('ClsName',ksRow.OldClsName);
ksRow.setColumnValue('BrandCode',ksRow.OldBrandCode);
ksRow.setColumnValue('BrandName',ksRow.OldBrandName);
ksRow.setColumnValue('FormulaId',ksRow.OldFormulaId);
ksRow.setColumnValue('FormulaName',ksRow.OldFormulaName);
ksRow.setColumnValue('CgyId',ksRow.OldCgyId);
ksRow.setColumnValue('CgyCode',ksRow.OldCgyCode);
ksRow.setColumnValue('CgyName',ksRow.OldCgyName);
ksRow.setColumnValue('GsOrgCode',ksRow.OldGsOrgCode);
ksRow.setColumnValue('GsOrgName',ksRow.OldGsOrgName);
return true;
};
//保存前
Biz.prototype.beforeSave = function () {
this.GenChangeData();
if(!this.CheckCjDetail()) {
return false;
}
return this.super('beforeSave');
};
Biz.prototype.GenChangeData = function () {
let kxRows = this.dsDetailKx.rows;
let cjKxRateRows = this.dsDetailCjKxRate.rows;
let kxXgRows = this.dsDetailXg.rows;
for(let i = 0; i < kxRows.length; i++) {
let currKxRow = kxRows[i];
if(currKxRow.ChangeType == '0' || currKxRow.ChangeType == '3') {
let billNo = TypeUtil.toString(currKxRow.BillNo);
let orgCode = TypeUtil.toString(currKxRow.OrgCode);
let itemCode = TypeUtil.toString(currKxRow.ItemCode);
let itemNo = TypeUtil.toString(currKxRow.ItemNo);
let months = TypeUtil.toString(currKxRow.Months);
for(let j = 0; j < cjKxRateRows.length; j++) {
let currCjKxRateRow = cjKxRateRows[i];
if(currCjKxRateRow.BillNo == billNo && currCjKxRateRow.OrgCode == orgCode
&& currCjKxRateRow.ItemCode == itemCode && currCjKxRateRow.ItemNo == itemNo
&& currCjKxRateRow.Months == months) {
this.dsDetailCjKxRate.deleteRow(currCjKxRateRow);
}
}
for(let j = 0; j < kxXgRows.length; j++) {
let currKxgRow = kxXgRows[i];
if(currKxgRow.BillNo == billNo && currKxgRow.OrgCode == orgCode
&& currKxgRow.ItemCode == itemCode && currKxgRow.ItemNo == itemNo
&& currKxgRow.Months == months) {
this.dsDetailXg.deleteRow(currKxgRow);
}
}
this.dsDetailKx.deleteRow(currKxRow);
}
// 以下逐个字段判断是否发生了变化,如果发生了变化,则生成变更数据
if(currKxRow.ChangeType == '2') {
this.CheckKxFieldChanged(currKxRow, 'BgnDate', '开始日期');
this.CheckKxFieldChanged(currKxRow, 'EndDate', '结束日期');
this.CheckKxFieldChanged(currKxRow, 'JsBase', '计算基数');
this.CheckKxFieldChanged(currKxRow, 'ZfCode', '支付方式');
this.CheckKxFieldChanged(currKxRow, 'KxRate', '扣项比例');
this.CheckKxFieldChanged(currKxRow, 'TkTotal', '条款金额');
this.CheckKxFieldChanged(currKxRow, 'ClType', '处理类型');
this.CheckKxFieldChanged(currKxRow, 'ZfType', '支付类型');
this.CheckKxFieldChanged(currKxRow, 'IsCalMl', '计入毛利');
this.CheckKxFieldChanged(currKxRow, 'CalMode', '计算方式');
this.CheckKxFieldChanged(currKxRow, 'TkType', '条款类型');
this.CheckKxFieldChanged(currKxRow, 'CalBgnDate', '条款日期区间开始日期');
this.CheckKxFieldChanged(currKxRow, 'CalEndDate', '条款日期区间结束日期');
this.CheckKxFieldChanged(currKxRow, 'IsInvoice', '不计入货款发票');
this.CheckKxFieldChanged(currKxRow, 'Remark', '备注');
this.CheckKxFieldChanged(currKxRow, 'IsSr', '十位数四舍五入');
this.CheckKxFieldChanged(currKxRow, 'PluCode', '商品');
this.CheckKxFieldChanged(currKxRow, 'IsCjKx', '是否层进扣项');
this.CheckKxFieldChanged(currKxRow, 'CalcType', '层进扣项计算方式');
this.CheckKxFieldChanged(currKxRow, 'CgyId', '采购员ID');
this.CheckKxFieldChanged(currKxRow, 'CgyCode', '采购员编码');
this.CheckKxFieldChanged(currKxRow, 'CgyName', '采购员名称');
this.CheckKxFieldChanged(currKxRow, 'GsOrgCode', '扣项归属组织');
this.CheckKxFieldChanged(currKxRow, 'GsOrgName', '扣项归属组织名称');
this.CheckKxFieldChanged(currKxRow, 'ClsCode', '品类');
this.CheckKxFieldChanged(currKxRow, 'BrandCode', '品牌');
this.CheckKxFieldChanged(currKxRow, 'FormulaId', '计算公式') ;
}
}
}
Biz.prototype.CheckKxFieldChanged = function (kxRow, fieldName, fieldCNNane) {
let oldValue = TypeUtil.toString(kxRow['Old' + fieldName]);
let newValue = TypeUtil.toString(kxRow[fieldName]);
let billNo = TypeUtil.toString(kxRow.BillNo);
let orgCode = TypeUtil.toString(kxRow.OrgCode);
let orgName = TypeUtil.toString(kxRow.OrgName);
let itemCode = TypeUtil.toString(kxRow.ItemCode);
let itemNo = TypeUtil.toString(kxRow.ItemNo);
let months = TypeUtil.toString(kxRow.Months);
let kxXgRows = this.dsDetailXg.rows;
if(newValue != oldValue) {
for(let i = 0; i < kxXgRows.length; i++) {
let currKxXgRow = kxXgRows[i];
if(currKxXgRow.BillNo == billNo && currKxXgRow.OrgCode == orgCode
&& currKxXgRow.ItemCode == itemCode && currKxXgRow.ItemNo == itemNo
&& currKxXgRow.Months == months && currKxXgRow.FieldName == fieldName) {
currKxXgRow.setColumnValue('OriValue', oldValue);
currKxXgRow.setColumnValue('OriName', oldValue);
currKxXgRow.setColumnValue('NowValue', newValue);
currKxXgRow.setColumnValue('NowName', newValue);
return true;
}
}
let addKxXgRow = this.dsDetailXg.addRow();
addKxXgRow.setColumnValue('BillNo', billNo);
addKxXgRow.setColumnValue('ItemCode', itemCode);
addKxXgRow.setColumnValue('OrgCode', orgCode);
addKxXgRow.setColumnValue('OrgName', orgName);
addKxXgRow.setColumnValue('ItemNo', itemNo);
addKxXgRow.setColumnValue('Months', months);
addKxXgRow.setColumnValue('FieldName', fieldName);
addKxXgRow.setColumnValue('FieldCName', fieldCNNane);
addKxXgRow.setColumnValue('OriValue', oldValue);
addKxXgRow.setColumnValue('OriName', oldValue);
addKxXgRow.setColumnValue('NowValue', newValue);
addKxXgRow.setColumnValue('NowName', newValue);
return true;
}else {
for(let i = 0; i < kxXgRows.length; i++) {
let currKxXgRow = kxXgRows[i];
if(currKxXgRow.BillNo == billNo && currKxXgRow.OrgCode == orgCode
&& currKxXgRow.ItemCode == itemCode && currKxXgRow.ItemNo == itemNo
&& currKxXgRow.Months == months && currKxXgRow.FieldName == fieldName) {
kxXgRows.deleteRow(currKxXgRow);
return true;
}
}
}
}
Biz.prototype.CheckCjDetail = function() {
if(this.dsDetailCjKxRate.rows.length < 1) {
return true;
}
// 根据金额下限升序排序
this.dsDetailCjKxRate.rows.sort(this.SortLxTcRate);
if(TypeUtil.toFloat(this.dsDetailCjKxRate.rows[0].MinTotal) != 0) {
Store.messager.err('最低金额下限必须为0');
return false;
}
let thisMaxTotal;
let nextMinTotal;
for(let i = 0; i < this.dsDetailCjKxRate.rows.length-1; i++) {
thisMaxTotal = TypeUtil.toFloat(this.dsDetailCjKxRate.rows[i].MaxTotal);
nextMinTotal = TypeUtil.toFloat(this.dsDetailCjKxRate.rows[i+1].MinTotal);
if(thisMaxTotal > nextMinTotal) {
Store.messager.err('金额区间重复!');
return false;
}
}
for(let i = 0; i < this.dsDetailCjKxRate.rows.length-1; i++) {
thisMaxTotal = TypeUtil.toFloat(this.dsDetailCjKxRate.rows[i].MaxTotal);
nextMinTotal = TypeUtil.toFloat(this.dsDetailCjKxRate.rows[i+1].MinTotal);
if(thisMaxTotal != nextMinTotal) {
Store.messager.err('金额区间不连续!');
return false;
}
}
if(TypeUtil.toFloat(this.dsDetailCjKxRate.rows[this.dsDetailCjKxRate.rows.length-1].MaxTotal) != 0) {
Store.messager.err('最高金额上限必须设置为0金额上限为0代表上限不做限制。');
return false;
}
return true;
};
Biz.prototype.SortLxTcRate = function (a, b) {
return a.MinTotal - b.MinTotal;
};
return Biz;
});