ALTER PROCEDURE [dbo].[TR_REQ_PAY_TRANSFER_Upd] @p_TRANSFER_MAKER nvarchar(50) = NULL, @p_TRANSFER_DT varchar(25) = NULL, @p_TRASFER_USER_RECIVE varchar(15) = NULL, @p_TRANSFER_TYPE varchar(15) = NULL, @p_XMP_TEMP XML = NULL AS --Validation is here /* */ DECLARE @LIST_REQ_PAY_ID VARCHAR(500) ='', @PROCESS_ID VARCHAR(15) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XMP_TEMP DECLARE TransferData CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/XmlData',2) WITH ( REQ_PAY_ID varchar(15) , TRANSFER_MAKER nvarchar(15) , TRASFER_USER_RECIVE varchar(15), TRANSFER_ACTION VARCHAR(15) ) OPEN TransferData BEGIN TRANSACTION DECLARE @ROLE_USER VARCHAR(20) SET @ROLE_USER =(SELECT RoleName FROM TL_USER WHERE TLNANME =@p_TRANSFER_MAKER) DECLARE @REQ_PAY_ID VARCHAR(15), @TRANSFER_MAKER VARCHAR(15),@TRASFER_USER_RECIVE VARCHAR(15),@TRANSFER_ACTION VARCHAR(15) DECLARE @INDEX INT =0 FETCH NEXT FROM TransferData INTO @REQ_PAY_ID, @TRANSFER_MAKER, @TRASFER_USER_RECIVE,@TRANSFER_ACTION WHILE @@FETCH_STATUS = 0 BEGIN SET @PROCESS_ID ='3' SET @INDEX = @INDEX+1 -- BO SUNG NEU TO PDN TẠM ỨNG NẾU ĐÃ ĐƯỢC TRƯỞNG VĂN PHÒNG ĐIỀU PHỐI IF(EXISTS(SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@REQ_PAY_ID AND ISNULL(AUTH_STATUS, '') <> 'A')) BEGIN IF EXISTS (SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='TKTGD' AND REQ_ID =@REQ_PAY_ID AND STATUS ='C') BEGIN SET @PROCESS_ID ='1' UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_TGD_XL_TLNAME =@TRASFER_USER_RECIVE WHERE REQ_PAY_ID =@REQ_PAY_ID END IF EXISTS (SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='TKHDQT' AND REQ_ID =@REQ_PAY_ID AND STATUS ='C') BEGIN SET @PROCESS_ID ='2' UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_HDQT_XL_TLNAME =@TRASFER_USER_RECIVE WHERE REQ_PAY_ID =@REQ_PAY_ID END ---- IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@REQ_PAY_ID AND STATUS ='P' AND ROLE_USER IN ('TKTGD') AND @ROLE_USER ='TKTGD')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được trưởng văn phòng phê duyệt. Vui lòng không thực hiện điều phối' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@REQ_PAY_ID AND STATUS ='P' AND ROLE_USER IN ('TKHDQT') AND @ROLE_USER ='TKHDQT')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được trưởng văn phòng phê duyệt. Vui lòng không thực hiện điều phối' ErrorDesc RETURN '-1' END END IF(EXISTS(SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@REQ_PAY_ID AND AUTH_STATUS = 'A')) BEGIN IF (EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@p_TRANSFER_MAKER AND RoleName IN ('TKTGD','TKHDQT'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được các cấp phê duyệt hạn mức hoàn tất. Phiếu đang chờ bộ phận kế toán xử lý, vui lòng không thực hiện điều phối' ErrorDesc RETURN '-1' END END -- doanptt 12/04/2022 IF(@TRANSFER_MAKER = @TRASFER_USER_RECIVE) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Người điều phối không được điều phối cho chính mình. Vui lòng không thực hiện điều phối' ErrorDesc RETURN '-1' END ------ DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID -- DOANPTT 291222: THEM LOG KPI DELETE FROM TR_REQ_KPI WHERE REQ_ID = @REQ_PAY_ID AND ISNULL(MAKER_ID_KT, '') = '' -- KIEM TRA NEU CHUA CHON NHAN VIEN XU LY SE BAO LOI IF(@TRASFER_USER_RECIVE ='' OR @TRASFER_USER_RECIVE IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Nhân viên được giao xử lý không được phép để trống' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='S')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đang được đề xuất từ chối và KSV đang xem xét' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='S')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đang được đề xuất từ chối và KSV đang xem xét' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đã được kế toán duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TL_USER_V2 WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TL_USER_V2 WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc RETURN '-1' END --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>'')) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán cập nhật thông tin' ErrorDesc -- RETURN '-1' --END --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>'')) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán cập nhật thông tin' ErrorDesc -- RETURN '-1' --END --IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL)) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đã được kế toán cập nhật thông tin' ErrorDesc -- RETURN '-1' --END IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID AND TLNAME =@TRANSFER_MAKER)) BEGIN INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT) VALUES (@REQ_PAY_ID,@PROCESS_ID,@TRANSFER_MAKER,'KS',CONVERT(VARCHAR(5),'1'),'P','1', GETDATE()) END -- KHAI BAO MAX LEVEL DECLARE @MAX_LEVEL VARCHAR(5), @NEXT_LEVEL INT, @PREV_LEVEL INT SET @MAX_LEVEL= (SELECT MAX(LEVEL_JOB) FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_PAY_ID) SET @NEXT_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) +1 SET @PREV_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) -1 IF(@TRANSFER_ACTION ='XL') BEGIN --UPDATE TR_REQ_ADVANCE_PAYMENT SET --AUTH_STATUS_KT ='U', --TRANSFER_DT = CONVERT(DATE,GETDATE(),103), --TRANSFER_MAKER = @TRANSFER_MAKER, --TRASFER_USER_RECIVE = @TRASFER_USER_RECIVE --WHERE REQ_PAY_ID =@REQ_PAY_ID IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID AND TYPE_JOB =@TRANSFER_ACTION)) BEGIN INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT) VALUES (@REQ_PAY_ID,@PROCESS_ID,@TRASFER_USER_RECIVE,'XL',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1',GETDATE()) INSERT INTO PL_PROCESS VALUES (@REQ_PAY_ID,'TRANSF',@p_TRANSFER_MAKER, GETDATE(),N'Điều phối về nhân viên ' +@TRASFER_USER_RECIVE,N'Điều phối thanh toán/ tạm ứng') -- DOANPTT 291222: THEM LOG KPI INSERT INTO TR_REQ_KPI(KPI_TYPE, REQ_TYPE, REQ_STATUS, REQ_ID, REQ_REASON, CORE_NOTE, AUTH_STATUS_KT, TRANSFER_DT, MAKER_ID_KT, CREATE_DT_KT, CHECKER_ID_KT, APPROVE_DT_KT) VALUES ('PAY', 'TR_REQ_PAYMENT', NULL, @REQ_PAY_ID, NULL, NULL, 'U', GETDATE(), @TRASFER_USER_RECIVE, NULL, @p_TRANSFER_MAKER, NULL ) END ELSE BEGIN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB=@TRANSFER_ACTION,TLNAME = @TRASFER_USER_RECIVE WHERE REQ_ID =@REQ_PAY_ID AND TYPE_JOB =@TRANSFER_ACTION END -- UPDATE BUOC TRUOC DO VE P --UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND LEVEL_JOB =@MAX_LEVEL END ELSE BEGIN IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID AND TYPE_JOB =@TRANSFER_ACTION)) BEGIN INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT) VALUES (@REQ_PAY_ID,@PROCESS_ID,@TRASFER_USER_RECIVE,'KS',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1',GETDATE()) END ELSE BEGIN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND TLNAME =@TRASFER_USER_RECIVE END -- UPDATE BUOC TRUOC DO VE P --UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND LEVEL_JOB =@MAX_LEVEL END --LUCTV - 06042021 BO SUNG KHI DIEU PHOI XONG CAP NHAT NGAY DIEU PHOI VAO BANG MASTER THANH TOAN / TAM UNG IF(@p_TRANSFER_TYPE='A') BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='U',TRANSFER_DT = GETDATE() WHERE REQ_PAY_ID =@REQ_PAY_ID END ELSE BEGIN UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='U',TRANSFER_DT = GETDATE() WHERE REQ_PAY_ID =@REQ_PAY_ID END SET @LIST_REQ_PAY_ID = @LIST_REQ_PAY_ID+','+@REQ_PAY_ID IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM TransferData INTO @REQ_PAY_ID, @TRANSFER_MAKER, @TRASFER_USER_RECIVE,@TRANSFER_ACTION END CLOSE TransferData DEALLOCATE TransferData IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @LIST_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION CLOSE TransferData DEALLOCATE TransferData SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' End GO ALTER PROCEDURE [dbo].[TR_BUDGET_LIMIT_Search] @p_BUDGET_TYPE VARCHAR(20) = NULL, @p_BRANCH_ID VARCHAR(20) = NULL, @p_TLNAME VARCHAR(20) = NULL, @p_DEP_ID VARCHAR(20) = NULL AS BEGIN -- PAGING DECLARE @tmpAccountTable TABLE (BUDGET_ID VARCHAR(20), GD_CODE VARCHAR(150), GD_NAME NVARCHAR (250), BUDGET_TYPE NVARCHAR(20), BRANCH_TYPE NVARCHAR(100), BRANCH_NAME NVARCHAR(200), DEP_NAME NVARCHAR(200), BUDGET_LIMIT_AMT DECIMAL(18,0), M1 DECIMAL(18,0), M2 DECIMAL(18,0), M3 DECIMAL(18,0), M4 DECIMAL(18,0), M5 DECIMAL(18,0), M6 DECIMAL(18,0), M7 DECIMAL(18,0), M8 DECIMAL(18,0), M9 DECIMAL(18,0), M10 DECIMAL(18,0), M11 DECIMAL(18,0), M12 DECIMAL(18,0)) INSERT INTO @tmpAccountTable SELECT A.BUDGET_MONTH_LIMIT_ID AS BUDGET_ID, B.GD_CODE, B.GD_NAME, F.CONTENT BUDGET_TYPE, C.CONTENT AS BRANCH_TYPE, '' BRANCH_NAME, '' DEP_NAME, A.BUDGET_LIMIT_AMT, A.M1, A.M2, A.M3, A.M4, A.M5, A.M6, A.M7, A.M8, A.M9, A.M10, A.M11, A.M12 FROM TR_REQ_BUDGET_MONTH_LIMIT A LEFT JOIN CM_GOODS B ON A.GD_ID = B.GD_ID LEFT JOIN CM_ALLCODE C ON A.BRANCH_TYPE = C.CDVAL AND C.CDNAME = 'BRANCH_TYPE' AND C.CDTYPE ='TR_REQ' LEFT JOIN CM_ALLCODE F ON A.BUDGET_TYPE = F.CDVAL AND F.CDNAME = 'BUDGET_TYPE' AND F.CDTYPE ='TR_REQ' WHERE 1=1 AND (A.BUDGET_TYPE LIKE N'%'+ @p_BUDGET_TYPE +'%' OR @p_BUDGET_TYPE IS NULL OR @p_BUDGET_TYPE = '') --AND (ACC_NAME LIKE N'%'+@p_ACCNAME+'%' OR @p_ACCNAME IS NULL OR @p_ACCNAME = '') UNION SELECT BUDGET_YEAR_LIMIT_ID AS BUDGET_ID, B.GD_CODE, B.GD_NAME, F.CONTENT AS BUDGET_TYPE, E.CONTENT AS BRANCH_TYPE, C.BRANCH_NAME, D.DEP_NAME, A.BUDGET_LIMIT_AMT, A.M1, A.M2, A.M3, A.M4, A.M5, A.M6, A.M7, A.M8, A.M9, A.M10, A.M11, A.M12 FROM TR_REQ_BUDGET_YEAR_LIMIT A LEFT JOIN CM_GOODS B ON A.GD_ID = B.GD_ID LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID LEFT JOIN CM_DEPARTMENT D ON A.DEP_ID = D.DEP_ID LEFT JOIN CM_ALLCODE E ON A.BRANCH_TYPE = E.CDVAL AND E.CDNAME = 'BRANCH_TYPE' AND E.CDTYPE ='TR_REQ' LEFT JOIN CM_ALLCODE F ON A.BUDGET_TYPE = F.CDVAL AND F.CDNAME = 'BUDGET_TYPE' AND F.CDTYPE ='TR_REQ' WHERE 1=1 AND (A.BUDGET_TYPE LIKE N'%'+ @p_BUDGET_TYPE +'%' OR @p_BUDGET_TYPE IS NULL OR @p_BUDGET_TYPE = '') AND (A.BRANCH_ID LIKE N'%'+ @p_BRANCH_ID +'%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.DEP_ID LIKE N'%'+ @p_DEP_ID +'%' OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') AND (A.TLNAME LIKE N'%'+ @p_TLNAME +'%' OR @p_TLNAME IS NULL OR @p_TLNAME = '') --AND (ACC_NAME LIKE N'%'+@p_ACCNAME+'%' OR @p_ACCNAME IS NULL OR @p_ACCNAME = '') --AND ISNULL(ACC_NUM,'') NOT IN (SELECT ACC_NO FROM CM_ACCOUNT) BEGIN -- PAGING BEGIN SELECT * -- SELECT END FROM @tmpAccountTable -- PAGING END END END -- PAGING