重要后台代码:
校验物料大类与物料是否一致
1. SELECT TOP 1 @iMaterialCategoryId=A.iMaterialCategoryId ----------查询当前采购合同头表中的物料类型后回写给变量
,@iCurrencyId=A.iCurrencyId,@nExchangeRate=A.nExchangeRate
FROM dbo.puOrderHdr A(NOLOCK)
WHERE A.iIden=@iBillId
2. SET @s=0x ---------定义变量@s
SELECT @s=dbo.fnpbConcatString(A.iRowNo) -------将行号串联后回写给变量@s
FROM dbo.puOrderDtl A(NOLOCK)------------从合同明细表关联物料表
JOIN dbo.mmMaterial B ON B.iIden=A.iMaterialId
WHERE A.iHdrId=@iBillId AND B.iMaterialCategoryId<>@iMaterialCategoryId-----筛选条件为当前单下物料类型不相等的数据。
IF @s<>0x
BEGIN
RAISERROR('行号[%s]物料与物料大类不一致',16,1,@s)---------给出明细物料与头表物料大类不一致提示
RETURN
END
二:
SELECT @nQty=nQty,@nPrice=nPrice,@bFree=bFree-----------------查询当前合同明细表中的数量,单价,以及是否赠品
FROM dbo.puOrderDtl A(NOLOCK)
WHERE A.iHdrId=@iBillId
IF @nQty IS NULL OR @nQty<=0--------------------------------------------------------- --判断合同明细中数量是否为空或这个数量小于
BEGIN
RAISERROR('请输入数量!',16,1)
END
IF @nPrice IS NULL OR @nPrice<=0---------------------------------------- --判断合同明细中含税单价是否为空或这个数量小于
BEGIN
RAISERROR('请输入含税单价!',16,1)
END
DECLARE @dd DATE
SELECT @dd= A.dDeliveryDate
FROM dbo.puOrderDtl A(NOLOCK)
WHERE A.iHdrId=@iBillId
IF DATEDIFF(DAY,@dd,GETDATE())>30
BEGIN
RAISERROR('当前时间超出规定时间!',16,1)--------------------------------------比较输入的与当前时间差如果大于30天则不可以送审
END