Project

General

Profile

ENTRY_DT_IMPORT.txt

Luc Tran Van, 11/09/2022 09:32 AM

 
1
ALTER   PROC [dbo].[TR_REQ_ENTRY_DT_Import] (
2
	@p_XMP_TEMP_DATA_ENTRIES XML = NULL
3
)
4
AS
5
BEGIN
6

    
7
	DECLARE @tmpEntryDT TABLE(
8
		STT INT IDENTITY(6, 1) PRIMARY KEY,
9
		ENTRY_PAIR VARCHAR(15),
10
		DR_CR_NAME  nVARCHAR(250),
11
		ACCT  VARCHAR(15),
12
		ACCT_NAME NVARCHAR(250),
13
		AMT DECIMAL(18, 0),
14
		BRANCH_ID VARCHAR(20),
15
		BRANCH_CODE VARCHAR(20),
16
		BRANCH_NAME nVARCHAR(250),
17
		DEP_ID VARCHAR(15),
18
		DEP_CODE VARCHAR(15),
19
		DEP_NAME NVARCHAR(250),
20
		TRN_DESC NVARCHAR(255)
21
	)
22

    
23
	DECLARE @hdoc INT
24
	EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP_DATA_ENTRIES
25
	
26
	INSERT INTO @tmpEntryDT
27
	SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2)
28
	WITH (
29
		ENTRY_PAIR VARCHAR(15),
30
		DR_CR_NAME  nVARCHAR(250),
31
		ACCT  VARCHAR(15),
32
		ACCT_NAME NVARCHAR(250),
33
		AMT DECIMAL(18, 0),
34
		BRANCH_ID VARCHAR(20),
35
		BRANCH_CODE VARCHAR(20),
36
		BRANCH_NAME nVARCHAR(250),
37
		DEP_ID VARCHAR(15),
38
		DEP_CODE VARCHAR(15),
39
		DEP_NAME NVARCHAR(250),
40
		TRN_DESC NVARCHAR(255)
41
	)
42
	
43
	------------------------------------------------ validate begin ------------------------------------------------
44
	-- Phần kiểm tra không để trống có thể kiểm tra ở phía front-end,
45
	-- thông qua biến bakValidation
46

    
47
	DECLARE @ERROR_MESSAGE nvarchar(MAX)
48

    
49
	-- Mã đơn vị
50
	SELECT @ERROR_MESSAGE = STUFF((
51
	SELECT ', dòng ' + CAST(T.STT AS VARCHAR(15)) FROM @tmpEntryDT T
52
	WHERE 
53
			NOT EXISTS (	SELECT BRANCH_CODE
54
							FROM dbo.CM_BRANCH
55
							WHERE BRANCH_CODE = T.BRANCH_CODE OR T.ACCT_NAME = N'Tổng cộng'
56
						)
57
		FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
58
	IF(LEN(@ERROR_MESSAGE) > 0)
59
	BEGIN
60
		SET @ERROR_MESSAGE = N'Mã đơn vị không có trong hệ thống tại: ' + @ERROR_MESSAGE
61
		EXEC sp_seterrormessage @ERROR_MESSAGE
62
		RETURN '-1'
63
	END
64
	/*
65
	--Mã phòng ban không thuộc đơn vị
66
	SELECT @ERROR_MESSAGE = STUFF((
67
	SELECT ', dòng ' + CAST(T.STT AS VARCHAR(15)) FROM @tmpEntryDT T
68
	WHERE NOT EXISTS (SELECT A.DEP_CODE
69
			FROM CM_DEPARTMENT A
70
				LEFT JOIN dbo.CM_BRANCH B ON B.BRANCH_CODE = T.BRANCH_CODE
71
			WHERE A.BRANCH_ID = B.BRANCH_ID AND A.DEP_CODE = T.DEP_CODE
72
			)
73
		FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
74
	IF(LEN(@ERROR_MESSAGE) > 0)
75
	BEGIN
76
		SET @ERROR_MESSAGE = N'Mã phòng ban không nằm trong đơn vị được chọn tại: ' + @ERROR_MESSAGE
77
		EXEC sp_seterrormessage @ERROR_MESSAGE
78
		RETURN '-1'
79
	END
80
	*/
81

    
82
	
83
	------------------------------------------------ validate end ------------------------------------------------
84

    
85
	SELECT T.STT, 
86
	T.ENTRY_PAIR,
87
	CM.CONTENT AS DR_CR_NAME, 
88
	CM.CDVAL AS DR_CR, CM.CONTENT AS DR_CR_NAME,
89
	T.ACCT, T.ACCT_NAME, 
90
	T.AMT,
91
	B.BRANCH_ID, B.BRANCH_CODE, B.BRANCH_CODE + ' - ' + B.BRANCH_NAME AS BR_FULLNAME,
92
	D.DEP_ID, D.DEP_CODE, d.DEP_NAME as DP_FULLNAME,
93
	T.TRN_DESC
94
	FROM  CM_BRANCH B
95
		INNER JOIN @tmpEntryDT T ON T.BRANCH_CODE = B.BRANCH_CODE
96
		LEFT JOIN CM_DEPARTMENT D ON T.DEP_CODE = D.DEP_CODE AND T.BRANCH_ID = D.BRANCH_ID --AND T.DEP_NAME = D.DEP_NAME
97
		LEFT JOIN CM_ALLCODE CM ON T.DR_CR_NAME = CM.CONTENT AND CM.CDNAME = 'DR_CR' AND CM.CDTYPE = 'REQ_PAY_ENTRIES'
98
	WHERE T.ACCT_NAME <> N'Tổng cộng'
99
	ORDER BY T.STT ASC
100

    
101
END