Project

General

Profile

PO APPR.txt

Luc Tran Van, 02/04/2021 02:09 PM

 
1

    
2

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

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

    
20
BEGIN TRANSACTION
21
		DECLARE @ROLE_ID VARCHAR(50)
22
		SET @ROLE_ID =(SELECT RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
23
		SET  @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
24
		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'))
25
		BEGIN
26
			PRINT @ROLE_ID
27
		END
28
		ELSE
29
		BEGIN
30
			SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
31
			IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
32
			BEGIN
33
					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))
34
			END
35
		END
36
		--IF(@ROLE_ID NOT IN ('TPGD','PPGD','PP','TP','GDDV','PGD','KTT','TP','PP','TPTC','TC','GDK'))
37
		--BEGIN
38
		--	ROLLBACK TRANSACTION
39
		--	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
40
		--	RETURN '-1'
41
		--END
42
	IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@P_PO_ID AND AUTH_STATUS ='R'))
43
		BEGIN
44
			ROLLBACK TRANSACTION
45
			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
46
			RETURN '-1'
47
	END
48
	IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@P_PO_ID AND AUTH_STATUS ='E'))
49
		BEGIN
50
			ROLLBACK TRANSACTION
51
			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
52
			RETURN '-1'
53
	END
54
	IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@P_PO_ID AND AUTH_STATUS ='A'))
55
		BEGIN
56
			ROLLBACK TRANSACTION
57
			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
58
			RETURN '-1'
59
		END
60
		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'))
61
		BEGIN
62
			ROLLBACK TRANSACTION
63
			SELECT '-1' as Result, N'Người duyệt PO phải khác người tạo PO' ErrorDesc
64
			RETURN '-1'
65
		END
66
		
67
	UPDATE TR_PO_MASTER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
68
	WHERE PO_ID = @P_PO_ID
69
	IF @@Error <> 0 GOTO ABORT
70
	DECLARE @L_TRADE_ID VARCHAR(15),
71
	 @L_QUANTITY INT,
72
	 @L_PRICE DECIMAL(18,0), @CONTRACT_DT VARCHAR(15)
73
	DECLARE @L_PLAN_ID VARCHAR(15)
74
	
75
	DECLARE @l_SUMQUANTITY DECIMAL(10,0), @l_SUMAMT DECIMAL(10,0)
76
	DECLARE @lst_PLANID TABLE(PLAN_ID VARCHAR(15))
77

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

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

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

    
98
		--CAP NHAT SO LUONG DA MUA TRONG HOP DONG THIEUVQ 14092016
99
		IF @CONTRACT_DT <> '' AND @CONTRACT_DT IS NOT NULL
100
		BEGIN
101
			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')
102
			WHERE CD_ID = @CONTRACT_DT
103
		END
104

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

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

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

    
131
		FETCH NEXT FROM PLCUR INTO @L_PLAN_ID
132
	END
133
	CLOSE PLCUR
134
	DEALLOCATE PLCUR
135
	-- TRU SO LUONG TRONG CHI TIET KE HOACH
136
	-- INSERT VAO LOG
137
	INSERT INTO dbo.PL_PROCESS
138
	(
139
						REQ_ID,
140
						PROCESS_ID,
141
						CHECKER_ID,
142
						APPROVE_DT,
143
						PROCESS_DESC,NOTES
144
					)
145
					VALUES
146
					(   @p_PO_ID,        -- REQ_ID - varchar(15)
147
						'APP',        -- PROCESS_ID - varchar(10)
148
						@P_CHECKER_ID,        -- CHECKER_ID - varchar(15)
149
						GETDATE(), -- APPROVE_DT - datetime
150
					   N'Phê duyệt phiếu thành công' ,N'Phê duyệt PO')		
151
COMMIT TRANSACTION
152
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
153
RETURN '0'
154
ABORT:
155
BEGIN
156
		PRINT 'ERROR'
157
		ROLLBACK TRANSACTION
158
		CLOSE TRADE_CURSOR
159
		DEALLOCATE TRADE_CURSOR
160
		SELECT '-1' as Result, '' ErrorDesc
161
		RETURN '-1'
162
End
163

    
164

    
165

    
166

    
167

    
168