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
|
|