Project

General

Profile

TR_PO_APP.txt

Luc Tran Van, 12/29/2020 11:30 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
	IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@P_PO_ID AND AUTH_STATUS ='R'))
21
		BEGIN
22
			ROLLBACK TRANSACTION
23
			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
24
			RETURN '-1'
25
	END
26
	IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@P_PO_ID AND AUTH_STATUS ='E'))
27
		BEGIN
28
			ROLLBACK TRANSACTION
29
			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
30
			RETURN '-1'
31
	END
32
	UPDATE TR_PO_MASTER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
33
	WHERE PO_ID = @P_PO_ID
34
	IF @@Error <> 0 GOTO ABORT
35
	DECLARE @L_TRADE_ID VARCHAR(15),
36
	 @L_QUANTITY INT,
37
	 @L_PRICE DECIMAL(18,0), @CONTRACT_DT VARCHAR(15)
38
	DECLARE @L_PLAN_ID VARCHAR(15)
39
	
40
	DECLARE @l_SUMQUANTITY DECIMAL(10,0), @l_SUMAMT DECIMAL(10,0)
41
	DECLARE @lst_PLANID TABLE(PLAN_ID VARCHAR(15))
42

    
43
	DECLARE TRADE_CURSOR CURSOR FOR
44
	SELECT A.TRADE_ID,A.PLAN_ID,A.QUANTITY,A.PRICE, A.CONTRACT_DT
45
	FROM TR_PO_DETAIL A WHERE A.PO_ID = @P_PO_ID
46

    
47
	OPEN TRADE_CURSOR
48
	PRINT 'DETAIL'
49
	FETCH NEXT FROM TRADE_CURSOR INTO @L_TRADE_ID,@L_PLAN_ID,@L_QUANTITY,@L_PRICE,@CONTRACT_DT
50
	WHILE @@FETCH_STATUS = 0
51
	BEGIN
52

    
53
		IF @L_TRADE_ID IS NOT NULL AND LEN(@L_TRADE_ID)  <>  0
54
		BEGIN
55
			PRINT 'UPDATE_TRADE'
56
			--DAO THEM DIEU KIEN RECORD STATUS CHO TH HUY PO
57
			SELECT @l_SUMQUANTITY = SUM(ISNULL(QUANTITY,0))
58
			FROM TR_PO_DETAIL WHERE PLAN_ID = @L_PLAN_ID AND TRADE_ID = @L_TRADE_ID AND RECORD_STATUS='1'
59
			--UPDATE PL_TRADEDETAIL SET QUANTITY_EXE = (QUANTITY_EXE + CONVERT(INT,@L_QUANTITY)) WHERE TRADE_ID = @L_TRADE_ID
60
			--UPDATE PL_TRADEDETAIL SET QUANTITY_EXE = @l_SUMQUANTITY	WHERE TRADE_ID = @L_TRADE_ID
61
		END
62

    
63
		--CAP NHAT SO LUONG DA MUA TRONG HOP DONG THIEUVQ 14092016
64
		IF @CONTRACT_DT <> '' AND @CONTRACT_DT IS NOT NULL
65
		BEGIN
66
			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')
67
			WHERE CD_ID = @CONTRACT_DT
68
		END
69

    
70
		--LUU LAI DANH SACH CAC KE HOACH DUOC GOI TRONG PO
71
		IF NOT EXISTS(SELECT * FROM @lst_PLANID WHERE PLAN_ID = @L_PLAN_ID)
72
		INSERT INTO @lst_PLANID VALUES(@L_PLAN_ID)
73

    
74
	-- TRU TIEN CHO KE HOACH
75
		--PRINT @L_PLAN_ID
76
		--PRINT @L_QUANTITY
77
		----UPDATE PL_MASTER SET TOTAL_AMT = (TOTAL_AMT - CONVERT(INT,@L_QUANTITY) * @L_PRICE) WHERE PLAN_ID = @L_PLAN_ID
78
		--UPDATE PL_MASTER SET TOTAL_AMT = (TOTAL_AMT - CONVERT(INT,@L_QUANTITY) * @L_PRICE) WHERE PLAN_ID = @L_PLAN_ID		
79
		--IF @@Error <> 0 GOTO ABORT
80
		FETCH NEXT FROM TRADE_CURSOR INTO @L_TRADE_ID,@L_PLAN_ID,@L_QUANTITY,@L_PRICE, @CONTRACT_DT
81
	END
82
	CLOSE TRADE_CURSOR
83
	DEALLOCATE TRADE_CURSOR
84

    
85
	--TINH TONG TIEN DA THUC HIEN TREN KE HOACH TRONG PO
86
	SET @L_PLAN_ID = '';
87
	DECLARE PLCUR CURSOR FOR SELECT * FROM @lst_PLANID
88
	OPEN PLCUR
89
	FETCH NEXT FROM PLCUR INTO @L_PLAN_ID
90
	WHILE @@FETCH_STATUS = 0
91
	BEGIN
92
		--UPDATE PL_MASTER SET TOTAL_AMT = (SELECT SUM(ISNULL(QUANTITY,0)*ISNULL(PRICE,0)) 
93
											--FROM TR_PO_DETAIL WHERE PLAN_ID = @L_PLAN_ID AND RECORD_STATUS='1')
94
		--WHERE PLAN_ID = @L_PLAN_ID
95

    
96
		FETCH NEXT FROM PLCUR INTO @L_PLAN_ID
97
	END
98
	CLOSE PLCUR
99
	DEALLOCATE PLCUR
100
	-- TRU SO LUONG TRONG CHI TIET KE HOACH
101
	-- INSERT VAO LOG
102
	INSERT INTO dbo.PL_PROCESS
103
	(
104
						REQ_ID,
105
						PROCESS_ID,
106
						CHECKER_ID,
107
						APPROVE_DT,
108
						PROCESS_DESC,NOTES
109
					)
110
					VALUES
111
					(   @p_PO_ID,        -- REQ_ID - varchar(15)
112
						'APP',        -- PROCESS_ID - varchar(10)
113
						@P_CHECKER_ID,        -- CHECKER_ID - varchar(15)
114
						GETDATE(), -- APPROVE_DT - datetime
115
					   N'Phê duyệt phiếu thành công' ,N'Phê duyệt PO')		
116
COMMIT TRANSACTION
117
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
118
RETURN '0'
119
ABORT:
120
BEGIN
121
		PRINT 'ERROR'
122
		ROLLBACK TRANSACTION
123
		CLOSE TRADE_CURSOR
124
		DEALLOCATE TRADE_CURSOR
125
		SELECT '-1' as Result, '' ErrorDesc
126
		RETURN '-1'
127
End
128

    
129

    
130

    
131

    
132

    
133