Project

General

Profile

TR_REQUEST_PROCESS_App.txt

Truong Nguyen Vu, 09/30/2020 10:43 AM

 
1

    
2

    
3
ALTER PROCEDURE [dbo].[TR_REQUEST_PROCESS_App]
4
    @p_REQ_ID VARCHAR(15) = NULL,
5
	@p_AUTH_STATUS VARCHAR(1) = NULL,
6
	@p_CHECKER_ID varchar(15)  = NULL,
7
	@p_APPROVE_DT DATETIME = NULL,
8
	@p_ROLE_LOGIN VARCHAR(50) = NULL,
9
	@p_BRANCH_LOGIN VARCHAR(15),
10
	@p_PROCESS_DESC NVARCHAR(MAX),
11
	@p_XMLDATA XML
12
	
13
AS
14

    
15
--SET @p_APPROVE_DT= CAST(@p_APPROVE_DT AS DATE)
16
	--Validation is here
17
DECLARE @ERRORSYS NVARCHAR(15) = '' 
18
  IF ( NOT EXISTS ( SELECT * FROM TR_REQUEST_DOC WHERE  REQ_ID = @p_REQ_ID))
19
	SET @ERRORSYS = 'REQ-00002'
20
IF @ERRORSYS <> '' 
21
BEGIN
22
   ROLLBACK TRANSACTION
23
	SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
24
	RETURN '0'
25
END 
26

    
27
BEGIN TRANSACTION
28
-- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC
29
	IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R'))
30
	OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
31
		BEGIN
32
			ROLLBACK TRANSACTION
33
			SELECT '-1' Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_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
34
			RETURN '-1'
35
	END
36
	--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
37
	--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM  CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
38
	Declare @hdoc INT
39
	EXEC sp_xml_preparedocument @hdoc Output,@p_XMLDATA
40
	DECLARE @lstFILE TABLE(
41
	ATTACH_ID  VARCHAR(20),
42
	IS_READ	BIT 
43
	)
44
	INSERT INTO @lstFILE
45
	SELECT *
46
	FROM OPENXML(@hDoc,'/Root/ATTACH_FILE',2)
47
	WITH 
48
	(
49
		ATTACH_ID  VARCHAR(20),
50
		IS_READ	BIT  
51
	)
52

    
53
IF(EXISTS(SELECT TR_REQUEST_DOC_FILE_ID FROM dbo.TR_REQUEST_DOC_FILE WHERE REQ_ID=@p_REQ_ID AND IS_VIEW=1
54
 AND EXISTS(SELECT ATTACH_ID FROM @lstFILE WHERE [@lstFILE].ATTACH_ID=TR_REQUEST_DOC_FILE.ATTACH_ID AND IS_READ=0)))
55
 BEGIN
56
		ROLLBACK TRANSACTION
57
			SELECT 'REQ-00001' Result, '' ROLE_NOTIFI, N'File đinh kèm bắt buộc đọc' ErrorDesc 
58
			RETURN '0'
59
 END
60

    
61

    
62

    
63

    
64
	 DECLARE
65
	@Result VARCHAR(5),
66
	@PROCESS_CURR VARCHAR(10),
67
	@STEP_CURR INT,
68
	@STEP_NEXT INT,
69
	@PROCESS_NEXT VARCHAR(10),
70
	@ROLE_USER_NOTIFI VARCHAR(50),
71
	@DEP_ID VARCHAR(15),
72
	@IS_LEAF VARCHAR(1),
73
	@NOTES NVARCHAR(50)
74

    
75
		SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_CHECKER_ID)
76
		SET @PROCESS_CURR= (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
77
		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)
78
		SET @IS_LEAF=(SELECT TOP 1 IS_LEAF FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
79
		
80
		
81

    
82
		SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
83
		--SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID=@p_ROLE_LOGIN)	
84

    
85

    
86

    
87
		UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='P',NOTES=@NOTES+N' đã phê duyệt',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND ROLE_USER=@p_ROLE_LOGIN
88
			
89
		
90
		INSERT INTO dbo.PL_PROCESS
91
				(
92
					REQ_ID,
93
					PROCESS_ID,
94
					CHECKER_ID,
95
					APPROVE_DT,
96
					PROCESS_DESC,NOTES
97
				)
98
				VALUES
99
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
100
					@PROCESS_CURR,        -- PROCESS_ID - varchar(10)
101
					@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
102
					GETDATE(), -- APPROVE_DT - datetime
103
					@p_PROCESS_DESC,
104
					@NOTES+N' đã phê duyệt'     -- PROCESS_DESC - nvarchar(1000)
105
				)
106
		IF(EXISTS(SELECT PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR AND [STATUS] ='P'))
107
		BEGIN	
108
				UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID
109
				UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
110

    
111
		END	
112
	
113
	IF(@PROCESS_NEXT='APPROVE')	
114
	BEGIN
115
					DECLARE @TempTB TABLE
116
				(
117
					TOTAL_AMT DECIMAL(18,2),
118
					TRADE_ID VARCHAR(20),
119
					PLAN_ID VARCHAR(20)
120
				)
121
				INSERT INTO @TempTB			
122
				SELECT SUM(DT.TOTAL_AMT) TOTAL_AMT,PLDT.TRADE_ID,PLDT.PLAN_ID FROM dbo.TR_REQUEST_DOC_DT DT 
123
				LEFT JOIN dbo.PL_REQUEST_DOC_DT PLDT ON DT.PL_REQDT_ID=PLDT.REQDT_ID
124
				WHERE TRAN_TYPE_ID  IN (SELECT TRAN_TYPE_ID FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK') AND DT.REQ_DOC_ID=@p_REQ_ID
125
				GROUP BY	PLDT.TRADE_ID,PLDT.PLAN_ID
126
				UPDATE dbo.PL_TRADEDETAIL SET AMT_EXE =AMT_EXE + (SELECT TOTAL_AMT FROM @TempTB WHERE [@TempTB].TRADE_ID=PL_TRADEDETAIL.TRADE_ID AND PL_TRADEDETAIL.PLAN_ID=[@TempTB].PLAN_ID)
127

    
128

    
129
		IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND REQ_PARENT_ID IS NOT NULL AND REQ_PARENT_ID <>''))
130
		BEGIN
131
			DECLARE @PARENT_ID VARCHAR(20)
132
			SET @PARENT_ID =(SELECT REQ_PARENT_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
133
			IF(EXISTS(SELECT PO_ID FROM dbo.TR_PO_MASTER WHERE REQ_DOC_ID=@PARENT_ID AND AUTH_STATUS='A'))
134
			BEGIN
135
				DECLARE lstPO  CURSOR FOR
136
				SELECT PO_ID FROM dbo.TR_PO_MASTER WHERE REQ_DOC_ID=@PARENT_ID
137
				OPEN lstPO
138

    
139
				DECLARE @PO_ID VARCHAR(20),@TOTAL_ADD DECIMAL(18,2)
140

    
141
				FETCH NEXT FROM lstPO INTO @PO_ID
142
				WHILE @@FETCH_STATUS =0
143
				BEGIN
144
					
145
					SET @TOTAL_ADD = (SELECT SUM(TOTAL_AMT) AS TOTAL FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND HANGHOA_ID IN (SELECT GOODS_ID  FROM dbo.TR_PO_DETAIL WHERE PO_ID=@PO_ID ))
146
					
147
					UPDATE dbo.TR_PO_MASTER SET AMT_ADD =@TOTAL_ADD WHERE PO_ID=@PO_ID
148
						
149
						
150

    
151
					DECLARE @TOTAL_PERCENT INT,@TOTAL_AMT_REMAIN DECIMAL(18,2)
152

    
153

    
154
					SELECT @TOTAL_PERCENT= SUM([PERCENT]) ,@TOTAL_AMT_REMAIN=SUM(ISNULL(AMOUNT,0)) FROM TR_PO_PAYMENT WHERE PO_ID=@PO_ID AND NOT EXISTS (SELECT PAY_ID  FROM dbo.TR_REQ_PAY_SCHEDULE WHERE TR_REQ_PAY_SCHEDULE.PAY_ID =TR_PO_PAYMENT.PAY_ID AND PO_ID =@PO_ID AND AUTH_STATUS_KT='A' AND (TRN_TYPE='PAY' OR TRN_TYPE='ADV') 
155
																									GROUP BY TR_REQ_PAY_SCHEDULE.PAY_ID 
156
																									HAVING SUM(ISNULL(AMT_PAY_REAL,0) + ISNULL(AMT_ADVANCE,0)) >= TR_PO_PAYMENT.AMOUNT)
157
					IF(EXISTS(SELECT PAY_ID FROM TR_PO_PAYMENT WHERE PO_ID=@PO_ID AND NOT EXISTS (SELECT PAY_ID  FROM dbo.TR_REQ_PAY_SCHEDULE WHERE TR_REQ_PAY_SCHEDULE.PAY_ID =TR_PO_PAYMENT.PAY_ID AND PO_ID =@PO_ID AND AUTH_STATUS_KT='A' AND (TRN_TYPE='PAY' OR TRN_TYPE='ADV') 
158
																									GROUP BY TR_REQ_PAY_SCHEDULE.PAY_ID 
159
																									HAVING SUM(ISNULL(AMT_PAY_REAL,0) + ISNULL(AMT_ADVANCE,0)) >= TR_PO_PAYMENT.AMOUNT)))
160

    
161
					BEGIN
162
					UPDATE dbo.TR_PO_PAYMENT SET AMOUNT = ((@TOTAL_AMT_REMAIN + @TOTAL_ADD)/@TOTAL_PERCENT ) * [PERCENT]  WHERE PO_ID=@PO_ID AND NOT EXISTS (SELECT PAY_ID  FROM dbo.TR_REQ_PAY_SCHEDULE WHERE TR_REQ_PAY_SCHEDULE.PAY_ID =TR_PO_PAYMENT.PAY_ID AND PO_ID =@PO_ID AND AUTH_STATUS_KT='A' AND (TRN_TYPE='PAY' OR TRN_TYPE='ADV') 
163
																									GROUP BY TR_REQ_PAY_SCHEDULE.PAY_ID 
164
																									HAVING SUM(ISNULL(AMT_PAY_REAL,0) + ISNULL(AMT_ADVANCE,0)) >= TR_PO_PAYMENT.AMOUNT)
165
					END
166
					FETCH NEXT FROM lstPO INTO @PO_ID
167
				END
168

    
169
			END
170

    
171

    
172
		END
173
		ELSE IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND  TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK')))
174
			EXEC dbo.TR_REQ_DOC_Ins_To_PO @p_TR_REQ_ID = @p_REQ_ID -- varchar(15)
175
						
176
		SET @Result='0'
177
	END
178
	ELSE
179
		SET @Result='1'
180
	
181

    
182

    
183
	IF @@Error <> 0 GOTO ABORT
184
			
185
COMMIT TRANSACTION
186
SELECT @Result as Result , @ROLE_USER_NOTIFI AS  ROLE_NOTIFI, '' ErrorDesc
187
RETURN '0'
188
ABORT:
189
BEGIN
190
	
191
		ROLLBACK TRANSACTION
192
		SELECT '-1' as Result, '' ROLE_NOTIFI ,'' ErrorDesc
193
		RETURN '-1'
194
End
195

    
196

    
197

    
198

    
199