/* Run this script on: DESKTOP-Q8R1K35.VCCB_AMS_LIVE_17022023 - This database will be modified to synchronize it with: 118.69.72.241,5036.gAMSPro_BVB_v3_FINAL You are recommended to back up your database before running this script Script created by SQL Compare version 13.1.6.5463 from Red Gate Software Ltd at 2/17/2023 12:32:20 PM */ SET NUMERIC_ROUNDABORT OFF GO SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS ON GO SET XACT_ABORT ON GO SET TRANSACTION ISOLATION LEVEL Serializable GO BEGIN TRANSACTION GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_APPROVE_GROUP_Upd]' GO CREATE PROCEDURE [dbo].[CM_APPROVE_GROUP_Upd] @p_REQ_ID [varchar](50) NULL, @p_GROUP_APPROVE1 NVARCHAR(400)=NULL, @p_GROUP_APPROVE2 NVARCHAR(400)=NULL, @p_GROUP_APPROVE3 NVARCHAR(400)=NULL, @p_GROUP_APPROVE4 NVARCHAR(400)=NULL, @p_CURRENT_STEP INT, @p_DONE BIT OUT AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF( @ERRORSYS <> '' ) BEGIN SELECT '-1' as Result, '' ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN 0 END BEGIN TRANSACTION declare @approveTlb table(STEP_LEVEL INT,USERNAME nvarchar(50),PROCESS BIT) insert into @approveTlb select 1,[value],0 FROM WSISPLIT(@p_GROUP_APPROVE1,';') insert into @approveTlb select 2,[value],0 FROM WSISPLIT(@p_GROUP_APPROVE2,';') insert into @approveTlb select 3,[value],0 FROM WSISPLIT(@p_GROUP_APPROVE3,';') insert into @approveTlb select 4,[value],0 FROM WSISPLIT(@p_GROUP_APPROVE4,';') DECLARE @TOT_APPORVE INT = (SELECT COUNT(*) from @approveTlb) DECLARE @index_approve INT,@l_APPROVE_GROUP_ID nvarchar(50) IF(EXISTS(SELECT * FROM CM_APPROVE_GROUP WHERE REQ_ID=@p_REQ_ID AND IS_REJECT=1)) BEGIN DELETE CM_APPROVE_GROUP WHERE REQ_ID=@p_REQ_ID EXEC SYS_CodeMasters_Gen_Mult 'CM_APPROVE_GROUP',@TOT_APPORVE, @l_APPROVE_GROUP_ID out, @index_approve out INSERT INTO [dbo].[CM_APPROVE_GROUP] ([APPROVE_GROUP_ID] ,[APPROVE_USERNAME] ,[STEP_LEVEL] ,PROCESS_STATUS ,DONE ,[AUTH_STATUS] ,[REQ_ID]) SELECT ('CAG' + right('0000000000000'+convert(varchar(15),(@index_approve -1 + row_number() over(order by (select 1)))),10)), USERNAME ,STEP_LEVEL ,0 ,0 ,'U' ,@p_REQ_ID FROM @approveTlb END ELSE BEGIN DELETE FROM CM_APPROVE_GROUP WHERE REQ_ID=@p_REQ_ID AND APPROVE_USERNAME NOT IN (SELECT USERNAME FROM @approveTlb A WHERE A.STEP_LEVEL=CM_APPROVE_GROUP.STEP_LEVEL) SET @TOT_APPORVE = (SELECT COUNT(*) from @approveTlb A WHERE USERNAME NOT IN(SELECT APPROVE_USERNAME FROM CM_APPROVE_GROUP G WHERE REQ_ID=@p_REQ_ID AND A.STEP_LEVEL=G.STEP_LEVEL)) UPDATE @approveTlb SET PROCESS=1 WHERE STEP_LEVEL=@p_CURRENT_STEP EXEC SYS_CodeMasters_Gen_Mult 'CM_APPROVE_GROUP',@TOT_APPORVE, @l_APPROVE_GROUP_ID out, @index_approve out INSERT INTO [dbo].[CM_APPROVE_GROUP] ([APPROVE_GROUP_ID] ,[APPROVE_USERNAME] ,[STEP_LEVEL] ,PROCESS_STATUS ,DONE ,[AUTH_STATUS] ,[REQ_ID]) SELECT ('CAG' + right('0000000000000'+convert(varchar(15),(@index_approve -1 + row_number() over(order by (select 1)))),10)), USERNAME ,STEP_LEVEL ,PROCESS ,0 ,'U' ,@p_REQ_ID FROM @approveTlb WHERE USERNAME NOT IN(SELECT APPROVE_USERNAME FROM CM_APPROVE_GROUP WHERE REQ_ID=@p_REQ_ID) END --INSERT CM_APPROVE_GROUP IF @@Error <> 0 GOTO ABORT -- COMMIT TRANSACTION SET @p_DONE=1 RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SET @p_DONE=0 RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_Upd]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_Upd] @p_REQUEST_TEMPLATE_ID nvarchar(200) = NULL, @p_REQUEST_TEMPLATE_NAME nvarchar(200) = NULL, @p_REQUEST_TEMPLATE_CODE nvarchar(100) = NULL, @p_CREATE_LOCATION NVARCHAR(100)=NULL, @p_HEADER NVARCHAR(max)=NULL, @p_CONTENT NVARCHAR(max)=NULL, @p_BRANCH_ID NVARCHAR(50)=NULL, @p_REPORT_NO NVARCHAR(50)=NULL, @p_TITLE NVARCHAR(50)=NULL, @p_REPORT_DT VARCHAR(20) = NULL, @p_SCHEME_IN BIT, @p_TYPE_TEMPLATE_ID NVARCHAR(20)=NULL, @p_NOTES nvarchar(max) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(12) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(12) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_REQUEST_TEMPLATE_XML nvarchar(MAX) = NULL, @p_GROUP_APPROVE1 NVARCHAR(400)=NULL, @p_GROUP_APPROVE2 NVARCHAR(400)=NULL, @p_GROUP_APPROVE3 NVARCHAR(400)=NULL, @p_GROUP_APPROVE4 NVARCHAR(400)=NULL AS BEGIN --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '', @hdoc int, @l_REQUEST_TEMPLATE_DETAIL_ID varchar(15), @l_REQUEST_TEMPLATE_DETAIL_CONTENT nvarchar(max), @l_REQUEST_TEMPLATE_DETAIL_CODE varchar(15), @l_PAGE_SIZE varchar(5), @l_NOTES nvarchar(max) IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END BEGIN TRANSACTION UPDATE [dbo].[CM_REQUEST_TEMPLATE] SET [REQUEST_TEMPLATE_NAME] = @p_REQUEST_TEMPLATE_NAME ,[REQUEST_TEMPLATE_CODE] = @p_REQUEST_TEMPLATE_CODE ,[NOTES] = @p_NOTES ,[MAKER_ID] = @p_MAKER_ID ,[CREATE_DT] =CONVERT(DATETIME, @p_CREATE_DT, 103) ,[AUTH_STATUS] = @p_AUTH_STATUS ,[CONTENT] = @p_CONTENT ,[CREATE_LOCATION] = @p_CREATE_LOCATION ,[HEADER] = @p_HEADER ,[BRANCH_ID] = @p_BRANCH_ID ,[REPORT_NO] = @p_REPORT_NO ,[TITLE] = @p_TITLE ,[REPORT_DT] = CONVERT(DATETIME, @p_REPORT_DT, 103) ,[SCHEME] = @p_SCHEME_IN ,[TYPE_TEMPLATE_ID] = @p_TYPE_TEMPLATE_ID WHERE [REQUEST_TEMPLATE_ID] = @p_REQUEST_TEMPLATE_ID IF @@Error <> 0 GOTO ABORT DELETE CM_SENT_TO_TEMPLATE WHERE TEMPLATE_ID=@p_REQUEST_TEMPLATE_ID declare @sentToTlb table(CONTENT nvarchar(50)) IF(@p_REQUEST_TEMPLATE_XML <> '' AND @p_REQUEST_TEMPLATE_XML IS NOT NULL) BEGIN insert into @sentToTlb select * FROM WSISPLIT(@p_REQUEST_TEMPLATE_XML,',') END DECLARE @TOT INT = (SELECT COUNT(CONTENT) from @sentToTlb) DECLARE @ind INT,@p_SENT_TO_TEMPLATE_ID nvarchar(50) EXEC SYS_CodeMasters_Gen_Mult 'CM_SENT_TO_TEMPLATE',@TOT, @p_SENT_TO_TEMPLATE_ID out, @ind out --EXEC SYS_CodeMasters_Gen 'CM_SENT_TO_TEMPLATE', @l_SENT_TO_TEMPLATE_ID out INSERT INTO [dbo].[CM_SENT_TO_TEMPLATE] ([TEMPLATE_ID] ,[SENT_TO_TEMPLATE_ID] ,[CONTENT]) SELECT @p_REQUEST_TEMPLATE_ID ,('CSTM' + right('0000000000000'+convert(varchar(15),(@ind -1 + row_number() over(order by (select 1)))),10)), CONTENT FROM @sentToTlb IF @@Error <> 0 GOTO ABORT --EDIT USER APPROVE DECLARE @CURRENT_STEP INT =(SELECT CURRENT_STEP FROM CM_REQUEST_TEMPLATE WHERE REQUEST_TEMPLATE_ID=@p_REQUEST_TEMPLATE_ID) DECLARE @DONE_INS_APPROVE_GROUP BIT=1 exec CM_APPROVE_GROUP_Upd @p_REQUEST_TEMPLATE_ID,@p_GROUP_APPROVE1,@p_GROUP_APPROVE2,@p_GROUP_APPROVE3,@p_GROUP_APPROVE4,@CURRENT_STEP,@DONE_INS_APPROVE_GROUP OUT IF @DONE_INS_APPROVE_GROUP <> 1 GOTO ABORT_CHILD -- COMMIT TRANSACTION SELECT '0' as Result, @p_REQUEST_TEMPLATE_ID ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ID, '' ErrorDesc RETURN '-1' END ABORT_CHILD: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ID, N'THÊM NHÓM DUYỆT THẤT BẠI' ErrorDesc RETURN '-1' End END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_ById]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_ById] @p_REQUEST_TEMPLATE_ID varchar(100) AS SELECT [REQUEST_TEMPLATE_ID] ,[REQUEST_TEMPLATE_NAME] ,[REQUEST_TEMPLATE_CODE] ,[NOTES] ,[RECORD_STATUS] ,[MAKER_ID] ,[CREATE_DT] ,A.[AUTH_STATUS] ,[CHECKER_ID] ,A.[APPROVE_DT] ,[CONTENT] ,[CREATE_LOCATION] ,[HEADER] ,[BRANCH_ID] ,[REPORT_NO] ,[TITLE] ,[REPORT_DT] ,[SCHEME] AS SCHEME_IN ,[TYPE_TEMPLATE_ID] ,MU.TLFullName AS MAKER_FULLNAME ,STUFF( (select ';' + APPROVE_USERNAME from CM_APPROVE_GROUP WHERE REQ_ID=@p_REQUEST_TEMPLATE_ID AND STEP_LEVEL=1 FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') AS GROUP_APPROVE1 ,STUFF( (select ';' + APPROVE_USERNAME from CM_APPROVE_GROUP WHERE REQ_ID=@p_REQUEST_TEMPLATE_ID AND STEP_LEVEL=2 FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') AS GROUP_APPROVE2 ,STUFF( (select ';' + APPROVE_USERNAME from CM_APPROVE_GROUP WHERE REQ_ID=@p_REQUEST_TEMPLATE_ID AND STEP_LEVEL=3 FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') AS GROUP_APPROVE3 ,STUFF( (select ';' + APPROVE_USERNAME from CM_APPROVE_GROUP WHERE REQ_ID=@p_REQUEST_TEMPLATE_ID AND STEP_LEVEL=4 FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') AS GROUP_APPROVE4 ,STUFF( (select ';' + SHARE_USERNAME from CM_TEMPLATE_SHARE WHERE REQ_ID=@p_REQUEST_TEMPLATE_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') AS SHARE_USER FROM CM_REQUEST_TEMPLATE A LEFT JOIN TL_USER MU ON A.MAKER_ID=MU.TLNANME WHERE REQUEST_TEMPLATE_ID= @p_REQUEST_TEMPLATE_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_DETAIL_ById]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_DETAIL_ById] @REQUEST_TEMPLATE_DETAIL_ID varchar(100) AS SELECT * FROM CM_REQUEST_TEMPLATE_DETAIL WHERE REQUEST_TEMPLATE_DETAIL_ID= @REQUEST_TEMPLATE_DETAIL_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_App]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_App] @P_REQUEST_TEMPLATE_ID VARCHAR(100), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) = NULL, @P_NOTE NVARCHAR(500)=NULL AS BEGIN TRANSACTION DECLARE @l_APPROVE_GROUP_ID VARCHAR(50)=( SELECT APPROVE_GROUP_ID FROM CM_APPROVE_GROUP WHERE REQ_ID=@P_REQUEST_TEMPLATE_ID AND (APPROVE_USERNAME=@P_CHECKER_ID OR AUTHORITY_NAME=@P_CHECKER_ID) AND PROCESS_STATUS=1) DECLARE @l_STEP_LEVEL INT =(SELECT STEP_LEVEL FROM CM_APPROVE_GROUP WHERE APPROVE_GROUP_ID=@l_APPROVE_GROUP_ID) --SET CURRENT APPROVE UPDATE CM_APPROVE_GROUP SET DONE=1 ,PROCESS_STATUS=0 ,CHECKER_ID=@P_CHECKER_ID ,NOTES=@P_NOTE ,APPROVE_DT= CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE APPROVE_GROUP_ID=@l_APPROVE_GROUP_ID IF @@Error <> 0 GOTO ABORT --CHECK CURRENT APPROVE IF(NOT EXISTS(SELECT * FROM CM_APPROVE_GROUP WHERE STEP_LEVEL=@l_STEP_LEVEL AND DONE =0 AND REQ_ID=@P_REQUEST_TEMPLATE_ID )) BEGIN --SET UP NEXT APPROVE UPDATE CM_APPROVE_GROUP SET PROCESS_STATUS=1 ,NEED_SEND_EMAIL=1 WHERE REQ_ID=@P_REQUEST_TEMPLATE_ID AND DONE=0 AND STEP_LEVEL=@l_STEP_LEVEL+1 UPDATE CM_REQUEST_TEMPLATE SET CURRENT_STEP=@l_STEP_LEVEL+1 WHERE REQUEST_TEMPLATE_ID=@P_REQUEST_TEMPLATE_ID END --SET UP AUTH_STATUS IF(NOT EXISTS(SELECT * FROM CM_APPROVE_GROUP WHERE REQ_ID=@P_REQUEST_TEMPLATE_ID AND DONE<>1)) BEGIN UPDATE CM_REQUEST_TEMPLATE SET AUTH_STATUS='O' WHERE REQUEST_TEMPLATE_ID=@P_REQUEST_TEMPLATE_ID END COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_MODIFY_APP]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_MODIFY_APP] @p_USER_LOGIN VARCHAR(15)= NULL, @p_MAKER_ID VARCHAR(15)= NULL, @p_REQ_PAY_AUTO_ID VARCHAR(15)= NULL, @p_CHECKER_ID VARCHAR(15) = NULL, @p_TRANSFER_USER_RECEIVE VARCHAR(15) = NULL, @p_REQUEST_STATUS VARCHAR(15) = NULL AS -- BEGIN VALIDATE -- END VALIDATE -- BEGIN VALIDATE FLOW IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID AND ISNULL(AUTH_STATUS_KT, '') <> 'A' AND @p_REQUEST_STATUS = 'SUSPEND')) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Tạm dừng phiếu thất bại! Phiếu yêu cầu thanh toán tự động chưa được kiểm sát viên phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID AND REQUEST_STATUS <> 'SUSPEND' AND @p_REQUEST_STATUS = 'SUSPEND')) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Tạm dừng phiếu thất bại! Phiếu yêu cầu thanh toán tự động chưa được đề nghị tạm dừng' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID AND REQUEST_STATUS <> 'DEL' AND @p_REQUEST_STATUS = 'DEL')) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Hủy phiếu thất bại! Phiếu yêu cầu thanh toán tự động chưa được đề nghị hủy phiếu' ErrorDesc RETURN '-1' END -- END VALIDATE FLOW BEGIN TRANSACTION DECLARE @NOTES_PROCESS NVARCHAR(250) = '', @NEXT_STATUS_APP NVARCHAR(250) = '' IF(@p_REQUEST_STATUS = 'SUSPEND') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(TRANSFER_USER_RECEIVE, '') <> '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET PROCESS = '7' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N' Đã được xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt' -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'CON_SUS', @p_USER_LOGIN, GETDATE(), N'Cấp phê duyệt trung gian xác nhận phiếu', N'Xác nhận tạm dừng phiếu sau phê duyệt') IF @@Error <> 0 GOTO ABORT END ELSE BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET PROCESS = '8', AUTH_STATUS = 'N', AUTH_STATUS_KT = 'N', REQUEST_STATUS = 'APP_SUS', REQ_PAY_AUTO_STATUS = 'SUSPEND' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N' Đã được phê duyệt thành công! ' -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'APP_SUS', @p_USER_LOGIN, GETDATE(), N'Trường đơn vị phê duyệt phiếu', N'Phê duyệt tạm dừng phiếu sau phê duyệt') IF @@Error <> 0 GOTO ABORT END COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID ,N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID) + @NEXT_STATUS_APP ErrorDesc RETURN '0' END ELSE IF(@p_REQUEST_STATUS = 'UNSUSPEND') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(TRANSFER_USER_RECEIVE, '') <> '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET PROCESS = '10' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N' Đã được xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt' -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'CON_UNSUS', @p_USER_LOGIN, GETDATE(), N'Cấp phê duyệt trung gian xác nhận phiếu', N'Xác nhận khôi phục phiếu sau phê duyệt') IF @@Error <> 0 GOTO ABORT END ELSE BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET PROCESS = '11' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N' Đã được phê duyệt thành công! Vui lòng đợi bộ phận kế toán xử lý phiếu' -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'APP_UNSUS', @p_USER_LOGIN, GETDATE(), N'Trưởng đơn vị phê duyệt phiếu', N'Phê duyệt khôi phục phiếu sau phê duyệt') -- DELETE FLOW KT KET THUC DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_AUTO_ID IF @@Error <> 0 GOTO ABORT END COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID ,N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID) + @NEXT_STATUS_APP ErrorDesc RETURN '0' END ELSE IF(@p_REQUEST_STATUS = 'DEL') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(TRANSFER_USER_RECEIVE, '') <> '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET PROCESS = '16' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N'Vui lòng đợi trưởng đơn vị phê duyệt' -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'DEL', @p_USER_LOGIN, GETDATE(), N'Cấp duyệt trung gian xác nhận yêu cầu hủy phiếu', N'Cấp duyệt trung gian xác nhận yêu cầu hủy phiếu') END ELSE BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET PROCESS = '17' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N'Vui lòng đợi phòng kế toán phê duyệt' -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'DEL', @p_USER_LOGIN, GETDATE(), N'Trưởng đơn vị phê duyệt yêu cầu hủy phiếu', N'Trưởng đơn vị phê duyệt yêu cầu hủy phiếu') -- DELETE FLOW KT KET THUC DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_AUTO_ID END IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID ,N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)+N' đã được yêu cầu hủy thành công! ' + @NEXT_STATUS_APP ErrorDesc RETURN '0' END ELSE BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Thay đổi phiếu thất bại! Bạn chưa chọn loại chỉnh sửa phiếu(Chỉnh sửa, Tạm dừng, Hủy phiếu)' ErrorDesc RETURN '-1' END COMMIT TRANSACTION ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_APPROVE_GROUP_Ins]' GO CREATE PROCEDURE [dbo].[CM_APPROVE_GROUP_Ins] @p_REQ_ID [varchar](50) NULL, @p_GROUP_APPROVE1 NVARCHAR(400)=NULL, @p_GROUP_APPROVE2 NVARCHAR(400)=NULL, @p_GROUP_APPROVE3 NVARCHAR(400)=NULL, @p_GROUP_APPROVE4 NVARCHAR(400)=NULL, @p_DONE BIT OUT AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF( @ERRORSYS <> '' ) BEGIN SELECT '-1' as Result, '' ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN 0 END BEGIN TRANSACTION declare @approveTlb table(STEP_LEVEL INT,USERNAME nvarchar(50)) insert into @approveTlb select 1,[value] FROM WSISPLIT(@p_GROUP_APPROVE1,';') insert into @approveTlb select 2,[value] FROM WSISPLIT(@p_GROUP_APPROVE2,';') insert into @approveTlb select 3,[value] FROM WSISPLIT(@p_GROUP_APPROVE3,';') insert into @approveTlb select 4,[value] FROM WSISPLIT(@p_GROUP_APPROVE4,';') --START CHECK THƯ KÍ /*insert into @approveTlb SELECT STEP_LEVEL From @approveTlb WHERE dbo.FN_CHECK_ROLE_USER(USERNAME,'TGD')=1*/ --END CHECK THƯ KÍ --INSERT CM_APPROVE_GROUP DECLARE @TOT_APPORVE INT = (SELECT COUNT(*) from @approveTlb) DECLARE @index_approve INT,@l_APPROVE_GROUP_ID nvarchar(50) EXEC SYS_CodeMasters_Gen_Mult 'CM_APPROVE_GROUP',@TOT_APPORVE, @l_APPROVE_GROUP_ID out, @index_approve out INSERT INTO [dbo].[CM_APPROVE_GROUP] ([APPROVE_GROUP_ID] ,[APPROVE_USERNAME] ,[STEP_LEVEL] ,PROCESS_STATUS ,DONE ,[AUTH_STATUS] ,[REQ_ID]) SELECT ('CAG' + right('0000000000000'+convert(varchar(15),(@index_approve -1 + row_number() over(order by (select 1)))),10)), USERNAME ,STEP_LEVEL ,0 ,0 ,'U' ,@p_REQ_ID FROM @approveTlb IF @@Error <> 0 GOTO ABORT -- COMMIT TRANSACTION SET @p_DONE=1 RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SET @p_DONE=0 RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_APPROVE_TEMPLATE_ById]' GO CREATE PROCEDURE [dbo].[CM_APPROVE_TEMPLATE_ById] @p_TEMPLATE_ID varchar(100), @p_STEP_LEVEL INT AS SELECT APPROVE_USERNAME FROM CM_APPROVE_GROUP WHERE REQ_ID= @p_TEMPLATE_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_Sent_App]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_Sent_App] @P_REQUEST_TEMPLATE_ID VARCHAR(100), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) = NULL AS DECLARE @aStatus VARCHAR(1) SELECT @aStatus = [AUTH_STATUS] FROM CM_REQUEST_TEMPLATE WHERE REQUEST_TEMPLATE_ID = @P_REQUEST_TEMPLATE_ID IF @aStatus = 'A' BEGIN SELECT '0' as Result, '' ErrorDesc RETURN 0 END BEGIN TRANSACTION UPDATE CM_REQUEST_TEMPLATE SET AUTH_STATUS = @P_AUTH_STATUS ,CHECKER_ID = @P_CHECKER_ID ,APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) ,CURRENT_STEP=1 WHERE REQUEST_TEMPLATE_ID = @P_REQUEST_TEMPLATE_ID UPDATE CM_APPROVE_GROUP SET PROCESS_STATUS=1 ,NEED_SEND_EMAIL=1 WHERE REQ_ID = @P_REQUEST_TEMPLATE_ID AND STEP_LEVEL=1 IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_Check_Workflow]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_Check_Workflow] @P_REQUEST_TEMPLATE_ID VARCHAR(100), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) = NULL AS IF( EXISTS(SELECT * FROM CM_APPROVE_GROUP WHERE REQ_ID=@P_REQUEST_TEMPLATE_ID AND (PROCESS_STATUS=1) AND (DONE=0 OR DONE IS NULL) AND (APPROVE_USERNAME=@p_CHECKER_ID OR AUTHORITY_NAME=@p_CHECKER_ID)) ) BEGIN SELECT '0' as Result, '' ErrorDesc RETURN '0' END ELSE BEGIN SELECT '-1' as Result, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_WORKFLOW_APPROVE_Search]' GO CREATE PROCEDURE [dbo].[CM_WORKFLOW_APPROVE_Search] @p_REQ_ID varchar(20)=null, @p_NOTES nvarchar(1000)=NULL, @p_RECORD_STATUS varchar(1)=NULL, @p_MAKER_ID varchar(12)=NULL, @p_CREATE_DT VARCHAR(20)=NULL, @p_AUTH_STATUS varchar(50)=NULL, @p_CHECKER_ID varchar(12)=NULL, @p_APPROVE_DT VARCHAR(20)=NULL, @p_MaxResultCount int = NULL, @p_SkipCount int = NULL, @p_Sorting varchar(100) = NULL, @p_TotalCount int = NULL, @p_DONE bit=null AS BEGIN -- PAGING -- PAGING BEGIN SELECT A.* ,CASE WHEN A.IS_REJECT =1 THEN 'step reject' WHEN A.DONE=1 THEN 'step current' WHEN A.DONE=0 OR A.DONE IS NULL THEN 'step' END AS CLASS , CASE WHEN A.DONE=1 THEN U.TLFullName WHEN A.AUTHORITY_NAME IS NULL THEN UA.TLFullName ELSE UAU.TLFullName END AS APPROVE_FULL_NAME -- SELECT END FROM CM_APPROVE_GROUP A LEFT JOIN TL_USER U ON A.CHECKER_ID=U.TLNANME LEFT JOIN TL_USER UA ON A.APPROVE_USERNAME=UA.TLNANME LEFT JOIN TL_USER UAU ON A.AUTHORITY_NAME=UAU.TLNANME WHERE 1=1 AND A.REQ_ID=@p_REQ_ID AND (@p_DONE IS NULL OR @p_DONE='' OR A.DONE=@p_DONE) ORDER BY STEP_LEVEL ASC -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TEMPLATE_NOTE_Search]' GO CREATE PROCEDURE [dbo].[CM_TEMPLATE_NOTE_Search] @p_TEMPLATE_NOTE_ID varchar(20)=null, @p_TEMPLATE_NOTE_USERNAME [varchar](50) NULL, @p_CONTENT [Nvarchar](max) NULL, @p_NOTES [nvarchar](1000) NULL, @p_RECORD_STATUS [varchar](1) NULL, @p_AUTH_STATUS [varchar](1) NULL, @p_MAKER_ID [varchar](15) NULL, @p_CREATE_DT [datetime] NULL, @p_CHECKER_ID [varchar](15) NULL, @p_APPROVE_DT [datetime] NULL, @p_REQ_ID [varchar](50) NULL AS BEGIN -- PAGING -- PAGING BEGIN SELECT A.*, U.TLFullName AS TEMPLATE_NOTE_FULLNAME -- SELECT END FROM [CM_TEMPLATE_NOTE] A LEFT JOIN TL_USER U ON A.TEMPLATE_NOTE_USERNAME=U.TLNANME WHERE 1=1 AND A.REQ_ID=@p_REQ_ID -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TEMPLATE_NOTE_Ins]' GO CREATE PROCEDURE [dbo].[CM_TEMPLATE_NOTE_Ins] @p_TEMPLATE_NOTE_USERNAME [varchar](50) NULL, @p_CONTENT [Nvarchar](max) NULL, @p_NOTES [nvarchar](1000) NULL, @p_RECORD_STATUS [varchar](1) NULL, @p_AUTH_STATUS [varchar](1) NULL, @p_MAKER_ID [varchar](15) NULL, @p_CREATE_DT VARCHAR(20) NULL, @p_CHECKER_ID [varchar](15) NULL, @p_APPROVE_DT VARCHAR(20) NULL, @p_REQ_ID [varchar](50) NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF( @ERRORSYS <> '' ) BEGIN SELECT '-1' as Result, '' ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN 0 END BEGIN TRANSACTION DECLARE @L_TEMPLATE_NOTE_ID VARCHAR(100) EXEC SYS_CodeMasters_Gen 'CM_TEMPLATE_NOTE', @L_TEMPLATE_NOTE_ID out INSERT INTO [dbo].[CM_TEMPLATE_NOTE] ([TEMPLATE_NOTE_ID] ,[TEMPLATE_NOTE_USERNAME] ,[CONTENT] ,[RECORD_STATUS] ,[MAKER_ID] ,[CREATE_DT] ,[REQ_ID]) VALUES (@L_TEMPLATE_NOTE_ID ,@p_TEMPLATE_NOTE_USERNAME ,@p_CONTENT ,1 ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_REQ_ID) IF @@Error <> 0 GOTO ABORT -- COMMIT TRANSACTION SELECT '0' as Result, @L_TEMPLATE_NOTE_ID ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_Reject]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_Reject] @P_REQUEST_TEMPLATE_ID VARCHAR(100), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) = NULL, @P_NOTE NVARCHAR(500)=NULL AS BEGIN TRANSACTION DECLARE @l_APPROVE_GROUP_ID VARCHAR(50)=( SELECT APPROVE_GROUP_ID FROM CM_APPROVE_GROUP WHERE REQ_ID=@P_REQUEST_TEMPLATE_ID AND (APPROVE_USERNAME=@P_CHECKER_ID OR AUTHORITY_NAME=@P_CHECKER_ID) AND PROCESS_STATUS=1) DECLARE @l_STEP_LEVEL INT =(SELECT STEP_LEVEL FROM CM_APPROVE_GROUP WHERE APPROVE_GROUP_ID=@l_APPROVE_GROUP_ID) --SET CURRENT reject UPDATE CM_APPROVE_GROUP SET DONE=0 ,PROCESS_STATUS=0 ,CHECKER_ID=@P_CHECKER_ID ,NOTES=@P_NOTE ,IS_REJECT=1 ,APPROVE_DT= CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE APPROVE_GROUP_ID=@l_APPROVE_GROUP_ID IF @@Error <> 0 GOTO ABORT UPDATE CM_REQUEST_TEMPLATE SET AUTH_STATUS ='R' WHERE REQUEST_TEMPLATE_ID=@P_REQUEST_TEMPLATE_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_Handover]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_Handover] @P_REQ_ID VARCHAR(100), @p_USERNAME_HANDOVER VARCHAR(50), @p_MAKER_ID NVARCHAR(100), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) = NULL, @P_NOTE NVARCHAR(500)=NULL AS BEGIN TRANSACTION UPDATE CM_REQUEST_TEMPLATE SET MAKER_ID=@p_USERNAME_HANDOVER WHERE MAKER_ID=@p_MAKER_ID AND REQUEST_TEMPLATE_ID=@P_REQ_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, 'Bàn giao thất bại.' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_Authority]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_Authority] @P_REQ_ID VARCHAR(100), @p_AUTHORITY_USERNAME VARCHAR(50), @p_APPROVE_USERNAME VARCHAR(50), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION UPDATE CM_APPROVE_GROUP SET AUTHORITY_NAME=@p_AUTHORITY_USERNAME ,NEED_SEND_EMAIL=1 WHERE REQ_ID=@P_REQ_ID AND (APPROVE_USERNAME=@p_APPROVE_USERNAME OR AUTHORITY_NAME=@p_APPROVE_USERNAME ) IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Ủy quyền thất bại' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_REPLACE_APP]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_REPLACE_APP] @P_REQUEST_TEMPLATE_ID VARCHAR(100), @P_AUTH_STATUS VARCHAR(1), @P_APPROVE_USERNAME NVARCHAR(20)=NULL, @P_CHECKER_ID VARCHAR(12)=NULL, @P_APPROVE_DT VARCHAR(20) = NULL, @P_NOTE NVARCHAR(500)=NULL, @P_TYPE VARCHAR(20)=NULL AS BEGIN TRANSACTION DECLARE @l_APPROVE_GROUP_ID VARCHAR(50)=( SELECT APPROVE_GROUP_ID FROM CM_APPROVE_GROUP WHERE REQ_ID=@P_REQUEST_TEMPLATE_ID AND (APPROVE_USERNAME=@P_CHECKER_ID OR AUTHORITY_NAME=@P_CHECKER_ID) AND PROCESS_STATUS=1) DECLARE @l_STEP_LEVEL INT =(SELECT STEP_LEVEL FROM CM_APPROVE_GROUP WHERE APPROVE_GROUP_ID=@l_APPROVE_GROUP_ID) --SET CURRENT APPROVE UPDATE CM_APPROVE_GROUP SET DONE=1 ,PROCESS_STATUS=0 ,CHECKER_ID=@P_CHECKER_ID ,NOTES=@P_NOTE ,APPROVE_DT= CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE APPROVE_GROUP_ID=@l_APPROVE_GROUP_ID IF @@Error <> 0 GOTO ABORT --CHECK CURRENT APPROVE IF(NOT EXISTS(SELECT * FROM CM_APPROVE_GROUP WHERE STEP_LEVEL=@l_STEP_LEVEL AND DONE =0 AND REQ_ID=@P_REQUEST_TEMPLATE_ID )) BEGIN --SET UP NEXT APPROVE UPDATE CM_APPROVE_GROUP SET PROCESS_STATUS=1 WHERE REQ_ID=@P_REQUEST_TEMPLATE_ID AND DONE=0 AND STEP_LEVEL=@l_STEP_LEVEL+1 UPDATE CM_REQUEST_TEMPLATE SET CURRENT_STEP=@l_STEP_LEVEL+1 WHERE REQUEST_TEMPLATE_ID=@P_REQUEST_TEMPLATE_ID END COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_Get_Report_No]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_Get_Report_No] @P_DEP_CODE VARCHAR(30), @p_REPORT_NO VARCHAR(20) OUT AS DECLARE @REPORT_NO INT DECLARE @REPORT_YEAR INT=CONVERT(INT,(SELECT ParaValue FROM SYS_PARAMETERS WHERE ParaKey='Report_No_year')) IF(@REPORT_YEAR=YEAR(GETDATE())) BEGIN SET @REPORT_NO =CONVERT(INT, (SELECT ParaValue FROM SYS_PARAMETERS WHERE ParaKey='Report_no')) UPDATE SYS_PARAMETERS SET ParaValue=CONVERT(NVARCHAR,@REPORT_NO+1) WHERE ParaKey='Report_no' END ELSE BEGIN SET @REPORT_NO=1 UPDATE SYS_PARAMETERS SET ParaValue=CONVERT(NVARCHAR,YEAR(GETDATE())) WHERE ParaKey='Report_No_year' END SET @p_REPORT_NO=RIGHT('000000'+CAST( @REPORT_NO AS varchar),6) +'/'+ CAST( YEAR(GETDATE()) AS varchar)+'TTR-'+@P_DEP_CODE GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TL_SYS_GET_USER_BY_ROLE]' GO CREATE PROC [dbo].[TL_SYS_GET_USER_BY_ROLE] @p_ROLE VARCHAR(20) AS BEGIN SELECT TLNANME,TLNANME AS TLNAME FROM dbo.FN_GET_USER_BY_ROLE(@p_ROLE,'','') GROUP BY TLNANME END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TEMPLATE_SHARE_Update]' GO CREATE PROCEDURE [dbo].[CM_TEMPLATE_SHARE_Update] @p_REQ_ID [varchar](50) NULL, @p_LIST_SHARE_USER NVARCHAR(400)=NULL, @p_APPROVE_USERNAME nvarchar(200)=null AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' BEGIN TRANSACTION declare @shareTlb table(USERNAME nvarchar(50)) insert into @shareTlb select [value] FROM WSISPLIT(@p_LIST_SHARE_USER,';') --DELETE CM_TEMPLATE_SHARE DELETE CM_TEMPLATE_SHARE WHERE REQ_ID=@p_REQ_ID AND SHARE_USERNAME NOT IN (SELECT USERNAME FROM @shareTlb) --INSERT CM_ DECLARE @TOT_APPORVE INT = (SELECT COUNT(*) from @shareTlb) DECLARE @index_approve INT,@l_APPROVE_GROUP_ID nvarchar(50) EXEC SYS_CodeMasters_Gen_Mult 'CM_TEMPLATE_SHARE',@TOT_APPORVE, @l_APPROVE_GROUP_ID out, @index_approve out INSERT INTO [dbo].[CM_TEMPLATE_SHARE] ([TEMPLATE_SHARE_ID] ,[APPROVE_USERNAME] ,[SHARE_USERNAME] ,[REQ_ID]) SELECT ('CAG' + right('0000000000000'+convert(varchar(15),(@index_approve -1 + row_number() over(order by (select 1)))),10)), @p_APPROVE_USERNAME ,USERNAME ,@p_REQ_ID FROM @shareTlb WHERE USERNAME NOT IN(SELECT SHARE_USERNAME FROM CM_TEMPLATE_SHARE WHERE REQ_ID=@p_REQ_ID) IF @@Error <> 0 GOTO ABORT -- COMMIT TRANSACTION SELECT '0' as Result, '' Id, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' Id, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_CHECK_USER_ROLE]' GO CREATE PROC [dbo].[CM_CHECK_USER_ROLE] @p_USER VARCHAR(20) AS BEGIN --'Administrators' IF( EXISTS( SELECT TLNANME,TLNANME AS TLNAME FROM dbo.FN_GET_USER_BY_ROLE('Administrators','','') GROUP BY TLNANME HAVING TLNANME=@p_USER)) BEGIN SELECT '0' as Result, '' ErrorDesc RETURN '0' END ELSE BEGIN SELECT '-1' as Result, '' ErrorDesc RETURN '-1' END END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAY_AUTO_CHECK_PERIOD_Expired]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAY_AUTO_CHECK_PERIOD_Expired] @p_REQ_PAY_AUTO_ID VARCHAR(20)= NULL AS BEGIN IF(EXISTS(SELECT * FROM TR_REQ_PAY_AUTO_SCHEDULE_DETAIL WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID AND PAY_AUTO_STATUS = 'N' AND EXPECTED_DT < GETDATE())) BEGIN DECLARE @LIST_REQUEST_PAYMENT_AUTO NVARCHAR(MAX) SET @LIST_REQUEST_PAYMENT_AUTO = (select STUFF( ( SELECT '.' + CHAR(10) + N'* Ngày thanh toán dự kiến: ' + CONVERT(NVARCHAR(50),FORMAT (DTA.EXPECTED_DT, 'dd/MM/yyyy ')) + N', Số tiền thanh toán: ' + FORMAT(DTA.PAY_AUTO_AMT ,'#,#', 'vi-VN') FROM TR_REQ_PAY_AUTO_SCHEDULE_DETAIL DTA WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID AND PAY_AUTO_STATUS = 'N' AND EXPECTED_DT < GETDATE() FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) SELECT '1' as Result, '' REQ_PAY_AUTO_ID, @LIST_REQUEST_PAYMENT_AUTO ErrorDesc RETURN '1' END ELSE BEGIN SELECT '0' as Result, '' REQ_PAY_AUTO_ID, N'Không có kỳ thanh toán quá hạn' ErrorDesc RETURN '0' END END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAY_MAKER_CONFIRM_Payment]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAY_MAKER_CONFIRM_Payment] @p_REQ_PAY_AUTO_ID VARCHAR(20)= NULL AS BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET IS_MAKER_CONFIRM = '1' WHERE 1 = 1 AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID IF @@Error <> 0 BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Xác nhận thanh toán kỳ kế tiếp thành công' ErrorDesc RETURN '-1' END SELECT '1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Xác nhận thanh toán kỳ kế tiếp không thành công' ErrorDesc RETURN '1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_BUDGET_MONTH_DETAIL_Import]' GO CREATE PROC [dbo].[TR_BUDGET_MONTH_DETAIL_Import] ( @p_MAKER_ID VARCHAR(20), @p_XMP_TR_BUDGET_LIMIT_MONTH_DETAIL XML = NULL ) AS --IF(@p_GD_ID IS NULL OR @p_GD_ID = '') --BEGIN -- SELECT '-1' as Result, N'Mã ngân sách chi phí không được để trống' AS ErrorDesc -- RETURN '-1' --END --IF(@p_BUDGET_TYPE IS NULL OR @p_BUDGET_TYPE = '') --BEGIN -- SELECT '-1' as Result, N'Loại ngân sách chi phí không được để trống' AS ErrorDesc -- RETURN '-1' --END --IF(@p_BRANCH_TYPE IS NULL OR @p_BRANCH_TYPE = '') --BEGIN -- SELECT '-1' as Result, N'Loại đơn vị không được để trống' AS ErrorDesc -- RETURN '-1' --END BEGIN TRANSACTION DECLARE @TABLE_GD_ID TABLE( GD_ID VARCHAR(15) ) DECLARE @hdoc INT EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TR_BUDGET_LIMIT_MONTH_DETAIL DECLARE XmlBudgetLimitMonthDT CURSOR FOR SELECT * FROM OPENXML(@hdoc, '/Root/XmlBudgetLimitMonthDT', 2) WITH ( BRANCH_TYPE VARCHAR(15), GD_CODE VARCHAR(25), GD_NAME NVARCHAR(500), BUDGET_YEAR VARCHAR(15), BRANCH_KIND VARCHAR(15), M1 DECIMAL(18, 0), M2 DECIMAL(18, 0), M3 DECIMAL(18, 0), M4 DECIMAL(18, 0), M5 DECIMAL(18, 0), M6 DECIMAL(18, 0), M7 DECIMAL(18, 0), M8 DECIMAL(18, 0), M9 DECIMAL(18, 0), M10 DECIMAL(18, 0), M11 DECIMAL(18, 0), M12 DECIMAL(18, 0) ) DECLARE @BRANCH_TYPE VARCHAR(15), @GD_CODE VARCHAR(25), @GD_NAME NVARCHAR(500), @BUDGET_YEAR VARCHAR(15), @BRANCH_KIND VARCHAR(15), @M1 DECIMAL(18, 0), @M2 DECIMAL(18, 0), @M3 DECIMAL(18, 0), @M4 DECIMAL(18, 0), @M5 DECIMAL(18, 0), @M6 DECIMAL(18, 0), @M7 DECIMAL(18, 0), @M8 DECIMAL(18, 0), @M9 DECIMAL(18, 0), @M10 DECIMAL(18, 0), @M11 DECIMAL(18, 0), @M12 DECIMAL(18, 0) ------------------------------------------------ validate begin ------------------------------------------------ DECLARE @ERROR_MESSAGE nvarchar(MAX) DECLARE @INDEX INT SET @INDEX = 2 OPEN XmlBudgetLimitMonthDT; FETCH NEXT FROM XmlBudgetLimitMonthDT INTO @BRANCH_TYPE, @GD_CODE, @GD_NAME, @BUDGET_YEAR, @BRANCH_KIND, @M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12 WHILE @@fetch_status=0 BEGIN IF(ISNULL(@BRANCH_TYPE,'') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlBudgetLimitMonthDT; DEALLOCATE XmlBudgetLimitMonthDT; SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Loại đơn vị không được để trống' AS ErrorDesc RETURN '-1' END IF(@BRANCH_TYPE NOT IN ('dvkd','ho','pgd')) BEGIN ROLLBACK TRANSACTION CLOSE XmlBudgetLimitMonthDT; DEALLOCATE XmlBudgetLimitMonthDT; SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Loại đơn vị không tồn tại trong hệ thống' AS ErrorDesc RETURN '-1' END SET @INDEX = @INDEX +1 DECLARE @l_GD_ID VARCHAR(20); DECLARE @l_DEP_ID VARCHAR(20); SET @l_GD_ID = (SELECT TOP 1 GD_ID FROM CM_GOODS WHERE GD_CODE = @GD_CODE) IF(ISNULL(@l_GD_ID,'') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlBudgetLimitMonthDT; DEALLOCATE XmlBudgetLimitMonthDT; SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Ngân sách ' + @GD_CODE + N' không có trong hệ thống' AS ErrorDesc RETURN '-1' END ELSE BEGIN IF(NOT EXISTS(SELECT * FROM @TABLE_GD_ID WHERE GD_ID = @l_GD_ID)) BEGIN INSERT INTO @TABLE_GD_ID(GD_ID) VALUES (@l_GD_ID) END END -- NEU DA TON TAI NGAN SACH THI CHI UPDATE IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_MONTH_LIMIT WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND)) BEGIN IF(ISNULL(@M1, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M1 = @M1 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M2, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M2 = @M2 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M3, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M3 = @M3 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M4, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M4 = @M4 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M5, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M5 = @M5 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M6, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M6 = @M6 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M7, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M7 = @M7 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M8, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M8 = @M8 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M9, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M9 = @M9 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M10, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M10 = @M10 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M11, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M11 = @M11 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF(ISNULL(@M12, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_MONTH_LIMIT SET M12 = @M12 WHERE GD_ID = @l_GD_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_TYPE = @BRANCH_TYPE AND BRANCH_KIND = @BRANCH_KIND END IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlBudgetLimitMonthDT INTO @BRANCH_TYPE, @GD_CODE, @GD_NAME, @BUDGET_YEAR, @BRANCH_KIND, @M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12 END ELSE BEGIN -- Tự động sinh mã code DECLARE @BUDGET_MONTH_LIMIT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_MONTH', @BUDGET_MONTH_LIMIT_ID OUT; IF @BUDGET_MONTH_LIMIT_ID='' OR @BUDGET_MONTH_LIMIT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT(BUDGET_MONTH_LIMIT_ID, GD_ID, BUDGET_TYPE, BRANCH_TYPE, BUDGET_YEAR, BUDGET_LIMIT_AMT, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID, APPROVE_DT,BRANCH_KIND) VALUES(@BUDGET_MONTH_LIMIT_ID, @l_GD_ID, 'thang', @BRANCH_TYPE, @BUDGET_YEAR, NULL, @M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL,@BRANCH_KIND) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlBudgetLimitMonthDT INTO @BRANCH_TYPE, @GD_CODE, @GD_NAME, @BUDGET_YEAR, @BRANCH_KIND, @M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12 END END CLOSE XmlBudgetLimitMonthDT; DEALLOCATE XmlBudgetLimitMonthDT DELETE FROM TR_GOODSTYPE WHERE GD_ID IN (SELECT GD_ID FROM @TABLE_GD_ID) AND BUDGET_TYPE = 'thang' INSERT INTO TR_GOODSTYPE(GD_ID, BUDGET_TYPE, CREATE_DT, MAKER_ID, APPROVE_DT, CHECKER_ID, RECORD_STATUS, AUTH_STATUS) SELECT GD_ID, 'thang', GETDATE(), @p_MAKER_ID, NULL, NULL, '1', 'A' FROM @TABLE_GD_ID COMMIT TRANSACTION SELECT '0' AS Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_BUDGET_CHECK_LIMIT_MONTH_GET_INFO_LIMIT]' GO CREATE PROCEDURE [dbo].[TR_BUDGET_CHECK_LIMIT_MONTH_GET_INFO_LIMIT] @p_GD_ID varchar(20) = NULL, @p_GD_CODE varchar(20) = NULL, @p_BRANCH_ID varchar(20) = NULL, @p_DEP_ID varchar(20) = NULL, @p_KHOI_ID varchar(20) = NULL, @p_TLNAME varchar(20) = NULL, @p_ROLENAME varchar(20) = NULL, @p_MONTH varchar(20) = NULL, @p_YEAR varchar(20) = NULL, @p_BRANCH_KIND varchar(20) = NULL AS IF(CONVERT(INT,@p_YEAR) < YEAR(GETDATE())) BEGIN SET @p_MONTH = 'M12' END ELSE BEGIN SET @p_MONTH = 'M' + CONVERT(VARCHAR, MONTH(GETDATE())) END DECLARE @l_BUDGET_LIMIT_CURRENT DECIMAL(18,0) -- Lấy hạn mức đã sử dụng đến hiện tại DECLARE @l_BUDGET_USED_CURRENT DECIMAL(18,0) DECLARE @l_BUDGET_USED_M1 DECIMAL(18,0), @l_BUDGET_USED_M2 DECIMAL(18,0), @l_BUDGET_USED_M3 DECIMAL(18,0), @l_BUDGET_USED_M4 DECIMAL(18,0), @l_BUDGET_USED_M5 DECIMAL(18,0), @l_BUDGET_USED_M6 DECIMAL(18,0), @l_BUDGET_USED_M7 DECIMAL(18,0), @l_BUDGET_USED_M8 DECIMAL(18,0), @l_BUDGET_USED_M9 DECIMAL(18,0), @l_BUDGET_USED_M10 DECIMAL(18,0), @l_BUDGET_USED_M11 DECIMAL(18,0), @l_BUDGET_USED_M12 DECIMAL(18,0) DECLARE @BRANCH_TYPE VARCHAR(15) SELECT @BRANCH_TYPE = BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID IF(ISNULL(@p_BRANCH_ID,'') = 'DV0001') BEGIN SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE WHEN @p_MONTH = 'M1' then M1 WHEN @p_MONTH = 'M2' then M1 + M2 WHEN @p_MONTH = 'M3' then M1 + M2 + M3 WHEN @p_MONTH = 'M4' then M1 + M2 + M3 + M4 WHEN @p_MONTH = 'M5' then M1 + M2 + M3 + M4 + M5 WHEN @p_MONTH = 'M6' then M1 + M2 + M3 + M4 + M5 + M6 WHEN @p_MONTH = 'M7' then M1 + M2 + M3 + M4 + M5 + M6 + M7 WHEN @p_MONTH = 'M8' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 WHEN @p_MONTH = 'M9' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 WHEN @p_MONTH = 'M10' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 WHEN @p_MONTH = 'M11' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11 WHEN @p_MONTH = 'M12' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11 + M12 ELSE M1 END FROM TR_REQ_BUDGET_MONTH_LIMIT WHERE GD_ID = @p_GD_ID AND BRANCH_TYPE = 'HO' AND BUDGET_YEAR = @p_YEAR AND AUTH_STATUS = 'A' AND RECORD_STATUS = '1'),0) -- Lấy hạn mức đã sử dụng đến hiện tại SET @l_BUDGET_USED_M1 = ISNULL((SELECT SUM(M1) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M2 = ISNULL((SELECT SUM(M2) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M3 = ISNULL((SELECT SUM(M3) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M4 = ISNULL((SELECT SUM(M4) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M5 = ISNULL((SELECT SUM(M5) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M6 = ISNULL((SELECT SUM(M6) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M7 = ISNULL((SELECT SUM(M7) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M8 = ISNULL((SELECT SUM(M8) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M9 = ISNULL((SELECT SUM(M9) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M10 = ISNULL((SELECT SUM(M10) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M11 = ISNULL((SELECT SUM(M11) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M12 = ISNULL((SELECT SUM(M12) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_CURRENT = @l_BUDGET_USED_M1 + @l_BUDGET_USED_M2 + @l_BUDGET_USED_M3 + @l_BUDGET_USED_M4 + @l_BUDGET_USED_M5 + @l_BUDGET_USED_M6 + @l_BUDGET_USED_M7 + @l_BUDGET_USED_M8 + @l_BUDGET_USED_M9 + @l_BUDGET_USED_M10 + @l_BUDGET_USED_M11 + @l_BUDGET_USED_M12 END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE WHEN @p_MONTH = 'M1' then M1 WHEN @p_MONTH = 'M2' then M1 + M2 WHEN @p_MONTH = 'M3' then M1 + M2 + M3 WHEN @p_MONTH = 'M4' then M1 + M2 + M3 + M4 WHEN @p_MONTH = 'M5' then M1 + M2 + M3 + M4 + M5 WHEN @p_MONTH = 'M6' then M1 + M2 + M3 + M4 + M5 + M6 WHEN @p_MONTH = 'M7' then M1 + M2 + M3 + M4 + M5 + M6 + M7 WHEN @p_MONTH = 'M8' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 WHEN @p_MONTH = 'M9' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 WHEN @p_MONTH = 'M10' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 WHEN @p_MONTH = 'M11' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11 WHEN @p_MONTH = 'M12' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11 + M12 ELSE M1 END FROM TR_REQ_BUDGET_MONTH_LIMIT WHERE GD_ID = @p_GD_ID AND BRANCH_TYPE = 'DVKD' AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND AUTH_STATUS = 'A' AND RECORD_STATUS = '1'),0) -- Lấy hạn mức đã sử dụng đến hiện tại SET @l_BUDGET_USED_M1 = ISNULL((SELECT SUM(M1) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M2 = ISNULL((SELECT SUM(M2) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M3 = ISNULL((SELECT SUM(M3) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M4 = ISNULL((SELECT SUM(M4) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M5 = ISNULL((SELECT SUM(M5) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M6 = ISNULL((SELECT SUM(M6) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M7 = ISNULL((SELECT SUM(M7) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M8 = ISNULL((SELECT SUM(M8) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M9 = ISNULL((SELECT SUM(M9) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M10 = ISNULL((SELECT SUM(M10) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M11 = ISNULL((SELECT SUM(M11) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M12 = ISNULL((SELECT SUM(M12) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_CURRENT = @l_BUDGET_USED_M1 + @l_BUDGET_USED_M2 + @l_BUDGET_USED_M3 + @l_BUDGET_USED_M4 + @l_BUDGET_USED_M5 + @l_BUDGET_USED_M6 + @l_BUDGET_USED_M7 + @l_BUDGET_USED_M8 + @l_BUDGET_USED_M9 + @l_BUDGET_USED_M10 + @l_BUDGET_USED_M11 + @l_BUDGET_USED_M12 END ELSE BEGIN SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE WHEN @p_MONTH = 'M1' then M1 WHEN @p_MONTH = 'M2' then M1 + M2 WHEN @p_MONTH = 'M3' then M1 + M2 + M3 WHEN @p_MONTH = 'M4' then M1 + M2 + M3 + M4 WHEN @p_MONTH = 'M5' then M1 + M2 + M3 + M4 + M5 WHEN @p_MONTH = 'M6' then M1 + M2 + M3 + M4 + M5 + M6 WHEN @p_MONTH = 'M7' then M1 + M2 + M3 + M4 + M5 + M6 + M7 WHEN @p_MONTH = 'M8' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 WHEN @p_MONTH = 'M9' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 WHEN @p_MONTH = 'M10' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 WHEN @p_MONTH = 'M11' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11 WHEN @p_MONTH = 'M12' then M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11 + M12 ELSE M1 END FROM TR_REQ_BUDGET_MONTH_LIMIT WHERE GD_ID = @p_GD_ID AND BRANCH_TYPE = 'PGD' AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND AUTH_STATUS = 'A' AND RECORD_STATUS = '1'),0) -- Lấy hạn mức đã sử dụng đến hiện tại SET @l_BUDGET_USED_M1 = ISNULL((SELECT SUM(M1) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M2 = ISNULL((SELECT SUM(M2) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M3 = ISNULL((SELECT SUM(M3) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M4 = ISNULL((SELECT SUM(M4) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M5 = ISNULL((SELECT SUM(M5) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M6 = ISNULL((SELECT SUM(M6) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M7 = ISNULL((SELECT SUM(M7) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M8 = ISNULL((SELECT SUM(M8) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M9 = ISNULL((SELECT SUM(M9) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M10 = ISNULL((SELECT SUM(M10) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M11 = ISNULL((SELECT SUM(M11) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M12 = ISNULL((SELECT SUM(M12) FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_CURRENT = @l_BUDGET_USED_M1 + @l_BUDGET_USED_M2 + @l_BUDGET_USED_M3 + @l_BUDGET_USED_M4 + @l_BUDGET_USED_M5 + @l_BUDGET_USED_M6 + @l_BUDGET_USED_M7 + @l_BUDGET_USED_M8 + @l_BUDGET_USED_M9 + @l_BUDGET_USED_M10 + @l_BUDGET_USED_M11 + @l_BUDGET_USED_M12 END SELECT FORMAT(@l_BUDGET_LIMIT_CURRENT,'#,#', 'vi-VN') + ' VND' AS BUDGET_LIMIT_APPR, FORMAT(@l_BUDGET_USED_CURRENT,'#,#', 'vi-VN') + ' VND' AS BUDGET_LIMIT_USED, FORMAT(@l_BUDGET_LIMIT_CURRENT - @l_BUDGET_USED_CURRENT,'#,#', 'vi-VN') + ' VND' AS BUDGET_LIMIT_REMAIN GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_BUDGET_CHECK_LIMIT_YEAR_GET_INFO_LIMIT]' GO CREATE PROCEDURE [dbo].[TR_BUDGET_CHECK_LIMIT_YEAR_GET_INFO_LIMIT] @p_GD_ID varchar(20) = NULL, @p_GD_CODE varchar(20) = NULL, @p_BRANCH_ID varchar(20) = NULL, @p_DEP_ID varchar(20) = NULL, @p_KHOI_ID varchar(20) = NULL, @p_TLNAME varchar(20) = NULL, @p_ROLENAME varchar(20) = NULL, @p_MONTH varchar(20) = NULL, @p_YEAR varchar(20) = NULL, @p_BRANCH_KIND varchar(20) = NULL AS IF(CONVERT(INT,@p_YEAR) < YEAR(GETDATE())) BEGIN SET @p_MONTH = 'M12' END ELSE BEGIN SET @p_MONTH = 'M'+ CONVERT(VARCHAR, MONTH(GETDATE())) END DECLARE @l_BUDGET_LIMIT_CURRENT DECIMAL(18,0) -- Lấy hạn mức đã sử dụng đến hiện tại DECLARE @l_BUDGET_USED_CURRENT DECIMAL(18,0) DECLARE @l_BUDGET_USED_M1 DECIMAL(18,0), @l_BUDGET_USED_M2 DECIMAL(18,0), @l_BUDGET_USED_M3 DECIMAL(18,0), @l_BUDGET_USED_M4 DECIMAL(18,0), @l_BUDGET_USED_M5 DECIMAL(18,0), @l_BUDGET_USED_M6 DECIMAL(18,0), @l_BUDGET_USED_M7 DECIMAL(18,0), @l_BUDGET_USED_M8 DECIMAL(18,0), @l_BUDGET_USED_M9 DECIMAL(18,0), @l_BUDGET_USED_M10 DECIMAL(18,0), @l_BUDGET_USED_M11 DECIMAL(18,0), @l_BUDGET_USED_M12 DECIMAL(18,0) DECLARE @BRANCH_TYPE VARCHAR(15) SELECT @BRANCH_TYPE = BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID IF(ISNULL(@p_BRANCH_ID,'') = 'DV0001') BEGIN SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE WHEN @p_MONTH = 'M1' then M1 WHEN @p_MONTH = 'M2' then M2 WHEN @p_MONTH = 'M3' then M3 WHEN @p_MONTH = 'M4' then M4 WHEN @p_MONTH = 'M5' then M5 WHEN @p_MONTH = 'M6' then M6 WHEN @p_MONTH = 'M7' then M7 WHEN @p_MONTH = 'M8' then M8 WHEN @p_MONTH = 'M9' then M9 WHEN @p_MONTH = 'M10' then M10 WHEN @p_MONTH = 'M11' then M11 WHEN @p_MONTH = 'M12' then M12 ELSE M1 END FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE GD_ID = @p_GD_ID AND BRANCH_TYPE = 'HO' AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND AUTH_STATUS = 'A' AND RECORD_STATUS = '1'),0) -- Lấy hạn mức đã sử dụng đến hiện tại SET @l_BUDGET_USED_M1 = ISNULL((SELECT SUM(M1) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M2 = ISNULL((SELECT SUM(M2) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M3 = ISNULL((SELECT SUM(M3) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M4 = ISNULL((SELECT SUM(M4) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M5 = ISNULL((SELECT SUM(M5) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M6 = ISNULL((SELECT SUM(M6) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M7 = ISNULL((SELECT SUM(M7) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M8 = ISNULL((SELECT SUM(M8) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M9 = ISNULL((SELECT SUM(M9) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M10 = ISNULL((SELECT SUM(M10) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M11 = ISNULL((SELECT SUM(M11) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M12 = ISNULL((SELECT SUM(M12) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_CURRENT = @l_BUDGET_USED_M1 + @l_BUDGET_USED_M2 + @l_BUDGET_USED_M3 + @l_BUDGET_USED_M4 + @l_BUDGET_USED_M5 + @l_BUDGET_USED_M6 + @l_BUDGET_USED_M7 + @l_BUDGET_USED_M8 + @l_BUDGET_USED_M9 + @l_BUDGET_USED_M10 + @l_BUDGET_USED_M11 + @l_BUDGET_USED_M12 END ELSE BEGIN SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE WHEN @p_MONTH = 'M1' then M1 WHEN @p_MONTH = 'M2' then M2 WHEN @p_MONTH = 'M3' then M3 WHEN @p_MONTH = 'M4' then M4 WHEN @p_MONTH = 'M5' then M5 WHEN @p_MONTH = 'M6' then M6 WHEN @p_MONTH = 'M7' then M7 WHEN @p_MONTH = 'M8' then M8 WHEN @p_MONTH = 'M9' then M9 WHEN @p_MONTH = 'M10' then M10 WHEN @p_MONTH = 'M11' then M11 WHEN @p_MONTH = 'M12' then M12 ELSE M1 END FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE GD_ID = @p_GD_ID AND BRANCH_TYPE = 'DVKD' AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND AUTH_STATUS = 'A' AND RECORD_STATUS = '1'),0) -- Lấy hạn mức đã sử dụng đến hiện tại SET @l_BUDGET_USED_M1 = ISNULL((SELECT SUM(M1) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M2 = ISNULL((SELECT SUM(M2) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M3 = ISNULL((SELECT SUM(M3) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M4 = ISNULL((SELECT SUM(M4) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M5 = ISNULL((SELECT SUM(M5) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M6 = ISNULL((SELECT SUM(M6) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M7 = ISNULL((SELECT SUM(M7) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M8 = ISNULL((SELECT SUM(M8) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M9 = ISNULL((SELECT SUM(M9) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M10 = ISNULL((SELECT SUM(M10) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M11 = ISNULL((SELECT SUM(M11) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_M12 = ISNULL((SELECT SUM(M12) FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND BRANCH_KIND = @p_BRANCH_KIND AND BUDGET_YEAR = @p_YEAR AND RECORD_STATUS = '1' GROUP BY GD_ID),0) SET @l_BUDGET_USED_CURRENT = @l_BUDGET_USED_M1 + @l_BUDGET_USED_M2 + @l_BUDGET_USED_M3 + @l_BUDGET_USED_M4 + @l_BUDGET_USED_M5 + @l_BUDGET_USED_M6 + @l_BUDGET_USED_M7 + @l_BUDGET_USED_M8 + @l_BUDGET_USED_M9 + @l_BUDGET_USED_M10 + @l_BUDGET_USED_M11 + @l_BUDGET_USED_M12 END SELECT FORMAT(@l_BUDGET_LIMIT_CURRENT,'#,#', 'vi-VN') + ' VND' AS BUDGET_LIMIT_APPR, FORMAT(@l_BUDGET_USED_CURRENT,'#,#', 'vi-VN') + ' VND' AS BUDGET_LIMIT_USED, FORMAT(@l_BUDGET_LIMIT_CURRENT - @l_BUDGET_USED_CURRENT,'#,#', 'vi-VN') + ' VND' AS BUDGET_LIMIT_REMAIN GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQUEST_DOC_MOBILE_Search]' GO CREATE PROCEDURE [dbo].[TR_REQUEST_DOC_MOBILE_Search] @p_REQ_ID varchar(15) = NULL, @p_REQ_CODE varchar(50) = NULL, @p_PL_REQ_CODE varchar(50) = NULL, @p_REQ_NAME nvarchar(200) = NULL, @p_REQ_DT varchar(30) = NULL,-- @p_REQ_CONTENT NVARCHAR(1000)=NULL, @p_TOTAL_AMT decimal = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(12) = NULL, @p_CREATE_DT varchar(30) = NULL,-- @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(12) = NULL, @p_APPROVE_DT varchar(30) = NULL,-- @p_BRANCH_DO VARCHAR(15) = NULL, @p_BRANCH_CREATE VARCHAR(15) = NULL, @p_USER_REQUEST VARCHAR(15) = NULL, @p_BRANCH_LOGIN VARCHAR(15)=NULL, @p_TLNAME_USER VARCHAR(20)=NULL, @p_ROLE_USER VARCHAR(20), @p_TOP INT = 10, @p_PROCESS_STATUS varchar(50) = NULL, @p_FR_DATE varchar(30) = NULL,-- @p_TO_DATE varchar(30) = NULL,-- @p_TYPE VARCHAR(15), @p_TYPE_TRANFER VARCHAR(15)=NULL, @p_YEAR INT = NULL, @p_IS_TRANSFER VARCHAR(10) = NULL, @p_NGUOIXULY NVARCHAR(15) = NULL, @p_IS_KT bit = NULL, @p_PL_REQ_ID VARCHAR(20)=NULL, ------------------BAODNQ 21/10/2022 : TRUYỀN THÊM DEP_CREATE @p_DEP_CREATE VARCHAR(15) = NULL AS BEGIN -- PAGING IF(@p_ROLE_USER ='KTT') SET @p_ROLE_USER ='GDDV' DECLARE @DEP_ID VARCHAR(15),@BRANCH_TYPE VARCHAR(20) DECLARE @COST_ID TABLE ( COST_ID VARCHAR(15), DVDM_ID VARCHAR(15) ) SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME_USER) INSERT INTO @COST_ID SELECT DT.COST_ID,PC.DVDM_ID FROM dbo.PL_COSTCENTER_DT DT LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@p_BRANCH_LOGIN SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN) IF(EXISTS(SELECT DEP_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEP_ID AND DEP_CODE LIKE '069%')) SET @BRANCH_TYPE='HS' ----NGUOI XU LY 18022021 DECLARE @lstREQUEST TABLE ( REQ_ID VARCHAR(20), PROCESS_ID VARCHAR(50), DVDM_NAME NVARCHAR(200), TLNAME VARCHAR(200), TLFullName NVARCHAR(200), NOTES NVARCHAR(200) ) INSERT INTO @lstREQUEST ( REQ_ID,PROCESS_ID, DVDM_NAME,TLNAME,TLFullName, NOTES) SELECT distinct PL.REQ_ID,PL.PROCESS_ID,CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE BR.BRANCH_NAME END AS DVDM_NAME,CASE WHEN TempC.ID IS NULL THEN TempU.TLNANME ELSE TU.TLNANME END AS TLNAME,CASE WHEN TempC.ID IS NULL THEN TempU.TLFullName ELSE TU.TLFullName END AS TLFullName,CASE WHEN TempC.ID IS NULL THEN PL.NOTES ELSE TempC.CONTENT END AS NOTES FROM (SELECT * FROM dbo.PL_REQUEST_PROCESS PRC WHERE EXISTS(SELECT TRD.REQ_ID FROM dbo.TR_REQUEST_DOC TRD WHERE TRD.REQ_ID=PRC.REQ_ID) AND PRC.PROCESS_ID ='DMMS' AND PRC.STATUS='C' ) PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN dbo.TR_REQUEST_DOC TR ON TR.REQ_ID=PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID LEFT JOIN ( SELECT PRC.ID, PRC.PROCESS_ID,PRC.REQ_ID,PRC.TLNAME,AC.CONTENT FROM dbo.PL_REQUEST_PROCESS_CHILD PRC LEFT JOIN dbo.CM_ALLCODE AC ON AC.CDVAL=PRC.TYPE_JOB AND AC.CDNAME='JOB_TYPE' AND CDTYPE='REQ' WHERE (PRC.STATUS_JOB='C' OR PRC.STATUS_JOB='R' ) )TempC ON TempC.PROCESS_ID =PL.ID AND PL.IS_HAS_CHILD=1 LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=TempC.TLNAME LEFT JOIN ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DMMS_ID FROM ( SELECT TS.TLNANME,TS.TLFullName,TS.RoleName,TS.TLSUBBRID,TS.SECUR_CODE FROM dbo.TL_USER TS UNION ALL SELECT TM.TLNAME TLNANME,TS.TLFullName,TM.ROLE_NEW RoleName,TM.BRANCH_ID TLSUBBRID,TM.DEP_ID SECUR_CODE FROM dbo.TL_SYS_ROLE_MAPPING TM LEFT JOIN dbo.TL_USER TS ON TS.TLNANME=TM.TLNAME WHERE CAST(TM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TU LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID LEFT JOIN( SELECT PC.DMMS_ID,PC.DEP_ID,PC.BRANCH_ID FROM dbo.CM_DMMS PC UNION ALL SELECT DVDM.DVDM_ID AS DMMS_ID,DVDM.DEP_ID,DVDM.BRANCH_ID FROM ( SELECT CD.DVDM_ID,PCDT.BRANCH_ID,PCDT.DEP_ID FROM dbo.CM_DVDM CD LEFT JOIN dbo.PL_COSTCENTER PC ON PC.DVDM_ID=CD.DVDM_ID LEFT JOIN dbo.PL_COSTCENTER_DT PCDT ON PCDT.COST_ID = PC.COST_ID WHERE CD.IS_KHOI <>1 GROUP BY CD.DVDM_ID,PCDT.BRANCH_ID,PCDT.DEP_ID ) DVDM ) Temp ON (Temp.DEP_ID=TU.SECUR_CODE OR CB.BRANCH_TYPE<>'HS') AND Temp.BRANCH_ID=TU.TLSUBBRID ) TempU ON (TempU.RoleName=PL.ROLE_USER OR PL.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE TM.ROLE_OLD=TempU.RoleName AND (TM.TLNAME IS NULL OR TM.TLNAME=''))) AND (TempU.DMMS_ID=TR.DMMS_ID) AND TempC.ID IS NULL WHERE PL.STATUS='C' UNION ALL SELECT distinct PL.REQ_ID,PL.PROCESS_ID,CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE BR.BRANCH_NAME END AS DVDM_NAME,TempU.TLNANME AS TLNAME,TempU.TLFullName,PL.NOTES FROM (SELECT * FROM dbo.PL_REQUEST_PROCESS PRC WHERE EXISTS(SELECT TRD.REQ_ID FROM dbo.TR_REQUEST_DOC TRD WHERE TRD.REQ_ID=PRC.REQ_ID) AND PRC.PROCESS_ID <>'DMMS' AND PRC.PROCESS_ID <> 'NEW' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.STATUS='C' AND (PRC.IS_HAS_CHILD=0 OR PRC.IS_HAS_CHILD IS NULL) ) PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID LEFT JOIN ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM ( SELECT TS.TLNANME,TS.TLFullName,TS.RoleName,TS.TLSUBBRID,TS.SECUR_CODE FROM dbo.TL_USER TS UNION ALL SELECT TM.TLNAME TLNANME,TS.TLFullName,TM.ROLE_NEW RoleName,TM.BRANCH_ID TLSUBBRID,TM.DEP_ID SECUR_CODE FROM dbo.TL_SYS_ROLE_MAPPING TM LEFT JOIN dbo.TL_USER TS ON TS.TLNANME=TM.TLNAME WHERE CAST(TM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TU LEFT JOIN ( SELECT PC.DVDM_ID,PD.DEP_ID,PD.BRANCH_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN dbo.PL_COSTCENTER_DT PD ON PC.COST_ID=PD.COST_ID ) Temp ON Temp.DEP_ID=TU.SECUR_CODE AND Temp.BRANCH_ID=TU.TLSUBBRID ) TempU ON (TempU.RoleName=PL.ROLE_USER OR PL.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE ROLE_OLD=TempU.RoleName AND (TM.TLNAME IS NULL OR TM.TLNAME=''))) AND (TempU.TLSUBBRID=PL.BRANCH_ID OR PL.BRANCH_ID IS NULL OR PL.BRANCH_ID='') AND (TempU.SECUR_CODE=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='') AND (TempU.DVDM_ID=PL.DVDM_ID OR PL.DVDM_ID IS NULL OR PL.DVDM_ID ='') WHERE STATUS='C' UNION ALL SELECT distinct PL.REQ_ID,PL.PROCESS_ID,CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE BR.BRANCH_NAME END AS DVDM_NAME,CASE WHEN TempC.ID IS NULL THEN TempU.TLNANME ELSE TU.TLNANME END AS TLNAME,CASE WHEN TempC.ID IS NULL THEN TempU.TLFullName ELSE TU.TLFullName END AS TLFullName,CASE WHEN TempC.ID IS NULL THEN PL.NOTES ELSE TempC.CONTENT END AS NOTES FROM (SELECT * FROM dbo.PL_REQUEST_PROCESS PRC WHERE EXISTS(SELECT TRD.REQ_ID FROM dbo.TR_REQUEST_DOC TRD WHERE TRD.REQ_ID=PRC.REQ_ID) AND PRC.PROCESS_ID <>'DMMS' AND PRC.PROCESS_ID <> 'NEW' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.STATUS='C' AND PRC.IS_HAS_CHILD=1 ) PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID LEFT JOIN ( SELECT PRC.ID, PRC.PROCESS_ID,PRC.REQ_ID,PRC.TLNAME,AC.CONTENT FROM dbo.PL_REQUEST_PROCESS_CHILD PRC LEFT JOIN dbo.CM_ALLCODE AC ON AC.CDVAL=PRC.TYPE_JOB AND AC.CDNAME='JOB_TYPE' AND CDTYPE='REQ' WHERE (PRC.STATUS_JOB='C' OR PRC.STATUS_JOB='R' ) )TempC ON TempC.PROCESS_ID =PL.ID AND PL.IS_HAS_CHILD=1 LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=TempC.TLNAME LEFT JOIN ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM ( SELECT TS.TLNANME,TS.TLFullName,TS.RoleName,TS.TLSUBBRID,TS.SECUR_CODE FROM dbo.TL_USER TS UNION ALL SELECT TM.TLNAME TLNANME,TS.TLFullName,TM.ROLE_NEW RoleName,TM.BRANCH_ID TLSUBBRID,TM.DEP_ID SECUR_CODE FROM dbo.TL_SYS_ROLE_MAPPING TM LEFT JOIN dbo.TL_USER TS ON TS.TLNANME=TM.TLNAME WHERE CAST(TM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TU LEFT JOIN( SELECT PC.DVDM_ID,PD.DEP_ID,PD.BRANCH_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN dbo.PL_COSTCENTER_DT PD ON PC.COST_ID=PD.COST_ID) Temp ON Temp.DEP_ID=TU.SECUR_CODE AND Temp.BRANCH_ID=TU.TLSUBBRID ) TempU ON (TempU.RoleName=PL.ROLE_USER OR PL.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE ROLE_OLD=TempU.RoleName AND (TM.TLNAME IS NULL OR TM.TLNAME=''))) AND (TempU.TLSUBBRID=PL.BRANCH_ID OR PL.BRANCH_ID IS NULL OR PL.BRANCH_ID='') AND (TempU.SECUR_CODE=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='') AND (TempU.DVDM_ID=PL.DVDM_ID OR PL.DVDM_ID IS NULL OR PL.DVDM_ID ='') WHERE PL.STATUS='C' ---- IF(@P_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0 OR @P_TOP>0) BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_REASON,A.TOTAL_AMT,N'Chờ duyệt' AS AUTH_STATUS_NAME, 'U' AS AUTH_STATUS -- SELECT END FROM TR_REQUEST_DOC A INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS = 'C' LEFT JOIN PL_REQUEST_DOC PLRD ON PLRD.REQ_ID = A.PL_REQ_ID WHERE 1 = 1 AND(@p_YEAR IS NULL OR YEAR(A.REQ_DT)=@p_YEAR OR @p_YEAR = '' OR @p_YEAR IS NULL OR @p_YEAR = 0) AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') AND (A.DEP_CREATE LIKE '%' + @p_DEP_CREATE + '%' OR @p_DEP_CREATE IS NULL OR @p_DEP_CREATE = '') AND(@p_FR_DATE IS NULL OR CAST(A.REQ_DT AS DATE) >= CONVERT(DATETIME, @p_FR_DATE, 103)) AND(@p_TO_DATE IS NULL OR CAST(A.REQ_DT AS DATE) <= CONVERT(DATETIME, @p_TO_DATE, 103)) AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND A.RECORD_STATUS = '1' AND (PLRD.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (EXISTS(SELECT * FROM @lstREQUEST LSTRQ WHERE A.REQ_ID = LSTRQ.REQ_ID AND LSTRQ.TLNAME = @p_TLNAME_USER)) AND (PLRP.IS_HAS_CHILD = '0' OR PLRP.IS_HAS_CHILD IS NULL OR (EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD PLRPC WHERE PLRPC.PROCESS_ID = PLRP.ID AND PLRPC.TLNAME = @p_TLNAME_USER AND PLRPC.LEVEL_JOB = '1' AND PLRPC.STATUS_JOB = 'C'))) ORDER BY A.CREATE_DT DESC -- PAGING END END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[PL_REQUEST_TRANSFER_MOBILE_Search]' GO CREATE PROCEDURE [dbo].[PL_REQUEST_TRANSFER_MOBILE_Search] @p_REQ_ID varchar(15) = NULL, @p_REQ_CODE nvarchar(100) = NULL, @p_REQ_NAME nvarchar(200) = NULL, @p_REQ_DT varchar(20) = NULL, @p_REQ_TYPE int = NULL, @p_REQ_CONTENT NVARCHAR(1000)=NULL, @p_REQ_REASON NVARCHAR(500)=NULL, @p_TOTAL_AMT decimal = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(12) = NULL, @p_CREATE_DT varchar(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(12) = NULL, @p_APPROVE_DT varchar(20) = NULL, @p_PROCESS_ID varchar(15) = NULL, @p_BRANCH_ID VARCHAR(15)=NULL, @p_DEP_ID VARCHAR(15) = NULL, @p_BRANCH_LOGIN VARCHAR(15), @p_ROLE_USER VARCHAR(20), @p_TLNAME_USER VARCHAR(15), @p_FR_DATE varchar(20) = NULL, @p_TO_DATE varchar(20) = NULL, @p_TYPE_TRANFER VARCHAR(15), @p_TYPE VARCHAR(15), @p_YEAR INT, @p_TOP INT = 10, @p_IS_TRANSFER VARCHAR(10) = NULL, @p_NGUOIXULY NVARCHAR(15) = NULL, @p_TO_DEP_ID VARCHAR(15)=NULL, @p_TO_BRANCH_ID VARCHAR(15)=NULL, @p_FROM_DEP_ID VARCHAR(15)=NULL, @p_FROM_BRANCH_ID VARCHAR(15)=NULL, @p_TO_GD_NAME NVARCHAR(1000)=NULL, @p_FROM_GD_NAME NVARCHAR(1000)=NULL AS BEGIN -- PAGING DECLARE @TABLE_ROLE TABLE ( ROLE_ID VARCHAR(20)) INSERT INTO @TABLE_ROLE VALUES(@p_ROLE_USER) INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_USER DECLARE @DEP_ID VARCHAR(15),@BRANCH_TYPE VARCHAR(15),@TO_BRANCH_TYPE VARCHAR(15),@FROM_BRANCH_TYPE VARCHAR(15) DECLARE @COST_ID TABLE ( COST_ID VARCHAR(15) ) DECLARE @DVDM_ID TABLE ( DVDM_ID VARCHAR(15) ) SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME_USER) SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN) -- ĐƠN VỊ CHUYỂN SET @FROM_BRANCH_TYPE = (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@p_FROM_BRANCH_ID) -- ĐƠN VỊ NHẬN SET @TO_BRANCH_TYPE = (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@p_TO_BRANCH_ID) IF(EXISTS(SELECT DEP_CODE FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEP_ID AND DEP_CODE LIKE '069%')) BEGIN SET @BRANCH_TYPE='HS' END DECLARE @AUTHOR TABLE ( ROLE_ID VARCHAR(100), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20) ) DECLARE @AUTHOR_DVDM TABLE ( ROLE_ID VARCHAR(100), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), DVDM_ID VARCHAR(20) ) INSERT INTO @AUTHOR ( ROLE_ID, BRANCH_ID, DEP_ID ) SELECT RoleName,TLSUBBRID,SECUR_CODE FROM dbo.TL_USER TU WHERE TLNANME=@p_TLNAME_USER UNION ALL SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE FROM dbo.TL_USER TU LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='') WHERE TLNANME=@p_TLNAME_USER AND TM.ROLE_NEW IS NOT NULL UNION ALL SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE FROM dbo.TL_SYS_ROLE_MAPPING TM1 WHERE TM1.TLNAME=@p_TLNAME_USER AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) UNION ALL SELECT TM.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE FROM dbo.TL_SYS_ROLE_MAPPING TM1 LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TM1.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='') WHERE TM1.TLNAME=@p_TLNAME_USER AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) INSERT INTO @AUTHOR_DVDM ( ROLE_ID, BRANCH_ID, DEP_ID, DVDM_ID ) SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID WHERE TU.TLNANME=@p_TLNAME_USER UNION ALL SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='') WHERE TU.TLNANME=@p_TLNAME_USER AND TM.ROLE_NEW IS NOT NULL UNION ALL SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID WHERE TU.TLNAME=@p_TLNAME_USER AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) UNION ALL SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='') WHERE TU.TLNAME=@p_TLNAME_USER AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) INSERT INTO @COST_ID SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@p_BRANCH_LOGIN INSERT INTO @DVDM_ID SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID) GROUP BY DVDM_ID -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,G.BRANCH_NAME,A.REQ_NAME,A.TOTAL_AMT,N'Chờ duyệt' AS AUTH_STATUS_NAME -- SELECT END FROM PL_REQUEST_DOC A INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS = 'C' LEFT JOIN dbo.PL_REQUEST_PROCESS RPN ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') AND (Temp.IS_HAS_CHILD IS NULL OR Temp.IS_HAS_CHILD =0)) LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPNC ON RPNC.PROCESS_ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') AND Temp.IS_HAS_CHILD=1) AND (RPNC.STATUS_JOB = 'C' OR RPNC.STATUS_JOB = 'R') WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND(@p_FR_DATE IS NULL OR @p_REQ_CODE IS NOT NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103)) AND(@p_TO_DATE IS NULL OR @p_REQ_CODE IS NOT NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103)) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) AND A.RECORD_STATUS = '1' --PHONGNT 12/02/2023 Thêm điều kiện TĐV thấy phiếu AND ((RPN.PROCESS_ID='APPNEW' AND RPN.STATUS='C' AND EXISTS(SELECT 1 FROM @AUTHOR_DVDM WHERE ROLE_ID=RPN.ROLE_USER AND BRANCH_ID=RPN.BRANCH_ID AND ((BRANCH_ID='DV0001'AND DEP_ID=RPN.DEP_ID)OR(BRANCH_ID<>'DV0001')))AND (PLRP.IS_HAS_CHILD=0 OR PLRP.IS_HAS_CHILD IS NULL)) OR (RPNC.TLNAME=@p_TLNAME_USER AND RPNC.STATUS_JOB='C' AND RPNC.TYPE_JOB='TP') -- OR (RPN.PROCESS_ID='TC' AND EXISTS(SELECT 1 FROM @AUTHOR_DVDM WHERE ROLE_ID=RPN.ROLE_USER AND BRANCH_ID =RPN.BRANCH_ID AND DEP_ID=RPN.DEP_ID)) -- -- OR (RPN.PROCESS_ID IN ('DVDC','DVCM') AND EXISTS(SELECT 1 FROM @AUTHOR_DVDM WHERE ROLE_ID=RPN.ROLE_USER AND DVDM_ID= RPN.DVDM_ID)AND (PLRP.IS_HAS_CHILD=0 OR PLRP.IS_HAS_CHILD IS NULL)) --END OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND ( (PLRP.PROCESS_ID='DVDC' AND PLRP.BRANCH_ID=AUTH.BRANCH_ID AND (PLRP.DEP_ID=AUTH.DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID='')) OR PLRP.DVDM_ID=AUTH.DVDM_ID OR ((PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL) AND (PLRP.BRANCH_ID IS NULL OR PLRP.BRANCH_ID='')) ))) AND (PLRP.IS_HAS_CHILD=0 OR PLRP.IS_HAS_CHILD IS NULL) -- GiaNT 20/10/2021 AND (A.REQ_ID IN( SELECT REQ_DOC_ID FROM PL_REQUEST_TRANSFER) ) AND (NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = A.REQ_ID)) ORDER BY A.CREATE_DT DESC -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_Upd]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_Upd] @p_REQ_PAY_AUTO_ID VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_CODE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_DT VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_TYPE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_SERVICE_TYPE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_STATUS VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_EFFECTIVE_DT VARCHAR(20)= NULL, @p_BRANCH_ID VARCHAR(20)= NULL, @p_DEP_ID VARCHAR(20)= NULL, @p_BRANCH_CREATE VARCHAR(20)= NULL, @p_TRANSFER_USER_RECEIVE VARCHAR(20)= NULL, @p_CONFIRM_NOTE VARCHAR(20)= NULL, @p_CONTRACT_ID VARCHAR(20)= NULL, @p_PROCESS VARCHAR(20)= NULL, @p_TRANSFER_MAKER VARCHAR(20)= NULL, @p_TRANSFER_DT VARCHAR(20)= NULL, @p_MAKER_ID VARCHAR(20)= NULL, @p_CREATE_DT VARCHAR(20)= NULL, @p_EDITOR_ID VARCHAR(20)= NULL, @p_EDIT_DT VARCHAR(20)= NULL, @p_CHECKER_ID VARCHAR(20)= NULL, @p_APPROVE_DT VARCHAR(20)= NULL, @p_AUTH_STATUS VARCHAR(20)= NULL, @p_MAKER_ID_KT VARCHAR(20)= NULL, @p_CREATE_DT_KT VARCHAR(20)= NULL, @p_CHECKER_ID_KT VARCHAR(20)= NULL, @p_APPROVE_DT_KT VARCHAR(20)= NULL, @p_AUTH_STATUS_KT VARCHAR(20)= NULL, @p_RECORD_STATUS VARCHAR(20)= NULL, @p_FRMDATE VARCHAR(20)= NULL, @p_TODATE VARCHAR(20)= NULL, @p_LEVEL VARCHAR(20)= NULL, @p_USER_LOGIN VARCHAR(20)= NULL, @p_IS_SEND_APPR VARCHAR(20)= NULL, @p_TYPE_SEARCH VARCHAR(20)= NULL, @p_BRANCH_LOGIN VARCHAR(20)= NULL, @p_NOTIFI_EXPIRED_DT VARCHAR(20)= NULL, @p_IS_MAKER_CONFIRM_CHECKBOX VARCHAR(20)= NULL, @p_XMP_SCHEDULE XML = NULL, @p_XMP_SCHEDULE_DETAIL XML = NULL, @p_XMP_METHOD XML = NULL AS -- BEGIN VALIDATE MASTER IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') <> @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Chỉnh sửa phiếu thất bại! Chỉ người tạo phiếu mới có quyền chỉnh sửa phiếu' ErrorDesc RETURN '-1' END IF(ISNULL(@p_REQ_PAY_AUTO_TYPE, '') = '' OR ISNULL(@p_MAKER_ID, '') = '' OR ISNULL(@p_BRANCH_ID, '') = '' OR ISNULL(@p_DEP_ID, '') = '' OR ISNULL(@p_REQ_PAY_AUTO_SERVICE_TYPE, '') = '') BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Các thông tin sau không được để trống: loại thanh toán tự động, người tạo yêu cầu, đơn vị tạo yêu cầu, phòng ban tạo yêu cầu, loại dịch vụ thanh toán' ErrorDesc RETURN '-1' END IF(ISNULL(@p_REQ_PAY_AUTO_CODE, '') = '' OR ISNULL(@p_REQ_PAY_AUTO_ID, '') = '') BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Mã số phiếu không được đế trống' ErrorDesc RETURN '-1' END IF(ISNULL(@p_CONTRACT_ID, '') = '') BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Số hợp đồng(ID hệ thống) không được đế trống' ErrorDesc RETURN '-1' END -- END VALIDATE MASTER -- BEGIN VALIDATE FLOW IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS = 'A' AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động đã được trưởng đơn vị phê duyệt trước đó' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'A' AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động đã được kiểm sát viên phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') <> '' AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động đã được gửi phê duyệt trước đó' ErrorDesc RETURN '-1' END -- END VALIDATE FLOW BEGIN TRANSACTION UPDATE TR_REQ_PAYMENT_AUTO SET REQ_PAY_AUTO_SERVICE_TYPE = @p_REQ_PAY_AUTO_SERVICE_TYPE, AUTH_STATUS = 'E', CREATE_DT = GETDATE(), TRANSFER_USER_RECEIVE = @p_TRANSFER_USER_RECEIVE, CONTRACT_ID = @p_CONTRACT_ID, NOTIFI_EXPIRED_DT = CONVERT(DATE, @p_NOTIFI_EXPIRED_DT, 103), IS_MAKER_CONFIRM = @p_IS_MAKER_CONFIRM_CHECKBOX, IS_MAKER_CONFIRM_CHECKBOX = @p_IS_MAKER_CONFIRM_CHECKBOX WHERE 1 = 1 AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID IF @@Error <> 0 GOTO ABORT --- INSERT LICH THANH TOAN DELETE FROM TR_REQ_PAY_AUTO_SCHEDULE WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID DECLARE @hDocSchedule INT EXEC sp_xml_preparedocument @hDocSchedule OUTPUT, @p_XMP_SCHEDULE; IF(@p_IS_SEND_APPR ='SEND') BEGIN IF(NOT EXISTS(SELECT * FROM OPENXML(@hDocSchedule, '/Root/XmlDataSchedule', 2) WITH(REQ_PAY_AUTO_ID varchar(20)))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin định kỳ thanh toán không được phép để trống' ErrorDesc RETURN '-1' END END DECLARE @REQ_PAY_AUTO_SCHEDULE_ID VARCHAR(20), @CONTRACT_ID VARCHAR(20), @TYPE_PERIOD VARCHAR(20), @START_DT VARCHAR(20), @END_DT VARCHAR(20), @PERIOD_AMT DECIMAL(18,2), @PERIOD_NUMBER DECIMAL(18,2), @PERIOD_PAY_DT VARCHAR(20), @PERIOD_PAY_DAY DECIMAL(18,0) DECLARE XmlDataSchedule CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDocSchedule, 'Root/XmlDataSchedule',2) WITH(REQ_PAY_AUTO_CONTRACT_ID VARCHAR(20), CONTRACT_ID VARCHAR(20), TYPE_PERIOD VARCHAR(20), START_DT VARCHAR(20), END_DT VARCHAR(20), PERIOD_AMT DECIMAL(18,2), PERIOD_NUMBER DECIMAL(18,2), PERIOD_PAY_DT VARCHAR(20), PERIOD_PAY_DAY DECIMAL(18,0)) OPEN XmlDataSchedule DECLARE @INDEX_SCHEDULE INT = 0; FETCH NEXT FROM XmlDataSchedule INTO @REQ_PAY_AUTO_SCHEDULE_ID, @CONTRACT_ID, @TYPE_PERIOD, @START_DT, @END_DT, @PERIOD_AMT, @PERIOD_NUMBER , @PERIOD_PAY_DT, @PERIOD_PAY_DAY WHILE @@fetch_status=0 BEGIN -- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_IS_SEND_APPR ='SEND') BEGIN SET @INDEX_SCHEDULE = @INDEX_SCHEDULE + 1 IF(@TYPE_PERIOD IS NULL OR @TYPE_PERIOD = '') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Định kỳ không được để trống' ErrorDesc RETURN '-1' END IF(@START_DT IS NULL OR @START_DT = '') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Ngày bắt đầu không được để trống' ErrorDesc RETURN '-1' END IF(@END_DT IS NULL OR @END_DT = '') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Ngày kết thúc không được để trống' ErrorDesc RETURN '-1' END IF(@PERIOD_AMT IS NULL OR @PERIOD_AMT < 0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Số tiền định kỳ thanh toán không được để trống hoặc bé hơn 0' ErrorDesc RETURN '-1' END IF(@PERIOD_PAY_DAY IS NULL OR @PERIOD_PAY_DAY < 0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Ngày thanh toán định kỳ không được để trống' ErrorDesc RETURN '-1' END IF(CONVERT(DATE, @START_DT, 103) > CONVERT(DATE, @END_DT, 103)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Ngày bắt đầu phải bé hơn ngày kết thúc' ErrorDesc RETURN '-1' END END EXEC SYS_CodeMasters_Gen 'REQ_PAY_AUTO_SCHEDULE_ID', @REQ_PAY_AUTO_SCHEDULE_ID OUT; IF @REQ_PAY_AUTO_SCHEDULE_ID='' OR @REQ_PAY_AUTO_SCHEDULE_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_AUTO_SCHEDULE(REQ_PAY_AUTO_SCHEDULE_ID, REQ_PAY_AUTO_ID, CONTRACT_ID, TYPE_PERIOD, START_DT, END_DT, PERIOD_AMT, PERIOD_NUMBER, PERIOD_PAY_DT, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, AUTH_STATUS, RECORD_STATUS, PERIOD_PAY_DAY) VALUES (@REQ_PAY_AUTO_SCHEDULE_ID, @p_REQ_PAY_AUTO_ID, @CONTRACT_ID, @TYPE_PERIOD, CONVERT(DATE,@START_DT,103), CONVERT(DATE,@END_DT,103), @PERIOD_AMT, @PERIOD_NUMBER, CONVERT(DATE,@PERIOD_PAY_DT,103), @p_MAKER_ID, GETDATE(), NULL, NULL, 'A', '1', @PERIOD_PAY_DAY) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataSchedule INTO @REQ_PAY_AUTO_SCHEDULE_ID, @CONTRACT_ID, @TYPE_PERIOD, @START_DT, @END_DT, @PERIOD_AMT, @PERIOD_NUMBER , @PERIOD_PAY_DT, @PERIOD_PAY_DAY END CLOSE XmlDataSchedule; DEALLOCATE XmlDataSchedule; --- INSERT CHI TIET LICH THANH TOAN DELETE FROM TR_REQ_PAY_AUTO_SCHEDULE_DETAIL WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID --AND PAY_AUTO_STATUS <> 'Y' DECLARE @hDocScheduleDetail INT EXEC sp_xml_preparedocument @hDocScheduleDetail OUTPUT, @p_XMP_SCHEDULE_DETAIL; IF(@p_IS_SEND_APPR ='SEND') BEGIN IF(NOT EXISTS(SELECT * FROM OPENXML(@hDocScheduleDetail, '/Root/XmlDataScheduleDetail', 2) WITH(REQ_PAY_AUTO_ID varchar(20)))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách lịch thanh toán chi tiết không được phép để trống' ErrorDesc RETURN '-1' END END DECLARE @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID VARCHAR(20), @EXPECTED_DT VARCHAR(20), @PAY_AUTO_AMT DECIMAL(18,2), @PAY_AUTO_DESC VARCHAR(1000), @PAY_AUTO_STATUS VARCHAR(20), @EXACT_DT VARCHAR(20), @END_PERIOD_DT VARCHAR(20), @NOTES NVARCHAR(255) DECLARE XmlDataScheduleDetail CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDocScheduleDetail, 'Root/XmlDataScheduleDetail',2) WITH(REQ_PAY_AUTO_SCHEDULE_DETAIL_ID VARCHAR(20),REQ_PAY_AUTO_SCHEDULE_ID VARCHAR(20),EXPECTED_DT VARCHAR(20),PAY_AUTO_AMT DECIMAL(18,2),PAY_AUTO_DESC VARCHAR(1000),PAY_AUTO_STATUS VARCHAR(20), EXACT_DT VARCHAR(20), START_DT VARCHAR(20), END_DT VARCHAR(20), TYPE_PERIOD VARCHAR(20), END_PERIOD_DT VARCHAR(20), NOTES NVARCHAR(255)) OPEN XmlDataScheduleDetail DECLARE @INDEX_SCHEDULE_DETAIL INT = 0 FETCH NEXT FROM XmlDataScheduleDetail INTO @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @REQ_PAY_AUTO_SCHEDULE_ID, @EXPECTED_DT, @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, @EXACT_DT, @START_DT, @END_DT, @TYPE_PERIOD, @END_PERIOD_DT, @NOTES WHILE @@fetch_status=0 BEGIN -- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_IS_SEND_APPR ='SEND') BEGIN SET @INDEX_SCHEDULE_DETAIL = @INDEX_SCHEDULE_DETAIL + 1 IF(@EXPECTED_DT IS NULL OR @EXPECTED_DT = '') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Ngày dự kiến thanh toán không được để trống' ErrorDesc RETURN '-1' END IF(@PAY_AUTO_AMT IS NULL OR @PAY_AUTO_AMT < 0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Số tiền thanh toán không được để trống' ErrorDesc RETURN '-1' END /* IF(@PAY_AUTO_DESC IS NULL OR @PAY_AUTO_DESC = '') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Nội dung thanh toán không được để trống' ErrorDesc RETURN '-1' END */ IF(@PAY_AUTO_STATUS IS NULL OR @PAY_AUTO_STATUS = '') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Tình trạng không được để trống' ErrorDesc RETURN '-1' END END EXEC SYS_CodeMasters_Gen 'REQ_PAY_AUTO_SCHEDULE_DETAIL_ID', @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID OUT; IF @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID='' OR @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_AUTO_SCHEDULE_DETAIL(REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, REQ_PAY_AUTO_SCHEDULE_ID, REQ_PAY_AUTO_ID, EXPECTED_DT, PAY_AUTO_AMT, PAY_AUTO_DESC, PAY_AUTO_STATUS, EXACT_DT, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, AUTH_STATUS, RECORD_STATUS, START_DT, END_DT, TYPE_PERIOD, END_PERIOD_DT, NOTES) VALUES (@REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @REQ_PAY_AUTO_SCHEDULE_ID, @p_REQ_PAY_AUTO_ID, CONVERT(DATE,@EXPECTED_DT,103), @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, CONVERT(DATE,@EXACT_DT,103), @p_MAKER_ID, GETDATE(), NULL, NULL, 'A', '1', CONVERT(DATE,@START_DT,103), CONVERT(DATE,@END_DT,103), @TYPE_PERIOD, CONVERT(DATE,@END_PERIOD_DT,103), @NOTES) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataScheduleDetail INTO @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @REQ_PAY_AUTO_SCHEDULE_ID, @EXPECTED_DT, @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, @EXACT_DT, @START_DT, @END_DT, @TYPE_PERIOD, @END_PERIOD_DT, @NOTES END CLOSE XmlDataScheduleDetail; DEALLOCATE XmlDataScheduleDetail; --- INSERT PHUONG THUC THANH TOAN DELETE FROM TR_REQ_PAY_AUTO_METHOD WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID print '121223' DECLARE @hDocMeThod INT EXEC sp_xml_preparedocument @hDocMeThod OUTPUT, @p_XMP_METHOD; IF(@p_IS_SEND_APPR ='SEND') BEGIN IF(NOT EXISTS(SELECT * FROM OPENXML(@hDocMeThod, '/Root/XmlDataMethod', 2) WITH(REQ_PAY_AUTO_ID varchar(20)))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách phương thức thanh toán không được phép để trống' ErrorDesc RETURN '-1' END END DECLARE @RECEIVE_ID VARCHAR(15), @RECEIVE_NAME NVARCHAR(100), @REQ_PAY_REASON NVARCHAR(MAX), @TOTAL_AMT DECIMAL(18,2), @REQ_PAY_TYPE VARCHAR(1), @REQ_PAY_DESC NVARCHAR(MAX), @REQ_PAY_ENTRIES NVARCHAR(MAX), @ACC_NO VARCHAR(25), @ACC_NAME NVARCHAR(250), @ISSUED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20), @CURRENCY VARCHAR(15), @RATE DECIMAL(18,2), @CHECK_IN VARCHAR(15), @TYPE_TRANSFER VARCHAR(15), @BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME VARCHAR(250), @SUB_ISSUED_BY NVARCHAR(250), @RECEIVER_DEBIT VARCHAR(20) DECLARE XmlDataMethod CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDocMeThod, 'Root/XmlDataMethod',2) WITH(RECEIVE_ID VARCHAR(15),RECEIVE_NAME NVARCHAR(100),REQ_PAY_REASON NVARCHAR(MAX),TOTAL_AMT DECIMAL(18,2), REQ_PAY_TYPE VARCHAR(1),REQ_PAY_DESC NVARCHAR(MAX),REQ_PAY_ENTRIES NVARCHAR(MAX),ACC_NO VARCHAR(25), ACC_NAME NVARCHAR(250),ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),CHECK_IN VARCHAR(15),TYPE_TRANSFER VARCHAR(15), BANKCODE_NAPAS VARCHAR(20), BANKCODE VARCHAR(20), BANKNAME VARCHAR(250), SUB_ISSUED_BY NVARCHAR(250), RECEIVER_DEBIT VARCHAR(20)) OPEN XmlDataMethod DECLARE @INDEX_METHOD INT = 0 FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT,@REQ_PAY_TYPE, @REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT WHILE @@fetch_status=0 BEGIN -- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_IS_SEND_APPR ='SEND') BEGIN SET @INDEX_METHOD = @INDEX_METHOD + 1 ----------------------- begin validate ------------------------ IF(@ACC_NO IS NULL OR @ACC_NO = '') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': số tài khoản '+ N' không được để trống' ErrorDesc RETURN '-1' END IF(@REQ_PAY_TYPE = '1' AND (@ISSUED_DT = '' OR @ISSUED_DT IS NULL)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Ngày cấp CMND '+ N' không được để trống nếu phương thức thanh toán là bằng tiền mặt' ErrorDesc RETURN '-1' END IF(@TOTAL_AMT IS NULL OR @TOTAL_AMT < 0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Số tiền thanh toán không được để trống hoặc bé hơn 0' ErrorDesc RETURN '-1' END END IF(@REQ_PAY_TYPE<>'1') BEGIN SET @ISSUED_DT = NULL END IF(@TYPE_TRANSFER IS NULL OR @TYPE_TRANSFER ='') BEGIN SET @TYPE_TRANSFER ='A' END DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT; IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_AUTO_METHOD(METHOD_ID, REQ_PAY_AUTO_ID, EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT) VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_AUTO_ID,@RECEIVE_ID,@REQ_PAY_REASON, @TOTAL_AMT,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',@p_MAKER_ID,GETDATE(),@ACC_NO, @ACC_NAME,@ISSUED_BY,CONVERT(DATE,@ISSUED_DT,103), 'VND' ,'1',@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME,@SUB_ISSUED_BY, @RECEIVER_DEBIT ) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT,@REQ_PAY_TYPE, @REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT END CLOSE XmlDataMethod; DEALLOCATE XmlDataMethod; COMMIT TRANSACTION IF(@p_IS_SEND_APPR ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS = 'U', PROCESS = '0' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_AUTO_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Người tạo gửi phê duyệt',N'Gửi phê duyệt cấp đơn vị') IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE (TRANSFER_USER_RECEIVE <> '' AND TRANSFER_USER_RECEIVE IS NOT NULL) AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '1' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID, N'Đơn vị gửi phiếu yêu cầu thanh toán tự động số: ' + ISNULL(@p_REQ_PAY_AUTO_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc RETURN '1' END ELSE BEGIN SELECT '2' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID, N'Đơn vị gửi phiếu yêu cầu thanh toán tự động số: ' + ISNULL(@p_REQ_PAY_AUTO_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc RETURN '2' END END SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID, @p_REQ_PAY_AUTO_CODE AS REQ_PAY_AUTO_CODE, N'Thêm mới thành công' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lỗi không xác định' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_Search]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_Search] @p_REQ_PAY_AUTO_ID VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_CODE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_NAME VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_DT VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_TYPE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_SERVICE_TYPE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_STATUS VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_EFFECTIVE_DT VARCHAR(20)= NULL, @p_BRANCH_ID VARCHAR(20)= NULL, @p_BRANCH_CODE VARCHAR(20)= NULL, @p_BRANCH_NAME VARCHAR(20)= NULL, @p_DEP_ID VARCHAR(20)= NULL, @p_DEP_CODE VARCHAR(20)= NULL, @p_DEP_NAME VARCHAR(20)= NULL, @p_BRANCH_CREATE VARCHAR(20)= NULL, @p_BRANCH_CREATE_CODE VARCHAR(20)= NULL, @p_BRANCH_CREATE_NAME VARCHAR(20)= NULL, @p_TRANSFER_USER_RECEIVE VARCHAR(20)= NULL, @p_TRANSFER_USER_RECEIVE_NAME VARCHAR(20)= NULL, @p_CONFIRM_NOTE VARCHAR(20)= NULL, @p_CONTRACT_ID VARCHAR(20)= NULL, @p_CONTRACT_CODE VARCHAR(20)= NULL, @p_CONTRACT_NAME VARCHAR(20)= NULL, @p_PROCESS VARCHAR(20)= NULL, @p_TRANSFER_MAKER VARCHAR(20)= NULL, @p_TRANSFER_DT VARCHAR(20)= NULL, @p_MAKER_ID VARCHAR(20)= NULL, @p_MAKER_NAME VARCHAR(20)= NULL, @p_CREATE_DT VARCHAR(20)= NULL, @p_EDITOR_ID VARCHAR(20)= NULL, @p_EDITOR_NAME VARCHAR(20)= NULL, @p_EDIT_DT VARCHAR(20)= NULL, @p_CHECKER_ID VARCHAR(20)= NULL, @p_CHECKER_NAME VARCHAR(20)= NULL, @p_APPROVE_DT VARCHAR(20)= NULL, @p_AUTH_STATUS VARCHAR(20)= NULL, @p_MAKER_ID_KT VARCHAR(20)= NULL, @p_MAKER_KT_NAME VARCHAR(20)= NULL, @p_CREATE_DT_KT VARCHAR(20)= NULL, @p_CHECKER_ID_KT VARCHAR(20)= NULL, @p_CHECKER_KT_NAME VARCHAR(20)= NULL, @p_APPROVE_DT_KT VARCHAR(20)= NULL, @p_AUTH_STATUS_KT VARCHAR(20)= NULL, @p_AUTH_STATUS_KT_DESC VARCHAR(20)= NULL, @p_RECORD_STATUS VARCHAR(20)= NULL, @p_FRMDATE VARCHAR(20)= NULL, @p_TODATE VARCHAR(20)= NULL, @p_LEVEL VARCHAR(20)= NULL, @p_USER_LOGIN VARCHAR(20)= NULL, @p_IS_SEND_APPR VARCHAR(20)= NULL, @p_TYPE_SEARCH VARCHAR(20)= NULL, @p_BRANCH_LOGIN VARCHAR(20)= NULL, @p_TOP INT = NULL AS BEGIN -- PAGING -- BEGIN KHAI BÁO IF(ISNULL(@p_BRANCH_ID, '') = '') BEGIN SET @p_BRANCH_ID = @p_BRANCH_CREATE END -- ĐƠN VỊ YÊU CẦU DECLARE @tmp_branch TABLE(BRANCH_ID VARCHAR(15)) DECLARE @tmp_dep TABLE(DEP_ID VARCHAR(15)) DECLARE @DEP_ID VARCHAR(15) = NULL INSERT INTO @tmp_branch SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID) DECLARE @BRANCH_TYPE VARCHAR(15) SET @BRANCH_TYPE =(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_AUTO_ID)) -- ĐƠN VỊ ĐĂNG NHẬP DECLARE @tmp_branch_login TABLE(BRANCH_ID VARCHAR(15)) DECLARE @tmp_dep_login TABLE(DEP_ID VARCHAR(15)) INSERT INTO @tmp_branch_login SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN) INSERT INTO @tmp_branch_login VALUES (@p_BRANCH_LOGIN) INSERT INTO @tmp_branch_login SELECT BRANCH_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) DECLARE @BRANCH_TYPE_LG VARCHAR(15) SET @BRANCH_TYPE_LG = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN) -- PHÒNG BAN ĐĂNG NHẬP DECLARE @DEP_ID_LG VARCHAR(15) = NULL SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_USER_LOGIN) INSERT INTO @tmp_dep_login VALUES (@DEP_ID_LG) INSERT INTO @tmp_dep_login SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@DEP_ID_LG INSERT INTO @tmp_dep_login SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) -- ĐƠN VỊ ỦY QUYỀN KIÊM NHIỆM DECLARE @tmp_branch_auth TABLE (BRANCH_ID VARCHAR(15)) INSERT INTO @tmp_branch_auth VALUES (@p_BRANCH_LOGIN) INSERT INTO @tmp_branch_auth SELECT BRANCH_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) -- PHÒNG BAN ỦY QUYỀN KIÊM NHIỆM DECLARE @tmp_dep_auth TABLE (DEP_ID VARCHAR(15)) INSERT INTO @tmp_dep_auth VALUES (@DEP_ID_LG) INSERT INTO @tmp_dep_auth SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) INSERT INTO @tmp_dep_auth SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@DEP_ID_LG -- ROLE DECLARE @ROLE_ID VARCHAR(20) SET @ROLE_ID = (SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME=@p_USER_LOGIN) DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50)) INSERT INTO @TABLE_ROLE VALUES (@ROLE_ID) INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_ID AND TLNAME =@P_USER_LOGIN AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='') AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='') -- NEU USER KHONG CHON TU NGAY THI TU NGAY BANG NGAY 1 1 HANG THANG 20211116 DECLARE @DATE DATE IF ((@p_FRMDATE IS NULL OR @p_FRMDATE ='') AND ISNULL(@p_REQ_PAY_AUTO_ID,'')='' AND @p_AUTH_STATUS ='') -- MỤC ĐÍCH NẾU NHƯ XEM CHI TIẾT 1 PĐN THANH TOÁN DẠNG POPUP THÌ BỎ QUA ĐIỀU KIỆN NÀY, TỪ NGÀY VẪN LÀ NULL BEGIN SET @DATE = CONVERT(DATE,GETDATE(),103) SET @DATE = DATEADD(MONTH,-2,@DATE) END ELSE BEGIN SET @DATE = CONVERT(DATE,@p_FRMDATE,103) END -- CHECK NGUOI DUYET DECLARE @IS_TDV VARCHAR(1) = 'N' IF ( ( SELECT COUNT(*) FROM @TABLE_ROLE A WHERE A.ROLE_AUTH IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','KTT','GDK','KSV','TC','NVTC','TPTC','PPGD') ) = 0 ) BEGIN SET @IS_TDV = 'N' END ELSE BEGIN SET @IS_TDV = 'Y' END -- END KHAI BÁO IF(@p_TOP IS NULL OR @p_TOP=0) BEGIN IF(@DEP_ID_LG = 'DEP000000000022') BEGIN -- PAGING BEGIN SELECT A.*, B.BRANCH_CODE, B.BRANCH_NAME, C.DEP_CODE, C.DEP_NAME, D.CONTRACT_CODE, D.[CONTRACT_NAME], E.TLFullName AS MAKER_NAME, F.TLFullName AS MAKER_NAME_KT, G.TLFullName AS CHECKER_NAME_KT, H.CONTENT AS REQ_PAY_AUTO_STATUS_NAME, I.CONTENT AS REQ_PAY_AUTO_TYPE_NAME, J.CONTENT AS AUTH_STATUS_NAME, K.CONTENT AS AUTH_STATUS_KT_NAME -- SELECT END FROM TR_REQ_PAYMENT_AUTO A LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID LEFT JOIN CM_DEPARTMENT C ON A.DEP_ID = C.DEP_ID LEFT JOIN TR_CONTRACT D ON A.CONTRACT_ID = D.CONTRACT_ID LEFT JOIN TL_USER E ON A.MAKER_ID = E.TLNANME LEFT JOIN TL_USER F ON A.MAKER_ID_KT = F.TLNANME LEFT JOIN TL_USER G ON A.CHECKER_ID_KT = G.TLNANME LEFT JOIN CM_ALLCODE H ON A.REQ_PAY_AUTO_STATUS = H.CDVAL AND H.CDNAME = 'PAY_AUTO_STATUS' AND H.CDTYPE = 'REQ_AUTO' LEFT JOIN CM_ALLCODE I ON A.REQ_PAY_AUTO_TYPE = I.CDVAL AND I.CDNAME = 'PAY_TYPE_AUTO' AND I.CDTYPE = 'REQ_AUTO' LEFT JOIN CM_ALLCODE J ON A.AUTH_STATUS = J.CDVAL AND J.CDNAME = 'AUTH_STATUS' AND J.CDTYPE = 'TR_REQ_PAYMENT' LEFT JOIN CM_ALLCODE K ON A.AUTH_STATUS_KT = K.CDVAL AND K.CDNAME = 'AUTH_STATUS_KT' AND K.CDTYPE = 'TR_REQ_PAYMENT' WHERE 1=1 -- BEGIN FILTER AND ( A.REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID OR ISNULL(@p_REQ_PAY_AUTO_ID, '') = '') AND ( A.REQ_PAY_AUTO_CODE = @p_REQ_PAY_AUTO_CODE OR ISNULL(@p_REQ_PAY_AUTO_CODE, '') = '') AND ( A.AUTH_STATUS = @p_AUTH_STATUS OR ISNULL(@p_AUTH_STATUS, '') = '') AND ( A.REQ_PAY_AUTO_TYPE = @p_REQ_PAY_AUTO_TYPE OR ISNULL(@p_REQ_PAY_AUTO_TYPE, '') = '') AND ( A.AUTH_STATUS_KT = @p_AUTH_STATUS_KT OR ISNULL(@p_AUTH_STATUS_KT, '') = '') AND ( A.CONTRACT_ID = @p_CONTRACT_ID OR ISNULL(@p_CONTRACT_ID, '') = '') AND ( A.REQ_PAY_AUTO_STATUS = @p_REQ_PAY_AUTO_STATUS OR ISNULL(@p_REQ_PAY_AUTO_STATUS, '') = '') AND( CONVERT(DATE, A.CREATE_DT) >= CONVERT(DATE, @p_FRMDATE, 103) OR ISNULL(@p_FRMDATE, '')= '' OR A.CREATE_DT IS NULL) AND( CONVERT(DATE, A.CREATE_DT) <= CONVERT(DATE, @p_TODATE, 103) OR ISNULL(@p_TODATE, '')= '' OR A.CREATE_DT IS NULL) AND ( A.MAKER_ID = @p_MAKER_ID OR ISNULL(@p_MAKER_ID, '') = '') AND ( A.MAKER_ID_KT = @p_MAKER_ID_KT OR ISNULL(@p_MAKER_ID_KT, '') = '') -- END FILTER ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE BEGIN -- PAGING BEGIN SELECT A.*, B.BRANCH_CODE, B.BRANCH_NAME, C.DEP_CODE, C.DEP_NAME, D.CONTRACT_CODE, D.[CONTRACT_NAME], E.TLFullName AS MAKER_NAME, F.TLFullName AS MAKER_NAME_KT, G.TLFullName AS CHECKER_NAME_KT, L.TLFullName AS TRANSFER_USER_RECEIVE_NAME, H.CONTENT AS REQ_PAY_AUTO_STATUS_NAME, I.CONTENT AS REQ_PAY_AUTO_TYPE_NAME, J.CONTENT AS AUTH_STATUS_NAME, K.CONTENT AS AUTH_STATUS_KT_NAME -- SELECT END FROM TR_REQ_PAYMENT_AUTO A LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID LEFT JOIN CM_DEPARTMENT C ON A.DEP_ID = C.DEP_ID LEFT JOIN TR_CONTRACT D ON A.CONTRACT_ID = D.CONTRACT_ID LEFT JOIN TL_USER E ON A.MAKER_ID = E.TLNANME LEFT JOIN TL_USER F ON A.MAKER_ID_KT = F.TLNANME LEFT JOIN TL_USER G ON A.CHECKER_ID_KT = G.TLNANME LEFT JOIN TL_USER L ON A.TRANSFER_USER_RECEIVE = L.TLNANME LEFT JOIN CM_ALLCODE H ON A.REQ_PAY_AUTO_STATUS = H.CDVAL AND H.CDNAME = 'PAY_AUTO_STATUS' AND H.CDTYPE = 'REQ_AUTO' LEFT JOIN CM_ALLCODE I ON A.REQ_PAY_AUTO_TYPE = I.CDVAL AND I.CDNAME = 'PAY_TYPE_AUTO' AND I.CDTYPE = 'REQ_AUTO' LEFT JOIN CM_ALLCODE J ON A.AUTH_STATUS = J.CDVAL AND J.CDNAME = 'AUTH_STATUS' AND J.CDTYPE = 'TR_REQ_PAYMENT' LEFT JOIN CM_ALLCODE K ON A.AUTH_STATUS_KT = K.CDVAL AND K.CDNAME = 'AUTH_STATUS_KT' AND K.CDTYPE = 'TR_REQ_PAYMENT' WHERE 1=1 -- BEGIN FILTER AND ( A.REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID OR ISNULL(@p_REQ_PAY_AUTO_ID, '') = '') AND ( A.REQ_PAY_AUTO_CODE = @p_REQ_PAY_AUTO_CODE OR ISNULL(@p_REQ_PAY_AUTO_CODE, '') = '') AND ( A.AUTH_STATUS = @p_AUTH_STATUS OR ISNULL(@p_AUTH_STATUS, '') = '') AND ( A.REQ_PAY_AUTO_TYPE = @p_REQ_PAY_AUTO_TYPE OR ISNULL(@p_REQ_PAY_AUTO_TYPE, '') = '') AND ( A.AUTH_STATUS_KT = @p_AUTH_STATUS_KT OR ISNULL(@p_AUTH_STATUS_KT, '') = '') AND ( A.CONTRACT_ID = @p_CONTRACT_ID OR ISNULL(@p_CONTRACT_ID, '') = '') AND ( A.REQ_PAY_AUTO_STATUS = @p_REQ_PAY_AUTO_STATUS OR ISNULL(@p_REQ_PAY_AUTO_STATUS, '') = '') AND( CONVERT(DATE, A.CREATE_DT) >= CONVERT(DATE, @p_FRMDATE, 103) OR ISNULL(@p_FRMDATE, '')= '' OR A.CREATE_DT IS NULL) AND( CONVERT(DATE, A.CREATE_DT) <= CONVERT(DATE, @p_TODATE, 103) OR ISNULL(@p_TODATE, '')= '' OR A.CREATE_DT IS NULL) AND ( ( @p_LEVEL='ALL' AND ( A.BRANCH_ID IN ( SELECT BRANCH_ID FROM @tmp_branch ) -- PYC cua don vi minh OR A.BRANCH_ID IN (SELECT * FROM @tmp_branch_auth) -- PYC cua don vi kiem nhiem ) ) OR ( @p_LEVEL='UNIT' AND A.BRANCH_ID = @p_BRANCH_ID ) ) AND ( A.DEP_ID = @p_DEP_ID OR ISNULL(@p_DEP_ID, '') = '' OR A.DEP_ID IN ( SELECT * FROM @tmp_dep_auth ) ) AND ( A.MAKER_ID = @p_MAKER_ID OR ISNULL(@p_MAKER_ID, '') = '') AND ( A.MAKER_ID_KT = @p_MAKER_ID_KT OR ISNULL(@p_MAKER_ID_KT, '') = '') -- END FILTER -- BEGIN VALIDATE FLOW AND ( ( ( A.MAKER_ID = @p_USER_LOGIN) )-- NGUOI TAO OR ( ( A.AUTH_STATUS IN ('U', 'R', 'A', 'N') AND A.TRANSFER_USER_RECEIVE = @p_USER_LOGIN) )-- NGUOI DUYET TRUNG GIAN OR ( ( A.AUTH_STATUS IN ('R', 'A', 'N') AND @IS_TDV = 'Y') OR ( A.AUTH_STATUS = 'U' AND ISNULL(A.TRANSFER_USER_RECEIVE, '') = '' AND @IS_TDV = 'Y') OR ( A.AUTH_STATUS = 'U' AND ISNULL(A.TRANSFER_USER_RECEIVE, '') <> '' AND ISNULL(A.PROCESS, '') = '1' AND @IS_TDV = 'Y') )-- TRUONG DON VI OR ( A.AUTH_STATUS = 'A' AND ( ( @p_LEVEL='ALL' AND ( A.BRANCH_ID IN ( SELECT BRANCH_ID FROM @tmp_branch ) -- PYC cua don vi minh OR A.BRANCH_ID IN (SELECT * FROM @tmp_branch_auth) -- PYC cua don vi kiem nhiem ) ) OR ( ( @p_LEVEL='UNIT' AND A.BRANCH_ID = @p_BRANCH_ID ) OR (@p_BRANCH_ID = '' OR @p_BRANCH_ID IS NULL) ) ) AND ( A.DEP_ID = @p_DEP_ID OR A.DEP_ID IN ( SELECT * FROM @tmp_dep_auth ) OR ISNULL(@p_DEP_ID, '') = '' ) )-- PHIEU CUA DON VI MINH DA DUYET ) -- BEGIN VALIDATE FLOW ORDER BY A.CREATE_DT DESC -- PAGING END END END; ELSE BEGIN -- PAGING BEGIN SELECT A.*, B.BRANCH_CODE, B.BRANCH_NAME, C.DEP_CODE, C.DEP_NAME, D.CONTRACT_CODE, D.[CONTRACT_NAME], E.TLFullName AS MAKER_NAME -- SELECT END FROM TR_REQ_PAYMENT_AUTO A LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID LEFT JOIN CM_DEPARTMENT C ON A.DEP_ID = C.DEP_ID LEFT JOIN TR_CONTRACT D ON A.CONTRACT_ID = D.CONTRACT_ID LEFT JOIN TL_USER E ON A.MAKER_ID = E.TLNANME WHERE 1=1 AND ( A.REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID OR ISNULL(@p_REQ_PAY_AUTO_ID, '') = '') ORDER BY A.CREATE_DT DESC -- PAGING END END; END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAY_METHOD_AUTO_ById]' GO CREATE PROC [dbo].[TR_REQ_PAY_METHOD_AUTO_ById] @p_REQ_PAY_AUTO_ID VARCHAR(15) AS BEGIN SELECT A.*,T.TLFullName AS EMP_NAME FROM TR_REQ_PAY_AUTO_METHOD A LEFT JOIN TL_USER T ON A.EMP_ID = T.TLNANME WHERE A.REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAY_AUTO_METHOD_ById]' GO CREATE PROC [dbo].[TR_REQ_PAY_AUTO_METHOD_ById] @p_REQ_PAY_AUTO_ID varchar(15) AS BEGIN SELECT A.*,T.TLFullName AS EMP_NAME FROM TR_REQ_PAY_AUTO_METHOD A LEFT JOIN TL_USER T ON A.EMP_ID = T.TLNANME WHERE A.REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAY_AUTO_SCHEDULE_Byid]' GO CREATE PROC [dbo].[TR_REQ_PAY_AUTO_SCHEDULE_Byid] @p_REQ_PAY_AUTO_ID varchar(15) AS BEGIN SELECT A.* FROM TR_REQ_PAY_AUTO_SCHEDULE A WHERE A.REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAY_AUTO_SCHEDULE_DETAIL_Byid]' GO CREATE PROC [dbo].[TR_REQ_PAY_AUTO_SCHEDULE_DETAIL_Byid] @p_REQ_PAY_AUTO_ID varchar(15) AS BEGIN SELECT A.* FROM TR_REQ_PAY_AUTO_SCHEDULE_DETAIL A WHERE A.REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAY_AUTO_LIST_PAYMENT_ById]' GO CREATE PROC [dbo].[TR_REQ_PAY_AUTO_LIST_PAYMENT_ById] @p_REQ_PAY_AUTO_ID varchar(15) AS BEGIN SELECT A.* FROM TR_REQ_PAY_AUTO_PAYMENTS A WHERE 1=1 AND A.REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAY_AUTO_TRANSFER_OUTSIDE_TRANS_ById]' GO CREATE PROC [dbo].[TR_REQ_PAY_AUTO_TRANSFER_OUTSIDE_TRANS_ById] @p_REQ_PAY_AUTO_ID varchar(15) = NULL AS BEGIN SELECT A.*, CM1.CONTENT as TYPE_TRANSFER_NAME, CM2.CONTENT AS PRODUCT_NAME, CM3.CONTENT AS OBJECT_TRANSFER_NAME, CM4.ACC_NAME AS ACC_NAME_TRANSFER, 'VND' AS CURRENCY, BR.BRANCH_NAME, BR.BRANCH_CODE FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_TRANS A --LEFT JOIN TL_USER T ON A.EMP_ID = T.TLNANME LEFT JOIN CM_ALLCODE CM1 ON A.TYPE_TRANSFER_ID = CM1.CDVAL AND CM1.CDNAME = 'TR_REQ' AND CM1.CDTYPE = 'TYPE_TRANSFER' LEFT JOIN CM_ALLCODE CM2 ON A.PRODUCT_ID = CM2.CDVAL AND CM2.CDNAME = 'TR_REQ' AND CM2.CDTYPE = 'OBJECT_TRANSFER' LEFT JOIN CM_ALLCODE CM3 ON A.OBJECT_TRANSFER_ID = CM3.CDVAL AND CM3.CDNAME = 'TR_REQ' AND CM3.CDTYPE = 'PRODUCT_TRANS' LEFT JOIN CM_ACCOUNT CM4 ON A.ACC_NO_TRANSFER = CM4.ACC_NO LEFT JOIN CM_BRANCH BR ON A.BRANCH_ID = BR.BRANCH_ID WHERE A.REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAY_AUTO_TRANSFER_OUTSIDE_REC_ById]' GO CREATE PROC [dbo].[TR_REQ_PAY_AUTO_TRANSFER_OUTSIDE_REC_ById] @p_REQ_PAY_AUTO_ID varchar(15) = NULL AS BEGIN SELECT A.*, CM1.CONTENT AS CHANEL_PAYMENT_NAME FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_REC A LEFT JOIN CM_ALLCODE CM1 ON A.CHANEL_PAYMENT_ID = CM1.CDVAL AND CM1.CDNAME = 'TR_REQ' AND CM1.CDTYPE = 'OUTSIDE_CHANEL' LEFT JOIN CM_ALLCODE CM2 ON A.BANK_RECEIVE_ID = CM1.CDVAL AND CM1.CDNAME = 'TR_REQ' AND CM1.CDTYPE = 'OUTSIDE_B_REC' WHERE A.REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_Appr]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_Appr] --Luanlt 2019/17/10 - Sửa params @p_REQ_PAY_AUTO_ID varchar(15)= NULL, @p_CHECKER_ID varchar(15) = NULL AS -- BEGIN VALIDATE -- END VALIDATE -- BEGIN VALIDATE FLOW IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') = '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động chưa được gửi phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') = '0' AND ISNULL(TRANSFER_USER_RECEIVE, '') <> '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động đang chờ cấp phê duyệt trung gian xác nhận' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS = 'A' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động đã được trưởng đơn vị phê duyệt trước đó' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'A' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động đã được kiếm sát viên phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') NOT IN ('0', '1') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động đang chờ phòng kế toán phê duyệt' ErrorDesc RETURN '-1' END -- END VALIDATE FLOW BEGIN TRANSACTION UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS='A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = GETDATE(), AUTH_STATUS_KT='U', PROCESS = '2' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_AUTO_ID,'APP',@p_CHECKER_ID,GETDATE(), N'Trưởng đơn vị phê duyệt phiếu',N'Phê duyệt cấp đơn vị') IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID ,'' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_AUTO_TRANSFER_Upd]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_AUTO_TRANSFER_Upd] @p_TRANSFER_MAKER nvarchar(50) = NULL, @p_TRANSFER_DT varchar(25) = NULL, @p_TRANSFER_TYPE varchar(15) = NULL, @p_XMP_TEMP XML = NULL AS --Validation is here /* */ DECLARE @LIST_REQ_PAY_AUTO_ID VARCHAR(500) ='', @PROCESS_ID VARCHAR(15) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XMP_TEMP DECLARE TransferData CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/XmlData',2) WITH ( REQ_PAY_AUTO_ID varchar(15) , TRANSFER_MAKER nvarchar(15) , TRANSFER_USER_RECEIVE varchar(15), TRANSFER_ACTION VARCHAR(15) ) OPEN TransferData BEGIN TRANSACTION DECLARE @ROLE_USER VARCHAR(20) SET @ROLE_USER =(SELECT RoleName FROM TL_USER WHERE TLNANME =@p_TRANSFER_MAKER) DECLARE @REQ_PAY_AUTO_ID VARCHAR(15), @TRANSFER_MAKER VARCHAR(15),@TRANSFER_USER_RECEIVE VARCHAR(15),@TRANSFER_ACTION VARCHAR(15) DECLARE @INDEX INT =0 FETCH NEXT FROM TransferData INTO @REQ_PAY_AUTO_ID, @TRANSFER_MAKER, @TRANSFER_USER_RECEIVE,@TRANSFER_ACTION WHILE @@FETCH_STATUS = 0 BEGIN SET @PROCESS_ID ='3' SET @INDEX = @INDEX+1 -- doanptt 12/04/2022 IF(@TRANSFER_MAKER = @TRANSFER_USER_RECEIVE) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Người điều phối không được điều phối cho chính mình. Vui lòng không thực hiện điều phối' ErrorDesc RETURN '-1' END ------ DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_AUTO_ID -- KIEM TRA NEU CHUA CHON NHAN VIEN XU LY SE BAO LOI print 'ssss:dsds ' print 'ssss: ' + @TRANSFER_USER_RECEIVE; IF(@TRANSFER_USER_RECEIVE ='' OR @TRANSFER_USER_RECEIVE IS NULL) BEGIN CLOSE TransferData DEALLOCATE TransferData ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Nhân viên được giao xử lý không được phép để trống' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND AUTH_STATUS_KT='S')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đang được đề xuất từ chối và KSV đang xem xét' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND AUTH_STATUS_KT='A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đã được kế toán duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRANSFER_USER_RECEIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRANSFER_USER_RECEIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TL_USER_V2 WHERE TLNANME =@TRANSFER_USER_RECEIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TL_USER_V2 WHERE TLNANME =@TRANSFER_USER_RECEIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc RETURN '-1' END IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_AUTO_ID AND TLNAME =@TRANSFER_MAKER)) BEGIN INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT) VALUES (@REQ_PAY_AUTO_ID,@PROCESS_ID,@TRANSFER_MAKER,'KS',CONVERT(VARCHAR(5),'1'),'P','1', GETDATE()) END -- KHAI BAO MAX LEVEL DECLARE @MAX_LEVEL VARCHAR(5), @NEXT_LEVEL INT, @PREV_LEVEL INT SET @MAX_LEVEL= (SELECT MAX(LEVEL_JOB) FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_PAY_AUTO_ID) SET @NEXT_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) +1 SET @PREV_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) -1 IF(@TRANSFER_ACTION ='XL') BEGIN IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_AUTO_ID AND TYPE_JOB =@TRANSFER_ACTION)) BEGIN INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT) VALUES (@REQ_PAY_AUTO_ID,@PROCESS_ID, @TRANSFER_USER_RECEIVE,'XL',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1',GETDATE()) INSERT INTO PL_PROCESS VALUES (@REQ_PAY_AUTO_ID,'TRANSF',@p_TRANSFER_MAKER, GETDATE(),N'Điều phối về nhân viên ' + @TRANSFER_USER_RECEIVE,N'Điều phối thanh toán/ tạm ứng') END ELSE BEGIN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB=@TRANSFER_ACTION,TLNAME = @TRANSFER_USER_RECEIVE WHERE REQ_ID =@REQ_PAY_AUTO_ID AND TYPE_JOB =@TRANSFER_ACTION END END ELSE BEGIN IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_AUTO_ID AND TYPE_JOB =@TRANSFER_ACTION)) BEGIN INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT) VALUES (@REQ_PAY_AUTO_ID,@PROCESS_ID, @TRANSFER_USER_RECEIVE,'KS',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1',GETDATE()) END ELSE BEGIN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_AUTO_ID AND TLNAME = @TRANSFER_USER_RECEIVE END END --LUCTV - 06042021 BO SUNG KHI DIEU PHOI XONG CAP NHAT NGAY DIEU PHOI VAO BANG MASTER THANH TOAN / TAM UNG UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS_KT ='U',TRANSFER_DT = GETDATE() WHERE REQ_PAY_AUTO_ID =@REQ_PAY_AUTO_ID SET @LIST_REQ_PAY_AUTO_ID = @LIST_REQ_PAY_AUTO_ID+','+@REQ_PAY_AUTO_ID IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM TransferData INTO @REQ_PAY_AUTO_ID, @TRANSFER_MAKER, @TRANSFER_USER_RECEIVE,@TRANSFER_ACTION END CLOSE TransferData DEALLOCATE TransferData IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @LIST_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION CLOSE TransferData DEALLOCATE TransferData SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_TRANSFER_Upd]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_TRANSFER_Upd] @p_TRANSFER_MAKER nvarchar(50) = NULL, @p_TRANSFER_DT varchar(25) = NULL, @p_TRANSFER_TYPE varchar(15) = NULL, @p_XMP_TEMP XML = NULL AS --Validation is here /* */ DECLARE @LIST_REQ_PAY_AUTO_ID VARCHAR(500) ='', @PROCESS_ID VARCHAR(15) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XMP_TEMP DECLARE TransferData CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/XmlData',2) WITH ( REQ_PAY_AUTO_ID varchar(15) , TRANSFER_MAKER nvarchar(15) , TRANSFER_USER_RECEIVE varchar(15), TRANSFER_ACTION VARCHAR(15) ) OPEN TransferData BEGIN TRANSACTION DECLARE @ROLE_USER VARCHAR(20) SET @ROLE_USER =(SELECT RoleName FROM TL_USER WHERE TLNANME =@p_TRANSFER_MAKER) DECLARE @REQ_PAY_AUTO_ID VARCHAR(15), @TRANSFER_MAKER VARCHAR(15),@TRANSFER_USER_RECEIVE VARCHAR(15),@TRANSFER_ACTION VARCHAR(15) DECLARE @INDEX INT =0 FETCH NEXT FROM TransferData INTO @REQ_PAY_AUTO_ID, @TRANSFER_MAKER, @TRANSFER_USER_RECEIVE,@TRANSFER_ACTION WHILE @@FETCH_STATUS = 0 BEGIN SET @PROCESS_ID ='4' SET @INDEX = @INDEX+1 -- doanptt 12/04/2022 IF(@TRANSFER_MAKER = @TRANSFER_USER_RECEIVE) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Người điều phối không được điều phối cho chính mình. Vui lòng không thực hiện điều phối' ErrorDesc RETURN '-1' END ------ DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_AUTO_ID -- KIEM TRA NEU CHUA CHON NHAN VIEN XU LY SE BAO LOI IF(@TRANSFER_USER_RECEIVE ='' OR @TRANSFER_USER_RECEIVE IS NULL) BEGIN CLOSE TransferData DEALLOCATE TransferData ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Nhân viên được giao xử lý không được phép để trống' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND AUTH_STATUS_KT='S')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu yêu cầu thanh toán tự động đang được đề xuất từ chối và KSV đang xem xét' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND AUTH_STATUS_KT='A' AND ISNULL(PROCESS, '') = '5')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu yêu cầu thanh toán tự động đã được kế toán duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRANSFER_USER_RECEIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRANSFER_USER_RECEIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc RETURN '-1' END IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_AUTO_ID AND TLNAME =@TRANSFER_MAKER)) BEGIN INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT) VALUES (@REQ_PAY_AUTO_ID,@PROCESS_ID,@TRANSFER_MAKER,'KS','2','U','1', GETDATE()) END -- KHAI BAO MAX LEVEL DECLARE @MAX_LEVEL VARCHAR(5), @NEXT_LEVEL INT, @PREV_LEVEL INT SET @MAX_LEVEL= (SELECT MAX(LEVEL_JOB) FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_PAY_AUTO_ID) SET @NEXT_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) +1 SET @PREV_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) -1 IF(@TRANSFER_ACTION ='XL') BEGIN IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_AUTO_ID AND TYPE_JOB =@TRANSFER_ACTION)) BEGIN INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT) VALUES (@REQ_PAY_AUTO_ID,@PROCESS_ID, @TRANSFER_USER_RECEIVE,'XL','1','C','1',GETDATE()) IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND PROCESS = '2')) -- TĐV đã phê duyệt BEGIN INSERT INTO PL_PROCESS VALUES (@REQ_PAY_AUTO_ID,'TRANSF',@p_TRANSFER_MAKER, GETDATE(),N'Điều phối về nhân viên ' + @TRANSFER_USER_RECEIVE,N'Điều phối yêu cầu thanh toán tự động') END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND PROCESS = '11')) -- TĐV đã phê duyệt yêu cầu khôi phục phiếu BEGIN INSERT INTO PL_PROCESS VALUES (@REQ_PAY_AUTO_ID,'TRAN_UNSUS',@p_TRANSFER_MAKER, GETDATE(),N'Điều phối về nhân viên ' + @TRANSFER_USER_RECEIVE,N'Điều phối khôi phục phiếu yêu cầu thanh toán tự động') END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND PROCESS = '17')) -- TĐV đã phê duyệt yêu cầu hủy phiếu BEGIN INSERT INTO PL_PROCESS VALUES (@REQ_PAY_AUTO_ID,'TRAN_DEL',@p_TRANSFER_MAKER, GETDATE(),N'Điều phối về nhân viên ' + @TRANSFER_USER_RECEIVE,N'Điều phối hủy phiếu yêu cầu thanh toán tự động') END ELSE BEGIN print 1 END END ELSE BEGIN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB=@TRANSFER_ACTION,TLNAME = @TRANSFER_USER_RECEIVE WHERE REQ_ID =@REQ_PAY_AUTO_ID AND TYPE_JOB =@TRANSFER_ACTION END END ELSE BEGIN IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_AUTO_ID AND TYPE_JOB =@TRANSFER_ACTION)) BEGIN INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS,TRANFER_DT) VALUES (@REQ_PAY_AUTO_ID,@PROCESS_ID, @TRANSFER_USER_RECEIVE,'KS',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1',GETDATE()) END ELSE BEGIN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_AUTO_ID AND TLNAME = @TRANSFER_USER_RECEIVE END END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND PROCESS = '2')) -- TĐV đã phê duyệt BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS_KT ='U',TRANSFER_DT = GETDATE(), PROCESS = '3' WHERE REQ_PAY_AUTO_ID =@REQ_PAY_AUTO_ID END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND PROCESS = '11')) -- TĐV đã phê duyệt yêu cầu khôi phục phiếu BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET TRANSFER_DT = GETDATE(), PROCESS = '12' WHERE REQ_PAY_AUTO_ID =@REQ_PAY_AUTO_ID END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND PROCESS = '17')) -- TĐV đã phê duyệt yêu cầu hủy phiếu BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET TRANSFER_DT = GETDATE(), PROCESS = '18' WHERE REQ_PAY_AUTO_ID =@REQ_PAY_AUTO_ID END ELSE BEGIN print 1 END SET @LIST_REQ_PAY_AUTO_ID = @LIST_REQ_PAY_AUTO_ID+','+@REQ_PAY_AUTO_ID IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM TransferData INTO @REQ_PAY_AUTO_ID, @TRANSFER_MAKER, @TRANSFER_USER_RECEIVE,@TRANSFER_ACTION END CLOSE TransferData DEALLOCATE TransferData IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @LIST_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION CLOSE TransferData DEALLOCATE TransferData SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_TRANSFER_Search]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_TRANSFER_Search] @p_REQ_PAY_AUTO_ID VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_CODE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_NAME VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_DT VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_TYPE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_SERVICE_TYPE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_STATUS VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_EFFECTIVE_DT VARCHAR(20)= NULL, @p_BRANCH_ID VARCHAR(20)= NULL, @p_BRANCH_CODE VARCHAR(20)= NULL, @p_BRANCH_NAME VARCHAR(20)= NULL, @p_DEP_ID VARCHAR(20)= NULL, @p_DEP_CODE VARCHAR(20)= NULL, @p_DEP_NAME VARCHAR(20)= NULL, @p_BRANCH_CREATE VARCHAR(20)= NULL, @p_BRANCH_CREATE_CODE VARCHAR(20)= NULL, @p_BRANCH_CREATE_NAME VARCHAR(20)= NULL, @p_TRANSFER_USER_RECEIVE VARCHAR(20)= NULL, @p_TRANSFER_USER_RECEIVE_NAME VARCHAR(20)= NULL, @p_CONFIRM_NOTE VARCHAR(20)= NULL, @p_CONTRACT_ID VARCHAR(20)= NULL, @p_CONTRACT_CODE VARCHAR(20)= NULL, @p_CONTRACT_NAME VARCHAR(20)= NULL, @p_PROCESS VARCHAR(20)= NULL, @p_TRANSFER_MAKER VARCHAR(20)= NULL, @p_TRANSFER_DT VARCHAR(20)= NULL, @p_MAKER_ID VARCHAR(20)= NULL, @p_MAKER_NAME VARCHAR(20)= NULL, @p_CREATE_DT VARCHAR(20)= NULL, @p_EDITOR_ID VARCHAR(20)= NULL, @p_EDITOR_NAME VARCHAR(20)= NULL, @p_EDIT_DT VARCHAR(20)= NULL, @p_CHECKER_ID VARCHAR(20)= NULL, @p_CHECKER_NAME VARCHAR(20)= NULL, @p_APPROVE_DT VARCHAR(20)= NULL, @p_AUTH_STATUS VARCHAR(20)= NULL, @p_MAKER_ID_KT VARCHAR(20)= NULL, @p_MAKER_KT_NAME VARCHAR(20)= NULL, @p_CREATE_DT_KT VARCHAR(20)= NULL, @p_CHECKER_ID_KT VARCHAR(20)= NULL, @p_CHECKER_KT_NAME VARCHAR(20)= NULL, @p_APPROVE_DT_KT VARCHAR(20)= NULL, @p_AUTH_STATUS_KT VARCHAR(20)= NULL, @p_AUTH_STATUS_KT_DESC VARCHAR(20)= NULL, @p_RECORD_STATUS VARCHAR(20)= NULL, @p_FRMDATE VARCHAR(20)= NULL, @p_TODATE VARCHAR(20)= NULL, @p_LEVEL VARCHAR(20)= NULL, @p_USER_LOGIN VARCHAR(20)= NULL, @p_IS_SEND_APPR VARCHAR(20)= NULL, @p_TYPE_SEARCH VARCHAR(20)= NULL, @p_BRANCH_LOGIN VARCHAR(20)= NULL, @p_IS_TRANSFER VARCHAR(20)= NULL, @p_TOP INT = NULL AS BEGIN -- PAGING -- BEGIN KHAI BÁO -- ĐƠN VỊ YÊU CẦU DECLARE @tmp_branch TABLE(BRANCH_ID VARCHAR(15)) DECLARE @tmp_dep TABLE(DEP_ID VARCHAR(15)) DECLARE @DEP_ID VARCHAR(15) = NULL INSERT INTO @tmp_branch SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID) DECLARE @BRANCH_TYPE VARCHAR(15) SET @BRANCH_TYPE =(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_AUTO_ID)) -- ĐƠN VỊ ĐĂNG NHẬP DECLARE @tmp_branch_login TABLE(BRANCH_ID VARCHAR(15)) DECLARE @tmp_dep_login TABLE(DEP_ID VARCHAR(15)) INSERT INTO @tmp_branch_login SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN) INSERT INTO @tmp_branch_login VALUES (@p_BRANCH_LOGIN) INSERT INTO @tmp_branch_login SELECT BRANCH_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) DECLARE @BRANCH_TYPE_LG VARCHAR(15) SET @BRANCH_TYPE_LG = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN) -- PHÒNG BAN ĐĂNG NHẬP DECLARE @DEP_ID_LG VARCHAR(15) = NULL SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_USER_LOGIN) INSERT INTO @tmp_dep_login VALUES (@DEP_ID_LG) INSERT INTO @tmp_dep_login SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@DEP_ID_LG INSERT INTO @tmp_dep_login SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) -- ROLE DECLARE @ROLE_ID VARCHAR(20) SET @ROLE_ID = (SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME=@p_USER_LOGIN) DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50)) INSERT INTO @TABLE_ROLE VALUES (@ROLE_ID) INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_ID AND TLNAME =@P_USER_LOGIN AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='') AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='') -- NEU USER KHONG CHON TU NGAY THI TU NGAY BANG NGAY 1 1 HANG THANG 20211116 DECLARE @DATE DATE IF ((@p_FRMDATE IS NULL OR @p_FRMDATE ='') AND ISNULL(@p_REQ_PAY_AUTO_ID,'')='' AND @p_AUTH_STATUS ='') -- MỤC ĐÍCH NẾU NHƯ XEM CHI TIẾT 1 PĐN THANH TOÁN DẠNG POPUP THÌ BỎ QUA ĐIỀU KIỆN NÀY, TỪ NGÀY VẪN LÀ NULL BEGIN SET @DATE = CONVERT(DATE,GETDATE(),103) SET @DATE = DATEADD(MONTH,-2,@DATE) END ELSE BEGIN SET @DATE = CONVERT(DATE,@p_FRMDATE,103) END -- END KHAI BÁO IF(@p_TOP IS NULL OR @p_TOP=0) BEGIN -- PAGING BEGIN SELECT A.*, B.TLNAME AS TRANSFER_USER_RECEIVE -- SELECT END FROM TR_REQ_PAYMENT_AUTO A LEFT JOIN PL_REQUEST_PROCESS_CHILD B ON A.REQ_PAY_AUTO_ID = B.REQ_ID AND B.TYPE_JOB = 'XL' WHERE 1=1 AND ( A.AUTH_STATUS = 'A' OR A.AUTH_STATUS = 'N') -- BEGIN FILTER AND ( A.REQ_PAY_AUTO_TYPE = @p_REQ_PAY_AUTO_TYPE OR ISNULL(@p_REQ_PAY_AUTO_TYPE, '') = '') AND ( A.PROCESS = @p_PROCESS OR ISNULL(@p_PROCESS, '') = '') AND ( A.CONTRACT_ID = @p_CONTRACT_ID OR ISNULL(@p_CONTRACT_ID, '') = '') AND ( A.REQ_PAY_AUTO_SERVICE_TYPE = @p_REQ_PAY_AUTO_SERVICE_TYPE OR ISNULL(@p_REQ_PAY_AUTO_SERVICE_TYPE, '') = '') AND ( A.REQ_PAY_AUTO_CODE = @p_REQ_PAY_AUTO_CODE OR ISNULL(@p_REQ_PAY_AUTO_CODE, '') = '') AND ( ( @p_IS_TRANSFER = 'Y' AND ( EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_AUTO_ID) OR A.AUTH_STATUS_KT ='A' ) ) OR ( @p_IS_TRANSFER='N' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_AUTO_ID ) AND A.AUTH_STATUS_KT <>'A' ) OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='' ) AND (CONVERT(DATE, A.CREATE_DT) >= CONVERT(DATE, @p_FRMDATE, 103) OR @p_FRMDATE IS NULL OR @p_FRMDATE = '' OR A.CREATE_DT IS NULL) AND (CONVERT(DATE, A.CREATE_DT) <= CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '' OR A.CREATE_DT IS NULL) AND ( A.BRANCH_ID = @p_BRANCH_ID OR ISNULL(@p_BRANCH_ID, '') = '') AND ( A.DEP_ID = @p_DEP_ID OR ISNULL(@p_DEP_ID, '') = '') AND ( A.MAKER_ID = @p_MAKER_ID OR ISNULL(@p_MAKER_ID, '') = '') AND ( B.TLNAME = @p_MAKER_ID_KT OR ISNULL(@p_MAKER_ID_KT, '') = '') -- END FILTER ORDER BY A.CREATE_DT DESC -- PAGING END END; ELSE BEGIN -- PAGING BEGIN SELECT A.*, B.TLNAME AS TRANSFER_USER_RECEIVE -- SELECT END FROM TR_REQ_PAYMENT_AUTO A LEFT JOIN PL_REQUEST_PROCESS_CHILD B ON A.REQ_PAY_AUTO_ID = B.REQ_ID AND B.TYPE_JOB = 'XL' WHERE 1=1 AND ( A.AUTH_STATUS = 'A' OR A.AUTH_STATUS = 'N') -- BEGIN FILTER AND ( A.REQ_PAY_AUTO_TYPE = @p_REQ_PAY_AUTO_TYPE OR ISNULL(@p_REQ_PAY_AUTO_TYPE, '') = '') AND ( A.PROCESS = @p_PROCESS OR ISNULL(@p_PROCESS, '') = '') AND ( A.CONTRACT_ID = @p_CONTRACT_ID OR ISNULL(@p_CONTRACT_ID, '') = '') AND ( A.REQ_PAY_AUTO_SERVICE_TYPE = @p_REQ_PAY_AUTO_SERVICE_TYPE OR ISNULL(@p_REQ_PAY_AUTO_SERVICE_TYPE, '') = '') AND ( A.REQ_PAY_AUTO_CODE = @p_REQ_PAY_AUTO_CODE OR ISNULL(@p_REQ_PAY_AUTO_CODE, '') = '') AND ( ( @p_IS_TRANSFER = 'Y' AND ( EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_AUTO_ID) OR A.AUTH_STATUS_KT ='A' ) ) OR ( @p_IS_TRANSFER='N' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_AUTO_ID ) AND A.AUTH_STATUS_KT <>'A' ) OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='' ) AND (CONVERT(DATE, A.CREATE_DT) >= CONVERT(DATE, @p_FRMDATE, 103) OR @p_FRMDATE IS NULL OR @p_FRMDATE = '' OR A.CREATE_DT IS NULL) AND (CONVERT(DATE, A.CREATE_DT) <= CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '' OR A.CREATE_DT IS NULL) AND ( A.BRANCH_ID = @p_BRANCH_ID OR ISNULL(@p_BRANCH_ID, '') = '') AND ( A.DEP_ID = @p_DEP_ID OR ISNULL(@p_DEP_ID, '') = '') AND ( A.MAKER_ID = @p_MAKER_ID OR ISNULL(@p_MAKER_ID, '') = '') AND ( B.TLNAME = @p_MAKER_ID_KT OR ISNULL(@p_MAKER_ID_KT, '') = '') -- END FILTER ORDER BY A.CREATE_DT DESC -- PAGING END END; END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_KT_Upd]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_KT_Upd] @p_REQ_PAY_AUTO_ID VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_CODE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_DT VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_TYPE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_SERVICE_TYPE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_STATUS VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_EFFECTIVE_DT VARCHAR(20)= NULL, @p_BRANCH_ID VARCHAR(20)= NULL, @p_DEP_ID VARCHAR(20)= NULL, @p_BRANCH_CREATE VARCHAR(20)= NULL, @p_TRANSFER_USER_RECEIVE VARCHAR(20)= NULL, @p_CONFIRM_NOTE VARCHAR(20)= NULL, @p_CONTRACT_ID VARCHAR(20)= NULL, @p_PROCESS VARCHAR(20)= NULL, @p_TRANSFER_MAKER VARCHAR(20)= NULL, @p_TRANSFER_DT VARCHAR(20)= NULL, @p_MAKER_ID VARCHAR(20)= NULL, @p_CREATE_DT VARCHAR(20)= NULL, @p_EDITOR_ID VARCHAR(20)= NULL, @p_EDIT_DT VARCHAR(20)= NULL, @p_CHECKER_ID VARCHAR(20)= NULL, @p_APPROVE_DT VARCHAR(20)= NULL, @p_AUTH_STATUS VARCHAR(20)= NULL, @p_MAKER_ID_KT VARCHAR(20)= NULL, @p_CREATE_DT_KT VARCHAR(20)= NULL, @p_CHECKER_ID_KT VARCHAR(20)= NULL, @p_APPROVE_DT_KT VARCHAR(20)= NULL, @p_AUTH_STATUS_KT VARCHAR(20)= NULL, @p_RECORD_STATUS VARCHAR(20)= NULL, @p_FRMDATE VARCHAR(20)= NULL, @p_TODATE VARCHAR(20)= NULL, @p_LEVEL VARCHAR(20)= NULL, @p_USER_LOGIN VARCHAR(20)= NULL, @p_IS_SEND_APPR VARCHAR(20)= NULL, @p_TYPE_SEARCH VARCHAR(20)= NULL, @p_BRANCH_LOGIN VARCHAR(20)= NULL, @p_XMP_ENTRIES XML = NULL, @p_XMP_TRANSFER_OUTSIDE_TRANS XML = NULL, @p_XMP_TRANSFER_OUTSIDE_REC XML = NULL AS -- BEGIN VALIDATE -- END VALIDATE -- BEGIN VALIDATE FLOW IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(AUTH_STATUS, '') <> 'A' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID AND ISNULL(REQUEST_STATUS, '') = '')) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động chưa được chuyển đến phòng kế toán' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'A' AND ISNULL(PROCESS, '') = '5' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động đã được kiếm sát viên phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'P' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động đã được gửi phê duyệt trước đó' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'S' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động đã được đề xuất từ chối trước đó' ErrorDesc RETURN '-1' END -- END VALIDATE FLOW BEGIN TRANSACTION IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') NOT IN ('12', '18') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) -- NEU KHONG PHAI XAC NHAN TAM DUNG HOAC HUY PHIEU BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS_KT = 'U', CONFIRM_NOTE = @p_CONFIRM_NOTE, CREATE_DT_KT = GETDATE(), MAKER_ID_KT = @p_USER_LOGIN, CHECKER_ID_KT=NULL, APPROVE_DT_KT = NULL WHERE 1 = 1 AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID IF @@Error <> 0 GOTO ABORT 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), @BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(255),@GL_CODE VARCHAR(100),@GL_CODE_ACCNO VARCHAR(20), @BRANCH_CODE VARCHAR(15), @DEP_CODE VARCHAR(15) 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, @INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER nvarchar(250) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(250) = NULL, @PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2), @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, @TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @IS_TRANSFER_EXTERNAL VARCHAR(15) ------------------------------------------------------------------------- BEGIN LUOI HACH TOAN ----------------------------------------------------------------------- DECLARE @hdoc INT; EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_ENTRIES; DECLARE XmlDataEntries CURSOR FOR SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) 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), BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000),GL_CODE VARCHAR(100),GL_CODE_ACCNO VARCHAR(20), IS_TRANSFER_EXTERNAL VARCHAR(15)) OPEN XmlDataEntries; DELETE FROM TR_REQ_PAY_AUTO_ENTRIES WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID DECLARE @INDEX INT = 0; IF @@Error <> 0 GOTO ABORT DECLARE @DR_CR_NAME NVARCHAR(50),@ACC_NAME_FN NVARCHAR(500) FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE, @GL_CODE_ACCNO, @IS_TRANSFER_EXTERNAL WHILE @@fetch_status=0 BEGIN IF(@EXC_RATE IS NULL) BEGIN SET @EXC_RATE = 1 END SET @INDEX = @INDEX +1 SET @ACC_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME)) -- NEU TEN TAI KHOAN RONG, THI LAY TEN TU CHECK CASA IF(ISNULL(@GL_CODE, '') <> '') BEGIN SET @ACC_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '') SET @ACCT_NAME = STUFF(@GL_CODE, LEN(@GL_CODE)-8, 9, '') END -- NEU SO TAI KHOAN RONG, THI LAY SO TAI KHOAN TU CHECK CASA SET @GL_CODE = RIGHT(@GL_CODE,9) IF(ISNULL(@ACCT, '') = '' AND ISNULL(@GL_CODE_ACCNO, '') <> '') BEGIN SET @ACCT = @GL_CODE_ACCNO END IF(@DR_CR='D') BEGIN SET @DR_CR_NAME =N'Nợ' END ELSE BEGIN SET @DR_CR_NAME =N'Có' END SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID) SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID) IF(@p_IS_SEND_APPR = 'Y') BEGIN IF(@ENTRY_PAIR IS NULL OR @ENTRY_PAIR ='') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Mã bút toán không được phép để trống' ErrorDesc RETURN '-1' END IF(@DR_CR IS NULL OR @DR_CR ='') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Nợ/có không được phép để trống' ErrorDesc RETURN '-1' END IF(@ACCT IS NULL OR @ACCT ='') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Số tài khoản không được phép để trống' ErrorDesc RETURN '-1' END IF(@ACCT_NAME IS NULL OR @ACCT_NAME ='') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toá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 RETURN '-1' END /* IF(@AMT IS NULL OR @AMT < 0) BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Số tiền hạch toán phải lớn hơn 0' ErrorDesc RETURN '-1' END */ IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Đơn vị nhận không được phép để trống' ErrorDesc RETURN '-1' END IF(@TRN_DESC IS NULL OR @TRN_DESC ='') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc RETURN '-1' END IF(@ACCT IS NOT NULL AND @ACCT <> '' AND LEFT(@ACCT,1) IN ('7','8') AND (@DEP_ID IS NULL OR @DEP_ID ='') AND LEN(@ACCT) < 13) BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản hạch toán đầu số 7 & 8 vui lòng chọn mã phòng ban' ErrorDesc RETURN '-1' END IF(@GL_CODE IS NULL OR @GL_CODE ='') BEGIN IF (LEN(@ACCT) >9 AND ((SELECT ISNULL(TK_GL,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) ='' OR (SELECT ISNULL(TK_GL_NAME,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) ='')) BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản CASA chưa có thông tin GL Mapping. Vui lòng bấm vào nút Kiểm tra tài khoản để đồng bộ tài khoản từ Core' ErrorDesc RETURN '-1' END END IF(@ACCT IS NOT NULL AND @ACCT <> '' AND LEFT(@ACCT,1) IN ('7','8') AND (@DEP_ID IS NULL OR @DEP_ID ='') AND LEN(@ACCT) < 13) BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản hạch toán đầu số 7 & 8 vui lòng chọn mã phòng ban' ErrorDesc RETURN '-1' END IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE)) BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Vui lòng chọn mã phòng ban khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA' ErrorDesc RETURN '-1' END -- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID))) BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Nếu bạn đang hạch toán CASA trong hệ thống. Vui lòng chọn mã đơn vị khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA' ErrorDesc RETURN '-1' END END -- END IF VALIDATE DECLARE @p_ET_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_AUTO_ENTRIES', @p_ET_ID OUT; IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_AUTO_ENTRIES (REQ_PAY_AUTO_DT_ID,REQ_PAY_AUTO_ID,ENTRY_PAIR,DR_CR,DR_CR_NAME,ACCT,ACCT_NAME,AMT,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT, TRN_TYPE, CURRENCY, EXC_RATE, IS_TRANSFER_EXTERNAL) VALUES (@p_ET_ID,@p_REQ_PAY_AUTO_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(), @p_USER_LOGIN, 'PAYMENT', 'VND', 1, @IS_TRANSFER_EXTERNAL) -- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT)) BEGIN INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID,CREATE_DT) VALUES (@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin',GETDATE()) END ELSE BEGIN IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '' AND @GL_CODE <> '0') BEGIN 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), EDITOR_DT = GETDATE() WHERE ACC_NO=@ACCT END END IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE, @GL_CODE_ACCNO, @IS_TRANSFER_EXTERNAL END;--END WHILE CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; ------------------------------------------------------------------------------------------ END LUOI HACH TOAN -------------------------------------------------------------------- -- BEGIN INSERT đơn vị chuyển DECLARE @hdocOutsideTrans INT EXEC sp_xml_preparedocument @hdocOutsideTrans OUTPUT, @p_XMP_TRANSFER_OUTSIDE_TRANS; DECLARE @MAKER_ID_KT VARCHAR(15), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), @ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15), @BRANCH_TRANFSER_NAME NVARCHAR(255) DECLARE XmlDataOutsideTrans CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocOutsideTrans, 'Root/XmlDataTransferOutside',2) WITH(MAKER_ID VARCHAR(15), TYPE_TRANSFER_ID VARCHAR(15), PRODUCT_ID VARCHAR(15), OBJECT_TRANSFER_ID VARCHAR(15), BRANCH_ID VARCHAR(15), ACC_NO_TRANSFER VARCHAR(255), BRANCH_TRANSFER_ID VARCHAR(15), CURRENCY VARCHAR(15), BRANCH_TRANFSER_NAME NVARCHAR(255)) OPEN XmlDataOutsideTrans DELETE FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, @ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME WHILE @@fetch_status=0 BEGIN DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_AUTO_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT; IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_AUTO_TRANS_OUTSIDE_TRANS(TR_REQ_TRANS_OUTSIDE_ID ,REQ_PAY_AUTO_ID ,MAKER_ID , CREATE_DT , AUTH_STATUS, AUTH_STATUS_KT , BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID) VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_AUTO_ID ,@p_MAKER_ID_KT , GETDATE(), NULL , NULL, @BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataOutsideTrans INTO @MAKER_ID_KT , @TYPE_TRANSFER_ID, @PRODUCT_ID, @OBJECT_TRANSFER_ID, @BRANCH_ID, @ACC_NO_TRANSFER, @BRANCH_TRANSFER_ID, @CURRENCY, @BRANCH_TRANFSER_NAME END; CLOSE XmlDataOutsideTrans; DEALLOCATE XmlDataOutsideTrans; --- END INSERT đơn vị chuyển -- BEGIN INSERT đơn vị nhận DECLARE @hdocOutsideRec INT EXEC sp_xml_preparedocument @hdocOutsideRec OUTPUT, @p_XMP_TRANSFER_OUTSIDE_REC; DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(250), @OBJECT_RECEIVE_ID VARCHAR(15), @BRANCH_RECEIVE_ID VARCHAR(15), @BRANCH_RECEIVE_NAME NVARCHAR(255), @ACC_NO_RECEIVE VARCHAR(255), @TRADE_AMT DECIMAL(18, 0), @TRADE_DESC NVARCHAR(120), @SUB_BANK_RECEIVE_NAME nvarchar(MAX), @REF_NO VARCHAR(50) -- INSERT đơn vị nhận DECLARE XmlDataOutsideRec CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocOutsideRec, 'Root/XmlDataTransferOutside',2) WITH(MAKER_ID VARCHAR(15), CHANEL_PAYMENT_ID VARCHAR(15), CITAD1_ID VARCHAR(15), BANK_RECEIVE_ID VARCHAR(250), OBJECT_RECEIVE_ID VARCHAR(15), BRANCH_RECEIVE_ID VARCHAR(15), BRANCH_RECEIVE_NAME NVARCHAR(255), ACC_NO_RECEIVE VARCHAR(255), TRADE_AMT DECIMAL(18, 0), TRADE_DESC NVARCHAR(120), SUB_BANK_RECEIVE_NAME nvarchar(MAX), ENTRY_PAIR varchar(20), REF_NO varchar(20)) OPEN XmlDataOutsideRec DECLARE @INDEX_REC INT DELETE FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_REC WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO WHILE @@fetch_status=0 BEGIN IF(@p_IS_SEND_APPR = 'Y') BEGIN SET @INDEX_REC = @INDEX_REC+1 IF(ISNULL(@ACC_NO_RECEIVE, '') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataOutsideRec; DEALLOCATE XmlDataOutsideRec; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Số tài khoản không được để trống' ErrorDesc RETURN '-1' END IF(ISNULL(@BRANCH_RECEIVE_NAME, '') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataOutsideRec; DEALLOCATE XmlDataOutsideRec; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Tên đơn vị nhận không được để trống' ErrorDesc RETURN '-1' END IF(ISNULL(@OBJECT_RECEIVE_ID, '') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataOutsideRec; DEALLOCATE XmlDataOutsideRec; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Đối tượng nhận không được để trống' ErrorDesc RETURN '-1' END IF(ISNULL(@BANK_RECEIVE_ID, '') = '' OR ISNULL(@BRANCH_RECEIVE_NAME, '') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataOutsideRec; DEALLOCATE XmlDataOutsideRec; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Tên ngân hàng hưởng trực tiếp không được để trống' ErrorDesc RETURN '-1' END IF(ISNULL(@CITAD1_ID, '') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataOutsideRec; DEALLOCATE XmlDataOutsideRec; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Mã CITAD không được để trống' ErrorDesc RETURN '-1' END IF(ISNULL(@CHANEL_PAYMENT_ID, '') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlDataOutsideRec; DEALLOCATE XmlDataOutsideRec; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới đơn vị nhận, dòng: '+ CONVERT(VARCHAR(5),@INDEX_REC) + N' Kênh thanh toán không được để trống' ErrorDesc RETURN '-1' END END DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_AUTO_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT; IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_AUTO_TRANS_OUTSIDE_REC(REQ_TRANS_OUTSIDE_REC_ID, REQ_PAY_AUTO_ID, MAKER_ID, CREATE_DT, AUTH_STATUS, AUTH_STATUS_KT, CHANEL_PAYMENT_ID, CITAD1_ID, BANK_RECEIVE_ID, OBJECT_RECEIVE_ID, BRANCH_RECEIVE_ID, BRANCH_RECEIVE_NAME, ACC_NO_RECEIVE, TRADE_AMT, TRADE_DESC, SUB_BANK_RECEIVE_NAME, ENTRY_PAIR, REF_NO) VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @p_REQ_PAY_AUTO_ID, @p_USER_LOGIN, GETDATE(), NULL, NULL, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataOutsideRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO END; CLOSE XmlDataOutsideRec; DEALLOCATE XmlDataOutsideRec; --- END INSERT đơn vị nhận END -- END XAC NHAN TAM DUNG HOAC HUY PHIEU COMMIT TRANSACTION IF(@p_IS_SEND_APPR ='SEND') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') NOT IN ('12', '18') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) -- NEU KHONG PHAI XAC NHAN TAM DUNG HOAC HUY PHIEU BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS_KT = 'P', CREATE_DT_KT = GETDATE(), MAKER_ID_KT = @p_USER_LOGIN, CONFIRM_NOTE = @p_CONFIRM_NOTE, PROCESS = '4' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID -- UPDATE FLOW KE TOAN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TLNAME= @p_USER_LOGIN AND TYPE_JOB = 'XL' UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TYPE_JOB = 'KS' -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_AUTO_ID,'SEND_GDV',@p_USER_LOGIN,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') SELECT '1' as Result, '' REQ_PAY_ID, N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_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 RETURN '1' END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') IN ('12') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET PROCESS = '13' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID -- UPDATE FLOW KE TOAN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TLNAME= @p_USER_LOGIN AND TYPE_JOB = 'XL' UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TYPE_JOB = 'KS' -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_AUTO_ID,'GDV_UNSUS',@p_USER_LOGIN,GETDATE(), N'Giao dịch viên gửi phê duyệt',N'Giao dịch viên xác nhận yêu cầu khôi phục phiếu') SELECT '1' as Result, '' REQ_PAY_ID, N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_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 RETURN '1' END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') IN ('18') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET PROCESS = '19' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID -- UPDATE FLOW KE TOAN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TLNAME= @p_USER_LOGIN AND TYPE_JOB = 'XL' UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_AUTO_ID AND TYPE_JOB = 'KS' -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_AUTO_ID,'GDV_DEL',@p_USER_LOGIN,GETDATE(), N'Giao dịch viên gửi phê duyệt',N'Giao dịch viên xác nhận yêu cầu hủy phiếu') SELECT '1' as Result, '' REQ_PAY_ID, N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_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 RETURN '1' END ELSE BEGIN PRINT '1' END END SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID, @p_REQ_PAY_AUTO_CODE AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lỗi không xác định' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_KT_Appr]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_KT_Appr] @p_REQ_PAY_AUTO_ID varchar(15)= NULL, @p_CHECKER_ID_KT varchar(15) = NULL AS -- BEGIN VALIDATE -- END VALIDATE -- BEGIN VALIDATE FLOW IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'A' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID AND ISNULL(PROCESS, '') = '5')) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động đã được kiểm sát viên phê duyệt trước đó' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') <> '4' AND ISNULL(REQUEST_STATUS, '') = '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động chưa gửi cho kiểm sát viên phê duyệt' ErrorDesc RETURN '-1' END -- END VALIDATE FLOW BEGIN TRANSACTION IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') NOT IN ('13', '13.1') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN IF((SELECT TOP 1 REQ_PAY_AUTO_STATUS FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID) = 'SUSPEND') BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS_KT='A', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT = GETDATE(), PROCESS = '5', REQ_PAY_AUTO_STATUS = N'SUSPEND', REQ_PAY_AUTO_EFFECTIVE_DT = GETDATE() WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID END ELSE IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID AND ISNULL(PROCESS, '') IN ('19', '19.1'))) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS='D', AUTH_STATUS_KT='D', REQ_PAY_AUTO_STATUS = N'DEL', RECORD_STATUS = '0', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT = GETDATE(), REQ_PAY_AUTO_EFFECTIVE_DT = GETDATE(), PROCESS = '20' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID END ELSE BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS_KT='A', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT = GETDATE(), PROCESS = '5', REQ_PAY_AUTO_STATUS = N'EFFECTIVE', REQ_PAY_AUTO_EFFECTIVE_DT = GETDATE() WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID END -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_AUTO_ID,'APPR_KT',@p_CHECKER_ID_KT,GETDATE(), N'Kiểm sát viên phê duyệt phiếu',N'Kế toán duyệt phiếu') -- UPDATE FLOW KT KET THUC UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID = @p_REQ_PAY_AUTO_ID AND TYPE_JOB ='KS' IF @@Error <> 0 GOTO ABORT END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') IN ('13', '13.1', '19', '19.1') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS = 'A', AUTH_STATUS_KT='A', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT = GETDATE(), PROCESS = '14', REQ_PAY_AUTO_STATUS = N'EFFECTIVE', REQ_PAY_AUTO_EFFECTIVE_DT = GETDATE(), REQUEST_STATUS = NULL WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_AUTO_ID,'APP_UNSUS',@p_CHECKER_ID_KT,GETDATE(), N'Kiểm sát viên phê duyệt phiếu',N'Kiểm sát viên phê duyệt yêu cầu khôi phục phiếu') -- UPDATE FLOW KT KET THUC UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID = @p_REQ_PAY_AUTO_ID AND TYPE_JOB ='KS' IF @@Error <> 0 GOTO ABORT END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') IN ('19', '19.1') AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS='D', AUTH_STATUS_KT='D', REQ_PAY_AUTO_STATUS = N'DEL', RECORD_STATUS = '0', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT = GETDATE(), REQ_PAY_AUTO_EFFECTIVE_DT = GETDATE(), PROCESS = '20' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_AUTO_ID,'APP_DEL',@p_CHECKER_ID_KT,GETDATE(), N'Kiểm sát viên phê duyệt phiếu',N'Kiểm sát viên phê duyệt yêu cầu hủy phiếu') -- UPDATE FLOW KT KET THUC UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID = @p_REQ_PAY_AUTO_ID AND TYPE_JOB ='KS' IF @@Error <> 0 GOTO ABORT END ELSE BEGIN PRINT '1' END COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID ,N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)+N' đã được phê duyệt thành công!' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[PAY_AUTO_SCAN]' GO CREATE PROCEDURE [dbo].[PAY_AUTO_SCAN] @p_APP_DT VARCHAR(20) AS BEGIN TRANSACTION DECLARE @REQ_PAY_AUTO_ID VARCHAR(20), @REQ_PAY_AUTO_CODE VARCHAR(50), @REQ_PAY_AUTO_TYPE VARCHAR(15), @REQ_PAY_AUTO_SERVICE_TYPE VARCHAR(15), @REQ_PAY_AUTO_STATUS VARCHAR(15), @REQ_PAY_AUTO_EFFECTIVE_DT VARCHAR(20), @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20), @BRANCH_CREATE VARCHAR(20), @TRANSFER_USER_RECEIVE VARCHAR(15), @CONFIRM_NOTE NVARCHAR(MAX), @CONTRACT_ID VARCHAR(20), @TRANSFER_MAKER VARCHAR(20), @TRANSFER_DT VARCHAR(20), @PROCESS VARCHAR(15), @AUTH_STATUS_KT VARCHAR(1), @RECORD_STATUS VARCHAR(1), @MAKER_ID VARCHAR(20), @CHECKER_ID VARCHAR(20), @MAKER_ID_KT VARCHAR(20), @CHECKER_ID_KT VARCHAR(20), @BRANCH_NAME NVARCHAR(250), @REQ_PAY_AUTO_SERVICE_TYPE_NAME NVARCHAR(250), @CONTRACT_CODE VARCHAR(20) DECLARE cursorPaymentAuto CURSOR LOCAL FOR -- LAY CAC PHIEU YEU CAU THANH TOAN TU DONG CON HIEU LUC SELECT A.REQ_PAY_AUTO_ID, A.REQ_PAY_AUTO_CODE, A.REQ_PAY_AUTO_TYPE, A.REQ_PAY_AUTO_SERVICE_TYPE, A.REQ_PAY_AUTO_STATUS, A.REQ_PAY_AUTO_EFFECTIVE_DT, A.BRANCH_ID, A.DEP_ID, A.BRANCH_CREATE, A.TRANSFER_USER_RECEIVE, A.CONFIRM_NOTE, A.CONTRACT_ID, A.TRANSFER_MAKER, A.TRANSFER_DT, A.PROCESS, A.AUTH_STATUS_KT, A.RECORD_STATUS, A.MAKER_ID, A.CHECKER_ID, A.MAKER_ID_KT, A.CHECKER_ID_KT, B.BRANCH_NAME, C.CONTENT AS REQ_PAY_AUTO_SERVICE_TYPE_NAME, D.CONTRACT_CODE FROM TR_REQ_PAYMENT_AUTO A LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID LEFT JOIN CM_ALLCODE C ON A.REQ_PAY_AUTO_SERVICE_TYPE = C.CDVAL AND CDNAME = 'PAY_SER_AUTO_TS' AND CDTYPE = 'REQ_AUTO' LEFT JOIN TR_CONTRACT D ON A.CONTRACT_ID = D.CONTRACT_ID WHERE 1=1 AND A.REQ_PAY_AUTO_TYPE = 'A' AND A.AUTH_STATUS_KT = 'A' AND REQ_PAY_AUTO_STATUS = 'EFFECTIVE' AND A.RECORD_STATUS = '1' AND A.CONTRACT_ID IS NOT NULL AND ( A.IS_MAKER_CONFIRM_CHECKBOX IS NULL OR A.IS_MAKER_CONFIRM_CHECKBOX = '0' -- THANH TOAN TU DONG KHONG CAN XAC NHAN TRUOC OR (A.IS_MAKER_CONFIRM_CHECKBOX = '1' AND A.IS_MAKER_CONFIRM = '1') -- THANH TOAN TU DONG CAN XAC NHAN VA DA DUOC XAC NHAN ) Open cursorPaymentAuto -- QUET TUNG PHIEU YEU CAU THANH TOAN TU DONG CON HIEU LUC FETCH NEXT FROM cursorPaymentAuto INTO @REQ_PAY_AUTO_ID, @REQ_PAY_AUTO_CODE, @REQ_PAY_AUTO_TYPE, @REQ_PAY_AUTO_SERVICE_TYPE, @REQ_PAY_AUTO_STATUS, @REQ_PAY_AUTO_EFFECTIVE_DT, @BRANCH_ID, @DEP_ID, @BRANCH_CREATE, @TRANSFER_USER_RECEIVE, @CONFIRM_NOTE, @CONTRACT_ID, @TRANSFER_MAKER, @TRANSFER_DT, @PROCESS, @AUTH_STATUS_KT, @RECORD_STATUS, @MAKER_ID, @CHECKER_ID, @MAKER_ID_KT, @CHECKER_ID_KT, @BRANCH_NAME, @REQ_PAY_AUTO_SERVICE_TYPE_NAME, @CONTRACT_CODE WHILE @@FETCH_STATUS = 0 BEGIN IF(@REQ_PAY_AUTO_STATUS <> 'EFFECTIVE') BEGIN PRINT N'Phiếu yêu cầu thanh toán tự động chưa có hiệu lực' END ELSE BEGIN PRINT '0' -- LAY CAC DONG THANH TOAN CHUA THANH TOAN DECLARE @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID VARCHAR(20), @EXPECTED_DT VARCHAR(50), @PAY_AUTO_AMT DECIMAL(18,2), @PAY_AUTO_DESC NVARCHAR(1000), @PAY_AUTO_STATUS VARCHAR(15), @START_DT VARCHAR(20), @END_DT VARCHAR(20), @TYPE_PERIOD VARCHAR(20) DECLARE cursorScheduleDetail CURSOR LOCAL FOR SELECT REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, EXPECTED_DT, PAY_AUTO_AMT, PAY_AUTO_DESC, PAY_AUTO_STATUS, START_DT, END_DT, TYPE_PERIOD FROM TR_REQ_PAY_AUTO_SCHEDULE_DETAIL WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID AND PAY_AUTO_STATUS = 'N' AND EXPECTED_DT < CONVERT(DATE, @p_APP_DT, 103) Open cursorScheduleDetail -- TAO CAC PHIEU THANH TOAN TU DONG FETCH NEXT FROM cursorScheduleDetail INTO @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @EXPECTED_DT, @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, @START_DT, @END_DT, @TYPE_PERIOD WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @REQ_PAY_ID VARCHAR(20), @REQ_PAY_CODE VARCHAR(20) DECLARE @MONTH VARCHAR(20) = CONVERT(VARCHAR(20), MONTH(CONVERT(DATE, @EXPECTED_DT, 103))) DECLARE @YEAR VARCHAR(20) = CONVERT(VARCHAR(20), YEAR(CONVERT(DATE, @EXPECTED_DT, 103))) DECLARE @START_DATE VARCHAR(50) = CONVERT(VARCHAR(20), DAY(CONVERT(DATE, @START_DT, 103))) + '/' + CONVERT(VARCHAR(20), MONTH(CONVERT(DATE, @START_DT, 103))) + '/' + CONVERT(VARCHAR(20), YEAR(CONVERT(DATE, @START_DT, 103))) DECLARE @END_DATE VARCHAR(50) = CONVERT(VARCHAR(20), DAY(CONVERT(DATE, @END_DT, 103))) + '/' + CONVERT(VARCHAR(20), MONTH(CONVERT(DATE, @END_DT, 103))) + '/' + CONVERT(VARCHAR(20), YEAR(CONVERT(DATE, @END_DT, 103))) DECLARE @TYPE_PERIOD_NAME NVARCHAR(50) = (SELECT TOP 1 CONTENT FROM CM_ALLCODE WHERE CDVAL = @TYPE_PERIOD AND CDNAME = 'TYPE_PERIOD' AND CDTYPE = 'REQ_AUTO_RECUR') DECLARE @END_PERIOD_DT DATE = CONVERT(DATE, @EXPECTED_DT, 103) SET @END_PERIOD_DT = DATEADD(MONTH, CONVERT(INT, @TYPE_PERIOD), @END_PERIOD_DT) DECLARE @MONTH_PERIOD_END VARCHAR(20) = CONVERT(VARCHAR(20), MONTH(@END_PERIOD_DT)) DECLARE @YEAR_PERIOD_END VARCHAR(20) = CONVERT(VARCHAR(20), YEAR(@END_PERIOD_DT)) DECLARE @BRANCH_MANAGE_NAME NVARCHAR(250) = ( SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID = ( SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @CONTRACT_ID) ) PRINT '@START_DATE: ' + @START_DATE PRINT '@END_DATE: ' + @END_DATE PRINT '@BRANCH_NAME: ' + @BRANCH_NAME PRINT '@BRANCH_MANAGE_NAME: ' + @BRANCH_MANAGE_NAME PRINT '@REQ_PAY_AUTO_SERVICE_TYPE_NAME: ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME PRINT '@CONTRACT_CODE: ' + @CONTRACT_CODE -- TAO PHIEU THANH TOAN PHAN MASTER -- BEGIN KHOI TAO GIA TRI EXEC [dbo].[PAY_CODE_GenKey] 'TR_REQ_PAYMENT', '','', @REQ_PAY_CODE out IF EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE = @REQ_PAY_CODE ) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Số phiếu đề nghị thanh toán đã tồn tại trong hệ thống' ErrorDesc RETURN '-1' END EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT', @REQ_PAY_ID out IF @REQ_PAY_ID='' OR @REQ_PAY_ID IS NULL GOTO ABORT -- NOI DUNG THANH TOAN, DUNG CHO NHIEU TABLE DECLARE @PAY_AUTO_DESC_DETAIL NVARCHAR(1000) = '' DECLARE @PAY_AUTO_TRN_DESC_DETAIL VARCHAR(1000) = '' IF(ISNULL(@CONTRACT_CODE, '') = '') BEGIN PRINT '1: ' + @PAY_AUTO_DESC_DETAIL SET @PAY_AUTO_DESC_DETAIL = @BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' từ ' + @MONTH + '/' + @YEAR + N' đến ' + @MONTH_PERIOD_END + '/' + @YEAR_PERIOD_END + N' theo GDNTT số ' + @REQ_PAY_CODE SET @PAY_AUTO_TRN_DESC_DETAIL = UPPER(dbo.fChuyenCoDauThanhKhongDau(@BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' từ ' + @MONTH + '/' + @YEAR + N' đến ' + @MONTH_PERIOD_END + '/' + @YEAR_PERIOD_END + N' theo GDNTT số ' + @REQ_PAY_CODE)) END ELSE BEGIN PRINT '2: ' + @PAY_AUTO_DESC_DETAIL SET @PAY_AUTO_DESC_DETAIL = @BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' từ ' + @MONTH + '/' + @YEAR + N' đến ' + @MONTH_PERIOD_END + '/' + @YEAR_PERIOD_END + N' theo hợp đồng số ' + @CONTRACT_CODE + N' theo GDNTT số ' + @REQ_PAY_CODE SET @PAY_AUTO_TRN_DESC_DETAIL = UPPER(dbo.fChuyenCoDauThanhKhongDau(@BRANCH_MANAGE_NAME + N' thanh toán chi phí ' + @REQ_PAY_AUTO_SERVICE_TYPE_NAME + N' từ ' + @MONTH + '/' + @YEAR + N' đến ' + @MONTH_PERIOD_END + '/' + @YEAR_PERIOD_END + N' theo hợp đồng số ' + @CONTRACT_CODE + N' theo GDNTT số ' + @REQ_PAY_CODE)) END -- END KHOI TAO GIA TRI PRINT '3' INSERT INTO [dbo].[TR_REQ_PAYMENT] (REQ_PAY_ID, REQ_PAY_CODE, BRANCH_ID, DEP_ID, REQ_REASON, REQ_TYPE, REQ_ENTRIES, REQ_DESCRIPTION, REF_ID, PAY_PHASE, RECEIVER_PO, --NULL REQ_PAY_TYPE, REQ_DT, REQ_TYPE_CURRENCY, REQ_AMT, REQ_TEMP_AMT, MAKER_ID, CREATE_DT, EDITOR_ID, AUTH_STATUS, CHECKER_ID, APPROVE_DT, --HC CREATE_DT_KT, MAKER_ID_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, CONFIRM_NOTE, --KT BRANCH_CREATE, NOTES, RECORD_STATUS, TRANSFER_MAKER, TRANSFER_DT, TRASFER_USER_RECIVE, PROCESS, RATE, IS_PERIOD, AMT_PAY, IS_CREATE_AUTO) VALUES (@REQ_PAY_ID, @REQ_PAY_CODE, @BRANCH_ID, @DEP_ID, @PAY_AUTO_DESC_DETAIL, 'P', NULL, NULL, NULL, NULL, NULL, --NULL '1', CONVERT(DATE, @EXPECTED_DT, 103), 'VND', @PAY_AUTO_AMT, NULL, @MAKER_ID, GETDATE(), NULL, 'A', @CHECKER_ID, GETDATE(), --HC GETDATE(), @MAKER_ID_KT, 'A', @CHECKER_ID_KT, GETDATE(), NULL, --KT @BRANCH_CREATE, NULL, '1', @CHECKER_ID_KT, GETDATE(), @TRANSFER_USER_RECEIVE, '0', 1, 'Y', NULL, 'Y') PRINT '4' -- TẠO LƯỚI PHIEU DE NGHI THANH TOAN CHO PYC INSERT INTO [dbo].[TR_REQ_PAY_AUTO_PAYMENTS] (REQ_PAY_AUTO_ID, REQ_PAY_ID, REQ_PAY_CODE, BRANCH_ID, DEP_ID, REQ_REASON, REQ_TYPE, REQ_ENTRIES, REQ_DESCRIPTION, REF_ID, PAY_PHASE, RECEIVER_PO, --NULL REQ_PAY_TYPE, REQ_DT, REQ_TYPE_CURRENCY, REQ_AMT, REQ_TEMP_AMT, MAKER_ID, CREATE_DT, EDITOR_ID, AUTH_STATUS, CHECKER_ID, APPROVE_DT, --HC CREATE_DT_KT, MAKER_ID_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, CONFIRM_NOTE, --KT BRANCH_CREATE, NOTES, RECORD_STATUS, TRANSFER_MAKER, TRANSFER_DT, TRASFER_USER_RECIVE, PROCESS, RATE, IS_PERIOD, AMT_PAY) VALUES (@REQ_PAY_AUTO_ID ,@REQ_PAY_ID, @REQ_PAY_CODE, @BRANCH_ID, @DEP_ID, @PAY_AUTO_DESC, 'P', NULL, NULL, NULL, NULL, NULL, --NULL '1', CONVERT(DATE, @EXPECTED_DT, 103), 'VND', @PAY_AUTO_AMT, NULL, @MAKER_ID, GETDATE(), NULL, 'A', @CHECKER_ID, GETDATE(), --HC GETDATE(), @MAKER_ID_KT, 'A', @CHECKER_ID_KT, GETDATE(), @CONFIRM_NOTE, --KT @BRANCH_CREATE, NULL, '1', @CHECKER_ID_KT, GETDATE(), @TRANSFER_USER_RECEIVE, '0', 1, 'Y', NULL) -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@REQ_PAY_ID,'AUTO_APPR','admin',GETDATE(), N'Hệ thống tạo phiếu thanh toán tự động',N'Hệ thống tạo phiếu thanh toán tự động') -- TẠO LƯỚI THÔNG TIN THANH TOÁN HỢP ĐỒNG ĐỊNH KỲ DECLARE @REQ_PAYDTID_PERIOD VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_PERIOD OUT; IF @REQ_PAYDTID_PERIOD='' OR @REQ_PAYDTID_PERIOD IS NULL GOTO ABORT; INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID, REQ_PAY_ID,REF_ID, [TYPE], MAKER_ID, CREATE_DT, IS_CLOSED, REF_TYPE, DELIVERY_DT) VALUES(@REQ_PAYDTID_PERIOD, @REQ_PAY_ID, @CONTRACT_ID, 'PAY', @MAKER_ID, GETDATE(), 'N', 'C', CONVERT(DATE,NULL,103)) PRINT '5' -- TẠO LƯỚI THÔNG TIN THANH TOÁN HỢP ĐỒNG ĐỊNH KỲ DECLARE @PERIOD_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT; IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID, REQ_PAY_ID, PAY_TYPE, CONTRACT_ID, PAY_DT_REAL ,OLD_INDEX, NEW_INDEX, AMT_PAY, AUTH_STATUS_KT, CURRENCY, RATE, FROM_DATE, TO_DATE,AD_PAY_ID, PROCESS, PARENT_ID, PAY_PHASE, REASON, TYPE_COST,FR_LEVEL , TO_LEVEL) VALUES (@PERIOD_ID, @REQ_PAY_ID,'PAY', @CONTRACT_ID, NULL, NULL , NULL , @PAY_AUTO_AMT, 'A', 'VND', '1', NULL, NULL, NULL, '1', NULL, N'Từ ' + @MONTH + '/' + @YEAR + N' đến ' + @MONTH_PERIOD_END + '/' + @YEAR_PERIOD_END, @PAY_AUTO_DESC_DETAIL, NULL, NULL, NULL ) PRINT '6' -- TẠO LƯỚI THÔNG TIN HẠNG MỤC NGÂN SÁCH VÀ CHI PHÍ/ /* DECLARE @p_BUDGET_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT; IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID, GD_ID, REQ_PAY_ID, TRADE_ID, AMT_APP, AMT_DO, AMT_EXE, AMT_REMAIN, MAKER_ID, CREATE_DT, CURRENCY, RATE, REASON, TYPE_COST, FR_LEVEL, TO_LEVEL, MONTH_RATE, YEAR_RATE, BUDGET_TYPE, BRANCH_ID, DEP_ID, TLNAME, ROLENAME, BRANCH_TAKE_COST_ID, DEP_TAKE_COST_ID, KHOI_TAKE_COST_ID, BRANCH_KIND) VALUES (@p_BUDGET_ID, @GD_ID, @p_REQ_PAY_AUTO_ID, @TRADE_ID, @AMT_APP, @AMT_DO, @AMT_EXE, @AMT_REMAIN_GD, @p_MAKER_ID, GETDATE(), @p_REQ_TYPE_CURRENCY, @p_RATE, @REASON, @TYPE_COST , @FR_LEVEL, @TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID, @DEP_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @BRANCH_KIND) */ -- TẠO LƯỚI THÔNG TIN PHƯƠNG THỨC THANH TOÁN DECLARE @RECEIVE_ID VARCHAR(20), @RECEIVE_NAME VARCHAR(20), @REQ_PAY_REASON NVARCHAR(1000),@TOTAL_AMT DECIMAL(18, 2),@REQ_PAY_TYPE VARCHAR(20), @REQ_PAY_DESC NVARCHAR(1000),@REQ_PAY_ENTRIES VARCHAR(20), @ACC_NO VARCHAR(20), @ACC_NAME NVARCHAR(250), @ISSUED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CURRENCY VARCHAR(20),@RATE DECIMAL(18,2),@CHECK_IN VARCHAR(20), @TYPE_TRANSFER VARCHAR(20), @BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME NVARCHAR(250), @SUB_ISSUED_BY NVARCHAR(250), @RECEIVER_DEBIT VARCHAR(20), @EMP_ID VARCHAR(20), @TEMP VARCHAR(20), @CREATE_DT VARCHAR(20) DECLARE cursorMethod CURSOR LOCAL FOR SELECT EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT FROM TR_REQ_PAY_AUTO_METHOD WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID Open cursorMethod FETCH NEXT FROM cursorMethod INTO @EMP_ID, @REQ_PAY_REASON, @TOTAL_AMT, @REQ_PAY_TYPE, @REQ_PAY_DESC, @REQ_PAY_ENTRIES, @TEMP, @MAKER_ID, @CREATE_DT, @ACC_NO, @ACC_NAME, @ISSUED_BY, @ISSUED_DT, @CURRENCY, @RATE, @CHECK_IN, @TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT; IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_METHOD(METHOD_ID, REQ_PAY_ID, EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT) VALUES (@p_REQ_PAY_METHOD_ID, @REQ_PAY_ID, @RECEIVE_ID, @PAY_AUTO_DESC_DETAIL, @PAY_AUTO_AMT, @REQ_PAY_TYPE, @REQ_PAY_DESC, @REQ_PAY_ENTRIES, '', @MAKER_ID, GETDATE(), @ACC_NO, @ACC_NAME, @ISSUED_BY, CONVERT(DATE,@ISSUED_DT,103), @CURRENCY , @RATE, @CHECK_IN, @TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT ) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM cursorMethod INTO @EMP_ID, @REQ_PAY_REASON, @TOTAL_AMT, @REQ_PAY_TYPE, @REQ_PAY_DESC, @REQ_PAY_ENTRIES, @TEMP, @MAKER_ID, @CREATE_DT, @ACC_NO, @ACC_NAME, @ISSUED_BY, @ISSUED_DT, @CURRENCY, @RATE, @CHECK_IN, @TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT END CLOSE cursorMethod DEALLOCATE cursorMethod PRINT '7' -- TẠO LƯỚI THÔNG TIN HẠCH TOÁN DECLARE @FUNCTION_TYPE VARCHAR(15), @TRN_TYPE NVARCHAR(40), @REF_ID VARCHAR(15), @ENTRY_PAIR varchar(50), @DR_CR varchar(2), @DR_CR_NAME nvarchar(50), @ACCT varchar(100), @ACCT_NAME varchar(500), @AMT DECIMAL(18,2), @EXC_RATE DECIMAL(18,2), @TRN_DATE VARCHAR(20), @TRN_DESC nvarchar(1000), @AUTH_STATUS varchar(2), @APPROVE_DT varchar(20), @CREATE_DT_KT varchar(20), @APPROVE_DT_KT varchar(20), @IS_TRANSFER_EXTERNAL varchar(20), @DEP_ID_ENTRY varchar(20) DECLARE cursorEntries CURSOR LOCAL FOR SELECT REQ_PAY_AUTO_ID, FUNCTION_TYPE, TRN_TYPE, REF_ID, ENTRY_PAIR, DR_CR, DR_CR_NAME, ACCT, ACCT_NAME, BRANCH_ID, DEP_ID, AMT, CURRENCY, EXC_RATE, TRN_DATE, TRN_DESC, MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, MAKER_ID_KT, CREATE_DT_KT, AUTH_STATUS_KT, CHECKER_ID_KT, APPROVE_DT_KT, RECORD_STATUS, IS_TRANSFER_EXTERNAL FROM TR_REQ_PAY_AUTO_ENTRIES WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID Open cursorEntries PRINT '8' FETCH NEXT FROM cursorEntries INTO @REQ_PAY_AUTO_ID, @FUNCTION_TYPE, @TRN_TYPE, @REF_ID, @ENTRY_PAIR, @DR_CR, @DR_CR_NAME, @ACCT, @ACCT_NAME, @BRANCH_ID, @DEP_ID_ENTRY, @AMT, @CURRENCY, @EXC_RATE, @TRN_DATE, @TRN_DESC, @MAKER_ID, @CREATE_DT, @AUTH_STATUS, @CHECKER_ID, @APPROVE_DT, @MAKER_ID_KT, @CREATE_DT_KT, @AUTH_STATUS_KT, @CHECKER_ID_KT, @APPROVE_DT_KT, @RECORD_STATUS, @IS_TRANSFER_EXTERNAL WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_TR_REQ_PAY_ENTRIES_D VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @l_TR_REQ_PAY_ENTRIES_D OUT; IF @l_TR_REQ_PAY_ENTRIES_D='' OR @l_TR_REQ_PAY_ENTRIES_D IS NULL GOTO ABORT; INSERT INTO [TR_REQ_PAY_ENTRIES] ([REQ_PAY_DT_ID],[REQ_PAY_ID],[FUNCTION_TYPE],[TRN_TYPE],[REF_ID],[ENTRY_PAIR],[DR_CR],[DR_CR_NAME],[ACCT],[ACCT_NAME],[BRANCH_ID],[DEP_ID], [AMT],[CURRENCY],[EXC_RATE], [TRN_DATE],[TRN_DESC],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[MAKER_ID_KT],[CREATE_DT_KT],[AUTH_STATUS_KT],[CHECKER_ID_KT],[APPROVE_DT_KT],[RECORD_STATUS],[IS_TRANSFER_EXTERNAL]) VALUES (@l_TR_REQ_PAY_ENTRIES_D, @REQ_PAY_ID, @FUNCTION_TYPE, @TRN_TYPE, @REF_ID, @ENTRY_PAIR, @DR_CR, @DR_CR_NAME, @ACCT, @ACCT_NAME, @BRANCH_ID, @DEP_ID_ENTRY, @PAY_AUTO_AMT, @CURRENCY, @EXC_RATE, @TRN_DATE, @PAY_AUTO_TRN_DESC_DETAIL, @MAKER_ID, @CREATE_DT, @AUTH_STATUS, @CHECKER_ID, @APPROVE_DT, @MAKER_ID_KT, @CREATE_DT_KT, @AUTH_STATUS_KT, @CHECKER_ID_KT, @APPROVE_DT_KT, @RECORD_STATUS, @IS_TRANSFER_EXTERNAL) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM cursorEntries INTO @REQ_PAY_AUTO_ID, @FUNCTION_TYPE, @TRN_TYPE, @REF_ID, @ENTRY_PAIR, @DR_CR, @DR_CR_NAME, @ACCT, @ACCT_NAME, @BRANCH_ID, @DEP_ID_ENTRY, @AMT, @CURRENCY, @EXC_RATE, @TRN_DATE, @TRN_DESC, @MAKER_ID, @CREATE_DT, @AUTH_STATUS, @CHECKER_ID, @APPROVE_DT, @MAKER_ID_KT, @CREATE_DT_KT, @AUTH_STATUS_KT, @CHECKER_ID_KT, @APPROVE_DT_KT, @RECORD_STATUS, @IS_TRANSFER_EXTERNAL END CLOSE cursorEntries DEALLOCATE cursorEntries PRINT '9' --- BAN BUT TOAN VAO CORE DECLARE @RES VARCHAR(10) EXEC [dbo].[PAY_ENTRIES_POST_SetApp] @REQ_PAY_ID,@MAKER_ID_KT,@CHECKER_ID_KT, @RES OUT -- TẠO LƯỚI CHUYỂN TIỀN NGOÀI HỆ THỐNG -- LUOI DON VI CHUYEN DECLARE @BRANCH_TRANFSER_NAME NVARCHAR(255), @TYPE_TRANSFER_ID VARCHAR(15), @PRODUCT_ID VARCHAR(15), @OBJECT_TRANSFER_ID VARCHAR(15), @ACC_NO_TRANSFER VARCHAR(255), @BRANCH_TRANSFER_ID VARCHAR(15) DECLARE cursorTrans CURSOR LOCAL FOR SELECT MAKER_ID, BRANCH_TRANFSER_NAME, TYPE_TRANSFER_ID, PRODUCT_ID, OBJECT_TRANSFER_ID, BRANCH_ID, ACC_NO_TRANSFER, BRANCH_TRANSFER_ID FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID Open cursorTrans PRINT '10' FETCH NEXT FROM cursorTrans INTO @MAKER_ID_KT, @BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @p_TR_REQ_TRANS_OUTSIDE_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_TRANS', @p_TR_REQ_TRANS_OUTSIDE_ID OUT; IF @p_TR_REQ_TRANS_OUTSIDE_ID='' OR @p_TR_REQ_TRANS_OUTSIDE_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_TRANS_OUTSIDE_TRANS(TR_REQ_TRANS_OUTSIDE_ID ,REQ_PAY_ID ,MAKER_ID , CREATE_DT , AUTH_STATUS, AUTH_STATUS_KT , BRANCH_TRANFSER_NAME,TYPE_TRANSFER_ID , PRODUCT_ID , OBJECT_TRANSFER_ID , BRANCH_ID, ACC_NO_TRANSFER , BRANCH_TRANSFER_ID) VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@REQ_PAY_ID ,@MAKER_ID_KT , GETDATE(), NULL , NULL, @BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM cursorTrans INTO @MAKER_ID_KT, @BRANCH_TRANFSER_NAME, @TYPE_TRANSFER_ID , @PRODUCT_ID , @OBJECT_TRANSFER_ID , @BRANCH_ID, @ACC_NO_TRANSFER , @BRANCH_TRANSFER_ID END CLOSE cursorTrans DEALLOCATE cursorTrans PRINT '11' -- LUOI DON VI NHAN DECLARE @CHANEL_PAYMENT_ID VARCHAR(15), @CITAD1_ID VARCHAR(15), @BANK_RECEIVE_ID VARCHAR(250), @OBJECT_RECEIVE_ID VARCHAR(15), @BRANCH_RECEIVE_ID VARCHAR(15), @BRANCH_RECEIVE_NAME NVARCHAR(255), @ACC_NO_RECEIVE VARCHAR(255), @TRADE_AMT DECIMAL(18, 0), @TRADE_DESC NVARCHAR(120), @SUB_BANK_RECEIVE_NAME nvarchar(MAX), @REF_NO VARCHAR(50) DECLARE cursorRec CURSOR LOCAL FOR SELECT MAKER_ID, CHANEL_PAYMENT_ID, CITAD1_ID, BANK_RECEIVE_ID, OBJECT_RECEIVE_ID, BRANCH_RECEIVE_ID, BRANCH_RECEIVE_NAME, ACC_NO_RECEIVE, TRADE_AMT, TRADE_DESC, SUB_BANK_RECEIVE_NAME, ENTRY_PAIR, REF_NO FROM TR_REQ_PAY_AUTO_TRANS_OUTSIDE_REC WHERE REQ_PAY_AUTO_ID = @REQ_PAY_AUTO_ID Open cursorRec PRINT '12' FETCH NEXT FROM cursorRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @p_REQ_TRANS_OUTSIDE_REC_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_OUTSIDE_REC', @p_REQ_TRANS_OUTSIDE_REC_ID OUT; IF @p_REQ_TRANS_OUTSIDE_REC_ID='' OR @p_REQ_TRANS_OUTSIDE_REC_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_TRANS_OUTSIDE_REC(REQ_TRANS_OUTSIDE_REC_ID, REQ_PAY_ID, MAKER_ID, CREATE_DT, AUTH_STATUS, AUTH_STATUS_KT, CHANEL_PAYMENT_ID, CITAD1_ID, BANK_RECEIVE_ID, OBJECT_RECEIVE_ID, BRANCH_RECEIVE_ID, BRANCH_RECEIVE_NAME, ACC_NO_RECEIVE, TRADE_AMT, TRADE_DESC, SUB_BANK_RECEIVE_NAME, ENTRY_PAIR, REF_NO) VALUES (@p_REQ_TRANS_OUTSIDE_REC_ID, @REQ_PAY_ID, @MAKER_ID_KT, GETDATE(), NULL, NULL, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @PAY_AUTO_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM cursorRec INTO @MAKER_ID_KT, @CHANEL_PAYMENT_ID, @CITAD1_ID, @BANK_RECEIVE_ID, @OBJECT_RECEIVE_ID, @BRANCH_RECEIVE_ID, @BRANCH_RECEIVE_NAME, @ACC_NO_RECEIVE, @TRADE_AMT, @TRADE_DESC, @SUB_BANK_RECEIVE_NAME, @ENTRY_PAIR, @REF_NO END CLOSE cursorRec DEALLOCATE cursorRec PRINT '13' UPDATE TR_REQ_PAY_AUTO_SCHEDULE_DETAIL SET PAY_AUTO_DESC = @PAY_AUTO_DESC_DETAIL, PAY_AUTO_STATUS = 'Y', EXACT_DT = GETDATE() WHERE REQ_PAY_AUTO_SCHEDULE_DETAIL_ID = @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID FETCH NEXT FROM cursorScheduleDetail INTO @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @EXPECTED_DT, @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, @START_DT, @END_DT, @TYPE_PERIOD END CLOSE cursorScheduleDetail DEALLOCATE cursorScheduleDetail END FETCH NEXT FROM cursorPaymentAuto INTO @REQ_PAY_AUTO_ID, @REQ_PAY_AUTO_CODE, @REQ_PAY_AUTO_TYPE, @REQ_PAY_AUTO_SERVICE_TYPE, @REQ_PAY_AUTO_STATUS, @REQ_PAY_AUTO_EFFECTIVE_DT, @BRANCH_ID, @DEP_ID, @BRANCH_CREATE, @TRANSFER_USER_RECEIVE, @CONFIRM_NOTE, @CONTRACT_ID, @TRANSFER_MAKER, @TRANSFER_DT, @PROCESS, @AUTH_STATUS_KT, @RECORD_STATUS, @MAKER_ID, @CHECKER_ID, @MAKER_ID_KT, @CHECKER_ID_KT, @BRANCH_NAME, @REQ_PAY_AUTO_SERVICE_TYPE_NAME, @CONTRACT_CODE END CLOSE cursorPaymentAuto DEALLOCATE cursorPaymentAuto UPDATE TR_REQ_PAYMENT_AUTO SET IS_MAKER_CONFIRM = '0' COMMIT TRANSACTION SELECT '0' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lỗi không xác định' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_Confirm]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_Confirm] @p_REQ_PAY_AUTO_ID VARCHAR(15)= NULL, @p_CHECKER_ID VARCHAR(15) = NULL AS -- BEGIN VALIDATE -- END VALIDATE -- BEGIN VALIDATE FLOW IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(TRANSFER_USER_RECEIVE, '') <> @p_CHECKER_ID AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Xác nhận thất bại! Bạn không được chọn làm người phê duyệt trung gian của phiếu này' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') = '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Xác nhận thất bại! Phiếu yêu cầu thanh toán tự động chưa được gửi phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS = 'A' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Xác nhận thất bại! Phiếu yêu cầu thanh toán tự động đã được trưởng đơn vị phê duyệt trước đó' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'A' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Xác nhận thất bại! Phiếu yêu cầu thanh toán tự động đã được kiếm sát viên phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') <> '0' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Xác nhận thất bại! Phiếu yêu cầu thanh toán tự động đã được phê duyệt trung gian trước đó' ErrorDesc RETURN '-1' END -- END VALIDATE FLOW BEGIN TRANSACTION UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS='U', TRANSFER_USER_RECEIVE = @p_CHECKER_ID, PROCESS = '1' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_AUTO_ID,'APP',@p_CHECKER_ID,GETDATE(), N'Trưởng đơn vị phê duyệt phiếu',N'Phê duyệt cấp đơn vị') IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID ,'' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAY_AUTO_ENTRIES_ById]' GO CREATE PROC [dbo].[TR_REQ_PAY_AUTO_ENTRIES_ById] @p_REQ_PAY_AUTO_ID varchar(15) = NULL AS BEGIN DECLARE @TABLE_RETURN TABLE (REQ_PAY_DT_ID VARCHAR(15),REQ_PAY_ID VARCHAR(15),FUNCTION_TYPE VARCHAR(15),REF_ID VARCHAR(15),ENTRY_PAIR VARCHAR(15),DR_CR VARCHAR(15), DR_CR_NAME VARCHAR(15),ACCT VARCHAR(25),ACCT_NAME VARCHAR(100),BRANCH_ID VARCHAR(15),DEP_ID VARCHAR(15),AMT DECIMAL(18,0),CURRENCY VARCHAR(15),EXC_RATE INT,TRN_DATE DATETIME,TRN_DESC VARCHAR(150), MAKER_ID VARCHAR(15),CREATE_DT DATETIME,AUTH_STATUS VARCHAR(1),CHECKER_ID VARCHAR(15),APPROVE_DT DATETIME,MAKER_ID_KT VARCHAR(15),CREATE_DT_KT VARCHAR(15), AUTH_STATUS_KT VARCHAR(15),CHECKER_ID_KT VARCHAR(15),RECORD_STATUS VARCHAR(15),BRANCH_CODE VARCHAR(15),BRANCH_NAME VARCHAR(150),BR_FULLNAME VARCHAR(150), DEP_CODE VARCHAR(15),DEP_NAME NVARCHAR(150),DP_FULLNAME VARCHAR(150)) DECLARE @TRN_DESC VARCHAR(100), @MAKER_ID VARCHAR(15), @MAKER_ID_KT VARCHAR(15), @CREATE_DT DATETIME SET @TRN_DESC =(SELECT dbo.fChuyenCoDauThanhKhongDau(REQ_REASON) FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_AUTO_ID) SET @MAKER_ID =(SELECT MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_AUTO_ID) SET @CREATE_DT =(SELECT CREATE_DT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_AUTO_ID) SELECT A.REQ_PAY_AUTO_DT_ID, A.REQ_PAY_AUTO_ID,A.FUNCTION_TYPE,A.REF_ID,A.ENTRY_PAIR,A.DR_CR,A.DR_CR_NAME,A.ACCT,ISNULL(C.ACC_NAME,'') AS ACCT_NAME,A.BRANCH_ID,A.DEP_ID,A.AMT,A.CURRENCY,A.EXC_RATE,A.TRN_DATE,A.TRN_DESC, A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.MAKER_ID_KT,A.CREATE_DT_KT,A.AUTH_STATUS_KT,A.CHECKER_ID_KT,A.RECORD_STATUS , BR.BRANCH_CODE, BR.BRANCH_NAME, BR.BRANCH_CODE+' - '+ BR.BRANCH_NAME AS BR_FULLNAME, DP.DEP_CODE, DP.DEP_NAME, DP.DEP_CODE+ ' - '+ DP.DEP_NAME AS DP_FULLNAME, ISNULL(P.REF_NO,'') AS REF_NO, CONVERT(DECIMAL(18,0), A.ENTRY_PAIR) AS ENTRY_PAIR_NUMBER FROM TR_REQ_PAY_AUTO_ENTRIES A LEFT JOIN CM_BRANCH BR ON A.BRANCH_ID = BR.BRANCH_ID LEFT JOIN CM_DEPARTMENT DP ON A.DEP_ID= DP.DEP_ID LEFT JOIN CM_ACCOUNT C ON A.ACCT = C.ACC_NO LEFT JOIN PAY_ENTRIES_POST P ON A.REQ_PAY_AUTO_DT_ID = p.REF_ID WHERE A.REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID ORDER BY A.ENTRY_PAIR ASC, A.DR_CR DESC --END END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_Modify]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_Modify] @p_USER_LOGIN VARCHAR(15)= NULL, @p_MAKER_ID VARCHAR(15)= NULL, @p_REQ_PAY_AUTO_ID VARCHAR(15)= NULL, @p_CHECKER_ID_KT VARCHAR(15) = NULL, @p_TRANSFER_USER_RECEIVE VARCHAR(15) = NULL, @p_TYPE_MODIFY VARCHAR(50) = NULL AS /* 6: Người tạo tạm dừng phiếu 7: Cấp duyệt trung gian xác nhận phiếu tạm dừng 7.1: Cấp duyệt trung gian từ chối phiếu tạm dừng 8: Trưởng đơn vị duyệt 8.1: Trưởng đơn vị từ chối phiếu tạm ứng 9: Người tạo đề nghị khôi phục phiếu 10: Cấp trung gian xác nhận khôi phục 10.1: Cấp trung gian từ chối khôi phục phiếu 11: Trưởng đơn vị phê duyệt khôi phục 11.1: Trưởng đơn vị từ chối khôi phục phiếu 12: KSV điều phối yêu cầu khôi phục cho GDV 13: GDV gửi duyệt phiếu 13.1: GDV từ chối phiếu 14: KT duyệt phiếu 14.1: KT từ chối phiếu 15: Người tạo hủy phiếu và gửi duyệt 16: Trung gian xác nhận phiếu 17: GDDV duyệt phiếu 18: KSV điều phối phiếu 19: GDV gửi duyệt phiếu 20: KSV duyệt phiếu */ -- BEGIN VALIDATE -- END VALIDATE -- BEGIN VALIDATE FLOW IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(AUTH_STATUS_KT, '') <> 'A' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID AND @p_TYPE_MODIFY = 'MODIFY')) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Chỉnh sửa phiếu sau phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động chưa được kiểm sát viên phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(AUTH_STATUS_KT, '') <> 'A' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID AND @p_TYPE_MODIFY = 'SUSPEND')) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Tạm dừng phiếu thất bại! Phiếu yêu cầu thanh toán tự động chưa được kiểm sát viên phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(AUTH_STATUS_KT, '') <> 'A' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID AND @p_TYPE_MODIFY = 'DEL')) BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Hủy phiếu thất bại! Phiếu yêu cầu thanh toán tự động chưa được kiểm sát viên phê duyệt' ErrorDesc RETURN '-1' END -- END VALIDATE FLOW BEGIN TRANSACTION DECLARE @NOTES_PROCESS NVARCHAR(250) = '', @NEXT_STATUS_APP NVARCHAR(250) = '' IF(@p_TYPE_MODIFY = 'MODIFY') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') <> @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Chỉnh sửa phiếu sau phê duyệt thất bại! Chỉ người tạo phiếu mới có quyền chỉnh sửa phiếu' ErrorDesc RETURN '-1' END UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS = 'E', AUTH_STATUS_KT = NULL, REQ_PAY_AUTO_STATUS = NULL, CHECKER_ID = NULL, TRANSFER_MAKER = NULL, MAKER_ID_KT = NULL, CHECKER_ID_KT = NULL, CREATE_DT = GETDATE(), APPROVE_DT = NULL, TRANSFER_DT = NULL, CREATE_DT_KT = NULL, APPROVE_DT_KT = NULL, REQ_PAY_AUTO_EFFECTIVE_DT = NULL, PROCESS = NULL WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'MODIFY', @p_USER_LOGIN, GETDATE(), N'Người tạo phiếu chỉnh sửa sau phê duyệt', N'Chỉnh sửa phiếu sau phê duyệt') -- DELETE FLOW KT KET THUC DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_AUTO_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID ,N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)+N' đã mở quyền chỉnh sửa! Bây giờ bạn có thể chỉnh sửa phiếu' ErrorDesc RETURN '0' END ELSE IF(@p_TYPE_MODIFY = 'SUSPEND') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') <> @p_USER_LOGIN AND ISNULL(MAKER_ID_KT, '') <> @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Tạm dừng phiếu thất bại! Chỉ người tạo phiếu hoặc giao dịch viên hội sở mới có quyền tạm dừng phiếu' ErrorDesc RETURN '-1' END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') = @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SET @NOTES_PROCESS = N'Người tạo phiếu tạm dừng phiếu sau phê duyệt' END ELSE BEGIN SET @NOTES_PROCESS = N'Giao dịch viên tạm dừng phiếu sau phê duyệt' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(TRANSFER_USER_RECEIVE, '') <> '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET REQUEST_STATUS = 'SUSPEND', REQUEST_DT = GETDATE(), PROCESS = '6' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N'Vui lòng đợi cấp phê duyệt trung gian xác nhận' END ELSE BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET REQUEST_STATUS = 'SUSPEND', REQUEST_DT = GETDATE(), PROCESS = '6' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N'Vui lòng đợi trưởng đơn vị xác nhận' END -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'SUSPEND', @p_USER_LOGIN, GETDATE(), @NOTES_PROCESS, N'Đề nghị tạm dừng phiếu sau phê duyệt') IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID ,N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)+N' đã được đề nghị tạm dừng thành công! ' + @NEXT_STATUS_APP ErrorDesc RETURN '0' END ELSE IF(@p_TYPE_MODIFY = 'UNSUSPEND') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') <> @p_USER_LOGIN AND ISNULL(MAKER_ID_KT, '') <> @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Tạm dừng phiếu thất bại! Chỉ người tạo phiếu hoặc giao dịch viên hội sở mới có quyền khôi phục phiếu' ErrorDesc RETURN '-1' END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') = @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SET @NOTES_PROCESS = N'Người tạo phiếu khôi phục phiếu sau phê duyệt' END ELSE BEGIN SET @NOTES_PROCESS = N'Giao dịch viên khôi phục phiếu sau phê duyệt' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(TRANSFER_USER_RECEIVE, '') <> '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET REQUEST_STATUS = 'UNSUSPEND', REQUEST_DT = GETDATE(), PROCESS = '9' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N'Vui lòng đợi cấp phê duyệt trung gian xác nhận' END ELSE BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET REQUEST_STATUS = 'UNSUSPEND', REQUEST_DT = GETDATE(), PROCESS = '9' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N'Vui lòng đợi trưởng đơn vị xác nhận' END -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'UNSUSPEND', @p_USER_LOGIN, GETDATE(), @NOTES_PROCESS, N'Đề nghị khôi phục phiếu sau phê duyệt') IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID ,N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)+N' đã được đề nghị khôi phục thành công! ' + @NEXT_STATUS_APP ErrorDesc RETURN '0' END ELSE IF(@p_TYPE_MODIFY = 'UNSUSPEND_AND_DEL') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') <> @p_USER_LOGIN AND ISNULL(MAKER_ID_KT, '') <> @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Tạm dừng phiếu thất bại! Chỉ người tạo phiếu hoặc giao dịch viên hội sở mới có quyền khôi phục phiếu' ErrorDesc RETURN '-1' END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') = @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SET @NOTES_PROCESS = N'Người tạo phiếu khôi phục phiếu sau phê duyệt' END ELSE BEGIN SET @NOTES_PROCESS = N'Giao dịch viên khôi phục phiếu sau phê duyệt' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(TRANSFER_USER_RECEIVE, '') <> '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET REQUEST_STATUS = 'UNSUSPEND', REQUEST_DT = GETDATE(), PROCESS = '9' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N'Vui lòng đợi cấp phê duyệt trung gian xác nhận' END ELSE BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET REQUEST_STATUS = 'UNSUSPEND', REQUEST_DT = GETDATE(), PROCESS = '9' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N'Vui lòng đợi trưởng đơn vị xác nhận' END DELETE FROM TR_REQ_PAY_AUTO_SCHEDULE_DETAIL WHERE EXPECTED_DT < GETDATE() AND PAY_AUTO_STATUS = 'N' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'UNSUSPEND', @p_USER_LOGIN, GETDATE(), @NOTES_PROCESS, N'Đề nghị khôi phục phiếu sau phê duyệt') IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID ,N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)+N' đã được đề nghị khôi phục thành công! ' + @NEXT_STATUS_APP ErrorDesc RETURN '0' END ELSE IF(@p_TYPE_MODIFY = 'DEL') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') <> @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Hủy phiếu thất bại! Chỉ người tạo phiếu mới có quyền hủy phiếu' ErrorDesc RETURN '-1' END ELSE IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') = @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) BEGIN SET @NOTES_PROCESS = N'Người tạo phiếu hủy phiếu sau phê duyệt' END ELSE BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Hủy phiếu thất bại! Lỗi không xác định' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(TRANSFER_USER_RECEIVE, '') <> '' AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)) -- CO CAP DUYET TRUNG GIAN BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET REQUEST_STATUS = 'DEL', REQUEST_DT = GETDATE(), PROCESS = '15' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N'Vui lòng đợi cấp phê duyệt trung gian xác nhận' END ELSE BEGIN UPDATE TR_REQ_PAYMENT_AUTO SET REQUEST_STATUS = 'DEL', REQUEST_DT = GETDATE(), PROCESS = '15' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID SET @NEXT_STATUS_APP = N'Vui lòng đợi trưởng đơn vị phê duyệt' END -- INSERT VAO PL_PROCESS INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_PAY_AUTO_ID, 'DEL', @p_USER_LOGIN, GETDATE(), @NOTES_PROCESS, N'Hủy phiếu sau phê duyệt') -- DELETE FLOW KT KET THUC DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_AUTO_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID ,N'Phiếu yêu cầu thanh toán tự động số: '+(SELECT REQ_PAY_AUTO_CODE FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID)+N' đã được đề nghị hủy thành công! ' + @NEXT_STATUS_APP ErrorDesc RETURN '0' END ELSE BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Thay đổi phiếu thất bại! Bạn chưa chọn loại chỉnh sửa phiếu(Chỉnh sửa, Tạm dừng, Hủy phiếu)' ErrorDesc RETURN '-1' END COMMIT TRANSACTION ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[MW_ENTRIES_POST_CoreByRef_VAT]' GO CREATE PROCEDURE [dbo].[MW_ENTRIES_POST_CoreByRef_VAT] @p_REF_ID varchar(200) = NULL, @p_TRN_TYPE VARCHAR(50) = ''---AMORT - KHẤU HAO, ADDNEW - THEM MOI, USE - XUAT, TRANSF - DIEU CHUYEN, UPDATE - UPDATE, COLLECT - THU HOI, LIQ - THANH LY AS DECLARE @l_MAKER_ID VARCHAR(15), @l_CHECKER_ID VARCHAR(15), @l_TRN_DESC NVARCHAR(MAX), @lTRN_DATE DATETIME, @p_DO_BRN VARCHAR(50), @p_DO_BRN_CODE VARCHAR(50) SELECT TOP 1 @l_MAKER_ID = MAKER_ID,@l_CHECKER_ID = CHECKER_ID, @l_TRN_DESC = TRN_DESC, @lTRN_DATE = TRN_DATE, @p_DO_BRN = DO_BRN FROM MW_ENTRIES_POST WHERE TRN_ID = @p_REF_ID AND TRN_TYPE = @p_TRN_TYPE AND (REF_NO IS NULL OR REF_NO = '') --AND CONVERT(DATE,TRN_DATE) >= CONVERt(DATE,GETDATE()) AND AMT > 0 ---THIEUVQ THEM DO_BRANCH 121120 SET @p_DO_BRN_CODE = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @p_DO_BRN) SELECT ACC.ET_ID, ACC.CR_ACCT,CRB.BRANCH_CODE AS CR_BRN, ACC.DR_ACCT,DRB.BRANCH_CODE AS DR_BRN, DP.DEP_CODE AS DR_DEP, ACC.AMT, 'VND' AS CURRENCY, 1 AS EXCRATE, @l_MAKER_ID AS MAKER_ID, @l_CHECKER_ID AS CHECKER_ID, @l_TRN_DESC AS TRN_DESC, @p_DO_BRN_CODE AS DO_BRN, ACC.REF_ID FROM ( SELECT CR_BRN, CR_ACCT, DR_BRN, DEPT_ID DR_DEP, DR_ACCT, AMT, C2.ET_ID AS ET_ID, REF_ID --'VND' AS CURRENCY, 1.0 AS EXCRATE, @l_MAKER_ID AS MAKER_ID, @l_CHECKER_ID AS CHECKER_ID, @l_TRN_DESC AS TRN_DESC FROM MW_ENTRIES_POST C2 WHERE C2.AMT > 0 AND TRN_ID = @p_REF_ID AND TRN_TYPE = @p_TRN_TYPE AND (REF_NO IS NULL OR REF_NO = '')-- AND CONVERT(DATE,TRN_DATE) >= CONVERt(DATE,GETDATE()) ) AS ACC LEFT JOIN CM_BRANCH CRB ON CRB.BRANCH_ID = ACC.CR_BRN LEFT JOIN CM_BRANCH DRB ON DRB.BRANCH_ID = ACC.DR_BRN LEFT JOIN CM_DEPARTMENT DP ON DP.DEP_ID = ACC.DR_DEP GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_REQ_PAYMENT_AUTO_Ins]' GO CREATE PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_Ins] @p_REQ_PAY_AUTO_ID VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_CODE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_DT VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_TYPE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_SERVICE_TYPE VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_STATUS VARCHAR(20)= NULL, @p_REQ_PAY_AUTO_EFFECTIVE_DT VARCHAR(20)= NULL, @p_BRANCH_ID VARCHAR(20)= NULL, @p_DEP_ID VARCHAR(20)= NULL, @p_BRANCH_CREATE VARCHAR(20)= NULL, @p_TRANSFER_USER_RECEIVE VARCHAR(20)= NULL, @p_CONFIRM_NOTE VARCHAR(20)= NULL, @p_CONTRACT_ID VARCHAR(20)= NULL, @p_PROCESS VARCHAR(20)= NULL, @p_TRANSFER_MAKER VARCHAR(20)= NULL, @p_TRANSFER_DT VARCHAR(20)= NULL, @p_MAKER_ID VARCHAR(20)= NULL, @p_CREATE_DT VARCHAR(20)= NULL, @p_EDITOR_ID VARCHAR(20)= NULL, @p_EDIT_DT VARCHAR(20)= NULL, @p_CHECKER_ID VARCHAR(20)= NULL, @p_APPROVE_DT VARCHAR(20)= NULL, @p_AUTH_STATUS VARCHAR(20)= NULL, @p_MAKER_ID_KT VARCHAR(20)= NULL, @p_CREATE_DT_KT VARCHAR(20)= NULL, @p_CHECKER_ID_KT VARCHAR(20)= NULL, @p_APPROVE_DT_KT VARCHAR(20)= NULL, @p_AUTH_STATUS_KT VARCHAR(20)= NULL, @p_RECORD_STATUS VARCHAR(20)= NULL, @p_FRMDATE VARCHAR(20)= NULL, @p_TODATE VARCHAR(20)= NULL, @p_LEVEL VARCHAR(20)= NULL, @p_USER_LOGIN VARCHAR(20)= NULL, @p_IS_SEND_APPR VARCHAR(20)= NULL, @p_TYPE_SEARCH VARCHAR(20)= NULL, @p_BRANCH_LOGIN VARCHAR(20)= NULL, @p_NOTIFI_EXPIRED_DT VARCHAR(20)= NULL, @p_IS_MAKER_CONFIRM_CHECKBOX VARCHAR(20)= NULL, @p_XMP_SCHEDULE XML = NULL, @p_XMP_SCHEDULE_DETAIL XML = NULL, @p_XMP_METHOD XML = NULL AS -- BEGIN VALIDATE MASTER IF(ISNULL(@p_REQ_PAY_AUTO_TYPE, '') = '' OR ISNULL(@p_MAKER_ID, '') = '' OR ISNULL(@p_BRANCH_ID, '') = '' OR ISNULL(@p_DEP_ID, '') = '' OR ISNULL(@p_REQ_PAY_AUTO_SERVICE_TYPE, '') = '') BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Các thông tin sau không được để trống: loại thanh toán tự động, người tạo yêu cầu, đơn vị tạo yêu cầu, phòng ban tạo yêu cầu, loại dịch vụ thanh toán' ErrorDesc RETURN '-1' END IF(ISNULL(@p_CONTRACT_ID, '') = '') BEGIN SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Số hợp đồng(ID hệ thống) không được đế trống' ErrorDesc RETURN '-1' END -- END VALIDATE MASTER BEGIN TRANSACTION -- GEN MA SO PHIEU TU DONG EXEC [dbo].[PAY_CODE_GenKey] 'TR_REQ_PAYMENT_AUTO', '','', @p_REQ_PAY_AUTO_CODE out IF (@p_REQ_PAY_AUTO_CODE IS NULL OR @p_REQ_PAY_AUTO_CODE ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Mã số phiếu không được để trống' ErrorDesc RETURN '-1' END IF EXISTS(SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_CODE = @p_REQ_PAY_AUTO_CODE ) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Số phiếu yêu cầu thanh toán tự động đã tồn tại trong hệ thống' ErrorDesc RETURN '-1' END EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT_AUTO', @p_REQ_PAY_AUTO_ID out IF @p_REQ_PAY_AUTO_ID='' OR @p_REQ_PAY_AUTO_ID IS NULL GOTO ABORT INSERT INTO TR_REQ_PAYMENT_AUTO(REQ_PAY_AUTO_ID, REQ_PAY_AUTO_CODE, REQ_PAY_AUTO_TYPE, REQ_PAY_AUTO_SERVICE_TYPE, REQ_PAY_AUTO_STATUS, REQ_PAY_AUTO_EFFECTIVE_DT, BRANCH_ID, DEP_ID, BRANCH_CREATE, TRANSFER_USER_RECEIVE, CONFIRM_NOTE, CONTRACT_ID, TRANSFER_MAKER, TRANSFER_DT, PROCESS, MAKER_ID, CREATE_DT, EDITOR_ID, EDIT_DT, CHECKER_ID, APPROVE_DT, AUTH_STATUS, MAKER_ID_KT, CREATE_DT_KT, CHECKER_ID_KT, APPROVE_DT_KT, AUTH_STATUS_KT, RECORD_STATUS, NOTIFI_EXPIRED_DT, IS_MAKER_CONFIRM, IS_MAKER_CONFIRM_CHECKBOX) VALUES(@p_REQ_PAY_AUTO_ID, @p_REQ_PAY_AUTO_CODE, @p_REQ_PAY_AUTO_TYPE, @p_REQ_PAY_AUTO_SERVICE_TYPE, @p_REQ_PAY_AUTO_STATUS, @p_REQ_PAY_AUTO_EFFECTIVE_DT, @p_BRANCH_ID, @p_DEP_ID, @p_BRANCH_CREATE, @p_TRANSFER_USER_RECEIVE, @p_CONFIRM_NOTE, @p_CONTRACT_ID, @p_TRANSFER_MAKER, @p_TRANSFER_DT, @p_PROCESS, @p_MAKER_ID, GETDATE(), NULL, NULL, NULL,NULL, 'E', NULL, NULL, NULL, NULL, NULL, '1', CONVERT(DATE,@p_NOTIFI_EXPIRED_DT,103), @p_IS_MAKER_CONFIRM_CHECKBOX, @p_IS_MAKER_CONFIRM_CHECKBOX) IF @@Error <> 0 GOTO ABORT --- INSERT LICH THANH TOAN DECLARE @hDocSchedule INT EXEC sp_xml_preparedocument @hDocSchedule OUTPUT, @p_XMP_SCHEDULE; DECLARE @REQ_PAY_AUTO_SCHEDULE_ID VARCHAR(20), @CONTRACT_ID VARCHAR(20), @TYPE_PERIOD VARCHAR(20), @START_DT VARCHAR(20), @END_DT VARCHAR(20), @PERIOD_AMT DECIMAL(18,2), @PERIOD_NUMBER DECIMAL(18,2), @PERIOD_PAY_DT VARCHAR(20), @PERIOD_PAY_DAY DECIMAL(18,0) DECLARE XmlDataSchedule CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDocSchedule, 'Root/XmlDataSchedule',2) WITH(REQ_PAY_AUTO_CONTRACT_ID VARCHAR(20), CONTRACT_ID VARCHAR(20), TYPE_PERIOD VARCHAR(20), START_DT VARCHAR(20), END_DT VARCHAR(20), PERIOD_AMT DECIMAL(18,2), PERIOD_NUMBER DECIMAL(18,2), PERIOD_PAY_DT VARCHAR(20), PERIOD_PAY_DAY DECIMAL(18,0)) OPEN XmlDataSchedule FETCH NEXT FROM XmlDataSchedule INTO @REQ_PAY_AUTO_SCHEDULE_ID, @CONTRACT_ID, @TYPE_PERIOD, @START_DT, @END_DT, @PERIOD_AMT, @PERIOD_NUMBER , @PERIOD_PAY_DT, @PERIOD_PAY_DAY WHILE @@fetch_status=0 BEGIN EXEC SYS_CodeMasters_Gen 'REQ_PAY_AUTO_SCHEDULE_ID', @REQ_PAY_AUTO_SCHEDULE_ID OUT; IF @REQ_PAY_AUTO_SCHEDULE_ID='' OR @REQ_PAY_AUTO_SCHEDULE_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_AUTO_SCHEDULE(REQ_PAY_AUTO_SCHEDULE_ID, REQ_PAY_AUTO_ID, CONTRACT_ID, TYPE_PERIOD, START_DT, END_DT, PERIOD_AMT, PERIOD_NUMBER, PERIOD_PAY_DT, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, AUTH_STATUS, RECORD_STATUS, PERIOD_PAY_DAY) VALUES (@REQ_PAY_AUTO_SCHEDULE_ID, @p_REQ_PAY_AUTO_ID, @CONTRACT_ID, @TYPE_PERIOD, CONVERT(DATE,@START_DT,103), CONVERT(DATE,@END_DT,103), @PERIOD_AMT, @PERIOD_NUMBER, CONVERT(DATE,@PERIOD_PAY_DT,103), @p_MAKER_ID, GETDATE(), NULL, NULL, 'A', '1', @PERIOD_PAY_DAY) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataSchedule INTO @REQ_PAY_AUTO_SCHEDULE_ID, @CONTRACT_ID, @TYPE_PERIOD, @START_DT, @END_DT, @PERIOD_AMT, @PERIOD_NUMBER , @PERIOD_PAY_DT, @PERIOD_PAY_DAY END CLOSE XmlDataSchedule; DEALLOCATE XmlDataSchedule; --- INSERT CHI TIET LICH THANH TOAN DECLARE @hDocScheduleDetail INT EXEC sp_xml_preparedocument @hDocScheduleDetail OUTPUT, @p_XMP_SCHEDULE_DETAIL; DECLARE @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID VARCHAR(20), @EXPECTED_DT VARCHAR(20), @PAY_AUTO_AMT DECIMAL(18,2), @PAY_AUTO_DESC NVARCHAR(1000), @PAY_AUTO_STATUS VARCHAR(20), @EXACT_DT VARCHAR(20), @END_PERIOD_DT VARCHAR(20), @NOTES NVARCHAR(255) DECLARE XmlDataScheduleDetail CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDocScheduleDetail, 'Root/XmlDataScheduleDetail',2) WITH(REQ_PAY_AUTO_SCHEDULE_DETAIL_ID VARCHAR(20),REQ_PAY_AUTO_SCHEDULE_ID VARCHAR(20),EXPECTED_DT VARCHAR(20),PAY_AUTO_AMT DECIMAL(18,2),PAY_AUTO_DESC NVARCHAR(1000),PAY_AUTO_STATUS VARCHAR(20), EXACT_DT VARCHAR(20), START_DT VARCHAR(20), END_DT VARCHAR(20), TYPE_PERIOD VARCHAR(20), END_PERIOD_DT VARCHAR(20), NOTES NVARCHAR(255) ) OPEN XmlDataScheduleDetail FETCH NEXT FROM XmlDataScheduleDetail INTO @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @REQ_PAY_AUTO_SCHEDULE_ID, @EXPECTED_DT, @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, @EXACT_DT, @START_DT, @END_DT, @TYPE_PERIOD, @END_PERIOD_DT, @NOTES WHILE @@fetch_status=0 BEGIN EXEC SYS_CodeMasters_Gen 'REQ_PAY_AUTO_SCHEDULE_DETAIL_ID', @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID OUT; IF @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID='' OR @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_AUTO_SCHEDULE_DETAIL(REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, REQ_PAY_AUTO_SCHEDULE_ID,REQ_PAY_AUTO_ID, EXPECTED_DT, PAY_AUTO_AMT, PAY_AUTO_DESC, PAY_AUTO_STATUS, EXACT_DT, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, AUTH_STATUS, RECORD_STATUS, START_DT, END_DT, TYPE_PERIOD, END_PERIOD_DT, NOTES) VALUES (@REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @REQ_PAY_AUTO_SCHEDULE_ID, @p_REQ_PAY_AUTO_ID, CONVERT(DATE,@EXPECTED_DT,103), @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, CONVERT(DATE,@EXACT_DT,103), @p_MAKER_ID, GETDATE(), NULL, NULL, 'A', '1', CONVERT(DATE,@START_DT,103), CONVERT(DATE,@END_DT,103), @TYPE_PERIOD, CONVERT(DATE,@END_PERIOD_DT,103), @NOTES) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataScheduleDetail INTO @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @REQ_PAY_AUTO_SCHEDULE_ID, @EXPECTED_DT, @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, @EXACT_DT, @START_DT, @END_DT, @TYPE_PERIOD, @END_PERIOD_DT, @NOTES END CLOSE XmlDataScheduleDetail; DEALLOCATE XmlDataScheduleDetail; --- INSERT PHUONG THUC THANH TOAN DECLARE @hDocMeThod INT EXEC sp_xml_preparedocument @hDocMeThod OUTPUT, @p_XMP_METHOD; DECLARE @RECEIVE_ID VARCHAR(15), @RECEIVE_NAME NVARCHAR(100), @REQ_PAY_REASON NVARCHAR(MAX), @TOTAL_AMT DECIMAL(18,2), @REQ_PAY_TYPE VARCHAR(1), @REQ_PAY_DESC NVARCHAR(MAX), @REQ_PAY_ENTRIES NVARCHAR(MAX), @ACC_NO VARCHAR(25), @ACC_NAME NVARCHAR(250), @ISSUED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20), @CURRENCY VARCHAR(15), @RATE DECIMAL(18,2), @CHECK_IN VARCHAR(15), @TYPE_TRANSFER VARCHAR(15), @BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME VARCHAR(250), @SUB_ISSUED_BY NVARCHAR(250), @RECEIVER_DEBIT VARCHAR(20) DECLARE XmlDataMethod CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDocMeThod, 'Root/XmlDataMethod',2) WITH(RECEIVE_ID VARCHAR(15),RECEIVE_NAME NVARCHAR(100),REQ_PAY_REASON NVARCHAR(MAX),TOTAL_AMT DECIMAL(18,2), REQ_PAY_TYPE VARCHAR(1),REQ_PAY_DESC NVARCHAR(MAX),REQ_PAY_ENTRIES NVARCHAR(MAX),ACC_NO VARCHAR(25), ACC_NAME NVARCHAR(250),ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),CHECK_IN VARCHAR(15),TYPE_TRANSFER VARCHAR(15), BANKCODE_NAPAS VARCHAR(20), BANKCODE VARCHAR(20), BANKNAME VARCHAR(250), SUB_ISSUED_BY NVARCHAR(250), RECEIVER_DEBIT VARCHAR(20)) OPEN XmlDataMethod FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT,@REQ_PAY_TYPE, @REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT WHILE @@fetch_status=0 BEGIN IF(@REQ_PAY_TYPE<>'1') BEGIN SET @ISSUED_DT = NULL END IF(@TYPE_TRANSFER IS NULL OR @TYPE_TRANSFER ='') BEGIN SET @TYPE_TRANSFER ='A' END DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT; IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_AUTO_METHOD(METHOD_ID, REQ_PAY_AUTO_ID, EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT) VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_AUTO_ID,@RECEIVE_ID,@REQ_PAY_REASON, @TOTAL_AMT,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',@p_MAKER_ID,GETDATE(),@ACC_NO, @ACC_NAME,@ISSUED_BY,CONVERT(DATE,@ISSUED_DT,103), 'VND' ,'1',@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME,@SUB_ISSUED_BY, @RECEIVER_DEBIT ) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT,@REQ_PAY_TYPE, @REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT END CLOSE XmlDataMethod; DEALLOCATE XmlDataMethod; COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID, @p_REQ_PAY_AUTO_CODE AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lỗi không xác định' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_MASTER_Search_SK3]' GO CREATE PROCEDURE [dbo].[ASS_MASTER_Search_SK3] @p_ASSET_ID varchar(15) = NULL, @p_TYPE_ID varchar(15) = NULL, @p_GROUP_ID varchar(15) = NULL, @p_ASSET_CODE nvarchar(100) = NULL, @p_ASSET_NAME nvarchar(1000) = NULL, @p_ASSET_SERIAL_NO nvarchar(MAX) = NULL, @p_ASSET_DESC nvarchar(MAX) = NULL, @p_SUP_ID varchar(15) = NULL, @p_BUY_PRICE decimal(18,2) = NULL, @p_AMORT_AMT decimal(18,2) = NULL, @p_ASS_TYPE varchar(1) = NULL, @p_ASS_CAT varchar(10) = NULL, @p_BRANCH_ID varchar(15) = NULL, @p_BRANCH_LOGIN varchar(15) = NULL, @p_DEPT_ID varchar(15) = NULL, @p_EMP_ID varchar(15) = NULL, @p_DIVISION_ID varchar(15) = NULL, @p_BUY_DATE varchar(20) = NULL, @p_USE_DATE varchar(20) = NULL, @p_SPECIAL_ASS varchar(1) = NULL, @p_AMORT_MONTH decimal(18,2) = NULL, @p_AMORT_RATE decimal(18,2) = NULL, @p_AMORT_START_DATE varchar(20) = NULL, @p_AMORT_END_DATE varchar(20) = NULL, @p_FIRST_AMORT_AMT decimal(18,2) = NULL, @p_AMORTIZED_MONTH decimal(18,2)= NULL, @p_REMAIN_MONTH decimal(18,2) = NULL, --so thang khau hao con lai @p_AMORTIZED_AMT decimal(18,2) = NULL, @p_PO_ID varchar(15) = NULL, @p_WAREHOUSE_ID varchar(15) = NULL, @p_LOCATION nvarchar(500) = NULL, @p_REF_ASSET_ID varchar(15) = NULL, @p_REF_AMORTIZED_AMT decimal(18,2) = NULL, @p_WARRANTY_MONTHS INT = NULL, @p_NOTES nvarchar(1000) = NULL, @p_AMORT_STATUS nvarchar(200) = NULL, --Neu muon list nhieu trang thai thi trueyn vao nhieu status cach dau bang dau . vidu: 'VNM,CKH' @p_ASS_STATUS nvarchar(20) = NULL, @p_ASS_STATUS_DESC nvarchar(1000) = NULL, @p_TOP INT = NULL, @p_YEAR INT = NULL, @p_ORDER_BY varchar(500) = 1, @p_LEVEL varchar(10) = NULL, @p_USE_STATUS varchar(15) = NULL, @p_LIQ_W_STATUS varchar(1) = NULL AS BEGIN -- PAGING --thieuvq 19/7/2016 - DOC DU LIEU BO QUA COMMIT TRANSACTION SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED -- IF(@p_USE_DATE IS NULL) SET @p_USE_DATE = '' declare @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID) DECLARE @l_NGAYSAOKE VARCHAR(30), @p_TERM_ID VARCHAR(15), @l_SAOKE DATE IF LEFT(@p_LOCATION,4) = 'DXTL' BEGIN SET @l_NGAYSAOKE = @p_USE_DATE SET @p_TERM_ID = RIGHT(@p_LOCATION,LEN(@p_LOCATION)-4) SET @p_LOCATION = '' END ELSE BEGIN SET @l_NGAYSAOKE = @p_USE_DATE SET @p_TERM_ID = NULL END SET @l_SAOKE = CONVERT(DATE,@l_NGAYSAOKE,103) -- STATUS_ID, ASS_STATUS, ASSET_DESC declare @statusHistTmp table( ASSET_ID VARCHAR(15), STATUS_ID VARCHAR(15), [ASS_STATUS] [nvarchar](500) NULL, [ASSET_DESC] [nvarchar](500) NULL ) insert into @statusHistTmp SELECT HIS.ASSET_ID, STAT.STATUS_ID,HIS.ASS_STATUS, HIS.ASSET_DESC FROM dbo.GetLatestAssetHis(NULL, @p_USE_DATE) HIS LEFT JOIN ASS_STATUS STAT ON STAT.STATUS_NAME = HIS.ASS_STATUS IF(@p_BRANCH_ID IS NOT NULL) BEGIN SET @p_BRANCH_LOGIN = @p_BRANCH_ID END IF(@p_AMORT_STATUS = N'!DTL') BEGIN SET @p_AMORT_STATUS = NULL END IF @p_TERM_ID IS NULL OR @p_TERM_ID = '' BEGIN -- PAGING BEGIN SELECT MK.TLSUBBRID, A.ASSET_ID, A.ASSET_CODE, A.ASSET_NAME, A.ASSET_SERIAL_NO, A.BUY_DATE, BRN_HIST.BRANCH_ID, BRN_HIST.DEPT_ID, CASE WHEN ISNULL(KK.STATUS_ID,A.ASS_STATUS) = '6' THEN '1' ELSE ISNULL(KK.STATUS_ID,A.ASS_STATUS) END ASS_STATUS, --A.ASS_STATUS ASS_STATUS, BR.BRANCH_NAME, DP.DEP_NAME, A.USE_DATE, A.BUY_PRICE, CASE WHEN A.TYPE_ID = 'TSCD' THEN ISNULL((A.AMORT_AMT - A.AMORTIZED_AMT), ISNULL(A.AMORT_AMT,0)) --So tien khau hao con lai --ELSE CASE WHEN (ISNULL(A.AMORT_AMT,0) < ISNULL(AM.ST_DA_PB,A.AMORTIZED_AMT)) THEN 0 -- ELSE (ISNULL(A.AMORT_AMT,0) - ISNULL(AM.ST_DA_PB,A.AMORTIZED_AMT)) END ELSE CASE WHEN (ISNULL(A.AMORT_AMT,0) < A.AMORTIZED_AMT) THEN 0 ELSE (ISNULL(A.AMORT_AMT,0) - A.AMORTIZED_AMT) END END AS REMAIN_AMORTIZED_AMT, --ISNULL((A.AMORT_AMT - A.AMORTIZED_AMT), ISNULL(A.AMORT_AMT,0)) AS REMAIN_AMORTIZED_AMT, ISNULL(KK.ASS_STATUS,E.STATUS_NAME) ASS_STATUS_NAME, --E.ASS_STATUS ASS_STATUS_NAME, A.ASSET_DESC, ISNULL(KK.ASSET_DESC,A.ASS_STATUS_DESC) ASS_STATUS_DESC, -- HIEN TRANG A.NOTES,B.MANAGER_ID -- SELECT END FROM ASS_MASTER A LEFT JOIN --LAY DON VI MOI NHAT ( SELECT A.ASSET_ID, A.BRANCH_ID, A.DEPT_ID, A.EMP_ID FROM ASS_LOCATION_HIST A INNER JOIN ( SELECT MAX(B.LOCHIST_ID) AS LOCHIST_ID, B.ASSET_ID FROM ASS_LOCATION_HIST B WHERE B.USE_START_DT <= @l_SAOKE--CONVERT(DATE,@l_NGAYSAOKE,103) GROUP BY B.ASSET_ID ) AS TRN ON TRN.LOCHIST_ID = A.LOCHIST_ID ) AS BRN_HIST ON BRN_HIST.ASSET_ID = A.ASSET_ID --LEFT JOIN --( -- SELECT A.ASSET_ID, -- ISNULL(TR.BRANCH_ID, TRN.BRANCH_ID) AS BRANCH_ID, -- CASE WHEN TR.BRANCH_ID IS NULL THEN TRN.DEPT_ID ELSE TR.DEPT_ID END AS DEPT_ID, -- CASE WHEN TR.BRANCH_ID IS NULL THEN TRN.EMP_ID ELSE TR.EMP_ID END AS EMP_ID -- FROM ASS_MASTER A -- LEFT JOIN --LAY DON VI MOI NHAT -- ( -- SELECT A.ASSET_ID, A.BRANCH_ID, A.DEPT_ID, A.EMP_ID -- FROM ASS_LOCATION_HIST A -- INNER JOIN -- ( -- SELECT MAX(B.LOCHIST_ID) AS LOCHIST_ID, B.ASSET_ID -- FROM ASS_LOCATION_HIST B -- WHERE B.USE_START_DT <= @l_SAOKE--CONVERT(DATE,@l_NGAYSAOKE,103) -- GROUP BY B.ASSET_ID -- ) AS TRN ON TRN.LOCHIST_ID = A.LOCHIST_ID -- ) AS TR ON TR.ASSET_ID = A.ASSET_ID -- LEFT JOIN --LAY DON VI CU NHAT -- ( -- SELECT A.ASSET_ID, A.BRANCH_ID, A.DEPT_ID, A.EMP_ID -- FROM ASS_LOCATION_HIST A -- INNER JOIN -- ( -- SELECT MIN(B.LOCHIST_ID) AS LOCHIST_ID, B.ASSET_ID -- FROM ASS_LOCATION_HIST B -- WHERE B.USE_START_DT > @l_SAOKE --CONVERT(DATE,@l_NGAYSAOKE,103) -- GROUP BY B.ASSET_ID -- ) AS TRN ON TRN.LOCHIST_ID = A.LOCHIST_ID -- ) AS TRN ON TRN.ASSET_ID = A.ASSET_ID --) AS BRN_HIST ON BRN_HIST.ASSET_ID = A.ASSET_ID LEFT JOIN ASS_GROUP B ON A.GROUP_ID = B.GROUP_ID LEFT JOIN ASS_TYPE C ON A.[TYPE_ID] = C.[TYPE_ID] LEFT JOIN ASS_AMORT_STATUS D ON A.AMORT_STATUS = D.STATUS_CODE --LEFT JOIN ASS_STATUS STAT ON STAT.STATUS_ID = @p_ASS_STATUS LEFT JOIN ASS_STATUS E ON A.ASS_STATUS = E.STATUS_ID LEFT JOIN CM_AUTH_STATUS ZZ ON ZZ.AUTH_STATUS = A.AUTH_STATUS --LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID=A.BRANCH_ID LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID=BRN_HIST.BRANCH_ID LEFT JOIN CM_EMPLOYEE EM ON EM.EMP_ID=BRN_HIST.EMP_ID LEFT JOIN TL_USER MK ON MK.TLNANME = A.MAKER_ID --LEFT JOIN CM_BRANCH BBB ON BBB.BRANCH_ID = BRN_HIST.BRANCH_ID LEFT JOIN CM_DEPARTMENT DP ON DP.DEP_ID = BRN_HIST.DEPT_ID --LEFT JOIN --( -- SELECT AM_DT.ASSET_ID, ISNULL(SUM(ISNULL(AM_DT.AMORT_AMT,0)),0) AS ST_DA_PB FROM ASS_AMORT_DT AM_DT -- WHERE AM_DT.AMORT_DT <= @l_SAOKE--CONVERT(DATE,AM_DT.AMORT_DT) <= CONVERT(DATE, @l_NGAYSAOKE, 103) -- GROUP BY AM_DT.ASSET_ID --) AM ON AM.ASSET_ID = A.ASSET_ID LEFT JOIN @statusHistTmp KK ON KK.ASSET_ID = A.ASSET_ID WHERE 1 = 1 AND (A.ASSET_ID = @p_ASSET_ID OR @p_ASSET_ID IS NULL OR @p_ASSET_ID = '') AND (A.[TYPE_ID] = @p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID = '') AND (A.GROUP_ID = @p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID = '') AND (A.ASSET_CODE like '%' + @p_ASSET_CODE + '%' OR @p_ASSET_CODE IS NULL OR @p_ASSET_CODE = '') AND (A.ASSET_NAME like N'%' + @p_ASSET_NAME + '%' OR @p_ASSET_NAME IS NULL OR @p_ASSET_NAME = '') AND (A.ASS_TYPE = @p_ASS_TYPE OR @p_ASS_TYPE IS NULL OR @p_ASS_TYPE = '') AND (BRN_HIST.DEPT_ID = @p_DEPT_ID OR @p_DEPT_ID IS NULL OR @p_DEPT_ID = '') AND (BRN_HIST.EMP_ID = @p_EMP_ID OR @p_EMP_ID IS NULL OR @p_EMP_ID = '') AND ((A.TYPE_ID = 'TSCD' AND A.USE_DATE <= @l_SAOKE) OR (A.TYPE_ID = 'CCLD' AND A.USE_DATE_KT <= @l_SAOKE)) AND (@p_REMAIN_MONTH IS NULL OR (A.AMORT_MONTH - A.AMORTIZED_MONTH) = @p_REMAIN_MONTH ) AND (KK.STATUS_ID = @p_ASS_STATUS OR @p_ASS_STATUS IS NULL OR @p_ASS_STATUS = '' OR (A.ASS_STATUS = @p_ASS_STATUS AND KK.STATUS_ID IS NULL)) AND ( @p_AMORT_STATUS = '' OR @p_AMORT_STATUS IS NULL OR A.AMORT_STATUS = @p_AMORT_STATUS) AND (@p_ASS_STATUS_DESC IS NULL OR @p_ASS_STATUS_DESC = '' OR A.ASS_STATUS_DESC like N'%' + @p_ASS_STATUS_DESC + '%') AND A.RECORD_STATUS = '1' AND (@p_USE_STATUS IS NULL OR @p_USE_STATUS = '' OR A.USE_STATUS = @p_USE_STATUS) AND A.ENTRY_BOOKED = 'Y' AND (@p_LIQ_W_STATUS IS NULL OR @p_LIQ_W_STATUS = '' OR LIQ_W_STATUS = @p_LIQ_W_STATUS) ------------- AND ((@P_LEVEL = 'ALL' AND BRN_HIST.BRANCH_ID IN (SELECT BRANCH_ID from @tmp)) OR (@p_BRANCH_ID = '' OR @p_BRANCH_ID IS NULL OR @P_LEVEL = 'UNIT' AND BRN_HIST.BRANCH_ID = @p_BRANCH_ID)) AND (A.USE_DATE <= @l_SAOKE ) --THEM 15/04 THIEUVQ AND (CONVERT(DATE,A.LIQUIDATION_DT) > @l_SAOKE OR A.LIQUIDATION_DT IS NULL OR A.LIQUIDATION_DT = '') AND (@p_YEAR IS NULL OR @p_YEAR = YEAR(BUY_DATE)) -- HUNGDV THEM NAM MUA TAI SAN 210920 -- PAGING END END ELSE BEGIN SELECT MK.TLSUBBRID, A.ASSET_ID, A.ASSET_CODE, A.ASSET_NAME, A.ASSET_SERIAL_NO, A.BUY_DATE, BRN_HIST.BRANCH_ID, BRN_HIST.DEPT_ID, CASE WHEN ISNULL(KK.ASSET_STATUS,A.ASS_STATUS) = '6' THEN '1' ELSE ISNULL(KK.ASSET_STATUS,A.ASS_STATUS) END ASS_STATUS, --A.ASS_STATUS ASS_STATUS, BR.BRANCH_NAME, DP.DEP_NAME, A.USE_DATE, A.BUY_PRICE, CASE WHEN A.TYPE_ID = 'TSCD' THEN ISNULL((A.AMORT_AMT - A.AMORTIZED_AMT), ISNULL(A.AMORT_AMT,0)) --So tien khau hao con lai --ELSE CASE WHEN (ISNULL(A.AMORT_AMT,0) < ISNULL(AM.ST_DA_PB,A.AMORTIZED_AMT)) THEN 0 -- ELSE (ISNULL(A.AMORT_AMT,0) - ISNULL(AM.ST_DA_PB,A.AMORTIZED_AMT)) END ELSE CASE WHEN (ISNULL(A.AMORT_AMT,0) < A.AMORTIZED_AMT) THEN 0 ELSE (ISNULL(A.AMORT_AMT,0) - A.AMORTIZED_AMT) END END AS REMAIN_AMORTIZED_AMT, --ISNULL((A.AMORT_AMT - A.AMORTIZED_AMT), ISNULL(A.AMORT_AMT,0)) AS REMAIN_AMORTIZED_AMT, ISNULL(KK.ASSET_STATUS,E.STATUS_NAME) ASS_STATUS_NAME, --E.ASS_STATUS ASS_STATUS_NAME, A.ASSET_DESC, ISNULL(KK.INVENT_DESC,A.ASS_STATUS_DESC) ASS_STATUS_DESC, -- HIEN TRANG A.NOTES FROM ASS_MASTER A LEFT JOIN --LAY DON VI MOI NHAT ( SELECT A.ASSET_ID, A.BRANCH_ID, A.DEPT_ID, A.EMP_ID FROM ASS_LOCATION_HIST A INNER JOIN ( SELECT MAX(B.LOCHIST_ID) AS LOCHIST_ID, B.ASSET_ID FROM ASS_LOCATION_HIST B WHERE B.USE_START_DT <= @l_SAOKE--CONVERT(DATE,@l_NGAYSAOKE,103) GROUP BY B.ASSET_ID ) AS TRN ON TRN.LOCHIST_ID = A.LOCHIST_ID ) AS BRN_HIST ON BRN_HIST.ASSET_ID = A.ASSET_ID --LEFT JOIN ASS_GROUP B ON A.GROUP_ID = B.GROUP_ID --LEFT JOIN ASS_TYPE C ON A.[TYPE_ID] = C.[TYPE_ID] --LEFT JOIN ASS_AMORT_STATUS D ON A.AMORT_STATUS = D.STATUS_CODE LEFT JOIN ASS_STATUS E ON A.ASS_STATUS = E.STATUS_ID --LEFT JOIN CM_AUTH_STATUS ZZ ON ZZ.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID=BRN_HIST.BRANCH_ID --LEFT JOIN CM_EMPLOYEE EM ON EM.EMP_ID=BRN_HIST.EMP_ID LEFT JOIN TL_USER MK ON MK.TLNANME = A.MAKER_ID LEFT JOIN CM_DEPARTMENT DP ON DP.DEP_ID = BRN_HIST.DEPT_ID --LEFT JOIN @statusHistTmp KK ON KK.ASSET_ID = A.ASSET_ID LEFT JOIN ( SELECT A.ASSET_ID, A.ASSET_STATUS, A.INVENT_DESC, C.STATUS_NAME FROM ASS_INVENTORY_DT A INNER JOIN ( SELECT DISTINCT TERM, BRANCH_ID, DEPT_ID, MAX(INVENT_ID) AS INVENT_ID FROM ASS_INVENTORY_MASTER WHERE 1 = 1 AND (ASSET_TYPE = @p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID = '') AND TERM = @p_TERM_ID AND INVENTORY_DT = CONVERT(DATE,@l_NGAYSAOKE,103) AND RECORD_STATUS = 1 AND AUTH_STATUS = 'A' AND (DEPT_ID = @p_DEPT_ID OR @p_DEPT_ID IS NULL OR @p_DEPT_ID = '') AND ((@P_LEVEL = 'ALL' AND BRANCH_ID IN (SELECT BRANCH_ID from @tmp)) OR (@P_LEVEL = 'UNIT' AND BRANCH_ID = @p_BRANCH_ID) OR @p_BRANCH_ID = '' OR @p_BRANCH_ID IS NULL) GROUP BY TERM, BRANCH_ID, DEPT_ID ) B ON A.INVENT_ID = B.INVENT_ID LEFT JOIN ASS_STATUS C ON C.STATUS_ID = A.ASSET_STATUS ) KK ON KK.ASSET_ID = A.ASSET_ID WHERE 1 = 1 AND (A.ASSET_ID = @p_ASSET_ID OR @p_ASSET_ID IS NULL OR @p_ASSET_ID = '') AND (A.[TYPE_ID] = @p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID = '') AND (A.GROUP_ID = @p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID = '') AND (A.ASSET_CODE like '%' + @p_ASSET_CODE + '%' OR @p_ASSET_CODE IS NULL OR @p_ASSET_CODE = '') AND (A.ASSET_NAME like N'%' + @p_ASSET_NAME + '%' OR @p_ASSET_NAME IS NULL OR @p_ASSET_NAME = '') AND (A.ASS_TYPE = @p_ASS_TYPE OR @p_ASS_TYPE IS NULL OR @p_ASS_TYPE = '') AND (BRN_HIST.DEPT_ID = @p_DEPT_ID OR @p_DEPT_ID IS NULL OR @p_DEPT_ID = '') AND (BRN_HIST.EMP_ID = @p_EMP_ID OR @p_EMP_ID IS NULL OR @p_EMP_ID = '') AND ((A.TYPE_ID = 'TSCD' AND A.USE_DATE <= @l_SAOKE) OR (A.TYPE_ID = 'CCLD' AND A.USE_DATE_KT <= @l_SAOKE)) AND (@p_REMAIN_MONTH IS NULL OR (A.AMORT_MONTH - A.AMORTIZED_MONTH) = @p_REMAIN_MONTH ) AND (KK.ASSET_STATUS = @p_ASS_STATUS OR @p_ASS_STATUS IS NULL OR @p_ASS_STATUS = '' OR (A.ASS_STATUS = @p_ASS_STATUS AND KK.ASSET_STATUS IS NULL)) AND ( @p_AMORT_STATUS = '' OR @p_AMORT_STATUS IS NULL OR A.AMORT_STATUS = @p_AMORT_STATUS) AND (@p_ASS_STATUS_DESC IS NULL OR @p_ASS_STATUS_DESC = '' OR A.ASS_STATUS_DESC like N'%' + @p_ASS_STATUS_DESC + '%') AND A.RECORD_STATUS = '1' AND (@p_USE_STATUS IS NULL OR @p_USE_STATUS = '' OR A.USE_STATUS = @p_USE_STATUS) AND A.ENTRY_BOOKED = 'Y' AND (@p_LIQ_W_STATUS IS NULL OR @p_LIQ_W_STATUS = '' OR LIQ_W_STATUS = @p_LIQ_W_STATUS) ------------- AND ((@P_LEVEL = 'ALL' AND BRN_HIST.BRANCH_ID IN (SELECT BRANCH_ID from @tmp)) OR (@p_BRANCH_ID = '' OR @p_BRANCH_ID IS NULL OR @P_LEVEL = 'UNIT' AND BRN_HIST.BRANCH_ID = @p_BRANCH_ID)) AND (A.USE_DATE <= @l_SAOKE ) --THEM 15/04 THIEUVQ AND (CONVERT(DATE,A.LIQUIDATION_DT) > @l_SAOKE OR A.LIQUIDATION_DT IS NULL OR A.LIQUIDATION_DT = '') AND (@p_YEAR IS NULL OR @p_YEAR = YEAR(BUY_DATE)) -- HUNGDV THEM NAM MUA TAI SAN 210920 -- PAGING END END --GROUP BY AM_DT.ASSET_ID END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_PRINT_TEMP_PREVIEW]' GO CREATE PROCEDURE [dbo].[ASS_PRINT_TEMP_PREVIEW] @p_ASSET_ID varchar(MAX) = NULL, @p_ASSET_CODE nvarchar(1000) = NULL, @p_ASSET_NAME nvarchar(1000) = NULL, @p_BRANCH_ID varchar(15) = NULL, @p_BRANCH_LOGIN varchar(15) = NULL, @p_ASSET_TYPE VARCHAR(15) = NULL,--Them truong hop khong chon nhom tai san @p_ASSET_GROUP VARCHAR(15) = NULL, @p_FROM_NUM VARCHAR(10) = NULL, @p_TO_NUM VARCHAR(10) = NULL, @p_TOP INT = NULL, @p_Fromdate varchar(20) = null, @p_Todate VARCHAR(20) = NULL, @p_depT_ID varchar(15) = NULL,--thieuvq Search theo phong ban @p_asseT_SERIAL_NO VARCHAR(MAX) = NULL,--- luctv search theo ngay nhap @p_addneW_ID VARCHAR(20) = NULL,--- luctv search ma phieu nhap 16092019 @p_usE_MASTER_ID VARCHAR(20) = NULL,--- luctv search theo ma phieu xuat 16092019 @p_LEVEL VARCHAR(5) = 'UNIT' AS -- BEGIN -- PAGING --IF @p_TOP = '' SET @p_TOP = 1000000 declare @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN) --- khai bao table chua ds ma tai san DECLARE @l_LSTASSETCODE TABLE ( [ID] [int] IDENTITY(1,1) NOT NULL, [VALUE] [VARCHAR](MAX) NULL) INSERT INTO @l_LSTASSETCODE SELECT VALUE FROM WSISPLIT(@p_ASSET_ID,',') --- khai bao table chua ds ma code tai san DECLARE @l_LSTASSETCODE_V1 TABLE ( [ID] [int] IDENTITY(1,1) NOT NULL, [VALUE] [VARCHAR](MAX) NULL) INSERT INTO @l_LSTASSETCODE_V1 SELECT VALUE FROM WSISPLIT(@p_ASSET_CODE,',') -- khai bao table chua ds seria DECLARE @l_LSTSERI TABLE ( [ID] [int] IDENTITY(1,1) NOT NULL, [VALUE] [VARCHAR](MAX) NULL) INSERT INTO @l_LSTSERI SELECT VALUE FROM WSISPLIT(@p_asseT_SERIAL_NO,',') IF @P_TOP IS NULL OR @P_TOP = '' BEGIN -- PAGING BEGIN SELECT A.ASSET_ID, A.[TYPE_ID],C.[TYPE_CODE], C.[TYPE_NAME], A.GROUP_ID,B.GROUP_CODE, B.GROUP_NAME, B.ASS_CAT, A.ASSET_CODE, (CASE WHEN LEN(A.ASSET_NAME)>25 THEN SUBSTRING(A.ASSET_NAME,0,20) + '...'ELSE A.ASSET_NAME END) AS ASSET_NAME, A.ASSET_SERIAL_NO, A.ASSET_DESC, A.SUP_ID, A.BUY_PRICE, A.AMORT_AMT, A.ASS_TYPE, A.BRANCH_ID,BR.BRANCH_CODE,BR.BRANCH_NAME,ISNULL(DP.DEP_ID,BR.BRANCH_ID) AS DEPT_ID, ISNULL(DP.DEP_CODE,BR.BRANCH_CODE) AS DEPT_CODE , A.EMP_ID,EM.TLNANME AS EMP_CODE,EM.TLFullName AS EMP_NAME, A.DIVISION_ID, A.BUY_DATE, A.USE_DATE, A.SPECIAL_ASS, A.AMORT_MONTH, A.AMORT_RATE, A.AMORT_START_DATE, A.AMORT_END_DATE, A.FIRST_AMORT_AMT, A.AMORTIZED_MONTH, (A.AMORT_MONTH - A.AMORTIZED_MONTH) AS REMAIN_MONTH, A.AMORTIZED_AMT, ISNULL((A.AMORT_AMT - A.AMORTIZED_AMT), A.AMORT_AMT) AS REMAIN_AMORTIZED_AMT, --So tien khau hao con lai A.PO_ID,A.PD_ID, A.WAREHOUSE_ID, A.LOCATION, A.REF_ASSET_ID, A.REF_AMORTIZED_AMT, A.WARRANTY_MONTHS, A.NOTES, A.AMORT_STATUS, D.STATUS_NAME AMORT_STATUS_NAME, A.ASS_STATUS, E.STATUS_NAME ASS_STATUS_NAME, --Tinh trang tai san A.ASS_STATUS_DESC, A.RECORD_STATUS, A.AUTH_STATUS, ZZ.AUTH_STATUS_NAME, A.MAKER_ID, A.CREATE_DT, A.CHECKER_ID, A.APPROVE_DT, B.GROUP_NAME NHOM_TS, ISNULL(DP.DEP_NAME,BR.BRANCH_NAME) AS DVSD, DP.DEP_NAME , A.BUY_DATE_KT -- SELECT END FROM ASS_MASTER A LEFT JOIN ASS_GROUP B ON A.GROUP_ID = B.GROUP_ID LEFT JOIN ASS_TYPE C ON A.[TYPE_ID] = C.[TYPE_ID] LEFT JOIN ASS_AMORT_STATUS D ON A.AMORT_STATUS = D.STATUS_CODE LEFT JOIN ASS_STATUS E ON A.ASS_STATUS = E.STATUS_ID LEFT JOIN CM_AUTH_STATUS ZZ ON ZZ.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID=A.BRANCH_ID LEFT JOIN TL_USER EM ON EM.TLNANME=A.EMP_ID LEFT JOIN CM_DEPARTMENT DP ON DP.DEP_ID = A.DEPT_ID LEFT JOIN ASS_TRANSACTIONS AT ON AT.ASSET_ID = A.ASSET_ID AND AT.TRN_TYPE ='ADD_NEW' LEFT JOIN ASS_TRANSACTIONS AT2 ON AT2.ASSET_ID = A.ASSET_ID AND AT2.TRN_TYPE ='ADD_USE' AND @p_usE_MASTER_ID <>'' AND @p_usE_MASTER_ID IS NOT NULL WHERE 1 = 1 AND AMORT_STATUS <> 'DTL' --AND AMORT_STATUS <> 'VNM' AND AMORT_STATUS <> 'DTL' --AND (A.ASSET_ID = @p_ASSET_ID OR @p_ASSET_ID IS NULL OR @p_ASSET_ID = '') AND (A.ASSET_ID IN (SELECT VALUE FROM @l_LSTASSETCODE) OR @p_ASSET_ID IS NULL OR @p_ASSET_ID ='') AND (A.ASSET_NAME like N'%' + @p_ASSET_NAME + '%' OR @p_ASSET_NAME IS NULL OR @p_ASSET_NAME = '') AND ((@p_LEVEL = 'UNIT' AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')) OR (@p_LEVEL = 'ALL' AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@P_BRANCH_ID)) OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = ''))) AND (B.GROUP_ID = @p_ASSET_GROUP OR @p_ASSET_GROUP IS NULL OR @p_ASSET_GROUP = '') AND (A.TYPE_ID = @p_ASSET_TYPE OR @p_ASSET_TYPE IS NULL OR @p_ASSET_TYPE = '') --AND ((CONVERT(INT,SUBSTRING(A.ASSET_CODE,2 + LEN(B.GROUP_CODE),LEN(A.ASSET_CODE) - 1 - --LEN(B.GROUP_CODE))) >= CONVERT(INT,@p_FROM_NUM)) OR @p_FROM_NUM = '' OR @p_FROM_NUM IS NULL) --AND ((CONVERT(INT,SUBSTRING(A.ASSET_CODE,2 + LEN(B.GROUP_CODE),LEN(A.ASSET_CODE) - 1 - --LEN(B.GROUP_CODE))) <= CONVERT(INT,@p_TO_NUM)) OR @p_TO_NUM = '' OR @p_TO_NUM IS NULL) AND ((CONVERT(DECIMAL,RIGHT(A.ASSET_CODE,4))>= CONVERT(INT,@p_FROM_NUM)) OR @p_FROM_NUM = '' OR @p_FROM_NUM IS NULL) AND ((CONVERT(DECIMAL,RIGHT(A.ASSET_CODE,4)) <= CONVERT(INT,@p_TO_NUM)) OR @p_TO_NUM = '' OR @p_TO_NUM IS NULL) AND(A.BUY_DATE_KT <= CONVERT(DATETIME,@p_Todate,103) OR @p_Todate= '' OR @p_Todate IS NULL) AND (A.BUY_DATE_KT >= CONVERT(datetime, @p_Fromdate, 103) OR @p_Fromdate IS NULL OR @p_Fromdate = '') AND A.RECORD_STATUS = '1' AND (A.DEPT_ID = @p_depT_ID OR @p_depT_ID IS NULL OR @p_depT_ID = '')-- THIEUVQ THEM 19_03_2014 --AND (A.ASSET_SERIAL_NO = @p_SerialNo OR @p_SerialNo IS NULL OR @p_SerialNo = '') AND (A.ASSET_SERIAL_NO IN (SELECT VALUE FROM @l_LSTSERI) OR @p_asseT_SERIAL_NO IS NULL OR @p_asseT_SERIAL_NO ='') AND (A.ASSET_CODE IN (SELECT VALUE FROM @l_LSTASSETCODE_V1) OR @p_ASSET_CODE IS NULL OR @p_ASSET_CODE ='') --AND (AT.TRN_ID = @p_AddNewID OR @p_AddNewID ='' OR @p_AddNewID IS NULL) --AND (AT2.TRN_ID = @p_Use_MasterID OR @p_Use_MasterID ='' OR @p_Use_MasterID IS NULL) AND (AT.TRN_ID like N'%' + @p_addneW_ID + '%' OR @p_addneW_ID IS NULL OR @p_addneW_ID = '') AND (AT2.TRN_ID like N'%' + @p_usE_MASTER_ID + '%' OR @p_usE_MASTER_ID IS NULL OR @p_usE_MASTER_ID = '') -- PAGING END END -- SELECT * FROM ASS_MASTER -- PRINT (CONVERT(INT,SUBSTRING('TPV001000001',1 + LEN('PV0001'),15 - 1 - LEN('PV0001'))) >= CONVERT(INT,'000000001') ) ELSE BEGIN -- PAGING BEGIN SELECT TOP (@P_TOP) A.ASSET_ID,A.ASSET_CODE, A.[TYPE_ID],C.[TYPE_CODE], C.[TYPE_NAME], A.GROUP_ID,B.GROUP_CODE, B.GROUP_NAME, B.ASS_CAT, A.ASSET_NAME, A.ASSET_SERIAL_NO, A.ASSET_DESC, A.SUP_ID, A.BUY_PRICE, A.AMORT_AMT, A.ASS_TYPE, A.BRANCH_ID,BR.BRANCH_CODE,BR.BRANCH_NAME, ISNULL(DP.DEP_ID,BR.BRANCH_ID) AS DEPT_ID, ISNULL(DP.DEP_CODE,BR.BRANCH_CODE) AS DEPT_CODE, A.EMP_ID,EM.TLNANME AS EMP_CODE,EM.TLFullName AS EMP_NAME, A.DIVISION_ID, A.BUY_DATE, A.USE_DATE, A.SPECIAL_ASS, A.AMORT_MONTH, A.AMORT_RATE, A.AMORT_START_DATE, A.AMORT_END_DATE, A.FIRST_AMORT_AMT, A.AMORTIZED_MONTH, (A.AMORT_MONTH - A.AMORTIZED_MONTH) AS REMAIN_MONTH, A.AMORTIZED_AMT, ISNULL((A.AMORT_AMT - A.AMORTIZED_AMT), A.AMORT_AMT) AS REMAIN_AMORTIZED_AMT, --So tien khau hao con lai A.PO_ID,A.PD_ID, A.WAREHOUSE_ID, A.LOCATION, A.REF_ASSET_ID, A.REF_AMORTIZED_AMT, A.WARRANTY_MONTHS, A.NOTES, A.AMORT_STATUS, D.STATUS_NAME AMORT_STATUS_NAME, A.ASS_STATUS, E.STATUS_NAME ASS_STATUS_NAME, --Tinh trang tai san A.ASS_STATUS_DESC, A.RECORD_STATUS, A.AUTH_STATUS, ZZ.AUTH_STATUS_NAME, A.MAKER_ID, A.CREATE_DT, A.CHECKER_ID, A.APPROVE_DT, B.GROUP_NAME NHOM_TS, ISNULL(DP.DEP_NAME,BR.BRANCH_NAME) AS DVSD, DP.DEP_NAME, A.BUY_DATE_KT -- SELECT END FROM ASS_MASTER A LEFT JOIN ASS_GROUP B ON A.GROUP_ID = B.GROUP_ID LEFT JOIN ASS_TYPE C ON A.[TYPE_ID] = C.[TYPE_ID] LEFT JOIN ASS_AMORT_STATUS D ON A.AMORT_STATUS = D.STATUS_CODE LEFT JOIN ASS_STATUS E ON A.ASS_STATUS = E.STATUS_ID LEFT JOIN CM_AUTH_STATUS ZZ ON ZZ.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID=A.BRANCH_ID LEFT JOIN TL_USER EM ON EM.TLNANME=A.EMP_ID LEFT JOIN CM_DEPARTMENT DP ON DP.DEP_ID = A.DEPT_ID LEFT JOIN ASS_TRANSACTIONS AT ON AT.ASSET_ID = A.ASSET_ID AND AT.TRN_TYPE ='ADD_NEW' LEFT JOIN ASS_TRANSACTIONS AT2 ON AT2.ASSET_ID = A.ASSET_ID AND AT2.TRN_TYPE ='ADD_USE' AND @p_usE_MASTER_ID <>'' AND @p_usE_MASTER_ID IS NOT NULL WHERE 1 = 1 AND AMORT_STATUS <> 'DTL' --AND AMORT_STATUS <> 'VNM' AND AMORT_STATUS <> 'DTL' --AND (A.ASSET_ID = @p_ASSET_ID OR @p_ASSET_ID IS NULL OR @p_ASSET_ID = '') AND (A.ASSET_ID IN (SELECT VALUE FROM @l_LSTASSETCODE) OR @p_ASSET_ID IS NULL OR @p_ASSET_ID ='') AND (A.ASSET_NAME like N'%' + @p_ASSET_NAME + '%' OR @p_ASSET_NAME IS NULL OR @p_ASSET_NAME = '') AND ((@p_LEVEL = 'UNIT' AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')) OR (@p_LEVEL = 'ALL' AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@P_BRANCH_ID)) OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = ''))) AND (B.GROUP_ID = @p_ASSET_GROUP OR @p_ASSET_GROUP IS NULL OR @p_ASSET_GROUP = '') AND (A.TYPE_ID = @p_ASSET_TYPE OR @p_ASSET_TYPE IS NULL OR @p_ASSET_TYPE = '') --AND ((CONVERT(INT,SUBSTRING(A.ASSET_CODE,2 + LEN(B.GROUP_CODE),LEN(A.ASSET_CODE) - 1 - --LEN(B.GROUP_CODE))) >= CONVERT(INT,@p_FROM_NUM)) OR @p_FROM_NUM = '' OR @p_FROM_NUM IS NULL) --AND ((CONVERT(INT,SUBSTRING(A.ASSET_CODE,2 + LEN(B.GROUP_CODE),LEN(A.ASSET_CODE) - 1 - --LEN(B.GROUP_CODE))) <= CONVERT(INT,@p_TO_NUM)) OR @p_TO_NUM = '' OR @p_TO_NUM IS NULL) AND ((CONVERT(DECIMAL,RIGHT(A.ASSET_CODE,4))>= CONVERT(INT,@p_FROM_NUM)) OR @p_FROM_NUM = '' OR @p_FROM_NUM IS NULL) AND ((CONVERT(DECIMAL,RIGHT(A.ASSET_CODE,4)) <= CONVERT(INT,@p_TO_NUM)) OR @p_TO_NUM = '' OR @p_TO_NUM IS NULL) AND(A.BUY_DATE_KT <= CONVERT(DATETIME,@p_Todate,103) OR @p_Todate= '' OR @p_Todate IS NULL) AND (A.BUY_DATE_KT >= CONVERT(datetime, @p_Fromdate, 103) OR @p_Fromdate IS NULL OR @p_Fromdate = '') AND A.RECORD_STATUS = '1' AND (A.DEPT_ID = @p_depT_ID OR @p_depT_ID IS NULL OR @p_depT_ID = '')-- THIEUVQ THEM 19_03_2014 --AND (A.ASSET_SERIAL_NO = @p_SerialNo OR @p_SerialNo IS NULL OR @p_SerialNo = '') AND (A.ASSET_SERIAL_NO IN (SELECT VALUE FROM @l_LSTSERI) OR @p_asseT_SERIAL_NO IS NULL OR @p_asseT_SERIAL_NO ='') AND (A.ASSET_CODE IN (SELECT VALUE FROM @l_LSTASSETCODE_V1) OR @p_ASSET_CODE IS NULL OR @p_ASSET_CODE ='') --AND (AT.TRN_ID = @p_AddNewID OR @p_AddNewID ='' OR @p_AddNewID IS NULL) --AND (AT2.TRN_ID = @p_Use_MasterID OR @p_Use_MasterID ='' OR @p_Use_MasterID IS NULL) AND (AT.TRN_ID like N'%' + @p_addneW_ID + '%' OR @p_addneW_ID IS NULL OR @p_addneW_ID = '') AND (AT2.TRN_ID like N'%' + @p_usE_MASTER_ID + '%' OR @p_usE_MASTER_ID IS NULL OR @p_usE_MASTER_ID = '') -- PAGING END END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_Del]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_Del] @p_REQUEST_TEMPLATE_ID varchar(100) AS DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM CM_REQUEST_TEMPLATE WHERE REQUEST_TEMPLATE_ID= @p_REQUEST_TEMPLATE_ID)) SET @ERRORSYS = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END BEGIN TRANSACTION IF( (SELECT CHECKER_ID FROM CM_REQUEST_TEMPLATE WHERE REQUEST_TEMPLATE_ID= @p_REQUEST_TEMPLATE_ID) IS NOT NULL) BEGIN UPDATE CM_REPORT_TEMPLATE SET RECORD_STATUS = '0' WHERE REPORT_TEMPLATE_ID = @p_REQUEST_TEMPLATE_ID IF @@Error <> 0 GOTO ABORT END ELSE BEGIN Delete FROM CM_REQUEST_TEMPLATE WHERE REQUEST_TEMPLATE_ID= @p_REQUEST_TEMPLATE_ID DELETE CM_SENT_TO_TEMPLATE WHERE TEMPLATE_ID=@p_REQUEST_TEMPLATE_ID IF @@Error <> 0 GOTO ABORT END COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_DETAIL_ByTemplateId]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_DETAIL_ByTemplateId] @REQUEST_TEMPLATE_ID varchar(100) AS SELECT * FROM CM_REQUEST_TEMPLATE_DETAIL WHERE REQUEST_TEMPLATE_ID= @REQUEST_TEMPLATE_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_ByCode]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_ByCode] @p_REQUEST_TEMPLATE_CODE varchar(100) as BEGIN select * from CM_REQUEST_TEMPLATE where REQUEST_TEMPLATE_CODE = @p_REQUEST_TEMPLATE_CODE END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_DETAIL_Upd]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_DETAIL_Upd] @REQUEST_TEMPLATE_ID varchar(100) = null, @REQUEST_TEMPLATE_DETAIL_ID varchar(100) = null, @REQUEST_TEMPLATE_DETAIL_CONTENT nvarchar(max) = null AS BEGIN BEGIN TRANSACTION UPDATE [dbo].[CM_REQUEST_TEMPLATE_DETAIL] SET REQUEST_TEMPLATE_DETAIL_CONTENT = @REQUEST_TEMPLATE_DETAIL_CONTENT WHERE REQUEST_TEMPLATE_DETAIL_ID = @REQUEST_TEMPLATE_DETAIL_ID COMMIT TRANSACTION SELECT '0' as Result, @REQUEST_TEMPLATE_DETAIL_ID Id, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' Id, '' ErrorDesc RETURN '-1' End END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_Search]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_Search] @p_REQUEST_TEMPLATE_CODE varchar(15)=NULL, @p_REQUEST_TEMPLATE_NAME nvarchar(200)=NULL, @p_NOTES nvarchar(1000)=NULL, @p_RECORD_STATUS varchar(1)=NULL, @p_MAKER_ID varchar(12)=NULL, @p_CREATE_DT VARCHAR(20)=NULL, @p_AUTH_STATUS varchar(50)=NULL, @p_CHECKER_ID varchar(12)=NULL, @p_APPROVE_DT VARCHAR(20)=NULL, @p_MaxResultCount int = NULL, @p_SkipCount int = NULL, @p_Sorting varchar(100) = NULL, @p_TotalCount int = NULL, @p_REPORT_NO NVARCHAR(50)=NULL, @p_REPORT_DT NVARCHAR(50)=NULL, @p_TYPE_TEMPLATE NVARCHAR(50)=NULL, @p_FROM_DT NVARCHAR(20)=NULL, @p_TO_DT NVARCHAR(20)=NULL, @p_TYPE_TEMPLATE_ID varchar(20)=null, @p_MAKER_FULLNAME Nvarchar(50)=null, @p_USER_LOGIN VARCHAR(20)=NULL, @p_AUTH_STATUS_APP VARCHAR(20)=NULL AS BEGIN -- PAGING -- PAGING BEGIN SELECT A.*,B.CONTENT AS AUTH_STATUS_NAME,C.CONTENT AS RECORD_STATUS_NAME ,TT.TYPE_TEMPLATE_NAME AS TYPE_TEMPLATE_NAME ,BR.BRANCH_NAME AS BRANCH_NAME ,U.TLFullName AS MAKER_FULLNAME ,AUTH.CONTENT AS AUTH_STATUS_APP_NAME -- SELECT END FROM CM_REQUEST_TEMPLATE A --LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN CM_ALLCODE C ON C.CDNAME = 'RECORD_STATUS' AND C.CDVAL = A.RECORD_STATUS LEFT JOIN CM_TYPE_TEMPLATE TT ON TT.TYPE_TEMPLATE_ID=A.TYPE_TEMPLATE_ID LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID=A.BRANCH_ID LEFT JOIN TL_USER U ON U.TLNANME=A.MAKER_ID --WORKFLOW LEFT JOIN ( SELECT G.REQ_ID ,CASE WHEN DONE=0 THEN 'U' WHEN DONE=1 THEN 'A' END AS AUT_STATUS FROM CM_APPROVE_GROUP G WHERE (DONE=1 OR PROCESS_STATUS=1) AND (@p_USER_LOGIN=APPROVE_USERNAME OR @p_USER_LOGIN=AUTHORITY_NAME) ) AG ON AG.REQ_ID=A.REQUEST_TEMPLATE_ID LEFT JOIN dbo.CM_ALLCODE AUTH ON AUTH.CDVAL = AG.AUT_STATUS AND AUTH.CDNAME = 'AUTH_STATUS_APP' LEFT JOIN dbo.CM_ALLCODE B ON B.CDVAL = A.AUTH_STATUS AND B.CDNAME = 'AUTH_STATUS_ONL' --END WORKFLOW WHERE 1=1 AND (@p_REQUEST_TEMPLATE_CODE IS NULL OR @p_REQUEST_TEMPLATE_CODE='' OR REQUEST_TEMPLATE_CODE LIKE '%' + @p_REQUEST_TEMPLATE_CODE + '%') AND (@p_REQUEST_TEMPLATE_NAME IS NULL OR @p_REQUEST_TEMPLATE_NAME='' OR REQUEST_TEMPLATE_NAME LIKE '%' + @p_REQUEST_TEMPLATE_NAME + '%') AND (@p_TYPE_TEMPLATE_ID IS NULL OR @p_TYPE_TEMPLATE_ID='' OR A.TYPE_TEMPLATE_ID LIKE '%' + @p_TYPE_TEMPLATE_ID + '%') AND (@p_NOTES IS NULL OR @p_NOTES='' OR A.NOTES = @p_NOTES) AND (@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR A.RECORD_STATUS = @p_RECORD_STATUS) AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%') AND --(@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR MAKER_ID = @p_MAKER_ID) AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR,A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS) AND (@p_CHECKER_ID IS NULL OR @p_CHECKER_ID='' OR A.CHECKER_ID = @p_CHECKER_ID) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR,A.APPROVE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (REPORT_DT=CONVERT(DATETIME,@p_REPORT_DT,103) OR @p_REPORT_DT IS NULL) AND(@p_MAKER_FULLNAME IS NULL OR @p_MAKER_FULLNAME='' OR U.TLFullName LIKE '%'+@p_MAKER_FULLNAME+'%') AND(@p_REPORT_NO IS NULL OR @p_REPORT_NO='' OR A.REPORT_NO LIKE '%'+@p_REPORT_NO+'%') AND(@p_AUTH_STATUS_APP IS NULL OR @p_AUTH_STATUS_APP='' OR AG.AUT_STATUS = @p_AUTH_STATUS_APP) --WORKFLOW AND ( (A.MAKER_ID=@p_USER_LOGIN) OR (EXISTS(SELECT * FROM CM_APPROVE_GROUP WHERE REQ_ID=A.REQUEST_TEMPLATE_ID AND (APPROVE_USERNAME=@p_USER_LOGIN OR AUTHORITY_NAME=@p_USER_LOGIN) AND( DONE=1 OR PROCESS_STATUS=1) ) ) OR (@p_USER_LOGIN IN (SELECT SHARE_USERNAME FROM CM_TEMPLATE_SHARE WHERE REQ_ID=A.REQUEST_TEMPLATE_ID) ) OR (dbo.FN_CHECK_ROLE_USER(@p_USER_LOGIN,'Administrators')=1) ) --END WORKFLOW -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[TR_PROCESS_REJECT_SEARCH]' GO CREATE PROCEDURE [dbo].[TR_PROCESS_REJECT_SEARCH] @p_REQ_ID VARCHAR(20)=NULL, @p_USER_LOGIN VARCHAR(20)=NULL, @p_TYPE VARCHAR(20)=NULL AS BEGIN SELECT PR.ID, PR.REQ_ID, PR.PROCESS_ID, PR.CHECKER_ID, PR.APPROVE_DT, PR.PROCESS_DESC, PR.NOTES, TU.TLFullName AS CHECKER_NAME FROM dbo.PL_PROCESS PR --LEFT JOIN dbo.PL_REQUEST_DOC PD ON PD.REQ_ID=PR.REQ_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=PR.CHECKER_ID WHERE PR.REQ_ID=@p_REQ_ID AND (PR.PROCESS_ID = 'REJECT' OR PR.PROCESS_ID = 'SUG' OR PR.PROCESS_ID = 'REJECT_GDV') ORDER BY PR.ID DESC END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_App]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_App] @P_TYPE_TEMPLATE_ID VARCHAR(100), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) = NULL AS DECLARE @aStatus VARCHAR(1) SELECT @aStatus = [AUTH_STATUS] FROM CM_TYPE_TEMPLATE WHERE TYPE_TEMPLATE_ID = @P_TYPE_TEMPLATE_ID IF @aStatus = 'A' BEGIN SELECT '0' as Result, '' ErrorDesc RETURN 0 END BEGIN TRANSACTION UPDATE CM_TYPE_TEMPLATE SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE TYPE_TEMPLATE_ID = @P_TYPE_TEMPLATE_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_ByCode]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_ByCode] @p_TYPE_TEMPLATE_CODE varchar(100) as BEGIN select * from CM_TYPE_TEMPLATE where TYPE_TEMPLATE_CODE = @p_TYPE_TEMPLATE_CODE END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_ById]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_ById] @p_TYPE_TEMPLATE_ID varchar(100) AS SELECT * FROM CM_TYPE_TEMPLATE WHERE TYPE_TEMPLATE_ID= @p_TYPE_TEMPLATE_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_Del]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_Del] @p_TYPE_TEMPLATE_ID varchar(100) AS DECLARE @ERRORSYS NVARCHAR(max) = '' IF ( NOT EXISTS ( SELECT * FROM CM_TYPE_TEMPLATE WHERE TYPE_TEMPLATE_ID= @p_TYPE_TEMPLATE_ID)) SET @ERRORSYS = N'Loại tờ trình không tồn tại' IF ( EXISTS ( SELECT * FROM CM_REQUEST_TEMPLATE WHERE TYPE_TEMPLATE_ID= @p_TYPE_TEMPLATE_ID)) SET @ERRORSYS = N'Loại tờ trình đang sử dụng không thể xóa' IF @ERRORSYS <> '' GOTO ABORT_BEFORE BEGIN TRANSACTION IF( (SELECT CHECKER_ID FROM CM_TYPE_TEMPLATE WHERE TYPE_TEMPLATE_ID= @p_TYPE_TEMPLATE_ID) IS NOT NULL) BEGIN UPDATE CM_REPORT_TEMPLATE SET RECORD_STATUS = '0' WHERE REPORT_TEMPLATE_ID = @p_TYPE_TEMPLATE_ID IF @@Error <> 0 GOTO ABORT END ELSE BEGIN Delete FROM CM_TYPE_TEMPLATE WHERE TYPE_TEMPLATE_ID= @p_TYPE_TEMPLATE_ID DELETE CM_SENT_TO_TEMPLATE WHERE TEMPLATE_ID=@p_TYPE_TEMPLATE_ID IF @@Error <> 0 GOTO ABORT END COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End ABORT_BEFORE: BEGIN SELECT '-1' as Result, @ERRORSYS ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_DETAIL_ByTemplateId]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_DETAIL_ByTemplateId] @TYPE_TEMPLATE_ID varchar(100) AS SELECT * FROM CM_TYPE_TEMPLATE_DETAIL WHERE TYPE_TEMPLATE_ID= @TYPE_TEMPLATE_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_DETAIL_Upd]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_DETAIL_Upd] @TYPE_TEMPLATE_ID varchar(100) = null, @TYPE_TEMPLATE_DETAIL_ID varchar(100) = null, @TYPE_TEMPLATE_DETAIL_CONTENT nvarchar(max) = null AS BEGIN BEGIN TRANSACTION UPDATE [dbo].[CM_TYPE_TEMPLATE_DETAIL] SET TYPE_TEMPLATE_DETAIL_CONTENT = @TYPE_TEMPLATE_DETAIL_CONTENT WHERE TYPE_TEMPLATE_DETAIL_ID = @TYPE_TEMPLATE_DETAIL_ID COMMIT TRANSACTION SELECT '0' as Result, @TYPE_TEMPLATE_DETAIL_ID Id, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' Id, '' ErrorDesc RETURN '-1' End END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_Ins]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_Ins] @p_TYPE_TEMPLATE_NAME nvarchar(200) = NULL, @p_TYPE_TEMPLATE_CODE nvarchar(100) = NULL, @p_CREATE_LOCATION NVARCHAR(100)=NULL, @p_HEADER NVARCHAR(max)=NULL, @p_CONTENT NVARCHAR(max)=NULL, @p_NOTES nvarchar(max) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(12) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(12) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_TYPE_TEMPLATE_XML nvarchar(MAX) = NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF( @ERRORSYS <> '' ) BEGIN SELECT '-1' as Result, '' ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN 0 END BEGIN TRANSACTION DECLARE @l_TYPE_TEMPLATE_ID VARCHAR(100), @l_SENT_TO_TEMPLATE_ID VARCHAR(20), @string varchar(200), @hdoc int EXEC SYS_CodeMasters_Gen 'CM_TYPE_TEMPLATE', @l_TYPE_TEMPLATE_ID out INSERT INTO [dbo].[CM_TYPE_TEMPLATE] ([TYPE_TEMPLATE_ID] ,[TYPE_TEMPLATE_NAME] ,[TYPE_TEMPLATE_CODE] ,[NOTES] ,[RECORD_STATUS] ,[MAKER_ID] ,[CREATE_DT] ,[AUTH_STATUS] ,[CHECKER_ID] ,[APPROVE_DT] ,[HEADER] ,[CREATE_LOCATION] ,[CONTENT]) VALUES (@l_TYPE_TEMPLATE_ID ,@p_TYPE_TEMPLATE_NAME ,@p_TYPE_TEMPLATE_CODE ,@p_NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_HEADER ,@p_CREATE_LOCATION ,@p_CONTENT) IF @@Error <> 0 GOTO ABORT IF(@p_TYPE_TEMPLATE_XML <> '' AND @p_TYPE_TEMPLATE_XML IS NOT NULL) BEGIN declare @sentToTlb table(CONTENT nvarchar(50)) insert into @sentToTlb select * FROM WSISPLIT(@p_TYPE_TEMPLATE_XML,',') END DECLARE @TOT INT = (SELECT COUNT(CONTENT) from @sentToTlb) DECLARE @ind INT EXEC SYS_CodeMasters_Gen_Mult 'CM_SENT_TO_TEMPLATE',@TOT, @l_SENT_TO_TEMPLATE_ID out, @ind out --EXEC SYS_CodeMasters_Gen 'CM_SENT_TO_TEMPLATE', @l_SENT_TO_TEMPLATE_ID out INSERT INTO [dbo].[CM_SENT_TO_TEMPLATE] ([TEMPLATE_ID] ,[SENT_TO_TEMPLATE_ID] ,[CONTENT]) SELECT @l_TYPE_TEMPLATE_ID ,('CSTM' + right('0000000000000'+convert(varchar(15),(@ind -1 + row_number() over(order by (select 1)))),10)), CONTENT FROM @sentToTlb IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @l_TYPE_TEMPLATE_ID ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_Search]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_Search] @p_TYPE_TEMPLATE_CODE varchar(15)=NULL, @p_TYPE_TEMPLATE_NAME nvarchar(200)=NULL, @p_NOTES nvarchar(1000)=NULL, @p_RECORD_STATUS varchar(1)=NULL, @p_MAKER_ID varchar(12)=NULL, @p_CREATE_DT VARCHAR(20)=NULL, @p_AUTH_STATUS varchar(50)=NULL, @p_CHECKER_ID varchar(12)=NULL, @p_APPROVE_DT VARCHAR(20)=NULL, @p_MaxResultCount int = NULL, @p_SkipCount int = NULL, @p_Sorting varchar(100) = NULL, @p_TotalCount int = NULL, @p_CREATE_LOCATION NVARCHAR(200)=NULL AS BEGIN -- PAGING -- PAGING BEGIN SELECT A.*,B.AUTH_STATUS_NAME,C.CONTENT AS RECORD_STATUS_NAME ,STUFF( (select ';' + CONTENT from CM_SENT_TO_TEMPLATE WHERE TEMPLATE_ID=A.TYPE_TEMPLATE_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') AS SENT_TO_STR -- SELECT END FROM CM_TYPE_TEMPLATE A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN CM_ALLCODE C ON C.CDNAME = 'RECORD_STATUS' AND C.CDVAL = A.RECORD_STATUS WHERE 1=1 AND (@p_TYPE_TEMPLATE_CODE IS NULL OR @p_TYPE_TEMPLATE_CODE='' OR TYPE_TEMPLATE_CODE LIKE '%' + @p_TYPE_TEMPLATE_CODE + '%') AND (@p_TYPE_TEMPLATE_NAME IS NULL OR @p_TYPE_TEMPLATE_NAME='' OR TYPE_TEMPLATE_NAME LIKE '%' + @p_TYPE_TEMPLATE_NAME + '%') AND (@p_CREATE_LOCATION IS NULL OR @p_CREATE_LOCATION='' OR CREATE_LOCATION LIKE '%' + @p_CREATE_LOCATION + '%') AND (@p_NOTES IS NULL OR @p_NOTES='' OR NOTES = @p_NOTES) AND (@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR RECORD_STATUS = @p_RECORD_STATUS) AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR MAKER_ID = @p_MAKER_ID) AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR,CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS) AND (@p_CHECKER_ID IS NULL OR @p_CHECKER_ID='' OR CHECKER_ID = @p_CHECKER_ID) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR,APPROVE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_Upd]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_Upd] @p_TYPE_TEMPLATE_ID nvarchar(100) = NULL, @p_TYPE_TEMPLATE_NAME nvarchar(200) = NULL, @p_TYPE_TEMPLATE_CODE nvarchar(200) = NULL, @p_NOTES nvarchar(max) = NULL, @p_CREATE_LOCATION NVARCHAR(100)=NULL, @p_HEADER NVARCHAR(max)=NULL, @p_CONTENT NVARCHAR(max)=NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(12) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(12) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_TYPE_TEMPLATE_XML nvarchar(MAX) = NULL AS BEGIN --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END BEGIN TRANSACTION UPDATE [dbo].[CM_TYPE_TEMPLATE] SET TYPE_TEMPLATE_ID = @p_TYPE_TEMPLATE_ID ,TYPE_TEMPLATE_NAME = @p_TYPE_TEMPLATE_NAME ,TYPE_TEMPLATE_CODE = @p_TYPE_TEMPLATE_CODE ,CREATE_LOCATION=@p_CREATE_LOCATION ,HEADER=@p_HEADER ,CONTENT=@p_CONTENT ,NOTES = @p_NOTES ,[RECORD_STATUS] = @p_RECORD_STATUS ,[MAKER_ID] = @p_MAKER_ID ,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103) ,[AUTH_STATUS] = @p_AUTH_STATUS ,[CHECKER_ID] = @p_CHECKER_ID ,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE [TYPE_TEMPLATE_ID] = @p_TYPE_TEMPLATE_ID DELETE CM_SENT_TO_TEMPLATE WHERE TEMPLATE_ID=@p_TYPE_TEMPLATE_ID IF(@p_TYPE_TEMPLATE_XML <> '' AND @p_TYPE_TEMPLATE_XML IS NOT NULL) BEGIN declare @sentToTlb table(CONTENT nvarchar(50)) insert into @sentToTlb select * FROM WSISPLIT(@p_TYPE_TEMPLATE_XML,',') END DECLARE @TOT INT = (SELECT COUNT(CONTENT) from @sentToTlb) DECLARE @ind INT,@l_SENT_TO_TEMPLATE_ID NVARCHAR(20) EXEC SYS_CodeMasters_Gen_Mult 'CM_SENT_TO_TEMPLATE',@TOT, @l_SENT_TO_TEMPLATE_ID out, @ind out INSERT INTO [dbo].[CM_SENT_TO_TEMPLATE] ([TEMPLATE_ID] ,[SENT_TO_TEMPLATE_ID] ,[CONTENT]) SELECT @p_TYPE_TEMPLATE_ID ,('CSTM' + right('0000000000000'+convert(varchar(15),(@ind -1 + row_number() over(order by (select 1)))),10)), CONTENT FROM @sentToTlb IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_TYPE_TEMPLATE_ID ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ID, '' ErrorDesc RETURN '-1' END END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_SENT_TO_ById]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_SENT_TO_ById] @p_TEMPLATE_ID varchar(100) AS SELECT CONTENT FROM CM_SENT_TO_TEMPLATE WHERE TEMPLATE_ID= @p_TEMPLATE_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_REQUEST_TEMPLATE_Ins]' GO CREATE PROCEDURE [dbo].[CM_REQUEST_TEMPLATE_Ins] @p_REQUEST_TEMPLATE_NAME nvarchar(200) = NULL, @p_REQUEST_TEMPLATE_CODE nvarchar(100) = NULL, @p_CREATE_LOCATION NVARCHAR(100)=NULL, @p_HEADER NVARCHAR(max)=NULL, @p_CONTENT NVARCHAR(max)=NULL, @p_BRANCH_ID NVARCHAR(50)=NULL, @p_REPORT_NO NVARCHAR(50)=NULL, @p_TITLE NVARCHAR(50)=NULL, @p_REPORT_DT VARCHAR(20) = NULL, @p_SCHEME_IN BIT, @p_TYPE_TEMPLATE_ID NVARCHAR(20)=NULL, @p_NOTES nvarchar(max) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(12) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(12) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_REQUEST_TEMPLATE_XML nvarchar(MAX) = NULL, @p_GROUP_APPROVE1 NVARCHAR(400)=NULL, @p_GROUP_APPROVE2 NVARCHAR(400)=NULL, @p_GROUP_APPROVE3 NVARCHAR(400)=NULL, @p_GROUP_APPROVE4 NVARCHAR(400)=NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF( @ERRORSYS <> '' ) BEGIN SELECT '-1' as Result, '' ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN 0 END IF EXISTS(SELECT * FROM CM_REQUEST_TEMPLATE WHERE REPORT_NO = @p_REPORT_NO) BEGIN SELECT '-1' Result, '' REQ_ID, N'Tờ trình số:' + @p_REPORT_NO + N' đã tồn tại trong hệ thống!"' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @l_REQUEST_TEMPLATE_ID VARCHAR(100), @l_SENT_TO_TEMPLATE_ID VARCHAR(20), @string varchar(200), @hdoc int DECLARE @DEP_BRANCH VARCHAR(20) IF(@p_REPORT_NO IS NULL OR @p_REPORT_NO='') BEGIN SET @DEP_BRANCH=(SELECT DEP_ID FROM TL_USER WHERE TLNANME=@p_MAKER_ID) IF(@DEP_BRANCH IS NULL OR @DEP_BRANCH='') BEGIN SET @DEP_BRANCH=(SELECT TLSUBBRID FROM TL_USER WHERE TLNANME=@p_MAKER_ID) END EXEC CM_REQUEST_TEMPLATE_Get_Report_No @DEP_BRANCH,@p_REPORT_NO OUT END EXEC SYS_CodeMasters_Gen 'CM_REQUEST_TEMPLATE', @l_REQUEST_TEMPLATE_ID out INSERT INTO [dbo].[CM_REQUEST_TEMPLATE] ([REQUEST_TEMPLATE_ID] ,[REQUEST_TEMPLATE_NAME] ,[NOTES] ,[RECORD_STATUS] ,[MAKER_ID] ,[CREATE_DT] ,[AUTH_STATUS] ,[CHECKER_ID] ,[APPROVE_DT] ,[CONTENT] ,[CREATE_LOCATION] ,[HEADER] ,[BRANCH_ID] ,[REPORT_NO] ,[TITLE] ,[REPORT_DT] ,[SCHEME] ,TYPE_TEMPLATE_ID) VALUES (@l_REQUEST_TEMPLATE_ID ,@p_REQUEST_TEMPLATE_NAME ,@p_NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_CONTENT ,@p_CREATE_LOCATION ,@p_HEADER ,@p_BRANCH_ID ,@p_REPORT_NO ,@p_TITLE ,CONVERT(DATETIME, @p_REPORT_DT, 103) ,@p_SCHEME_IN ,@p_TYPE_TEMPLATE_ID) IF @@Error <> 0 GOTO ABORT --insert sent to IF(@p_REQUEST_TEMPLATE_XML <> '' AND @p_REQUEST_TEMPLATE_XML IS NOT NULL) BEGIN declare @sentToTlb table(CONTENT nvarchar(50)) insert into @sentToTlb select * FROM WSISPLIT(@p_REQUEST_TEMPLATE_XML,',') END DECLARE @TOT INT = (SELECT COUNT(CONTENT) from @sentToTlb) DECLARE @ind INT EXEC SYS_CodeMasters_Gen_Mult 'CM_SENT_TO_TEMPLATE',@TOT, @l_SENT_TO_TEMPLATE_ID out, @ind out INSERT INTO [dbo].[CM_SENT_TO_TEMPLATE] ([TEMPLATE_ID] ,[SENT_TO_TEMPLATE_ID] ,[CONTENT]) SELECT @l_REQUEST_TEMPLATE_ID ,('CSTM' + right('0000000000000'+convert(varchar(15),(@ind -1 + row_number() over(order by (select 1)))),10)), CONTENT FROM @sentToTlb IF @@Error <> 0 GOTO ABORT DECLARE @DONE_INS_APPROVE_GROUP BIT=1 exec CM_APPROVE_GROUP_Ins @l_REQUEST_TEMPLATE_ID,@p_GROUP_APPROVE1,@p_GROUP_APPROVE2,@p_GROUP_APPROVE3,@p_GROUP_APPROVE4,@DONE_INS_APPROVE_GROUP OUT IF @DONE_INS_APPROVE_GROUP <> 1 GOTO ABORT_CHILD -- COMMIT TRANSACTION SELECT '0' as Result, @l_REQUEST_TEMPLATE_ID ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ID, '' ErrorDesc RETURN '-1' End ABORT_CHILD: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ID, N'THÊM NHÓM DUYỆT THẤT BẠI' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_TYPE_TEMPLATE_test]' GO CREATE PROCEDURE [dbo].[CM_TYPE_TEMPLATE_test] AS BEGIN SELECT '0' AS reportNo,'0' AS SentTo select '1231' as createLocation END GO IF @@ERROR <> 0 SET NOEXEC ON GO COMMIT TRANSACTION GO IF @@ERROR <> 0 SET NOEXEC ON GO -- This statement writes to the SQL Server Log so SQL Monitor can show this deployment. IF HAS_PERMS_BY_NAME(N'sys.xp_logevent', N'OBJECT', N'EXECUTE') = 1 BEGIN DECLARE @databaseName AS nvarchar(2048), @eventMessage AS nvarchar(2048) SET @databaseName = REPLACE(REPLACE(DB_NAME(), N'\', N'\\'), N'"', N'\"') SET @eventMessage = N'Redgate SQL Compare: { "deployment": { "description": "Redgate SQL Compare deployed to ' + @databaseName + N'", "database": "' + @databaseName + N'" }}' EXECUTE sys.xp_logevent 55000, @eventMessage END GO DECLARE @Success AS BIT SET @Success = 1 SET NOEXEC OFF IF (@Success = 1) PRINT 'The database update succeeded' ELSE BEGIN IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION PRINT 'The database update failed' END GO