alter PROCEDURE [dbo].[STA_SYNTHETIC_DISTRIBUTE_Upd] @P_SYN_DIS_ID VARCHAR(15) = NULL, @P_REG_ID VARCHAR(15) = NULL, @P_SYN_DIS_CODE VARCHAR(50) = NULL, @P_SIGN_USER VARCHAR(15) = NULL, @P_BRANCH_ID VARCHAR(15) = NULL, @P_DEP_ID VARCHAR(15) = NULL, @P_MAKER_ID VARCHAR(15) = NULL, @P_CREATE_DT VARCHAR(20) = NULL, @P_LIST_GOODS_XML XML = NULL AS BEGIN TRANSACTION DECLARE @hDoc INT -------------------- Cập nhật dữ liệu bảng STA_SYNTHETIC_DISTRIBUTE_MASTER (Tổng hợp và phân bổ) ----------------------- UPDATE [dbo].[STA_SYNTHETIC_DISTRIBUTE_MASTER] SET [SIGN_USER] = @P_SIGN_USER ,[RECORD_STATUS] = '1' ,[CHECKER_ID] = NULL ,[APPROVE_DT] = NULL ,[AUTH_STATUS] = 'E' WHERE SYN_DIS_ID = @P_SYN_DIS_ID IF @@Error <> 0 GOTO ABORT EXEC sp_xml_preparedocument @hDoc OUTPUT, @P_LIST_GOODS_XML DECLARE @STA_SYNTHETIC_DISTRIBUTE_DT TABLE( [REQ_REG_ID] [varchar](15) NULL ) INSERT INTO @STA_SYNTHETIC_DISTRIBUTE_DT ( [REQ_REG_ID] ) SELECT [REQ_REG_ID] FROM OPENXML (@hDoc, '/Root/STAReqRegisterDT', 2) WITH ( [REQ_REG_ID] [varchar](15) ) GROUP BY REQ_REG_ID IF @@Error <> 0 GOTO ABORT --DELETE FROM STA_SYNTHETIC_DISTRIBUTE_DT WHERE SYN_DIS_ID = @P_SYN_DIS_ID --------------------- Thêm mới dữ liệu vào bảng STA_SYNTHETIC_DISTRIBUTE_DT (Các id của phiếu yêu cầu đăng ký đã được tổng hợp) INSERT INTO [dbo].[STA_SYNTHETIC_DISTRIBUTE_DT] ([SYN_DIS_ID] ,[REQ_REG_ID]) SELECT @P_SYN_DIS_ID, A.REQ_REG_ID FROM @STA_SYNTHETIC_DISTRIBUTE_DT A INNER JOIN STA_REQUEST_REGISTER_MASTER RRM ON RRM.REQ_REG_ID = A.REQ_REG_ID AND RRM.AUTH_STATUS = 'S' IF @@Error <> 0 GOTO ABORT ------- Cập nhật trạng thái 'ĐVCM đang xử lý' cho phiếu yêu cầu đăng ký đã được tổng hợp đặt hàng ------------- UPDATE STA_REQUEST_REGISTER_MASTER SET AUTH_STATUS = 'Z' FROM STA_REQUEST_REGISTER_MASTER RRM INNER JOIN STA_SYNTHETIC_DISTRIBUTE_DT SDDT ON SDDT.REQ_REG_ID = RRM.REQ_REG_ID AND SDDT.SYN_DIS_ID = @P_SYN_DIS_ID WHERE RRM.AUTH_STATUS = 'S' IF @@Error <> 0 GOTO ABORT EXEC sp_xml_removedocument @hDoc; ---------------- 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 ( @P_SYN_DIS_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Cập nhật bảng tổng hợp và phân bổ thành công' , N'Cập nhật bảng tổng hợp và phân bổ' ) IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @P_SYN_DIS_ID SYN_DIS_ID, N'Cập nhật thành công' ErrorDesc RETURN '0' ABORT: BEGIN EXEC sp_xml_removedocument @hDoc; ROLLBACK TRANSACTION SELECT '-1' as Result, '' SYN_DIS_ID, N'Cập nhật không thành công' ErrorDesc RETURN '-1' END