跳至主要內容

采购订单:限制单据日期必须相等上次修改日期+只有采购经理可以修改

五六零网校大约 1 分钟

控制语句的目的

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

要点

  1. 如何获取正确的单据到期日期: 原来单据创建的时候,默认一个到期日期,但是如果经过我们采购经理修改后,则默认的到期日期应当以采购经理修改后为准。
  2. 获取最准确的到期日期则需要2个字段做倒序判断 更新日期 倒序(T0.[UpdateDate] DESC) 更新时间 倒序(T0.[UpdateTS] DESC)
  3. 获取当前操作的用户是否等于采购经理,在单据内有个表内不显示的字段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

效果图