ALTER PROC [dbo].[CM_DEPT_BLOCKMAP_Upd] @p_DVDM_ID VARCHAR(20) = NULL, @p_DVDM_CODE varchar(15) = NULL, @p_DVDM_NAME NVARCHAR(300) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(20) = NULL, @p_CREATE_DT NVARCHAR(25) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(20) = NULL, @p_APPROVE_DT NVARCHAR(25) = NULL, @p_EDIT_DT NVARCHAR(25) = NULL, @p_EDITER_ID VARCHAR(20) = NULL, @p_IS_PTGD VARCHAR(1) = NULL, @p_IS_GDK VARCHAR(1) = NULL, @p_XmlData XML = NULL AS DECLARE @COST_ID VARCHAR(20), @COST_CODE VARCHAR(20), @PLAN_TYPE_ID VARCHAR(20), @COST_NAME NVARCHAR(200), @NOTES NVARCHAR(1000), @BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15), @COSTDT_ID VARCHAR(20) IF ( EXISTS ( SELECT * FROM dbo.CM_DVDM WHERE DVDM_CODE=@p_DVDM_CODE AND DVDM_ID <> @p_DVDM_ID)) BEGIN SELECT '-1' Result, '' DVDM_ID, N'Mã khối đã tồn tại' ErrorDesc RETURN '-1' END DECLARE @hdoc INT; EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData; DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdoc, '/Root/XmlData', 2) WITH(COST_ID VARCHAR(20), COST_CODE VARCHAR(20), PLAN_TYPE_ID VARCHAR(20), COST_NAME NVARCHAR(200), NOTES NVARCHAR(1000), BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15), COSTDT_ID VARCHAR(20)) OPEN XmlData; BEGIN TRANSACTION UPDATE dbo.CM_DVDM SET DVDM_CODE = @p_DVDM_CODE, DVDM_NAME = @p_DVDM_NAME, NOTES = @p_NOTES, RECORD_STATUS = @p_RECORD_STATUS, AUTH_STATUS = @p_AUTH_STATUS, EDITER_ID = @p_EDITER_ID, EDIT_DT = CONVERT(DATETIME, @p_EDIT_DT, 103), IS_PTGD = CONVERT(BIT, @p_IS_PTGD), IS_GDK = CONVERT(BIT, @p_IS_GDK) WHERE DVDM_ID = @p_DVDM_ID IF @@Error <> 0 GOTO ABORT DELETE FROM dbo.PL_COSTCENTER WHERE DVDM_ID = @p_DVDM_ID DELETE FROM dbo.PL_COSTCENTER_DT WHERE COST_ID = (SELECT COST_ID FROM dbo.PL_COSTCENTER WHERE DVDM_ID = @p_DVDM_ID) FETCH NEXT FROM XmlData INTO @COST_ID, @COST_CODE, @PLAN_TYPE_ID, @COST_NAME, @NOTES, @BRANCH_ID, @DEP_ID, @COSTDT_ID WHILE @@fetch_status=0 BEGIN DECLARE @l_COST_ID VARCHAR(20) DECLARE @l_COSTDT_ID VARCHAR(20) DECLARE @l_COST_CODE VARCHAR(20) DECLARE @l_COST_NAME NVARCHAR(200) SELECT @l_COST_CODE = DEP_CODE FROM dbo.CM_DEPARTMENT WHERE DEP_ID = @DEP_ID SELECT @l_COST_NAME = DEP_NAME FROM dbo.CM_DEPARTMENT WHERE DEP_ID = @DEP_ID --PHONGNT 3/8/22 PHÒNG BAN CHỈ THUỘC 1 KHỐI DELETE PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM PL_COSTCENTER_DT WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID) DELETE PL_COSTCENTER_DT WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID --END EXEC SYS_CodeMasters_Gen 'PL_COSTCENTER', @l_COST_ID out IF @l_COST_ID='' OR @l_COST_ID IS NULL GOTO ABORT INSERT dbo.PL_COSTCENTER ( COST_ID, COST_CODE, PLAN_TYPE_ID, COST_NAME, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, EDITER_ID, EDIT_DT, DVDM_ID ) VALUES ( @l_COST_ID, -- COST_ID - varchar(20) @l_COST_CODE, -- COST_CODE - varchar(20) @PLAN_TYPE_ID, -- PLAN_TYPE_ID - varchar(20) @l_COST_NAME, -- COST_NAME - nvarchar(200) @NOTES, -- NOTES - nvarchar(1000) @p_RECORD_STATUS, -- RECORD_STATUS - varchar(1) @p_AUTH_STATUS, -- AUTH_STATUS - varchar(1) @p_EDITER_ID, -- MAKER_ID - varchar(15) CONVERT(DATETIME, @p_EDIT_DT, 103), -- CREATE_DT - datetime @p_EDITER_ID, -- EDITER_ID - varchar(15) CONVERT(DATETIME, @p_EDIT_DT, 103), -- EDIT_DT - datetime @p_DVDM_ID -- DVDM_ID - varchar(15) ) IF @@error<>0 GOTO ABORT EXEC SYS_CodeMasters_Gen 'PL_COSTCENTER_DT', @l_COSTDT_ID out IF @l_COSTDT_ID='' OR @l_COSTDT_ID IS NULL GOTO ABORT INSERT dbo.PL_COSTCENTER_DT ( COSTDT_ID, COST_ID, BRANCH_ID, DEP_ID, NOTES, RECORD_STATUS, MAKER_ID, CREATE_DT ) VALUES ( @l_COSTDT_ID, -- COSTDT_ID - varchar(20) @l_COST_ID, -- COST_ID - varchar(20) @BRANCH_ID, -- BRANCH_ID - varchar(15) @DEP_ID, -- DEP_ID - varchar(15) @NOTES, -- NOTES - nvarchar(1000) @p_RECORD_STATUS, -- RECORD_STATUS - varchar(1) @p_MAKER_ID, -- MAKER_ID - varchar(15) CONVERT(DATETIME, @p_CREATE_DT, 103) -- CREATE_DT - datetime ) IF @@error<>0 GOTO ABORT --PHONGNT 3/8/22 MAPPING KHOI-PB UPDATE dbo.CM_DEPARTMENT SET KHOI_ID=@p_DVDM_ID WHERE DEP_ID=@DEP_ID IF @@error<>0 GOTO ABORT --END FETCH NEXT FROM XmlData INTO @COST_ID, @COST_CODE, @PLAN_TYPE_ID, @COST_NAME, @NOTES, @BRANCH_ID, @DEP_ID, @COSTDT_ID END CLOSE XmlData; DEALLOCATE XmlData; COMMIT TRANSACTION SELECT '0' AS Result, '' DVDM_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlData; DEALLOCATE XmlData; ROLLBACK TRANSACTION SELECT '-1' AS Result, '' ErrorDesc RETURN '-1' END