Project

General

Profile

2.2. PL COSTCENTER UPD.txt

Luc Tran Van, 04/26/2023 04:02 PM

 
1
ALTER PROCEDURE [dbo].[PL_COSTCENTER_Upd]
2
@p_COST_ID VARCHAR(15)=NULL,
3
@p_COST_CODE	varchar(15)  = NULL,
4
@p_COST_NAME	NVARCHAR(300)  = NULL,
5
@p_PLAN_TYPE_ID	varchar(15)  = NULL,
6
@p_NOTES	nvarchar(1000)  = NULL,
7
@p_RECORD_STATUS	varchar(1)  = NULL,
8
@p_MAKER_ID	varchar(20)  = NULL,
9
@p_EDIT_DT	varchar(25) = NULL,
10
@p_AUTH_STATUS	varchar(50)  = NULL,
11
@p_CHECKER_ID	varchar(20)  = NULL,
12
@p_APPROVE_DT	varchar(25) = NULL,
13
@p_XMLData XML=NULL
14
AS
15
BEGIN TRANSACTION
16
--Validation is here
17
		--DECLARE @ERRORSYS NVARCHAR(15) = '' 
18
		--  IF ( EXISTS ( SELECT * FROM dbo.PL_COSTCENTER WHERE COST_CODE =@p_COST_CODE AND COST_ID<>@p_COST_ID))
19
		--	 SET @ERRORSYS = 'CODE-0001'
20
		--IF @ERRORSYS <> '' 
21
		--BEGIN
22
		--	ROLLBACK TRANSACTION
23
		--	SELECT '-1' as Result, @p_COST_ID  COST_ID, N'Mã đơn vị đầu mối :' +@p_COST_ID+ N' đã tồn tại trong hệ thống' ErrorDesc
24
		--	RETURN '-1'
25
		--END 
26
		DECLARE @DVDM_ID VARCHAR(20), @KHOI_ID VARCHAR(15),@COST_ID_MAP_KHOI_OLD VARCHAR(15)
27
		SET @COST_ID_MAP_KHOI_OLD =(SELECT TOP 1 COST_CODE FROM PL_COSTCENTER WHERE COST_ID =@p_COST_ID)
28
		SET @DVDM_ID = (SELECT TOP(1) cd.DVDM_ID FROM CM_DVDM cd WHERE cd.DVDM_CODE =@p_COST_CODE AND (cd.IS_DVDM=1 OR cd.IS_DVCM =1))
29
		--SET @KHOI_ID = (SELECT TOP(1) cd.DVDM_ID FROM CM_DVDM cd WHERE LEFT(cd.DVDM_CODE,5) =LEFT(@p_COST_CODE,5) AND cd.IS_KHOI=1)
30
		SET @KHOI_ID = (SELECT TOP(1) cd.KHOI_ID FROM CM_DEPARTMENT cd WHERE DEP_CODE =@p_COST_CODE)
31
		IF(@KHOI_ID IS NULL OR @KHOI_ID ='')
32
		BEGIN
33
			SET @KHOI_ID = (SELECT TOP(1) cd.DVDM_ID FROM CM_DVDM cd WHERE LEFT(cd.DVDM_CODE,5) =LEFT(@p_COST_CODE,5) AND cd.IS_KHOI=1)
34
		END
35
		IF(@DVDM_ID IS NOT NULL AND @DVDM_ID <> '')
36
		BEGIN
37
			UPDATE dbo.PL_COSTCENTER SET  
38
			COST_CODE=@p_COST_CODE,
39
			[PLAN_TYPE_ID] = @p_PLAN_TYPE_ID,
40
			[COST_NAME] = @p_COST_NAME,
41
			[NOTES] = @p_NOTES,
42
			[RECORD_STATUS] = @p_RECORD_STATUS,
43
			[EDITER_ID] = @p_MAKER_ID,
44
			[EDIT_DT] = CONVERT(DATETIME, @p_EDIT_DT, 103),
45
			[AUTH_STATUS] = @p_AUTH_STATUS,
46
			[CHECKER_ID] = @p_CHECKER_ID,
47
			[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103),
48
			DVDM_ID =@DVDM_ID
49
			WHERE COST_ID  = @p_COST_ID
50
		END
51
		ELSE
52
		BEGIN
53
			IF (@DVDM_ID IS NULL)
54
			BEGIN
55
				EXEC SYS_CodeMasters_Gen 'CM_DVDM', @DVDM_ID OUT
56
				IF @DVDM_ID='' OR @DVDM_ID IS NULL GOTO ABORT
57
				INSERT INTO CM_DVDM (DVDM_ID, DVDM_CODE, DVDM_NAME, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, EDITER_ID, EDIT_DT, CHECKER_ID, APPROVE_DT, IS_DVDM, IS_KHOI, IS_DVCM, IS_PTGD, IS_GDK)
58
				VALUES (@DVDM_ID, @p_COST_CODE, @p_COST_NAME, NULL, 1, 'A', @p_MAKER_ID, GETDATE(), '', GETDATE(), @p_MAKER_ID, GETDATE(), 1, 0, 0, 0, 0);
59
				--- UPDATE LAI DVCM
60
				UPDATE dbo.PL_COSTCENTER SET  
61
				COST_CODE=@p_COST_CODE,
62
				[PLAN_TYPE_ID] = @p_PLAN_TYPE_ID,
63
				[COST_NAME] = @p_COST_NAME,
64
				[NOTES] = @p_NOTES,
65
				[RECORD_STATUS] = @p_RECORD_STATUS,
66
				[EDITER_ID] = @p_MAKER_ID,
67
				[EDIT_DT] = CONVERT(DATETIME, @p_EDIT_DT, 103),
68
				[AUTH_STATUS] = @p_AUTH_STATUS,
69
				[CHECKER_ID] = @p_CHECKER_ID,
70
				[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103),
71
				DVDM_ID =@DVDM_ID
72
				WHERE COST_ID  = @p_COST_ID
73
				--- END
74
			END
75
		END
76
		--- KIEM TRA XEM NEU COSTCENTER ĐÓ CHƯA ĐƯỢC MAPPING VỚI KHỐI THÌ THỰC HIỆN MAPPING
77
		UPDATE PL_COSTCENTER SET DVDM_ID =@KHOI_ID WHERE COST_CODE =@COST_ID_MAP_KHOI_OLD AND COST_ID <> @p_COST_ID
78
		--- LUCTV 11.04.2023 THÊM VÀO BẢNG CM_DVDM_KHOI
79
		--IF(EXISTS(SELECT * FROM CM_DVDM_KHOI WHERE DVDM_ID =@DVDM_ID))
80
		--BEGIN
81
		--	UPDATE CM_DVDM_KHOI SET KHOI_ID =@KHOI_ID WHERE DVDM_ID =@DVDM_ID
82
		--END
83
		--ELSE
84
		--BEGIN
85
		--	INSERT INTO CM_DVDM_KHOI (DVDM_ID, KHOI_ID) VALUES (@DVDM_ID, @KHOI_ID)
86
		--END
87
		--- END LUCTV 11.04.2023
88
		IF @@Error <> 0 GOTO ABORT
89

    
90
		Declare @hdoc INT
91
		Exec sp_xml_preparedocument @hdoc Output, @p_XMLData	
92

    
93
	DECLARE CostDT CURSOR FOR
94
	SELECT *
95
	FROM OPENXML(@hDoc,'/Root/COSTDT',2)
96
	WITH 
97
	(
98
		BRANCH_ID VARCHAR(15),
99
		DEP_ID	varchar(15),
100
		NOTES NVARCHAR(1000)
101
	)
102
	
103
	OPEN CostDT
104
	DECLARE @BRANCH_ID VARCHAR(15),@DEP_ID	varchar(15),@NOTES NVARCHAR(1000)
105

    
106
	DELETE FROM dbo.PL_COSTCENTER_DT WHERE COST_ID=@p_COST_ID
107

    
108
	FETCH NEXT FROM CostDT INTO @BRANCH_ID, @DEP_ID,@NOTES
109
	
110
	WHILE @@FETCH_STATUS = 0	
111
	BEGIN			
112
			DECLARE @l_COSTDT_ID VARCHAR(20)
113
			EXEC SYS_CodeMasters_Gen 'PL_COSTCENTER_DT', @l_COSTDT_ID out
114
			IF @l_COSTDT_ID='' OR @l_COSTDT_ID IS NULL GOTO ABORT		
115
			INSERT INTO dbo.PL_COSTCENTER_DT
116
			(
117
			    COSTDT_ID,
118
			    COST_ID,
119
			    BRANCH_ID,
120
			    DEP_ID,
121
			    NOTES,
122
			    RECORD_STATUS,
123
			    MAKER_ID,
124
			    CREATE_DT
125
			  
126
			)
127
			VALUES
128
			(   @l_COSTDT_ID,        -- COSTDT_ID - varchar(20)
129
			    @p_COST_ID,        -- COST_ID - varchar(20)
130
			    @BRANCH_ID,        -- BRANCH_ID - varchar(15)
131
			    @DEP_ID,        -- DEP_ID - varchar(15)
132
			    @NOTES,       -- NOTES - nvarchar(1000)
133
			    '1',        -- RECORD_STATUS - varchar(1)
134
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
135
			    NULL -- CREATE_DT - datetime --26042023_secretkey
136
			    )
137
		
138
		IF @@Error <> 0 GOTO ABORT	
139
		FETCH NEXT FROM CostDT INTO @BRANCH_ID, @DEP_ID,@NOTES	
140
		PRINT @l_COSTDT_ID
141
	END
142
	CLOSE CostDT
143
	DEALLOCATE CostDT
144
	---- 12.04.2023 LUCTV BỔ SUNG MAPPING CM_DVDM_KHỐI
145
	UPDATE CM_DVDM_KHOI SET KHOI_ID =@KHOI_ID WHERE DVDM_ID =@DVDM_ID
146
	---- END LUCTV 12.04.2023
147
COMMIT TRANSACTION
148
		SELECT '0' as Result, @p_COST_ID  COST_ID, '' ErrorDesc
149
		RETURN '0'
150
ABORT:
151
BEGIN
152
		ROLLBACK TRANSACTION
153
		SELECT '-1' as Result, '' COST_ID, '' ErrorDesc
154
		RETURN '-1'
155
End