Project

General

Profile

CM_PROCESS_DT_Create.txt

Luc Tran Van, 04/06/2023 08:04 AM

 
1

    
2

    
3
ALTER PROC dbo.CM_PROCESS_DT_Create
4
@p_ID VARCHAR(15) = NULL,
5
@p_REQ_ID VARCHAR(50)=NULL,
6
@p_TLNAME VARCHAR(200)=NULL
7
AS
8
BEGIN
9

    
10
DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20), @ROLE VARCHAR(20), @CURRENTSTATE VARCHAR(15), @CONDITION_STATUS VARCHAR(1), @DESCRIBE NVARCHAR(MAX), @COUNTDVCM INT, @TEMPDVCM_ID INT
11
DECLARE @TEMPDVCM TABLE (
12
  ID INT NOT NULL IDENTITY(1,1),
13
  COST_ID VARCHAR(15),
14
  REQ_ID VARCHAR(15)
15
  --,RANGE_PROCESS VARCHAR(15)
16
) 
17
BEGIN TRANSACTION
18

    
19
SET @CURRENTSTATE = (SELECT crp.[STATUS] FROM CM_REQUEST_PROCESS crp WHERE crp.REQ_ID = @p_REQ_ID AND  PROCESS_ID=CONVERT(INT, @p_ID))
20
SET @CONDITION_STATUS = (SELECT  [STATUS] FROM CM_PROCESS WHERE ID=CONVERT(INT, @p_ID))    
21
SET @ROLE = (SELECT ROLE FROM CM_PROCESS cp WHERE CONDITION_STATUS IN (SELECT  [STATUS] FROM CM_PROCESS WHERE ID=CONVERT(INT, @p_ID)) AND CONDITION_STATUS<>[STATUS] )
22

    
23
INSERT INTO @TEMPDVCM SELECT trsc.COST_ID, trsc.REQ_ID FROM TR_REQUEST_SHOP_COSTCENTER trsc  
24
                      WHERE trsc.REQ_ID = @p_REQ_ID 
25
                      AND trsc.COST_ID NOT IN (SELECT crp.DEPT_ID FROM CM_REQUEST_PROCESS crp WHERE crp.REQ_ID = @p_REQ_ID AND crp.STATUS = 'G' AND crp.PROCESS_ID = 32) 
26

    
27
SET @TEMPDVCM_ID = 1
28
SET @COUNTDVCM = (SELECT COUNT(*) FROM @TEMPDVCM WHERE [@TEMPDVCM].REQ_ID = @p_REQ_ID GROUP BY [@TEMPDVCM].REQ_ID)	
29

    
30

    
31
  INSERT INTO [dbo].[PL_PROCESS]
32
           ([REQ_ID]
33
           ,[PROCESS_ID]
34
           ,[CHECKER_ID]
35
           ,[APPROVE_DT]
36
           ,[PROCESS_DESC]
37
           ,[NOTES]
38
           ,[AUTH_STATUS])
39
    SELECT @p_REQ_ID
40
	,ID
41
	,@p_TLNAME
42
	,GETDATE()
43
	,UPPER(LEFT(cp.DESCRIPTION,1))+LOWER(SUBSTRING(cp.DESCRIPTION,2,LEN(cp.DESCRIPTION))) --uppercase/capitalize the first letter vs just wanted to change it only for displaying and do not need the actual data in table to change
44
	,cp.NOTES
45
	,[STATUS] FROM CM_PROCESS cp WHERE ID=CONVERT(INT, @p_ID)
46

    
47
	DECLARE @TABLE VARCHAR(50)=NULL
48
	--cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý,...
49
		DECLARE @SYS_PREFIX VARCHAR(20) =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from(
50
		  SELECT SUBSTRING(@p_REQ_ID, PATINDEX('%[a-z]%', @p_REQ_ID), LEN(@p_REQ_ID)) Val
51
		)x)
52
	SET @TABLE=(SELECT sp.ID FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX)
53

    
54
  SELECT @BRANCH_ID=BRANCH_ID,@DEP_ID=DEP_ID FROM ASS_LIQ_REQUEST ALR WHERE ALR.LIQ_REQ_ID = @p_REQ_ID
55

    
56
	--UPDATE STATUS DONE CM_REQUEST_PROCESS
57
	UPDATE CM_REQUEST_PROCESS SET DONE=1 
58
	WHERE REQ_ID=@p_REQ_ID 
59
	AND PROCESS_ID=CONVERT(INT, @p_ID)
60
	AND(DEPT_ID=(SELECT DEP_ID FROM TL_USER WHERE TLNANME=@p_TLNAME) OR DEPT_ID IS NULL OR DEPT_ID='')
61

    
62
	DELETE CM_REQUEST_PROCESS
63
	WHERE (DONE<>1 OR DONE IS NULL)
64
	AND REQ_ID=@p_REQ_ID 
65
	AND PROCESS_ID<>CONVERT(INT, @p_ID)
66
	AND CONDITION_STATUS=(SELECT TOP 1 CONDITION_STATUS FROM CM_REQUEST_PROCESS WHERE PROCESS_ID=CONVERT(INT, @p_ID) AND REQ_ID=@p_REQ_ID)
67
	AND(DEPT_ID=(SELECT DEP_ID FROM TL_USER WHERE TLNANME=@p_TLNAME) OR DEPT_ID IS NULL OR DEPT_ID='')
68
  
69
   IF @ROLE LIKE '%QLTS'
70
    BEGIN
71
      SET @BRANCH_ID = 'DV0001'
72
     SET @DEP_ID = 'DEP000000000048'
73
    END
74
  
75
  IF(@CURRENTSTATE = 'E' AND NOT EXISTS (SELECT * FROM TR_REQUEST_SHOP_COSTCENTER WHERE REQ_ID=@p_REQ_ID))
76
  BEGIN
77
    SET @p_ID = (SELECT cp.ID FROM CM_PROCESS cp WHERE cp.[STATUS] = 'G')
78
    SET @BRANCH_ID = 'DV0001' 
79
    SET @DEP_ID = 'DEP000000000048'
80
    SET @CONDITION_STATUS = 'E'
81
    SET @ROLE = 'QLTS'
82
  END
83

    
84
   IF @ROLE LIKE '%DVCM' --AND @COUNTDVCM = 1     
85
   BEGIN  
86
    SET @BRANCH_ID = 'DV0001' 
87
    SET @DEP_ID = (SELECT COST_ID FROM @TEMPDVCM WHERE REQ_ID = @p_REQ_ID AND ID = 1)--(SELECT TRS.COST_ID FROM TR_REQUEST_SHOP_COSTCENTER TRS WHERE TRS.REQ_ID=@p_REQ_ID)
88
   END
89

    
90
--   IF @ROLE LIKE 'DVCM' AND @COUNTDVCM > 1 AND NOT EXISTS (SELECT * FROM CM_REQUEST_PROCESS crp WHERE crp.REQ_ID = @p_REQ_ID AND crp.STATUS = 'F' AND crp.ROLE LIKE 'DVCM')
91
--   BEGIN
92
--    SET @BRANCH_ID = 'DV0001' 
93
--    SET @DEP_ID = (SELECT COST_ID FROM @TEMPDVCM WHERE REQ_ID = @p_REQ_ID AND ID = 1)
94
--   END
95

    
96
   IF(@ROLE LIKE 'GDDVCM')
97
   BEGIN
98
    SET @ROLE = 'GDDV'
99
    SET @BRANCH_ID = 'DV0001'
100
    SET @DEP_ID = (SELECT COST_ID FROM @TEMPDVCM WHERE REQ_ID = @p_REQ_ID AND ID = 1)--(SELECT TRS.COST_ID FROM TR_REQUEST_SHOP_COSTCENTER TRS WHERE TRS.REQ_ID=@p_REQ_ID)
101
   END 
102
      
103
	--CHECK STEP DVCM IN PROCESS
104
	IF(EXISTS(SELECT * FROM CM_PROCESS WHERE  ID=CONVERT(INT,@p_ID) AND [STATUS] IN (SELECT CONDITION_STATUS FROM CM_PROCESS WHERE RANGE_PROCESS='DEPT'))
105
	AND NOT EXISTS (SELECT * FROM TR_REQUEST_SHOP_COSTCENTER WHERE REQ_ID=@p_REQ_ID))
106
	BEGIN
107
		--CHANGE ID TO NEXT STEP
108
		SET @p_ID=(SELECT TOP(1) ID FROM CM_PROCESS WHERE [ORDER]>(SELECT [ORDER] FROM CM_PROCESS WHERE ID=CONVERT(INT, @p_ID)) AND (RANGE_PROCESS='DEPT') ORDER BY [ORDER] DESC)
109
    SET @DEP_ID = (SELECT TRS.COST_ID FROM TR_REQUEST_SHOP_COSTCENTER TRS WHERE TRS.REQ_ID=@p_REQ_ID)
110
	END
111
  
112
  
113
  IF(@CURRENTSTATE = 'G' AND EXISTS(SELECT * FROM @TEMPDVCM WHERE COST_ID IS NOT NULL AND REQ_ID = @p_REQ_ID))  
114
  BEGIN 
115
    SET @p_ID = (SELECT cp.ID FROM CM_PROCESS cp WHERE cp.[STATUS] = 'E') 
116
    SET @BRANCH_ID = 'DV0001'
117
    SET @DEP_ID = (SELECT COST_ID FROM @TEMPDVCM WHERE REQ_ID = @p_REQ_ID AND ID = 1)
118
    SET @CONDITION_STATUS = 'G'
119
    SET @ROLE = 'DVCM'
120
  END 
121
	--INSERT INTO PL_REQUEST_PROCESS
122
	IF(
123
	NOT EXISTS(SELECT * FROM CM_REQUEST_PROCESS WHERE PROCESS_ID=CONVERT(INT,@p_ID) AND REQ_ID=@p_REQ_ID AND (DONE<>1 OR DONE IS NULL OR DONE ='') AND [ACTION]='APPROVE')
124
--	AND
125
--	NOT EXISTS(SELECT * FROM CM_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND [STATUS] IN(SELECT [STATUS] FROM CM_PROCESS WHERE CONDITION_STATUS=(SELECT  [STATUS] FROM CM_PROCESS WHERE ID=CONVERT(INT, @p_ID)) AND CONDITION_STATUS<>[STATUS] ) )
126
  )
127
	BEGIN
128
  
129
		INSERT INTO [dbo].[CM_REQUEST_PROCESS]
130
			   ([REQ_ID]
131
			   ,PROCESS_KEY
132
			   ,[PROCESS_ID]
133
			   ,[STATUS]
134
			   ,[ROLE]
135
			   ,[BRANCH_ID]
136
         ,[DEPT_ID]
137
			   ,[DEP_ID]
138
			   ,[NOTES]
139
			   ,[ORDER]
140
			   ,[ACTION]
141
			   ,[FROM_STATUS]
142
			   ,[FROM]
143
			   ,[CONDITION_STATUS]
144
			   ,[DESCRIBE]
145
			   ,[NAME_ACTION]
146
			   ,[RANGE_PROCESS]
147
         ,[MARKER_ID]
148
         ,CHECKER_ID
149
         ,APPROVE_DT)
150
			   SELECT 
151
			   @p_REQ_ID
152
			   ,CP.PROCESS_KEY
153
			   ,CP.ID
154
			   ,CP.[STATUS]
155
			   ,@ROLE
156
			   ,@BRANCH_ID
157
         ,[@TEMPDVCM].COST_ID --TRSC.COST_ID--
158
			   ,@DEP_ID
159
			   ,CP.NOTES
160
			   ,CP.[ORDER]
161
			   ,[ACTION]
162
			   ,FROM_STATUS
163
			   ,[STATUS]
164
			   ,@CONDITION_STATUS
165
			   ,DESCRIBE
166
			   ,NAME_ACTION
167
			   ,RANGE_PROCESS
168
         ,alr.MAKER_ID
169
         ,alr.CHECKER_ID
170
         ,CONVERT(DATETIME,GETDATE(),103)
171
			   FROM CM_PROCESS CP
172
         LEFT JOIN ASS_LIQ_REQUEST alr ON alr.LIQ_REQ_ID = @p_REQ_ID
173
         --LEFT JOIN TR_REQUEST_SHOP_COSTCENTER TRSC ON TRSC.REQ_ID=@p_REQ_ID AND CP.RANGE_PROCESS='DEPT'
174
         LEFT JOIN @TEMPDVCM ON [@TEMPDVCM].REQ_ID = @p_REQ_ID AND CP.RANGE_PROCESS='DEPT' AND [@TEMPDVCM].ID = 1--AND TRSC.COST_ID = [@TEMPDVCM].COST_ID   
175
			   WHERE CONDITION_STATUS IN (SELECT [STATUS] FROM CM_PROCESS WHERE ID=CONVERT(INT, @p_ID))
176
			   AND CONDITION_STATUS <> [STATUS] 
177
         --IF @@ERROR <> 0 GOTO ABORT
178
  
179
	END
180
   
181
	-- END INSERT PL_REQUEST_PROCESS
182

    
183
COMMIT TRANSACTION
184
SELECT '0' as Result, @p_REQ_ID  REQ_ID, '' ErrorDesc, @p_ID ID, @BRANCH_ID BRANCH_ID, @DEP_ID DEP_ID, @ROLE [ROLE], @CURRENTSTATE CURRENTSTATE, @COUNTDVCM COUNTDVCM, @TEMPDVCM_ID TEMPDVCM_ID  
185
RETURN '0'
186
ABORT:
187
BEGIN
188
		ROLLBACK TRANSACTION
189
		SELECT '-1' as Result, '' REQ_ID, '' ErrorDesc
190
		RETURN '-1'
191
End
192
END
193

    
194

    
195