控制语句的目的:

  1. 控制单据除了采购经理,其他人不能修改到期日期
  2. 如果采购经理更新后,则最新的到期日期以采购经理修改的为准

要点:

  1. 如何获取正确的单据到期日期: 原来单据创建的时候,默认一个到期日期,但是如果经过我们采购经理修改后,则默认的到期日期应当以采购经理修改后为准。
  2. 获取最准确的到期日期则需要2个字段做倒序判断

更新日期 倒序(T0.[UpdateDate] DESC)

更新时间 倒序(T0.[UpdateTS] DESC)

  1. 获取当前操作的用户是否等于采购经理,在单据内有个表内不显示的字段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

发表回复

后才能评论