Project

General

Profile

SCRIPT UPDATE 09032021 LIVE.txt

Luc Tran Van, 03/09/2021 03:12 PM

 
1
ALTER PROCEDURE [dbo].[rpt_PAY_LIET_KE_CHUNG_TU_BanViet] @p_DATE VARCHAR(10), @p_BRANCH_ID VARCHAR(15) ='', @p_MAKER_ID VARCHAR(15) =NULL
2
AS
3

    
4
-- LẤY MỖI SỐ REF NO RA
5
--DECLARE @ET TABLE (REF_NO VARCHAR(25), TK_NO VARCHAR(15), TK_CO VARCHAR(15), BRN_NO VARCHAR(15), BRANCH_CO VARCHAR(15), DEP_NO VARCHAR(15), DEP_CO VARCHAR(15))
6
--SELECT * FROM PAY_ENTRIES_POST WHERE TRN_ID='TRPTF0000000018' AND REF_NO ='069CCfffyutmyiiii09'
7
--1 LẤY DANH SÁCH HẠCH TOÁN THEO TỪNG REF NO 
8
--
9
DECLARE @REF_NO VARCHAR(45), @DR_ACCT VARCHAR(15), @CR_ACCT VARCHAR(15), @TRN_DATE VARCHAR(15), @TRN_ID VARCHAR(15), @DR_BRN VARCHAR(15), @CR_BRN VARCHAR(15), @DR_DEP VARCHAR(15), @CR_DEP VARCHAR(15),
10
@TRN_DESC VARCHAR(250),@MAKER_ID VARCHAR(15), @CHECKER_ID VARCHAR(15),@ET_ID VARCHAR(15), @AMT_DRCR DECIMAL(18,0), @INDEX_STT INT =0
11
DECLARE @TABLE_REF_NO TABLE (ID INT IDENTITY(1,1),REF_NO VARCHAR(25), TRN_ID VARCHAR(15))
12
INSERT INTO @TABLE_REF_NO SELECT DISTINCT A.REF_NO, TRN_ID FROM PAY_ENTRIES_POST A
13
WHERE (A.REF_NO IS NOT NULL AND A.REF_NO <> '' )
14
AND (CONVERT(DATE, A.TRN_DATE, 103) = CONVERT(DATE, @p_DATE, 103) OR @p_DATE IS NULL OR @p_DATE ='')
15
AND A.DO_BRN=@p_BRANCH_ID
16
AND(A.MAKER_ID=@p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID='')
17
AND (A.EXP_TO_CORE='Y' OR A.EXP_TO_CORE ='1')
18

    
19
-- KHAI BAO TABLE CHUA THÔNG TIN HẠCH TOÁN THEO CẤU TRÚC NỢ - CÓ CHUNG 1 HÀNG
20
DECLARE @MW_ENTRIES_POST TABLE (ID INT IDENTITY(1,1),TRN_DATE VARCHAR(15), TRN_ID VARCHAR(15),ET_ID VARCHAR(15), DR_BRANCH_CODE VARCHAR(15),DR_BRN VARCHAR(15), CR_BRANCH_CODE VARCHAR(15),
21
		CR_BRN VARCHAR(15),AMT DECIMAL(18,0),TRN_DESC NVARCHAR(1000),MAKER_ID VARCHAR(15),CHECKER_ID VARCHAR(15), DO_BRN VARCHAR(15),EXP_TO_CORE VARCHAR(1),REF_NO VARCHAR(50), CRDR VARCHAR(15), STT INT)
22
--TABLE CHUA DANH SACH HACH TOAN CÓ
23
DECLARE @ET_CR_DR TABLE (ID INT IDENTITY(1,1),TK VARCHAR(15), DV VARCHAR(15), AMT DECIMAL(18,0),ET_ID VARCHAR(15))
24
WHILE((SELECT COUNT(*) FROM @TABLE_REF_NO) >0)
25
BEGIN
26
	SET @REF_NO =(SELECT TOP 1 REF_NO FROM @TABLE_REF_NO)
27
	PRINT @REF_NO
28
	IF(NOT EXISTS(SELECT * FROM @MW_ENTRIES_POST WHERE TRN_ID =(SELECT TOP 1 TRN_ID WHERE REF_NO =@REF_NO)))
29
	BEGIN
30
		SET @INDEX_STT = @INDEX_STT +1
31
	END
32
	SET @TRN_DATE =(SELECT TOP 1 FORMAT(TRN_DATE,'dd/MM/yyyy') FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO)
33
	PRINT @TRN_DATE
34
	SET @TRN_ID =(SELECT TOP 1 TRN_ID FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO)
35
	SET @TRN_DESC =(SELECT TOP 1 TRN_DESC FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO)
36
	SET @MAKER_ID =(SELECT TOP 1 MAKER_ID FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO)
37
	SET @CHECKER_ID =(SELECT TOP 1 CHECKER_ID FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO)
38
	--SET @AMT =(SELECT TOP 1 AMT FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO)
39
	IF((SELECT COUNT(*)  FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR ='D')=1)
40
	BEGIN
41
		-- TAI KHOAN NO
42
		SET @DR_ACCT =(SELECT TOP 1 ACCT FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR ='D')
43
		SET @DR_BRN =(SELECT TOP 1 BRN_ID FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR ='D')
44
		--SET @DR_BRN =(SELECT TOP 1 DEPT_ID FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR ='D')
45
		SET @ET_ID = (SELECT TOP 1 ET_ID FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR ='D')
46
		SET @AMT_DRCR =(SELECT TOP 1 AMT FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR='D')
47
		-- ĐỔ DỮ LIỆU VÀO BẢNG CHƯA HẠCH TOÁN CÓ
48
		INSERT INTO @ET_CR_DR SELECT ACCT,BRN_ID,AMT ,ET_ID FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR ='C'
49
		--SELECT * FROM @ET_CO
50
		INSERT INTO @MW_ENTRIES_POST VALUES (@TRN_DATE,@TRN_ID,(SELECT TOP 1 ET_ID FROM @ET_CR_DR) ,@DR_ACCT ,@DR_BRN,'','',@AMT_DRCR,
51
			@TRN_DESC,UPPER(@MAKER_ID),UPPER(@CHECKER_ID),'DV0001','Y',@REF_NO,'D',@INDEX_STT)
52
		WHILE ((SELECT COUNT(*) FROM @ET_CR_DR)>0)
53
		BEGIN
54
			INSERT INTO @MW_ENTRIES_POST VALUES (@TRN_DATE,@TRN_ID,(SELECT TOP 1 ET_ID FROM @ET_CR_DR) ,'' ,'',(SELECT TOP 1 TK FROM @ET_CR_DR),(SELECT TOP 1 DV FROM @ET_CR_DR),(SELECT TOP 1 AMT FROM @ET_CR_DR),
55
			@TRN_DESC,UPPER(@MAKER_ID),UPPER(@CHECKER_ID),'DV0001','Y',@REF_NO,'C',@INDEX_STT)
56
			DELETE FROM @ET_CR_DR WHERE ID =(SELECT TOP 1 ID FROM @ET_CR_DR)
57
		END
58
	END
59
	ELSE
60
	BEGIN -- XỬ LÝ NẾU 1 CÓ NHIỀU NỢ
61
		-- TAI KHOAN NO
62
		SET @CR_ACCT =(SELECT TOP 1 ACCT FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR ='C')
63
		SET @CR_BRN =(SELECT TOP 1 BRN_ID FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR ='C')
64
		SET @CR_DEP =(SELECT TOP 1 DEPT_ID FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR ='C')
65
		SET @AMT_DRCR =(SELECT TOP 1 AMT FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR='C')
66
		-- ĐỔ DỮ LIỆU VÀO BẢNG CHƯA HẠCH TOÁN CÓ
67
		INSERT INTO @ET_CR_DR SELECT ACCT,BRN_ID,AMT,ET_ID  FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_NO AND DRCR ='D'
68
		INSERT INTO @MW_ENTRIES_POST VALUES (@TRN_DATE,@TRN_ID,(SELECT TOP 1 ET_ID FROM @ET_CR_DR),'','',@CR_ACCT,@CR_BRN,@AMT_DRCR,
69
			@TRN_DESC,UPPER(@MAKER_ID),UPPER(@CHECKER_ID),'DV0001','Y',@REF_NO,'C',@INDEX_STT)
70
		WHILE ((SELECT COUNT(*) FROM @ET_CR_DR)>0)
71
		BEGIN
72
			INSERT INTO @MW_ENTRIES_POST VALUES (@TRN_DATE,@TRN_ID,(SELECT TOP 1 ET_ID FROM @ET_CR_DR) ,(SELECT TOP 1 TK FROM @ET_CR_DR) ,(SELECT TOP 1 DV FROM @ET_CR_DR),'','',(SELECT TOP 1 AMT FROM @ET_CR_DR),
73
			@TRN_DESC,UPPER(@MAKER_ID),UPPER(@CHECKER_ID),'DV0001','Y',@REF_NO,'D',@INDEX_STT)
74
			DELETE FROM @ET_CR_DR WHERE ID =(SELECT TOP 1 ID FROM @ET_CR_DR)
75
		END
76
	END
77
DELETE FROM @TABLE_REF_NO WHERE ID =(SELECT TOP 1 ID FROM @TABLE_REF_NO)
78
END -- KET THU WHILE
79
--LAY MA DON VI CUA HS NEU TIM THEO HS
80
IF @p_BRANCH_ID='HS' BEGIN
81
    SELECT @p_BRANCH_ID=BRANCH_ID FROM CM_BRANCH WHERE BRANCH_TYPE='HS';
82
END;
83

    
84
--SELECT CC.STT, CC.TRN_ID, CC.ET_ID, CC.DBRANCH_CODE, CC.CBRANCH_CODE, CC.CR_ACCT, CC.CR_BRN, CC.DR_ACCT, CC.DR_BRN, CC.AMT, CC.TRN_DESC,
85
--       CC.MAKER_ID, CC.CHECKER_ID, CC.CR_BRANCH_CODE, CC.DR_BRANCH_CODE, CC.MAPHONGBAN, CC.CCY, CC.REF_NO, CC.TRN_DATE
86
--FROM(
87
--    SELECT ROW_NUMBER() OVER (ORDER BY MIN(A.TRN_DATE)) AS STT, MIN(A.TRN_DATE) AS TRN_DATE,A.TRN_ID,MAX(A.ET_ID) AS ET_ID,
88
--	D.BRANCH_CODE AS DBRANCH_CODE,C.BRANCH_CODE AS CBRANCH_CODE,A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, SUM(A.AMT) AS AMT, UPPER(A.TRN_DESC) AS TRN_DESC,
89
--    UPPER(A.MAKER_ID) AS MAKER_ID, UPPER(A.CHECKER_ID) AS CHECKER_ID,'' AS CR_BRANCH_CODE,A.DR_ACCT+' '+D.BRANCH_CODE AS DR_BRANCH_CODE,
90
--	'' AS MAPHONGBAN, 'VND' AS CCY, A.REF_NO as REF_NO
91
--    FROM @MW_ENTRIES_POST A
92
--	     --LEFT JOIN dbo.MW_MAST_BAL B ON A.MAST_PRICE_ID=B.PRICE_ID
93
--         LEFT JOIN CM_BRANCH C ON C.BRANCH_ID=A.CR_BRN
94
--         LEFT JOIN CM_BRANCH D ON D.BRANCH_ID=A.DR_BRN
95
--	WHERE 1=1
96
--	AND CONVERT(DATE, A.TRN_DATE, 103)= CONVERT(DATE, @p_DATE, 103) AND A.DO_BRN=@p_BRANCH_ID
97
--    AND(A.MAKER_ID=@p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID='')
98
--	AND (A.EXP_TO_CORE='Y' OR A.EXP_TO_CORE ='1')
99
--	GROUP BY A.TRN_ID, A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, A.TRN_DESC,  CONVERT(DATE, A.TRN_DATE, 103), A.MAKER_ID, A.CHECKER_ID, D.BRANCH_CODE,C.BRANCH_CODE,A.REF_NO
100
--    UNION ALL
101
--    SELECT ROW_NUMBER() OVER (ORDER BY MIN(A.TRN_DATE)) AS STT, 
102
--	MIN(A.TRN_DATE) AS TRN_DATE,
103
--	A.TRN_ID,
104
--	MAX(A.ET_ID) AS ET_ID,
105
--	D.BRANCH_CODE AS DBRANCH_CODE,C.BRANCH_CODE AS CBRANCH_CODE,
106
--        --A.ASSET_ID,
107
--        --A.TRN_TYPE,
108
--        A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, SUM(A.AMT) AS AMT, UPPER(A.TRN_DESC) AS TRN_DESC,
109
--        --A.REF_NO,
110
--        UPPER(A.MAKER_ID) AS MAKER_ID, UPPER(A.CHECKER_ID) AS CHECKER_ID,
111
--        --B.ASSET_CODE,
112
--        --B.ASSET_NAME,
113
--        A.CR_ACCT+' '+C.BRANCH_CODE AS CR_BRANCH_CODE,
114
--        '' AS CR_BRANCH_CODE,
115
--        '' AS MAPHONGBAN, 'VND' AS CCY,
116
--		A.REF_NO as REF_NO
117
--       FROM @MW_ENTRIES_POST A
118
--        --LEFT JOIN dbo.MW_MAST_BAL B ON A.MAST_PRICE_ID=B.PRICE_ID
119
--         LEFT JOIN CM_BRANCH C ON C.BRANCH_ID=A.CR_BRN
120
--         LEFT JOIN CM_BRANCH D ON D.BRANCH_ID=A.DR_BRN
121
--    --LEFT JOIN CM_DEPARTMENT CD ON CD.DEP_ID=A.CR_BRN
122
--    --LEFT JOIN CM_DEPARTMENT DD ON DD.DEP_ID=A.DR_BRN
123
--	WHERE 1=1
124
--	AND CONVERT(DATE, A.TRN_DATE, 103)= CONVERT(DATE, @p_DATE, 103) AND A.DO_BRN=@p_BRANCH_ID
125
--	 AND(A.MAKER_ID=@p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID='')
126
--	AND (A.EXP_TO_CORE='Y' OR A.EXP_TO_CORE ='1')
127
--	  GROUP BY A.TRN_ID, A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, A.TRN_DESC,  CONVERT(DATE, A.TRN_DATE, 103), A.MAKER_ID, A.CHECKER_ID, D.BRANCH_CODE,C.BRANCH_CODE,A.REF_NO
128
--    ) AS CC
129
--ORDER BY cc.STT,CC.ET_ID, CC.CR_BRANCH_CODE, CC.TRN_DATE DESC;
130
SELECT CHAR(10) + A.TRN_DATE + CHAR(10) AS TRN_DATE, CHAR(10) + A.TRN_DESC + CHAR(10) AS TRN_DESC, CHAR(10) + A.TRN_ID + CHAR(10) AS TRN_ID, CHAR(10) + A.REF_NO + CHAR(10) AS REF_NO ,CHAR(10) + REPLACE (FORMAT ((A.AMT),'#,###'),',','.') +',00' + CHAR(10) AS AMT, CHAR(10) + 'VND' + CHAR(10)  AS CCY , 
131
CHAR(10) + REPLACE (FORMAT ((A.AMT),'#,###'),',','.') +',00' + CHAR(10) AS QUY_DOI, 
132
CHAR(10) + A.MAKER_ID + CHAR(10) AS MAKER_ID,CHAR(10)+ A.CHECKER_ID + CHAR(10) AS CHECKER_ID, CHAR(10)+  A.DR_BRANCH_CODE + ' ' + BR.BRANCH_CODE +  CHAR(10) AS DR_BRANCH_CODE  , CHAR(10)+ A.CR_BRANCH_CODE + CHAR(10) AS CR_BRANCH_CODE, CHAR(10) + CONVERT(VARCHAR,A.STT,5) + CHAR(10) AS STT
133
FROM @MW_ENTRIES_POST A
134
LEFT JOIN CM_BRANCH BR ON A.DR_BRN = BR.BRANCH_ID
135
ORDER BY A.REF_NO, A.CRDR DESC
136

    
137

    
138
SELECT N' Ngày lập phiếu: '+ FORMAT (GETDATE(),'dd/MM/yyyy H:mm:ss') AS NGAY_TAO, N'CHI NHÁNH /PGD : '+ (SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_ID) AS DVKD,
139
N'Ngày: '+ FORMAT (GETDATE(),'dd/MM/yyyy') AS NGAY_LAP_PHIEU 
140

    
141
SELECT CHAR(10) +'STT'+ CHAR(10) AS STT,
142
CHAR(10) +N'SỐ CHỨNG TỪ'+ CHAR(10) AS SO_CT,
143
CHAR(10) +N'SỐ GIAO DỊCH / REF NO'+ CHAR(10) AS SO_GD,
144
CHAR(10) +N'DIỄN GIẢI TRANSACTION'+ CHAR(10) AS CORE_NOTE,
145
CHAR(10) +N'THỜI GIAN '+ CHAR(10) AS NGAY_GD,
146
CHAR(10) +N'NỢ '+ CHAR(10) AS [NO],
147
CHAR(10) +N'CÓ '+ CHAR(10) AS [CO],
148
CHAR(10) +N'CCY '+ CHAR(10) AS CCY,
149
CHAR(10) +N'NGUYÊN TỆ '+ CHAR(10) AS NT,
150
CHAR(10) +N'QUY ĐỔI '+ CHAR(10) AS QD,
151
CHAR(10) +N'GDV '+ CHAR(10) AS GDV,
152
CHAR(10) +N'KSV '+ CHAR(10) AS KSV
153
¿
154
ALTER PROCEDURE [dbo].[rpt_LIET_KE_CHUNG_TU_BanViet] @p_DATE VARCHAR(10), @p_BRANCH_ID VARCHAR(15) ='', @p_MAKER_ID VARCHAR(15) =NULL
155
AS
156

    
157
--LAY MA DON VI CUA HS NEU TIM THEO HS
158
IF @p_BRANCH_ID='HS' BEGIN
159
    SELECT @p_BRANCH_ID=BRANCH_ID FROM CM_BRANCH WHERE BRANCH_TYPE='HS';
160
END;
161
SELECT CHAR(10)+ CONVERT(VARCHAR,CC.STT,10) + CHAR(10) AS STT, CHAR(10) + CC.TRN_ID + CHAR(10) AS TRN_ID, CHAR(10)+ CC.ET_ID + CHAR(10) AS ET_ID, CC.DBRANCH_CODE, CC.CBRANCH_CODE, 
162
	   CHAR(10) + CC.CR_ACCT + CHAR(10) AS CR_ACCT , CC.CR_BRN, CHAR(10) + CC.DR_ACCT + CHAR(10) AS DR_ACCT, CC.DR_BRN, CHAR(10) + REPLACE (FORMAT ((CC.AMT),'#,###'),',','.') +',00 ' + CHAR(10)  AS AMT, CHAR(10)+  CC.TRN_DESC + CHAR(10) AS TRN_DESC,
163
       CHAR(10)+ CC.MAKER_ID + CHAR(10) AS MAKER_ID , CHAR(10) + CC.CHECKER_ID + CHAR(10) AS CHECKER_ID , CHAR(10)+ CC.CR_BRANCH_CODE + CHAR(10) AS CR_BRANCH_CODE , CHAR(10)+ CC.DR_BRANCH_CODE + CHAR(10) AS DR_BRANCH_CODE , CC.MAPHONGBAN, CHAR(10)+ CC.CCY+ CHAR(10) AS CCY, CHAR(10) + CC.REF_NO + CHAR(10) AS REF_NO , 
164
	   CHAR(10) + FORMAT(CC.TRN_DATE,'dd/MM/yyyy') + CHAR(10) AS TRN_DATE
165
FROM(
166
    SELECT ROW_NUMBER() OVER (ORDER BY MIN(A.TRN_DATE)) AS STT, 
167
	MIN(A.TRN_DATE) AS TRN_DATE,
168
	A.TRN_ID,
169
	MAX(A.ET_ID) AS ET_ID,
170
	D.BRANCH_CODE AS DBRANCH_CODE,C.BRANCH_CODE AS CBRANCH_CODE,
171
        --A.ASSET_ID,
172
        --A.TRN_TYPE,
173
        A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, SUM(A.AMT) AS AMT, UPPER(A.TRN_DESC) AS TRN_DESC,
174
        --A.REF_NO,
175
        UPPER(A.MAKER_ID) AS MAKER_ID, UPPER(A.CHECKER_ID) AS CHECKER_ID,
176
        --B.ASSET_CODE,
177
        --B.ASSET_NAME,
178
        '' AS CR_BRANCH_CODE,
179
        --(ISNULL(REPLACE(C.BRANCH_CODE, 'VN001', ''), '00'+CD.DAO_CODE)+'-'+ISNULL(C.BRANCH_NAME, CD.DEP_NAME)) AS CR_BRANCH_NAME,
180
        A.DR_ACCT+' '+D.BRANCH_CODE AS DR_BRANCH_CODE,
181
        --(ISNULL(REPLACE(D.BRANCH_CODE, 'VN001', ''), '00'+DD.DAO_CODE)+'-'+ISNULL(D.BRANCH_NAME, DD.DEP_NAME)) AS DR_BRANCH_NAME,
182
        --CD.DEP_CODE + ' - '+ CD.DEP_NAME AS CD_DEP_CODE,
183
        --DD.DEP_CODE + ' - '+  CD.DEP_NAME AS DD_DEP_CODE
184
        '' AS MAPHONGBAN, 'VND' AS CCY,
185
        --A.REF_ID,
186
     --   STUFF(
187
     --   (
188
     --   SELECT ', '+C1.REF_NO
189
     --   FROM ASS_ENTRIES_POST C1
190
     --   WHERE A.TRN_ID=C1.TRN_ID AND A.CR_ACCT=C1.CR_ACCT AND A.CR_BRN=C1.CR_BRN AND A.DR_ACCT=C1.DR_ACCT AND A.DR_BRN=C1.DR_BRN AND A.TRN_DESC=C1.TRN_DESC
191
     --         AND CONVERT(DATE, A.TRN_DATE, 103)=CONVERT(DATE, C1.TRN_DATE, 103)
192
			  
193
			  --AND A.MAKER_ID=A.MAKER_ID AND A.CHECKER_ID=A.CHECKER_ID AND D.BRANCH_CODE=D.BRANCH_CODE
194
     --   FOR XML PATH('')
195
     --   ),   1, 1, ''
196
     --        ) AS REF_NO
197

    
198
			 A.REF_NO as REF_NO
199
    FROM ASS_ENTRIES_POST A
200
         LEFT JOIN ASS_MASTER B ON A.ASSET_ID=B.ASSET_ID
201
         LEFT JOIN CM_BRANCH C ON C.BRANCH_ID=A.CR_BRN
202
         LEFT JOIN CM_BRANCH D ON D.BRANCH_ID=A.DR_BRN
203
    --LEFT JOIN CM_DEPARTMENT CD ON CD.DEP_ID=A.CR_BRN
204
    --LEFT JOIN CM_DEPARTMENT DD ON DD.DEP_ID=A.DR_BRN
205
	WHERE DATEDIFF(DAYOFYEAR, A.TRN_DATE, CONVERT(DATETIME, @p_DATE, 103))=0 AND A.DO_BRN=@p_BRANCH_ID
206
          AND(A.MAKER_ID=@p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID='')AND A.EXP_TO_CORE='Y'
207
		      GROUP BY A.TRN_ID, A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, A.TRN_DESC,  CONVERT(DATE, A.TRN_DATE, 103), A.MAKER_ID, A.CHECKER_ID, D.BRANCH_CODE,C.BRANCH_CODE,A.REF_NO
208

    
209
		   
210

    
211

    
212

    
213

    
214

    
215
 
216

    
217
    UNION ALL
218
       SELECT ROW_NUMBER() OVER (ORDER BY MIN(A.TRN_DATE)) AS STT, 
219
	MIN(A.TRN_DATE) AS TRN_DATE,
220
	A.TRN_ID,
221
	MAX(A.ET_ID) AS ET_ID,
222
	D.BRANCH_CODE AS DBRANCH_CODE,C.BRANCH_CODE AS CBRANCH_CODE,
223
        --A.ASSET_ID,
224
        --A.TRN_TYPE,
225
        A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, SUM(A.AMT) AS AMT, UPPER(A.TRN_DESC) AS TRN_DESC,
226
        --A.REF_NO,
227
        UPPER(A.MAKER_ID) AS MAKER_ID, UPPER(A.CHECKER_ID) AS CHECKER_ID,
228
        --B.ASSET_CODE,
229
        --B.ASSET_NAME,
230
        A.CR_ACCT+' '+C.BRANCH_CODE AS CR_BRANCH_CODE,
231
        --(ISNULL(REPLACE(C.BRANCH_CODE, 'VN001', ''), '00'+CD.DAO_CODE)+'-'+ISNULL(C.BRANCH_NAME, CD.DEP_NAME)) AS CR_BRANCH_NAME,
232
        '' AS CR_BRANCH_CODE,
233
        --(ISNULL(REPLACE(D.BRANCH_CODE, 'VN001', ''), '00'+DD.DAO_CODE)+'-'+ISNULL(D.BRANCH_NAME, DD.DEP_NAME)) AS DR_BRANCH_NAME,
234
        --CD.DEP_CODE + ' - '+ CD.DEP_NAME AS CD_DEP_CODE,
235
        --DD.DEP_CODE + ' - '+  CD.DEP_NAME AS DD_DEP_CODE
236
        '' AS MAPHONGBAN, 'VND' AS CCY,
237
        --A.REF_ID,
238
     --   STUFF(
239
     --   (
240
     --   SELECT ', '+C1.REF_NO
241
     --   FROM ASS_ENTRIES_POST C1
242
     --   WHERE A.TRN_ID=C1.TRN_ID AND A.CR_ACCT=C1.CR_ACCT AND A.CR_BRN=C1.CR_BRN AND A.DR_ACCT=C1.DR_ACCT AND A.DR_BRN=C1.DR_BRN AND A.TRN_DESC=C1.TRN_DESC
243
     --         AND CONVERT(DATE, A.TRN_DATE, 103)=CONVERT(DATE, C1.TRN_DATE, 103)
244
			  
245
			  --AND A.MAKER_ID=A.MAKER_ID AND A.CHECKER_ID=A.CHECKER_ID AND D.BRANCH_CODE=D.BRANCH_CODE
246
     --   FOR XML PATH('')
247
     --   ),   1, 1, ''
248
     --        ) AS REF_NO
249
			 A.REF_NO as REF_NO
250
    FROM ASS_ENTRIES_POST A
251
         LEFT JOIN ASS_MASTER B ON A.ASSET_ID=B.ASSET_ID
252
         LEFT JOIN CM_BRANCH C ON C.BRANCH_ID=A.CR_BRN
253
         LEFT JOIN CM_BRANCH D ON D.BRANCH_ID=A.DR_BRN
254
    --LEFT JOIN CM_DEPARTMENT CD ON CD.DEP_ID=A.CR_BRN
255
    --LEFT JOIN CM_DEPARTMENT DD ON DD.DEP_ID=A.DR_BRN
256
		   WHERE DATEDIFF(DAYOFYEAR, A.TRN_DATE, CONVERT(DATETIME, @p_DATE, 103))=0 AND A.DO_BRN=@p_BRANCH_ID
257
          AND(A.MAKER_ID=@p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID='')AND A.EXP_TO_CORE='Y'
258
		      GROUP BY A.TRN_ID, A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, A.TRN_DESC,  CONVERT(DATE, A.TRN_DATE, 103), A.MAKER_ID, A.CHECKER_ID, D.BRANCH_CODE,C.BRANCH_CODE,A.REF_NO
259

    
260
   
261
    ) AS CC
262
ORDER BY cc.STT,CC.ET_ID, CC.CR_BRANCH_CODE, CC.TRN_DATE DESC;
263

    
264
SELECT N' Ngày lập phiếu: '+ FORMAT (GETDATE(),'dd/MM/yyyy H:mm:ss') AS NGAY_TAO, 'CN /PGD : '+ (SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_ID) AS DVKD,
265
FORMAT (GETDATE(),'dd/MM/yyyy') AS NGAY_LAP_PHIEU
266

    
267
SELECT CHAR(10) +'STT'+ CHAR(10) AS STT,
268
CHAR(10) +N'SỐ CHỨNG TỪ'+ CHAR(10) AS SO_CT,
269
CHAR(10) +N'SỐ GIAO DỊCH / REF NO'+ CHAR(10) AS SO_GD,
270
CHAR(10) +N'DIỄN GIẢI TRANSACTION'+ CHAR(10) AS CORE_NOTE,
271
CHAR(10) +N'THỜI GIAN '+ CHAR(10) AS NGAY_GD,
272
CHAR(10) +N'NỢ '+ CHAR(10) AS [NO],
273
CHAR(10) +N'CÓ '+ CHAR(10) AS [CO],
274
CHAR(10) +N'CCY '+ CHAR(10) AS CCY,
275
CHAR(10) +N'NGUYÊN TỆ '+ CHAR(10) AS NT,
276
CHAR(10) +N'QUY ĐỔI '+ CHAR(10) AS QD,
277
CHAR(10) +N'GDV '+ CHAR(10) AS GDV,
278
CHAR(10) +N'KSV '+ CHAR(10) AS KSV,
279
CHAR(10) +N'PHÒNG BAN '+ CHAR(10) AS PB
280
¿
281

    
282
ALTER PROCEDURE [dbo].[rpt_MW_LIET_KE_CHUNG_TU_BanViet] @p_DATE VARCHAR(10), @p_BRANCH_ID VARCHAR(15) ='', @p_MAKER_ID VARCHAR(15) =NULL
283
AS
284

    
285
--LAY MA DON VI CUA HS NEU TIM THEO HS
286
IF @p_BRANCH_ID='HS' BEGIN
287
    SELECT @p_BRANCH_ID=BRANCH_ID FROM CM_BRANCH WHERE BRANCH_TYPE='HS';
288
END;
289
SELECT CC.STT, CHAR(10) + CC.TRN_ID + CHAR(10) AS TRN_ID, CHAR(10) + CC.ET_ID + CHAR(10) AS ET_ID, CC.DBRANCH_CODE, CC.CBRANCH_CODE, CC.CR_ACCT, CC.CR_BRN, CC.DR_ACCT, CC.DR_BRN, CHAR(10) +  REPLACE (FORMAT ((CC.AMT),'#,###'),',','.') +',00' + CHAR(10) AS AMT, 
290
CHAR(10) +  CC.TRN_DESC + CHAR(10) AS TRN_DESC ,
291
       CHAR(10) + CC.MAKER_ID + CHAR(10) AS MAKER_ID , CHAR(10) + CC.CHECKER_ID + CHAR(10) AS CHECKER_ID ,CHAR(10) + CC.CR_BRANCH_CODE + CHAR(10) AS CR_BRANCH_CODE , CHAR(10)+ CC.DR_BRANCH_CODE + CHAR(10) AS DR_BRANCH_CODE , CC.MAPHONGBAN, 
292
	   CHAR(10) + CC.CCY + CHAR(10) AS CCY, CHAR(10) + CC.REF_NO + CHAR(10) AS REF_NO , CHAR(10) +  FORMAT(CC.TRN_DATE,'dd/MM/yyyy') + CHAR(10) AS TRN_DATE
293
FROM(
294
    SELECT ROW_NUMBER() OVER (ORDER BY MIN(A.TRN_DATE)) AS STT, MIN(A.TRN_DATE) AS TRN_DATE,A.TRN_ID,MAX(A.ET_ID) AS ET_ID,
295
	D.BRANCH_CODE AS DBRANCH_CODE,C.BRANCH_CODE AS CBRANCH_CODE,A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, SUM(A.AMT) AS AMT, UPPER(A.TRN_DESC) AS TRN_DESC,
296
    UPPER(A.MAKER_ID) AS MAKER_ID, UPPER(A.CHECKER_ID) AS CHECKER_ID,'' AS CR_BRANCH_CODE,A.DR_ACCT+' '+D.BRANCH_CODE AS DR_BRANCH_CODE,
297
	'' AS MAPHONGBAN, 'VND' AS CCY,A.REF_NO as REF_NO
298
    FROM dbo.MW_ENTRIES_POST A
299
	     --LEFT JOIN dbo.MW_MAST_BAL B ON A.MAST_PRICE_ID=B.PRICE_ID
300
         LEFT JOIN CM_BRANCH C ON C.BRANCH_ID=A.CR_BRN
301
         LEFT JOIN CM_BRANCH D ON D.BRANCH_ID=A.DR_BRN
302
	WHERE 
303
	DATEDIFF(DAYOFYEAR, A.TRN_DATE, CONVERT(DATETIME, @p_DATE, 103))=0 AND A.DO_BRN=@p_BRANCH_ID
304
          AND(A.MAKER_ID=@p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID='')AND A.EXP_TO_CORE='Y'
305
		      GROUP BY A.TRN_ID, A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, A.TRN_DESC,  CONVERT(DATE, A.TRN_DATE, 103), A.MAKER_ID, A.CHECKER_ID, D.BRANCH_CODE,C.BRANCH_CODE,A.REF_NO
306
    UNION ALL
307
    SELECT ROW_NUMBER() OVER (ORDER BY MIN(A.TRN_DATE)) AS STT, 
308
	MIN(A.TRN_DATE) AS TRN_DATE,
309
	A.TRN_ID,
310
	MAX(A.ET_ID) AS ET_ID,
311
	D.BRANCH_CODE AS DBRANCH_CODE,C.BRANCH_CODE AS CBRANCH_CODE,
312
        --A.ASSET_ID,
313
        --A.TRN_TYPE,
314
        A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, SUM(A.AMT) AS AMT, UPPER(A.TRN_DESC) AS TRN_DESC,
315
        --A.REF_NO,
316
        UPPER(A.MAKER_ID) AS MAKER_ID, UPPER(A.CHECKER_ID) AS CHECKER_ID,
317
        --B.ASSET_CODE,
318
        --B.ASSET_NAME,
319
        A.CR_ACCT+' '+C.BRANCH_CODE AS CR_BRANCH_CODE,
320
        '' AS CR_BRANCH_CODE,
321
        '' AS MAPHONGBAN,  'VND' AS CCY,
322
			 A.REF_NO as REF_NO
323
       FROM dbo.MW_ENTRIES_POST A
324
        --LEFT JOIN dbo.MW_MAST_BAL B ON A.MAST_PRICE_ID=B.PRICE_ID
325
         LEFT JOIN CM_BRANCH C ON C.BRANCH_ID=A.CR_BRN
326
         LEFT JOIN CM_BRANCH D ON D.BRANCH_ID=A.DR_BRN
327
    --LEFT JOIN CM_DEPARTMENT CD ON CD.DEP_ID=A.CR_BRN
328
    --LEFT JOIN CM_DEPARTMENT DD ON DD.DEP_ID=A.DR_BRN
329
		   WHERE DATEDIFF(DAYOFYEAR, A.TRN_DATE, CONVERT(DATETIME, @p_DATE, 103))=0 AND A.DO_BRN=@p_BRANCH_ID
330
			 AND(A.MAKER_ID=@p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID='')AND A.EXP_TO_CORE='Y'
331
		      GROUP BY A.TRN_ID, A.CR_ACCT, A.CR_BRN, A.DR_ACCT, A.DR_BRN, A.TRN_DESC,  CONVERT(DATE, A.TRN_DATE, 103), A.MAKER_ID, A.CHECKER_ID, D.BRANCH_CODE,C.BRANCH_CODE, A.REF_NO
332
    ) AS CC
333
ORDER BY cc.STT,CC.ET_ID, CC.CR_BRANCH_CODE, CC.TRN_DATE DESC;
334

    
335
SELECT N' Ngày lập phiếu: '+ FORMAT (GETDATE(),'dd/MM/yyyy H:mm:ss') AS NGAY_TAO, 'CN /PGD : '+ (SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_ID) AS DVKD,
336
FORMAT (GETDATE(),'dd/MM/yyyy') AS NGAY_LAP_PHIEU
337

    
338
SELECT CHAR(10) +'STT'+ CHAR(10) AS STT,
339
CHAR(10) +N'SỐ CHỨNG TỪ'+ CHAR(10) AS SO_CT,
340
CHAR(10) +N'SỐ GIAO DỊCH / REF NO'+ CHAR(10) AS SO_GD,
341
CHAR(10) +N'DIỄN GIẢI TRANSACTION'+ CHAR(10) AS CORE_NOTE,
342
CHAR(10) +N'THỜI GIAN '+ CHAR(10) AS NGAY_GD,
343
CHAR(10) +N'NỢ '+ CHAR(10) AS [NO],
344
CHAR(10) +N'CÓ '+ CHAR(10) AS [CO],
345
CHAR(10) +N'CCY '+ CHAR(10) AS CCY,
346
CHAR(10) +N'NGUYÊN TỆ '+ CHAR(10) AS NT,
347
CHAR(10) +N'QUY ĐỔI '+ CHAR(10) AS QD,
348
CHAR(10) +N'GDV '+ CHAR(10) AS GDV,
349
CHAR(10) +N'KSV '+ CHAR(10) AS KSV,
350
CHAR(10) +N'PHÒNG BAN '+ CHAR(10) AS PB
351

    
352
¿
353

    
354

    
355
ALTER PROCEDURE [dbo].[PAY_ENTRIES_POST_CASA_ByRefId] 
356
@p_REF_ID VARCHAR(200) = NULL, 
357
@p_BRANCH_ID VARCHAR(50) = NULL, 
358
@RefNo VARCHAR(500) = NULL
359
AS
360
DECLARE @l_SUM_AMT DECIMAL,
361
        @l_REF_NO VARCHAR(20),
362
        @l_ASSET_ID VARCHAR(20);
363
DECLARE @l_TRN_TYPE VARCHAR(50) = '';
364
DECLARE @l_CASA_CR_ACCT VARCHAR(20) = '';
365
DECLARE @l_CASA_DR_ACCT VARCHAR(20) = '';
366
DECLARE @l_CASA_CR_ACCT_NAME NVARCHAR(500) = '';
367
DECLARE @l_CASA_DR_ACCT_NAME NVARCHAR(500) = '';
368

    
369
DECLARE @MW_ENTRI TABLE (ET_ID varchar(15), REF_NO varchar(20), TRN_ID varchar(15), REF_ID varchar(15), TRN_TYPE nvarchar(40), ENTRY_PAIR varchar(15), DO_BRN varchar(15), DRCR varchar(2), ACCT varchar(100), BRN_ID varchar(20), DEPT_ID varchar(15), AMT decimal(18, 2), CURRENCY varchar(20), EXC_RATE numeric(18, 2), EXP_TO_CORE varchar(1), TRN_DATE datetime, TRN_DESC nvarchar(1000), MAKER_ID varchar(15), CHECKER_ID varchar(15))
370

    
371
INSERT INTO @MW_ENTRI 
372
SELECT * FROM PAY_ENTRIES_POST 
373
WHERE TRN_ID = @p_REF_ID AND (DO_BRN = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' ) AND (REF_NO = @RefNo OR @RefNo IS NULL OR @RefNo = '')
374

    
375
--SELECT * FROM @MW_ENTRI
376
DECLARE @ENTRY_PAIR VARCHAR(100)
377
SET @ENTRY_PAIR = (SELECT TOP 1 ENTRY_PAIR FROM @MW_ENTRI WHERE LEN(ACCT)>9)--------------*********
378
DECLARE @GDV VARCHAR(50), @KSV VARCHAR(50)
379
SET @GDV = (SELECT TOP 1  MAKER_ID FROM PAY_ENTRIES_POST WHERE TRN_ID =@p_REF_ID)
380
SET @KSV =(SELECT TOP 1  CHECKER_ID FROM PAY_ENTRIES_POST WHERE TRN_ID =@p_REF_ID)
381
--SELECT @ENTRY_PAIR
382
DECLARE @TABLE_REF TABLE (REF_NO VARCHAR(50))
383
INSERT INTO @TABLE_REF SELECT DISTINCT REF_NO FROM PAY_ENTRIES_POST WHERE TRN_ID =@p_REF_ID
384
DECLARE @TABLE_RETURN TABLE (TRN_ID VARCHAR(15), PrintDate VARCHAR(25),SUM_AMT DECIMAL(18,0),SUM_stringMoney VARCHAR(100),CASA_CR_ACCT VARCHAR(20),
385
CASA_CR_ACCT_NAME VARCHAR(250), CASA_DR_ACCT VARCHAR(20),CASA_DR_ACCT_NAME NVARCHAR(250),REF_NO VARCHAR(50),TRN_DESC VARCHAR(250), G_D_V NVARCHAR(50), K_S_V NVARCHAR(50), RATE VARCHAR(15), G_DV VARCHAR(35), DV_KD VARCHAR(50))
386
DECLARE @COUNT_SL INT, @REF_REFENCE VARCHAR(50)
387
SET @COUNT_SL =1
388
WHILE ((SELECT COUNT (*) FROM @TABLE_REF)>0)
389
BEGIN
390
	SET @REF_REFENCE=(SELECT TOP 1 REF_NO FROM @TABLE_REF)
391
	SET @COUNT_SL = @COUNT_SL+1
392
	INSERT INTO @TABLE_RETURN SELECT TOP 1 TRN_ID,ISNULL(FORMAT(TRN_DATE,'dd/MM/yyyy'),'') ,
393
	(SELECT SUM (AMT)/2 FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_REFENCE AND TRN_ID =@p_REF_ID),
394
	REPLACE(dbo.ReadMoney((SELECT SUM (AMT) /2 FROM PAY_ENTRIES_POST WHERE  REF_NO =@REF_REFENCE AND TRN_ID =@p_REF_ID)),'  ',' '), 
395
	(SELECT TOP 1 ACCT FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_REFENCE AND LEN(ACCT) >9 AND DRCR ='C' AND TRN_ID =@p_REF_ID),
396
	[dbo].[FN_GET_ACC_NAME_PAY]((SELECT TOP 1 ACCT FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_REFENCE AND LEN(ACCT) >9 AND DRCR ='C' AND TRN_ID =@p_REF_ID)),
397
	(SELECT TOP 1 ACCT FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_REFENCE AND LEN(ACCT) >9 AND DRCR ='D' AND TRN_ID =@p_REF_ID),
398
	[dbo].[FN_GET_ACC_NAME_PAY]((SELECT TOP 1 ACCT FROM PAY_ENTRIES_POST WHERE REF_NO =@REF_REFENCE AND LEN(ACCT) >9 AND DRCR ='D' AND TRN_ID =@p_REF_ID)),@REF_REFENCE, TRN_DESC , 
399
	CHAR(10) + dbo.fChuyenCoDauThanhKhongDau((SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME =@GDV)),CHAR(10) + dbo.fChuyenCoDauThanhKhongDau((SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME =@KSV)),
400
	'1', UPPER(@GDV),'HOI SO'
401
	FROM PAY_ENTRIES_POST WHERE TRN_ID =@p_REF_ID AND REF_NO =@REF_REFENCE
402
	DELETE FROM @TABLE_REF WHERE REF_NO =@REF_REFENCE
403
END
404
SELECT * FROM @TABLE_RETURN
405
--SELECT MAX(KQ.TRN_ID) AS TRN_ID , MAX(KQ.PrintDate) AS PrintDate, SUM(KQ.SUM_AMT) AS SUM_AMT, MAX(KQ.SUM_stringMoney) AS SUM_stringMoney, MAX(KQ.CASA_CR_ACCT) AS CASA_CR_ACCT,
406
--MAX(KQ.CASA_CR_ACCT_NAME) AS CASA_CR_ACCT_NAME,MAX(KQ.CASA_DR_ACCT) AS CASA_DR_ACCT,MAX(KQ.CASA_DR_ACCT_NAME) AS CASA_DR_ACCT_NAME, KQ.REF_NO, MAX(KQ.TRN_DESC) AS TRN_DESC, MAX(KQ.MAKER_ID) AS  [USER_NAME]
407
--FROM 
408
--(
409
--SELECT  A.TRN_ID, 
410
--	convert(varchar(10),DAY(A.TRN_DATE))+N'/'+convert(varchar(10),MONTH(A.TRN_DATE)) +N'/'+convert(varchar(10),YEAR(A.TRN_DATE)) AS PrintDate,
411
--	A.SUM_AMT,
412
--    A.SUM_stringMoney,
413
--	C.CR_ACCT AS CASA_CR_ACCT, C.CASA_CR_ACCT_NAME,	
414
--	B.DR_ACCT AS CASA_DR_ACCT, B.CASA_DR_ACCT_NAME,
415
--	D.TRN_DESC,
416
--    D.REF_NO,
417
--   '' AS REF_NO_SUM, 
418
--	A.MAKER_ID
419
--FROM 
420
--(
421
--	SELECT A.TRN_ID,
422
--		   CONVERT(DATE,A.TRN_DATE,103) TRN_DATE,
423
--           SUM(A.AMT) AS SUM_AMT,
424
--           dbo.ReadMoney(SUM(A.AMT)) AS SUM_stringMoney,
425
--		   A.MAKER_ID
426
--	FROM @MW_ENTRI A
427
--	WHERE DRCR = 'D'
428
--	GROUP BY A.TRN_ID, CONVERT(DATE,A.TRN_DATE,103), A.REF_NO,A.MAKER_ID
429
--) AS A
430
--LEFT JOIN 
431
--(
432
--	SELECT TOP 1 A.REF_NO, A.TRN_ID, A.ACCT DR_ACCT, [dbo].[FN_GET_ACC_NAME_PAY](A.ACCT) AS CASA_DR_ACCT_NAME
433
--	FROM @MW_ENTRI A
434
--	WHERE LEN(A.ACCT) > 9 AND A.DRCR = 'D' AND ENTRY_PAIR = @ENTRY_PAIR
435
--	GROUP BY A.REF_NO
436
--	) AS B ON B.TRN_ID = A.TRN_ID
437
--LEFT JOIN 
438
--(
439
--	SELECT TOP 1 A.REF_NO, A.TRN_ID, A.ACCT CR_ACCT, [dbo].[FN_GET_ACC_NAME_PAY](A.ACCT) CASA_CR_ACCT_NAME
440
--	FROM @MW_ENTRI A	
441
--	WHERE LEN(A.ACCT) > 9 AND A.DRCR = 'C' AND ENTRY_PAIR = @ENTRY_PAIR
442
--	GROUP BY A.REF_NO
443
--	) AS C ON C.TRN_ID = A.TRN_ID
444
--LEFT JOIN 
445
--(
446
--	SELECT TOP 100 A.TRN_DESC, A.TRN_ID, A.REF_NO
447
--	FROM @MW_ENTRI A		
448
--	) AS D ON D.TRN_ID = A.TRN_ID
449
----LEFT JOIN
450
----(
451
----    SELECT STUFF((SELECT ', ' + C1.REF_NO
452
----                FROM @MW_ENTRI C1
453
----                WHERE C2.TRN_ID = C1.TRN_ID
454
----                GROUP BY C1.TRN_ID,C1.REF_NO                
455
----                FOR XML PATH('')
456
----            ),1,1,'') AS REF_NO_SUM, C2.TRN_ID
457
----    FROM @MW_ENTRI C2
458
----    GROUP BY C2.TRN_ID, C2.REF_NO
459
----) AS E ON E.TRN_ID = A.TRN_ID
460
--) AS KQ
461
--GROUP BY KQ.REF_NO
462

    
463
	
464
¿
465

    
466

    
467

    
468
ALTER PROCEDURE [dbo].[PAY_ENTRIES_POST_ByRefId] 
469
@p_REF_ID VARCHAR(200) = NULL, 
470
@p_BRANCH_ID VARCHAR(50) = NULL, 
471
@RefNo VARCHAR(500) = NULL
472
AS
473
-- LUCTV 03062020 BO SUNG BANG MAP GL
474
DECLARE  @TABLE_MAP_GL TABLE (ACCT VARCHAR(100), TL_GL VARCHAR(100), GL_NAME VARCHAR(1000))
475
INSERT INTO @TABLE_MAP_GL SELECT ACC_NO, TK_GL, TK_GL_NAME FROM CM_ACCOUNT
476
--INSERT INTO @TABLE_MAP_GL SELECT ACC_NUM, TK_GL, TK_GL_NAME FROM CM_ACCOUNT_PAY
477
--INSERT INTO @TABLE_MAP_GL SELECT ACC_NUM, (SELECT ParaValue FROM  SYS_PARAMETERS WHERE ParaKey ='NCC_GL'), (SELECT Description FROM  SYS_PARAMETERS WHERE ParaKey ='NCC_GL') FROM CM_SUPPLIER
478
--INSERT INTO @TABLE_MAP_GL SELECT ACC_NUM_OUT, (SELECT ParaValue FROM  SYS_PARAMETERS WHERE ParaKey ='NCC_GL_O'), (SELECT Description FROM  SYS_PARAMETERS WHERE ParaKey ='NCC_GL_O') FROM CM_SUPPLIER
479
---
480
SELECT A.REF_NO, MAX(A.DR_ACCT) AS DR_ACCT, MAX(A.DR_ACCT_NAME) AS DR_ACCT_NAME,
481
MAX(A.DR_BRN) AS DR_BRN,MAX(A.DR_D) AS DR_D, MAX(A.ACCT) AS ACCT, MAX(A.REF_ID) AS REF_ID, MAX(A.DR_D) AS DR_D, MAX(A.ENTRY_PAIR) AS ENTRY_PAIR,
482
MAX(A.DRCR) AS DRCR,  REPLACE (FORMAT (SUM(A.AMT),'#,###'),',','.') +',00 VND' AS AMT
483
FROM
484
(
485
SELECT A.AMT, A.ACCT +' '+ BR.BRANCH_CODE AS DR_ACCT, [dbo].[FN_GET_ACC_NAME_PAY](A.ACCT) AS DR_ACCT_NAME, '' DR_BRN, 
486
(CASE WHEN A.DRCR = 'D' THEN N'Nợ/Debit' ELSE N'Có/Credit' END) AS ACCT, '' AS REF_ID, ISNULL(DP.DEP_CODE,'') AS DR_D, A.ENTRY_PAIR,A.DRCR,A.REF_NO
487
FROM PAY_ENTRIES_POST A
488
LEFT JOIN CM_BRANCH BR ON A.BRN_ID = BR.BRANCH_ID
489
LEFT JOIN CM_DEPARTMENT DP ON A.DEPT_ID = DP.DEP_ID
490
WHERE A.TRN_ID = @p_REF_ID AND (A.REF_NO = @RefNo OR @RefNo IS NULL OR @RefNo = '') 
491
AND LEN(A.ACCT) <= 9
492
--ORDER BY A.ENTRY_PAIR, A.DRCR DESC
493

    
494
UNION 
495

    
496
SELECT A.AMT, GL.TL_GL +' '+ BR.BRANCH_CODE  AS DR_ACCT, GL.GL_NAME AS DR_ACCT_NAME, '' DR_BRN, 
497
(CASE WHEN A.DRCR = 'D' THEN N'Nợ/Debit' ELSE N'Có/Credit' END) AS ACCT, '' AS REF_ID, ISNULL(DP.DEP_CODE,'') AS DR_D,A.ENTRY_PAIR,A.DRCR,A.REF_NO
498
FROM PAY_ENTRIES_POST A
499
INNER JOIN @TABLE_MAP_GL GL ON A.ACCT = GL.ACCT
500
LEFT JOIN CM_BRANCH BR ON A.BRN_ID = BR.BRANCH_ID
501
LEFT JOIN CM_DEPARTMENT DP ON A.DEPT_ID = DP.DEP_ID
502
WHERE A.TRN_ID = @p_REF_ID AND (A.REF_NO = @RefNo OR @RefNo IS NULL OR @RefNo = '') 
503
AND LEN(A.ACCT) > 9
504
) A
505
--ORDER BY A.ENTRY_PAIR, A.DRCR,A.REF_NO
506
GROUP BY A.REF_NO, A.DR_ACCT, A.DRCR
507
ORDER BY A.DRCR DESC
508

    
509
--DECLARE @ENT_TEMP TABLE (ID INT,REF_ID VARCHAR(15), CR_ACCT VARCHAR(50), CR_BRN VARCHAR(15), DR_ACCT VARCHAR(50), DR_BRN VARCHAR(15), AMT DECIMAL(18,0), TRN_DESC NVARCHAR(500), ASSET_ID VARCHAR(15))
510
--DECLARE @ENT_TEMP_ROOT TABLE (ID INT,REF_ID VARCHAR(15), CR_ACCT VARCHAR(50), CR_BRN VARCHAR(15), DR_ACCT VARCHAR(50), DR_BRN VARCHAR(15), AMT DECIMAL(18,0), TRN_DESC NVARCHAR(500), ASSET_ID VARCHAR(15),DR_NAME NVARCHAR(500), CR_NAME NVARCHAR(500))
511
--DECLARE @TRN_DESC NVARCHAR(500) = '', @TRN_TYPE VARCHAR(50)
512

    
513
----------------------------LAY DANH SACH BUT TOAN -- LU VAO BANG DU LIEU GOC--------------------------
514
--INSERT INTO @ENT_TEMP_ROOT SELECT Row_number() over(order by A.CR_ACCT),'',A.CR_ACCT, B.BRANCH_CODE CR_BRN, A.DR_ACCT, C.BRANCH_CODE DR_BRN, SUM(A.AMT) AS AMT,@TRN_DESC, A.MAST_PRICE_ID AS ASSET_ID,NULL, NULL
515
--FROM MW_ENTRIES_POST A
516
--LEFT JOIN CM_BRANCH B ON A.CR_BRN = B.BRANCH_ID
517
--LEFT JOIN CM_BRANCH C ON A.DR_BRN = C.BRANCH_ID
518
--WHERE TRN_ID = @p_REF_ID AND (A.DO_BRN = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')  AND (REF_NO = @RefNo OR @RefNo IS NULL OR @RefNo = '')
519
--GROUP BY A.CR_ACCT, B.BRANCH_CODE, A.DR_ACCT, C.BRANCH_CODE,A.MAST_PRICE_ID
520
----ORDER BY LEN(CR_ACCT)
521

    
522
----select * from @ENT_TEMP_ROOT
523
----DECLARE @COUNT INT = (SELECT COUNT(*) - COUNT(DISTINCT ASSET_ID) FROM ASS_ENTRIES_POST WHERE TRN_ID = @p_REF_ID)
524

    
525
----IF (SELECT COUNT(DISTINCT TRN_TYPE) FROM MW_ENTRIES_POST WHERE TRN_ID = @p_REF_ID) > 1
526
----SET @TRN_TYPE = 'ADD_NEW'
527
----ELSE
528
----SET @TRN_TYPE = (SELECT TOP 1 TRN_TYPE FROM ASS_ENTRIES_POST WHERE TRN_ID = @p_REF_ID )
529
------------------------------TACH 1 DONG DU LIEU THANH 2 DONG NAM LIEN KE NHAU DE BINDING WORD--------------------------
530
---------LAY TAI KHOAN GL TUONG UNG CASA TRONG CM_BRANCH
531
--UPDATE @ENT_TEMP_ROOT SET CR_ACCT = B.TEL, CR_NAME = B.PROVICE
532
--FROM CM_BRANCH B
533
--INNER JOIN @ENT_TEMP_ROOT C ON C.CR_ACCT = B.DAO_CODE AND LEN(C.CR_ACCT)>9
534

    
535
--UPDATE @ENT_TEMP_ROOT SET DR_ACCT = B.TEL, DR_NAME = B.PROVICE
536
--FROM CM_BRANCH B
537
--INNER JOIN @ENT_TEMP_ROOT C ON C.DR_ACCT = B.DAO_CODE AND LEN(C.DR_ACCT)>9
538

    
539
----IF @TRN_TYPE = 'ADD_NEW'  OR @TRN_TYPE = 'ASS_USE' OR @TRN_TYPE='ASS_TRANSFER' 
540
----BEGIN
541
--	SELECT SUM(AG.AMT) AMT, AG.DR_ACCT, AG.DR_ACCT_NAME, AG.DR_BRN, AG.ACCT,SUM(REF_ID) REF_ID, AG.DR_D DR_D
542
--	FROM
543
--	(
544
--		SELECT A.AMT, A.DR_ACCT AS DR_ACCT, ISNULL(A.DR_NAME,[dbo].[FN_GET_ACC_NAME](A.DR_ACCT)) AS DR_ACCT_NAME, '' AS DR_BRN, N'Nợ/Debit' AS ACCT,ID AS REF_ID, A.DR_BRN AS DR_D
545
--		FROM @ENT_TEMP_ROOT A
546
--		--WHERE LEN(A.DR_ACCT) <= 9
547
--		UNION 
548
--		SELECT A.AMT, A.CR_ACCT AS DR_ACCT, ISNULL(A.CR_NAME,[dbo].[FN_GET_ACC_NAME](A.CR_ACCT)) AS DR_ACCT_NAME, '' AS DR_BRN, N'Có/Credit' AS ACCT,ID AS REF_ID, A.CR_BRN AS DR_D
549
--		FROM @ENT_TEMP_ROOT A
550
--		--WHERE LEN(A.CR_ACCT) <= 9
551
--		--ORDER BY ID, ACCT DESC
552
--	) AG
553
--	GROUP BY AG.DR_ACCT, AG.DR_ACCT_NAME,AG.DR_BRN,AG.DR_ACCT,AG.ACCT, AG.DR_D
554
--	ORDER BY SUM(REF_ID), AG.ACCT DESC
555
----END
556
----ELSE
557
----BEGIN
558
----	--IF LEFT(@p_REF_ID,4) = 'ASSL'--THANH LY TAI SAN
559
----	SELECT SUM(AG.AMT) AMT, AG.DR_ACCT, AG.DR_ACCT_NAME, AG.DR_BRN, AG.ACCT,SUM(REF_ID) REF_ID, AG.DR_D DR_D
560
----	FROM
561
----	(
562
----		SELECT A.AMT, A.DR_ACCT AS DR_ACCT, [dbo].[FN_GET_ACC_NAME](A.DR_ACCT) AS DR_ACCT_NAME, A.ASSET_ID AS DR_BRN, N'Nợ/Debit' AS ACCT,ID AS REF_ID, A.DR_BRN AS DR_D
563
----		FROM @ENT_TEMP_ROOT A
564
----		UNION 
565
----		SELECT A.AMT, A.CR_ACCT AS DR_ACCT, [dbo].[FN_GET_ACC_NAME](A.CR_ACCT) AS DR_ACCT_NAME, A.ASSET_ID AS DR_BRN, N'Có/Credit' AS ACCT,ID AS REF_ID, A.CR_BRN AS DR_D
566
----		FROM @ENT_TEMP_ROOT A
567
----	--ORDER BY ID, ACCT DESC
568
----	) AG
569
----	GROUP BY AG.DR_ACCT, AG.DR_ACCT_NAME,AG.DR_BRN,AG.DR_ACCT,AG.ACCT, AG.DR_D
570
----	ORDER BY AG.DR_BRN, AG.ACCT DESC
571
----END
572

    
573
--DELETE @ENT_TEMP
574
--DELETE @ENT_TEMP_ROOT
575
--------------------------DONE--------------------------
576

    
577

    
578
¿
579

    
580
ALTER PROC [dbo].[CM_ACCOUNT_PAY_Upd]
581
@p_USER_ID VARCHAR(15) = NULL,
582
@p_ACC_TYPE VARCHAR(150) = NULL,
583
@p_ACC_NO VARCHAR(150) = NULL,
584
@p_ACC_NAME VARCHAR(150) = NULL,
585
@p_MAKER_ID VARCHAR(15)= NULL,
586
@p_TK_GL VARCHAR(100)= NULL,
587
@p_TK_GL_NAME VARCHAR(1000)= NULL,
588
@p_EDITOR_ID   VARCHAR(15)= NULL
589
AS
590
BEGIN TRANSACTION
591
	IF(@p_TK_GL ='' OR @p_TK_GL IS NULL)
592
	BEGIN
593
		ROLLBACK TRANSACTION
594
		SELECT '-1' as Result, '' ACC_ID, N'Tài khoản GL không được phép để trống' ErrorDesc
595
		RETURN '-1'
596
	END
597
	IF(@p_TK_GL_NAME ='' OR @p_TK_GL_NAME IS NULL)
598
	BEGIN
599
	ROLLBACK TRANSACTION
600
			SELECT '-1' as Result, '' ACC_ID, N'Tên tài khoản GL không được phép để trống' ErrorDesc
601
			RETURN '-1'
602
	END
603
	IF(@p_ACC_NO ='' OR @p_ACC_NO IS NULL)
604
	BEGIN
605
	ROLLBACK TRANSACTION
606
		SELECT '-1' as Result, '' ACC_ID, N'Số tài khoản không được phép để trống' ErrorDesc
607
		RETURN '-1'
608
	END
609
	IF(@p_ACC_NAME ='' OR @p_ACC_NAME IS NULL)
610
	BEGIN
611
	ROLLBACK TRANSACTION
612
		SELECT '-1' as Result, '' ACC_ID, N'Tên tài khoản không được phép để trống' ErrorDesc
613
		RETURN '-1'
614
	END
615
	IF(@p_ACC_TYPE ='ADV_PAY')
616
	BEGIN
617
		IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID <> @p_USER_ID AND ACC_NUM =@p_ACC_NO))
618
		BEGIN
619
		ROLLBACK TRANSACTION
620
		SELECT '-1' as Result, '' ACC_ID, N'Tài khoản tạm ứng ' + @p_ACC_NO + N' đã tồn tại trong hệ thống' ErrorDesc
621
		RETURN '-1'
622
		END
623
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_TYPE='I' AND RECEIVER_DEBIT =@p_ACC_NO))
624
		BEGIN
625
			ROLLBACK TRANSACTION
626
			SELECT '-1' as Result, '' ACC_ID, N'Tài khoản tạm ứng ' + @p_ACC_NO + N' đã được sử dụng để tạm ứng (đã bắn bút toán tạm ứng vào core)' ErrorDesc
627
			RETURN '-1'
628
		END
629
		UPDATE CM_ACCOUNT_PAY SET ACC_NAME =@p_ACC_NAME, ACC_NUM =@p_ACC_NO,EDITOR_DT = GETDATE(), EDITOR_ID =@p_EDITOR_ID,AUTH_STATUS ='U' WHERE REF_ID =@p_USER_ID
630
		--- UPDATE TOAN BO CAC HACH TOAN CO SU DUNG TAI KHOAN TAM UNG
631
		--UPDATE TR_REQ_ADVANCE_PAYMENT SET RECEIVER_DEBIT =@p_ACC_NO WHERE REF_ID =@p_USER_ID AND REQ_TYPE ='I'
632
		--UPDATE TR_REQ_PAY_ENTRIES SET ACCT= @p_ACC_NO WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID =@p_USER_ID AND REQ_TYPE ='I')
633
	END
634
	ELSE
635
	BEGIN
636
		--KIEM TRA XEM DA TON TAI TAM UNG NOI BO NAO SU DUNG SO TAI KHOAN TAM UNG CUA NHAN VIEN NAY HAY KHONG
637
		IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE AUTH_STATUS_KT ='A'))
638
		BEGIN
639
			ROLLBACK TRANSACTION
640
			SELECT '-1' as Result, '' ACC_ID, N'Tài khoản ' + @p_ACC_NO + N' đã được sử dụng để hạch toán (đã bắn bút toán tạm ứng vào core)' ErrorDesc
641
			RETURN '-1'
642
		END
643
		ELSE
644
		BEGIN
645
			UPDATE CM_ACCOUNT SET ACC_NAME =@p_ACC_NAME,AUTH_STATUS='U', TK_GL =@p_TK_GL,TK_GL_NAME =@p_TK_GL_NAME WHERE ACC_NO =@p_ACC_NO
646
		END
647
	END
648
	-- UPDATE CHUNG
649
	UPDATE CM_ACCOUNT SET TK_GL =@p_TK_GL, TK_GL_NAME = @p_TK_GL_NAME WHERE ACC_NO =@p_ACC_NO
650
COMMIT TRANSACTION
651
SELECT '0' as Result, ''  ACC_ID, '' ErrorDesc
652
RETURN '0'
653
ABORT:
654
BEGIN
655
		ROLLBACK TRANSACTION
656
		SELECT '-1' as Result, '' ACC_ID, '' ErrorDesc
657
		RETURN '-1'
658
END
659

    
660

    
661
¿
662

    
663
ALTER PROC [dbo].[CM_ACCOUNT_PAY_Ins]
664
@p_USER_ID VARCHAR(15) = NULL,
665
@p_ACC_TYPE VARCHAR(150) = NULL,
666
@p_ACC_NO VARCHAR(150) = NULL,
667
@p_ACC_NAME VARCHAR(150) = NULL,
668
@p_TK_GL VARCHAR(100) = NULL,
669
@p_TK_GL_NAME VARCHAR(1000) = NULL,
670
@p_MAKER_ID VARCHAR(15)= NULL
671
AS
672
BEGIN TRANSACTION
673
	IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_ACC_NO) AND @p_ACC_TYPE <> 'ENTRIES' )
674
	BEGIN
675
		ROLLBACK TRANSACTION
676
		SELECT '-1' as Result, '' ACC_ID, N'Tài khoản tạm ứng của đã tồn tại trong hệ thống' ErrorDesc
677
		RETURN '-1'
678
	END
679
	IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_TYPE =@p_ACC_TYPE AND REF_ID =@p_USER_ID) AND @p_ACC_TYPE <> 'ENTRIES' )
680
	BEGIN
681
		ROLLBACK TRANSACTION
682
		SELECT '-1' as Result, '' ACC_ID, N'Tài khoản tạm ứng của nhân viên ' +@p_USER_ID + N' đã tồn tại trong hệ thống' ErrorDesc
683
		RETURN '-1'
684
	END
685
	IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_TYPE =@p_ACC_TYPE AND REF_ID =@p_USER_ID) AND @p_ACC_TYPE = 'ENTRIES' )
686
	BEGIN
687
		ROLLBACK TRANSACTION
688
		SELECT '-1' as Result, '' ACC_ID, N'Tài khoản hạch toán ' + @p_ACC_NO + N' đã tồn tại trong hệ thống' ErrorDesc
689
		RETURN '-1'
690
	END
691
	IF(@p_TK_GL ='' OR @p_TK_GL IS NULL)
692
	BEGIN
693
	ROLLBACK TRANSACTION
694
		SELECT '-1' as Result, '' ACC_ID, N'Tài khoản GL không được phép để trống' ErrorDesc
695
		RETURN '-1'
696
	END
697
	IF(@p_TK_GL_NAME ='' OR @p_TK_GL_NAME IS NULL)
698
	BEGIN
699
	ROLLBACK TRANSACTION
700
		SELECT '-1' as Result, '' ACC_ID, N'Tên tài khoản GL không được phép để trống' ErrorDesc
701
		RETURN '-1'
702
	END
703
	IF(@p_ACC_NO ='' OR @p_ACC_NO IS NULL)
704
	BEGIN
705
	ROLLBACK TRANSACTION
706
		SELECT '-1' as Result, '' ACC_ID, N'Số tài khoản không được phép để trống' ErrorDesc
707
		RETURN '-1'
708
	END
709
	IF(@p_ACC_NAME ='' OR @p_ACC_NAME IS NULL)
710
	BEGIN
711
	ROLLBACK TRANSACTION
712
		SELECT '-1' as Result, '' ACC_ID, N'Tên tài khoản không được phép để trống' ErrorDesc
713
		RETURN '-1'
714
	END
715
	IF(@p_ACC_TYPE ='ADV_PAY')
716
	BEGIN
717
		INSERT INTO CM_ACCOUNT_PAY (REF_ID,ACC_TYPE,ACC_NUM,ACC_NAME,FUNTION,TK_GL,CREATE_DT,MAKER_ID,EDITOR_ID,EDITOR_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,TK_GL_NAME) 
718
		VALUES (@p_USER_ID,@p_ACC_TYPE,@p_ACC_NO,@p_ACC_NAME,'I',@p_TK_GL,GETDATE(),@p_MAKER_ID,NULL,NULL,'U',NULL,NULL,@p_TK_GL_NAME)
719
		-- THEM VAO BANG TAI KHOAN DUNG DE HACH TOAN
720
		IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@p_ACC_NO))
721
		BEGIN
722
			INSERT INTO CM_ACCOUNT(ACC_NO,ACC_NAME,TK_GL,TK_GL_NAME,MAKER_ID,CREATE_DT,AUTH_STATUS,EDITOR_ID,EDITOR_DT,CHECKER_ID,APPROVE_DT) 
723
			VALUES (@p_ACC_NO,@p_ACC_NAME,@p_TK_GL,@p_TK_GL_NAME,@p_MAKER_ID,GETDATE(),'U',NULL,NULL,NULL,NULL)
724
		END
725
		ELSE
726
		BEGIN
727
			UPDATE CM_ACCOUNT SET TK_GL =@p_TK_GL, TK_GL_NAME = @p_TK_GL_NAME WHERE ACC_NO =@p_ACC_NO
728
		END
729
	END
730
	ELSE
731
	BEGIN
732
		IF(EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@p_ACC_NO))
733
		BEGIN
734
			ROLLBACK TRANSACTION
735
			SELECT '-1' as Result, '' ACC_ID, N'Tài khoản hạch toán đã tồn tại trong hệ thống' ErrorDesc
736
			RETURN '-1'
737
		END
738
		ELSE
739
		BEGIN
740
			INSERT INTO CM_ACCOUNT(ACC_NO,ACC_NAME,TK_GL,TK_GL_NAME,MAKER_ID,CREATE_DT,AUTH_STATUS,EDITOR_ID,EDITOR_DT,CHECKER_ID,APPROVE_DT) 
741
			VALUES (@p_ACC_NO,@p_ACC_NAME,@p_TK_GL,@p_TK_GL_NAME,@p_MAKER_ID,GETDATE(),'U',NULL,NULL,NULL,NULL)
742
		END
743
	END
744
COMMIT TRANSACTION
745
SELECT '0' as Result, ''  ACC_ID, '' ErrorDesc
746
RETURN '0'
747
ABORT:
748
BEGIN
749
		ROLLBACK TRANSACTION
750
		SELECT '-1' as Result, '' ACC_ID, '' ErrorDesc
751
		RETURN '-1'
752
END
753
¿
754

    
755

    
756

    
757
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_KT_Upd]
758
@p_REQ_PAY_ID	varchar(15)= NULL,
759
@p_REQ_PAY_CODE	varchar(50)	= NULL,
760
@p_REQ_DT VARCHAR(20)= NULL,
761
@p_BRANCH_ID	varchar(15)	= NULL,
762
@p_DEP_ID	varchar(15)	= NULL,
763
@p_REQ_REASON	nvarchar(MAX)	= NULL,
764
@p_REQ_TYPE	varchar(15)	= NULL,
765
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
766
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
767
@p_REF_ID	varchar(15)	= NULL,
768
@p_RECEIVER_PO	nvarchar(250)	= NULL,
769
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
770
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
771
@p_REQ_AMT	decimal(18, 0)	= NULL,
772
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
773
@p_MAKER_ID	varchar(15)	= NULL,
774
@p_CREATE_DT	varchar(25)	= NULL,
775
@p_EDITOR_ID	varchar(15)	= NULL,
776
@p_AUTH_STATUS	varchar(1)	= NULL,
777
@p_CHECKER_ID	varchar(15)	= NULL,
778
@p_APPROVE_DT	varchar(25)	= NULL,
779
@p_CREATE_DT_KT	varchar(25)	= NULL,
780
@p_MAKER_ID_KT	varchar(15)	= NULL,
781
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
782
@p_CHECKER_ID_KT	varchar(1)	= NULL,
783
@p_APPROVE_DT_KT  varchar(25)= null,
784
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
785
@p_BRANCH_CREATE	varchar(15)	= NULL,
786
@p_NOTES	varchar(15)	= NULL,
787
@p_RECORD_STATUS	varchar(1)	= NULL,
788
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
789
@p_TRANSFER_DT	varchar(25)	= NULL,
790
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
791
@p_PROCESS	varchar(15)	= NULL,
792
@p_PAY_PHASE VARCHAR(15) = NULL,
793
@p_XMP_TEMP XML = NULL,
794
@p_XMP_TEMP_2 XML = NULL
795
AS
796

    
797
--Validation is here
798
IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
799
	BEGIN
800
		SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị thanh toán đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
801
		RETURN '-1'
802
	END
803
	DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(500), @AMT decimal(18,2),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0),
804
		@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000),@GL_CODE VARCHAR(100)
805
	DECLARE @VAT decimal(18, 0) =NULL, @TRANS_NO nvarchar(50)=NULL, @TRANS_DT VARCHAR(20)=NULL,@INVOICE_SIGN nvarchar(50) = NULL,@INVOICE_NO_SIGN nvarchar(50)=null,
806
		@INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER nvarchar(250) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(250) = NULL,
807
		@PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2),
808
		@ACC_NO VARCHAR(25),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250),@ISSUED_DT VARCHAR(20),@RATE DECIMAL(18,2),@PRICE_KT DECIMAL(18,2) =0,@TOTAL_AMT_KT DECIMAL(18,2) =0,@VAT_KT DECIMAL(18,2) =0,
809
		@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15)
810
DECLARE @hdoc INT;
811
	EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
812
	DECLARE XmlData CURSOR FOR
813
	SELECT *
814
	FROM
815
	OPENXML(@hdoc, '/Root/XmlData', 2)
816
	WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), EXC_RATE DECIMAL(18,0),
817
	BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000),GL_CODE VARCHAR(100))
818
	OPEN XmlData;
819
	---
820
	DECLARE XmlInvoice CURSOR FOR
821
	SELECT *
822
	FROM
823
	OPENXML(@hdoc, '/Root/XmlInvoice', 2)
824
	WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
825
		 INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) ,
826
		 PRICE decimal(18,2),TAX decimal(18, 2),VAT decimal(18,2),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,2),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
827
		OPEN XmlInvoice;
828
	DECLARE @INDEX INT  =0, @INDEX_IV INT =0
829
	BEGIN TRANSACTION
830
		-- KHAI BAO CAC BUOC DUYET- XAC NHAN
831
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
832
		SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT AND STATUS_JOB='C')
833
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
834
		----
835
		--IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND MAKER_ID_KT IS NULL))
836

    
837
		IF(@p_XMP_TEMP IS NOT NULL)
838
		BEGIN
839
			UPDATE TR_REQ_PAYMENT SET 
840
			AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT,CHECKER_ID_KT=NULL,APPROVE_DT_KT = NULL, CONFIRM_NOTE=@p_CONFIRM_NOTE
841
			WHERE REQ_PAY_ID =@p_REQ_PAY_ID
842
			DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
843
			DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID= @p_REQ_PAY_ID
844
		IF @@Error <> 0 GOTO ABORT
845
		DECLARE @DR_CR_NAME NVARCHAR(50),@ACC_NAME_FN NVARCHAR(500)
846
		FETCH NEXT FROM XmlData INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
847
		WHILE @@fetch_status=0 BEGIN
848
			SET @INDEX = @INDEX +1
849
			SET @GL_CODE = RIGHT(@GL_CODE,9)
850
			IF(@DR_CR='D')
851
			BEGIN
852
				SET @DR_CR_NAME =N'Nợ'
853
			END
854
			ELSE
855
			BEGIN
856
				SET @DR_CR_NAME =N'Có'
857
			END
858
			SET @ACC_NAME_FN =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@ACCT)
859
			IF((@ACCT_NAME IS NULL OR @ACCT_NAME ='' OR @ACC_NAME_FN IS NULL OR @ACC_NAME_FN ='' ) OR (ISNULL(@ACCT_NAME,'') <> ISNULL(@ACC_NAME_FN,'')))
860
			BEGIN
861
				ROLLBACK TRANSACTION
862
				CLOSE XmlData;
863
				DEALLOCATE XmlData;
864
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tên tài khoản hạch toán chưa đúng. Vui lòng bấm vào nút Check GL & Check CASA để đồng bộ tài khoản từ Core' ErrorDesc
865
				RETURN '-1'
866
			END
867
			IF(@DR_CR IS NULL OR @DR_CR ='')
868
			BEGIN
869
				ROLLBACK TRANSACTION
870
				CLOSE XmlData;
871
				DEALLOCATE XmlData;
872
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản nợ không được phép để trống' ErrorDesc
873
				RETURN '-1'
874
			END
875
			IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
876
			BEGIN
877
				ROLLBACK TRANSACTION
878
				CLOSE XmlData;
879
				DEALLOCATE XmlData;
880
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Đơn vị nhận không được phép để trống' ErrorDesc
881
				RETURN '-1'
882
			END
883
			IF(@ACCT IS NULL OR @ACCT ='')
884
			BEGIN
885
				ROLLBACK TRANSACTION
886
				CLOSE XmlData;
887
				DEALLOCATE XmlData;
888
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản có không được phép để trống' ErrorDesc
889
				RETURN '-1'
890
			END
891
			IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
892
			BEGIN
893
				ROLLBACK TRANSACTION
894
				CLOSE XmlData;
895
				DEALLOCATE XmlData;
896
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
897
				RETURN '-1'
898
			END
899
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACCT AND REQ_PAY_ID =@p_REQ_PAY_ID))
900
			BEGIN
901
				IF(@DR_CR ='C' AND ISNULL(@AMT,0) <> (SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACCT AND REQ_PAY_ID =@p_REQ_PAY_ID))
902
				BEGIN
903
					ROLLBACK TRANSACTION
904
					CLOSE XmlData;
905
					DEALLOCATE XmlData;
906
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Số tiền hạch toán có của tài khoản: '+@ACCT + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACCT AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###')  ErrorDesc
907
					RETURN '-1'
908
				END
909
			END
910
			DECLARE @p_ET_ID VARCHAR(15);
911
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
912
			IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
913
			INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR,DR_CR_NAME,ACCT,ACCT_NAME,AMT,CURRENCY,EXC_RATE,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT)
914
			VALUES (@p_ET_ID,@p_REQ_PAY_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT)
915
			-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
916
			IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
917
			BEGIN
918
				INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID,CREATE_DT) VALUES
919
				(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin',GETDATE())
920
			END
921
			ELSE
922
			BEGIN
923
				IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
924
					BEGIN
925
						UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE)
926
						WHERE ACC_NO=@ACCT
927
				END
928
				--UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE), CREATE_DT = GETDATE()
929
				--WHERE ACC_NO=@ACCT
930
			END
931
			---
932
			IF @@error<>0 GOTO ABORT;
933
		FETCH NEXT FROM XmlData INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
934
		END;
935
	CLOSE XmlData;
936
	DEALLOCATE XmlData;
937
	-- UPDATE INVOICE
938
	--Insert XmlData
939
		
940
		FETCH NEXT FROM XmlInvoice  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
941
		@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
942
		WHILE @@fetch_status=0 BEGIN
943
			SET @INDEX_IV = @INDEX_IV+1
944
			IF(LEN(@INVOICE_NO) >7)
945
				BEGIN
946
					ROLLBACK TRANSACTION
947
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' không được lớn hơn 7 kí tự' ErrorDesc
948
					RETURN '-1'
949
				END	
950
			  IF(LEN(@INVOICE_NO) <7)
951
				BEGIN
952
					ROLLBACK TRANSACTION
953
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' phải đủ 7 kí tự' ErrorDesc
954
					RETURN '-1'
955
				END	
956
				IF(@TYPE_FUNC ='HC')
957
				BEGIN
958
					IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND 
959
					TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='HC' AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS <> 'E')))
960
					BEGIN
961
						ROLLBACK TRANSACTION
962
						SELECT '-1' as Result, '' REQ_PAY_ID,N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
963
						RETURN '-1'
964
					END	
965
				END
966
				IF(@TYPE_FUNC ='KT')
967
				BEGIN
968
					IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
969
											AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='KT' AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS <> 'E')))
970
					BEGIN
971
						ROLLBACK TRANSACTION
972
						SELECT '-1' as Result, '' REQ_PAY_ID,N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
973
						RETURN '-1'
974
					END	
975
				END
976
			DECLARE @p_REQ_INV_ID VARCHAR(15);
977
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
978
			IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
979
			INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE,
980
		MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT,
981
		CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
982
		VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103)  ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,
983
		@p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC)
984
		IF @@error<>0 GOTO ABORT;
985
		FETCH NEXT FROM XmlInvoice
986
		INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
987
		@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
988
		END;
989
		CLOSE XmlInvoice;
990
		DEALLOCATE XmlInvoice;
991
		--- Luu log chinh sua
992
		INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
993
		-----
994
	--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
995
	END
996
	COMMIT TRANSACTION
997
	IF(@p_XMP_TEMP IS NULL)
998
			BEGIN
999
				IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
1000
				BEGIN
1001
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
1002
					RETURN '-1'
1003
				END
1004
				IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
1005
				BEGIN
1006
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê  duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
1007
					RETURN '-1'
1008
				END
1009
				-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
1010
				IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
1011
				BEGIN
1012
					DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
1013
					SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0)
1014
					SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0)
1015
					IF(@SUM_CR <> @SUM_DR)
1016
					BEGIN
1017
					--ROLLBACK TRANSACTION
1018
					--CLOSE XmlData;
1019
					--DEALLOCATE XmlData;
1020
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có' ErrorDesc
1021
						RETURN '-1'
1022
					END
1023
				END
1024
				UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
1025
				UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
1026
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
1027
				UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT = GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
1028
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1029
				VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID_KT,GETDATE(), N'Giao dịch viên gửi phê duyệt',N'Giao dịch viên cập nhật thông tin')
1030
				SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được gửi phê duyệt thành công! Vui lòng đợi kiểm soát viên phê duyệt phiếu' ErrorDesc
1031
				RETURN '4'
1032
END
1033
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
1034
RETURN '0'
1035
ABORT:
1036
BEGIN
1037
		ROLLBACK TRANSACTION
1038
		CLOSE XmlData;
1039
		DEALLOCATE XmlData;
1040
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
1041
		RETURN '-1'
1042
End
1043

    
1044
¿
1045

    
1046

    
1047
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Upd]
1048
@p_REQ_PAY_ID	varchar(15)= NULL,
1049
@p_REQ_PAY_CODE	varchar(50)	= NULL,
1050
@p_REQ_DT VARCHAR(20)= NULL,
1051
@p_BRANCH_ID	varchar(15)	= NULL,
1052
@p_DEP_ID	varchar(15)	= NULL,
1053
@p_REQ_REASON	nvarchar(MAX)	= NULL,
1054
@p_REQ_TYPE	varchar(15)	= NULL,
1055
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
1056
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
1057
@p_REF_ID	varchar(15)	= NULL,
1058
@p_RECEIVER_PO	nvarchar(250)	= NULL,
1059
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
1060
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
1061
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
1062
@p_REQ_AMT	decimal(18, 0)	= NULL,
1063
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
1064
@p_MAKER_ID	varchar(15)	= NULL,
1065
@p_CREATE_DT	varchar(25)	= NULL,
1066
@p_EDITOR_ID	varchar(15)	= NULL,
1067
@p_AUTH_STATUS	varchar(1)	= NULL,
1068
@p_CHECKER_ID	varchar(15)	= NULL,
1069
@p_APPROVE_DT	varchar(25)	= NULL,
1070
@p_CREATE_DT_KT	varchar(25)	= NULL,
1071
@p_MAKER_ID_KT	varchar(15)	= NULL,
1072
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
1073
@p_CHECKER_ID_KT	varchar(1)	= NULL,
1074
@p_APPROVE_DT_KT  varchar(25)= null,
1075
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
1076
@p_BRANCH_CREATE	varchar(15)	= NULL,
1077
@p_NOTES	varchar(15)	= NULL,
1078
@p_RECORD_STATUS	varchar(1)	= NULL,
1079
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
1080
@p_TRANSFER_DT	varchar(25)	= NULL,
1081
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
1082
@p_PROCESS	varchar(15)	= NULL,
1083
@p_PAY_PHASE VARCHAR(15)= NULL,
1084
@p_DVDM_ID VARCHAR(15) = NULL,
1085
@p_RATE DECIMAL(18,0)= 0,
1086
@p_XMP_TEMP XML = NULL
1087
AS
1088
--Validation is here
1089
/*
1090
END 
1091
*/
1092
DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(500), @AMT decimal(18,2),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0),
1093
	@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000),@GL_CODE VARCHAR(10)
1094
DECLARE @hdoc INT;
1095
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
1096
DECLARE XmlData CURSOR FOR
1097
SELECT *
1098
FROM
1099
	OPENXML(@hdoc, '/Root/XmlData', 2)
1100
	WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), EXC_RATE DECIMAL(18,0),
1101
	BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000), GL_CODE VARCHAR(10))
1102
	OPEN XmlData;
1103
	DECLARE @INDEX INT  =0
1104
BEGIN TRANSACTION
1105
		-- KHAI BAO CAC BUOC DUYET- XAC NHAN
1106
		DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
1107
		SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT AND TYPE_JOB ='XL')
1108
		SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
1109
		----
1110
		--IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND MAKER_ID_KT IS NULL))
1111
		IF(@p_XMP_TEMP IS NOT NULL)
1112
		BEGIN
1113
			UPDATE TR_REQ_ADVANCE_PAYMENT SET 
1114
			AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT,CHECKER_ID_KT=NULL,APPROVE_DT_KT = NULL, CONFIRM_NOTES=@p_CONFIRM_NOTE
1115
			WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1116
			DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1117
		IF @@Error <> 0 GOTO ABORT
1118
		DECLARE @DR_CR_NAME NVARCHAR(50)
1119
		FETCH NEXT FROM XmlData INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
1120
		WHILE @@fetch_status=0 BEGIN
1121

    
1122
			SET @INDEX = @INDEX +1
1123
			IF(@DR_CR='D')
1124
			BEGIN
1125
				SET @DR_CR_NAME =N'Nợ'
1126
			END
1127
			ELSE
1128
			BEGIN
1129
				SET @DR_CR_NAME =N'Có'
1130
			END
1131
			SET @ACCT_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@ACCT)
1132
			IF(@ACCT_NAME IS NULL OR @ACCT_NAME ='')
1133
			BEGIN
1134
				ROLLBACK TRANSACTION
1135
				CLOSE XmlData;
1136
				DEALLOCATE XmlData;
1137
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tên tài khoản hạch toán chưa đúng. Vui lòng bấm vào nút Check GL & Check CASA để đồng bộ tài khoản từ Core' ErrorDesc
1138
				RETURN '-1'
1139
			END
1140
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACCT AND REQ_PAY_ID =@p_REQ_PAY_ID))
1141
			BEGIN
1142
				IF(@DR_CR ='C' AND ISNULL(@AMT,0) <> (SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACCT AND REQ_PAY_ID =@p_REQ_PAY_ID))
1143
				BEGIN
1144
					ROLLBACK TRANSACTION
1145
					CLOSE XmlData;
1146
					DEALLOCATE XmlData;
1147
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Số tiền hạch toán có của tài khoản: '+@ACCT + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACCT AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###')  ErrorDesc
1148
					RETURN '-1'
1149
				END
1150
			END
1151
			--IF(@DR_ACCT IS NULL OR @DR_ACCT ='')
1152
			--BEGIN
1153
			--	ROLLBACK TRANSACTION
1154
			--	CLOSE XmlData;
1155
			--	DEALLOCATE XmlData;
1156
			--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản có không được phép để trống' ErrorDesc
1157
			--	RETURN '-1'
1158
			--END
1159
			--IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
1160
			--BEGIN
1161
			--	ROLLBACK TRANSACTION
1162
			--	CLOSE XmlData;
1163
			--	DEALLOCATE XmlData;
1164
			--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
1165
			--	RETURN '-1'
1166
			--END
1167
			DECLARE @p_ET_ID VARCHAR(15);
1168
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
1169
			IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
1170
			INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR, DR_CR_NAME,ACCT,ACCT_NAME,AMT,CURRENCY,EXC_RATE,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT)
1171
			VALUES (@p_ET_ID,@p_REQ_PAY_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT)
1172

    
1173
			-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
1174
			IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
1175
			BEGIN
1176
				INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID) VALUES
1177
				(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin')
1178
			END
1179
			ELSE
1180
			BEGIN
1181
				IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
1182
					BEGIN
1183
						UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE)
1184
						WHERE ACC_NO=@ACCT
1185
				END
1186
			END
1187
			IF @@error<>0 GOTO ABORT;
1188
		FETCH NEXT FROM XmlData INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
1189
		END;
1190
	CLOSE XmlData;
1191
	DEALLOCATE XmlData;
1192
	END
1193
COMMIT TRANSACTION
1194
--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
1195
	IF(@p_XMP_TEMP IS NULL)
1196
	BEGIN
1197
		-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
1198
		IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
1199
		BEGIN
1200
			DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
1201
			SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0)
1202
			SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0)
1203
			IF(@SUM_CR<>@SUM_DR)
1204
			BEGIN
1205
			--ROLLBACK TRANSACTION
1206
			--CLOSE XmlData;
1207
			--DEALLOCATE XmlData;
1208
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có' ErrorDesc
1209
				RETURN '-1'
1210
			END
1211
		END
1212
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
1213
		UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
1214
		-- CAP NHAT TINH TRANG VE DANG XU LY
1215
		UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT =GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
1216
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1217
				   VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID_KT,GETDATE(), N'Giao dịch viên gửi phê duyệt phiếu',N'Giao dịch viên cập nhật thông tin')
1218
		SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N'đã được gửi phê duyệt thành công! Vui lòng đợi kiểm soát viên phê duyệt phiếu' ErrorDesc
1219
		RETURN '4'
1220
	END
1221
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
1222
RETURN '0'
1223
ABORT:
1224
BEGIN
1225
		ROLLBACK TRANSACTION
1226
		CLOSE XmlData;
1227
		DEALLOCATE XmlData;
1228
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
1229
		RETURN '-1'
1230
End
1231

    
1232
¿
1233

    
1234

    
1235

    
1236

    
1237
ALTER PROCEDURE [dbo].[TR_REQ_PAY_TRANSFER_V1_Upd]
1238
@p_TRANSFER_ID	varchar(15),
1239
@p_TRANSFER_CODE varchar(15),
1240
@p_REQ_PAY_ID	varchar(15)	,
1241
@p_MAKER_ID	varchar(15)	,
1242
@p_CREATE_DT	VARCHAR(25)	,
1243
@p_AUTH_STATUS	varchar(15)	,
1244
@p_CHECKER_ID	varchar(15)	,
1245
@p_APPROVE_DT	datetime,	
1246
@p_FR_USER	varchar(15)	,
1247
@p_TO_USER	varchar(15)	,
1248
@p_REASON	nvarchar(4000),	
1249
@p_NOTES	nvarchar(4000)	,
1250
@p_DESCRIPTION	nvarchar(4000),	
1251
@p_CONFIRM_NOTES	nvarchar(4000)	,
1252
@p_FR_ACC VARCHAR(50),
1253
@p_TO_ACC VARCHAR(50),
1254
@p_MAKER_ID_KT	varchar(15),
1255
@P_LISTASSET XML,
1256
@P_LISTASSET_v1 XML
1257
AS
1258
	IF(@p_FR_USER ='' or @p_FR_USER IS NULL)
1259
	BEGIN
1260
			--ROLLBACK TRANSACTION
1261
			SELECT '-1' Result, @p_TRANSFER_ID AS TRANSFER_ID, N'Người cho phiếu không được để trống' AS ErrorDesc 
1262
			RETURN '-1'
1263
	END
1264
	IF(@p_TO_USER ='' or @p_TO_USER IS NULL)
1265
	BEGIN
1266
			--ROLLBACK TRANSACTION
1267
			SELECT '-1' Result, @p_TRANSFER_ID AS TRANSFER_ID, N'Người nhận phiếu không được để trống' AS ErrorDesc 
1268
			RETURN '-1'
1269
	END
1270
	IF(@p_CONFIRM_NOTES ='' or @p_CONFIRM_NOTES IS NULL)
1271
	BEGIN
1272
			--ROLLBACK TRANSACTION
1273
			SELECT '-1' Result, @p_TRANSFER_ID AS TRANSFER_ID, N'Lý do điều chuyển không được để trống' AS ErrorDesc 
1274
			RETURN '-1'
1275
	END
1276
	Declare @hdoc INT
1277
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTASSET
1278
	DECLARE TransferDetail CURSOR LOCAL FOR
1279
	SELECT *
1280
	FROM OPENXML(@hDoc,'/Root/TransferDetail',2)
1281
	WITH 
1282
	(
1283
		TRAN_DT_ID	varchar(15)				 ,
1284
		TRANSFER_ID	varchar(15)				 ,
1285
		REQ_PAY_ID	varchar(15)				 ,
1286
		TOTAL_AMT	decimal(18, 0)			 ,
1287
		TOAL_AMT_DO	decimal(18, 0)			 ,
1288
		TOTAL_AMT_REMAIN	decimal(18, 0)	 ,
1289
		TOTAL_AMT_REAL	decimal(18, 0)		 ,
1290
		TOTAL_AMT_REMAIN_FN	decimal(18, 0)	 ,
1291
		NOTES	nvarchar(4000)				 ,
1292
		REASON	nvarchar(4000)				 
1293
	)
1294
	OPEN TransferDetail
1295
	PRINT 'PASS KHOI TAO'
1296
	BEGIN TRANSACTION
1297
		--insert master
1298
		--DECLARE @l_CONTRACT_ID VARCHAR(15)
1299
		UPDATE TR_REQ_PAY_TRANSFER SET REASON =@p_REASON, CONFIRM_NOTES =@p_CONFIRM_NOTES WHERE TRANSFER_ID =@p_TRANSFER_ID
1300
		IF @@Error <> 0 GOTO ABORT
1301
		PRINT 'INSERT MASTER SUCCESS'
1302

    
1303
		Declare 
1304
		@l_TRAN_DT_ID	varchar(15)				 ,
1305
		@l_TRANSFER_ID	varchar(15)				 ,
1306
		@l_REQ_PAY_ID	varchar(15)				 ,
1307
		@l_TOTAL_AMT	decimal(18, 0)			 ,
1308
		@l_TOAL_AMT_DO	decimal(18, 0)			 ,
1309
		@l_TOTAL_AMT_REMAIN	decimal(18, 0)	 ,
1310
		@l_TOTAL_AMT_REAL	decimal(18, 0)		 ,
1311
		@l_TOTAL_AMT_REMAIN_FN	decimal(18, 0)	 ,
1312
		@l_NOTES	nvarchar(4000)				 ,
1313
		@l_REASON	nvarchar(4000)				 
1314
		--Insert detail
1315
		DELETE FROM TR_REQ_PAY_TRANSFER_DT WHERE TRANSFER_ID =@p_TRANSFER_ID OR TRANSFER_ID IS NULL OR TRANSFER_ID =''
1316
		FETCH NEXT FROM TransferDetail INTO @l_TRAN_DT_ID,@l_TRANSFER_ID,@l_REQ_PAY_ID,@l_TOTAL_AMT,@l_TOAL_AMT_DO,@l_TOTAL_AMT_REMAIN,@l_TOTAL_AMT_REAL,@l_TOTAL_AMT_REMAIN_FN,@l_NOTES,@l_REASON
1317
		-- Validate lưới chi tiết rỗng hay không
1318
		IF (@@FETCH_STATUS < 0)
1319
		BEGIN
1320
			ROLLBACK TRANSACTION
1321
			CLOSE TransferDetail;
1322
			DEALLOCATE TransferDetail;
1323
			SELECT '-1' as Result, '' AS TRANSFER_ID, N'Thông tin phiếu đề nghị tạm ứng không được để trống' ErrorDesc
1324
			RETURN '-1'
1325
		END
1326
		DECLARE @IDX INT = 0
1327
		WHILE @@FETCH_STATUS = 0	
1328
		BEGIN
1329
			SET @IDX = @IDX + 1
1330
			-- Kiểm tra nếu PĐN tạm ứng đang được điều chuyển ở một giao dịch khác thì không cho tạo
1331
			IF EXISTS (SELECT A.REQ_PAY_ID FROM TR_REQ_PAY_TRANSFER_DT A
1332
						LEFT JOIN TR_REQ_PAY_TRANSFER B ON A.TRANSFER_ID = B.TRANSFER_ID AND A.REQ_PAY_ID =@l_REQ_PAY_ID
1333
						WHERE B.TRANSFER_ID <> @p_TRANSFER_ID AND B.AUTH_STATUS = 'U')
1334
			BEGIN
1335
				ROLLBACK TRANSACTION
1336
				CLOSE TransferDetail;
1337
				DEALLOCATE TransferDetail;
1338
				SELECT '-1' as Result, '' AS TRANSFER_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@IDX) + N' Phiếu đề nghị tạm ứng đang được điều chuyển ở một giao dịch khác' ErrorDesc
1339
				RETURN '-1'
1340
			END
1341
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_TRANSFER_DT', @l_TRAN_DT_ID out
1342
			IF @l_TRAN_DT_ID='' OR @l_TRAN_DT_ID IS NULL GOTO ABORT
1343
			INSERT INTO TR_REQ_PAY_TRANSFER_DT(TRAN_DT_ID, TRANSFER_ID,REQ_PAY_ID,TOTAL_AMT, TOAL_AMT_DO, TOTAL_AMT_REMAIN, TOTAL_AMT_REAL,  TOTAL_AMT_REMAIN_FN, NOTES, REASON)
1344
			VALUES ( @l_TRAN_DT_ID,@p_TRANSFER_ID,@l_REQ_PAY_ID,@l_TOTAL_AMT,@l_TOAL_AMT_DO,@l_TOTAL_AMT_REMAIN,@l_TOTAL_AMT_REAL,@l_TOTAL_AMT_REMAIN_FN,@l_NOTES,@l_REASON)
1345
			IF @@Error <> 0 GOTO ABORT			
1346
		-- next Group_Id
1347
			FETCH NEXT FROM TransferDetail INTO @l_TRAN_DT_ID,@l_TRANSFER_ID,@l_REQ_PAY_ID,@l_TOTAL_AMT,@l_TOAL_AMT_DO,@l_TOTAL_AMT_REMAIN,@l_TOTAL_AMT_REAL,@l_TOTAL_AMT_REMAIN_FN,@l_NOTES,@l_REASON
1348
		END
1349
	DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(500), @AMT decimal(18,2),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0),
1350
	@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000), @GL_CODE VARCHAR(10)
1351
	DECLARE @hdoc2 INT;
1352
	EXEC sp_xml_preparedocument @hdoc2 OUTPUT, @P_LISTASSET_v1;
1353
	DECLARE XmlData CURSOR LOCAL FOR
1354
	SELECT *
1355
	FROM
1356
	OPENXML(@hdoc2, '/Root/XmlData', 2)
1357
	WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), EXC_RATE DECIMAL(18,0),
1358
	BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000),GL_CODE VARCHAR(10))
1359
	OPEN XmlData;
1360
		DECLARE @DR_CR_NAME NVARCHAR(50), @INDEX INT =0, @ACC_NAME_FN VARCHAR(500)
1361
		--
1362
		DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_TRANSFER_ID
1363
		FETCH NEXT FROM XmlData INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
1364
		WHILE @@fetch_status=0 BEGIN
1365
			SET @INDEX= @INDEX+1
1366
			IF(@DR_CR='D')
1367
			BEGIN
1368
				SET @DR_CR_NAME =N'Nợ'
1369
			END
1370
			ELSE
1371
			BEGIN
1372
				SET @DR_CR_NAME =N'Có'
1373
			END
1374
			IF(@DR_CR IS NULL OR @DR_CR ='')
1375
			BEGIN
1376
				ROLLBACK TRANSACTION
1377
				CLOSE XmlData;
1378
				DEALLOCATE XmlData;
1379
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản nợ không được phép để trống' ErrorDesc
1380
				RETURN '-1'
1381
			END
1382
			IF(@ACCT IS NULL OR @ACCT ='')
1383
			BEGIN
1384
				ROLLBACK TRANSACTION
1385
				--CLOSE XmlData;
1386
				--DEALLOCATE XmlData;
1387
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản có không được phép để trống' ErrorDesc
1388
				RETURN '-1'
1389
			END
1390
			IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
1391
			BEGIN
1392
				ROLLBACK TRANSACTION
1393
				--CLOSE XmlData;
1394
				--DEALLOCATE XmlData;
1395
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
1396
				RETURN '-1'
1397
			END
1398
			IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
1399
			BEGIN
1400
				ROLLBACK TRANSACTION
1401
				--CLOSE XmlData;
1402
				--DEALLOCATE XmlData;
1403
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Đơn vị không được phép để trống' ErrorDesc
1404
				RETURN '-1'
1405
			END
1406
			SET @ACC_NAME_FN =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@ACCT)
1407
			IF(@ACC_NAME_FN IS NULL OR @ACC_NAME_FN ='')
1408
			BEGIN
1409
					SET @ACC_NAME_FN =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@ACCT)
1410
			END
1411
			IF((@ACCT_NAME IS NULL OR @ACCT_NAME ='' OR @ACC_NAME_FN IS NULL OR @ACC_NAME_FN ='' ) OR (ISNULL(@ACCT_NAME,'') <> ISNULL(@ACC_NAME_FN,'')))
1412
			BEGIN
1413
				ROLLBACK TRANSACTION
1414
				--CLOSE XmlData;
1415
				--DEALLOCATE XmlData;
1416
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tên tài khoản hạch toán chưa đúng. Vui lòng bấm vào nút Check GL & Check CASA để đồng bộ tài khoản từ Core' ErrorDesc
1417
				RETURN '-1'
1418
			END
1419
			DECLARE @p_ET_ID VARCHAR(15);
1420
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
1421
			IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
1422
			INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR,DR_CR_NAME,ACCT,ACCT_NAME,AMT,CURRENCY,EXC_RATE,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT)
1423
			VALUES (@p_ET_ID,@p_TRANSFER_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE, @BRANCH_ID, @DEP_ID,UPPER(@TRN_DESC),GETDATE(),@p_MAKER_ID_KT)
1424
			-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
1425
			IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
1426
			BEGIN
1427
				INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID) VALUES
1428
				(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin')
1429
			END
1430
			ELSE
1431
			BEGIN
1432
				IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
1433
				BEGIN
1434
					UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE)
1435
					WHERE ACC_NO=@ACCT
1436
				END
1437
			END
1438
			IF @@error<>0 GOTO ABORT;
1439
		FETCH NEXT FROM XmlData INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
1440
		END;
1441
	CLOSE XmlData;
1442
	DEALLOCATE XmlData;	
1443
	IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_TRANSFER_ID))
1444
			BEGIN
1445
				DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
1446
				SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_TRANSFER_ID AND DR_CR ='C'),0)
1447
				SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_TRANSFER_ID AND DR_CR ='D'),0)
1448
				IF(@SUM_CR <> @SUM_DR)
1449
				BEGIN
1450
					ROLLBACK TRANSACTION
1451
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có: ' + FORMAT(@SUM_DR,'#,###') ErrorDesc
1452
					RETURN '-1'
1453
				END
1454
	END
1455
COMMIT TRANSACTION
1456
SELECT '0' as Result, @p_TRANSFER_ID  TRANSFER_ID, N'Giao dịch điều chuyển tạm ứng có ID: '+ @p_TRANSFER_ID +N' đã được tạo bản nháp thành công. Bạn có thể bấm gửi phê duyệt' ErrorDesc
1457
RETURN '0'
1458
ABORT:
1459
BEGIN
1460
		CLOSE AssetDetail
1461
		DEALLOCATE AssetDetail
1462
		CLOSE PaymentDetail
1463
		DEALLOCATE PaymentDetail
1464
		ROLLBACK TRANSACTION
1465
		SELECT '-1' as Result, '' TRANSFER_ID, '' ErrorDesc
1466
		RETURN '-1'
1467
End
1468

    
1469
¿
1470

    
1471

    
1472
ALTER PROCEDURE [dbo].[TR_REQ_PAY_TRANSFER_Ins]
1473
@p_TRANSFER_ID	varchar(15) = NULL,
1474
@p_TRANSFER_CODE varchar(15),
1475
@p_REQ_PAY_ID	varchar(15)	,
1476
@p_MAKER_ID	varchar(15)	,
1477
@p_CREATE_DT	VARCHAR(25)	,
1478
@p_AUTH_STATUS	varchar(15)	,
1479
@p_CHECKER_ID	varchar(15)	,
1480
@p_APPROVE_DT	datetime,	
1481
@p_FR_USER	varchar(15)	,
1482
@p_TO_USER	varchar(15)	,
1483
@p_REASON	nvarchar(4000),	
1484
@p_NOTES	nvarchar(4000)	,
1485
@p_DESCRIPTION	nvarchar(4000),	
1486
@p_CONFIRM_NOTES	nvarchar(4000),
1487
@p_FR_ACC VARCHAR(50),
1488
@p_TO_ACC VARCHAR(50),
1489
@p_MAKER_ID_KT	varchar(15),
1490
@P_LISTASSET XML,
1491
@P_LISTASSET_v1 XML
1492
AS
1493

    
1494
	DECLARE @l_TRANSFER_ID_MASTER VARCHAR(15)
1495
	IF(@p_FR_USER ='' or @p_FR_USER IS NULL)
1496
	BEGIN
1497
			--ROLLBACK TRANSACTION
1498
			SELECT '-1' Result, @p_TRANSFER_ID AS TRANSFER_ID, N'Người cho phiếu không được để trống' AS ErrorDesc 
1499
			RETURN '-1'
1500
	END
1501
	IF(@p_TO_USER ='' or @p_TO_USER IS NULL)
1502
	BEGIN
1503
			--ROLLBACK TRANSACTION
1504
			SELECT '-1' Result, @p_TRANSFER_ID AS TRANSFER_ID, N'Người nhận phiếu không được để trống' AS ErrorDesc 
1505
			RETURN '-1'
1506
	END
1507
	IF(@p_CONFIRM_NOTES ='' or @p_CONFIRM_NOTES IS NULL)
1508
	BEGIN
1509
			--ROLLBACK TRANSACTION
1510
			SELECT '-1' Result, @p_TRANSFER_ID AS TRANSFER_ID, N'Lý do điều chuyển không được để trống' AS ErrorDesc 
1511
			RETURN '-1'
1512
	END
1513
	Declare @hdoc INT
1514
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTASSET
1515
	DECLARE TransferDetail CURSOR LOCAL FOR
1516
	SELECT *
1517
	FROM OPENXML(@hDoc,'/Root/TransferDetail',2)
1518
	WITH 
1519
	(
1520
		TRAN_DT_ID	varchar(15)				 ,
1521
		TRANSFER_ID	varchar(15)				 ,
1522
		REQ_PAY_ID	varchar(15)				 ,
1523
		TOTAL_AMT	decimal(18, 0)			 ,
1524
		TOAL_AMT_DO	decimal(18, 0)			 ,
1525
		TOTAL_AMT_REMAIN	decimal(18, 0)	 ,
1526
		TOTAL_AMT_REAL	decimal(18, 0)		 ,
1527
		TOTAL_AMT_REMAIN_FN	decimal(18, 0)	 ,
1528
		NOTES	nvarchar(4000)				 ,
1529
		REASON	nvarchar(4000)				 
1530
	)
1531
	OPEN TransferDetail
1532
	PRINT 'PASS KHOI TAO'
1533
	BEGIN TRANSACTION
1534
		--insert master
1535
		EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_TRANSFER', @l_TRANSFER_ID_MASTER out
1536
		IF @l_TRANSFER_ID_MASTER='' OR @l_TRANSFER_ID_MASTER IS NULL GOTO ABORT
1537
		INSERT INTO TR_REQ_PAY_TRANSFER (TRANSFER_ID, TRANSFER_CODE,REQ_PAY_ID, MAKER_ID,CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, FR_USER, TO_USER, REASON, NOTES,[DESCRIPTION],CONFIRM_NOTES)
1538
		VALUES (@l_TRANSFER_ID_MASTER, @p_TRANSFER_CODE,@p_REQ_PAY_ID, @p_MAKER_ID,GETDATE(), @p_AUTH_STATUS, @p_CHECKER_ID, NULL, @p_FR_USER, @p_TO_USER, @p_REASON, @p_NOTES,@p_DESCRIPTION,@p_CONFIRM_NOTES)
1539
		IF @@Error <> 0 GOTO ABORT
1540
		PRINT 'INSERT MASTER SUCCESS'
1541

    
1542
		Declare 
1543
		@l_TRAN_DT_ID	varchar(15)				 ,
1544
		@l_TRANSFER_ID	varchar(15)				 ,
1545
		@l_REQ_PAY_ID	varchar(15)				 ,
1546
		@l_TOTAL_AMT	decimal(18, 0)			 ,
1547
		@l_TOAL_AMT_DO	decimal(18, 0)			 ,
1548
		@l_TOTAL_AMT_REMAIN	decimal(18, 0)	 ,
1549
		@l_TOTAL_AMT_REAL	decimal(18, 0)		 ,
1550
		@l_TOTAL_AMT_REMAIN_FN	decimal(18, 0)	 ,
1551
		@l_NOTES	nvarchar(4000)				 ,
1552
		@l_REASON	nvarchar(4000)				 
1553
		-- insert detail
1554
		DECLARE @l_CD_ID VARCHAR(15)
1555
		FETCH NEXT FROM TransferDetail INTO @l_TRAN_DT_ID,@p_TRANSFER_ID,@l_REQ_PAY_ID,@l_TOTAL_AMT,@l_TOAL_AMT_DO,@l_TOTAL_AMT_REMAIN,@l_TOTAL_AMT_REAL,@l_TOTAL_AMT_REMAIN_FN,@l_NOTES,@l_REASON
1556
		-- Validate lưới chi tiết rỗng hay không
1557
		IF (@@FETCH_STATUS < 0)
1558
		BEGIN
1559
			ROLLBACK TRANSACTION
1560
			CLOSE TransferDetail;
1561
			DEALLOCATE TransferDetail;
1562
			SELECT '-1' as Result, '' AS TRANSFER_ID, N'Thông tin phiếu đề nghị tạm ứng không được để trống' ErrorDesc
1563
			RETURN '-1'
1564
		END
1565
		DECLARE @IDX INT = 0
1566
		WHILE @@FETCH_STATUS = 0	
1567
		BEGIN
1568
			SET @IDX = @IDX + 1
1569
			-- Kiểm tra nếu PĐN tạm ứng đang được điều chuyển ở một giao dịch khác thì không cho tạo
1570
		IF EXISTS (SELECT A.REQ_PAY_ID FROM TR_REQ_PAY_TRANSFER_DT A
1571
						LEFT JOIN TR_REQ_PAY_TRANSFER B ON A.TRANSFER_ID = B.TRANSFER_ID AND A.REQ_PAY_ID =@l_REQ_PAY_ID
1572
						WHERE B.AUTH_STATUS = 'U')
1573
			BEGIN
1574
				ROLLBACK TRANSACTION
1575
				CLOSE TransferDetail;
1576
				DEALLOCATE TransferDetail;
1577
				SELECT '-1' as Result, '' AS TRANSFER_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@IDX) + N' Phiếu đề nghị tạm ứng đang được điều chuyển ở một giao dịch khác' ErrorDesc
1578
				RETURN '-1'
1579
			END
1580
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_TRANSFER_DT', @l_TRAN_DT_ID out
1581
			IF @l_TRAN_DT_ID='' OR @l_TRAN_DT_ID IS NULL GOTO ABORT
1582
			INSERT INTO TR_REQ_PAY_TRANSFER_DT(TRAN_DT_ID, TRANSFER_ID,REQ_PAY_ID,TOTAL_AMT, TOAL_AMT_DO, TOTAL_AMT_REMAIN, TOTAL_AMT_REAL,  TOTAL_AMT_REMAIN_FN, NOTES, REASON)
1583
			VALUES ( @l_TRAN_DT_ID,@l_TRANSFER_ID_MASTER,@l_REQ_PAY_ID,@l_TOTAL_AMT,@l_TOAL_AMT_DO,@l_TOTAL_AMT_REMAIN,@l_TOTAL_AMT_REAL,@l_TOTAL_AMT_REMAIN_FN,@l_NOTES,@l_REASON)
1584
			IF @@Error <> 0 GOTO ABORT			
1585
		-- next Group_Id
1586
			FETCH NEXT FROM TransferDetail INTO @l_TRAN_DT_ID,@l_TRANSFER_ID,@l_REQ_PAY_ID,@l_TOTAL_AMT,@l_TOAL_AMT_DO,@l_TOTAL_AMT_REMAIN,@l_TOTAL_AMT_REAL,@l_TOTAL_AMT_REMAIN_FN,@l_NOTES,@l_REASON
1587
		END
1588
		
1589
		DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(500), @AMT decimal(18,2),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0),
1590
			@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000), @GL_CODE VARCHAR(10)
1591
		DECLARE @hdoc2 INT;
1592
		EXEC sp_xml_preparedocument @hdoc2 OUTPUT, @P_LISTASSET_v1;
1593
		DECLARE XmlData CURSOR LOCAL FOR
1594
		SELECT *
1595
		FROM
1596
		OPENXML(@hdoc2, '/Root/XmlData', 2)
1597
		WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), EXC_RATE DECIMAL(18,0),
1598
		BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000),GL_CODE VARCHAR(10))
1599
		OPEN XmlData;
1600
		---
1601
		DECLARE @INDEX INT  =0, @INDEX_IV INT =0,@ACC_NAME_FN VARCHAR(500)
1602
			-- KHAI BAO CAC BUOC DUYET- XAC NHAN
1603
			IF @@Error <> 0 GOTO ABORT
1604
			DECLARE @DR_CR_NAME NVARCHAR(50)
1605
			FETCH NEXT FROM XmlData INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
1606
			WHILE @@fetch_status=0 BEGIN
1607
				SET @INDEX = @INDEX +1
1608

    
1609
				IF(@DR_CR='D')
1610
				BEGIN
1611
					SET @DR_CR_NAME =N'Nợ'
1612
				END
1613
				ELSE
1614
				BEGIN
1615
					SET @DR_CR_NAME =N'Có'
1616
				END
1617
				IF(@DR_CR IS NULL OR @DR_CR ='')
1618
				BEGIN
1619
					ROLLBACK TRANSACTION
1620
					--CLOSE XmlData;
1621
					--DEALLOCATE XmlData;
1622
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản nợ không được phép để trống' ErrorDesc
1623
					RETURN '-1'
1624
				END
1625
				IF(@ACCT IS NULL OR @ACCT ='')
1626
				BEGIN
1627
					ROLLBACK TRANSACTION
1628
					--CLOSE XmlData;
1629
					--DEALLOCATE XmlData;
1630
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản có không được phép để trống' ErrorDesc
1631
					RETURN '-1'
1632
				END
1633
				IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
1634
				BEGIN
1635
					ROLLBACK TRANSACTION
1636
					--CLOSE XmlData;
1637
					--DEALLOCATE XmlData;
1638
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
1639
					RETURN '-1'
1640
				END
1641
				IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
1642
					BEGIN
1643
					ROLLBACK TRANSACTION
1644
					--CLOSE XmlData;
1645
					--DEALLOCATE XmlData;
1646
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Đơn vị không được phép để trống' ErrorDesc
1647
					RETURN '-1'
1648
				END
1649
				SET @ACC_NAME_FN =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@ACCT)
1650
				IF(@ACC_NAME_FN IS NULL OR @ACC_NAME_FN ='')
1651
				BEGIN
1652
					SET @ACC_NAME_FN =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@ACCT)
1653
				END
1654
				IF((@ACCT_NAME IS NULL OR @ACCT_NAME ='' OR @ACC_NAME_FN IS NULL OR @ACC_NAME_FN ='' ) OR (ISNULL(@ACCT_NAME,'') <> ISNULL(@ACC_NAME_FN,'')))
1655
				BEGIN
1656
					ROLLBACK TRANSACTION
1657
					--CLOSE XmlData;
1658
					DEALLOCATE XmlData;
1659
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tên tài khoản hạch toán chưa đúng. Vui lòng bấm vào nút Check GL & Check CASA để đồng bộ tài khoản từ Core' ErrorDesc
1660
					RETURN '-1'
1661
				END
1662
				DECLARE @p_ET_ID VARCHAR(15);
1663
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
1664
				IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
1665
				INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR,DR_CR_NAME,ACCT,ACCT_NAME,AMT,CURRENCY,EXC_RATE,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT)
1666
				VALUES (@p_ET_ID,@l_TRANSFER_ID_MASTER,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT)
1667
				IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
1668
				BEGIN
1669
					INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID) VALUES
1670
					(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin')
1671
				END
1672
				ELSE
1673
				BEGIN
1674
					IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
1675
					BEGIN
1676
						UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE)
1677
						WHERE ACC_NO=@ACCT
1678
					END
1679
			END
1680
				IF @@error<>0 GOTO ABORT;
1681
			FETCH NEXT FROM XmlData INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
1682
			END;
1683
		CLOSE XmlData;
1684
		DEALLOCATE XmlData;
1685
		-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
1686
				IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_TRANSFER_ID))
1687
				BEGIN
1688
					
1689
					--CLOSE XmlData;
1690
					--DEALLOCATE XmlData;
1691
					DECLARE  @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
1692
					SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_TRANSFER_ID AND DR_CR ='C'),0)
1693
					SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_TRANSFER_ID AND DR_CR ='D'),0)
1694
					IF(@SUM_CR <> @SUM_DR)
1695
					BEGIN
1696
						PRINT 'TONG NO TONG CO'
1697
						ROLLBACK TRANSACTION
1698
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có: ' + FORMAT(@SUM_DR,'#,###') ErrorDesc
1699
						RETURN '-1'
1700
					END
1701
				END
1702
COMMIT TRANSACTION
1703
	SELECT '0' as Result, @p_TRANSFER_ID  TRANSFER_ID, N'Giao dịch điều chuyển tạm ứng có ID: '+ @p_TRANSFER_ID +N' đã được tạo bản nháp thành công. Bạn có thể bấm gửi phê duyệt' ErrorDesc
1704
	RETURN '0'
1705
ABORT:
1706
BEGIN
1707
		CLOSE AssetDetail
1708
		DEALLOCATE AssetDetail
1709
		CLOSE PaymentDetail
1710
		DEALLOCATE PaymentDetail
1711
		ROLLBACK TRANSACTION
1712
		SELECT '-1' as Result, '' TRANSFER_ID, '' ErrorDesc
1713
		RETURN '-1'
1714
END
1715

    
1716

    
1717

    
1718

    
1719

    
1720

    
1721

    
1722

    
1723
	
1724

    
1725