拦截截图:
解决方案:
1.创建SQL存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[KK_CGRK_SAVE_CHECK]
@wmsdjbh VARCHAR(20)
,@Shl INT
,@Count INT
,@outmsg VARCHAR(200) OUTPUT
AS
DECLARE @wmskp_count INT --WMS返回行数
,@wmskp_shl INT --WMS返回数量
--WMS返回情况
SELECT @wmskp_count = COUNT(*) FROM INT_WMS_CGRK_BILL WHERE DJBH =@wmsdjbh
SELECT @wmskp_shl = SUM(ISNULL(sl,0)+ISNULL(QXSHL,0)) FROM INT_WMS_CGRK_BILL WHERE DJBH =@wmsdjbh
SET @outmsg =''
--比较
--ERP开票行数与WMS返回行数与提单行数不符
IF (ISNULL(@Count,0) = 0
OR ISNULL(@wmskp_count,0) = 0
)
OR (ISNULL(@Count,0) != ISNULL(@wmskp_count,0)
)
BEGIN
SELECT @outmsg = 'WMS上架单号:'+LTRIM(RTRIM(REPLACE(@wmsdjbh,'SKKM','')))+CHAR(10)+CHAR(13)
+'WMS返回行数:'+LTRIM(RTRIM(CONVERT(CHAR(10),ISNULL(@wmskp_count,0))))+CHAR(10)+CHAR(13)
+'入库提单 行数:'+LTRIM(RTRIM(CONVERT(CHAR(10),ISNULL(@Count,0))))+CHAR(10)+CHAR(13)
+'操作提示:行数不匹配,请检查!'
END
ELSE
BEGIN
--ERP开票数量总和与WMS返回数量总和与提单数量总和不符
IF (ISNULL(@Shl,0) = 0
OR ISNULL(@wmskp_shl,0) = 0
)
OR (ISNULL(@Shl,0) != ISNULL(@wmskp_shl,0)
)
BEGIN
SELECT @outmsg = 'WMS上架单号:'+LTRIM(RTRIM(REPLACE(@wmsdjbh,'SKKM','')))+CHAR(10)+CHAR(13)
+'WMS返回数量:'+LTRIM(RTRIM(CONVERT(CHAR(10),ISNULL(@wmskp_shl,0))))+CHAR(10)+CHAR(13)
+'入库提单 数量:'+LTRIM(RTRIM(CONVERT(CHAR(10),ISNULL(@Shl,0))))+CHAR(10)+CHAR(13)
+'操作提示:数量不匹配,请检查!'
END
ELSE
BEGIN
SELECT @outmsg ='验证通过'
END
END
2.创建SQL宏:
3.修改存盘拦截函数:
function uf_saveCheck() {
//原始的注释掉
//return sys_saveCheck();
var ret = sys_saveCheck();
if ( ret ){
//增加存盘拦截
//判断wms返回行数,与入库提单行数 是否一致
//判断wms返回数量总和,与入库提单数量总和 是否一致
//求提单数量+取消数量之和
var tmpshl = 0;
for(var i =0; i < ds_ddmx.recordCount; i++){
tmpshl += ds_ddmx.getValueAt(i,"Num") + ds_ddmx.getValueAt(i,"CancelNum");
}
var params ={};
params.wmsdjbh = ds_ddmx.field("KpBillCode").value;
params.Shl = tmpshl;
params.count = ds_ddmx.recordCount;
var outmsg = DBUtil.uniqueValue('SQL_KK_CGRK_SAVE_CHECK',params);
if (outmsg != "验证通过"){
alert(outmsg);
return false;
}
return true;
}else{
return false;
}
}