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.

375 lines
15 KiB

define(function (require, exports, module) {
let BaseBiz = require('apps/rht/base/rhtBiz');
let Service = require('./dst200102service');
let rhtComm = require('../../comm/rhtComm');
let PdWindow = require("system/views/pages/batch-pd-window/batch-pd-window");
/**
* 控制按钮的可用
* @param opCode 按钮编码
* @return [description]
*/
function Biz(vm) {
//继承第一步,构造继承
BaseBiz.call(this, vm);
vm.remark =''
}
//继承第二步,方法继承
inherits(Biz, BaseBiz);
//新增行后处理,默认值已经处理
Biz.prototype.afterNewRow = function (dataSrc, newRow) {
if (dataSrc.uiObjCode === this.dsMaster.uiObjCode) {
let Ord_YhDays = rhtComm.getRhtOptionValue('*','ORD','Ord_YhDays','1');
let iYhDays = TypeUtil.toFloat(Ord_YhDays);
newRow.setColumnValue('SdDate',rhtComm.GetServerDate(iYhDays));
}
};
//行删除前的校验
Biz.prototype.beforeDeleteRow=function(dataSrc, dataRow){
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
let sAskType = TypeUtil.toString(dataRow['AskType']);
if ( (sAskType == "3") || (sAskType == "4") || (sAskType == "5") ) {
masterRow.setColumnError("BillNo", '组合类要货不允许对要货记录进行删除!');
return false;
}
}
return true;
};
//明细行单行提交触发的校验
Biz.prototype.dataRowValidate = function (dataSrc, dr) {
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
let sPackUnit = TypeUtil.toString(dr['PackUnit']);
let fPsCount = TypeUtil.toFloat(dr['PsCount']);
if (fPsCount <= 0) {
return "配送数量不能小于或等于零!";
}
if (sPackUnit == "")
{
dr.setColumnText('PackCount',"0");
}
}
return true;
};
//校验小数精度
Biz.prototype.getPrecision = function (dataSrc, dr, dc, defaultPrecision) {
if (dataSrc.uiObjCode == this.dsDetail.uiObjCode) {
//把这里改成需要控制的字段
if ((dc.fieldName == 'PackCount') ||(dc.fieldName == 'SglCount')) {
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 'Remark':
this.fieldChangedRemark(dataSrc, dr, dc);
break;
}
}
if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) {
switch (dc.fieldName) {
case 'ShOrgCode':
this.fieldChangedShOrgCode(dataSrc, dr, dc);
break;
case 'PluCode':
this.fieldChangedPluCode(dataSrc, dr, dc);
break;
case 'PackUnit':
this.fieldChangedPackUnit(dataSrc, dr, dc);
break;
case 'PackCount':
this.fieldChangedPackCount(dataSrc, dr, dc);
break;
case 'SglCount':
this.fieldChangedSglCount(dataSrc, dr, dc);
break;
}
}
this.super('fieldChanged');
};
//Remark 字段变化执行事件
Biz.prototype.fieldChangedRemark = function (dataSrc, dr, dc) {
let sRemarkBillNo = dr ? TypeUtil.toString(dr['RemarkBillNo']) : '';
if (sRemarkBillNo.length > 0){
dr.setColumnError(dc.fieldName, "备注信息已写入配送单,不能修改!");
return false;
}
return true;
};
//ShOrgCode 字段变化执行事件
Biz.prototype.fieldChangedShOrgCode = function (dataSrc, dr, dc) {
let sShOrgCode = dr ? TypeUtil.toString(dr['ShOrgCode']) : '';
if (sShOrgCode === '') return false;
if (dc.getRefValue('etpdsttype') == "0") {
dr.setColumnValue('OrgType',"0")
}
else{
dr.setColumnValue('OrgType',"1")
}
let dBodyRow = dr.getData();
let ret= Service.getSlideMenuData("DoOnDetailCalcRule","ShOrgCode", dBodyRow,"","","","");
if (ret.result !== 1) {
dr.setColumnError(dc.fieldName, ret.message);
return false;
}
if (ret.data != null) {
let fPsCount = TypeUtil.toFloat(dr['PsCount']);
let fPsPrice = TypeUtil.toFloat(ret.data.price);
dr.setColumnValue('PsPrice', ret.data.price);
dr.setColumnValue('PsTotal', (fPsPrice*fPsCount).round(2));
dr.setColumnValue('ShAddr', ret.data.address);
}
return true;
};
//PluCode 字段变化执行事件
Biz.prototype.fieldChangedPluCode = function (dataSrc, dr, dc) {
let sPluCode = TypeUtil.toString(dr['PluCode']);
let fPsCount = TypeUtil.toFloat(dr['PsCount']);
if (sPluCode === '') return false;
//获取包装信息
let JSONObject={psPluCode:sPluCode,psYwType:"2002"};
let retPacket= Service.getSlideMenuData("pubsysBaseBL","GetDefaultPluPackUnitByYwType",JSONObject,sPluCode,"","","");
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");
//明细相关字段赋值
let dBodyRow = dr.getData();
let ret= Service.getSlideMenuData("DoOnDetailCalcRule","PluCode", dBodyRow,"","","","");
if (ret.result !== 1) {
dr.setColumnError(dc.fieldName, ret.message);
return false;
}
if (ret.data != null) {
let fPsPrice = TypeUtil.toFloat(ret.data.price);
dr.setColumnValue('PsPrice', ret.data.price);
dr.setColumnValue('PsTotal', (fPsPrice*fPsCount).round(2));
dr.setColumnValue('NewPcJPrice', ret.data.newpcjprice);
}
return true;
};
//PackUnit 字段变化执行事件
Biz.prototype.fieldChangedPackUnit = function (dataSrc, dr, dc) {
let sPackUnit = TypeUtil.toString(dr['PackUnit']);
let sAskType = TypeUtil.toString(dr['AskType']);
if ((sAskType == "3") || (sAskType == "4") || (sAskType == "5")){
dr.setColumnError(dc.fieldName, '组合类要货不允许对要货包装进行修改!');
return false;
}
if (sPackUnit == "")
{
dr.setColumnValue('PackQty', "0");
}
dr.setColumnText('PackCount', "0");
return true;
};
//PackCount 字段变化执行事件
Biz.prototype.fieldChangedPackCount = function (dataSrc, dr, dc) {
let fPackCount = TypeUtil.toFloat(dr['PackCount']);
let fPackQty = TypeUtil.toFloat(dr['PackQty']);
let fSglCount = TypeUtil.toFloat(dr['SglCount']);
let fPsPrice = TypeUtil.toFloat(dr['PsPrice']);
let fPsCount = fPackCount*fPackQty+fSglCount;
let fPsCost = (fPsCount*fPsPrice).round(2);
let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : '';
if (sPluCode === '') return false;
let sAskType = TypeUtil.toString(dr['AskType']);
if ((sAskType == "3") || (sAskType == "4") || (sAskType == "5")){
dr.setColumnError(dc.fieldName, '组合类要货不允许对要货包装进行修改!');
return false;
}
if (fPackCount < 0)
{
dr.setColumnError(dc.fieldName, '包装数量不允许为负数!');
return false;
}
dr.setColumnValue('PsCount', fPsCount);
dr.setColumnValue('PsTotal', fPsCost);
return true;
};
//SglCount 字段变化执行事件
Biz.prototype.fieldChangedSglCount = function (dataSrc, dr, dc) {
let fPackCount = TypeUtil.toFloat(dr['PackCount']);
let fPackQty = TypeUtil.toFloat(dr['PackQty']);
let fSglCount = TypeUtil.toFloat(dr['SglCount']);
let fPsPrice = TypeUtil.toFloat(dr['PsPrice']);
let fPsCount = fPackCount*fPackQty+fSglCount;
let fPsCost = (fPsCount*fPsPrice).round(2);
let sPluCode = dr ? TypeUtil.toString(dr['PluCode']) : '';
if (sPluCode === '') return false;
let sAskType = TypeUtil.toString(dr['AskType']);
if ((sAskType == "3") || (sAskType == "4") || (sAskType == "5")){
dr.setColumnError(dc.fieldName, '组合类要货不允许对要货包装进行修改!');
return false;
}
if (fSglCount < 0)
{
dr.setColumnError(dc.fieldName, '单件件数不允许为负数!');
return false;
}
dr.setColumnValue('PsCount', fPsCount);
dr.setColumnValue('PsTotal', fPsCost);
return true;
};
//按钮事件控制
Biz.prototype.doOp = function (opCode) {
if (opCode == 'pass') {
this.onpass();
}
if (opCode == 'pladd') {
this.onpladd();
}
};
//控制主界面按钮状态
Biz.prototype.getOpEnabled = function (opCode) {
let isOk = this.super('getOpEnabled', opCode);
if (!isOk) {
return false;
}
let curRow = this.dsMaster.currentRow;
let sYwStatus = curRow ? TypeUtil.toString(curRow['YwStatus']) : '';
if (opCode == 'pladd'){
// 暂时不用 后期再支持
return false;
}
if ((opCode == 'pass') || (opCode == 'edit') || (opCode == 'delete')){
if (!curRow)
return false;
if (this.isEdit())
return false;
if (sYwStatus != "0")
return false;
}
return true;
};
//确认事件处理
Biz.prototype.onpass = function () {
//弹出是否确认提交对话框
if (!Store.confirm("确认要对选中数据进行处理吗?")) {
return false;
}
let curHRow = this.dsMaster.currentRow;
let sBillNo = curHRow ? TypeUtil.toString(curHRow['BillNo']) : '';
let sYwStatus = curHRow ? TypeUtil.toString(curHRow['YwStatus']) : '';
if (sYwStatus == "1") {
Store.messager.err("此主动配送单已经经过确认!");
return false;
}
if ((sBillNo.length == 0) || (sBillNo == "*")){
Store.messager.err("请选择有效单据!");
return false;
}
let Dst_ZdPs_SendBld = rhtComm.getRhtOptionValue('*','DST','Dst_ZdPs_SendBld','0');
if (Dst_ZdPs_SendBld == "0"){
let retchk = Service.getSlideMenuData("actExecute","chkpass", sBillNo,"","","","");
if (retchk.result !== 1) {
Store.messager.err(retchk.message);
return false;
}
if ((retchk.data !== null) && (retchk.data.length !== 0)){
//展示不合法数据
let mainGrid = {
opts: {},
data: {
columns: [
{field: 'PluCode',name: '商品编码'},
{field: 'PluName',name: '商品名称'},
{field: 'YhCount',name: '配送数量'},
{field: 'QrCount',name: '确认数量'},
{field: 'Remark',name: '备注信息'}
],
rows:retchk.data
/*rows: [
{PluCode: '111111'},
{PluCode: '22222'}
],*/
},
actions: {}
};
this.view.register('grid','grid_main',mainGrid);
//确认是否继续
if (!Store.confirm("该主动配送单存在生不成待配送数据的商品,您是否还要继续生成待配送数据?")) {
return false;
}
else{
if (!Store.confirm("您确认要将此主动配送单生成待配送数据吗?")) {
return false;
}
}
}
}
if (Dst_ZdPs_SendBld == "1"){
if (!Store.confirm("主动配送单确认后会将数据发送到便利店,确认继续吗?")) {
return false;
}
}
let ret= Service.getSlideMenuData("actExecute","onpass", sBillNo,"","","","");
if (ret.result !== 1) {
Store.messager.err("确认失败:"+ret.message);
return false;
}
Store.messager.tip(sBillNo+"处理成功!");
this.dsMaster.updateRow();
return true;
};
//批量增加事件处理
Biz.prototype.onpladd = function () {
let self = this;
//定义多选窗口界面
let param = {
uiObjCode: '19112',
serverBiz: 'cn.qdhezheng.rht.app.cou.cou190201.AddSavePlugin',
biz: self,
pk: "OrgCode,DepCode",
showCheckColumn: true,
enablePager: false,
funcCode: self.FuncCode,
ds: self.dsMaster,
callback: function (rows) {
if (rows.length == 0){
Store.messager.tip("请先选择数据再执行本操作!");
return false;
}
/*let addDataList = new Array();
for (let j = 0; j < rows.length; j++) {
addDataList.push({
'OrgCode': rows[j].OrgCode,
'DepCode': rows[j].DepCode
});
}; */
//首先清空明细表
//this.dsDetail.deleteAll();
//循环插入记录
for(let i = 0; i <= rows.length - 1; i++){
let newRow = self.dsDetail.addRow();
newRow.setColumnValue('SerialNo', i+1)
newRow.setColumnText('OrgType',"0");
newRow.setColumnText('ShOrgCode',rows[i].shorgcode);
newRow.setColumnText('PluCode', rows[i].plucode);
newRow.setColumnValue('PackUnit',rows[i].packunit);
newRow.setColumnValue('PackQty',rows[i].packqty);
newRow.setColumnText('PackCount',rows[i].packcount);
newRow.setColumnText('SglCount',rows[i].sglcount);
}
}
};
//new多选窗体 并打开
let myWindow = new PdWindow(param);
myWindow.open();
};
return Biz;
});