ALTER PROCEDURE dbo.TR_REQ_ADVANCE_PAYMENT_CHILD_ACTION @p_REQ_PAY_ID varchar(50)= NULL, @p_TK_TGD_NOTES nvarchar(2000)= NULL, @p_TK_HDQT_NOTES nvarchar(2000)= NULL, @p_OTHER_NOTES nvarchar(50)= NULL, @p_CHECKER_ID VARCHAR(15) = NULL, @p_TYPE_ACTION VARCHAR(20) = NULL, @p_IS_AUTHORITY VARCHAR(15) = NULL AS BEGIN TRANSACTION IF(@p_IS_AUTHORITY <> 'Y') BEGIN SET @p_IS_AUTHORITY = 'N' END DECLARE @IS_AUTH_HDQT_NOTES NVARCHAR(6), @IS_AUTHORITY_HDQT VARCHAR(1),@MAKER_ID_OLD VARCHAR(10),@BRANCH_ID VARCHAR(20),@DEP_ID VARCHAR (20) SET @IS_AUTHORITY_HDQT='N' --IF(RIGHT(@p_OTHER_NOTES,6)=N'TMHĐQT') --BEGIN -- SET @IS_AUTH_HDQT_NOTES=N'TMHĐQT' -- SET @IS_AUTHORITY_HDQT ='Y' -- SET @p_OTHER_NOTES = LEFT(@p_OTHER_NOTES, LEN(@p_OTHER_NOTES)-6) --END --IF(RIGHT(@p_OTHER_NOTES,7)=N'KTMHĐQT') --BEGIN -- SET @IS_AUTH_HDQT_NOTES=N'' -- SET @IS_AUTHORITY_HDQT ='N' -- SET @p_OTHER_NOTES = LEFT(@p_OTHER_NOTES, LEN(@p_OTHER_NOTES)-7) --END IF(@p_OTHER_NOTES = '' OR @p_OTHER_NOTES IS NULL) BEGIN SET @p_OTHER_NOTES = '' END IF(@p_TYPE_ACTION='UPDATE') BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID ='2' AND TYPE_JOB = 'XL' AND STATUS_JOB = 'P')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Cập nhật tham vấn thất bại! Phiếu đề nghị tạm ứng đã được bạn cập nhật trước đó' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKTGD' AND STATUS ='C')) BEGIN IF(@p_TK_TGD_NOTES IS NULL OR @p_TK_TGD_NOTES ='') BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Vui lòng nhập tham vấn Thư Ký Văn Phòng Tổng Giám Đốc' ErrorDesc RETURN '4' END -- UPDATE DU LIEU UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_TGD_NOTES = @p_TK_TGD_NOTES, TK_HDQT_NOTES =@p_TK_HDQT_NOTES, OTHER_NOTES =@IS_AUTH_HDQT_NOTES, TK_TGD_XL_TLNAME =@p_CHECKER_ID, TK_TGD_XL_DT = GETDATE(), IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_PAY_ID =@p_REQ_PAY_ID END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKHDQT' AND STATUS ='C')) BEGIN IF(@p_TK_HDQT_NOTES IS NULL OR @p_TK_HDQT_NOTES ='') BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Vui lòng nhập tham vấn Thư Ký Văn Phòng Hội Đồng Quản Trị' ErrorDesc RETURN '4' END -- UPDATE DU LIEU UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_TGD_NOTES = @p_TK_TGD_NOTES, TK_HDQT_NOTES =@p_TK_HDQT_NOTES, OTHER_NOTES =@IS_AUTH_HDQT_NOTES, TK_HDQT_XL_TLNAME =@p_CHECKER_ID, TK_HDQT_XL_DT = GETDATE(), IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_PAY_ID =@p_REQ_PAY_ID END INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@p_CHECKER_ID,N'Nhân viên xử lý phiếu',GETDATE(),N'Nhập thông tin tham vấn thành công') --COMMIT TRANSACTION --SELECT '2' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Cập nhật tham vấn thành công' ErrorDesc --RETURN '2' END ELSE IF(@p_TYPE_ACTION='APPROVE') BEGIN --doanptt: THU KY DA DIEU PHOI CHO NHAN VIEN XU LY THI KHONG DUOC DUYET NUA IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS_JOB <> 'C' AND TLNAME =@p_CHECKER_ID AND TYPE_JOB IN ('KS'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Duyệt tham vấn thất bại! Phiếu đang được điều phối đến nhân viên xử lý' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKTGD' AND STATUS ='C')) BEGIN IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ISNULL(TK_TGD_NOTES,'')='')) BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_TGD_NOTES =@p_OTHER_NOTES, TK_TGD_APPR_TLNAME =@p_CHECKER_ID, TK_TGD_APPR_DT = GETDATE(), IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_PAY_ID =@p_REQ_PAY_ID END UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_TGD_APPR_TLNAME =@p_CHECKER_ID, TK_TGD_APPR_DT = GETDATE(), IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_PAY_ID =@p_REQ_PAY_ID UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKTGD' UPDATE PL_REQUEST_PROCESS SET STATUS ='C' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TGD' UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS_JOB ='C' IF(ISNULL(@p_OTHER_NOTES, '') <> '') BEGIN INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT,PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@p_CHECKER_ID,N'Văn phòng TGĐ phê duyệt',GETDATE(),N'Văn phòng TGĐ: '+ @p_OTHER_NOTES) END ELSE BEGIN INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT,PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@p_CHECKER_ID,N'Văn phòng TGĐ phê duyệt',GETDATE(),N'Văn phòng TGĐ phê duyệt tham vấn') END --COMMIT TRANSACTION --SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phê duyệt tham vấn thành công' ErrorDesc --RETURN '0' DECLARE @PARENT_PROCESS_ID_TGD INT SET @PARENT_PROCESS_ID_TGD = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKTGD') IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TGD')) BEGIN INSERT INTO PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES, IS_HAS_CHILD) VALUES (@p_REQ_PAY_ID,@PARENT_PROCESS_ID_TGD+1,'C','TGD','DV0001',NULL,NULL,@PARENT_PROCESS_ID_TGD, 'Y','',NULL,N'Chờ Tổng Giám Đốc Xác Nhận',NULL) END END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKHDQT' AND STATUS ='C')) BEGIN IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ISNULL(TK_HDQT_NOTES,'')='')) BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_HDQT_NOTES =@p_OTHER_NOTES, OTHER_NOTES =@IS_AUTH_HDQT_NOTES, TK_HDQT_APPR_TLNAME =@p_CHECKER_ID, TK_HDQT_APPR_DT = GETDATE(), IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_PAY_ID =@p_REQ_PAY_ID END UPDATE TR_REQ_ADVANCE_PAYMENT SET OTHER_NOTES =@IS_AUTH_HDQT_NOTES, TK_HDQT_APPR_TLNAME =@p_CHECKER_ID, TK_HDQT_APPR_DT = GETDATE(), IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_PAY_ID =@p_REQ_PAY_ID UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKHDQT' UPDATE PL_REQUEST_PROCESS SET STATUS ='C' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='HDQT' UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS_JOB ='C' IF(ISNULL(@p_OTHER_NOTES, '') <> '') BEGIN INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@p_CHECKER_ID,N' Văn phòng HĐQT phê duyệt',GETDATE(),N'Văn phòng HDQT: '+@p_OTHER_NOTES) END ELSE BEGIN INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@p_CHECKER_ID,N' Văn phòng HĐQT phê duyệt',GETDATE(),N'Văn phòng HDQT phê duyệt tham vấn') END DECLARE @PARENT_PROCESS_ID_HDQT INT SET @PARENT_PROCESS_ID_HDQT = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKHDQT') IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='HDQT')) BEGIN INSERT INTO PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES, IS_HAS_CHILD) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5),@PARENT_PROCESS_ID_HDQT+1),'C','HDQT','DV0001',NULL,NULL,@PARENT_PROCESS_ID_HDQT, 'Y','',NULL,N'Chờ Chủ Tịch HĐQT Xác Nhận',NULL) END --COMMIT TRANSACTION --SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phê duyệt tham vấn thành công' ErrorDesc --RETURN '0' END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKTGD' AND STATUS ='P')) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'TKTGD đã phê duyệt tham vấn thành công trước đó' ErrorDesc RETURN '4' END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKHDQT' AND STATUS ='P')) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'TKHDQT đã phê duyệt tham vấn thành công trước đó' ErrorDesc RETURN '4' END END ELSE IF(@p_TYPE_ACTION='SEND') BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKTGD' AND STATUS ='C')) BEGIN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME =@p_CHECKER_ID AND TYPE_JOB ='XL' UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID =@p_REQ_PAY_ID AND TYPE_JOB IN ('KS','TP') -- UPDATE DU LIEU UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_TGD_NOTES = @p_TK_TGD_NOTES, TK_HDQT_NOTES =@p_TK_HDQT_NOTES, OTHER_NOTES =@IS_AUTH_HDQT_NOTES, TK_TGD_XL_TLNAME =@p_CHECKER_ID, TK_TGD_XL_DT = GETDATE(), IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_PAY_ID =@p_REQ_PAY_ID END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='TKHDQT' AND STATUS ='C')) BEGIN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME =@p_CHECKER_ID AND TYPE_JOB ='XL' UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID =@p_REQ_PAY_ID AND TYPE_JOB IN ('KS','TP') -- UPDATE DU LIEU UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_TGD_NOTES = @p_TK_TGD_NOTES, TK_HDQT_NOTES =@p_TK_HDQT_NOTES, OTHER_NOTES =@IS_AUTH_HDQT_NOTES, TK_HDQT_XL_TLNAME =@p_CHECKER_ID, TK_HDQT_XL_DT = GETDATE(), IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_PAY_ID =@p_REQ_PAY_ID END INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT,PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@p_CHECKER_ID,N'Nhân viên xử lý',GETDATE(),N'Gửi phê duyệt thông tin tham vấn thành công') END ELSE IF(@p_TYPE_ACTION='CONFIG') BEGIN DECLARE @REQ_ID VARCHAR(15) IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID) AND NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'Giao dịch không tồn tại trong hệ thống' ErrorDesc RETURN '4' END PRINT @p_REQ_PAY_ID IF(CONVERT(DATE,@p_TK_HDQT_NOTES,103)) >=CONVERT(DATE,GETDATE(),103) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'Ngày lùi phải nhỏ hơn ngày hiện tại' ErrorDesc RETURN '4' END IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID)) BEGIN SET @REQ_ID =(SELECT TOP 1 REQ_ID FROM PL_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID) IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID AND PROCESS_ID ='APPROVE')) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'Tờ trình chủ trương chưa được duyệt' ErrorDesc RETURN '4' END UPDATE PL_REQUEST_PROCESS SET APPROVE_DT =CONVERT(DATE, @p_TK_HDQT_NOTES, 103) WHERE REQ_ID =@REQ_ID UPDATE PL_REQUEST_DOC SET APPROVE_DT =CONVERT(DATE, @p_TK_HDQT_NOTES, 103), EFFEC_DT =CONVERT(DATE, @p_TK_HDQT_NOTES, 103), REQ_DT =CONVERT(DATE, @p_TK_HDQT_NOTES, 103), IS_BACKDAY =1 WHERE REQ_ID =@REQ_ID END ELSE IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID)) BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID AND PROCESS_ID ='APPROVE')) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu yêu cầu mua sắm chưa được duyệt' ErrorDesc RETURN '4' END SET @REQ_ID =(SELECT TOP 1 REQ_ID FROM TR_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID) UPDATE PL_PROCESS SET APPROVE_DT =CONVERT(DATE, @p_TK_HDQT_NOTES, 103) WHERE REQ_ID =@REQ_ID UPDATE TR_REQUEST_DOC SET APPROVE_DT =CONVERT(DATE, @p_TK_HDQT_NOTES, 103), REQ_DT = CONVERT(DATE, @p_TK_HDQT_NOTES, 103), CREATE_DT = CONVERT(DATE, @p_TK_HDQT_NOTES, 103) WHERE REQ_ID =@REQ_ID END INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@REQ_ID,@p_CHECKER_ID,N'Cập nhật thông tin lùi ngày',GETDATE(),@p_OTHER_NOTES) END ELSE IF(@p_TYPE_ACTION='DRAFT') BEGIN IF(@p_CHECKER_ID <> (SELECT MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_PAY_ID)) ------- LUCTV 25052023_SECRETKEY -CHỈ CÓ NGƯỜI TẠO PHIẾU MỚI ĐƯỢC PHÉP ĐÓNG PHIẾU BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'Đóng phiếu thất bại! Chỉ có người tạo mới được phép đóng phiếu' ErrorDesc RETURN '4' END IF (NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'Giao dịch không tồn tại trong hệ thống' ErrorDesc RETURN '4' END ---- LUCTV 24052023_SECRETKEY - NẾU PYCMS ĐANG NẰM TRONG 1 PĐN THANH TOÁN MÀ PĐN THANH TOÁN NÀY CHƯA HOÀN TẤT THÌ KHÔNG CHO ĐÓNG IF (EXISTS(SELECT A.* FROM TR_REQ_ADVANCE_DT A WHERE 1=1 AND (A.REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE REQ_DOC_ID =@p_REQ_PAY_ID) OR A.REF_ID IN (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE REQ_DOC_ID =@p_REQ_PAY_ID)) AND A.REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','R')))) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'PYCMS này đang được sử dụng trong các PĐN thanh toán. Vui lòng rà soát và hủy toàn bộ các PĐN thanh toán trước khi đóng PYCMS' ErrorDesc RETURN '4' END ---- END IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID)) BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID AND PROCESS_ID ='APPROVE')) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'PYCMS này chưa được hoàn tất. Bạn chỉ được phép đưa phiếu về lưu nháp trong trường hợp phiếu đã được hoàn tất nhưng sai sót hồ sơ và đưa về lưu nháp để người tạo hủy phiếu' ErrorDesc RETURN '4' END SET @REQ_ID =(SELECT TOP 1 REQ_ID FROM TR_REQUEST_DOC WHERE REQ_CODE =@p_REQ_PAY_ID) UPDATE TR_REQUEST_DOC SET AUTH_STATUS='E' WHERE REQ_ID =@REQ_ID END INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@REQ_ID,@p_CHECKER_ID,N'Cập nhật tình trạng phiếu lưu nháp',GETDATE(),@p_OTHER_NOTES) END ELSE IF(@p_TYPE_ACTION='CLOSE_PUR') BEGIN IF(@p_CHECKER_ID <> (SELECT MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_PAY_ID)) ------- LUCTV 25052023_SECRETKEY -CHỈ CÓ NGƯỜI TẠO PHIẾU MỚI ĐƯỢC PHÉP ĐÓNG PHIẾU BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'Đóng phiếu thất bại! Chỉ có người tạo mới được phép đóng phiếu' ErrorDesc RETURN '4' END IF (NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'Giao dịch không tồn tại trong hệ thống' ErrorDesc RETURN '4' END ---- LUCTV 24052023_SECRETKEY - NẾU PYCMS ĐANG NẰM TRONG 1 PĐN THANH TOÁN MÀ PĐN THANH TOÁN NÀY CHƯA HOÀN TẤT THÌ KHÔNG CHO ĐÓNG IF (EXISTS(SELECT A.* FROM TR_REQ_ADVANCE_DT A WHERE 1=1 AND (A.REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE REQ_DOC_ID =@p_REQ_PAY_ID) OR A.REF_ID IN (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE REQ_DOC_ID =@p_REQ_PAY_ID)) AND A.REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','R')))) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'PYCMS này đang được sử dụng trong các phiếu đề nghị thanh toán / tạm ứng. Vui lòng rà soát và hủy toàn bộ các PĐN thanh toán trước khi đóng PYCMS' ErrorDesc RETURN '4' END ---- END IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_PAY_ID)) BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_PAY_ID AND PROCESS_ID ='APPROVE')) BEGIN ROLLBACK TRANSACTION SELECT '4' as Result, '' REQ_PAY_ID, N'PYCMS này chưa được hoàn tất. Bạn chỉ được phép đóng phiếu khi đã hoàn tất' ErrorDesc RETURN '4' END DECLARE @REQ_CODE NVARCHAR(50) ='' SET @REQ_CODE = (SELECT TOP(1) REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_PAY_ID) DELETE FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_PAY_ID DELETE FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID = @p_REQ_PAY_ID DELETE FROM TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID = @p_REQ_PAY_ID END INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@p_CHECKER_ID,N'Người tạo đóng PYCMS',GETDATE(),@REQ_CODE) END -- To trinh chu truong ELSE IF(@p_TYPE_ACTION = 'TRANSFER_PL') BEGIN IF EXISTS (SELECT * FROM PL_REQUEST_DOC UO WHERE UO.REQ_ID = @p_REQ_PAY_ID) BEGIN IF(EXISTS (SELECT * FROM TL_USER tu WHERE tu.TLNANME = @p_CHECKER_ID)) BEGIN SET @MAKER_ID_OLD = (SELECT G.MAKER_ID FROM PL_REQUEST_DOC G WHERE G.REQ_ID = @p_REQ_PAY_ID) UPDATE PL_REQUEST_DOC SET MAKER_ID = @p_CHECKER_ID WHERE REQ_ID = @p_REQ_PAY_ID -- UPDATE PL_REQUEST_DOC_DT SET MAKER_ID = @p_CHECKER_ID WHERE REQ_ID = @p_REQ_PAY_ID -- UPDATE PL_REQUEST_DOC_DT_HIST set MAKER_ID = @p_CHECKER_ID WHERE REQ_ID = @p_REQ_PAY_ID INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@MAKER_ID_OLD,N'Người tạo bàn giao phiếu tờ trình chủ trương cho user' + @p_CHECKER_ID,GETDATE(),@REQ_CODE) END END END -- PYC mua sam ELSE IF(@p_TYPE_ACTION = 'REQUEST_DOC') BEGIN IF EXISTS (SELECT * FROM TR_REQUEST_DOC UO WHERE UO.REQ_ID = @p_REQ_PAY_ID) BEGIN IF(EXISTS (SELECT * FROM TL_USER tu WHERE tu.TLNANME = @p_CHECKER_ID)) BEGIN SET @MAKER_ID_OLD = (SELECT H.MAKER_ID FROM TR_REQUEST_DOC H WHERE H.REQ_ID = @p_REQ_PAY_ID) UPDATE TR_REQUEST_DOC SET MAKER_ID = @p_CHECKER_ID, USER_REQUEST = @p_CHECKER_ID WHERE REQ_ID = @p_REQ_PAY_ID UPDATE TR_REQUEST_DOC_DT SET MAKER_ID = @p_CHECKER_ID WHERE REQ_DOC_ID = @p_REQ_PAY_ID UPDATE TR_REQUEST_DOC_PL_DT SET MAKER_ID = @p_CHECKER_ID WHERE REQ_DOC_ID = @p_REQ_PAY_ID INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@MAKER_ID_OLD,N'Người tạo bàn giao phiếu yêu cầu mua sắm cho user ' + @p_CHECKER_ID,GETDATE(),@REQ_CODE) END END END -- PYC xe ELSE IF (@p_TYPE_ACTION = 'REQUEST_CAR') BEGIN IF(EXISTS (SELECT * FROM TR_REQUEST_CAR U WHERE U.REQ_ID = @p_REQ_PAY_ID)) BEGIN SET @MAKER_ID_OLD = (SELECT P.MAKER_ID FROM TR_REQUEST_CAR P WHERE P.REQ_ID = @p_REQ_PAY_ID) UPDATE TR_REQUEST_CAR SET MAKER_ID = @p_CHECKER_ID WHERE REQ_ID = @p_REQ_PAY_ID UPDATE PL_REQUEST_PROCESS SET ROLE_USER = @p_CHECKER_ID WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID = 'MAKER_APP' INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@MAKER_ID_OLD,N'Người tạo bàn giao phiếu yêu cầu xe cho user ' + @p_CHECKER_ID,GETDATE(),@REQ_CODE) END END -- PYC cong tac ELSE IF (@p_TYPE_ACTION = 'REQUEST_JOB') BEGIN IF(EXISTS (SELECT * FROM TR_REQUEST_JOB_FORM T WHERE T.REQ_ID = @p_REQ_PAY_ID)) BEGIN SET @MAKER_ID_OLD = (SELECT R.MAKER_ID FROM TR_REQUEST_JOB_FORM R WHERE R.REQ_ID = @p_REQ_PAY_ID) UPDATE TR_REQUEST_JOB_FORM SET MAKER_ID = @p_CHECKER_ID WHERE REQ_ID = @p_REQ_PAY_ID UPDATE PL_REQUEST_PROCESS SET ROLE_USER = @p_CHECKER_ID WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID = 'MAKER_CONF' UPDATE PL_REQUEST_PROCESS SET ROLE_USER = @p_CHECKER_ID WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID = 'MAKER_APP' INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@MAKER_ID_OLD,N'Người tạo bàn giao phiếu yêu cầu công tác cho user ' + @p_CHECKER_ID,GETDATE(),@REQ_CODE) END END -- Phieu de nghi thanh toan ELSE IF (@p_TYPE_ACTION = 'REQ_PAYMENT') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT T WHERE T.REQ_PAY_ID = @p_REQ_PAY_ID)) BEGIN SET @MAKER_ID_OLD = (SELECT R.MAKER_ID FROM TR_REQ_PAYMENT R WHERE R.REQ_PAY_ID = @p_REQ_PAY_ID) SET @BRANCH_ID = (SELECT tu.TLSUBBRID FROM TL_USER tu WHERE tu.TLNANME = @p_CHECKER_ID) SET @DEP_ID = (SELECT tu.DEP_ID FROM TL_USER tu WHERE TU.TLNANME = @p_CHECKER_ID) UPDATE TR_REQ_PAYMENT SET MAKER_ID = @p_CHECKER_ID, DEP_ID = @DEP_ID, BRANCH_ID = @BRANCH_ID, BRANCH_CREATE = @BRANCH_ID WHERE REQ_PAY_ID = @p_REQ_PAY_ID INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@MAKER_ID_OLD,N'Người tạo bàn phiếu đề nghị thanh toán cho user ' + @p_CHECKER_ID,GETDATE(),@REQ_CODE) END END -- Phieu de nghi tam ung ELSE IF (@p_TYPE_ACTION = 'REQ_TEMP_PAYMENT') BEGIN IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT E WHERE E.REQ_PAY_ID = @p_REQ_PAY_ID)) BEGIN SET @MAKER_ID_OLD = (SELECT R.MAKER_ID FROM TR_REQ_ADVANCE_PAYMENT R WHERE R.REQ_PAY_ID = @p_REQ_PAY_ID) SET @BRANCH_ID = (SELECT tu.TLSUBBRID FROM TL_USER tu WHERE tu.TLNANME = @p_CHECKER_ID) SET @DEP_ID = (SELECT tu.DEP_ID FROM TL_USER tu WHERE TU.TLNANME = @p_CHECKER_ID) UPDATE TR_REQ_ADVANCE_PAYMENT SET MAKER_ID = @p_CHECKER_ID, DEP_ID = @DEP_ID, BRANCH_ID = @BRANCH_ID, BRANCH_CREATE = @BRANCH_ID WHERE REQ_PAY_ID = @p_REQ_PAY_ID INSERT INTO PL_PROCESS (REQ_ID,CHECKER_ID,NOTES, APPROVE_DT, PROCESS_DESC) VALUES (@p_REQ_PAY_ID,@MAKER_ID_OLD,N'Người tạo bàn giao phiếu đề nghị tạm ứng cho user ' + @p_CHECKER_ID,GETDATE(),@REQ_CODE) END END ELSE IF(@p_TYPE_ACTION = 'DELAYDATE100-500') BEGIN IF(EXISTS( SELECT * FROM TR_REQ_DOC_XETGIA_100M_500M pac WHERE PAC.REQ_DOC_ID = @p_REQ_PAY_ID)) BEGIN UPDATE TR_REQ_DOC_XETGIA_100M_500M SET CREATE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_DOC_ID =@p_REQ_PAY_ID UPDATE PL_REQUEST_PROCESS SET APPROVE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_ID = @p_REQ_PAY_ID UPDATE PL_PROCESS SET APPROVE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_ID = @p_REQ_PAY_ID END END ELSE IF(@p_TYPE_ACTION = 'DELAYDATEON500') BEGIN IF(EXISTS( SELECT * FROM TR_REQ_DOC_XETGIA_TREN_500M pac WHERE PAC.REQ_DOC_ID = @p_REQ_PAY_ID)) BEGIN UPDATE TR_REQ_DOC_XETGIA_TREN_500M SET CREATE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_DOC_ID =@p_REQ_PAY_ID UPDATE PL_REQUEST_PROCESS SET APPROVE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_ID = @p_REQ_PAY_ID UPDATE PL_PROCESS SET APPROVE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_ID = @p_REQ_PAY_ID END END ELSE IF(@p_TYPE_ACTION = 'DELAYDATE10-100') BEGIN IF(EXISTS( SELECT * FROM TR_REQ_DOC_XETGIA_DUOI_100M pac WHERE PAC.REQ_DOC_ID = @p_REQ_PAY_ID)) BEGIN UPDATE TR_REQ_DOC_XETGIA_DUOI_100M SET CREATE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103), FR_DATE = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_DOC_ID =@p_REQ_PAY_ID UPDATE PL_REQUEST_PROCESS SET APPROVE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_ID = @p_REQ_PAY_ID UPDATE PL_PROCESS SET APPROVE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_ID = @p_REQ_PAY_ID END END ELSE IF(@p_TYPE_ACTION = 'DELAYDATE_APPOINT') IF(EXISTS(SELECT * FROM PL_APPOINT_CONTRACTOR pac WHERE PAC.REQ_ID = @p_REQ_PAY_ID)) BEGIN UPDATE PL_APPOINT_CONTRACTOR SET REQ_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103), CREATE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_ID =@p_REQ_PAY_ID DECLARE @REQ_ID_PYCMS VARCHAR(15) = (SELECT TOP 1 pac.TR_REQUEST_DOC_ID FROM PL_APPOINT_CONTRACTOR pac WHERE PAC.REQ_ID = @p_REQ_PAY_ID) UPDATE PL_REQUEST_PROCESS SET APPROVE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_ID = @REQ_ID_PYCMS UPDATE PL_PROCESS SET APPROVE_DT = CONVERT(DATETIME,@P_tK_HDQT_NOTES,103) WHERE REQ_ID = @REQ_ID_PYCMS END COMMIT TRANSACTION IF(@p_TYPE_ACTION='SEND') BEGIN SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Gửi phê duyệt nội dung tham vấn giao dịch thành công' ErrorDesc RETURN '0' END ELSE IF(@p_TYPE_ACTION='APPROVE') BEGIN SELECT '2' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phê duyệt tham vấn thành công' ErrorDesc RETURN '2' END ELSE IF(@p_TYPE_ACTION='CONFIG') BEGIN SELECT '0' as Result, '' REQ_PAY_ID, N'Lùi ngày giao dịch thành công' ErrorDesc RETURN '0' END ELSE IF(@p_TYPE_ACTION='UPDATE') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Cập nhật nội dung tham vấn thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION='DRAFT') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Cập nhật tình trạng phiếu lưu nháp thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION='CLOSE_PUR') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đóng phiếu yêu cầu mua sắm thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION = 'TRANSFER_PL') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Bàn giao thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION = 'REQUEST_DOC') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Bàn giao thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION = 'REQUEST_CAR') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Bàn giao thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION = 'REQUEST_JOB') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Bàn giao thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION = 'REQ_PAYMENT') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Bàn giao thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION = 'REQ_TEMP_PAYMENT') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Bàn giao thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION = 'DELAYDATEON500') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Lùi ngày thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION = 'DELAYDATE100-500') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Lùi ngày thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION = 'DELAYDATE10-100') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Lùi ngày thành công' ErrorDesc RETURN '1' END ELSE IF(@p_TYPE_ACTION = 'DELAYDATE_APPOINT') BEGIN SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Lùi ngày thành công' ErrorDesc RETURN '1' END ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Tham vấn thất bại: ' + ERROR_MESSAGE() ErrorDesc RETURN '-1' END