ALTER PROCEDURE dbo.REQ_TRANS_GATHER_Upd @P_USER_LOGIN VARCHAR(20), @P_DEP_LOGIN VARCHAR(20), @P_BRANCH_LOGIN VARCHAR(20), @P_LIST XML = NULL AS Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@P_LIST DECLARE TransDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/TransDetail',2) WITH ( REQ_ID VARCHAR (30) ,REQ_TYPE VARCHAR (10) ,REQ_CODE VARCHAR (100) ,BRANCH_ID VARCHAR (30) ,DEP_ID VARCHAR (30) ,CREATE_DT VARCHAR (30) ,MAKER_ID VARCHAR (30) ,AUTH_STATUS VARCHAR(10) ,CHECKER_ID_XL VARCHAR (30) ,TYPE_XL VARCHAR(10) ,AUTH_STATUS_XL VARCHAR(10) -- Nhớ insert người điều phối vs ngày điều phối ) OPEN TransDetail DECLARE @ERRORSYS NVARCHAR(2000) = NULL ---- Khác người tạo không cho cập nhật --DECLARE @Maker_id NVARCHAR(20) --set @Maker_id = (SELECT bd.MAKER_ID FROM REQ_OUT_DOCUMENT_GATHER bd -- WHERE bd.REQ_OUT_DOC_GATHER_ID = @p_REQ_OUT_DOC_GATHER_ID) -- IF (@MAKER_ID <> @p_USER_LOGIN) -- SET @ERRORSYS = N'Cập nhật thất bại. Bạn không có quyền cập nhật!!!' --IF @ERRORSYS <> '' --BEGIN -- SELECT '-1' Result, '' REQ_OUT_DOC_GATHER_ID, @ERRORSYS ErrorDesc -- RETURN '-1' --END --; BEGIN TRANSACTION ---------- ------------ Declare @REQ_ID VARCHAR (30) ,@REQ_TYPE VARCHAR (10) ,@REQ_CODE VARCHAR (100) ,@BRANCH_ID VARCHAR (30) ,@DEP_ID VARCHAR (30) ,@CREATE_DT VARCHAR (30) ,@MAKER_ID VARCHAR (30) ,@AUTH_STATUS VARCHAR(10) ,@CHECKER_ID_XL VARCHAR (30) ,@TYPE_XL VARCHAR(10) ,@AUTH_STATUS_XL VARCHAR(10); DECLARE @l_MAKER_ID VARCHAR(20) = NULL; DECLARE @BRANCH_MANAGER_ID VARCHAR(20) = NULL; FETCH NEXT FROM TransDetail INTO @REQ_ID ,@REQ_TYPE ,@REQ_CODE ,@BRANCH_ID ,@DEP_ID ,@CREATE_DT ,@MAKER_ID ,@AUTH_STATUS ,@CHECKER_ID_XL ,@TYPE_XL ,@AUTH_STATUS_XL WHILE @@FETCH_STATUS = 0 BEGIN IF (EXISTS(SELECT 1 FROM REQ_PROCESS_GATHER rpg WHERE (rpg.REQ_ID = @REQ_ID OR @REQ_CODE = rpg.REQ_CODE) AND rpg.TYPE_XL = 'XL')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Điều phối thất bại, Mã phiếu: '+ @REQ_CODE +N' đã được điều phối xử lý trước đó!' ErrorDesc RETURN '-1' END --- 28/11/2024 longvnt1 cmt Khi điều phối được điều phối cho người tạo. Fix theo yêu cầu BVB -- IF (@MAKER_ID = @CHECKER_ID_XL) -- BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, N'Điều phối thất bại, Người xử lý mã phiếu: '+ @REQ_CODE +N' được điều phối bị trùng với người tạo!' ErrorDesc -- RETURN '-1' -- END IF (@TYPE_XL= 'KS' AND @CHECKER_ID_XL <> @P_USER_LOGIN) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Điều phối thất bại, Bạn không phải KSV của mã phiếu: '+ @REQ_CODE +N' !' ErrorDesc RETURN '-1' END -- SET @BRANCH_MANAGER_ID =( -- SELECT ridg.BRANCH_MANAGER_ID FROM REQ_IN_DOCUMENT_GATHER ridg WHERE ridg.REQ_IN_DOC_GATHER_CODE = @REQ_CODE -- UNION ALL -- SELECT BRANCH_MANAGER_ID FROM REQ_BOR_DOCUMENT_GATHER rbdg WHERE rbdg.REQ_BOR_DOC_GATHER_CODE = @REQ_CODE -- UNION ALL -- SELECT BRANCH_MANAGER_ID FROM REQ_OUT_DOCUMENT_GATHER rodg WHERE rodg.REQ_OUT_DOC_GATHER_CODE = @REQ_CODE -- UNION ALL -- SELECT BRANCH_MANAGER_ID FROM REQ_COL_DOCUMENT_GATHER rcdg WHERE rcdg.REQ_COL_DOC_GATHER_CODE = @REQ_CODE -- UNION ALL -- SELECT BRANCH_MANAGER_ID FROM REQ_DES_DOCUMENT_GATHER rddg WHERE rddg.REQ_DES_DOC_GATHER_CODE = @REQ_CODE -- ) -- IF (@BRANCH_MANAGER_ID <> @P_BRANCH_LOGIN) -- BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, N'Điều phối thất bại, Người điều phối không phải GDDV của người xử lý' ErrorDesc -- RETURN '-1' -- END -- Sau khi validate thành công -- Insert vào bảng xử lý -- Cập nhật trạng thái phiếu IF (@TYPE_XL = 'XL') BEGIN IF (@REQ_TYPE = '1') BEGIN INSERT INTO REQ_PROCESS_GATHER (REQ_ID,REQ_CODE,MAKER_ID,CREATE_DT,TYPE_XL,CHECKER_ID_XL,APPROVE_DT_XL) VALUES (@REQ_ID,@REQ_CODE,@P_USER_LOGIN,@CREATE_DT,@TYPE_XL, @CHECKER_ID_XL,GETDATE()) UPDATE REQ_IN_DOCUMENT_GATHER SET AUTH_STATUS_XL ='1', CHECKER_ID_XL = @CHECKER_ID_XL, APPROVE_DT_XL = GETDATE(), AUTH_STATUS = 'S' WHERE REQ_IN_DOC_GATHER_CODE = @REQ_CODE END IF (@REQ_TYPE = '2') BEGIN INSERT INTO REQ_PROCESS_GATHER (REQ_ID,REQ_CODE,MAKER_ID,CREATE_DT,TYPE_XL,CHECKER_ID_XL,APPROVE_DT_XL) VALUES (@REQ_ID,@REQ_CODE,@P_USER_LOGIN,@CREATE_DT,@TYPE_XL, @CHECKER_ID_XL,GETDATE()) UPDATE REQ_BOR_DOCUMENT_GATHER SET AUTH_STATUS_XL ='1', CHECKER_ID_XL = @CHECKER_ID_XL, APPROVE_DT_XL = GETDATE(), AUTH_STATUS = 'S' WHERE REQ_BOR_DOC_GATHER_CODE = @REQ_CODE END IF (@REQ_TYPE = '3') BEGIN INSERT INTO REQ_PROCESS_GATHER (REQ_ID,REQ_CODE,MAKER_ID,CREATE_DT,TYPE_XL,CHECKER_ID_XL,APPROVE_DT_XL) VALUES (@REQ_ID,@REQ_CODE,@P_USER_LOGIN,@CREATE_DT,@TYPE_XL, @CHECKER_ID_XL,GETDATE()) UPDATE REQ_OUT_DOCUMENT_GATHER SET AUTH_STATUS_XL ='1', CHECKER_ID_XL = @CHECKER_ID_XL, APPROVE_DT_XL = GETDATE(), AUTH_STATUS = 'S' WHERE REQ_OUT_DOC_GATHER_CODE = @REQ_CODE END IF (@REQ_TYPE = '4') BEGIN INSERT INTO REQ_PROCESS_GATHER (REQ_ID,REQ_CODE,MAKER_ID,CREATE_DT,TYPE_XL,CHECKER_ID_XL,APPROVE_DT_XL) VALUES (@REQ_ID,@REQ_CODE,@P_USER_LOGIN,@CREATE_DT,@TYPE_XL, @CHECKER_ID_XL,GETDATE()) UPDATE REQ_COL_DOCUMENT_GATHER SET AUTH_STATUS_XL ='1', CHECKER_ID_XL = @CHECKER_ID_XL, APPROVE_DT_XL = GETDATE(), AUTH_STATUS = 'S' WHERE REQ_COL_DOC_GATHER_CODE = @REQ_CODE END IF (@REQ_TYPE = '5') -- Hủy thùng BEGIN INSERT INTO REQ_PROCESS_GATHER (REQ_ID,REQ_CODE,MAKER_ID,CREATE_DT,TYPE_XL,CHECKER_ID_XL,APPROVE_DT_XL) VALUES (@REQ_ID,@REQ_CODE,@P_USER_LOGIN,@CREATE_DT,@TYPE_XL, @CHECKER_ID_XL,GETDATE()) UPDATE REQ_DES_DOCUMENT_GATHER SET AUTH_STATUS_XL ='1', CHECKER_ID_XL = @CHECKER_ID_XL, APPROVE_DT_XL = GETDATE(), AUTH_STATUS = 'S' WHERE REQ_DES_DOC_GATHER_CODE = @REQ_CODE END ---------------- Thêm mới lịch sử xử lý -------------------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @REQ_ID, 'TRANS', @p_USER_LOGIN, GETDATE(), N'Cập nhật điều phối xử lý PYC thành công', N'Cập nhật điều phối' ) END IF (@TYPE_XL = 'KS') BEGIN IF (@REQ_TYPE = '1') BEGIN INSERT INTO REQ_PROCESS_GATHER (REQ_ID,REQ_CODE,MAKER_ID,CREATE_DT,TYPE_XL,CHECKER_ID_XL,APPROVE_DT_XL) VALUES (@REQ_ID,@REQ_CODE,@P_USER_LOGIN,@CREATE_DT,@TYPE_XL, @CHECKER_ID_XL,GETDATE()) UPDATE REQ_IN_DOCUMENT_GATHER SET AUTH_STATUS_XL ='1', CHECKER_ID_XL = @CHECKER_ID_XL, APPROVE_DT_XL = GETDATE() WHERE REQ_IN_DOC_GATHER_CODE = @REQ_CODE END IF (@REQ_TYPE = '2') BEGIN INSERT INTO REQ_PROCESS_GATHER (REQ_ID,REQ_CODE,MAKER_ID,CREATE_DT,TYPE_XL,CHECKER_ID_XL,APPROVE_DT_XL) VALUES (@REQ_ID,@REQ_CODE,@P_USER_LOGIN,@CREATE_DT,@TYPE_XL, @CHECKER_ID_XL,GETDATE()) UPDATE REQ_BOR_DOCUMENT_GATHER SET AUTH_STATUS_XL ='1', CHECKER_ID_XL = @CHECKER_ID_XL, APPROVE_DT_XL = GETDATE() WHERE REQ_BOR_DOC_GATHER_CODE = @REQ_CODE END IF (@REQ_TYPE = '3') BEGIN INSERT INTO REQ_PROCESS_GATHER (REQ_ID,REQ_CODE,MAKER_ID,CREATE_DT,TYPE_XL,CHECKER_ID_XL,APPROVE_DT_XL) VALUES (@REQ_ID,@REQ_CODE,@P_USER_LOGIN,@CREATE_DT,@TYPE_XL, @CHECKER_ID_XL,GETDATE()) UPDATE REQ_OUT_DOCUMENT_GATHER SET AUTH_STATUS_XL ='1', CHECKER_ID_XL = @CHECKER_ID_XL, APPROVE_DT_XL = GETDATE() WHERE REQ_OUT_DOC_GATHER_CODE = @REQ_CODE END IF (@REQ_TYPE = '4') BEGIN INSERT INTO REQ_PROCESS_GATHER (REQ_ID,REQ_CODE,MAKER_ID,CREATE_DT,TYPE_XL,CHECKER_ID_XL,APPROVE_DT_XL) VALUES (@REQ_ID,@REQ_CODE,@P_USER_LOGIN,@CREATE_DT,@TYPE_XL, @CHECKER_ID_XL,GETDATE()) UPDATE REQ_COL_DOCUMENT_GATHER SET AUTH_STATUS_XL ='1', CHECKER_ID_XL = @CHECKER_ID_XL, APPROVE_DT_XL = GETDATE() WHERE REQ_COL_DOC_GATHER_CODE = @REQ_CODE END IF (@REQ_TYPE = '5') -- Hủy thùng BEGIN INSERT INTO REQ_PROCESS_GATHER (REQ_ID,REQ_CODE,MAKER_ID,CREATE_DT,TYPE_XL,CHECKER_ID_XL,APPROVE_DT_XL) VALUES (@REQ_ID,@REQ_CODE,@P_USER_LOGIN,@CREATE_DT,@TYPE_XL, @CHECKER_ID_XL,GETDATE()) UPDATE REQ_DES_DOCUMENT_GATHER SET AUTH_STATUS_XL ='1', CHECKER_ID_XL = @CHECKER_ID_XL, APPROVE_DT_XL = GETDATE() WHERE REQ_DES_DOC_GATHER_CODE = @REQ_CODE END ---------------- Thêm mới lịch sử xử lý -------------------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @REQ_ID, 'TRANS', @p_USER_LOGIN, GETDATE(), N'Cập nhật điều phối kiểm soát PYC thành công', N'Cập nhật điều phối' ) END IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM TransDetail INTO @REQ_ID ,@REQ_TYPE ,@REQ_CODE ,@BRANCH_ID ,@DEP_ID ,@CREATE_DT ,@MAKER_ID ,@AUTH_STATUS ,@CHECKER_ID_XL ,@TYPE_XL ,@AUTH_STATUS_XL END CLOSE TransDetail DEALLOCATE TransDetail IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, N'Điều phối thành công' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Điều phối thất bại' ErrorDesc RETURN '-1' End --28112024_secretkey