采购订单:限制单据日期必须相等上次修改日期+只有采购经理可以修改
大约 1 分钟
控制语句的目的
- 控制单据除了采购经理,其他人不能修改到期日期
- 如果采购经理更新后,则最新的到期日期以采购经理修改的为准
要点
- 如何获取正确的单据到期日期: 原来单据创建的时候,默认一个到期日期,但是如果经过我们采购经理修改后,则默认的到期日期应当以采购经理修改后为准。
- 获取最准确的到期日期则需要2个字段做倒序判断 更新日期 倒序(T0.[UpdateDate] DESC) 更新时间 倒序(T0.[UpdateTS] DESC)
- 获取当前操作的用户是否等于采购经理,在单据内有个表内不显示的字段T0.[UserSign2],这个获取的是当前的操作员的用户ID号,则把这个ID设置<>采购经理,则能达成目的。
代码示例
--限制单据日期必须相等上次修改日期+只有采购经理可以修改
IF @object_type = '22'
BEGIN
IF @transaction_type = 'U'
BEGIN
IF EXISTS (
SELECT T0.[DocDueDate]
FROM OPOR T0
INNER JOIN (
SELECT TOP 1 T0.[DocDueDate],T0.DocNum
FROM ADOC T0
WHERE T0.OBJTYPE = '22'
ORDER BY T0.[UpdateDate] DESC,T0.[UpdateTS] DESC
) TA
ON TA.DocNum = t0.DocNum
WHERE
T0.[DocDueDate]<>TA.[DocDueDate]
AND T0.[UserSign2] <> '18'
AND t0.docentry = @list_of_cols_val_tab_del
)
BEGIN
SET @error = 1;
SET @error_message = '非采购经理无法更改到期日期!!';
END;
END;
END
效果图
查询用户ID
- 示例代码
SELECT T0.[USER_CODE], T0.[U_NAME], T0.userID
FROM OUSR T0