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.

429 lines
19 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('./wsl160126service');
/**
* 定义业务类对象
* @param vm 界面相关ViewModule
*/
function Biz(vm) {
//继承第一步,构造继承
BaseBiz.call(this, vm);
}
//继承第二步,方法继承
inherits(Biz, BaseBiz);
//控制是否允许删除明细 0-否 1-是(允许)
let Isdel = "0";
let Isadd = "0";
let IsMdKwMng = rhtComm.getRhtOptionValue(Store.logOn.orgCode,'STK','IsMdKwMng','1');
//新增行后处理,默认值已经处理
Biz.prototype.afterNewRow = function (dataSrc, newRow) {
if (dataSrc.uiObjCode === this.dsMaster.uiObjCode) {
let InOrgCode = rhtComm.GetInOrgCode(Store.logOn.orgCode).message;
newRow.setColumnValue('InOrgCode', InOrgCode);
}
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
let masterRow = this.dsMaster.currentRow;
let LyBillNo = TypeUtil.toString(masterRow['LyBillNo']);
if ((LyBillNo.length > 0) && (Isadd == "0")) {
Isadd = "1";
this.dsDetail.deleteRow(newRow);
Isadd = "0";
Store.messager.err('按原单返还时不允许增加新数据!');
return false;
}
}
this.super('afterNewRow', dataSrc, newRow);
};
//保存前校验 计算主表合计数量等字段
Biz.prototype.beforeSave = function () {
let curRow = this.dsMaster.currentRow;
if(curRow){
let LyCount = 0.0;
let STotal = 0.0;
let YhTotal = 0.0;
let SsTotal = 0.0;
let XTaxTotal = 0.0;
let StlCurrSsTotal = 0.0;
for(let i=0;i<this.dsDetail.rows.length;i++){
let row = this.dsDetail.rows[i];
LyCount = LyCount + TypeUtil.toFloat(row['LyCount']);
STotal = STotal + TypeUtil.toFloat(row['STotal']);
YhTotal = YhTotal + TypeUtil.toFloat(row['YhTotal']);
SsTotal = SsTotal + TypeUtil.toFloat(row['SsTotal']);
XTaxTotal = XTaxTotal + TypeUtil.toFloat(row['XTaxTotal']);
StlCurrSsTotal = StlCurrSsTotal + TypeUtil.toFloat(row['StlCurrSsTotal']);
}
curRow.setColumnValue('LyCount',LyCount);
curRow.setColumnValue('STotal',STotal);
curRow.setColumnValue('YhTotal',YhTotal);
curRow.setColumnValue('SsTotal',SsTotal);
curRow.setColumnValue('XTaxTotal',XTaxTotal);
curRow.setColumnValue('StlCurrSsTotal',StlCurrSsTotal);
}
return this.super('beforeSave');
};
//行删除前的校验
Biz.prototype.beforeDeleteRow=function(dataSrc, newRow){
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
let masterRow = this.dsMaster.currentRow;
let LyBillNo = TypeUtil.toString(masterRow['LyBillNo']);
if ((LyBillNo.length > 0) && (Isdel == "0") && (newRow['PluId'] > 0)) {
Store.messager.err('按原单返还时不允许删除原领用单数据!');
return false;
}
}
return true;
};
//明细行单行提交触发的校验
Biz.prototype.dataRowValidate = function (dataSrc, dr) {
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
let masterRow = this.dsMaster.currentRow;
let LyCount = TypeUtil.toFloat(dr['LyCount']);
let PackUnit = TypeUtil.toString(dr['PackUnit']);
let PluCode = dr ? TypeUtil.toString(dr['PluCode']) : '';
let LyBillNo = masterRow ? TypeUtil.toString(masterRow['LyBillNo']) : '';
let ToSerialNo = TypeUtil.toString(dr['ToSerialNo']);
if (PluCode.length <= 0) {
return "商品编码不能为空!";
}
if (LyCount <= 0) {
return "返还数量应该大于0";
}
if (PackUnit == "") {
dr.setColumnValue('PackCount', "0");
}
if (LyBillNo.length > 0){
let ret= Service.getSlideMenuData("DoOnMasterRule","ChkBillBody",LyBillNo,ToSerialNo,"","","");
if (ret.result !== 1) {
return "获取内部领用单:"+LyBillNo+"的明细失败";
}
if (ret.data === null) {
return "按原单返还时不允许增加或修改原领用单数据!";
}
if (ret.data.PluId !== undefined){
if ((dr['DepId'] != ret.data.DepId) || (dr['PluId'] != ret.data.PluId)
|| (dr['LyCount'] != ret.data.LyCount) || (dr['Price'] != ret.data.Price)
|| (dr['PluType'] != ret.data.PluType) || (dr['SsTotal'] != ret.data.SsTotal)){
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 'LyBillNo':
this.fieldChangedLyBillNo(dataSrc, dr, dc);
break;
case 'FkTotal':
this.fieldChangedFkTotal(dataSrc, dr, dc);
break;
}
}
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
switch (dc.fieldName) {
case 'PluCode':
this.fieldChangedPluCode(dataSrc, dr, dc);
break;
case 'SglCount':
this.fieldChangedSglCount(dataSrc, dr, dc);
break;
case 'PackCount':
this.fieldChangedPackCount(dataSrc, dr, dc);
break;
case 'Price':
this.fieldChangedPrice(dataSrc, dr, dc);
break;
case 'YhTotal':
this.fieldChangedYhTotal(dataSrc, dr, dc);
break;
case 'SsTotal':
this.fieldChangedSsTotal(dataSrc, dr, dc);
break;
case 'XTaxRate':
this.fieldChangedXTaxRate(dataSrc, dr, dc);
break;
}
}
this.super('fieldChanged');
};
//LyBillNo 字段变化执行事件
Biz.prototype.fieldChangedLyBillNo = function (dataSrc, dr, dc) {
let self = this;
let currentRow = self.dsMaster.currentRow;
let sRefBillNo = TypeUtil.toString(currentRow['LyBillNo']);
let CkCode = currentRow ? TypeUtil.toString(currentRow['CkCode']) : '';
if (CkCode.length == 0) {
dr.setColumnError('CkCode', "请先输入仓库!");
return false;
}
if (sRefBillNo === ''){
//清空明细表
Isdel = "1";
this.dsDetail.deleteAll();
Isdel = "0";
}
//调用服务端插件获取主表信息
let ret= Service.getSlideMenuData("DoOnMasterRule","LyBillNo",sRefBillNo,"","","","");
if (ret.result !== 1) {
dr.setColumnError(dc.fieldName, ret.message);
dr.setColumnText('LyBillNo', '');
return false;
}
//如果没有结果报错并结束
if (ret.data === null){
dr.setColumnError(dc.fieldName, "未获取到参照单据:"+ret.message);
dr.setColumnText('LyBillNo', '');
return false;
}
else{
//主表字段赋值
dr.setColumnText('DepCode', ret.data.DepCode);
dr.setColumnValue('SkTotal', ret.data.SkTotal);
dr.setColumnValue('PriceType', ret.data.PriceType);
//明细表字段赋值
//首先清空明细表
Isdel = "1";
this.dsDetail.deleteAll();
Isdel = "0";
//循环插入记录
Isadd = "1";
for(let i = 0; i <= ret.data.Bodys.length - 1; i++){
let drdetail = this.dsDetail.addRow();
drdetail.setColumnValue('ToSerialNo', ret.data.Bodys[i].SerialNo);
drdetail.setColumnValue('DepId',ret.data.Bodys[i].DepId);
drdetail.setColumnValue('DepCode',ret.data.Bodys[i].DepCode);
drdetail.setColumnValue('DepName',ret.data.Bodys[i].DepName);
drdetail.setColumnValue('PluId', ret.data.Bodys[i].PluId);
drdetail.setColumnValue('PluCode', ret.data.Bodys[i].PluCode);
drdetail.setColumnValue('PluName', ret.data.Bodys[i].PluName);
drdetail.setColumnValue('BarCode',ret.data.Bodys[i].BarCode);
drdetail.setColumnValue('Spec',ret.data.Bodys[i].Spec);
drdetail.setColumnValue('Unit',ret.data.Bodys[i].Unit);
drdetail.setColumnValue('ExPluCode',ret.data.Bodys[i].ExPluCode);
drdetail.setColumnValue('ExPluName',ret.data.Bodys[i].ExPluName);
drdetail.setColumnValue('PackUnit',ret.data.Bodys[i].PackUnit);
drdetail.setColumnValue('PackQty',ret.data.Bodys[i].PackQty);
drdetail.setColumnValue('PackCount',ret.data.Bodys[i].PackCount);
drdetail.setColumnValue('SglCount',ret.data.Bodys[i].SglCount);
drdetail.setColumnValue('LyCount',ret.data.Bodys[i].LyCount);
drdetail.setColumnValue('Price',ret.data.Bodys[i].Price);
drdetail.setColumnValue('STotal',ret.data.Bodys[i].STotal);
drdetail.setColumnValue('YhTotal',ret.data.Bodys[i].YhTotal);
drdetail.setColumnValue('SsTotal',ret.data.Bodys[i].SsTotal);
drdetail.setColumnValue('XTaxRate',ret.data.Bodys[i].XTaxRate);
drdetail.setColumnValue('XTaxTotal',ret.data.Bodys[i].XTaxTotal);
drdetail.setColumnText('PluType',ret.data.Bodys[i].PluType);
drdetail.setColumnText('KwCode',ret.data.Bodys[i].KwCode);
drdetail.setColumnValue('Remark',ret.data.Bodys[i].Remark);
drdetail.setColumnValue('CkPrice',ret.data.Bodys[i].CkPrice);
drdetail.setColumnValue('CkSsTotal',ret.data.Bodys[i].CkSsTotal);
}
Isadd = "0";
}
return true;
};
//FkTotal 字段变化执行事件
Biz.prototype.fieldChangedFkTotal = function (dataSrc, dr, dc) {
let self = this;
let currentRow = self.dsMaster.currentRow;
let FkTotal = TypeUtil.toFloat(currentRow['FkTotal']);
if (FkTotal < 0) {
dr.setColumnError(dc.fieldName, "押金返还金额不能小于0");
return false;
}
return true;
};
//PluCode 字段变化执行事件
Biz.prototype.fieldChangedPluCode = function (dataSrc, dr, dc) {
let self = this;
let currentRow = self.dsMaster.currentRow;
let PluId = dr['PluId'];
let PluCode = dr['PluCode'];
let DepCode = currentRow['DepCode'];
let CkCode = currentRow['CkCode'];
let PriceType = currentRow['PriceType'];
if (PluCode.length > 0){
dr.setColumnValue('PackUnit', "");
dr.setColumnValue('PackQty', "0");
let JSONObject={psPluCode:PluCode,psYwType:"1610"};
let retPacket= Service.getSlideMenuData("pubsysBaseBL","GetDefaultPluPackUnitByYwType",JSONObject,PluCode,"","","");
if (retPacket.result === 1) {
if (retPacket.data != null) {
dr.setColumnValue('PackUnit', retPacket.data.Unit);
dr.setColumnValue('PackQty', retPacket.data.Qty);
}
}
dr.setColumnValue("PackCount", "0");
dr.setColumnText("SglCount", "0");
dr.setColumnValue('CkPrice', "0");
let InOrgCode = rhtComm.GetInOrgCode(Store.logOn.orgCode).message;
JSONObject={OrgCode:InOrgCode,PluCode:PluCode,DepCode:DepCode};
let retdep = Service.getSlideMenuData("pubsysBaseBL","UQryPluDepInfo",JSONObject,"","","","");
if (retdep.result === 1) {
if (retdep.data != null) {
dr.setColumnValue('DepId', retdep.data.DepID);
dr.setColumnValue('DepCode', retdep.data.DepCode);
dr.setColumnValue('DepName', retdep.data.DepName);
}
}
else{
dr.setColumnError(dc.fieldName, retdep.message);
return false;
}
dr.setColumnText('YhTotal', "0");
if (IsMdKwMng == "1"){
JSONObject={CurInOrgCode:InOrgCode,CkCode:CkCode,PluID:PluId};
let retKwCode = Service.getSlideMenuData("pubsysBaseBL","GetPluKw",JSONObject,"","","","");
if (retKwCode.result === 1) {
if (retKwCode.data != null) {
dr.setColumnValue('KwCode', retKwCode.data.KwCode);
}
}
else{
dr.setColumnError(dc.fieldName, retKwCode.message);
return false;
}
}
let ret= Service.getSlideMenuData("DoOnDetailCalcRule","PluCode","",PluCode,InOrgCode,"","");
if (ret.result !== 1) {
dr.setColumnError(dc.fieldName, ret.message);
return false;
}
if (ret.data != null) {
if (PriceType == "0"){
dr.setColumnText('Price', ret.data.PfPrice);
}
if (PriceType == "2"){
dr.setColumnText('Price', ret.data.Price);
}
dr.setColumnText('CkPrice', ret.data.Price);
dr.setColumnText("SglCount", "0");
}
}
return true;
};
//SglCount 字段变化执行事件
Biz.prototype.fieldChangedSglCount = function (dataSrc, dr, dc) {
let PackQty = TypeUtil.toFloat(dr['PackQty']);
let PackCount = TypeUtil.toFloat(dr['PackCount']);
let SglCount = TypeUtil.toFloat(dr['SglCount']);
let Price = TypeUtil.toFloat(dr['Price']);
let YhTotal = TypeUtil.toFloat(dr['YhTotal']);
let XTaxRate = TypeUtil.toFloat(dr['XTaxRate']);
let CkPrice = TypeUtil.toFloat(dr['CkPrice']);
let LyCount =0.0;
let SsTotal =0.0;
LyCount = (PackCount * PackQty) + SglCount;
SsTotal = (LyCount*Price).round(2)-YhTotal;
dr.setColumnValue("LyCount", LyCount);
dr.setColumnValue("STotal", (LyCount*Price).round(2));
dr.setColumnValue("SsTotal", SsTotal);
dr.setColumnValue("XTaxTotal", (SsTotal*(XTaxRate/100/(1+XTaxRate/100))).round(2));
dr.setColumnValue("CkSsTotal", (LyCount*CkPrice).round(2));
return true;
};
//PackCount 字段变化执行事件
Biz.prototype.fieldChangedPackCount = function (dataSrc, dr, dc) {
let PackQty = TypeUtil.toFloat(dr['PackQty']);
let PackCount = TypeUtil.toFloat(dr['PackCount']);
let SglCount = TypeUtil.toFloat(dr['SglCount']);
let Price = TypeUtil.toFloat(dr['Price']);
let YhTotal = TypeUtil.toFloat(dr['YhTotal']);
let XTaxRate = TypeUtil.toFloat(dr['XTaxRate']);
let CkPrice = TypeUtil.toFloat(dr['CkPrice']);
let LyCount =0.0;
let SsTotal =0.0;
LyCount = (PackCount * PackQty) + SglCount;
SsTotal = (LyCount*Price).round(2)-YhTotal;
dr.setColumnValue("LyCount", LyCount);
dr.setColumnValue("STotal", (LyCount*Price).round(2));
dr.setColumnValue("SsTotal", SsTotal);
dr.setColumnValue("XTaxTotal", (SsTotal*(XTaxRate/100/(1+XTaxRate/100))).round(2));
dr.setColumnValue("CkSsTotal", (LyCount*CkPrice).round(2));
return true;
};
//Price 字段变化执行事件
Biz.prototype.fieldChangedPrice = function (dataSrc, dr, dc) {
let LyCount = TypeUtil.toFloat(dr['LyCount']);
let Price = TypeUtil.toFloat(dr['Price']);
let YhTotal = TypeUtil.toFloat(dr['YhTotal']);
let XTaxRate = TypeUtil.toFloat(dr['XTaxRate']);
let SsTotal =0.0;
SsTotal = (LyCount*Price).round(2)-YhTotal;
dr.setColumnValue("STotal", (LyCount*Price).round(2));
dr.setColumnValue("SsTotal", SsTotal);
dr.setColumnValue("XTaxTotal", (SsTotal*(XTaxRate/100/(1+XTaxRate/100))).round(2));
return true;
};
//YhTotal 字段变化执行事件
Biz.prototype.fieldChangedYhTotal = function (dataSrc, dr, dc) {
let YsTotal = TypeUtil.toFloat(dr['STotal']);
let YhTotal = TypeUtil.toFloat(dr['YhTotal']);
let XTaxRate = TypeUtil.toFloat(dr['XTaxRate']);
let SsTotal =0.0;
SsTotal = YsTotal-YhTotal;
dr.setColumnValue("SsTotal", YsTotal-YhTotal);
dr.setColumnValue("XTaxTotal", (SsTotal*(XTaxRate/100/(1+XTaxRate/100))).round(2));
return true;
};
//SsTotal 字段变化执行事件
Biz.prototype.fieldChangedSsTotal = function (dataSrc, dr, dc) {
let LyCount = TypeUtil.toFloat(dr['LyCount']);
let SsTotal = TypeUtil.toFloat(dr['SsTotal']);
let XTaxRate = TypeUtil.toFloat(dr['XTaxRate']);
let Price = 0.0;
if (LyCount == 0){
Price = 0;
}
else{
Price = ((SsTotal/LyCount)+0.00004).round(4);
}
dr.setColumnValue("Price", Price);
dr.setColumnValue("STotal", (LyCount*Price).round(2));
dr.setColumnValue("SsTotal", (LyCount*Price).round(2)-SsTotal);
dr.setColumnValue("XTaxTotal", (SsTotal*(XTaxRate/100/(1+XTaxRate/100))).round(2));
return true;
};
//XTaxRate 字段变化执行事件
Biz.prototype.fieldChangedXTaxRate = function (dataSrc, dr, dc) {
let XTaxRate = TypeUtil.toFloat(dr['XTaxRate']);
let SsTotal = TypeUtil.toFloat(dr['SsTotal']);
dr.setColumnValue("XTaxTotal", (SsTotal*(XTaxRate/100/(1+XTaxRate/100))).round(2));
return true;
};
return Biz;
});