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.

347 lines
16 KiB

4 years ago
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<this.dsDetail.rows.length;i++){
let row = this.dsDetail.rows[i];
let fCyCount = TypeUtil.toFloat(row['CyCount']);
if (fCyCount == 0) {
iErrCount = iErrCount + 1;
}
}
if (iErrCount > 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;
});