DELETE FROM dbo.PL_REQUEST_PROCESS WHERE ID=16094 DELETE FROM dbo.PL_REQUEST_PROCESS WHERE ID=16092 UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C',PARENT_PROCESS_ID='PTGDK_TT' WHERE ID=15153 UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C',PARENT_PROCESS_ID='PTGDK_TT' WHERE ID=15148 UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID='APPROVE' WHERE REQ_ID='PLRD00000201172' UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID='APPROVE' WHERE REQ_ID='PLRD00000201173' ¿ EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = 'PLRD00000201172' -- varchar(15) ¿ EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = 'PLRD00000201173' -- varchar(15) ¿ EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = 'PLRD00000201172' -- varchar(15) ¿ EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = 'PLRD00000201173' -- varchar(15) ¿ ALTER PROCEDURE [dbo].[PL_REQ_PROCESS_CHILD_App] @p_REQ_ID VARCHAR(20), @p_PROCESS_ID VARCHAR(20), @p_TLNAME VARCHAR(20), @p_MAKER_ID VARCHAR(20), @p_TYPE_JOB VARCHAR(20), @p_PROCESS_DES NVARCHAR(MAX), @p_REF_ID INT AS BEGIN TRANSACTION ---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R')) OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R'))) BEGIN ROLLBACK TRANSACTION SELECT -1 as Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc RETURN -1 END IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND IS_HAS_CHILD=1 AND STATUS='C' )) BEGIN IF(EXISTS( SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID WHERE PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C')) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc RETURN -1 END IF(NOT EXISTS( SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID WHERE PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' )) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng điều phối nhân viên xử lý phiếu!' ErrorDesc RETURN -1 END END DECLARE @ERROR BIT ,@EROOR_DES NVARCHAR(500) SELECT @ERROR=ERROR, @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'DVKD') IF(@ERROR=1) BEGIN ROLLBACK TRANSACTION; SELECT -1 Result, @EROOR_DES ErrorDesc RETURN 0; END DECLARE @LEVEL INT,@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20),@STEP_PARENT VARCHAR(20) DECLARE @ROLE_ID VARCHAR(20),@NOTES NVARCHAR(500), @PROCESS_CURR VARCHAR(10), @STEP_CURR INT, @STEP_NEXT VARCHAR(20), @PROCESS_NEXT VARCHAR(10), @TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100) SELECT @BRANCH_ID= TLSUBBRID,@DEP_ID=SECUR_CODE ,@ROLE_ID=RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID DECLARE @COST_ID_TABLE TABLE ( COST_ID VARCHAR(15) ) DECLARE @DVDM_ID_TABLE TABLE ( DVDM_ID VARCHAR(15) ) DECLARE @AUTHOR_DVDM TABLE ( ROLE_ID VARCHAR(100), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), DVDM_ID VARCHAR(20) ) INSERT INTO @AUTHOR_DVDM ( ROLE_ID, BRANCH_ID, DEP_ID, DVDM_ID ) SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID WHERE TU.TLNANME=@p_MAKER_ID UNION ALL SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='') WHERE TU.TLNANME=@p_MAKER_ID UNION ALL SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID WHERE TU.TLNAME=@p_MAKER_ID AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) UNION ALL SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='') WHERE TU.TLNAME=@p_MAKER_ID AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) INSERT INTO @COST_ID_TABLE SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID INSERT INTO @DVDM_ID_TABLE SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID_TABLE) GROUP BY DVDM_ID UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID --AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@p_TYPE_JOB) SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME ) INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) @p_PROCESS_ID, -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE() , -- APPROVE_DT - datetime @p_PROCESS_DES , @TYPE_JOB_NAME+ N' đã phê duyệt' -- PROCESS_DESC - nvarchar(1000) ) SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID --AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB ORDER BY LEVEL_JOB DESC),0) UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1) IF(NOT EXISTS (SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P')) BEGIN SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C') SET @PROCESS_NEXT = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR) IF(@PROCESS_CURR='TC') BEGIN SELECT @ERROR=ERROR, @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC') IF(@ERROR=1) BEGIN ROLLBACK TRANSACTION; SELECT '-1' Result, @EROOR_DES ErrorDesc RETURN '0'; END ---Duyệt TTCT DECLARE @LIMTT_MAX DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID_TF VARCHAR(20) ,@KHOI_ID_TO VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@IS_GDK BIT,@IS_PTGD BIT DECLARE @DATA_KHOI TABLE ( KHOI_ID VARCHAR(20), TOTAL_AMT DECIMAL(18,2), IS_NEXT BIT, IS_GDK BIT, IS_PTGD BIT ) INSERT INTO @DATA_KHOI ( KHOI_ID, TOTAL_AMT, IS_NEXT, IS_GDK, IS_PTGD ) SELECT FR_KHOI_ID,SUM(TOTAL_AMT),0,CD.IS_GDK,CD.IS_PTGD FROM dbo.PL_REQUEST_TRANSFER PT LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PT.FR_KHOI_ID WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID <>'' AND FR_KHOI_ID IS NOT NULL GROUP BY FR_KHOI_ID,CD.IS_GDK,CD.IS_PTGD SET @STEP_PARENT='TC' SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS') DECLARE lstDATA CURSOR FOR SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI OPEN lstDATA FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD WHILE @@FETCH_STATUS=0 BEGIN SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID_TF) IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@KHOI_ID_TF) AND @IS_GDK=1) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'GDK_TT', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'GDK', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @KHOI_ID_TF , N'Chờ giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15) ) END IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP) UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF IF(@IS_GDK=0) UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD END CLOSE lstDATA DEALLOCATE lstDATA IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT')) SET @STEP_PARENT='GDK_TT' IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1) OR EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID<>TO_KHOI_ID)) BEGIN DECLARE lstDATA CURSOR FOR SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI WHERE IS_NEXT=1 OPEN lstDATA FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD WHILE @@FETCH_STATUS=0 BEGIN SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='PTGD' AND DVDM_ID=@KHOI_ID_TF) IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='PTGD' AND DVDM_ID=@KHOI_ID_TF) AND @IS_PTGD=1) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'PTGDK_TT', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'PTGD', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @KHOI_ID_TF , N'Chờ Phó tổng giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15) ) END UPDATE @DATA_KHOI SET IS_NEXT=0 IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP) UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF IF(@IS_PTGD=0) UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD END CLOSE lstDATA DEALLOCATE lstDATA IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT')) SET @STEP_PARENT='PTGDK_TT' IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1) OR EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID<>TO_KHOI_ID)) BEGIN IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD')) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'TGD', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'TGD', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15) ); END END END DECLARE @LAST_PROCESS VARCHAR(20) SET @LAST_PROCESS=( SELECT TOP 1 PL.PROCESS_ID FROM dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.PL_CONFIG_PROCESS CP ON CP.PROCESS_ID=PL.PROCESS_ID WHERE REQ_ID=@p_REQ_ID GROUP BY PL.PROCESS_ID,CP.LEVEL_PROCESS ORDER BY CP.LEVEL_PROCESS DESC) UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@LAST_PROCESS WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND PROCESS_ID=@PROCESS_CURR UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C') UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID END ELSE IF(@PROCESS_CURR='KT') BEGIN -- SELECT @ERROR=ERROR, -- @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC') --IF(@ERROR=1) --BEGIN -- ROLLBACK TRANSACTION; -- SELECT '-1' Result, -- @EROOR_DES ErrorDesc -- RETURN '0'; --END SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND PROCESS_ID=@PROCESS_CURR UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID END ELSE BEGIN SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') UPDATE dbo.PL_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID AND COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C')) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID END UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS='A',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_DOC_ID=@p_REQ_ID AND FR_BRN_ID=@BRANCH_ID AND (FR_DEP_ID=@DEP_ID OR FR_DEP_ID IS NULL OR FR_DEP_ID='') UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND BRANCH_ID=@BRANCH_ID AND (DEP_ID=@DEP_ID OR DEP_ID IS NULL OR DEP_ID='') IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE))) BEGIN IF(NOT EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS<>'A')) BEGIN IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A')) BEGIN DECLARE @LIMIT_VALUE DECIMAL(18,0), @IS_NEXT BIT=0,@TOTAL_AMT_GD DECIMAL(12,0),@STOP BIT,@ROLE_TF VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTE NVARCHAR(100) DECLARE @ROLE_CDT VARCHAR(20),@DVDM_CDT VARCHAR(20),@LIMIT_VALUE_CDT VARCHAR(20),@NOTES_CDT VARCHAR(20),@TOTAL_AMT DECIMAL(18,2) SET @STEP_PARENT=(SELECT PARENT_PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID) SET @NOTE= (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='DVDM' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='TC')) BEGIN DECLARE lstTransfer CURSOR FOR SELECT FR_DVDM_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>'' AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE) AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV' AND DVDM_ID=FR_DVDM_ID ) AND FR_DVDM_ID <>'DM0000000000048' GROUP BY FR_DVDM_ID OPEN lstTransfer FETCH NEXT FROM lstTransfer INTO @DVDM_ID WHILE @@FETCH_STATUS = 0 BEGIN IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV' AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) )) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'DVDM_DC', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'GDDV', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @DVDM_ID , -- DVDM_ID - varchar(15) N'Chờ '+@NOTE+N' xác nhận' ,0) END FETCH NEXT FROM lstTransfer INTO @DVDM_ID END CLOSE lstTransfer DEALLOCATE lstTransfer SET @STEP_NEXT='TC' IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC')) BEGIN SET @STEP_PARENT='DVDM_DC' SET @STEP_NEXT ='DVDM_DC' END UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID SET @STEP_PARENT='TC' UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@STEP_NEXT AND REQ_ID=@p_REQ_ID UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@STEP_NEXT WHERE REQ_ID=@p_REQ_ID END END END END END IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='APPROVE')) BEGIN EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID END END IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT 0 as Result, '' ErrorDesc RETURN 0 ABORT: BEGIN ROLLBACK TRANSACTION SELECT -1 as Result, '' ErrorDesc RETURN -1 End