ALTER PROCEDURE dbo.ASS_TRANSFER_MULTI_MASTER_Ins @p_BRANCH_ID varchar(15) = NULL, @p_TRANSFER_DT VARCHAR(20) = NULL, @p_USER_TRANSFER nvarchar(200) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(100) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_CHECKER_ID varchar(100) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS_KT varchar(15) = NULL, @p_CREATE_DT_KT varchar(100) = NULL, @p_APPROVE_DT_KT VARCHAR(20) = NULL, @p_MAKER_ID_KT varchar(100) = NULL, @p_CHECKER_ID_KT varchar(100) = NULL, @p_REPORT_STATUS varchar(15) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_TRANSFER_CONTENT NVARCHAR(MAX) = NULL, @p_REQ_PARENT_ID VARCHAR(15) = NULL, @p_REQ_PARENT_CODE VARCHAR(15) = NULL, @p_XmlData XML = NULL AS /* */ DECLARE @ASSET_ID varchar(15), @ASSET_CODE varchar(100), @BRANCH_ID varchar(15), @KHOI_ID varchar(15), @CENTER_ID varchar(15), @DEPT_ID varchar(15), @EMP_ID varchar(15), @LOCATION varchar(500), @DESCRIPTION nvarchar(1000), @BRANCH_ID_OLD varchar(15), @KHOI_ID_OLD varchar(15), @CENTER_ID_OLD varchar(15), @DEPT_ID_OLD varchar(15), @EMP_ID_OLD varchar(15), @REMAIN_VALUE DECIMAL(18,0), @BUY_PRICE DECIMAL(18,0), @DEPT_CREATE VARCHAR(15) = (SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME = @p_MAKER_ID) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XmlData DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdoc,'/Root/XmlData',2) WITH ( ASSET_ID varchar(15), ASSET_CODE varchar(100), BRANCH_ID varchar(15), KHOI_ID VARCHAR(15), CENTER_ID VARCHAR(15), DEP_ID varchar(15), EMP_ID varchar(15), BRANCH_ID_OLD varchar(15), KHOI_ID_OLD varchar(15), CENTER_ID_OLD varchar(15), DEPT_ID_OLD varchar(15), EMP_ID_OLD varchar(15), LOCATION varchar(500), [DESCRIPTION] nvarchar(1000), REMAIN_VALUE DECIMAL(18,0), BUY_PRICE DECIMAL(18,0) ) OPEN XmlData BEGIN TRANSACTION DECLARE @l_TRANS_MULTI_MASTER_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'ASS_TRANSFER_MULTI_MASTER', @l_TRANS_MULTI_MASTER_ID out IF @l_TRANS_MULTI_MASTER_ID='' OR @l_TRANS_MULTI_MASTER_ID IS NULL GOTO ABORT print 'error' INSERT INTO ASS_TRANSFER_MULTI_MASTER([TRANS_MULTI_MASTER_ID],[BRANCH_ID],[TRANSFER_DT],[USER_TRANSFER],[NOTES],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[REPORT_STATUS],[DEPT_CREATE], TRANSFER_CONTENT, REQ_ID, REQ_CODE, STATUS) VALUES(@l_TRANS_MULTI_MASTER_ID ,@p_BRANCH_ID ,CONVERT(DATETIME, @p_TRANSFER_DT, 103) ,@p_USER_TRANSFER ,@p_NOTES ,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_REPORT_STATUS,@DEPT_CREATE, @p_TRANSFER_CONTENT, @p_REQ_PARENT_ID, @p_REQ_PARENT_CODE, 'ADDNEW') IF @@Error <> 0 GOTO ABORT DECLARE @COUNT INT; SET @COUNT = 1; --Insert XmlData FETCH NEXT FROM XmlData INTO @ASSET_ID,@ASSET_CODE,@BRANCH_ID, @KHOI_ID, @CENTER_ID,@DEPT_ID,@EMP_ID,@BRANCH_ID_OLD,@KHOI_ID_OLD,@CENTER_ID_OLD,@DEPT_ID_OLD, @EMP_ID_OLD,@LOCATION,@DESCRIPTION, @REMAIN_VALUE, @BUY_PRICE WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @BRANCH_TYPE VARCHAR(15) = (SELECT CB.BRANCH_TYPE FROM CM_BRANCH CB WHERE CB.BRANCH_ID = @BRANCH_ID) DECLARE @ERRORSYS NVARCHAR(200) = ''--,@ASSET_CODE nVARCHAR(20) IF (@BRANCH_ID IS NULL OR @BRANCH_ID = '') BEGIN SET @ERRORSYS = N'Dòng số '+ CAST(@COUNT AS NVARCHAR) + N': Đơn vị nhận bắt buộc chọn.' CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, @ERRORSYS ErrorDesc RETURN '-1' END IF (@BRANCH_TYPE = 'HS') IF ((@DEPT_ID IS NULL OR @DEPT_ID = '') AND (@KHOI_ID IS NULL OR @KHOI_ID = '') AND (@CENTER_ID IS NULL OR @CENTER_ID = '')) BEGIN SET @ERRORSYS = N'Dòng số '+ CAST(@COUNT AS NVARCHAR) + N': phải chọn Phòng ban nhận hoặc Khối nhận hoặc Trung tâm nhận.' CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, @ERRORSYS ErrorDesc RETURN '-1' END DECLARE @MESSAGE_VALIDATION NVARCHAR(MAX) = '' DECLARE @check TABLE(TRANSFER_ID VARCHAR(20), ASSET_ID VARCHAR(20)) INSERT INTO @check SELECT TRANS_MULTI_MASTER_ID, ASSET_ID FROM ASS_TRANSFER_MULTI_DT WHERE [ASSET_ID] = @ASSET_ID AND AUTH_STATUS<>'A' IF (EXISTS(SELECT TOP 1 * FROM @check)) BEGIN SET @MESSAGE_VALIDATION = (SELECT REPLACE((SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT 0)) = 1 THEN '' ELSE '|' END + N'Tài sản mã: ' + C.ASSET_CODE + N' đang được điều chuyển ở phiếu: ' + C.TRANS_MULTI_MASTER_ID FROM (SELECT ISNULL(C.ASSET_CODE,C.ASS_CODE_TMP) AS ASSET_CODE,A.TRANS_MULTI_MASTER_ID FROM ASS_TRANSFER_MULTI_DT A LEFT JOIN ASS_TRANSFER_MULTI_MASTER B ON A.TRANS_MULTI_MASTER_ID = B.TRANS_MULTI_MASTER_ID LEFT JOIN ASS_MASTER C ON A.ASSET_ID = C.ASSET_ID WHERE A.ASSET_ID IN (SELECT ASSET_ID FROM @check) AND B.AUTH_STATUS <> 'A') C FOR XML PATH ('')) , '|', '
')) CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, @MESSAGE_VALIDATION ErrorDesc RETURN '-1' END DECLARE @l_TRANSFER_MULTI_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'ASS_TRANSFER_MULTI_DT', @l_TRANSFER_MULTI_ID out IF @l_TRANSFER_MULTI_ID='' OR @l_TRANSFER_MULTI_ID IS NULL GOTO ABORT --LAY THONG TIN DON VI CU TRUOC DIEU CHUYEN SELECT @BRANCH_ID_OLD = BRANCH_ID, @DEPT_ID_OLD = DEPT_ID, @EMP_ID_OLD = EMP_ID FROM ASS_MASTER WHERE ASSET_ID = @ASSET_ID --thieuvq 07/09/2016 -- ngay 231120 Thieuvq bo sung neu la HOI SO thi khong kiem tra trung theo yeu cau Anh Tan - dieu chuyen ts tu kho HCQT cho HCQT su dung IF @BRANCH_ID_OLD <> 'DV0001' AND @BRANCH_ID = @BRANCH_ID_OLD AND ISNULL(@DEPT_ID,'') = ISNULL(@DEPT_ID_OLD,'') AND ISNULL(@EMP_ID,'') = ISNULL(@EMP_ID_OLD,'') BEGIN SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) SELECT '-1' Result, '' TRANSFER_ID, N'TS: '+@ASSET_CODE+ N' Đơn vị nhận hoặc người nhận phải khác với đơn vị/nhân viên đang sử dụng hiện tại.' ErrorDesc CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION RETURN '-1' END -- luctv 03/08/2021 người nhận phải cùng đơn vị nhận IF (SELECT BRANCH_ID FROM CM_DEPARTMENT WHERE DEP_ID = @DEPT_ID) <> @BRANCH_ID BEGIN SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) SELECT '-1' Result, '' TRANSFER_ID, N'TS: '+ @ASSET_CODE + N' Phòng bản nhận phải thuộc về đơn vị nhận.' ErrorDesc CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION RETURN '-1' END -- IF (SELECT DEP_ID FROM CM_EMPLOYEE WHERE EMP_ID = @EMP_ID) <> @DEPT_ID -- BEGIN -- SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) -- SELECT '-1' Result, '' TRANSFER_ID, N'TS: '+ @ASSET_CODE + N' Người nhận phải thuộc về phòng ban nhận.' ErrorDesc -- CLOSE XmlData -- DEALLOCATE XmlData -- ROLLBACK TRANSACTION -- RETURN '-1' -- END --print 'error1' INSERT INTO ASS_TRANSFER_MULTI_DT( [TRANSFER_MULTI_ID], [TRANS_MULTI_MASTER_ID], [ASSET_ID], [BRANCH_ID], [KHOI_ID], [CENTER_ID], [DEPT_ID], [EMP_ID], [BRANCH_ID_OLD], [KHOI_ID_OLD], [CENTER_ID_OLD], [DEPT_ID_OLD], [EMP_ID_OLD], [USE_START_DT], [DESCRIPTION], [LOCATION], [RECORD_STATUS], [AUTH_STATUS], [MAKER_ID], [CREATE_DT], [CHECKER_ID], [APPROVE_DT], [BRANCH_CREATE], [AUTH_STATUS_KT], [CREATE_DT_KT], [APPROVE_DT_KT], [MAKER_ID_KT], [CHECKER_ID_KT], [REPORT_STATUS], REMAIN_VALUE, BUY_PRICE ) VALUES( @l_TRANSFER_MULTI_ID, @l_TRANS_MULTI_MASTER_ID, @ASSET_ID, @BRANCH_ID, @KHOI_ID, @CENTER_ID, @DEPT_ID, @EMP_ID, @BRANCH_ID_OLD, @KHOI_ID_OLD, @CENTER_ID_OLD, @DEPT_ID_OLD, @EMP_ID_OLD, CONVERT(DATETIME, @p_TRANSFER_DT, 103), @DESCRIPTION, @LOCATION, @p_RECORD_STATUS, @p_AUTH_STATUS, @p_MAKER_ID, CONVERT(DATETIME, @p_CREATE_DT, 103), @p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), @p_BRANCH_CREATE ,@p_AUTH_STATUS_KT, CONVERT(DATETIME, @p_CREATE_DT_KT, 103), CONVERT(DATETIME, @p_APPROVE_DT_KT, 103), @p_MAKER_ID_KT, @p_CHECKER_ID_KT, 'N', @REMAIN_VALUE, @BUY_PRICE ) IF @@Error <> 0 GOTO ABORT SET @COUNT = @COUNT + 1; FETCH NEXT FROM XmlData INTO @ASSET_ID,@ASSET_CODE,@BRANCH_ID, @KHOI_ID, @CENTER_ID,@DEPT_ID,@EMP_ID,@BRANCH_ID_OLD,@KHOI_ID_OLD,@CENTER_ID_OLD,@DEPT_ID_OLD, @EMP_ID_OLD,@LOCATION,@DESCRIPTION, @REMAIN_VALUE, @BUY_PRICE END CLOSE XmlData DEALLOCATE XmlData -- GIANT 21/09/2021 print 'error2' -- INSERT INTO dbo.PL_PROCESS -- ( -- REQ_ID, -- PROCESS_ID, -- CHECKER_ID, -- APPROVE_DT, -- PROCESS_DESC,NOTES -- ) -- VALUES -- ( @l_TRANS_MULTI_MASTER_ID, -- REQ_ID - varchar(15) -- 'INSERT', -- PROCESS_ID - varchar(10) -- @p_MAKER_ID, -- CHECKER_ID - varchar(15) -- GETDATE(), -- APPROVE_DT - datetime -- N'Thêm mới phiều điều chuyển thành công' , -- N'Đơn vị tạo phiếu' -- PROCESS_DESC - nvarchar(1000) -- ) INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID) VALUES(@l_TRANS_MULTI_MASTER_ID,'ADDNEW','C','QLTS',@p_BRANCH_ID,'',@DEPT_CREATE) INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID) VALUES(@l_TRANS_MULTI_MASTER_ID,'QLTS_D','U','GDDV',@p_BRANCH_ID,'ADDNEW',@DEPT_CREATE) COMMIT TRANSACTION SELECT '0' as Result, @l_TRANS_MULTI_MASTER_ID TRANS_MULTI_MASTER_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, '' ErrorDesc RETURN '-1' End