Project

General

Profile

TR_PO_MASTER_APPR.txt

Luc Tran Van, 02/03/2021 10:29 AM

 
1

    
2
ALTER PROCEDURE [dbo].[TR_PO_MASTER_App]
3
@P_PO_ID VARCHAR(15),
4
@P_AUTH_STATUS VARCHAR(1),
5
@P_CHECKER_ID VARCHAR(12),
6
@P_APPROVE_DT VARCHAR(20)
7

    
8
AS
9
--Validation is here
10
DECLARE @ERRORSYS NVARCHAR(15) = '' 
11
  IF ( NOT EXISTS ( SELECT * FROM TR_PO_MASTER WHERE  PO_ID = @P_PO_ID))
12
	SET @ERRORSYS = 'PO-00001'
13
IF @ERRORSYS <> '' 
14
BEGIN
15
	SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
16
	RETURN '0'
17
END 
18

    
19
BEGIN TRANSACTION
20
		DECLARE @ROLE_ID VARCHAR(50)
21
		SET @ROLE_ID =(SELECT RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
22
		SET  @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
23
		IF(@ROLE_ID IS NOT NULL AND @ROLE_ID <>'' AND @ROLE_ID IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC','PPGD'))
24
		BEGIN
25
			PRINT @ROLE_ID
26
		END
27
		ELSE
28
		BEGIN
29
			SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
30
			IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
31
			BEGIN
32
					SET @ROLE_ID =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID))
33
			END
34
		END
35
		IF(@ROLE_ID NOT IN ('TPGD','PPGD','PP','TP','GDDV','PGD','KTT','TP','PP','TPTC','TC','GDK'))
36
		BEGIN
37
			ROLLBACK TRANSACTION
38
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không nằm trong nhóm quyền được phép phê duyệt hợp đồng' ErrorDesc
39
			RETURN '-1'
40
		END
41
	IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@P_PO_ID AND AUTH_STATUS ='R'))
42
		BEGIN
43
			ROLLBACK TRANSACTION
44
			SELECT '-1' as Result, N'PO đang bị trả về! Vui lòng đợi nhân viên xử lý và gửi phê duyệt lại' ErrorDesc
45
			RETURN '-1'
46
	END
47
	IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@P_PO_ID AND AUTH_STATUS ='E'))
48
		BEGIN
49
			ROLLBACK TRANSACTION
50
			SELECT '-1' as Result, N'PO đang trong tình trạng lưu nháp! Vui lòng đợi nhân viên xử lý và gửi phê duyệt lại' ErrorDesc
51
			RETURN '-1'
52
	END
53
	IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@P_PO_ID AND AUTH_STATUS ='A'))
54
		BEGIN
55
			ROLLBACK TRANSACTION
56
			SELECT '-1' as Result, N'PO này đã được phê duyệt trước đó. Bạn không được phê duyệt lại' ErrorDesc
57
			RETURN '-1'
58
		END
59
		IF((SELECT MAKER_ID FROM TR_PO_MASTER WHERE CONTRACT_ID =@P_PO_ID)=@p_CHECKER_ID AND @ROLE_ID NOT IN ('TPGD','PPGD','PP','TP','GDDV','PGD','KTT','TP','PP','TPTC','TC','GDK'))
60
		BEGIN
61
			ROLLBACK TRANSACTION
62
			SELECT '-1' as Result, N'Người duyệt PO phải khác người tạo PO' ErrorDesc
63
			RETURN '-1'
64
		END
65
		
66
	UPDATE TR_PO_MASTER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
67
	WHERE PO_ID = @P_PO_ID
68
	IF @@Error <> 0 GOTO ABORT
69
	DECLARE @L_TRADE_ID VARCHAR(15),
70
	 @L_QUANTITY INT,
71
	 @L_PRICE DECIMAL(18,0), @CONTRACT_DT VARCHAR(15)
72
	DECLARE @L_PLAN_ID VARCHAR(15)
73
	
74
	DECLARE @l_SUMQUANTITY DECIMAL(10,0), @l_SUMAMT DECIMAL(10,0)
75
	DECLARE @lst_PLANID TABLE(PLAN_ID VARCHAR(15))
76

    
77
	DECLARE TRADE_CURSOR CURSOR FOR
78
	SELECT A.TRADE_ID,A.PLAN_ID,A.QUANTITY,A.PRICE, A.CONTRACT_DT
79
	FROM TR_PO_DETAIL A WHERE A.PO_ID = @P_PO_ID
80

    
81
	OPEN TRADE_CURSOR
82
	PRINT 'DETAIL'
83
	FETCH NEXT FROM TRADE_CURSOR INTO @L_TRADE_ID,@L_PLAN_ID,@L_QUANTITY,@L_PRICE,@CONTRACT_DT
84
	WHILE @@FETCH_STATUS = 0
85
	BEGIN
86

    
87
		IF @L_TRADE_ID IS NOT NULL AND LEN(@L_TRADE_ID)  <>  0
88
		BEGIN
89
			PRINT 'UPDATE_TRADE'
90
			--DAO THEM DIEU KIEN RECORD STATUS CHO TH HUY PO
91
			SELECT @l_SUMQUANTITY = SUM(ISNULL(QUANTITY,0))
92
			FROM TR_PO_DETAIL WHERE PLAN_ID = @L_PLAN_ID AND TRADE_ID = @L_TRADE_ID AND RECORD_STATUS='1'
93
			--UPDATE PL_TRADEDETAIL SET QUANTITY_EXE = (QUANTITY_EXE + CONVERT(INT,@L_QUANTITY)) WHERE TRADE_ID = @L_TRADE_ID
94
			--UPDATE PL_TRADEDETAIL SET QUANTITY_EXE = @l_SUMQUANTITY	WHERE TRADE_ID = @L_TRADE_ID
95
		END
96

    
97
		--CAP NHAT SO LUONG DA MUA TRONG HOP DONG THIEUVQ 14092016
98
		IF @CONTRACT_DT <> '' AND @CONTRACT_DT IS NOT NULL
99
		BEGIN
100
			UPDATE TR_CONTRACT_DT SET QUANTITY_USE = (SELECT SUM(A.QUANTITY) FROM TR_PO_DETAIL A WHERE A.CONTRACT_DT = @CONTRACT_DT AND RECORD_STATUS='1')
101
			WHERE CD_ID = @CONTRACT_DT
102
		END
103

    
104
		--LUU LAI DANH SACH CAC KE HOACH DUOC GOI TRONG PO
105
		IF NOT EXISTS(SELECT * FROM @lst_PLANID WHERE PLAN_ID = @L_PLAN_ID)
106
		INSERT INTO @lst_PLANID VALUES(@L_PLAN_ID)
107

    
108
	-- TRU TIEN CHO KE HOACH
109
		--PRINT @L_PLAN_ID
110
		--PRINT @L_QUANTITY
111
		----UPDATE PL_MASTER SET TOTAL_AMT = (TOTAL_AMT - CONVERT(INT,@L_QUANTITY) * @L_PRICE) WHERE PLAN_ID = @L_PLAN_ID
112
		--UPDATE PL_MASTER SET TOTAL_AMT = (TOTAL_AMT - CONVERT(INT,@L_QUANTITY) * @L_PRICE) WHERE PLAN_ID = @L_PLAN_ID		
113
		--IF @@Error <> 0 GOTO ABORT
114
		FETCH NEXT FROM TRADE_CURSOR INTO @L_TRADE_ID,@L_PLAN_ID,@L_QUANTITY,@L_PRICE, @CONTRACT_DT
115
	END
116
	CLOSE TRADE_CURSOR
117
	DEALLOCATE TRADE_CURSOR
118

    
119
	--TINH TONG TIEN DA THUC HIEN TREN KE HOACH TRONG PO
120
	SET @L_PLAN_ID = '';
121
	DECLARE PLCUR CURSOR FOR SELECT * FROM @lst_PLANID
122
	OPEN PLCUR
123
	FETCH NEXT FROM PLCUR INTO @L_PLAN_ID
124
	WHILE @@FETCH_STATUS = 0
125
	BEGIN
126
		--UPDATE PL_MASTER SET TOTAL_AMT = (SELECT SUM(ISNULL(QUANTITY,0)*ISNULL(PRICE,0)) 
127
											--FROM TR_PO_DETAIL WHERE PLAN_ID = @L_PLAN_ID AND RECORD_STATUS='1')
128
		--WHERE PLAN_ID = @L_PLAN_ID
129

    
130
		FETCH NEXT FROM PLCUR INTO @L_PLAN_ID
131
	END
132
	CLOSE PLCUR
133
	DEALLOCATE PLCUR
134
	-- TRU SO LUONG TRONG CHI TIET KE HOACH
135
	-- INSERT VAO LOG
136
	INSERT INTO dbo.PL_PROCESS
137
	(
138
						REQ_ID,
139
						PROCESS_ID,
140
						CHECKER_ID,
141
						APPROVE_DT,
142
						PROCESS_DESC,NOTES
143
					)
144
					VALUES
145
					(   @p_PO_ID,        -- REQ_ID - varchar(15)
146
						'APP',        -- PROCESS_ID - varchar(10)
147
						@P_CHECKER_ID,        -- CHECKER_ID - varchar(15)
148
						GETDATE(), -- APPROVE_DT - datetime
149
					   N'Phê duyệt phiếu thành công' ,N'Phê duyệt PO')		
150
COMMIT TRANSACTION
151
SELECT '0' as Result, N'PO số: '+(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID =@P_PO_ID)+N' đã được phê duyệt thành công. Bạn có thể thực hiện thanh toán hoặc tạm ứng cho PO' ErrorDesc
152
RETURN '0'
153
ABORT:
154
BEGIN
155
		PRINT 'ERROR'
156
		ROLLBACK TRANSACTION
157
		CLOSE TRADE_CURSOR
158
		DEALLOCATE TRADE_CURSOR
159
		SELECT '-1' as Result, '' ErrorDesc
160
		RETURN '-1'
161
End
162

    
163

    
164

    
165

    
166

    
167