ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Upd] @p_REQ_PAY_ID varchar(15)= NULL, @p_REQ_PAY_CODE varchar(50) = NULL, @p_REQ_DT VARCHAR(20)= NULL, @p_BRANCH_ID varchar(15) = NULL, @p_DEP_ID varchar(15) = NULL, @p_REQ_REASON nvarchar(MAX) = NULL, @p_REQ_TYPE varchar(15) = NULL, @P_REQ_ENTRIES nvarchar(MAX) = NULL, @p_REQ_DESCRIPTION nvarchar(MAX) = NULL, @p_REF_ID varchar(15) = NULL, @p_RECEIVER_PO nvarchar(250) = NULL, @p_RECEIVER_DEBIT nvarchar(250) = NULL, @p_REQ_PAY_TYPE varchar(15) = NULL, @p_REQ_TYPE_CURRENCY nvarchar(50) = NULL, @p_REQ_AMT decimal(18, 0) = NULL, @p_REQ_TEMP_AMT decimal(18, 0) = NULL, @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT varchar(25) = NULL, @p_EDITOR_ID varchar(15) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT varchar(25) = NULL, @p_CREATE_DT_KT varchar(25) = NULL, @p_MAKER_ID_KT varchar(15) = NULL, @p_AUTH_STATUS_KT varchar(1) = NULL, @p_CHECKER_ID_KT varchar(1) = NULL, @p_APPROVE_DT_KT varchar(25)= null, @p_CONFIRM_NOTES nvarchar(500) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_NOTES varchar(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_TRANSFER_MAKER nvarchar(50) = NULL, @p_TRANSFER_DT varchar(25) = NULL, @p_TRASFER_USER_RECIVE varchar(15) = NULL, @p_PROCESS varchar(15) = NULL, @p_PAY_PHASE VARCHAR(15)= NULL, @p_DVDM_ID VARCHAR(15) = NULL, @p_TYPE_FUNCTION VARCHAR(15) = NULL, @p_RATE DECIMAL(18,0)= 0, @p_XMP_TEMP_DATA_ENTRIES XML = NULL, --doanptt 17/02/2022 @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS XML = NULL, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC XML = NULL AS -- BEGIN VALIDATE UPDATE IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_MAKER_ID_KT AND TYPE_JOB = 'XL')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị tạm ứng này. Phiếu đề nghị tạm ứng đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc RETURN '-1' END IF ((SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R') BEGIN SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc RETURN '-1' END IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A')) BEGIN SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang được ở cấp độ đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được phê duyệt kế toán thành công trước đó!' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc RETURN '-1' END -- END VALIDATE UPDATE 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(1000),@GL_CODE VARCHAR(100),@GL_CODE_ACCNO VARCHAR(20),@BRANCH_CODE VARCHAR(15), @DEP_CODE VARCHAR(15) DECLARE @INDEX_REC INT = 0 BEGIN TRANSACTION -- KHAI BAO CAC BUOC DUYET- XAC NHAN DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT AND TYPE_JOB ='XL') SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1 ---- --IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND MAKER_ID_KT IS NULL)) -- INSERT HACH TOAN IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL) BEGIN -- khai báo cursor DECLARE @hdocEntries INT; EXEC sp_xml_preparedocument @hdocEntries OUTPUT, @p_XMP_TEMP_DATA_ENTRIES; DECLARE XmlDataEntries CURSOR FOR SELECT * FROM OPENXML(@hdocEntries, '/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)) OPEN XmlDataEntries; DECLARE @INDEX INT = 0 UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT,CHECKER_ID_KT=NULL,APPROVE_DT_KT = NULL, CONFIRM_NOTES=@p_CONFIRM_NOTES WHERE REQ_PAY_ID =@p_REQ_PAY_ID -- DOANPTT 291222: THEM LOG KPI UPDATE TR_REQ_KPI SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTES, REQ_REASON = @p_REQ_REASON WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID IF @@Error <> 0 GOTO ABORT DECLARE @DR_CR_NAME NVARCHAR(50) 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 WHILE @@fetch_status=0 BEGIN IF(@EXC_RATE IS NULL) BEGIN SET @EXC_RATE = 1 END SET @INDEX = @INDEX +1 IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '') BEGIN SET @GL_CODE = RIGHT(@GL_CODE,9) END-- LUCTV BO SUNG 20211117 SET @ACCT_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME)) -- NEU TEN TAI KHOAN RONG, THI LAY TEN TU CHECK CASA IF(ISNULL(@GL_CODE, '') <> '') BEGIN 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_TYPE_FUNCTION ='SEND') 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(@GL_CODE IS NULL OR @GL_CODE ='') BEGIN IF (LEN(@ACCT) >9 AND ((SELECT TOP 1 ISNULL(TK_GL,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) ='' OR (SELECT TOP 1 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 PRINT @BRANCH_ID IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT TOP 1 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 /* -- DOANPTT 11/11/22: BỔ SUNG TRƯỜNG HỢP BỊ KHUẤT CHÂN NỢ HOẶC CHÂN CÓ IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') >= 1 AND (SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') = 0) BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Nợ - 0 Có)' ErrorDesc RETURN '-1' END IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') = 0 AND (SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') >= 1) BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - 0 Nợ)' ErrorDesc RETURN '-1' END */ END /*IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND NOT EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID AND 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' 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*/ DECLARE @p_ET_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT; IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR, DR_CR_NAME,ACCT,ACCT_NAME,AMT,CURRENCY,EXC_RATE,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT, TRN_TYPE) VALUES (@p_ET_ID,@p_REQ_PAY_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT ,'VND', 1, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT, 'ADVANCE') -- 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) VALUES (@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin') 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 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 END; CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; -- UPDATE GL THEO RULE ----UPDATE CM_ACCOUNT ----SET TK_GL ='361200001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='361200001') ----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')='' ----AND SUBSTRING(ACC_NO,4,4) ='7048' ----UPDATE CM_ACCOUNT ----SET TK_GL ='519200002', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='519200002') ----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')='' ----AND SUBSTRING(ACC_NO,4,4) ='7044' AND SUBSTRING(ACC_NO,12,2) ='19' ----UPDATE CM_ACCOUNT ----SET TK_GL ='421100001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='421100001') ----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')='' ----AND SUBSTRING(ACC_NO,4,4) ='7041' --UPDATE TR_REQ_PAY_ENTRIES SET ACCT_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(ACCT_NAME)) WHERE REQ_PAY_ID =@p_REQ_PAY_ID IF @@error<>0 GOTO ABORT; END -- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị chuyển DECLARE @hdocOutsideTrans INT EXEC sp_xml_preparedocument @hdocOutsideTrans OUTPUT, @p_XMP_TEMP_DATA_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) -- INSERT đơn vị chuyển DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_ID = @p_REQ_PAY_ID 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 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 --IF(@p_REQ_PAY_ID <> NULL) --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, CURRENCY) VALUES (@p_TR_REQ_TRANS_OUTSIDE_ID ,@p_REQ_PAY_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, @CURRENCY) --END 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 -- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị nhận -- START INSERT đơn vị nhận DECLARE @hdocOutsideRec INT EXEC sp_xml_preparedocument @hdocOutsideRec OUTPUT, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC; DECLARE @CHANEL_PAYMENT_ID VARCHAR(20), @CITAD1_ID VARCHAR(20), @BANK_RECEIVE_ID VARCHAR(255), @OBJECT_RECEIVE_ID VARCHAR(20), @REF_NO VARCHAR(50), @BRANCH_RECEIVE_ID VARCHAR(255), @BRANCH_RECEIVE_NAME NVARCHAR(MAX), @ACC_NO_RECEIVE VARCHAR(255), @TRADE_AMT DECIMAL(18, 0), @TRADE_DESC NVARCHAR(120), @SUB_BANK_RECEIVE_NAME nvarchar(MAX) -- INSERT đơn vị nhận DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID = @p_REQ_PAY_ID 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(255), OBJECT_RECEIVE_ID VARCHAR(15), BRANCH_RECEIVE_ID VARCHAR(15), BRANCH_RECEIVE_NAME VARCHAR(MAX), 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 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 SET @INDEX_REC = @INDEX_REC+1 IF(@p_TYPE_FUNCTION ='SEND') BEGIN 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_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, @p_REQ_PAY_ID, @p_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, @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 COMMIT TRANSACTION -- BEGIN VALIDATE SEND APPROVE IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET BEGIN IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_MAKER_ID_KT AND TYPE_JOB = 'XL')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép gửi phê duyệt phiếu đề nghị tạm ứng này. Phiếu đề nghị tạm ứng đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc RETURN '-1' END IF ((SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R') BEGIN SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc RETURN '-1' END IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A')) BEGIN SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang ở cấp độ đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được phê duyệt kế toán thành công trước đó!' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc RETURN '-1' END -- BEGIN VALIDATE LUOI HACH TOAN IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL) BEGIN -- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN DECLARE @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2) SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0) SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0) IF(@SUM_CR<>@SUM_DR) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có' ErrorDesc RETURN '-1' END END DECLARE @REQ_PAY_ID VARCHAR(15), @ET_ID varchar(15), @AMT_ET DECIMAL(18,0), @ACC_ET varchar(25), @DRCR_ET varchar(25), @SUM_ET DECIMAL(18,0) =0 DECLARE cursorProduct CURSOR LOCAL FOR SELECT REQ_PAY_ID,ENTRY_PAIR,AMT,ACCT,DR_CR FROM TR_REQ_PAY_ENTRIES A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID Open cursorProduct FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET WHILE @@FETCH_STATUS = 0 BEGIN --LUCTV 19-07-2021: MỖI MÃ BÚT TOÁN PHẢI THEO NGUYÊN TẮC 1 NỢ NHIỀU CÓ HOẶC 1 CÓ NHIỀU NỢ IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ET_ID AND DR_CR ='D') >1 AND (SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ET_ID AND DR_CR ='C') >1) BEGIN CLOSE cursorProduct; DEALLOCATE cursorProduct; SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ET_ID+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - Nhiều Nợ)' ErrorDesc RETURN '-1' END IF(@DRCR_ET='C' AND EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET)) BEGIN SET @SUM_ET =(SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ACCT =@ACC_ET) IF(ISNULL(@SUM_ET,0) <> (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N' Số tiền hạch toán có của tài khoản: '+@ACC_ET + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACC_ET AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###') ErrorDesc RETURN '-1' END END -- KIEM TRA SO TIEN NO CO IF (ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ENTRY_PAIR =@ET_ID),0) <> ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D' AND ENTRY_PAIR =@ET_ID),0)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N' Số tiền bút toán Nợ phải bằng với số tiền bút toán Có' ErrorDesc RETURN '-1' END FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET END -- END WHILE END -- END VALIDATE LUOI HACH TOAN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV) -- CAP NHAT TINH TRANG VE DANG XU LY UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT =GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID -- DOANPTT 291222: THEM LOG KPI UPDATE TR_REQ_KPI SET AUTH_STATUS_KT ='P', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTES, REQ_REASON = @p_REQ_REASON WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID_KT,GETDATE(), N'Giao dịch viên gửi phê duyệt phiếu',N'Giao dịch viên cập nhật thông tin') SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được gửi phê duyệt thành công! Vui lòng đợi kiểm soát viên phê duyệt phiếu' ErrorDesc RETURN '4' END -- END TYPE_FUNCTION -- END VALIDATE SEND APPROVE SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[FN_GET_USER_BY_ROLE]' GO ALTER FUNCTION [dbo].[FN_GET_USER_BY_ROLE] ( @ROLE_NAME VARCHAR(MAX), @BRANCH_ID VARCHAR(20) = NULL, @DEPT_ID VARCHAR(20) = NULL) RETURNS @result TABLE ( TLNANME VARCHAR(15), TLFullName NVARCHAR(200), BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(50), ROLE_OLD VARCHAR(100), ROLE_NEW VARCHAR(100), EFF_DATE DATETIME, EXP_DATE DATETIME ) AS BEGIN DECLARE @ROLES TABLE(RoleName VARCHAR(20)) INSERT @ROLES(RoleName) SELECT VALUE FROM wsiSplit(@ROLE_NAME,',') DECLARE @BRANCH_TYPE VARCHAR(15) = (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID) INSERT INTO @result SELECT * FROM ( SELECT TU.TLNANME, TU.TLFullName, TU.TLSUBBRID AS BRANCH_ID, TU.SECUR_CODE AS DEP_ID, R.DisplayName AS ROLE_OLD, TRM.ROLE_NEW,NULL AS EFF_DATE, NULL AS EXP_DATE FROM dbo.TL_USER TU LEFT JOIN dbo.AbpUserRoles UR ON TU.ID = UR.UserId INNER JOIN dbo.AbpRoles R ON R.Id = UR.RoleId LEFT JOIN (SELECT * FROM dbo.TL_SYS_ROLE_MAPPING RM WHERE RM.TLNAME IS NULL OR RM.TLNAME = '') TRM ON (TRM.ROLE_OLD = R.DisplayName) UNION ALL SELECT TU.TLNANME, TU.TLFullName, RM.BRANCH_ID, RM.DEP_ID, RM.ROLE_OLD, RM.ROLE_NEW, RM.EFF_DATE,RM.EXP_DATE FROM dbo.TL_USER TU LEFT JOIN dbo.TL_SYS_ROLE_MAPPING RM ON TU.TLNANME = RM.TLNAME WHERE CAST(RM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TMP WHERE 1 = 1 AND ((TMP.ROLE_OLD IN (SELECT * FROM @ROLES) OR TMP.ROLE_NEW IN (SELECT * FROM @ROLES)) OR @ROLE_NAME IS NULL OR @ROLE_NAME = '') AND ((@BRANCH_TYPE = 'HS' AND TMP.BRANCH_ID = @BRANCH_ID AND (TMP.DEP_ID = @DEPT_ID OR @DEPT_ID IS NULL OR @DEPT_ID ='')) OR (@BRANCH_TYPE <> 'HS' AND TMP.BRANCH_ID = @BRANCH_ID) OR (@BRANCH_ID IS NULL OR @BRANCH_ID = '') ) RETURN; END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_REQUEST_TRANSFER_Search]' GO ALTER PROCEDURE [dbo].[PL_REQUEST_TRANSFER_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 ---- NGUOI XU lY TIEP THEO 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,TempU.TLNANME AS TLNAME,TempU.TLFullName,PL.NOTES FROM (SELECT * FROM dbo.PL_REQUEST_PROCESS PRC WHERE EXISTS(SELECT PLRD.REQ_ID FROM dbo.PL_REQUEST_DOC PLRD WHERE PLRD.REQ_ID=PRC.REQ_ID ) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID <>'SIGN' 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 ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) 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 ='') LEFT JOIN dbo.PL_REQUEST_DOC RD ON RD.REQ_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID 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 PLRD.REQ_ID FROM dbo.PL_REQUEST_DOC PLRD WHERE PLRD.REQ_ID=PRC.REQ_ID ) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID ='SIGN' 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 ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 TM.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 ='') LEFT JOIN dbo.PL_REQUEST_DOC RD ON RD.REQ_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID WHERE STATUS='C' AND (PL.PROCESS_ID = 'SIGN' AND TempU.TLNANME = RD.SIGN_USER) 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 PLRD.REQ_ID FROM dbo.PL_REQUEST_DOC PLRD WHERE PLRD.REQ_ID=PRC.REQ_ID ) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID <>'SIGN' 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 dbo.TL_USER 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 UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) 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_TYPE='DVKD') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, --CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' --WHEN A.PROCESS_ID<> 'APPROVE' AND A.AUTH_STATUS='A' THEN N'Chờ duyệt' ELSE D.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME, CASE WHEN A.PROCESS_ID='APPROVE' OR A.AUTH_STATUS ='A' THEN N'Đã duyệt' ELSE D.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME, G.BRANCH_CODE, CASE WHEN A.BRANCH_CREATE <> 'DV0001' THEN G.BRANCH_NAME ELSE G.BRANCH_NAME+' - ' + DEP.DEP_NAME END AS BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, A.PL_BASED_ID, PL_B.REQ_CODE AS PL_BASED_CODE, PL_B.REQ_CONTENT AS PL_BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY NXL.NGUOIXULY AS NGUOIXULY, A.TK_HDQT_NOTES, A.TK_TGD_NOTES, A.OTHER_NOTES -- SELECT END FROM PL_REQUEST_DOC A --LEFT JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <>'U' LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.PL_REQUEST_DOC PL_B ON PL_B.REQ_ID=A.PL_BASED_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') --AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) AND A.RECORD_STATUS = '1' -- AND( -- @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL -- OR -- ( -- @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) -- ) -- OR -- ( -- @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) -- ) -- ) AND (A.MAKER_ID=@p_TLNAME_USER OR (A.PROCESS_ID ='APPROVE' AND A.BRANCH_CREATE=@p_BRANCH_LOGIN AND (A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE<>'HS')) OR EXISTS(SELECT ID FROM dbo.PL_ROLE_DATA_CONFIG PLRDC WHERE PLRDC.ROLE_TYPE='PL_REQUEST_DOC_ALL' AND (PLRDC.BRANCH_ID=@p_TLNAME_USER OR (PLRDC.BRANCH_ID = @p_BRANCH_LOGIN AND PLRDC.DEP_ID = @DEP_ID))) OR EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS PLRP WHERE PLRP.PROCESS_ID='APPNEW' AND PLRP.REQ_ID=A.REQ_ID AND EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND AUTH.BRANCH_ID=PLRP.BRANCH_ID AND(PLRP.DEP_ID=AUTH.DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID ='') )) -- --OR (EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS PLRP WHERE A.REQ_ID=PLRP.REQ_ID AND PLRP.PROCESS_ID='APPNEW' -- AND PLRP.ROLE_USER IN (SELECT ROLE_ID FROM @TABLE_ROLE) AND PLRP.BRANCH_ID=@p_BRANCH_LOGIN -- AND (PLRP.DEP_ID=@DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID =''))) -- OR(A.SIGN_USER IS NOT NULL AND A.SIGN_USER <>'' AND A.SIGN_USER =@p_TLNAME_USER AND A.AUTH_STATUS<>'E')) -- --AND (( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') OR( @p_AUTH_STATUS IN('U','R','E') AND (A.PROCESS_ID <> 'APPROVE' OR A.PROCESS_ID IS NULL)) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') --AND ((A.AUTH_STATUS='E' AND A.MAKER_ID=@p_TLNAME_USER) OR (A.AUTH_STATUS <> 'E' AND (A.MAKER_ID=@p_TLNAME_USER OR (PLRP.PROCESS_ID='DVKD' AND PLRP.ROLE_USER=@p_ROLE_USER AND PLRP.BRANCH_ID=@p_BRANCH_LOGIN AND (PLRP.DEP_ID=@DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID =''))))) -- --AND (A.AUTH_STATUS = @p_AUTH_STATUS OR @p_AUTH_STATUS ='' OR @p_AUTH_STATUS IS NULL) AND( (@p_AUTH_STATUS ='A' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='APPNEW' AND STATUS ='P')) OR (@p_AUTH_STATUS ='E' AND A.AUTH_STATUS =@p_AUTH_STATUS) OR (@p_AUTH_STATUS ='R' AND A.AUTH_STATUS =@p_AUTH_STATUS) OR (@p_AUTH_STATUS ='W' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='SIGN' AND STATUS ='C')) OR (@p_AUTH_STATUS ='G' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='SIGN' AND STATUS ='P')) OR (@p_AUTH_STATUS ='U' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='APPNEW' AND STATUS ='C')) OR (@p_AUTH_STATUS ='' OR @p_AUTH_STATUS IS NULL) ) 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(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_ID IN( SELECT REQ_DOC_ID FROM PL_REQUEST_TRANSFER) ) -- ĐƠN VỊ CHUYỂN AND ((@FROM_BRANCH_TYPE = 'HS' AND @p_FROM_BRANCH_ID <> '' AND @p_FROM_DEP_ID <> '' AND EXISTS(SELECT * FROM PL_REQUEST_TRANSFER B WHERE B.FR_BRN_ID = @p_FROM_BRANCH_ID AND B.FR_DEP_ID = @p_FROM_DEP_ID AND B.REQ_DOC_ID = A.REQ_ID)) OR (@FROM_BRANCH_TYPE <> 'HS' AND @p_FROM_BRANCH_ID <> '' AND EXISTS(SELECT * FROM PL_REQUEST_TRANSFER B WHERE B.FR_BRN_ID = @p_FROM_BRANCH_ID AND B.REQ_DOC_ID = A.REQ_ID)) OR ( ( @p_FROM_BRANCH_ID IS NULL OR @p_FROM_BRANCH_ID = '') AND @p_FROM_DEP_ID IS NULL OR @p_FROM_DEP_ID = '')) -- ĐƠN VỊ NHẬN AND ((@TO_BRANCH_TYPE = 'HS' AND @p_TO_BRANCH_ID <> '' AND @p_TO_DEP_ID <> '' AND EXISTS(SELECT * FROM PL_REQUEST_TRANSFER B WHERE B.TO_BRN_ID = @p_TO_BRANCH_ID AND B.TO_DEP_ID = @p_TO_DEP_ID AND B.REQ_DOC_ID = A.REQ_ID)) OR (@TO_BRANCH_TYPE <> 'HS' AND @p_TO_BRANCH_ID <> '' AND EXISTS(SELECT * FROM PL_REQUEST_TRANSFER B WHERE B.TO_BRN_ID = @p_TO_BRANCH_ID AND B.REQ_DOC_ID = A.REQ_ID)) OR ( ( @p_TO_BRANCH_ID IS NULL OR @p_TO_BRANCH_ID = '') AND @p_TO_DEP_ID IS NULL OR @p_TO_DEP_ID = '')) -- HẠNG MỤC NGÂN SÁCH CHUYỂN AND (@p_FROM_GD_NAME IS NULL OR @p_FROM_GD_NAME = '' OR EXISTS(SELECT * FROM PL_REQUEST_TRANSFER B LEFT JOIN CM_GOODS C ON B.FR_GOOD_ID = C.GD_ID AND B.REQ_DOC_ID = A.REQ_ID WHERE C.GD_NAME LIKE '%' + @p_FROM_GD_NAME + '%' )) -- HẠNG MỤC NGÂN SÁCH NHẬN AND (@p_TO_GD_NAME IS NULL OR @p_TO_GD_NAME = '' OR EXISTS(SELECT * FROM PL_REQUEST_TRANSFER B LEFT JOIN CM_GOODS C ON B.TO_GOOD_ID = C.GD_ID AND B.REQ_DOC_ID = A.REQ_ID WHERE C.GD_NAME LIKE '%' + @p_TO_GD_NAME + '%' )) 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 ELSE IF(@p_TYPE='PDTT') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RPN.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, RPC.TYPE_JOB AS TYPE_JOB, RPC.TLNAME AS USER_JOB, TU.TLFullName AS USER_JOB_NAME, TFM.TLNANME AS TRANSFER_MAKER, RPC.TRANFER_DT AS TRANFER_DT , RPC.MAKER_ID AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <>'U' 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) --AND (@p_RECEIVE_BRANCH IS NULL OR A.PO_ID IN (SELECT PO_ID FROM TR_PO_DETAIL WHERE RECEIVE_BRANCH=@p_RECEIVE_BRANCH)) AND A.RECORD_STATUS = '1' -- AND( -- @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL -- OR -- ( -- @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) -- ) -- OR -- ( -- @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) -- ) -- ) AND 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.ROLE_USER IN (SELECT ROLE_ID FROM @TABLE_ROLE) --AND ( -- (PLRP.PROCESS_ID='DVDC' AND PLRP.BRANCH_ID=@p_BRANCH_LOGIN AND (PLRP.DEP_ID=@DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID='')) --OR ( PLRP.DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID)) --OR --( (PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL) AND (PLRP.BRANCH_ID IS NULL OR PLRP.BRANCH_ID='')) --) AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND (PLRP.IS_HAS_CHILD=0 OR PLRP.IS_HAS_CHILD IS NULL) AND (( @p_AUTH_STATUS='A' AND PLRP.STATUS='P') OR( @p_AUTH_STATUS='U' AND (PLRP.STATUS='C')) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') 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( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) --AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') --AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') -- 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 ELSE IF(@p_TYPE='TFJOB') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, CASE WHEN RPC.TYPE_JOB IS NULL OR RPC.TYPE_JOB ='' THEN 'TP' ELSE RPC.TYPE_JOB END AS TYPE_JOB, RPC.TLNAME AS USER_JOB, TU.TLFullName AS USER_JOB_NAME, TFM.TLNANME AS TRANSFER_MAKER, RPC.TRANFER_DT AS TRANFER_DT , RPC.MAKER_ID AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, PLRP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFULLNAME AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY -- dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES,A.TK_HDQT_NOTES, A.OTHER_NOTES -- 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' AND PLRP.IS_HAS_CHILD=1 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) --AND (@p_RECEIVE_BRANCH IS NULL OR A.PO_ID IN (SELECT PO_ID FROM TR_PO_DETAIL WHERE RECEIVE_BRANCH=@p_RECEIVE_BRANCH)) AND A.RECORD_STATUS = '1' -- AND( -- @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL -- OR -- ( -- @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) -- ) -- OR -- ( -- @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) -- ) -- ) AND( 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='')) )) OR (EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND TYPE_JOB='KS' AND PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.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(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND (( @p_AUTH_STATUS='A' AND PLRP.STATUS='P') OR( @p_AUTH_STATUS='U' AND (PLRP.STATUS='C')) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID AND PL_REQUEST_PROCESS_CHILD.STATUS_JOB='C' AND PL_REQUEST_PROCESS_CHILD.TYPE_JOB='TP')) AND ( ((RPC.REQ_ID IS NOT NULL OR RPC.REQ_ID <> '') AND @p_IS_TRANSFER = 'Y') OR ((RPC.REQ_ID IS NULL OR RPC.REQ_ID = '') AND @p_IS_TRANSFER = 'N') OR @p_IS_TRANSFER = '' OR @p_IS_TRANSFER IS NULL ) AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') -- 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 ELSE IF(@p_TYPE='XLTT') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, CASE WHEN A.BRANCH_CREATE <> 'DV0001' THEN G.BRANCH_NAME ELSE G.BRANCH_NAME+' - ' + DEP.DEP_NAME END AS BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RPN.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, RPC.TYPE_JOB AS TYPE_JOB, RPC.TLNAME AS USER_JOB, TU.TLFullName AS USER_JOB_NAME, TFM.TLNANME AS TRANSFER_MAKER, RPC.TRANFER_DT AS TRANFER_DT , RPC.MAKER_ID AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, PLRP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <> 'U' AND PLRP.IS_HAS_CHILD=1 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) --AND (@p_RECEIVE_BRANCH IS NULL OR A.PO_ID IN (SELECT PO_ID FROM TR_PO_DETAIL WHERE RECEIVE_BRANCH=@p_RECEIVE_BRANCH)) AND A.RECORD_STATUS = '1' -- AND( -- @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL -- OR -- ( -- @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) -- ) -- OR -- ( -- @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) -- ) -- ) AND( 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='')) )) OR (EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.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(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND (( @p_AUTH_STATUS='A' AND PLRP.STATUS='P') OR( @p_AUTH_STATUS='U' AND (PLRP.STATUS='C')) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') -- LUCTV 10 03 2021 BO SUNG DIEU KIENN NEU PHIEU CHUA DUOC DIEU PHOI THI SE KHONG TIM THAY O MAN HINH DVCM AND((EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD C WHERE A.REQ_ID=C.REQ_ID AND C.PROCESS_ID=PLRP.ID AND C.TLNAME =@p_TLNAME_USER AND C.STATUS_JOB IN ('C','P'))) OR (@p_NGUOIXULY IS NOT NULL AND @p_NGUOIXULY <> '')) -- 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 ELSE IF(@p_TYPE='DVKD_PARENT') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) AND A.RECORD_STATUS = '1' AND( @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL OR ( @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) OR ( @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) ) AND ( (A.BRANCH_CREATE = @p_BRANCH_LOGIN AND( A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE <>'HS')) OR A.IS_CHECKALL=1) AND A.PROCESS_ID='APPROVE' AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103)) AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103)) AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND(A.REQ_PARENT_ID IS NULL OR A.REQ_PARENT_ID='') AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') -- 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 ELSE IF(@p_TYPE='DVKD_ISALL') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) AND A.RECORD_STATUS = '1' AND( @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL OR ( @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) OR ( @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) ) AND A.IS_CHECKALL=1 AND A.PROCESS_ID='APPROVE' AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103)) AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103)) AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND(A.REQ_PARENT_ID IS NULL OR A.REQ_PARENT_ID='') AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) --AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') --AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') -- GiaNT 20/10/2021 AND (A.REQ_ID IN( SELECT REQ_DOC_ID FROM PL_REQUEST_TRANSFER) ) ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='TTCT_DVCM') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) AND A.RECORD_STATUS = '1' AND( @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL OR ( @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) OR ( @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) ) AND ( EXISTS (SELECT * FROM dbo.PL_REQUEST_COSTCENTER PC WHERE PC.REQ_ID=A.REQ_ID AND EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.DVDM_ID=PC.COST_ID) ) ) AND A.PROCESS_ID='APPROVE' AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103)) AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103)) AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND(A.REQ_PARENT_ID IS NULL OR A.REQ_PARENT_ID='') AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) --AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') --AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') -- GiaNT 20/10/2021 AND (A.REQ_ID IN( SELECT REQ_DOC_ID FROM PL_REQUEST_TRANSFER) ) ORDER BY A.CREATE_DT DESC -- PAGING END END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TL_USER_GET_ROLES]' GO ALTER FUNCTION [dbo].[TL_USER_GET_ROLES] (@TLNAME VARCHAR(15)) RETURNS @result TABLE ( BRANCH_ID VARCHAR(15), DEPT_ID VARCHAR(15), ROLE_ID VARCHAR(20) ) AS BEGIN INSERT INTO @result SELECT A.TLSUBBRID, A.SECUR_CODE, C.DisplayName FROM dbo.TL_USER A JOIN dbo.AbpUserRoles B ON A.ID = B.UserId JOIN dbo.AbpRoles C ON B.RoleId = C.Id WHERE TLNANME = @TLNAME UNION ALL SELECT A.TLSUBBRID, A.SECUR_CODE, TRM.ROLE_NEW FROM dbo.TL_USER A INNER JOIN dbo.AbpUserRoles B ON A.ID = B.UserId INNER JOIN dbo.AbpRoles C ON B.RoleId = C.Id INNER JOIN (SELECT * FROM dbo.TL_SYS_ROLE_MAPPING RM WHERE RM.TLNAME IS NULL OR RM.TLNAME = '') TRM ON (TRM.ROLE_OLD = C.DisplayName) WHERE TLNANME = @TLNAME UNION ALL SELECT RM.BRANCH_ID, RM.DEP_ID, RM.ROLE_NEW FROM dbo.TL_USER TU LEFT JOIN dbo.TL_SYS_ROLE_MAPPING RM ON TU.TLNANME = RM.TLNAME WHERE CAST(RM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) AND TU.TLNANME = @TLNAME RETURN; END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_JOB_FORM_Search]' GO ALTER PROC [dbo].[TR_REQUEST_JOB_FORM_Search] @p_REF_ID varchar(15) = NULL, @p_REQ_ID varchar(15) = NULL, @p_REQ_CODE varchar(15) = NULL, @p_MAKER_ID varchar(15) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_REQ_REASON nvarchar(MAX) = NULL, @p_REQ_DESC nvarchar(MAX) = NULL, @p_NOTES nvarchar(MAX) = NULL, @p_REQ_TYPE_TRANS varchar(15) = NULL, @p_REQ_TYPE_GROUP varchar(15) = NULL, @p_REQ_TYPE_BOOKING_HOTEL varchar(15) = NULL, --@p_COST_AMOUNT decimal(18) = NULL, @p_REQ_TYPE_BOOKING_AIR varchar(15) = NULL, @p_REQ_TYPE_BOOKING_TRAIN varchar(15) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_FRMDATE VARCHAR(20)= NULL, @p_TODATE VARCHAR(20) = NULL, @p_USER_LOGIN VARCHAR(50) =NULL, @p_DEP_CREATE VARCHAR(15) = NULL, @p_BRANCH_CREATE VARCHAR(15) = NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_TOP INT = NULL AS BEGIN -- PAGING DECLARE @LST_ROLE TABLE(ROLENAME VARCHAR(20),BRANCH_ID VARCHAR(20),DEP_ID VARCHAR(20)) INSERT INTO @LST_ROLE (ROLENAME,BRANCH_ID,DEP_ID) (SELECT C.DisplayName,A.TLSUBBRID,A.DEP_ID FROM TL_USER A JOIN AbpUserRoles B ON B.UserId = A.ID JOIN AbpRoles C ON C.Id=B.RoleId WHERE A.TLNANME =@p_USER_LOGIN) INSERT INTO @LST_ROLE (ROLENAME,BRANCH_ID,DEP_ID) (SELECT ROLE_NEW,BRANCH_ID,DEP_ID FROM dbo.TL_SYS_ROLE_MAPPING WHERE CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) AND TLNAME=@p_USER_LOGIN) IF(@p_TOP IS NULL OR @p_TOP = 0) BEGIN -- PAGING BEGIN SELECT A.REQ_ID, A.REQ_CODE, A.REQ_DT, A.REF_ID, A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS, A.CHECKER_ID, A.APPROVE_DT, A.REQ_REASON, A.REQ_DESC, A.NOTES, A.REQ_TYPE_TRANS, A.REQ_TYPE_GROUP, A.REQ_TYPE_BOOKING_HOTEL, A.REQ_TYPE_BOOKING_AIR, A.REQ_TYPE_BOOKING_TRAIN, A.SENDER_ID, A.SEND_DT, A.SIGN_USER, A.SIGN_DT, A.PROCESS_ID, A.BRANCH_CREATE, A.DEP_CREATE, A.BRANCH_ID AS BRANCH_NAME, A.DEP_ID, BR_CR.BRANCH_NAME AS BRANCH_CREATE_NAME, DP_CR.DEP_NAME AS DEP_CREATE_NAME, A.FRMDATE, A.TODATE,C.AUTH_STATUS_NAME AS AUTH_STATUS_PROCESS_NAME,D.TLFullName AS EMP_NAME,RPN.NOTES AS PROCESS_STATUS_NEXT, (CASE WHEN (A.PROCESS_ID ='SIGN' OR RPN.PROCESS_ID ='TDV_APP') AND EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES (@p_USER_LOGIN)WHERE ROLE_ID =RPN.ROLE_USER AND (BRANCH_ID =RPN.BRANCH_ID OR RPN.BRANCH_ID IS NULL OR RPN.BRANCH_ID='') AND (DEPT_ID=RPN.DEP_ID OR RPN.DEP_ID IS NULL OR RPN.DEP_ID ='')) THEN 'Y' WHEN ((A.PROCESS_ID = 'SEND' OR RPN.PROCESS_ID ='SIGN_APP') AND A.SIGN_USER=@p_USER_LOGIN OR EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN)WHERE ROLE_ID = A.SIGN_USER)) THEN 'Y' ELSE 'N' END) AS IS_APPROVE, (CASE WHEN (A.PROCESS_ID ='SIGN' OR RPN.PROCESS_ID ='TDV_APP') AND RPN.ROLE_USER<>'PTGD' AND RPN.ROLE_USER<>'GDK' THEN (STUFF((SELECT DISTINCT ', ' + RE.TLNANME FROM FN_GET_USER_BY_ROLE(RPN.ROLE_USER,RPN.BRANCH_ID,RPN.DEP_ID) RE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')) WHEN (A.PROCESS_ID ='SIGN' OR RPN.PROCESS_ID ='TDV_APP') AND (RPN.ROLE_USER='PTGD' OR RPN.ROLE_USER='GDK') THEN (STUFF((SELECT DISTINCT ', ' + RE.TLNANME FROM FN_GET_USER_MANAGER_BY_DVCM(RPN.DVDM_ID,RPN.ROLE_USER) RE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')) WHEN ((A.PROCESS_ID = 'SEND' OR RPN.PROCESS_ID ='SIGN_APP') AND A.SIGN_USER = 'TKTGD' ) THEN (STUFF((SELECT DISTINCT ', ' + RE.TLNANME FROM FN_GET_USER_BY_ROLE('TKTGD','','') RE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')) WHEN ((A.PROCESS_ID = 'SEND' OR RPN.PROCESS_ID ='SIGN_APP') AND A.SIGN_USER IS NOT NULL AND A.SIGN_USER <>'TKTGD' ) THEN A.SIGN_USER WHEN (A.PROCESS_ID IN ('APPNEW','MAKER_CONF','TDV_APP')) THEN (STUFF((SELECT DISTINCT ', ' + RE.TLNANME FROM FN_GET_USER_BY_ROLE('NVDV',RPN.BRANCH_ID,'') RE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')) WHEN A.PROCESS_ID='APPROVE' THEN '' WHEN A.PROCESS_ID='CANCEL' THEN '' ELSE CASE WHEN A.EMP_ID <> A.MAKER_ID THEN CONCAT(A.MAKER_ID,', ',A.EMP_ID) ELSE A.MAKER_ID END END) AS NGUOIXULY -- SELECT END FROM TR_REQUEST_JOB_FORM A LEFT JOIN dbo.CM_BRANCH BR_CR ON A.BRANCH_CREATE=BR_CR.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DP_CR ON DP_CR.DEP_ID=A.DEP_CREATE LEFT JOIN CM_AUTH_STATUS C ON C.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN dbo.TL_USER D ON D.TLNANME=A.EMP_ID --LEFT JOIN dbo.TL_USER E ON A.SIGN_USER =E.TLNANME --LEFT JOIN dbo.TL_USER F ON A.MAKER_ID = F.MARKER_ID 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')) WHERE 1 = 1 AND (A.REF_ID LIKE '%' + @p_REF_ID + '%' OR @p_REF_ID IS NULL OR @p_REF_ID = '') AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.AUTH_STATUS = @p_AUTH_STATUS OR (@p_AUTH_STATUS='M' AND (EXISTS(SELECT 1 from wsiSplit(RPN.ROLE_USER,',')WHERE value =@p_USER_LOGIN) OR EXISTS (SELECT 1 from wsiSplit(RPN.ROLE_USER,',')WHERE value IN(SELECT ROLENAME FROM @LST_ROLE WHERE (BRANCH_ID=RPN.BRANCH_ID OR RPN.BRANCH_ID IS NULL OR RPN.BRANCH_ID ='') AND (DEP_ID=RPN.DEP_ID OR RPN.DEP_ID IS NULL OR RPN.DEP_ID=''))))) OR (@p_AUTH_STATUS='M' AND EXISTS(SELECT 1 FROM FN_GET_USER_MANAGER_BY_DVCM(RPN.DVDM_ID,RPN.ROLE_USER) WHERE TLNANME =@p_USER_LOGIN)) OR (@p_AUTH_STATUS='M' AND A.MAKER_ID =@p_USER_LOGIN AND A.AUTH_STATUS='E') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (DATEDIFF(DAYOFYEAR,A.CREATE_DT,CONVERT(DATETIME, @p_CREATE_DT, 103)) = 0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAYOFYEAR,A.APPROVE_DT,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') 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.DEP_CREATE LIKE '%' + @p_DEP_CREATE + '%' OR @p_DEP_CREATE IS NULL OR @p_DEP_CREATE = '') AND (A.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.MAKER_ID = @p_USER_LOGIN ---- ng login là ng tạo OR A.EMP_ID = @p_USER_LOGIN ---- ng login là người sử dụng phiếu OR (EXISTS(SELECT 1 FROM @LST_ROLE WHERE ROLENAME = 'NVDV') AND A.PROCESS_ID NOT IN('NEW','SIGN','SEND')) -- ng login là chuyên viên đặt vé OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y' AND A.PROCESS_ID ='SEND' OR RPN.PROCESS_ID='SIGN_APP') --- ng login là cấp duyệt trung gian và đã gửi YC phê duyệt OR (A.IS_SEND_APPR = 'Y' AND (A.PROCESS_ID ='SEND' OR RPN.PROCESS_ID='SIGN_APP') AND (EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN)WHERE ROLE_ID=A.SIGN_USER))) --- ng login là cấp duyệt trung gian TKTGD và đã gửi YC phê duyệt OR (EXISTS(SELECT 1 FROM @LST_ROLE WHERE ROLENAME IN('NVMS','NVTT', 'GDV_DVKD', 'KSV_DVKD','GDV','KSV')) AND A.AUTH_STATUS='A') OR (EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN)WHERE ROLE_ID =RPN.ROLE_USER AND (BRANCH_ID =RPN.BRANCH_ID OR RPN.BRANCH_ID IS NULL OR RPN.BRANCH_ID='') AND (DEPT_ID=RPN.DEP_ID OR RPN.DEP_ID IS NULL OR RPN.DEP_ID =''))) OR ((EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN)WHERE BRANCH_ID =D.TLSUBBRID AND DEPT_ID=D.DEP_ID)) --- ng login là trưởng ĐV và đã gửi YC phê duyệt AND A.IS_SEND_APPR = 'Y' AND ( ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) ) ) ) ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE BEGIN -- PAGING BEGIN SELECT TOP(@p_TOP) A.REQ_ID, A.REQ_CODE, A.REQ_DT, A.REF_ID, A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS, A.CHECKER_ID, A.APPROVE_DT, A.REQ_REASON, A.REQ_DESC, A.NOTES, A.REQ_TYPE_TRANS, A.REQ_TYPE_GROUP, A.REQ_TYPE_BOOKING_HOTEL, A.REQ_TYPE_BOOKING_AIR, A.REQ_TYPE_BOOKING_TRAIN, A.SENDER_ID, A.SEND_DT, A.SIGN_USER, A.SIGN_DT, A.PROCESS_ID, A.BRANCH_CREATE, A.DEP_CREATE, A.BRANCH_ID AS BRANCH_NAME, A.DEP_ID, BR_CR.BRANCH_NAME AS BRANCH_CREATE_NAME, DP_CR.DEP_NAME AS DEP_CREATE_NAME, A.FRMDATE, A.TODATE,C.AUTH_STATUS_NAME AS AUTH_STATUS_PROCESS_NAME,D.TLFullName AS EMP_NAME,RPN.NOTES AS PROCESS_STATUS_NEXT, (CASE WHEN (A.PROCESS_ID ='SIGN' OR RPN.PROCESS_ID ='TDV_APP') AND EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES (@p_USER_LOGIN)WHERE ROLE_ID =RPN.ROLE_USER AND (BRANCH_ID =RPN.BRANCH_ID OR RPN.BRANCH_ID IS NULL OR RPN.BRANCH_ID='') AND (DEPT_ID=RPN.DEP_ID OR RPN.DEP_ID IS NULL OR RPN.DEP_ID ='')) THEN 'Y' WHEN ((A.PROCESS_ID = 'SEND' OR RPN.PROCESS_ID ='SIGN_APP') AND A.SIGN_USER=@p_USER_LOGIN OR EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN)WHERE ROLE_ID = A.SIGN_USER)) THEN 'Y' ELSE 'N' END) AS IS_APPROVE, (CASE WHEN (A.PROCESS_ID ='SIGN' OR RPN.PROCESS_ID ='TDV_APP') AND RPN.ROLE_USER<>'PTGD' AND RPN.ROLE_USER<>'GDK' THEN (STUFF((SELECT DISTINCT ', ' + RE.TLNANME FROM FN_GET_USER_BY_ROLE(RPN.ROLE_USER,RPN.BRANCH_ID,RPN.DEP_ID) RE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')) WHEN (A.PROCESS_ID ='SIGN' OR RPN.PROCESS_ID ='TDV_APP') AND (RPN.ROLE_USER='PTGD' OR RPN.ROLE_USER='GDK') THEN (STUFF((SELECT DISTINCT ', ' + RE.TLNANME FROM FN_GET_USER_MANAGER_BY_DVCM(RPN.DVDM_ID,RPN.ROLE_USER) RE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')) WHEN ((A.PROCESS_ID = 'SEND' OR RPN.PROCESS_ID='SIGN_APP') AND A.SIGN_USER = 'TKTGD' ) THEN (STUFF((SELECT DISTINCT ', ' + RE.TLNANME FROM FN_GET_USER_BY_ROLE('TKTGD','','') RE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')) WHEN ((A.PROCESS_ID = 'SEND' OR RPN.PROCESS_ID='SIGN_APP') AND A.SIGN_USER IS NOT NULL AND A.SIGN_USER <>'TKTGD' ) THEN A.SIGN_USER WHEN (A.PROCESS_ID IN ('APPNEW','MAKER_CONF','TDV_APP')) THEN (STUFF((SELECT DISTINCT ', ' + RE.TLNANME FROM FN_GET_USER_BY_ROLE('NVDV',RPN.BRANCH_ID,'') RE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')) WHEN A.PROCESS_ID='CANCEL' THEN '' WHEN A.PROCESS_ID='APPROVE' THEN '' ELSE CASE WHEN A.EMP_ID <> A.MAKER_ID THEN CONCAT(A.MAKER_ID,', ',A.EMP_ID) ELSE A.MAKER_ID END END) AS NGUOIXULY,RPN.ROLE_USER,RPN.DVDM_ID -- SELECT END FROM TR_REQUEST_JOB_FORM A LEFT JOIN dbo.CM_BRANCH BR_CR ON A.BRANCH_CREATE=BR_CR.BRANCH_ID LEFT JOIN CM_AUTH_STATUS C ON C.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN dbo.CM_DEPARTMENT DP_CR ON DP_CR.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TL_USER D ON D.TLNANME=A.EMP_ID --LEFT JOIN dbo.TL_USER E ON A.SIGN_USER =E.TLNANME --LEFT JOIN dbo.TL_USER F ON A.MAKER_ID = F.MARKER_ID 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') ) WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.AUTH_STATUS = @p_AUTH_STATUS OR (@p_AUTH_STATUS='M' AND (EXISTS(SELECT 1 from wsiSplit(RPN.ROLE_USER,',')WHERE value =@p_USER_LOGIN) OR EXISTS (SELECT 1 from wsiSplit(RPN.ROLE_USER,',')WHERE value IN(SELECT ROLENAME FROM @LST_ROLE WHERE (BRANCH_ID=RPN.BRANCH_ID OR RPN.BRANCH_ID IS NULL OR RPN.BRANCH_ID ='') AND (DEP_ID=RPN.DEP_ID OR RPN.DEP_ID IS NULL OR RPN.DEP_ID=''))))) OR (@p_AUTH_STATUS='M' AND EXISTS(SELECT 1 FROM FN_GET_USER_MANAGER_BY_DVCM(RPN.DVDM_ID,RPN.ROLE_USER) WHERE TLNANME =@p_USER_LOGIN)) OR (@p_AUTH_STATUS='M' AND A.MAKER_ID =@p_USER_LOGIN AND A.AUTH_STATUS='E') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (DATEDIFF(DAYOFYEAR,A.CREATE_DT,CONVERT(DATETIME, @p_CREATE_DT, 103)) = 0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAYOFYEAR,A.APPROVE_DT,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') 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.DEP_CREATE LIKE '%' + @p_DEP_CREATE + '%' OR @p_DEP_CREATE IS NULL OR @p_DEP_CREATE = '') AND (A.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (DATEDIFF(DAYOFYEAR,A.CREATE_DT,CONVERT(DATETIME, @p_CREATE_DT, 103)) = 0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAYOFYEAR,A.APPROVE_DT,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') 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.DEP_CREATE LIKE '%' + @p_DEP_CREATE + '%' OR @p_DEP_CREATE IS NULL OR @p_DEP_CREATE = '') AND (A.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') AND (A.MAKER_ID = @p_USER_LOGIN ---- ng login là ng tạo OR A.EMP_ID = @p_USER_LOGIN ---- ng login là người sử dụng phiếu OR (EXISTS(SELECT 1 FROM @LST_ROLE WHERE ROLENAME = 'NVDV') AND A.PROCESS_ID NOT IN('NEW','SIGN','SEND')) -- ng login là chuyên viên đặt vé OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y' AND A.PROCESS_ID ='SEND' OR RPN.PROCESS_ID='SIGN_APP') --- ng login là cấp duyệt trung gian và đã gửi YC phê duyệt OR (A.IS_SEND_APPR = 'Y' AND (A.PROCESS_ID ='SEND' OR RPN.PROCESS_ID='SIGN_APP') AND (EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN)WHERE ROLE_ID=A.SIGN_USER))) --- ng login là cấp duyệt trung gian TKTGD và đã gửi YC phê duyệt OR (EXISTS(SELECT 1 FROM @LST_ROLE WHERE ROLENAME IN('NVMS','NVTT', 'GDV_DVKD', 'KSV_DVKD','GDV','KSV')) AND A.AUTH_STATUS='A') OR (EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN)WHERE ROLE_ID =RPN.ROLE_USER AND (BRANCH_ID =RPN.BRANCH_ID OR RPN.BRANCH_ID IS NULL OR RPN.BRANCH_ID='') AND (DEPT_ID=RPN.DEP_ID OR RPN.DEP_ID IS NULL OR RPN.DEP_ID =''))) OR ((EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN)WHERE BRANCH_ID =D.TLSUBBRID AND DEPT_ID=D.DEP_ID)) --- ng login là trưởng ĐV và đã gửi YC phê duyệt AND A.IS_SEND_APPR = 'Y' AND ( ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) ) ) ) ORDER BY A.CREATE_DT DESC -- PAGING END END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[rpt_TR_REQUEST_DOC_DT_ById]' GO ALTER PROCEDURE [dbo].[rpt_TR_REQUEST_DOC_DT_ById] @P_REQ_ID varchar(15) AS DECLARE @DETAIL_ID VARCHAR(15), @l_QUANTITY numeric(18,0)=0, @l_QUANTITY_EXE decimal(18,0)=0, @l_QUANTITY_REMAIN decimal(18,0)=0, @l_AMT numeric(18,0)=0, @l_AMT_EXE decimal(18,0)=0, @l_AMT_REMAIN decimal(18,0)=0, @APPR VARCHAR(15),@APPR1 VARCHAR(15),@APPR2 VARCHAR(15),@APPR3 VARCHAR(15),@APPR4 VARCHAR(15), @POS NVARCHAR(200),@POS1 NVARCHAR(200),@POS2 NVARCHAR(200),@POS3 NVARCHAR(50),@POS4 NVARCHAR(200), @DATE NVARCHAR(50),@DATE1 NVARCHAR(50),@DATE2 NVARCHAR(50),@DATE3 NVARCHAR(50),@DATE4 NVARCHAR(50), @FULLNAME NVARCHAR(100),@FULLNAME1 NVARCHAR(100),@FULLNAME2 NVARCHAR(100),@FULLNAME3 NVARCHAR(100),@FULLNAME4 NVARCHAR(100) SET @APPR =(SELECT TOP 1 B.TLNANME FROM PL_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.PROCESS_ID='APPNEW' WHERE A.REQ_ID= @P_REQ_ID ) SET @FULLNAME = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = @APPR) SET @POS =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR) SET @DATE =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,HH:mm:ss'),'') FROM PL_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.PROCESS_ID='APPNEW' WHERE A.REQ_ID= @P_REQ_ID ORDER BY A.APPROVE_DT DESC ) --SET @APPR1 =(SELECT TOP 1 B.TLNANME FROM PL_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.NOTES =N'Nhân viên xử lý gửi phê duyệt' --WHERE A.REQ_ID= @P_REQ_ID) --SET @FULLNAME1 = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = @APPR1) --SET @POS1 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR1) --SET @DATE1 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,HH:mm:ss'),'') --FROM PL_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME --AND A.NOTES =N'Nhân viên xử lý gửi phê duyệt' --WHERE A.REQ_ID= @P_REQ_ID --ORDER BY A.APPROVE_DT DESC) --------------BAODNQ 4/3/2022 : Lấy nhân viên xử lý gửi phê duyệt--------- SET @APPR1 = ( SELECT TOP 1 B.TLNAME FROM PL_REQUEST_PROCESS A INNER JOIN PL_REQUEST_PROCESS_CHILD B ON A.ID = B.PROCESS_ID WHERE A.REQ_ID = @P_REQ_ID AND A.PROCESS_ID = 'DMMS' AND B.STATUS_JOB = 'P' AND B.TYPE_JOB = 'XL' ) SET @FULLNAME1 = (SELECT TLFullName FROM TL_USER WHERE TLNANME = @APPR1) SET @POS1 = (SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN = @APPR1) SET @DATE1 = ( SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,HH:mm:ss'),'') FROM PL_PROCESS A WHERE A.REQ_ID = @P_REQ_ID AND A.PROCESS_ID = 'SEND' AND A.CHECKER_ID = @APPR1 ORDER BY A.APPROVE_DT DESC ) ---------------------------- --SET @APPR2 =(SELECT TOP 1 B.TLNANME FROM PL_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.PROCESS_ID ='DMMS' --AND A.NOTES =N'Kiểm soát viên đã phê duyệt' --WHERE A.REQ_ID= @P_REQ_ID) --SET @FULLNAME2 = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = @APPR2) --SET @POS2 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR2) --SET @DATE2 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,HH:mm:ss'),'') --FROM PL_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.PROCESS_ID ='DMMS' --AND A.NOTES = N'Kiểm soát viên đã phê duyệt' --WHERE A.REQ_ID= @P_REQ_ID --ORDER BY A.APPROVE_DT DESC) ---------------BAODNQ 4/3/2022 Lấy kiểm soát viên phê duyệt---------- SET @APPR2 = ( SELECT TOP 1 B.TLNAME FROM PL_REQUEST_PROCESS A INNER JOIN PL_REQUEST_PROCESS_CHILD B ON A.ID = B.PROCESS_ID WHERE A.REQ_ID = @P_REQ_ID AND A.PROCESS_ID = 'DMMS' AND B.STATUS_JOB = 'P' AND B.TYPE_JOB = 'KS' ) SET @FULLNAME2 = (SELECT TLFullName FROM TL_USER WHERE TLNANME = @APPR2) SET @POS2 = (SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN = @APPR2) SET @DATE2 = ( SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,HH:mm:ss'),'') FROM PL_PROCESS A WHERE A.REQ_ID = @P_REQ_ID AND A.PROCESS_ID = 'DMMS' AND A.CHECKER_ID = @APPR2 ORDER BY A.APPROVE_DT DESC ) ---------------------------------- --SET @APPR3 =(SELECT TOP 1 B.TLNANME FROM PL_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.PROCESS_ID ='DMMS' --AND A.NOTES = N'Trưởng đơn vị đã phê duyệt' --WHERE A.REQ_ID= @P_REQ_ID) --SET @FULLNAME3 = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = @APPR3) --SET @POS3 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR3) --SET @DATE3 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,HH:mm:ss'),'') --FROM PL_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.NOTES = N'Trưởng đơn vị đã phê duyệt' --AND A.PROCESS_ID ='DMMS' --WHERE A.REQ_ID= @P_REQ_ID --ORDER BY A.APPROVE_DT DESC) -----------------------BAODQN 4/3/2022 Lấy trưởng đơn vị duyệt DMMS------ SET @APPR3 = ( SELECT TOP 1 B.TLNAME FROM PL_REQUEST_PROCESS A INNER JOIN PL_REQUEST_PROCESS_CHILD B ON A.ID = B.PROCESS_ID WHERE A.REQ_ID = @P_REQ_ID AND A.PROCESS_ID = 'DMMS' AND B.STATUS_JOB = 'P' AND B.TYPE_JOB NOT IN ('XL', 'KS') ) SET @FULLNAME3 = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = @APPR3) SET @POS3 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR3) SET @DATE3 = ( SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,HH:mm:ss'),'') FROM PL_PROCESS A WHERE A.REQ_ID = @P_REQ_ID AND A.PROCESS_ID = 'DMMS' AND A.CHECKER_ID = @APPR3 ORDER BY A.APPROVE_DT DESC ) ------------------------ --SET @APPR4 =(SELECT TOP 1 B.TLNANME FROM PL_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.PROCESS_ID ='GDK_PYC' --AND A.NOTES = N'Giám đốc khối đã phê duyệt' --WHERE A.REQ_ID= @P_REQ_ID) --SET @FULLNAME4 = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = @APPR4) --SET @POS4 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR4) --SET @DATE4 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,HH:mm:ss'),'') --FROM PL_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME --AND A.NOTES = N'Giám đốc khối đã phê duyệt' --AND A.PROCESS_ID ='GDK_PYC' --WHERE A.REQ_ID= @P_REQ_ID --ORDER BY A.APPROVE_DT DESC) -----------BAODNQ 4/3/2022 Lấy GDK_PYC phê duyệt----------- SET @APPR4 =( SELECT TOP 1 CHECKER_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @P_REQ_ID AND PROCESS_ID = 'GDK_PYC' ) SET @FULLNAME4 = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = @APPR4) SET @POS4 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR4) SET @DATE4 =( SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,HH:mm:ss'),'') FROM PL_PROCESS A WHERE A.REQ_ID = @P_REQ_ID AND A.PROCESS_ID = 'GDK_PYC' AND A.CHECKER_ID = @APPR4 ORDER BY A.APPROVE_DT DESC ) --------------------------- SET @DETAIL_ID = (SELECT TOP 1 REQDT_ID FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@P_REQ_ID) SELECT ROW_NUMBER() OVER (ORDER BY KQ.HH_NAME DESC) AS STT, KQ.* FROM ( SELECT HT.HH_TYPE_NAME,HH.HH_NAME,TRDT.DESCRIPTION, --CASE -- WHEN TRDT.UNIT_NAME IS NOT NULL AND TRDT.UNIT_NAME <> '' AND LEN(TRDT.UNIT_NAME) <10 -- THEN TRDT.UNIT_NAME -- ELSE DT.UNIT_NAME --END AS UNIT_NAME, ------------BAODNQ 25/10/2022 : LẤY UNIT_NAME TRONG TR_REQUEST_DOC_DT TRDT.UNIT_NAME AS UNIT_NAME, TRDT.QUANTITY,TRDT.CURRENCY, ISNULL(TRDT.PRICE_ETM,0) AS PRICE_ETM,ISNULL(TRDT.TOTAL_AMT_ETM,0) AS TOTAL_AMT_ETM,ISNULL(TRDT.PRICE,0) AS PRICE,ISNULL(TRDT.TOTAL_AMT,0) AS TOTAL_AMT, CTT.TRN_TYPE_NAME,CS.SUP_NAME, (SELECT ISNULL(FORMAT(TRDT.REQ_DT,'dd/MM/yyyy'),'')) REQ_DT, TRDT.EXCHANGE_RATE AS RATE FROM dbo.TR_REQUEST_DOC_DT TRDT LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=TRDT.HANGHOA_ID LEFT JOIN dbo.CM_HANGHOA_TYPE HT ON HT.HH_TYPE_ID=HH.HH_TYPE_ID LEFT JOIN dbo.CM_UNIT CU ON CU.UNIT_ID=HH.UNIT_ID LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=TRDT.SUP_ID LEFT JOIN PL_REQUEST_DOC_DT DT ON TRDT.PL_REQDT_ID = DT.REQDT_ID ------------BAODNQ 19/5/2022: Lấy thêm cột hình thức mua sắm------ LEFT JOIN CM_TRAN_TYPE CTT ON TRDT.TRAN_TYPE_ID = CTT.TRN_TYPE WHERE REQ_DOC_ID=@P_REQ_ID ) AS KQ SELECT TOP 1 HT.HH_TYPE_NAME,HH.HH_NAME,TRDT.DESCRIPTION, --CASE -- WHEN TRDT.UNIT_NAME IS NOT NULL AND TRDT.UNIT_NAME <> '' AND LEN(TRDT.UNIT_NAME) <10 -- THEN TRDT.UNIT_NAME -- ELSE DT.UNIT_NAME --END AS UNIT_NAME, ------------BAODNQ 25/10/2022 : LẤY UNIT_NAME TRONG TR_REQUEST_DOC_DT TRDT.UNIT_NAME AS UNIT_NAME, TRDT.QUANTITY,TRDT.CURRENCY, ISNULL(TRDT.PRICE_ETM,0) AS PRICE_ETM,ISNULL(TRDT.TOTAL_AMT_ETM,0) AS TOTAL_AMT_ETM,ISNULL(TRDT.PRICE,0) AS PRICE,ISNULL(TRDT.TOTAL_AMT,0) AS TOTAL_AMT, CS.SUP_NAME, (SELECT ISNULL(FORMAT(TRDT.REQ_DT,'dd/MM/yyyy'),'')) REQ_DT, ------PHÒNG BAN ĐỀ XUẤT---------- @FULLNAME AS DEP_NAME1, @POS AS TP_NAME1, @DATE AS TP_DATE_SIGN1, ------------PHÒNG HÀNH CHÍNH (Nhân viên xử lý gửi phê duyệt)----- @FULLNAME1 AS DEP_NAME2, --@POS1 AS TP_NAME2, CASE WHEN @FULLNAME1 IS NULL OR @FULLNAME1 = '' THEN '' ELSE N'NHÂN VIÊN XỬ LÝ' END AS TP_NAME2, @DATE1 AS TP_DATE_SIGN2, ------------PHÒNG HÀNH CHÍNH (Kiểm soát viên phê duyệt)----- @FULLNAME2 AS DEP_NAME3, --@POS2 AS TP_NAME3, CASE WHEN @FULLNAME2 IS NULL OR @FULLNAME2 = '' THEN '' ELSE N'NHÂN VIÊN KIỂM SOÁT' END AS TP_NAME3, @DATE2 AS TP_DATE_SIGN3, ------------PHÒNG HÀNH CHÍNH (Trưởng đơn vị DMMS phê duyệt)----- @FULLNAME3 AS DEP_NAME4, @POS3 AS TP_NAME4, @DATE3 AS TP_DATE_SIGN4, ------------PHÊ DUYỆT----- @FULLNAME4 AS DEP_NAME12, @POS4 AS TP_NAME12, @DATE4 AS TP_DATE_SIGN12 , TRDT.EXCHANGE_RATE AS RATE, DP.DEP_NAME AS DEP_CREATE, N'Ghi chú: ' + A.NOTES AS TP_NAME15 FROM dbo.TR_REQUEST_DOC_DT TRDT LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=TRDT.HANGHOA_ID LEFT JOIN dbo.CM_HANGHOA_TYPE HT ON HT.HH_TYPE_ID=HH.HH_TYPE_ID LEFT JOIN dbo.CM_UNIT CU ON CU.UNIT_ID=HH.UNIT_ID LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=TRDT.SUP_ID LEFT JOIN PL_REQUEST_DOC_DT DT ON TRDT.PL_REQDT_ID = DT.REQDT_ID LEFT JOIN TR_REQUEST_DOC A ON TRDT.REQ_DOC_ID = A.REQ_ID LEFT JOIN CM_DEPARTMENT DP ON A.DEP_CREATE = DP.DEP_ID WHERE REQ_DOC_ID=@P_REQ_ID --------BAODNQ : 4/3/2022 Select tổng cộng------------ SELECT ISNULL(SUM(KQ.QUANTITY),0) AS TOTAL_QUANTITY, ISNULL(SUM(KQ.TOTAL_AMT_ETM),0) AS TOTAL_AMT_ETM, ISNULL(SUM(KQ.TOTAL_AMT),0) AS TOTAL_AMT FROM (SELECT HT.HH_TYPE_NAME,HH.HH_NAME,TRDT.DESCRIPTION, --CASE -- WHEN TRDT.UNIT_NAME IS NOT NULL AND TRDT.UNIT_NAME <> '' AND LEN(TRDT.UNIT_NAME) <10 -- THEN TRDT.UNIT_NAME -- ELSE DT.UNIT_NAME --END AS UNIT_NAME, ------------BAODNQ 25/10/2022 : LẤY UNIT_NAME TRONG TR_REQUEST_DOC_DT TRDT.UNIT_NAME AS UNIT_NAME, TRDT.QUANTITY,TRDT.CURRENCY, ISNULL(TRDT.PRICE_ETM,0) AS PRICE_ETM,ISNULL(TRDT.TOTAL_AMT_ETM,0) AS TOTAL_AMT_ETM,ISNULL(TRDT.PRICE,0) AS PRICE,ISNULL(TRDT.TOTAL_AMT,0) AS TOTAL_AMT, CS.SUP_NAME, (SELECT ISNULL(FORMAT(TRDT.REQ_DT,'dd/MM/yyyy'),'')) REQ_DT, TRDT.EXCHANGE_RATE AS RATE FROM dbo.TR_REQUEST_DOC_DT TRDT LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=TRDT.HANGHOA_ID LEFT JOIN dbo.CM_HANGHOA_TYPE HT ON HT.HH_TYPE_ID=HH.HH_TYPE_ID LEFT JOIN dbo.CM_UNIT CU ON CU.UNIT_ID=HH.UNIT_ID LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=TRDT.SUP_ID LEFT JOIN PL_REQUEST_DOC_DT DT ON TRDT.PL_REQDT_ID = DT.REQDT_ID WHERE REQ_DOC_ID=@P_REQ_ID ) AS KQ -------------BAODNQ 3/8/2022 LẤY CHỮ KÝ PHÊ DUYỆT SAU ĐMMS----------------- DECLARE ---PTGDK HỖ TRỢ---- @p_ROLE_PTGD NVARCHAR(100), @p_PTGD_NAME NVARCHAR(100), @p_APPROVE_DT_PTGD NVARCHAR(50), ---GDK HỖ TRỢ---- @p_ROLE_GDK NVARCHAR(100), @p_GDK_NAME NVARCHAR(100), @p_APPROVE_DT_GDK NVARCHAR(50), ---GDK TÀI CHÍNH---- @p_ROLE_GDKTC NVARCHAR(100), @p_GDKTC_NAME NVARCHAR(100), @p_APPROVE_DT_GDKTC NVARCHAR(50), ---TP KẾ TOÁN---- @p_ROLE_KT NVARCHAR(100), @p_KT_NAME NVARCHAR(100), @p_APPROVE_DT_KT NVARCHAR(50), ---TKTGD---- @p_ROLE_TKTGD NVARCHAR(100), @p_TKTGD_NAME NVARCHAR(100), @p_APPROVE_DT_TKTGD NVARCHAR(50), ---TGD---- @p_ROLE_TGD NVARCHAR(100), @p_TGD_NAME NVARCHAR(100), @p_APPROVE_DT_TGD NVARCHAR(50) DECLARE @t_SIGN_TABLE_FINAL TABLE( ROLE_NAME NVARCHAR(100), APPROVE_DT NVARCHAR(50), SIGN_NAME NVARCHAR(100), TYPE VARCHAR(20) ) INSERT INTO @t_SIGN_TABLE_FINAL ---PTGDK HỖ TRỢ---- SELECT TOP 1 N'PHÓ TỔNG GIÁM ĐỐC KHỐI HỖ TRỢ' AS ROLE_NAME, ISNULL(FORMAT(PRP.APPROVE_DT, 'dd/MM/yyyy,HH:mm:ss'),'') AS APPROVE_DT, TU.TLFullName AS SIGN_NAME, 'PTGDK' AS TYPE FROM PL_REQUEST_PROCESS PRP LEFT JOIN TL_USER TU ON PRP.CHECKER_ID = TU.TLNANME WHERE PRP.REQ_ID = @P_REQ_ID AND PRP.PROCESS_ID = 'PTGDK_CDT' AND PRP.DVDM_ID = 'DM0000000000015' ---PHÒNG HỖ TRỢ AND PRP.STATUS = 'P' INSERT INTO @t_SIGN_TABLE_FINAL -----GDK hỗ trợ-------- SELECT TOP 1 N'GIÁM ĐỐC KHỐI HỖ TRỢ' AS ROLE_NAME, ISNULL(FORMAT(PRP.APPROVE_DT, 'dd/MM/yyyy,HH:mm:ss'),'') AS APPROVE_DT, TU.TLFullName AS SIGN_NAME, 'GDKHT' AS TYPE FROM PL_REQUEST_PROCESS PRP LEFT JOIN TL_USER TU ON PRP.CHECKER_ID = TU.TLNANME WHERE PRP.REQ_ID = @P_REQ_ID AND PRP.PROCESS_ID = 'GDK_PYC' AND PRP.DVDM_ID = 'DM0000000000015' ---PHÒNG HỖ TRỢ AND PRP.STATUS = 'P' INSERT INTO @t_SIGN_TABLE_FINAL ------GDK tài chính------ SELECT TOP 1 N'GIÁM ĐỐC KHỐI TÀI CHÍNH' AS ROLE_NAME, ISNULL(FORMAT(PRP.APPROVE_DT, 'dd/MM/yyyy,HH:mm:ss'),'') AS APPROVE_DT, TU.TLFullName AS SIGN_NAME, 'GDKTC' AS TYPE FROM PL_REQUEST_PROCESS PRP LEFT JOIN TL_USER TU ON PRP.CHECKER_ID = TU.TLNANME WHERE PRP.REQ_ID = @P_REQ_ID AND (PRP.PROCESS_ID = 'GDK_CDT_TC' OR PRP.PROCESS_ID = 'GDK_TC') AND PRP.DVDM_ID = 'DM0000000000017' AND PRP.STATUS = 'P' INSERT INTO @t_SIGN_TABLE_FINAL ------TP KẾ TOÁN--------- SELECT TOP 1 N'TRƯỞNG PHÒNG KẾ TOÁN' AS ROLE_NAME, ISNULL(FORMAT(PRP.APPROVE_DT, 'dd/MM/yyyy,HH:mm:ss'),'') AS APPROVE_DT, TU.TLFullName AS SIGN_NAME, 'KT' AS TYPE FROM PL_REQUEST_PROCESS PRP LEFT JOIN TL_USER TU ON PRP.CHECKER_ID = TU.TLNANME WHERE PRP.REQ_ID = @P_REQ_ID AND PRP.PROCESS_ID = 'DVCM' AND PRP.DVDM_ID = 'DM0000000000006' --DVCM là phòng KT AND PRP.STATUS = 'P' INSERT INTO @t_SIGN_TABLE_FINAL ------TKTGD------ SELECT TOP 1 N'THƯ KÝ BAN TỔNG GIÁM ĐỐC' AS ROLE_NAME, ISNULL(FORMAT(PRP.APPROVE_DT, 'dd/MM/yyyy,HH:mm:ss'),'') AS APPROVE_DT, TU.TLFullName AS SIGN_NAME, 'TKTGD' AS TYPE FROM PL_REQUEST_PROCESS PRP LEFT JOIN TL_USER TU ON PRP.CHECKER_ID = TU.TLNANME WHERE PRP.REQ_ID = @P_REQ_ID AND PRP.PROCESS_ID = 'TKTGD_CDT' AND PRP.DVDM_ID = 'DM0000000000013' AND PRP.STATUS = 'P' INSERT INTO @t_SIGN_TABLE_FINAL ------TGD------ SELECT TOP 1 N'TỔNG GIÁM ĐỐC' AS ROLE_NAME, ISNULL(FORMAT(PRP.APPROVE_DT, 'dd/MM/yyyy,HH:mm:ss'),'') AS APPROVE_DT, TU.TLFullName AS SIGN_NAME, 'TGD' AS TYPE FROM PL_REQUEST_PROCESS PRP LEFT JOIN TL_USER TU ON PRP.CHECKER_ID = TU.TLNANME WHERE PRP.REQ_ID = @P_REQ_ID AND PRP.PROCESS_ID = 'TGD_CDT' AND PRP.DVDM_ID = 'DM0000000000013' AND PRP.STATUS = 'P' ---PTGDK HỖ TRỢ---- SET @p_ROLE_PTGD = (SELECT A.ROLE_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'PTGDK') SET @p_PTGD_NAME = (SELECT A.SIGN_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'PTGDK') SET @p_APPROVE_DT_PTGD = (SELECT A.APPROVE_DT FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'PTGDK') ---GDK HỖ TRỢ---- SET @p_ROLE_GDK = (SELECT A.ROLE_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'GDKHT') SET @p_GDK_NAME = (SELECT A.SIGN_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'GDKHT') SET @p_APPROVE_DT_GDK = (SELECT A.APPROVE_DT FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'GDKHT') ---GDK TÀI CHÍNH---- SET @p_ROLE_GDKTC = (SELECT A.ROLE_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'GDKTC') SET @p_GDKTC_NAME = (SELECT A.SIGN_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'GDKTC') SET @p_APPROVE_DT_GDKTC = (SELECT A.APPROVE_DT FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'GDKTC') ---TP KẾ TOÁN---- SET @p_ROLE_KT = (SELECT A.ROLE_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'KT') SET @p_KT_NAME = (SELECT A.SIGN_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'KT') SET @p_APPROVE_DT_KT = (SELECT A.APPROVE_DT FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'KT') ---TKTGD---- SET @p_ROLE_TKTGD = (SELECT A.ROLE_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'TKTGD') SET @p_TKTGD_NAME = (SELECT A.SIGN_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'TKTGD') SET @p_APPROVE_DT_TKTGD = (SELECT A.APPROVE_DT FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'TKTGD') ---TGD---- SET @p_ROLE_TGD = (SELECT A.ROLE_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'TGD') SET @p_TGD_NAME = (SELECT A.SIGN_NAME FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'TGD') SET @p_APPROVE_DT_TGD = (SELECT A.APPROVE_DT FROM @t_SIGN_TABLE_FINAL A WHERE A.TYPE = 'TGD') --SELECT -- ISNULL(@p_ROLE_PTGD, '') AS ROLE_PTGD, -- ISNULL(@p_PTGD_NAME, '') AS PTGD_NAME, -- ISNULL(@p_APPROVE_DT_PTGD, '') AS APPROVE_DT_PTGD, -- ISNULL(@p_ROLE_GDK, '') AS ROLE_GDK, -- ISNULL(@p_GDK_NAME, '') AS GDK_NAME, -- ISNULL(@p_APPROVE_DT_GDK, '') AS APPROVE_DT_GDK, -- ISNULL(@p_ROLE_GDKTC, '') AS ROLE_GDKTC, -- ISNULL(@p_GDKTC_NAME, '') AS GDKTC_NAME, -- ISNULL(@p_APPROVE_DT_GDKTC, '') AS APPROVE_DT_GDKTC, -- ISNULL(@p_ROLE_KT, '') AS ROLE_KT, -- ISNULL(@p_KT_NAME, '') AS KT_NAME, -- ISNULL(@p_APPROVE_DT_KT, '') AS APPROVE_DT_KT, -- ISNULL(@p_ROLE_TKTGD, '') AS ROLE_TKTGD, -- ISNULL(@p_TKTGD_NAME, '') AS TKTGD_NAME, -- ISNULL(@p_APPROVE_DT_TKTGD, '') AS APPROVE_DT_TKTGD, -- ISNULL(@p_ROLE_TGD, '') AS ROLE_TGD, -- ISNULL(@p_TGD_NAME, '') AS TGD_NAME, -- ISNULL(@p_APPROVE_DT_TGD, '') AS APPROVE_DT_TGD ---------------nếu PYCMS theo chỉ định thầu---------------------- IF(EXISTS (SELECT * FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @P_REQ_ID)) BEGIN SELECT ISNULL(@p_ROLE_GDKTC, '') AS ROLE_KT_GDKTC, ISNULL(@p_GDKTC_NAME, '') AS KT_GDKTC_NAME, ISNULL(@p_APPROVE_DT_GDKTC, '') AS APPROVE_DT_KT_GDKTC, ISNULL(@p_ROLE_PTGD, '') AS ROLE_GDKTC_PTGD, ISNULL(@p_PTGD_NAME, '') AS GDKTC_PTGD_NAME, ISNULL(@p_APPROVE_DT_PTGD, '') AS APPROVE_DT_GDKTC_PTGD, ISNULL(@p_ROLE_GDK, '') AS ROLE_GDK, ISNULL(@p_GDK_NAME, '') AS GDK_NAME, ISNULL(@p_APPROVE_DT_GDK, '') AS APPROVE_DT_GDK, ISNULL(@p_ROLE_TKTGD, '') AS ROLE_TKTGD, ISNULL(@p_TKTGD_NAME, '') AS TKTGD_NAME, ISNULL(@p_APPROVE_DT_TKTGD, '') AS APPROVE_DT_TKTGD, ISNULL(@p_ROLE_TGD, '') AS ROLE_TGD, ISNULL(@p_TGD_NAME, '') AS TGD_NAME, ISNULL(@p_APPROVE_DT_TGD, '') AS APPROVE_DT_TGD END -----------------nếu PYCMS theo quy định------------------ ELSE BEGIN SELECT ISNULL(@p_ROLE_KT, '') AS ROLE_KT_GDKTC, ISNULL(@p_KT_NAME, '') AS KT_GDKTC_NAME, ISNULL(@p_APPROVE_DT_KT, '') AS APPROVE_DT_KT_GDKTC, ISNULL(@p_ROLE_GDKTC, '') AS ROLE_GDKTC_PTGD, ISNULL(@p_GDKTC_NAME, '') AS GDKTC_PTGD_NAME, ISNULL(@p_APPROVE_DT_GDKTC, '') AS APPROVE_DT_GDKTC_PTGD, ISNULL(@p_ROLE_GDK, '') AS ROLE_GDK, ISNULL(@p_GDK_NAME, '') AS GDK_NAME, ISNULL(@p_APPROVE_DT_GDK, '') AS APPROVE_DT_GDK END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[rpt_TR_REQ_PAY_KPI_Report]' GO ALTER PROC [dbo].[rpt_TR_REQ_PAY_KPI_Report] @p_TYPE_REPORT VARCHAR(250) = NULL, @p_ROLE VARCHAR(20) = NULL, @p_MAKER_ID VARCHAR(20) = NULL, @p_USER_LOGIN VARCHAR(50) = NULL, @p_FRM_DATE VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL AS BEGIN -- Get Role DECLARE @tbl_GDV TABLE(TLNAME VARCHAR(15)) DECLARE @tbl_KSV TABLE(TLNAME VARCHAR(15)) DECLARE @tbl_ALL TABLE(TLNAME VARCHAR(15)) insert into @tbl_GDV SELECT TLNANME FROM TL_USER WHERE RoleName = 'GDV' insert into @tbl_KSV SELECT TLNANME FROM TL_USER WHERE RoleName = 'KSV' insert into @tbl_ALL SELECT TLNANME FROM TL_USER WHERE RoleName = 'GDV' OR RoleName = 'KSV' DECLARE @p_FROM_DT DATE, @p_TO_DT DATE SET @p_FROM_DT =ISNULL(CONVERT(DATE,@p_FRM_DATE,103),'') SET @p_TO_DT =CONVERT(DATE,@p_TO_DATE,103) print '@p_FROM_DT: ' + CONVERT(VARCHAR(50),@p_FROM_DT) print '@p_TO_DT: ' + CONVERT(VARCHAR(50),@p_TO_DT) IF(@p_ROLE = 'GDV') BEGIN IF (@p_TYPE_REPORT='ASS') BEGIN SELECT ADDNEW_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM ASS_ADDNEW A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT USER_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_USE_MULTI_MASTER A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT TRANS_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_TRANSFER_MULTI_MASTER A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT COL_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_COLLECT_MULTI_MASTER A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT LIQ_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_LIQUIDATION A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') END ELSE IF (@p_TYPE_REPORT='MW') BEGIN SELECT A.IN_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM MW_IN_MASTER A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((ISNULL(@p_FROM_DT, '') = '' OR A.CREATE_DT_KT >=@p_FROM_DT ) AND A.CREATE_DT_KT <=@p_TO_DT) OR (( ISNULL(@p_FROM_DT, '') = '' OR A.APPROVE_DT_KT >=@p_FROM_DT) AND A.APPROVE_DT_KT <=@p_TO_DT) ) --AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.MAKER_ID_KT, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') OR (@p_ROLE = 'KSV' AND A.AUTH_STATUS_KT IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') ) UNION SELECT OUT_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.KT_MAKER_ID AS GDV, CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, KT_CHECKER_ID AS KSV, CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET FROM MW_OUT A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((ISNULL(@p_FROM_DT, '') = '' OR A.KT_CREATE_DT >=@p_FROM_DT) AND A.KT_CREATE_DT <=@p_TO_DT) OR ((ISNULL(@p_FROM_DT, '') = '' OR A.KT_APPROVE_DT >=@p_FROM_DT) AND A.KT_APPROVE_DT <=@p_TO_DT) ) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') ) UNION SELECT A.TRANSFER_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.KT_MAKER_ID AS GDV, CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, A.KT_CHECKER_ID AS KSV, CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET FROM MW_TRANSFER A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_CREATE_DT <=@p_TO_DT) OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT) ) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') ) UNION SELECT A.LIQ_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.KT_MAKER_ID AS GDV, CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, A.KT_CHECKER_ID AS KSV, CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET FROM MW_LIQ_MASTER A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_CREATE_DT <=@p_TO_DT) OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT) ) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') ) END ELSE IF (@p_TYPE_REPORT='PAY') BEGIN SELECT H.* FROM ( SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG, CONVERT(VARCHAR,MONTH(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.TRANSFER_DT),2) AS NGAY_NHAN_PHIEU, A.MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, A.CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, A.AUTH_STATUS_KT, PR.ID FROM TR_REQ_PAYMENT A LEFT JOIN PL_PROCESS PR ON A.REQ_PAY_ID = PR.REQ_ID AND (PR.PROCESS_ID = 'SUG' OR PR.PROCESS_ID = 'SEND') AND PR.CHECKER_ID IN (SELECT TLNAME FROM @tbl_GDV) WHERE 1=1 AND (PR.APPROVE_DT >= @p_FROM_DT AND PR.APPROVE_DT <=@p_TO_DT) AND (PR.CHECKER_ID = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) UNION SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG, CONVERT(VARCHAR,MONTH(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.TRANSFER_DT),2) AS NGAY_NHAN_PHIEU, A.MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, A.CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, A.AUTH_STATUS_KT , PR.ID FROM TR_REQ_ADVANCE_PAYMENT A LEFT JOIN PL_PROCESS PR ON A.REQ_PAY_ID = PR.REQ_ID AND (PR.PROCESS_ID = 'SUG' OR PR.PROCESS_ID = 'SEND') AND PR.CHECKER_ID IN (SELECT TLNAME FROM @tbl_GDV) WHERE 1=1 AND (PR.APPROVE_DT >= @p_FROM_DT AND PR.APPROVE_DT <=@p_TO_DT) AND (PR.CHECKER_ID = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) ) H ORDER BY H.MA_SO_PHIEU END END ELSE IF(@p_ROLE = 'KSV') BEGIN IF (@p_TYPE_REPORT='ASS') BEGIN SELECT ADDNEW_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM ASS_ADDNEW A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT USER_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_USE_MULTI_MASTER A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT TRANS_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_TRANSFER_MULTI_MASTER A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT COL_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_COLLECT_MULTI_MASTER A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT LIQ_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_LIQUIDATION A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') END ELSE IF (@p_TYPE_REPORT='MW') BEGIN SELECT A.IN_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM MW_IN_MASTER A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((ISNULL(@p_FROM_DT, '') = '' OR A.CREATE_DT_KT >=@p_FROM_DT ) AND A.CREATE_DT_KT <=@p_TO_DT) OR (( ISNULL(@p_FROM_DT, '') = '' OR A.APPROVE_DT_KT >=@p_FROM_DT) AND A.APPROVE_DT_KT <=@p_TO_DT) ) --AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.MAKER_ID_KT, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') OR (@p_ROLE = 'KSV' AND A.AUTH_STATUS_KT IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') ) UNION SELECT OUT_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.KT_MAKER_ID AS GDV, CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, KT_CHECKER_ID AS KSV, CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET FROM MW_OUT A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((ISNULL(@p_FROM_DT, '') = '' OR A.KT_CREATE_DT >=@p_FROM_DT) AND A.KT_CREATE_DT <=@p_TO_DT) OR ((ISNULL(@p_FROM_DT, '') = '' OR A.KT_APPROVE_DT >=@p_FROM_DT) AND A.KT_APPROVE_DT <=@p_TO_DT) ) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') ) UNION SELECT A.TRANSFER_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.KT_MAKER_ID AS GDV, CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, A.KT_CHECKER_ID AS KSV, CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET FROM MW_TRANSFER A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_CREATE_DT <=@p_TO_DT) OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT) ) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') ) UNION SELECT A.LIQ_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.KT_MAKER_ID AS GDV, CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, A.KT_CHECKER_ID AS KSV, CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET FROM MW_LIQ_MASTER A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_CREATE_DT <=@p_TO_DT) OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT) ) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') ) END ELSE IF (@p_TYPE_REPORT='PAY') BEGIN SELECT H.* FROM ( SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG, CONVERT(VARCHAR,MONTH(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.TRANSFER_DT),2) AS NGAY_NHAN_PHIEU, A.MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, A.CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, A.AUTH_STATUS_KT, PR.ID FROM TR_REQ_PAYMENT A LEFT JOIN PL_PROCESS PR ON A.REQ_PAY_ID = PR.REQ_ID AND (PR.NOTES =N'Trả về cho người tạo phiếu' OR PR.NOTES =N'Trả về' OR PR.PROCESS_ID = 'APP') AND PR.CHECKER_ID IN (SELECT TLNAME FROM @tbl_KSV) WHERE 1=1 AND (PR.APPROVE_DT >= @p_FROM_DT AND PR.APPROVE_DT <=@p_TO_DT) AND (PR.CHECKER_ID = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) UNION SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG, CONVERT(VARCHAR,MONTH(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.TRANSFER_DT),2) AS NGAY_NHAN_PHIEU, A.MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, A.CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, A.AUTH_STATUS_KT , PR.ID FROM TR_REQ_ADVANCE_PAYMENT A LEFT JOIN PL_PROCESS PR ON A.REQ_PAY_ID = PR.REQ_ID AND (PR.NOTES =N'Trả về cho người tạo phiếu' OR PR.NOTES =N'Trả về' OR PR.PROCESS_ID = 'APP') AND PR.CHECKER_ID IN (SELECT TLNAME FROM @tbl_KSV) WHERE 1=1 AND (PR.APPROVE_DT >= @p_FROM_DT AND PR.APPROVE_DT <=@p_TO_DT) AND (PR.CHECKER_ID = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) ) H ORDER BY H.MA_SO_PHIEU END END ELSE BEGIN IF (@p_TYPE_REPORT='ASS') BEGIN SELECT ADDNEW_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM ASS_ADDNEW A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT USER_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_USE_MULTI_MASTER A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT TRANS_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_TRANSFER_MULTI_MASTER A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT COL_MULTI_MASTER_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_COLLECT_MULTI_MASTER A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') UNION SELECT LIQ_ID AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT),2) AS NGAY_NHAN_PHIEU, MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM dbo.ASS_LIQUIDATION A WHERE 1=1 AND (CREATE_DT_KT >=@p_FROM_DT OR APPROVE_DT_KT >=@p_FROM_DT OR @p_FRM_DATE IS NULL OR @p_FRM_DATE ='') AND (CREATE_DT_KT <=@p_TO_DT OR APPROVE_DT_KT <=@p_TO_DT OR @p_TO_DATE IS NULL OR @p_TO_DATE ='') AND MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') END ELSE IF (@p_TYPE_REPORT='MW') BEGIN SELECT A.IN_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET FROM MW_IN_MASTER A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((ISNULL(@p_FROM_DT, '') = '' OR A.CREATE_DT_KT >=@p_FROM_DT ) AND A.CREATE_DT_KT <=@p_TO_DT) OR (( ISNULL(@p_FROM_DT, '') = '' OR A.APPROVE_DT_KT >=@p_FROM_DT) AND A.APPROVE_DT_KT <=@p_TO_DT) ) --AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.CREATE_DT_KT,'') <> '' AND A.CREATE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.APPROVE_DT_KT,'') <> '' AND A.APPROVE_DT_KT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.MAKER_ID_KT IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.MAKER_ID_KT, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') OR (@p_ROLE = 'KSV' AND A.AUTH_STATUS_KT IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.AUTH_STATUS_KT IN('A', 'U') AND ISNULL(A.CREATE_DT_KT, '') <> '') ) UNION SELECT OUT_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.KT_MAKER_ID AS GDV, CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, KT_CHECKER_ID AS KSV, CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET FROM MW_OUT A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((ISNULL(@p_FROM_DT, '') = '' OR A.KT_CREATE_DT >=@p_FROM_DT) AND A.KT_CREATE_DT <=@p_TO_DT) OR ((ISNULL(@p_FROM_DT, '') = '' OR A.KT_APPROVE_DT >=@p_FROM_DT) AND A.KT_APPROVE_DT <=@p_TO_DT) ) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') ) UNION SELECT A.TRANSFER_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.KT_MAKER_ID AS GDV, CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, A.KT_CHECKER_ID AS KSV, CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET FROM MW_TRANSFER A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_CREATE_DT <=@p_TO_DT) OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT) ) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') ) UNION SELECT A.LIQ_CODE AS MA_SO_PHIEU, A.CORE_NOTE AS NOI_DUNG, CONVERT(VARCHAR,MONTH(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT),2) AS NGAY_NHAN_PHIEU, A.KT_MAKER_ID AS GDV, CONVERT(VARCHAR,MONTH(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_CREATE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_CREATE_DT),2) AS NGAY_GDV_GUI_DUYET, A.KT_CHECKER_ID AS KSV, CONVERT(VARCHAR,MONTH(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.KT_APPROVE_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.KT_APPROVE_DT),2) AS NGAY_KSV_DUYET FROM MW_LIQ_MASTER A WHERE 1=1 AND A.AUTH_STATUS ='A' AND ( ((A.KT_CREATE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_CREATE_DT <=@p_TO_DT) OR ((A.KT_APPROVE_DT >=@p_FROM_DT OR ISNULL(@p_FROM_DT, '') = '') AND A.KT_APPROVE_DT <=@p_TO_DT) ) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT >= CONVERT(DATE, @p_FRM_DATE, 103)) --AND (ISNULL(A.KT_CREATE_DT,'') <> '' AND A.KT_CREATE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) OR (ISNULL(A.KT_APPROVE_DT,'') <> '' AND A.KT_APPROVE_DT <= CONVERT(DATE, @p_TO_DATE, 103)) AND A.KT_MAKER_ID IN (SELECT TLNANME FROM TL_USER WHERE SECUR_CODE ='DEP000000000022') AND (ISNULL(A.KT_MAKER_ID, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) AND ( (@p_ROLE = 'GDV' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') OR (@p_ROLE = 'KSV' AND A.KT_AUTH_STATUS IN ('A')) OR (ISNULL(@p_ROLE, '') = '' AND A.KT_AUTH_STATUS IN('A', 'U') AND ISNULL(A.KT_CREATE_DT, '') <> '') ) END ELSE IF (@p_TYPE_REPORT='PAY') BEGIN SELECT H.* FROM ( SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG, CONVERT(VARCHAR,MONTH(B.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(B.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(B.TRANSFER_DT),2) AS NGAY_NHAN_PHIEU, B.MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(B.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(B.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(B.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, B.CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(B.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(B.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(B.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, B.AUTH_STATUS_KT, B.ID FROM TR_REQ_PAYMENT A JOIN TR_REQ_KPI B ON A.REQ_PAY_ID = B.REQ_ID WHERE 1=1 AND (CONVERT(DATE,B.TRANSFER_DT,103) >= @p_FROM_DT AND CONVERT(DATE,B.TRANSFER_DT,103) <= @p_TO_DT) AND (ISNULL(B.MAKER_ID_KT, '') = @p_MAKER_ID OR ISNULL(B.CHECKER_ID_KT, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) UNION SELECT A.REQ_PAY_CODE AS MA_SO_PHIEU,A.REQ_REASON AS NOI_DUNG, A.REQ_AMT AS SO_TIEN_THANH_TOAN_TAM_UNG, CONVERT(VARCHAR,MONTH(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,DAY(A.TRANSFER_DT),2) +'/'+CONVERT(VARCHAR,YEAR(A.TRANSFER_DT),2) AS NGAY_NHAN_PHIEU, A.MAKER_ID_KT AS GDV, CONVERT(VARCHAR,MONTH(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.CREATE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.CREATE_DT_KT),2) AS NGAY_GDV_GUI_DUYET, A.CHECKER_ID_KT AS KSV, CONVERT(VARCHAR,MONTH(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,DAY(A.APPROVE_DT_KT),2) +'/'+CONVERT(VARCHAR,YEAR(A.APPROVE_DT_KT),2) AS NGAY_KSV_DUYET, A.AUTH_STATUS_KT , B.ID FROM TR_REQ_ADVANCE_PAYMENT A JOIN TR_REQ_KPI B ON A.REQ_PAY_ID = B.REQ_ID WHERE 1=1 AND (CONVERT(DATE,B.TRANSFER_DT,103) >= @p_FROM_DT AND CONVERT(DATE,B.TRANSFER_DT,103) <= @p_TO_DT) AND (ISNULL(B.MAKER_ID_KT, '') = @p_MAKER_ID OR ISNULL(B.CHECKER_ID_KT, '') = @p_MAKER_ID OR @p_MAKER_ID = '' OR @p_MAKER_ID IS NULL) ) H ORDER BY H.MA_SO_PHIEU END END END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_JOB_FORM_ById]' GO ALTER PROC [dbo].[TR_REQUEST_JOB_FORM_ById] @p_REQ_ID varchar(15), @p_USER_LOGIN varchar(20) NULL AS BEGIN DECLARE @PROCESS_CURR VARCHAR(20)= NULL SET @PROCESS_CURR=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' ) SELECT A.*,cas.AUTH_STATUS_NAME AS AUTH_STATUS_PROCESS_NAME, (CASE WHEN (B.TLFullName IS NOT NULL) THEN B.TLFullName WHEN (B.TLFullName IS NULL AND A.SIGN_USER IS NOT NULL) THEN (STUFF((SELECT DISTINCT ', ' + RE.TLNANME FROM FN_GET_USER_BY_ROLE(A.SIGN_USER,'','') RE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')) ELSE '' END) AS SIGN_USER_FULLNAME,C.EMP_CODE,C.EMP_NAME,C.POS_NAME AS TEN_CHUC_DANH,D.BRANCH_NAME AS EMP_BRANCH_NAME,E.DEP_NAME,F.REQ_CODE AS REQ_CAR_CODE,G.DEP_NAME AS EMP_DEP_NAME, (CASE WHEN (A.PROCESS_ID IN ('NEW','REJECT','HO_APP','HCHO_XL','TRAIN_UPD') AND (A.MAKER_ID = @p_USER_LOGIN OR A.EMP_ID = @p_USER_LOGIN)) THEN 'Y' WHEN (A.PROCESS_ID IN ('APPNEW','MAKER_CONF','TDV_APP') AND EXISTS (SELECT 1 FROM TL_USER_GET_ROLES(@p_USER_LOGIN) WHERE ROLE_ID ='NVDV')) THEN 'Y' ELSE 'N' END) AS IS_SAVE, (CASE WHEN (A.PROCESS_ID ='SIGN' OR @PROCESS_CURR ='TDV_APP') AND EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) WHERE ROLE_ID =RPN.ROLE_USER AND (BRANCH_ID =RPN.BRANCH_ID OR RPN.BRANCH_ID IS NULL OR RPN.BRANCH_ID='') AND (DEPT_ID=RPN.DEP_ID OR RPN.DEP_ID IS NULL OR RPN.DEP_ID ='')) THEN 'Y' WHEN ((A.PROCESS_ID = 'SEND' OR @PROCESS_CURR ='SIGN_APP') AND A.SIGN_USER=@p_USER_LOGIN ) THEN 'Y' WHEN ((A.PROCESS_ID = 'SEND' OR @PROCESS_CURR ='SIGN_APP') AND EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) WHERE ROLE_ID = A.SIGN_USER) ) THEN 'Y' WHEN (@PROCESS_CURR ='HOAPP' AND EXISTS (SELECT 1 FROM TL_USER_GET_ROLES(@p_USER_LOGIN) WHERE ROLE_ID ='NVDV')) THEN 'Y' ELSE 'N' END) AS IS_APPROVE, (CASE WHEN (EXISTS(SELECT 1 FROM TL_USER_GET_ROLES(@p_USER_LOGIN) WHERE ROLE_ID ='NVDV')) THEN 'Y' ELSE 'N' END) AS IS_NVDV FROM TR_REQUEST_JOB_FORM A LEFT JOIN TL_USER B ON B.TLNANME = A.SIGN_USER LEFT JOIN CM_EMPLOYEE_LOG C ON C.USER_DOMAIN = A.EMP_ID LEFT JOIN TL_USER D ON D.TLNANME = A.EMP_ID LEFT JOIN CM_AUTH_STATUS cas ON cas.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_DEPARTMENT E ON E.DEP_ID = D.DEP_ID LEFT JOIN dbo.TR_REQUEST_CAR F ON F.REQ_ID = A.REQ_CAR_ID LEFT JOIN CM_DEPARTMENT G ON G.DEP_ID = D.DEP_ID 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') ) WHERE A.REQ_ID= @p_REQ_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_JOB_FORM_App]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_JOB_FORM_App] @p_REQ_ID VARCHAR(15) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_PROCESS_DES NVARCHAR(MAX) = NULL AS DECLARE @sErrorCode VARCHAR(20),@aStatus VARCHAR(1),@TYPEMAIL VARCHAR(20),@COMPLETE BIT BEGIN TRANSACTION BEGIN DECLARE @DEP_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @PROCESS_CURR VARCHAR(20)= NULL,@DEP_CURR VARCHAR(20)= NULL,@ROLE_CURR VARCHAR(20)= NULL,@BRANCH_CURR VARCHAR(20)= NULL,@DVDM_ID VARCHAR(20),@PROCESS_NEXT VARCHAR(20)= NULL,@BRANCH_CREATE VARCHAR(20) SELECT TOP 1 @PROCESS_CURR = PROCESS_ID,@DEP_CURR = DEP_ID,@BRANCH_CURR=BRANCH_ID,@ROLE_CURR=ROLE_USER,@DVDM_ID= DVDM_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' SELECT @DEP_ID=B.DEP_ID, @BRANCH_ID=B.TLSUBBRID,@BRANCH_CREATE=C.TLSUBBRID FROM (SELECT EMP_ID,MAKER_ID FROM TR_REQUEST_JOB_FORM WHERE REQ_ID= @p_REQ_ID) A LEFT JOIN dbo.TL_USER B ON A.EMP_ID= B.TLNANME LEFT JOIN dbo.TL_USER C ON A.MAKER_ID= C.TLNANME PRINT @PROCESS_CURR IF(@PROCESS_CURR='APPNEW') BEGIN IF(NOT EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) WHERE ROLE_ID = @ROLE_CURR AND @ROLE_CURR<>'PTGD' AND @ROLE_CURR<>'GDK' AND (BRANCH_ID=@BRANCH_CURR OR @BRANCH_CURR=''OR @BRANCH_CURR IS NULL) AND DEPT_ID=@DEP_CURR OR @DEP_CURR=''OR @DEP_CURR IS NULL)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_CODE,0 COMPLETE,'' TYPEMAIL, '' REQ_ID, N'Bạn không được phép duyệt đối tượng này' ErrorDesc RETURN '-1' END ELSE IF(@ROLE_CURR IN ('PTGD','GDK') AND NOT EXISTS(SELECT 1 FROM dbo.FN_GET_USER_MANAGER_BY_DVCM((SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID =@DEP_ID),@ROLE_CURR))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_CODE,0 COMPLETE,'' TYPEMAIL, '' REQ_ID, N'Bạn không được phép duyệt đối tượng này' ErrorDesc RETURN '-1' END UPDATE TR_REQUEST_JOB_FORM SET AUTH_STATUS = 'U',PROCESS_ID='APPNEW',CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_REQ_ID IF @@Error <> 0 GOTO ABORT UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Trưởng đơn vị đã duyệt PYC công tác' WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='APPNEW' SET @COMPLETE = 1 INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'APPNEW',@p_CHECKER_ID,GETDATE(),@p_PROCESS_DES,N'Trưởng đơn vị đã duyệt PYC công tác' ) DECLARE @REQ_TYPE_BOOKING_AIR VARCHAR(15), @REQ_TYPE_BOOKING_HOTEL VARCHAR(15) SELECT @REQ_TYPE_BOOKING_AIR=REQ_TYPE_BOOKING_AIR,@REQ_TYPE_BOOKING_HOTEL=REQ_TYPE_BOOKING_HOTEL FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID IF(@REQ_TYPE_BOOKING_AIR='AIR_B') BEGIN SET @TYPEMAIL='SENDHO' INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'HO_APP','C','NVDV',@BRANCH_CREATE,'',NULL,'APPNEW','N','','',N'Chờ Hành chính HO xử lý',NULL,'' ) DECLARE @MAKER_ID VARCHAR(15) SELECT @MAKER_ID=MAKER_ID FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'MAKER_CONF','U',@MAKER_ID,'', '', NULL,'HO_APP','N','','',N'Chờ người tạo xác nhận',NULL,'' ) INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'HCHO_XL','U','NVDV',@BRANCH_CREATE,'',NULL,'MAKER_CONF','N','','', N'Chờ Hành chính HO xử lý',NULL,'' ) INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'MAKER_APP','U',@MAKER_ID,'','',NULL,'HCHO_XL','N','','',N'Chờ người tạo phiếu xác nhận chuyến đi hoàn tất',NULL,'' ) END ELSE IF(@REQ_TYPE_BOOKING_HOTEL='HOTEL_B') BEGIN SET @TYPEMAIL='SENDHO' INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID, 'HO_APP', 'C','NVDV', @BRANCH_CREATE, '',NULL, 'APPNEW','N','','',N'Chờ Hành chính HO xử lý',NULL,'' -- DEP_ID - varchar(20) ) INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,NOTES ) VALUES ( @p_REQ_ID,'APPROVE','U','','','',NULL,'HO_APP','Y',N'Hoàn tất' ) END ELSE BEGIN UPDATE TR_REQUEST_JOB_FORM SET AUTH_STATUS = 'A',PROCESS_ID='APPROVE',CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_REQ_ID INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,NOTES ) VALUES ( @p_REQ_ID,'APPROVE','C','','','',NULL,'APPNEW','Y',N'Hoàn tất' ) SET @TYPEMAIL='APPROVE' SET @COMPLETE = 1 END END ELSE IF(@PROCESS_CURR='SIGN_APP') BEGIN IF NOT EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM trjf WHERE trjf.SIGN_USER=@p_CHECKER_ID OR EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) WHERE ROLE_ID =trjf.SIGN_USER)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải người phê duyệt trung gian' ErrorDesc RETURN '-1' END UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P', CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=GETDATE(),NOTES=N'Cấp phê duyệt đã xác nhận' WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID=@PROCESS_CURR UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID=@PROCESS_CURR WHERE REQ_ID = @p_REQ_ID UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,@PROCESS_CURR,@p_CHECKER_ID,GETDATE(),@p_PROCESS_DES,N'Cấp phê duyệt trung gian đã xác nhận thông tin' ) SET @TYPEMAIL='SIGN_APP' SET @COMPLETE = 1 END ELSE IF(@PROCESS_CURR='TDV_APP') BEGIN IF(NOT EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) WHERE ROLE_ID = @ROLE_CURR AND @ROLE_CURR<>'PTGD' AND @ROLE_CURR<>'GDK' AND (BRANCH_ID=@BRANCH_CURR OR @BRANCH_CURR=''OR @BRANCH_CURR IS NULL) AND DEPT_ID=@DEP_CURR OR @DEP_CURR=''OR @DEP_CURR IS NULL)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_CODE,0 COMPLETE,'' TYPEMAIL, '' REQ_ID, N'Bạn không được phép duyệt đối tượng này' ErrorDesc RETURN '-1' END ELSE IF(@ROLE_CURR IN ('PTGD','GDK') AND NOT EXISTS(SELECT 1 FROM dbo.FN_GET_USER_MANAGER_BY_DVCM((SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID =@DEP_ID),@ROLE_CURR))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_CODE,0 COMPLETE,'' TYPEMAIL, '' REQ_ID, N'Bạn không được phép duyệt đối tượng này' ErrorDesc RETURN '-1' END UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P', CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='TDV_APP' UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='TDV_APP' WHERE REQ_ID = @p_REQ_ID UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'TDV_APP',@p_CHECKER_ID,GETDATE(),@p_PROCESS_DES,N'Trưởng phòng đã xác nhận thông tin' ) SET @TYPEMAIL='TDV_APP' SET @COMPLETE = 1 END ELSE IF(@PROCESS_CURR='HOAPP') BEGIN UPDATE TR_REQUEST_JOB_FORM SET AUTH_STATUS = 'A',PROCESS_ID='APPROVE',CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_REQ_ID UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P', CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='HOAPP' UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'HOAPP',@p_CHECKER_ID,GETDATE(),@p_PROCESS_DES,N'Hành chính HO đã phê duyệt' ) SET @TYPEMAIL='HOAPP' SET @COMPLETE = 1 END IF @@Error <> 0 GOTO ABORT END COMMIT TRANSACTION SELECT '0' as Result,@TYPEMAIL TYPEMAIL,@COMPLETE COMPLETE, '' 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'Altering [dbo].[TR_REQUEST_CAR_Search]' GO ALTER PROC [dbo].[TR_REQUEST_CAR_Search] @p_REQ_CODE varchar(150) = NULL, @p_USER_ID varchar(15) = NULL, @p_PHONE_USER varchar(15) = NULL, @p_BRANCH_ID varchar(15) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_DEP_ID varchar(15) = NULL, @p_DEP_CREATE varchar(15) = NULL, @p_ORIGN nvarchar(100) = NULL, @p_DESTINATION nvarchar(100) = NULL, @p_IS_SEND_APPR varchar(15) = NULL, @p_SEND_APPR_DT varchar(20) = NULL, @p_SIGN_USER varchar(15) = NULL, @p_SIGN_DT varchar(20) = NULL, @p_FROM_DATE varchar(20) = NULL, @p_TO_DATE varchar(20) = NULL, @p_NOTES nvarchar(MAX) = NULL, @p_CAR_ID varchar(15) = NULL, @p_DRIVER_ID varchar(15) = NULL, @p_QUANTITY_TRIP int = NULL, @p_NOTES_TRIP nvarchar(MAX) = NULL, @p_UNIT_TRIP varchar(5) = NULL, @p_TO_TRIP nvarchar(100) = NULL, @p_FROM_TRIP nvarchar(100) = NULL, @p_MILRAGE_TRIP int = NULL, @p_START_TIME_TRIP varchar(20) = NULL, @p_QUANTITY_RETURN_TRIP int = NULL, @p_NOTES_RETURN_TRIP varchar(MAX) = NULL, @p_UNIT_RETURN_TRIP varchar(5) = NULL, @p_TO_RETURN_TRIP nvarchar(100) = NULL, @p_FROM_RETURN_TRIP nvarchar(100) = NULL, @p_MILRAGE_RETURN_TRIP int = NULL, @p_START_TIME_RETURN_TRIP varchar(20) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_APPROVE_DT varchar(20) = NULL, @p_MODEL varchar(20) = NULL, @p_N_PLATE varchar(20) = NULL, @p_USER_LOGIN varchar(20) = NULL, @p_FDATE varchar(20)=NUll, @p_TDATE varchar(20)=NUll, @p_TOP INT = NULL AS BEGIN -- PAGING --DECLARE @LST_ROLE TABLE(ROLENAME VARCHAR(20)) --INSERT INTO @LST_ROLE (ROLENAME) (SELECT C.DisplayName FROM TL_USER A JOIN AbpUserRoles B ON B.UserId = A.ID JOIN AbpRoles C ON C.Id=B.RoleId WHERE A.TLNANME =@p_USER_LOGIN) --INSERT INTO @LST_ROLE (ROLENAME) (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) AND TLNAME=@p_USER_LOGIN) DECLARE @LST_ROLE TABLE(ROLENAME VARCHAR(20),BRANCH_ID VARCHAR(20),DEP_ID VARCHAR(20)) INSERT INTO @LST_ROLE (ROLENAME,BRANCH_ID,DEP_ID) (SELECT C.DisplayName,A.TLSUBBRID,A.DEP_ID FROM TL_USER A JOIN AbpUserRoles B ON B.UserId = A.ID JOIN AbpRoles C ON C.Id=B.RoleId WHERE A.TLNANME =@p_USER_LOGIN) INSERT INTO @LST_ROLE (ROLENAME,BRANCH_ID,DEP_ID) (SELECT ROLE_NEW,BRANCH_ID,DEP_ID FROM dbo.TL_SYS_ROLE_MAPPING WHERE CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) AND TLNAME=@p_USER_LOGIN) IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*,B.CONTENT AS AUTH_STATUS_PROCESS_NAME, D.BRANCH_NAME,E.TLFullName AS CHECKER_NAME,F.TLFullName AS MAKER_NAME,RPN.NOTES AS PROCESS_STATUS_NEXT, (CASE WHEN (A.PROCESS_ID IN ('CVSENDCONF','MAKER_APP') AND A.MAKER_ID=@p_USER_LOGIN ) THEN 'Y' WHEN (A.PROCESS_ID IN ('APPNEW', 'TDV_C_APP') AND EXISTS(SELECT * FROM @LST_ROLE WHERE ROLENAME IN('GDDV','PGD', 'TP', 'PP','TPGD','PPGD'))) THEN 'Y' WHEN (A.PROCESS_ID IN ('CV_APP') AND EXISTS (SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) tugr WHERE tugr.ROLE_ID='CVDDX' AND tugr.BRANCH_ID=A.BRANCH_CREATE)) THEN 'Y' WHEN (A.PROCESS_ID IN ('DONE') AND (EXISTS (SELECT A.* FROM TL_USER A JOIN AbpUserRoles B ON B.UserId = A.ID JOIN AbpRoles C ON C.Id=B.RoleId WHERE C.DisplayName IN('GDDV','PP')))) THEN 'Y' ELSE 'N' END) AS IS_APPROVE -- SELECT END FROM TR_REQUEST_CAR A LEFT JOIN CM_ALLCODE B ON ( B.CDVAL = A.AUTH_STATUS AND B.CDNAME='AUTH_STATUS' AND B.CDTYPE='TR_REQ_CAR') --LEFT JOIN CAR_MASTER C ON C.CAR_ID = A.CAR_ID LEFT JOIN CM_BRANCH D ON D.BRANCH_ID=A.BRANCH_ID LEFT JOIN TL_USER E ON E.TLNANME=A.CHECKER_ID LEFT JOIN TL_USER F ON F.TLNANME=A.MAKER_ID 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 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.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.AUTH_STATUS = @p_AUTH_STATUS OR (@p_AUTH_STATUS='M' AND (EXISTS(SELECT 1 from wsiSplit(RPN.ROLE_USER,',')WHERE value =@p_USER_LOGIN) OR EXISTS (SELECT 1 from wsiSplit(RPN.ROLE_USER,',')WHERE value IN(SELECT ROLENAME FROM @LST_ROLE WHERE (BRANCH_ID=RPN.BRANCH_ID OR RPN.BRANCH_ID IS NULL OR RPN.BRANCH_ID ='') AND (DEP_ID=RPN.DEP_ID OR RPN.DEP_ID IS NULL OR RPN.DEP_ID=''))))) --OR (@p_AUTH_STATUS='M' AND (EXISTS(SELECT 1 from wsiSplit(RPN.ROLE_USER,',')WHERE value =@p_USER_LOGIN) OR EXISTS (SELECT value from wsiSplit(RPN.ROLE_USER,',')WHERE value IN(SELECT ROLENAME FROM @LST_ROLE)))) -- OR (@p_AUTH_STATUS='M' AND RPN.ROLE_USER = 'CVDDX' AND EXISTS(SELECT 1 FROM CM_ALLCODE ca LEFT JOIN TL_USER tu ON ca.CDVAL= tu.TLNANME WHERE ca.CDNAME='REQCAR' AND ca.CDTYPE='TR' AND ca.CDVAL=@p_USER_LOGIN AND tu.TLSUBBRID=RPN.BRANCH_ID)) OR (@p_AUTH_STATUS='M' AND (RPNC.TLNAME = @p_USER_LOGIN)) OR (@p_AUTH_STATUS='M' AND ( A.AUTH_STATUS='E' OR a.IS_SEND_APPR<>'Y') AND (A.MAKER_ID= @p_USER_LOGIN)) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.MO_NAME LIKE '%' + @p_MODEL + '%' OR @p_MODEL IS NULL OR @p_MODEL = '') AND (A.N_PLATE LIKE '%' + @p_N_PLATE + '%' OR @p_N_PLATE IS NULL OR @p_N_PLATE = '') AND(CONVERT(DATE, A.REQ_DT)>=CONVERT(DATE, @p_FDATE, 103)OR @p_FDATE IS NULL OR @p_FDATE='') AND(CONVERT(DATE, A.REQ_DT)<=CONVERT(DATE, @p_TDATE, 103)OR @p_TDATE IS NULL OR @p_TDATE='') AND ((A.MAKER_ID=@p_USER_LOGIN) OR A.EMP_ID=@p_USER_LOGIN OR A.DRIVER_ID=@p_USER_LOGIN OR A.USER_UPDATE = @p_USER_LOGIN -- OR (EXISTS(SELECT 1 FROM CM_ALLCODE WHERE CDNAME='REQCAR' AND CDVAL=@p_USER_LOGIN) AND A.PROCESS_ID NOT IN('INSERT','CANCEL','SEND','REJECT')) OR (EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) tugr WHERE tugr.ROLE_ID='CVDDX' AND tugr.BRANCH_ID=A.BRANCH_CREATE ) AND A.PROCESS_ID NOT IN('INSERT','CANCEL','SEND','REJECT')) OR (EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE('GDDV',A.BRANCH_CREATE,A.DEP_CREATE)WHERE TLNANME=@p_USER_LOGIN) AND A.PROCESS_ID IN ('APPNEW','TDV_C_APP')) OR (EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE('GDDV','DV0001','DEP000000000014')WHERE TLNANME=@p_USER_LOGIN) AND A.PROCESS_ID IN ('DONE')) OR (A.USER_UPDATE=@p_USER_LOGIN AND A.PROCESS_ID IN('CV_SEND','USER_SEND')) OR(EXISTS(SELECT 1 FROM dbo.PL_REQUEST_PROCESS prp WHERE prp.REQ_ID=A.REQ_ID AND prp.CHECKER_ID=@p_USER_LOGIN AND prp.STATUS='P' AND A.AUTH_STATUS<>'D')) OR(EXISTS(SELECT 1 FROM dbo.PL_REQUEST_PROCESS_CHILD prpc WHERE prpc.REQ_ID=A.REQ_ID AND prpc.TLNAME=@p_USER_LOGIN AND prpc.STATUS_JOB='P' AND A.AUTH_STATUS<>'D')) ) ORDER BY A.REQ_ID DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(CONVERT(INT,@P_TOP))A.*,B.CONTENT AS AUTH_STATUS_PROCESS_NAME, D.BRANCH_NAME,E.TLFullName AS CHECKER_NAME,F.TLFullName AS MAKER_NAME,RPN.NOTES AS PROCESS_STATUS_NEXT, (CASE WHEN (A.PROCESS_ID IN ('CVSENDCONF','MAKER_APP') AND A.MAKER_ID=@p_USER_LOGIN ) THEN 'Y' WHEN (A.PROCESS_ID IN ('APPNEW', 'TDV_C_APP') AND EXISTS(SELECT * FROM @LST_ROLE WHERE ROLENAME IN('GDDV','PGD', 'TP', 'PP','TPGD','PPGD'))) THEN 'Y' WHEN (A.PROCESS_ID IN ('CV_APP') AND EXISTS (SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) tugr WHERE tugr.ROLE_ID='CVDDX' AND tugr.BRANCH_ID=A.BRANCH_CREATE)) THEN 'Y' WHEN (A.PROCESS_ID IN ('DONE') AND (EXISTS (SELECT A.* FROM TL_USER A JOIN AbpUserRoles B ON B.UserId = A.ID JOIN AbpRoles C ON C.Id=B.RoleId WHERE C.DisplayName IN('GDDV','PP')))) THEN 'Y' ELSE 'N' END) AS IS_APPROVE -- SELECT END FROM TR_REQUEST_CAR A LEFT JOIN CM_ALLCODE B ON ( B.CDVAL = A.AUTH_STATUS AND B.CDNAME='AUTH_STATUS' AND B.CDTYPE='TR_REQ_CAR') --LEFT JOIN CAR_MASTER C ON C.CAR_ID = A.CAR_ID LEFT JOIN CM_BRANCH D ON D.BRANCH_ID=A.BRANCH_ID LEFT JOIN TL_USER E ON E.TLNANME=A.CHECKER_ID LEFT JOIN TL_USER F ON F.TLNANME=A.MAKER_ID 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 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.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.AUTH_STATUS = @p_AUTH_STATUS OR (@p_AUTH_STATUS='M' AND (EXISTS(SELECT 1 from wsiSplit(RPN.ROLE_USER,',')WHERE value =@p_USER_LOGIN) OR EXISTS (SELECT 1 from wsiSplit(RPN.ROLE_USER,',')WHERE value IN(SELECT ROLENAME FROM @LST_ROLE WHERE (BRANCH_ID=RPN.BRANCH_ID OR RPN.BRANCH_ID IS NULL OR RPN.BRANCH_ID ='') AND (DEP_ID=RPN.DEP_ID OR RPN.DEP_ID IS NULL OR RPN.DEP_ID=''))))) --OR (@p_AUTH_STATUS='M' AND (EXISTS(SELECT value from wsiSplit(RPN.ROLE_USER,',')WHERE value =@p_USER_LOGIN) OR EXISTS (SELECT value from wsiSplit(RPN.ROLE_USER,',')WHERE value IN(SELECT ROLENAME FROM @LST_ROLE)))) OR (@p_AUTH_STATUS='M' AND ( A.AUTH_STATUS='E' OR a.IS_SEND_APPR<>'Y') AND (A.MAKER_ID= @p_USER_LOGIN)) -- OR (@p_AUTH_STATUS='M' AND RPN.ROLE_USER = 'CVDDX' AND EXISTS(SELECT 1 FROM CM_ALLCODE ca LEFT JOIN TL_USER tu ON ca.CDVAL= tu.TLNANME WHERE ca.CDNAME='REQCAR' AND ca.CDTYPE='TR' AND ca.CDVAL=@p_USER_LOGIN AND tu.TLSUBBRID=RPN.BRANCH_ID)) OR (@p_AUTH_STATUS='M' AND (RPNC.TLNAME = @p_USER_LOGIN)) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.MO_NAME LIKE '%' + @p_MODEL + '%' OR @p_MODEL IS NULL OR @p_MODEL = '') AND (A.N_PLATE LIKE '%' + @p_N_PLATE + '%' OR @p_N_PLATE IS NULL OR @p_N_PLATE = '') AND(CONVERT(DATE, A.REQ_DT)>=CONVERT(DATE, @p_FDATE, 103)OR @p_FDATE IS NULL OR @p_FDATE='') AND(CONVERT(DATE, A.REQ_DT)<=CONVERT(DATE, @p_TDATE, 103)OR @p_TDATE IS NULL OR @p_TDATE='') AND ((A.MAKER_ID=@p_USER_LOGIN) OR A.EMP_ID=@p_USER_LOGIN OR A.DRIVER_ID=@p_USER_LOGIN OR A.USER_UPDATE = @p_USER_LOGIN -- OR (EXISTS(SELECT 1 FROM CM_ALLCODE WHERE CDNAME='REQCAR' AND CDVAL=@p_USER_LOGIN) AND A.PROCESS_ID NOT IN('INSERT','CANCEL','SEND','REJECT')) OR (EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) tugr WHERE tugr.ROLE_ID='CVDDX' AND tugr.BRANCH_ID=A.BRANCH_CREATE ) AND A.PROCESS_ID NOT IN('INSERT','CANCEL','SEND','REJECT')) OR (EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE('GDDV',A.BRANCH_CREATE,A.DEP_CREATE)WHERE TLNANME=@p_USER_LOGIN) AND A.PROCESS_ID IN ('APPNEW','TDV_C_APP')) OR (EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE('GDDV','DV0001','DEP000000000014')WHERE TLNANME=@p_USER_LOGIN) AND A.PROCESS_ID IN ('DONE')) OR (A.USER_UPDATE=@p_USER_LOGIN AND A.PROCESS_ID IN('CV_SEND','USER_SEND')) OR(EXISTS(SELECT 1 FROM dbo.PL_REQUEST_PROCESS prp WHERE prp.REQ_ID=A.REQ_ID AND prp.CHECKER_ID=@p_USER_LOGIN AND prp.STATUS='P' AND A.AUTH_STATUS<>'D')) OR(EXISTS(SELECT 1 FROM dbo.PL_REQUEST_PROCESS_CHILD prpc WHERE prpc.REQ_ID=A.REQ_ID AND prpc.TLNAME=@p_USER_LOGIN AND prpc.STATUS_JOB='P' AND A.AUTH_STATUS<>'D')) ) ORDER BY A.REQ_ID DESC -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_CAR_COST_App]' GO ALTER PROC [dbo].[TR_REQUEST_CAR_COST_App] @p_REQ_ID VARCHAR(20) NULL, @p_USER_LOGIN VARCHAR(20) NULL, @p_PROCESS_DES NVARCHAR(500) NULL AS BEGIN TRANSACTION IF(EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS IN('E','R'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Phiếu yêu cầu xe số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại' ErrorDesc RETURN '-1' END DECLARE @p_MESSAGE NVARCHAR(150),@BRANCH_CREATE VARCHAR(15),@BRANCH_TYPE VARCHAR(15),@DEP_CREATE VARCHAR(15),@ROLE VARCHAR(15),@LSTROLE VARCHAR(20),@PROCESS_ID VARCHAR(20),@p_MAKER_ID VARCHAR(20),@pro_ID VARCHAR(20) DECLARE @LST_USER_RECIVE TABLE (TLNAME VARCHAR(10)) SELECT @PROCESS_ID=PROCESS_ID,@BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_ID BEGIN --DVKD && HỘI SỞ - PB HO CHO DUYỆT TRỰC TIẾP IF(@PROCESS_ID IN('TDV_C_APP','DONE') AND (EXISTS(SELECT 1 FROM FN_GET_USER_BY_ROLE('GDDV','DV0001','DEP000000000014') WHERE TLNANME=@p_USER_LOGIN) OR EXISTS(SELECT 1 FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND @BRANCH_CREATE<>'DV0001') )) BEGIN UPDATE TR_REQUEST_CAR SET PROCESS_ID='DONE', AUTH_STATUS='A',CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=CONVERT(datetime,GETDATE(),103) WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT SET @pro_ID='APPROVE' SET @p_MESSAGE=N'Phiếu yêu cầu xe số: '+(SELECT REQ_CODE FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID) +N' phê duyệt thành công. Phiếu yêu cầu xe hoàn tất' IF (@PROCESS_ID ='TDV_C_APP') BEGIN UPDATE PL_REQUEST_PROCESS SET STATUS='P', CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=CONVERT(DATETIME,GETDATE(),103),NOTES=N'Trưởng đơn vị xác nhận chi phí thành công' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='TDV_C_APP' AND STATUS='C' INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'DONE','P', @ROLE,@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),'GDDV','','','',N'Lãnh đạo HO đã phê duyệt','0' ) END ELSE BEGIN UPDATE PL_REQUEST_PROCESS SET STATUS='P',ROLE_USER=@ROLE,CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=CONVERT(DATETIME,GETDATE(),103),NOTES=N'Lãnh đạo HO đã phê duyệt' WHERE PROCESS_ID='DONE' AND REQ_ID=@p_REQ_ID AND STATUS='C' END INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'APPROVE','C', '','',CONVERT(DATETIME,GETDATE(),103),'DONE','Y','','',N'Hoàn tất','0' ) INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'DONE',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),@p_PROCESS_DES,N'Lãnh đạo HO đã phê duyệt' ) END ELSE IF (@PROCESS_ID='TDV_C_APP' AND EXISTS(SELECT 1 FROM FN_GET_USER_BY_ROLE('GDDV',@BRANCH_CREATE,@DEP_CREATE) WHERE TLNANME=@p_USER_LOGIN)) BEGIN UPDATE TR_REQUEST_CAR SET PROCESS_ID='DONE' WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT SET @pro_ID='DONE' SET @p_MESSAGE=N'Phiếu yêu cầu xe số: '+(SELECT REQ_CODE FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID) +N' phê duyệt thành công. Vui lòng đợi lãnh đạo hành chính HO phê duyệt' UPDATE PL_REQUEST_PROCESS SET STATUS='P', CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=CONVERT(DATETIME,GETDATE(),103),NOTES=N'Trưởng đơn vị xác nhận chi phí thành công' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='TDV_C_APP' AND STATUS='C' INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD,DEP_ID ) VALUES ( @p_REQ_ID,'DONE','C', 'GDDV','','','TDV_C_APP','N','','',N'Chờ Lãnh đạo HO phê duyệt','0' ,'DEP000000000014' ) INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'TDV_C_APP',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),@p_PROCESS_DES,N'Trưởng đơn vị phê duyệt' ) END END COMMIT TRANSACTION SELECT '1' AS Result,@pro_ID PROCESS_ID,@p_MESSAGE ErrorDesc RETURN '1' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result,N'Duyệt phiếu thất bại!' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_CAR_ById]' GO ALTER proc [dbo].[TR_REQUEST_CAR_ById] @p_REQ_ID VARCHAR(15), @p_USER_LOGIN NVARCHAR(20) AS BEGIN SELECT A.*,B.BRANCH_NAME, E.TLFullName AS DRIVER_NAME, F.TLFullName AS EMP_NAME,A.DRIVER_PHONE,G.TLFullName AS USER_UPDATE_FULLNAME,M.BRANCH_TYPE,C.TLFullName AS MAKER_NAME,C.EMAIL AS MAKER_EMAIL,N.DEP_NAME, (CASE WHEN (A.PROCESS_ID IN ('INSERT', 'REJECT') AND A.MAKER_ID = @p_USER_LOGIN) THEN 'Y' WHEN (A.PROCESS_ID IN ('CV_XL', 'CV_CAR_UPD','CV_SEND','CVINFO_UPD','MAKER_CONF','USER_SEND','CVCOSTUPD','COSTREJECT','CVREJUPD') AND EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) tugr WHERE tugr.ROLE_ID='CVDDX' AND tugr.BRANCH_ID=A.BRANCH_CREATE)) THEN 'Y' --WHEN (A.PROCESS_ID IN ('CV_SEND','MAKER_CONF','USER_UPD','CV_REJECT','MAKER_CONF') AND USER_UPDATE=@p_USER_LOGIN) THEN 'Y' WHEN (RPNC.TLNAME=@p_USER_LOGIN) THEN 'Y' ELSE 'N' END) AS IS_SAVE, (CASE WHEN (A.PROCESS_ID IN ('APPNEW', 'TDV_C_APP') AND EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE('GDDV',A.BRANCH_CREATE,A.DEP_CREATE) WHERE TLNANME=@p_USER_LOGIN) ) THEN 'Y' -- WHEN (A.PROCESS_ID IN ('CV_APP') AND EXISTS (SELECT 1 FROM CM_ALLCODE WHERE CDNAME='REQCAR' AND CDVAL=@p_USER_LOGIN)) THEN 'Y' WHEN (A.PROCESS_ID IN ('CV_APP') AND EXISTS (SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) tugr WHERE tugr.ROLE_ID='CVDDX' AND tugr.BRANCH_ID=A.BRANCH_CREATE)) THEN 'Y' WHEN (A.PROCESS_ID IN ('DONE') AND (EXISTS (SELECT 1 FROM TL_USER A JOIN AbpUserRoles B ON B.UserId = A.ID JOIN AbpRoles C ON C.Id=B.RoleId WHERE A.DEP_ID='DEP000000000014' AND C.DisplayName IN('GDDV','PP') AND A.TLNANME=@p_USER_LOGIN) AND A.AUTH_STATUS<>'A')) THEN 'Y' ELSE 'N' END) AS IS_APPROVE, (CASE WHEN (EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) tugr WHERE tugr.ROLE_ID='CVDDX' AND tugr.BRANCH_ID=A.BRANCH_CREATE)) THEN 'Y' ELSE 'N' END) AS IS_CV FROM TR_REQUEST_CAR A LEFT JOIN CM_BRANCH B ON B.BRANCH_ID = A.BRANCH_ID LEFT JOIN TL_USER C ON C.TLNANME = A.MAKER_ID LEFT JOIN TL_USER E ON E.TLNANME = A.DRIVER_ID LEFT JOIN TL_USER F ON F.TLNANME = A.EMP_ID LEFT JOIN TL_USER G ON G.TLNANME = A.USER_UPDATE LEFT JOIN CM_BRANCH M ON M.BRANCH_ID = A.BRANCH_CREATE 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 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') LEFT JOIN dbo.CM_DEPARTMENT N ON N.DEP_ID = A.DEP_ID WHERE A.REQ_ID=@p_REQ_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_ACCOUNT_PAY_Upd]' GO ALTER PROC [dbo].[CM_ACCOUNT_PAY_Upd] @p_REF_ID VARCHAR(15) = NULL, @p_ACC_TYPE VARCHAR(150) = NULL, @p_ACC_NO VARCHAR(150) = NULL, @p_ACC_NAME NVARCHAR(150) = NULL, @p_MAKER_ID VARCHAR(15)= NULL, @p_TK_GL VARCHAR(100)= NULL, @p_TK_GL_NAME NVARCHAR(1000)= NULL, @p_EDITOR_ID VARCHAR(15)= NULL AS BEGIN TRANSACTION -- CHUYEN THANH CHU IN HOA KHONG DAU SET @p_ACC_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(@p_ACC_NAME)) SET @p_TK_GL_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(@p_TK_GL_NAME)) IF(@p_TK_GL ='' OR @p_TK_GL IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tài khoản GL không được phép để trống' ErrorDesc RETURN '-1' END IF(@p_TK_GL_NAME ='' OR @p_TK_GL_NAME IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tên tài khoản GL không được phép để trống' ErrorDesc RETURN '-1' END IF(@p_ACC_NO ='' OR @p_ACC_NO IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Số tài khoản không được phép để trống' ErrorDesc RETURN '-1' END IF(@p_ACC_NAME ='' OR @p_ACC_NAME IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tên tài khoản không được phép để trống' ErrorDesc RETURN '-1' END IF(@p_ACC_TYPE ='ADV_PAY') BEGIN IF (@p_REF_ID IS NULL OR @p_REF_ID = '') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Người đề nghị tạm ứng không được phép để trống' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID <> @p_REF_ID AND ACC_NUM =@p_ACC_NO)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tài khoản tạm ứng ' + @p_ACC_NO + N' đã tồn tại trong hệ thống' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_TYPE='I' AND RECEIVER_DEBIT =@p_ACC_NO)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tài khoản tạm ứng ' + @p_ACC_NO + N' đã được sử dụng để tạm ứng (đã bắn bút toán tạm ứng vào core)' ErrorDesc RETURN '-1' END IF (LEN(@p_ACC_NO) < 13 OR LEN(@p_ACC_NO) > 13) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tài khoản tạm ứng nội bộ không hợp lệ: Tài khoản tạm ứng phải đủ 13 ký tự' ErrorDesc RETURN '-1' END IF (SUBSTRING(@p_ACC_NO,7,1) <> '8') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tài khoản tạm ứng nội bộ không hợp lệ: Ký tự thứ 7 phải là số 8' ErrorDesc RETURN '-1' END UPDATE CM_ACCOUNT_PAY SET ACC_NAME =@p_ACC_NAME, ACC_NUM =@p_ACC_NO,EDITOR_DT = GETDATE(), EDITOR_ID =@p_EDITOR_ID,AUTH_STATUS ='U' WHERE REF_ID =@p_REF_ID --- UPDATE TOAN BO CAC HACH TOAN CO SU DUNG TAI KHOAN TAM UNG --UPDATE TR_REQ_ADVANCE_PAYMENT SET RECEIVER_DEBIT =@p_ACC_NO WHERE REF_ID =@p_REF_ID AND REQ_TYPE ='I' --UPDATE TR_REQ_PAY_ENTRIES SET ACCT= @p_ACC_NO WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID =@p_REF_ID AND REQ_TYPE ='I') END ELSE IF(@p_ACC_TYPE ='CASA') BEGIN IF (LEN(@p_ACC_NO) < 13 OR LEN(@p_ACC_NO) > 13 AND @p_ACC_TYPE ='CASA') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tài khoản CASA không hợp lệ: Tài khoản CASA phải đủ 13 ký tự' ErrorDesc RETURN '-1' END --KIEM TRA XEM DA TON TAI TAM UNG NOI BO NAO SU DUNG SO TAI KHOAN TAM UNG CUA NHAN VIEN NAY HAY KHONG IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE AUTH_STATUS_KT ='A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tài khoản ' + @p_ACC_NO + N' đã được sử dụng để hạch toán (đã bắn bút toán tạm ứng vào core)' ErrorDesc RETURN '-1' END ELSE BEGIN UPDATE CM_ACCOUNT SET ACC_NAME =@p_ACC_NAME,AUTH_STATUS='U', TK_GL =@p_TK_GL,TK_GL_NAME =@p_TK_GL_NAME WHERE ACC_NO =@p_ACC_NO END END ELSE BEGIN /* IF (LEN(@p_ACC_NO) < 9 OR LEN(@p_ACC_NO) > 9 AND @p_ACC_TYPE ='GL') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tài khoản GL không hợp lệ: Tài khoản GL phải đủ 9 ký tự' ErrorDesc RETURN '-1' END */ IF(EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@p_ACC_NO)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, N'Tài khoản hạch toán đã tồn tại trong hệ thống' ErrorDesc RETURN '-1' END ELSE BEGIN INSERT INTO CM_ACCOUNT(ACC_NO,ACC_NAME,TK_GL,TK_GL_NAME,MAKER_ID,CREATE_DT,AUTH_STATUS,EDITOR_ID,EDITOR_DT,CHECKER_ID,APPROVE_DT) VALUES (@p_ACC_NO,@p_ACC_NAME,@p_TK_GL,@p_TK_GL_NAME,@p_MAKER_ID,GETDATE(),'U',NULL,NULL,NULL,NULL) END END -- UPDATE CHUNG UPDATE CM_ACCOUNT SET TK_GL =@p_TK_GL, TK_GL_NAME = @p_TK_GL_NAME WHERE ACC_NO =@p_ACC_NO COMMIT TRANSACTION SELECT '0' as Result, '' ACC_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ACC_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_CAR_App]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_CAR_App] @p_REQ_ID VARCHAR(15) = NULL, @p_CHECKER_ID VARCHAR(15)= NULL, @p_APPROVE_DT VARCHAR(20) =NULL, @p_PROCESS_DES NVARCHAR(500) =NULL AS BEGIN TRANSACTION -- xác định user là CV -- DECLARE @LSTCV VARCHAR(100) -- SELECT @LSTCV=COALESCE(@LSTCV +',','')+ CDVAL -- FROM dbo.CM_ALLCODE -- WHERE CDNAME='REQCAR' DECLARE @CODE VARCHAR(20),@DEP_CREATE VARCHAR(20), @BRANCH_CREATE VARCHAR(20),@PROCESS_ID VARCHAR(20),@PROCESS_CURR VARCHAR(20), @ErrorDesc NVARCHAR(1000) SELECT @CODE=REQ_CODE,@PROCESS_CURR=PROCESS_ID,@DEP_CREATE=DEP_CREATE,@BRANCH_CREATE=BRANCH_CREATE FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID IF(EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_ID AND AUTH_STATUS ='R')) BEGIN ROLLBACK TRANSACTION SELECT '0' Result, N'Phiếu yêu cầu xe số: '+@CODE +N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại' ErrorDesc RETURN '0' END IF(@PROCESS_CURR ='APPNEW') BEGIN IF(NOT EXISTS(SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE('GDDV',@BRANCH_CREATE,@DEP_CREATE) WHERE TLNANME=@p_CHECKER_ID)) BEGIN ROLLBACK TRANSACTION SELECT '0' Result,'' REQ_CODE, '' REQ_ID, N'Bạn không được phép duyệt đối tượng này!' ErrorDesc RETURN '0' END UPDATE dbo.TR_REQUEST_CAR SET AUTH_STATUS='U', PROCESS_ID='CV_APP' WHERE REQ_ID=@p_REQ_ID IF @@ERROR <> 0 GOTO ABORT SET @PROCESS_ID='CV_APP' SET @ErrorDesc= N'Phiếu yêu cầu xe số: ' +@CODE+ N' đã được xác nhận thành công. Vui lòng đợi chuyên viên điều động xe phê duyệt' UPDATE PL_REQUEST_PROCESS SET STATUS='P', CHECKER_ID =@p_CHECKER_ID, APPROVE_DT =GETDATE(),NOTES=N'Trưởng đơn vị phê duyệt' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID = @PROCESS_CURR INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'CV_APP', 'C','CVDDX', @BRANCH_CREATE,'','','','APPNEW','N','', '', N'Chờ chuyên viên điều động xe phê duyệt',NULL ) INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'APPNEW',@p_CHECKER_ID,convert(datetime,@p_APPROVE_DT,103),@p_PROCESS_DES,N'Trưởng đơn vị phê duyệt' ) END ELSE BEGIN IF(NOT EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) tugr WHERE tugr.ROLE_ID='CVDDX')) BEGIN ROLLBACK TRANSACTION SELECT '0' Result,'' REQ_CODE, '' REQ_ID, N'Bạn không được phép duyệt đối tượng này!' ErrorDesc RETURN '0' END UPDATE dbo.TR_REQUEST_CAR SET PROCESS_ID='CV_XL' WHERE REQ_ID=@p_REQ_ID IF @@ERROR <> 0 GOTO ABORT SET @PROCESS_ID='CV_XL' SET @ErrorDesc=N'Phiếu yêu cầu xe số: ' +@CODE+ N' đã được xác nhận thành công.' UPDATE PL_REQUEST_PROCESS SET STATUS='P', CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=GETDATE(),NOTES=N'Chuyên viên điều động xe phê duyệt' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='CV_APP' AND STATUS='C' INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'CV_XL', 'C','CVDDX',@BRANCH_CREATE ,'','',NULL,'CV_APP','N','', '', N'Chờ Chuyên viên điều động xe xử lý',NULL ) INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'CV_APP',@p_CHECKER_ID,convert(datetime,@p_APPROVE_DT,103),@p_PROCESS_DES,N'Chuyên viên điều động xe phê duyệt' ) END COMMIT TRANSACTION SELECT '1' AS Result, @p_REQ_ID REQ_ID ,@PROCESS_ID PROCESS_ID,@ErrorDesc ErrorDesc RETURN '1' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '0' AS Result, '' REQ_ID, 'Duyệt thất bại! Xin vui lòng thử lại' ErrorDesc RETURN '0' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[ASS_TRANSFER_MULTI_MASTER_App]' GO ALTER PROCEDURE [dbo].[ASS_TRANSFER_MULTI_MASTER_App] @p_TRANS_MULTI_MASTER_ID varchar(15), @p_AUTH_STATUS varchar(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION declare @l_OLD_LOCHIST_ID varchar(15) declare @l_LOCHIST_ID varchar(15) declare @l_ASSHIST_ID varchar(15) declare @l_ASSET_ID varchar(15) declare @l_BRANCH_ID varchar(15) declare @l_DEPT_ID varchar(15) declare @l_EMP_ID varchar(15) declare @l_DESC nvarchar(1000) declare @l_LOCATION nvarchar(500) DECLARE @l_MAKER_ID varchar(15) DECLARE @sToday varchar(10) = convert(varchar(10), @p_APPROVE_DT, 103) DECLARE @l_CUR_BRANCH_ID VARCHAR(15), @l_ASSET_TYPE VARCHAR(15), @l_AMORT_ACCTNO VARCHAR(50), @l_ASSET_GROUP VARCHAR(15), @l_ET_ID VARCHAR(15), @l_TRN_REF_NO VARCHAR(15), @l_DO_BRANCH_ID VARCHAR(15), @l_CUR_AMORT_AMT DECIMAL(18), @l_AMORT_STATUS VARCHAR(15) DECLARE @NOTE NVARCHAR(500), @CRET DATETIME SELECT @NOTE = NOTES, @CRET = CREATE_DT FROM [ASS_TRANSFER_MULTI_MASTER] WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANS_MULTI_MASTER_ID --LUCTV: 26-12-2018 KIEM TRA NEU TINH TRANG DANG LA 'R' THI KHONG CHO PHEP DUYET IF(EXISTS(SELECT * FROM ASS_TRANSFER_MULTI_MASTER WHERE AUTH_STATUS ='R' AND TRANS_MULTI_MASTER_ID =@p_TRANS_MULTI_MASTER_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' COL_MULTI_MASTER_ID, N'Thông tin điều chuyển tài sản đang bị trả về. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc RETURN '-1' END IF (SELECT CHARINDEX('ATGETD',@NOTE)) > 0 BEGIN SET @sToday = convert(varchar(10), @p_APPROVE_DT, 103) SET @P_APPROVE_DT = @sToday END --APPROVE MASTER UPDATE [dbo].[ASS_TRANSFER_MULTI_MASTER] SET AUTH_STATUS = 'A',AUTH_STATUS_KT='U', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(datetime, @p_APPROVE_DT, 103),MAKER_ID_KT = NULL,APPROVE_DT_KT = NULL, CHECKER_ID_KT = NULL WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANS_MULTI_MASTER_ID DECLARE @TRANSFER_MULTI_ID varchar(15), @IS_PRIVATE int = 0, @count int =0 DECLARE @ASSET_ID varchar(15), @BRANCH_ID_OLD VARCHAR(15), @DEP_ID_OLD VARCHAR(15), @EMP_ID_OLD VARCHAR(15) DECLARE DataCusor SCROLL CURSOR FOR SELECT A.TRANSFER_MULTI_ID,A.ASSET_ID FROM [dbo].[ASS_TRANSFER_MULTI_DT] A WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANS_MULTI_MASTER_ID OPEN DataCusor FETCH NEXT FROM DataCusor INTO @TRANSFER_MULTI_ID,@ASSET_ID WHILE @@FETCH_STATUS = 0 BEGIN --Lay thong tin SELECT @l_ASSET_ID = ASSET_ID, @l_BRANCH_ID = BRANCH_ID, @l_DEPT_ID = DEPT_ID, @l_EMP_ID = EMP_ID, @l_DESC = [DESCRIPTION], @l_LOCATION = LOCATION, @l_MAKER_ID = MAKER_ID, @BRANCH_ID_OLD = BRANCH_ID_OLD, @DEP_ID_OLD = DEPT_ID_OLD, @EMP_ID_OLD = EMP_ID_OLD FROM ASS_TRANSFER_MULTI_DT WHERE TRANSFER_MULTI_ID = @TRANSFER_MULTI_ID --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM ASS_TRANSFER_MULTI_DT WHERE TRANSFER_MULTI_ID = @TRANSFER_MULTI_ID)) SET @ERRORSYS = 'ASST-00001' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS CLOSE DataCusor DEALLOCATE DataCusor ROLLBACK TRANSACTION RETURN '-1' END /*****************NEU CHI CAP NHAT NHAN VIEN THI KHONG CHUYEN QUA KE TOAN BEGIN *****************************************/ SET @count = @count + 1 ------THIEUVQ 240419 IF @l_BRANCH_ID IS NOT NULL AND @l_DEPT_ID IS NOT NULL AND @l_EMP_ID IS NOT NULL AND @l_BRANCH_ID <> '' AND @l_DEPT_ID <> '' AND @l_EMP_ID <> '' AND @BRANCH_ID_OLD IS NOT NULL AND @DEP_ID_OLD IS NOT NULL AND @BRANCH_ID_OLD <> '' AND @DEP_ID_OLD <> '' AND @l_BRANCH_ID = @BRANCH_ID_OLD AND @l_DEPT_ID = @DEP_ID_OLD BEGIN SET @IS_PRIVATE = @IS_PRIVATE + 1 EXEC SYS_CodeMasters_Gen 'ASS_MASTER_HIST', @l_ASSHIST_ID out IF @l_ASSHIST_ID='' OR @l_ASSHIST_ID IS NULL GOTO ABORT INSERT INTO ASS_MASTER_HIST SELECT @l_ASSHIST_ID, a.* FROM ASS_MASTER a where a.ASSET_ID = @l_ASSET_ID IF @@Error <> 0 GOTO ABORT UPDATE ASS_MASTER SET --BRANCH_ID = @l_BRANCH_ID, --DEPT_ID = @l_DEPT_ID, EMP_ID = @l_EMP_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE ASSET_ID = @l_ASSET_ID IF @@Error <> 0 GOTO ABORT SELECT @l_OLD_LOCHIST_ID = LOCHIST_ID FROM ASS_LOCATION_HIST WHERE ASSET_ID = @l_ASSET_ID AND ISLEAF='Y' --Uptdae isleaf='N' and END_DATE = ngay hien tai cho record hien tai UPDATE ASS_LOCATION_HIST SET USE_END_DT = CONVERT(DATETIME,@P_APPROVE_DT,103), ISLEAF='N' WHERE ASSET_ID = @l_ASSET_ID AND ISLEAF='Y' EXEC SYS_CodeMasters_Gen 'ASS_LOCATION_HIST', @l_LOCHIST_ID out IF @l_LOCHIST_ID='' OR @l_LOCHIST_ID IS NULL GOTO ABORT --insert location moi INSERT INTO ASS_LOCATION_HIST ( LOCHIST_ID, ASSET_ID, USE_START_DT, USE_END_DT, BRANCH_ID, DEPT_ID, EMP_ID, LOCATION, ISLEAF, PARENT_ID ) VALUES ( @l_LOCHIST_ID, @l_ASSET_ID, CONVERT(DATETIME,@p_APPROVE_DT,103), NULL, @l_BRANCH_ID, @l_DEPT_ID, @l_EMP_ID, '', 'Y', @l_OLD_LOCHIST_ID ) IF @@Error <> 0 GOTO ABORT --INSERT VAO BANG ASS_TRANSACTIONS INSERT INTO ASS_TRANSACTIONS(ASSET_ID, TRN_ID, TRN_TYPE, TRN_DATE, RECORD_STATUS, AUTH_STATUS, [MAKER_ID], [CREATE_DT], [CHECKER_ID], [APPROVE_DT] )VALUES ( @l_ASSET_ID, @TRANSFER_MULTI_ID, 'TRANSFER', CONVERT(DATETIME, @sToday, 103), '1', 'A', @l_MAKER_ID, CONVERT(DATETIME, @sToday, 103), @p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103) ) IF @@Error <> 0 GOTO ABORT END ELSE BEGIN IF @IS_PRIVATE <> @count AND @IS_PRIVATE > 0 --DA CO 1 TAI SAN KHONG THUOC DIEU CHUYEN NOI BO BEGIN SELECT '-1' Result,'' COL_MULTI_MASTER_ID, N'Tài sản điều chuyển nội bộ phải tách biệt tài sản điều chuyển khác, vì giao dịch nội bộ sẽ không qua kế toán. Vui lòng kiểm tra lại danh sách.' ErrorDesc CLOSE DataCusor DEALLOCATE DataCusor ROLLBACK TRANSACTION RETURN '-1' END END /*****************NEU CHI CAP NHAT NHAN VIEN THI KHONG CHUYEN QUA KE TOAN END *****************************************/ FETCH NEXT FROM DataCusor INTO @TRANSFER_MULTI_ID,@ASSET_ID END --CAP NHAT BO QUA KE TOAN IF @IS_PRIVATE = @count BEGIN UPDATE [dbo].[ASS_TRANSFER_MULTI_MASTER] SET AUTH_STATUS_KT = 'A', CHECKER_ID_KT = 'admin', APPROVE_DT_KT = CONVERT(datetime, @p_APPROVE_DT, 103), CREATE_DT_KT = CONVERT(datetime, @p_APPROVE_DT, 103), MAKER_ID_KT = 'admin' WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANS_MULTI_MASTER_ID UPDATE ASS_TRANSFER_MULTI_DT SET AUTH_STATUS = 'A', CHECKER_ID_KT = 'admin', APPROVE_DT_KT = CONVERT(DATETIME,@p_APPROVE_DT,103), CREATE_DT_KT = CONVERT(DATETIME,@p_APPROVE_DT,103), MAKER_ID_KT = 'admin' WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANS_MULTI_MASTER_ID IF @@Error <> 0 GOTO ABORT END CLOSE DataCusor DEALLOCATE DataCusor -- GIANT 21/09/2021 INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_TRANS_MULTI_MASTER_ID, -- REQ_ID - varchar(15) 'APPROVE', -- PROCESS_ID - varchar(10) @p_CHECKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Trưởng đơn vị phê duyệt thành công' , N'Trưởng đơn vị phê duyệt' -- PROCESS_DESC - nvarchar(1000) ) -- HUYHT 01/11/2021 IF(@count = 0) BEGIN DECLARE @BRANCH_ID_BG VARCHAR(15), @DEP_ID_BG VARCHAR(15), @BRANCH_ID_BN VARCHAR(15), @DEP_ID_BN VARCHAR(15) SELECT TOP 1 @BRANCH_ID_BG = DT.BRANCH_ID_OLD, @DEP_ID_BG = DT.DEPT_ID_OLD, @BRANCH_ID_BN = DT.BRANCH_ID, @DEP_ID_BN = DT.DEPT_ID FROM dbo.ASS_TRANSFER_MULTI_MASTER AM INNER JOIN dbo.ASS_TRANSFER_MULTI_DT DT ON AM.TRANS_MULTI_MASTER_ID = DT.TRANS_MULTI_MASTER_ID WHERE AM.TRANS_MULTI_MASTER_ID = @p_TRANS_MULTI_MASTER_ID ORDER BY DT.TRANSFER_MULTI_ID ASC DECLARE @l_TRANS_MULTI_MASTER_CONFIRM_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'ASS_TRANSFER_CONFIRM_MASTER', @l_TRANS_MULTI_MASTER_CONFIRM_ID out IF @l_TRANS_MULTI_MASTER_CONFIRM_ID='' OR @l_TRANS_MULTI_MASTER_CONFIRM_ID IS NULL GOTO ABORT INSERT INTO [ASS_TRANSFER_CONFIRM_MASTER] ( [TRANS_MULTI_MASTER_CONFIRM_ID], [TRANS_MULTI_MASTER_ID], [BRANCH_ID_BG], [DEP_ID_BG], [BRANCH_ID_BN], [DEP_ID_BN] ) VALUES ( @l_TRANS_MULTI_MASTER_CONFIRM_ID, @p_TRANS_MULTI_MASTER_ID , @BRANCH_ID_BG, @DEP_ID_BG, @BRANCH_ID_BN, @DEP_ID_BN ) END COMMIT TRANSACTION SELECT '0' as Result, @p_TRANS_MULTI_MASTER_ID COL_MULTI_MASTER_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION CLOSE DataCusor DEALLOCATE DataCusor SELECT '-1' as Result, '' COL_MULTI_MASTER_ID, ERROR_MESSAGE() ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TL_USER_Search]' GO /* [dbo].[TL_USER_Search] @p_TLID = NULL, @p_TLNANME = '', @p_Password = '', @p_TLFullName = NULL, @p_TLSUBBRID = 'DV0001', @p_BRANCH_NAME = NULL, @p_BRANCH_TYPE = NULL, @p_RoleName = NULL, @p_EMAIL = NULL, @p_ADDRESS = NULL, @p_PHONE = NULL, @p_AUTH_STATUS = NULL, @p_MARKER_ID = NULL, @p_AUTH_ID = NULL, @p_APPROVE_DT = NULL, @p_ISAPPROVE = NULL, @p_Birthday = NULL, @p_ISFIRSTTIME = NULL, @p_SECUR_CODE = NULL, @p_TOP = 100, @p_Level = 'unit' */ ALTER PROCEDURE [dbo].[TL_USER_Search] @p_TLID varchar(15) = NULL, @p_TLNANME varchar(15) = NULL, @p_Password varchar(50) = NULL, @p_TLFullName nvarchar(200) = NULL, @p_TLSUBBRID varchar(15) = NULL, @p_BRANCH_NAME nvarchar(200) = NULL, @p_BRANCH_TYPE varchar(5) = NULL, @p_RoleName varchar(20) = NULL, @p_EMAIL varchar(50) = NULL, @p_ADDRESS varchar(100) = NULL, @p_PHONE varchar(15) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_MARKER_ID varchar(12) = NULL, @p_AUTH_ID varchar(12) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_ISAPPROVE varchar(1) = NULL, @p_Birthday VARCHAR(20) = NULL, @p_ISFIRSTTIME varchar(1) = NULL, @p_SECUR_CODE varchar(50) = NULL, @p_DEP_ID varchar(15) = NULL, @p_TOP INT = 10, @P_LEVEL varchar(10) = NULL AS --Validation is here /* DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( [NOT] EXISTS ( SELECT * FROM [TABLE] WHERE [CONDITION] )) SET @ERRORSYS = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END */ BEGIN -- PAGING BEGIN TRANSACTION -- Toannv DECLARE @BRANCH_ID VARCHAR(15) declare @tmp table(BRANCH_ID varchar(15)) IF(@p_SECUR_CODE IS NOT NULL AND @p_SECUR_CODE <> '') BEGIN SET @BRANCH_ID =ISNULL((SELECT BRANCH_ID FROM CM_DEPARTMENT WHERE DEP_ID=@p_SECUR_CODE),'') SET @p_TLSUBBRID = @BRANCH_ID END insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_TLSUBBRID) IF(@p_SECUR_CODE IS NOT NULL AND @p_SECUR_CODE <> '') SET @p_DEP_ID = @p_SECUR_CODE IF(@p_DEP_ID IS NOT NULL AND @p_DEP_ID <> '') SET @p_SECUR_CODE = @p_DEP_ID --IF(@p_MARKER_ID IS NULL OR @p_MARKER_ID ='') --BEGIN -- SET @p_MARKER_ID ='sangnm1' --END -----------------BAODNQ 17/11/2022 : BẢNG TẠM LƯU DEP_ID--------------------- DECLARE @t_DEP_ID_TMP TABLE(DEP_ID VARCHAR(15)) DECLARE @p_DEP_ID_TMP VARCHAR(15) ---------------NẾU CÓ TRUYỀN SECUR_CODE, LẤY RA NHỮNG DEP_ID THỎA ĐK:--------------- ---------------1.PHÒNG BAN TRUYỀN VÀO, 2.PHÒNG BAN CON CỦA PHÒNG BAN TRUYỀN VÀO, ---------------3.PHÒNG BAN ĐANG DC USER_LOGIN KIÊM NHIỆM GDDV, 4.PHÒNG BAN CON CỦA PHÒNG BAN DC USER_LOGIN KIÊM NHIỆM IF(@p_SECUR_CODE IS NOT NULL AND @p_SECUR_CODE <> '') BEGIN SET @p_DEP_ID_TMP = @p_SECUR_CODE PRINT @p_DEP_ID_TMP INSERT INTO @t_DEP_ID_TMP --------TH1 : DEP_ID TRUYỀN VÀO----------- SELECT @p_DEP_ID_TMP UNION --------TH2 : PHÒNG BAN CON CỦA DEP_ID TRUYỀN VÀO--------- SELECT DEP_ID FROM CM_DEPARTMENT CD WHERE CD.FATHER_ID = @p_DEP_ID_TMP UNION --------TH3 : PHÒNG BAN ĐANG DC USER_LOGIN KIÊM NHIỆM GDDV----------- SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING TSM WHERE TSM.TLNAME = @p_MARKER_ID AND ROLE_NEW = 'GDDV' AND CONVERT(DATE,GETDATE(),103) >= TSM.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TSM.EXP_DATE UNION ---------TH4 : PHÒNG BAN CON CỦA PHÒNG BAN ĐANG DC USER_LOGIN KIÊM NHIỆM GDDV----------- SELECT CDF.DEP_ID FROM TL_SYS_ROLE_MAPPING TSMF INNER JOIN CM_DEPARTMENT CDF ON CDF.FATHER_ID = TSMF.DEP_ID WHERE TSMF.TLNAME = @p_MARKER_ID AND CONVERT(DATE,GETDATE(),103) >= TSMF.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TSMF.EXP_DATE END -------------------ENDBAODNQ 17/11/2022-------------------- IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*, B.AUTH_STATUS_NAME,D.BRANCH_ID, D.BRANCH_CODE, DE.DEP_NAME,DE.DEP_CODE, dbo.FN_GET_CHINHANH(D.BRANCH_ID,'KV') KHU_VUC, dbo.FN_GET_CHINHANH(D.BRANCH_ID,'CN') CHI_NHANH, D.BRANCH_NAME PGD, D.TAX_NO,E.POS_NAME, E.EMP_CODE, --STUFF( (select ',' + R.[Name] FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') RoleName2 T.RoleName2 , CMA.ACC_NUM, CMA.ACC_NAME, CMA.ACC_TYPE, D.BRANCH_NAME AS BR_NAME, D.BRANCH_CODE + '-'+ D.BRANCH_NAME AS BR_FULL_NAME, DE.DEP_CODE +'-'+ DE.DEP_NAME AS DP_FULL_NAME, K.DVDM_ID AS KHOI_ID, K.DVDM_CODE AS KHOI_CODE, K.DVDM_NAME AS KHOI_NAME -- SELECT END FROM TL_USER A INNER JOIN CM_AUTH_STATUS B ON B.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH D ON A.TLSUBBRID = D.BRANCH_ID LEFT JOIN CM_DEPARTMENT DE ON A.DEP_ID = DE.DEP_ID --LEFT JOIN AbpUserRoles UR ON A.ID = UR.UserId --LEFT JOIN AbpRoles R ON R.Id = UR.RoleId -- GIANT 16/09/2021 LEFT JOIN CM_EMPLOYEE_LOG E ON A.TLNANME = E.USER_DOMAIN LEFT JOIN CM_ACCOUNT_PAY CMA ON A.TLNANME = CMA.REF_ID INNER JOIN (SELECT A2.ID, (SELECT stuff((SELECT ',' + CONVERT(VARCHAR(MAX),R1.[DisplayName]) FROM TL_USER A1 LEFT JOIN AbpUserRoles UR1 ON A1.ID = UR1.UserId LEFT JOIN AbpRoles R1 ON R1.Id = UR1.RoleId WHERE A1.ID=A2.ID FOR XML PATH ('') ), 1, 1, '')) AS [RoleName2] FROM TL_USER A2 GROUP BY A2.ID) T ON T.ID=A.ID LEFT JOIN CM_DVDM K ON DE.KHOI_ID = K.DVDM_ID AND K.IS_KHOI = '1' WHERE 1 = 1 AND (A.TLID LIKE '%' + @p_TLID + '%' OR @p_TLID IS NULL OR @p_TLID = '') AND (A.TLNANME LIKE '%' + @p_TLNANME + '%' OR @p_TLNANME IS NULL OR @p_TLNANME = '') AND (A.Password LIKE '%' + @p_Password + '%' OR @p_Password IS NULL OR @p_Password = '') AND (A.TLFullName LIKE '%' + @p_TLFullName + '%' OR @p_TLFullName IS NULL OR @p_TLFullName = '') --AND (A.TLSUBBRID LIKE '%' + @p_TLSUBBRID + '%' OR @p_TLSUBBRID IS NULL OR @p_TLSUBBRID = '') AND (A.BRANCH_NAME LIKE '%' + @p_BRANCH_NAME + '%' OR @p_BRANCH_NAME IS NULL OR @p_BRANCH_NAME = '') AND (A.BRANCH_TYPE LIKE '%' + @p_BRANCH_TYPE + '%' OR @p_BRANCH_TYPE IS NULL OR @p_BRANCH_TYPE = '') AND (A.RoleName LIKE '%' + @p_RoleName + '%' OR @p_RoleName IS NULL OR @p_RoleName = '') --AND ( -- (A.DEP_ID LIKE '%' + @p_DEP_ID + '%' -- --OR (SELECT TOP 1 TRM.DEP_ID FROM TL_SYS_ROLE_MAPPING TRM -- -- WHERE TRM.TLNAME = A.TLNANME -- -- AND GETDATE() >= TRM.EFF_DATE AND GETDATE() <= TRM.EXP_DATE -- -- ) LIKE '%' + @p_DEP_ID + '%' -- ----------BAODNQ 30/9/2022 : Thêm xử lý tìm kiếm ủy quyền kiêm nhiệm-------- -- OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM -- WHERE TRM.TLNAME = A.TLNANME -- AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE -- AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE -- AND TRM.DEP_ID = @p_DEP_ID -- ) -- OR A.DEP_ID IN (SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING TRM WHERE 1=1 -- AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE -- AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE -- AND TRM.TLNAME = @p_MARKER_ID) -- OR (@p_TLSUBBRID <> 'DV0001' AND A.TLSUBBRID =@p_TLSUBBRID) -- OR (@BRANCH_ID <> 'DV0001' AND A.TLSUBBRID =@BRANCH_ID) -- ) -- OR (@p_DEP_ID IS NULL OR @p_DEP_ID = '' OR @p_SECUR_CODE IS NULL OR @p_SECUR_CODE ='') -- OR (A.SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@p_SECUR_CODE)) -- OR (A.SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@p_DEP_ID)) --) --------------BAODNQ 17/11/2022 : CHỈNH SỬA LẠI ĐIỀU KIỆN TÌM KIẾM THEO DEP_ID------------------- AND( (A.DEP_ID IN (SELECT DEP_ID FROM @t_DEP_ID_TMP) OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM WHERE TRM.TLNAME = A.TLNANME AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE AND TRM.DEP_ID IN (SELECT DEP_ID FROM @t_DEP_ID_TMP) ) ) OR (@p_DEP_ID IS NULL OR @p_DEP_ID = '') ) -------------ENDBAODNQ---------------------- AND (A.EMAIL LIKE '%' + @p_EMAIL + '%' OR @p_EMAIL IS NULL OR @p_EMAIL = '') AND (A.ADDRESS LIKE '%' + @p_ADDRESS + '%' OR @p_ADDRESS IS NULL OR @p_ADDRESS = '') AND (A.PHONE LIKE '%' + @p_PHONE + '%' OR @p_PHONE IS NULL OR @p_PHONE = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') --AND (A.MARKER_ID LIKE '%' + @p_MARKER_ID + '%' OR @p_MARKER_ID IS NULL OR @p_MARKER_ID = '') AND (A.AUTH_ID LIKE '%' + @p_AUTH_ID + '%' OR @p_AUTH_ID IS NULL OR @p_AUTH_ID = '') AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (A.ISAPPROVE LIKE '%' + @p_ISAPPROVE + '%' OR @p_ISAPPROVE IS NULL OR @p_ISAPPROVE = '') AND (DATEDIFF(DAY,A.Birthday ,CONVERT(DATETIME, @p_Birthday, 103)) = 0 OR @p_Birthday IS NULL OR @p_Birthday = '') AND (A.ISFIRSTTIME LIKE '%' + @p_ISFIRSTTIME + '%' OR @p_ISFIRSTTIME IS NULL OR @p_ISFIRSTTIME = '') AND (A.RoleName <> 'DISABLE') --AND ( -- (A.SECUR_CODE LIKE '%' + @p_SECUR_CODE + '%' -- --OR (SELECT TOP 1 TRM.DEP_ID FROM TL_SYS_ROLE_MAPPING TRM -- -- WHERE TRM.TLNAME = A.TLNANME -- -- AND GETDATE() >= TRM.EFF_DATE AND GETDATE() <= TRM.EXP_DATE -- -- ) LIKE '%' + @p_SECUR_CODE + '%' -- ----------BAODNQ 30/9/2022 : Thêm xử lý tìm kiếm ủy quyền kiêm nhiệm-------- -- OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM -- WHERE TRM.TLNAME = A.TLNANME -- AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE -- AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE -- AND TRM.DEP_ID = @p_SECUR_CODE -- ) -- OR (@p_TLSUBBRID <> 'DV0001' AND A.TLSUBBRID =@p_TLSUBBRID) -- OR (@BRANCH_ID <> 'DV0001' AND A.TLSUBBRID =@BRANCH_ID) -- ) -- OR (@p_DEP_ID IS NULL OR @p_DEP_ID = '' OR @p_SECUR_CODE IS NULL OR @p_SECUR_CODE ='') -- OR (A.SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@p_SECUR_CODE)) -- OR (A.SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@p_DEP_ID)) --) --------------BAODNQ 17/11/2022 : CHỈNH SỬA LẠI ĐIỀU KIỆN TÌM KIẾM THEO SECUR_CODE------------------- AND( (A.SECUR_CODE IN (SELECT DEP_ID FROM @t_DEP_ID_TMP) OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM WHERE TRM.TLNAME = A.TLNANME AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE AND TRM.DEP_ID IN (SELECT DEP_ID FROM @t_DEP_ID_TMP) ) ) OR (@p_SECUR_CODE IS NULL OR @p_SECUR_CODE = '') ) --------------ENDBAODNQ------------------- AND (A.TLNANME != 'admin') --AND (A.TLSUBBRID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_TLSUBBRID))) --AND ((@P_LEVEL = 'ALL' AND A.TLSUBBRID IN (SELECT BRANCH_ID from @tmp) --OR (@P_LEVEL = 'UNIT' AND A.TLSUBBRID = @p_TLSUBBRID)) OR @p_TLSUBBRID = '' OR @p_TLSUBBRID IS NULL --) AND( (@P_LEVEL = 'ALL' AND (A.TLSUBBRID IN (SELECT BRANCH_ID from @tmp) --OR (SELECT TOP 1 TRM.BRANCH_ID -- FROM TL_SYS_ROLE_MAPPING TRM -- WHERE TRM.TLNAME = A.TLNANME -- AND GETDATE() >= TRM.EFF_DATE AND GETDATE() <= TRM.EXP_DATE -- ) IN (SELECT BRANCH_ID from @tmp) ----------BAODNQ 30/9/2022 : Thêm xử lý tìm kiếm ủy quyền kiêm nhiệm-------- OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM WHERE 1=1 AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE AND TRM.BRANCH_ID IN (SELECT BRANCH_ID from @tmp) ) OR (@BRANCH_ID <> 'DV0001' AND A.TLSUBBRID =@BRANCH_ID) ) ) OR(@P_LEVEL = 'UNIT' AND (A.TLSUBBRID = @p_TLSUBBRID --OR (SELECT TOP 1 TRM.BRANCH_ID -- FROM TL_SYS_ROLE_MAPPING TRM -- WHERE TRM.TLNAME = A.TLNANME -- AND GETDATE() >= TRM.EFF_DATE AND GETDATE() <= TRM.EXP_DATE -- ) = @p_TLSUBBRID ----------BAODNQ 30/9/2022 : Thêm xử lý tìm kiếm ủy quyền kiêm nhiệm-------- OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM WHERE TRM.TLNAME = A.TLNANME AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE AND TRM.BRANCH_ID = @p_TLSUBBRID ) OR A.DEP_ID IN (SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING TRM WHERE 1=1 AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE AND TRM.TLNAME = @p_MARKER_ID) OR (@BRANCH_ID <> 'DV0001' AND A.TLSUBBRID =@BRANCH_ID) ) ) --OR @BRANCH_ID = '' OR @BRANCH_ID IS NULL OR(@p_TLSUBBRID IS NULL OR @p_TLSUBBRID = '') --OR (A.SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@p_SECUR_CODE)) --OR (A.SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@p_DEP_ID)) ) -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(CONVERT(INT,@P_TOP))A.*, B.AUTH_STATUS_NAME,D.BRANCH_ID, D.BRANCH_CODE, DE.DEP_NAME,DE.DEP_CODE, dbo.FN_GET_CHINHANH(D.BRANCH_ID,'KV') KHU_VUC, dbo.FN_GET_CHINHANH(D.BRANCH_ID,'CN') CHI_NHANH, D.BRANCH_NAME PGD, D.TAX_NO,E.POS_NAME, E.EMP_CODE, --STUFF( (select ',' + R.[Name] FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') RoleName2 T.RoleName2, CMA.ACC_NUM, CMA.ACC_NAME, CMA.ACC_TYPE, D.BRANCH_NAME AS BR_NAME, D.BRANCH_CODE + '-'+ D.BRANCH_NAME AS BR_FULL_NAME, DE.DEP_CODE +'-'+ DE.DEP_NAME AS DP_FULL_NAME, K.DVDM_ID AS KHOI_ID, K.DVDM_CODE AS KHOI_CODE, K.DVDM_NAME AS KHOI_NAME -- SELECT END FROM TL_USER A INNER JOIN CM_AUTH_STATUS B ON B.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH D ON D.BRANCH_ID = A.TLSUBBRID LEFT JOIN CM_DEPARTMENT DE ON A.DEP_ID = DE.DEP_ID --LEFT JOIN AbpUserRoles UR ON A.ID = UR.UserId --LEFT JOIN AbpRoles R ON R.Id = UR.RoleId -- GIANT 16/09/2021 LEFT JOIN CM_EMPLOYEE_LOG E ON A.TLNANME = E.USER_DOMAIN LEFT JOIN CM_ACCOUNT_PAY CMA ON A.TLNANME = CMA.REF_ID INNER JOIN (SELECT A2.ID, (SELECT stuff((SELECT ',' + CONVERT(VARCHAR(MAX),R1.[DisplayName]) FROM TL_USER A1 LEFT JOIN AbpUserRoles UR1 ON A1.ID = UR1.UserId LEFT JOIN AbpRoles R1 ON R1.Id = UR1.RoleId WHERE A1.ID=A2.ID FOR XML PATH ('') ), 1, 1, '')) AS [RoleName2] FROM TL_USER A2 GROUP BY A2.ID) T ON T.ID=A.ID LEFT JOIN CM_DVDM K ON DE.KHOI_ID = K.DVDM_ID AND K.IS_KHOI = '1' WHERE 1 = 1 AND (A.TLID LIKE '%' + @p_TLID + '%' OR @p_TLID IS NULL OR @p_TLID = '') AND (A.TLNANME LIKE '%' + @p_TLNANME + '%' OR @p_TLNANME IS NULL OR @p_TLNANME = '') AND (A.Password LIKE '%' + @p_Password + '%' OR @p_Password IS NULL OR @p_Password = '') AND (A.TLFullName LIKE '%' + @p_TLFullName + '%' OR @p_TLFullName IS NULL OR @p_TLFullName = '') --AND (A.TLSUBBRID LIKE '%' + @p_TLSUBBRID + '%' OR @p_TLSUBBRID IS NULL OR @p_TLSUBBRID = '') AND (A.BRANCH_NAME LIKE '%' + @p_BRANCH_NAME + '%' OR @p_BRANCH_NAME IS NULL OR @p_BRANCH_NAME = '') AND (A.BRANCH_TYPE LIKE '%' + @p_BRANCH_TYPE + '%' OR @p_BRANCH_TYPE IS NULL OR @p_BRANCH_TYPE = '') AND (A.RoleName LIKE '%' + @p_RoleName + '%' OR @p_RoleName IS NULL OR @p_RoleName = '') AND (A.EMAIL LIKE '%' + @p_EMAIL + '%' OR @p_EMAIL IS NULL OR @p_EMAIL = '') AND (A.ADDRESS LIKE '%' + @p_ADDRESS + '%' OR @p_ADDRESS IS NULL OR @p_ADDRESS = '') AND (A.PHONE LIKE '%' + @p_PHONE + '%' OR @p_PHONE IS NULL OR @p_PHONE = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') --AND (A.MARKER_ID LIKE '%' + @p_MARKER_ID + '%' OR @p_MARKER_ID IS NULL OR @p_MARKER_ID = '') AND (A.AUTH_ID LIKE '%' + @p_AUTH_ID + '%' OR @p_AUTH_ID IS NULL OR @p_AUTH_ID = '') AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (A.ISAPPROVE LIKE '%' + @p_ISAPPROVE + '%' OR @p_ISAPPROVE IS NULL OR @p_ISAPPROVE = '') AND (DATEDIFF(DAY,A.Birthday ,CONVERT(DATETIME, @p_Birthday, 103)) = 0 OR @p_Birthday IS NULL OR @p_Birthday = '') AND (A.ISFIRSTTIME LIKE '%' + @p_ISFIRSTTIME + '%' OR @p_ISFIRSTTIME IS NULL OR @p_ISFIRSTTIME = '') AND (A.RoleName <> 'DISABLE') --AND ( -- (A.SECUR_CODE LIKE '%' + @p_SECUR_CODE + '%' -- --OR (SELECT TOP 1 TRM.DEP_ID FROM TL_SYS_ROLE_MAPPING TRM -- -- WHERE TRM.TLNAME = A.TLNANME -- -- AND GETDATE() >= TRM.EFF_DATE AND GETDATE() <= TRM.EXP_DATE -- -- ) LIKE '%' + @p_SECUR_CODE + '%' -- ----------BAODNQ 30/9/2022 : Thêm xử lý tìm kiếm ủy quyền kiêm nhiệm-------- -- OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM -- WHERE TRM.TLNAME = A.TLNANME -- AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE -- AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE -- AND TRM.DEP_ID = @p_SECUR_CODE -- ) -- OR A.DEP_ID IN (SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING TRM -- WHERE 1=1 -- AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE -- AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE -- AND TRM.TLNAME = @p_MARKER_ID) -- OR (@p_TLSUBBRID <> 'DV0001' AND A.TLSUBBRID =@p_TLSUBBRID) -- OR (@BRANCH_ID <> 'DV0001' AND A.TLSUBBRID =@BRANCH_ID) -- ) -- OR (@p_DEP_ID IS NULL OR @p_DEP_ID = '' OR @p_SECUR_CODE IS NULL OR @p_SECUR_CODE ='') -- OR (A.SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@p_SECUR_CODE)) -- OR (A.SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@p_DEP_ID)) --) --------------BAODNQ 17/11/2022 : CHỈNH SỬA LẠI ĐIỀU KIỆN TÌM KIẾM THEO SECUR_CODE------------------- AND( (A.SECUR_CODE IN (SELECT DEP_ID FROM @t_DEP_ID_TMP) OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM WHERE TRM.TLNAME = A.TLNANME AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE AND TRM.DEP_ID IN (SELECT DEP_ID FROM @t_DEP_ID_TMP) ) ) OR (@p_SECUR_CODE IS NULL OR @p_SECUR_CODE = '') ) ---------------ENDBAODNQ------------------- AND (A.TLNANME != 'admin') --AND (A.TLSUBBRID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_TLSUBBRID))) --AND ((@P_LEVEL = 'ALL' AND A.TLSUBBRID IN (SELECT BRANCH_ID from @tmp) --OR (@P_LEVEL = 'UNIT' AND A.TLSUBBRID = @p_TLSUBBRID)) OR @p_TLSUBBRID = '' OR @p_TLSUBBRID IS NULL --) AND( (@P_LEVEL = 'ALL' AND (A.TLSUBBRID IN (SELECT BRANCH_ID from @tmp) --OR (SELECT TOP 1 TRM.BRANCH_ID -- FROM TL_SYS_ROLE_MAPPING TRM -- WHERE TRM.TLNAME = A.TLNANME -- AND GETDATE() >= TRM.EFF_DATE AND GETDATE() <= TRM.EXP_DATE -- ) IN (SELECT BRANCH_ID from @tmp) ----------BAODNQ 30/9/2022 : Thêm xử lý tìm kiếm ủy quyền kiêm nhiệm-------- OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM WHERE TRM.TLNAME = A.TLNANME AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE AND TRM.BRANCH_ID IN (SELECT BRANCH_ID from @tmp) ) --OR A.DEP_ID IN (SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING TRM -- WHERE 1=1 -- AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE -- AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE -- AND TRM.TLNAME = @p_MARKER_ID) OR (@BRANCH_ID <> 'DV0001' AND A.TLSUBBRID =@BRANCH_ID) ) ) OR(@P_LEVEL = 'UNIT' AND (A.TLSUBBRID = @p_TLSUBBRID --OR (SELECT TOP 1 TRM.BRANCH_ID -- FROM TL_SYS_ROLE_MAPPING TRM -- WHERE TRM.TLNAME = A.TLNANME -- AND GETDATE() >= TRM.EFF_DATE AND GETDATE() <= TRM.EXP_DATE -- ) = @p_TLSUBBRID ----------BAODNQ 30/9/2022 : Thêm xử lý tìm kiếm ủy quyền kiêm nhiệm-------- OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM WHERE TRM.TLNAME = A.TLNANME AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE AND TRM.BRANCH_ID = @p_TLSUBBRID ) --OR A.DEP_ID IN (SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING TRM -- WHERE 1=1 -- AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE -- AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE -- AND TRM.TLNAME = @p_MARKER_ID) OR (@BRANCH_ID <> 'DV0001' AND A.TLSUBBRID =@BRANCH_ID) ) ) --OR @BRANCH_ID = '' OR @BRANCH_ID IS NULL OR(@p_TLSUBBRID IS NULL OR @p_TLSUBBRID = '') ) ----------BAODNQ 22/3/2022 : Thêm điều kiện search theo phòng ban------ --AND ( -- (A.DEP_ID LIKE '%' + @p_DEP_ID + '%' -- --OR (SELECT TOP 1 TRM.DEP_ID FROM TL_SYS_ROLE_MAPPING TRM -- -- WHERE TRM.TLNAME = A.TLNANME -- -- AND GETDATE() >= TRM.EFF_DATE AND GETDATE() <= TRM.EXP_DATE -- -- ) LIKE '%' + @p_DEP_ID + '%' -- ----------BAODNQ 30/9/2022 : Thêm xử lý tìm kiếm ủy quyền kiêm nhiệm-------- -- OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM -- WHERE TRM.TLNAME = A.TLNANME -- AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE -- AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE -- AND TRM.DEP_ID = @p_DEP_ID -- ) -- OR A.DEP_ID IN (SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING TRM -- WHERE 1=1 -- AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE -- AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE -- AND TRM.TLNAME = @p_MARKER_ID) -- OR (@p_TLSUBBRID <> 'DV0001' AND A.TLSUBBRID =@p_TLSUBBRID) -- OR (@BRANCH_ID <> 'DV0001' AND A.TLSUBBRID =@BRANCH_ID) -- ) -- OR (@p_DEP_ID IS NULL OR @p_DEP_ID = '' OR @p_SECUR_CODE IS NULL OR @p_SECUR_CODE ='') -- OR (A.SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@p_SECUR_CODE)) -- OR (A.SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@p_DEP_ID)) --) --------------BAODNQ 17/11/2022 : CHỈNH SỬA LẠI ĐIỀU KIỆN TÌM KIẾM THEO DEP_ID------------------- AND( (A.DEP_ID IN (SELECT DEP_ID FROM @t_DEP_ID_TMP) OR EXISTS(SELECT * FROM TL_SYS_ROLE_MAPPING TRM WHERE TRM.TLNAME = A.TLNANME AND CONVERT(DATE,GETDATE(),103) >= TRM.EFF_DATE AND CONVERT(DATE,GETDATE(),103) <= TRM.EXP_DATE AND TRM.DEP_ID IN (SELECT DEP_ID FROM @t_DEP_ID_TMP) ) ) OR(@p_DEP_ID IS NULL OR @p_DEP_ID = '') ) -- PAGING END COMMIT TRANSACTION END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[FN_CHECK_VALIDATE_APP]' GO ALTER FUNCTION [dbo].[FN_CHECK_VALIDATE_APP] ( -- Add the parameters for the function here @REQ_ID VARCHAR(20), @TYPE_VALIDATE VARCHAR(20), @REF_VALIDATE VARCHAR(20), @MAKER_ID VARCHAR(20), @PROCESS_ID VARCHAR(20) ) RETURNS @Results TABLE (ERROR BIT , ERROR_DES NVARCHAR(1000)) AS BEGIN IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@REQ_ID AND PL_BASED_ID IS NOT NULL AND PL_BASED_ID <>'')) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 0, -- ERROR - bit N'' -- ERROR_DES - nvarchar(100) ) RETURN END DECLARE @BRANCH_ID VARCHAR(20),@DEP_ID VARCHAR(20),@BRANCH_TYPE VARCHAR(20),@ROLE_ID VARCHAR(20) DECLARE @LST_DVDM TABLE(DVDM_ID VARCHAR(20)) DECLARE @LST_KHOI TABLE(KHOI_ID VARCHAR(20)) SELECT @BRANCH_ID=TLSUBBRID,@BRANCH_TYPE=BRANCH_TYPE,@DEP_ID=SECUR_CODE,@ROLE_ID=RoleName FROM dbo.TL_USER WHERE TLNANME=@MAKER_ID IF(@ROLE_ID='TC' OR @ROLE_ID='TGD') BEGIN INSERT INTO @LST_DVDM SELECT CD.DVDM_ID FROM dbo.CM_DVDM CD WHERE CD.IS_DVDM=1 INSERT INTO @LST_KHOI SELECT CD.DVDM_ID FROM dbo.CM_DVDM CD WHERE CD.IS_KHOI=1 END ELSE BEGIN INSERT INTO @LST_DVDM SELECT CD.DVDM_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_DVDM=1 AND PCDT.DEP_ID=@DEP_ID AND PCDT.BRANCH_ID=@BRANCH_ID INSERT INTO @LST_KHOI SELECT CD.DVDM_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 AND PCDT.DEP_ID=@DEP_ID AND PCDT.BRANCH_ID=@BRANCH_ID END IF(@REF_VALIDATE='PL_REQUEST_DOC') BEGIN IF(@TYPE_VALIDATE='APPNEW') BEGIN IF(@BRANCH_TYPE='HS') BEGIN IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID AND FR_DEP_ID=@DEP_ID AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID =''))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Vui lòng chọn hạng mục ngân sách điều chuyển' -- ERROR_DES - nvarchar(100) ) RETURN END ELSE BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN AND Temp.FR_TRADE_ID IS NOT NULL AND Temp.FR_TRADE_ID <> '')) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Lưới điều chuyển ngân sách: Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END --- LUCTV 10.11.2022 BO SUNG DIEU KIEN CA FRM_TRADE VA TO_TRADE DEU KHAC NULL MOI CHECK IF(EXISTS(SELECT * FROM PL_REQUEST_TRANSFER prt WHERE prt.REQ_DOC_ID = @REQ_ID AND ISNULL(prt.FR_TRADE_ID,'') <> '' AND ISNULL(prt.TO_TRADE_ID,'') <> '' AND prt.FR_TRADE_ID = prt.TO_TRADE_ID)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Lưới điều chuyển ngân sách: Không được điều chuyển ngân sách từ hạng mục ngân sách giống với hạng mục ngân sách nhận' -- ERROR_DES - nvarchar(100) ) RETURN END END END ELSE IF(@BRANCH_TYPE<>'HS') BEGIN IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID =''))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Vui lòng chọn hạng mục ngân sách điều chuyển' -- ERROR_DES - nvarchar(100) ) RETURN END ELSE BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN AND Temp.FR_TRADE_ID IS NOT NULL AND Temp.FR_TRADE_ID <> '')) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Lưới điều chuyển ngân sách: Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END IF(EXISTS(SELECT * FROM PL_REQUEST_TRANSFER prt WHERE prt.REQ_DOC_ID = @REQ_ID AND ISNULL(prt.FR_TRADE_ID,'') <> '' AND ISNULL(prt.TO_TRADE_ID,'') <> '' AND prt.FR_TRADE_ID = prt.TO_TRADE_ID)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Lưới điều chuyển ngân sách: Không được điều chuyển ngân sách từ hạng mục ngân sách giống với hạng mục ngân sách nhận' -- ERROR_DES - nvarchar(100) ) RETURN END END END IF(EXISTS(SELECT Temp.TRADE_ID FROM ( SELECT TB.TRADE_ID, TB.TOTAL_AMT AS TOTAL_AMT_EXE, ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.TRADE_ID) AS TOTAL_AMT_REMAIN, ISNULL(PLTF.TOTAL_AMT,0) AS TOTAL_TF FROM ( SELECT TEMP1.TRADE_ID, TEMP1.REQ_ID, SUM(TEMP1.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT TEMP1 WHERE TEMP1.REQDT_TYPE='I' AND TEMP1.REQ_ID=@REQ_ID GROUP BY TEMP1.TRADE_ID,TEMP1.REQ_ID ) TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID LEFT JOIN ( SELECT SUM(TEMP2.TOTAL_AMT) AS TOTAL_AMT, TEMP2.FR_TRADE_ID, TEMP2.REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER TEMP2 GROUP BY TEMP2.FR_TRADE_ID, TEMP2.REQ_DOC_ID ) PLTF ON PLTF.FR_TRADE_ID=PT.TRADE_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID )Temp WHERE (Temp.TOTAL_AMT_EXE + Temp.TOTAL_TF) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Lưới hàng hóa: Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách' -- ERROR_DES - nvarchar(100) ) RETURN END IF(EXISTS(SELECT Temp.GOODS_ID FROM ( SELECT TB.GOODS_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0)) AS TOTAL_AMT_REMAIN , SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF FROM dbo.PL_REQUEST_DOC_DT TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID LEFT JOIN ( SELECT SUM(TOTAL_AMT) AS TOTAL_AMT,TO_GOOD_ID,REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID GROUP BY TO_GOOD_ID,REQ_DOC_ID ) PLTF ON PLTF.TO_GOOD_ID=TB.GOODS_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID WHERE TB.REQDT_TYPE='O' AND TB.REQ_ID=@REQ_ID GROUP BY TB.GOODS_ID )Temp WHERE Temp.TOTAL_AMT_EXE > (Temp.TOTAL_AMT_REMAIN + Temp.TOTAL_TF))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit --N'Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách và số tiền điều chuyển' -- ERROR_DES - nvarchar(100) N'Lưới hàng hóa: Số tiền ngân sách sử dụng đang vượt quá số tiền chuyển của lưới điều chuyển ngân sách' ) RETURN END END ELSE IF (@TYPE_VALIDATE='PDDC') BEGIN IF(@PROCESS_ID='DVDM_DC') BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID AND TB.FR_DVDM_ID IN (SELECT DVDM_ID FROM @LST_DVDM) GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END ELSE IF(@PROCESS_ID='TC') BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END ELSE BEGIN IF(@BRANCH_TYPE='HS') BEGIN IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID AND FR_DEP_ID=@DEP_ID AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID =''))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Chưa chọn hạng mục ngân sách điều chuyển' -- ERROR_DES - nvarchar(100) ) RETURN END ELSE BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN AND Temp.FR_TRADE_ID IS NOT NULL AND Temp.FR_TRADE_ID <> '')) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END END ELSE IF(@BRANCH_TYPE<>'HS') BEGIN IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID =''))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Chưa chọn hạng mục ngân sách điều chuyển' -- ERROR_DES - nvarchar(100) ) RETURN END ELSE BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN AND Temp.FR_TRADE_ID IS NOT NULL AND Temp.FR_TRADE_ID <> '')) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END END END END ELSE IF(@TYPE_VALIDATE='PDTT') BEGIN IF(EXISTS(SELECT Temp.TRADE_ID FROM ( SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.TRADE_ID) AS TOTAL_AMT_REMAIN , SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF FROM dbo.PL_REQUEST_DOC_DT TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID LEFT JOIN dbo.PL_REQUEST_TRANSFER PLTF ON PLTF.FR_BRN_ID=PM.BRANCH_ID AND PLTF.FR_TRADE_ID=PT.TRADE_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID WHERE TB.REQDT_TYPE='I' AND TB.REQ_ID=@REQ_ID AND TB.KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI) GROUP BY TB.TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE + Temp.TOTAL_TF) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách' -- ERROR_DES - nvarchar(100) ) RETURN END IF(EXISTS(SELECT Temp.GOODS_ID FROM ( SELECT TB.GOODS_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0)) AS TOTAL_AMT_REMAIN , SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF FROM dbo.PL_REQUEST_DOC_DT TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID LEFT JOIN ( SELECT SUM(TOTAL_AMT) AS TOTAL_AMT,TO_GOOD_ID,REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID GROUP BY TO_GOOD_ID,REQ_DOC_ID ) PLTF ON PLTF.TO_GOOD_ID=TB.GOODS_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID WHERE TB.REQDT_TYPE='O' AND TB.REQ_ID=@REQ_ID AND TB.KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI) GROUP BY TB.GOODS_ID )Temp WHERE Temp.TOTAL_AMT_EXE > (Temp.TOTAL_AMT_REMAIN + Temp.TOTAL_TF))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách và số tiền điều chuyển' -- ERROR_DES - nvarchar(100) ) RETURN END IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID AND TB.FR_KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI) GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END END INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 0, -- ERROR - bit N'' -- ERROR_DES - nvarchar(100) ) RETURN END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_REQUEST_DOC_SendApp]' GO ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_SendApp] @p_REQ_ID VARCHAR(20), @p_PROCESS_ID VARCHAR(20), @p_TLNAME VARCHAR(20), @p_MAKER_ID VARCHAR(20) AS BEGIN TRANSACTION DECLARE @GD_TYPE_ID_NOT_VALIDATE VARCHAR(15) SET @GD_TYPE_ID_NOT_VALIDATE =(SELECT TOP 1 GD_TYPE_ID FROM CM_GOODSTYPE WHERE GD_TYPE_CODE ='OS') IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (PL_BASED_ID IS NULL OR PL_BASED_ID =''))) BEGIN -- XÁC ĐỊNH HẠN MƯC CÒN ĐỦ HAY KO --- KIEM TRA NGAN SACH LUCTV 18052020 DECLARE @ERROR BIT ,@EROOR_DES NVARCHAR(500) SELECT @ERROR=ERROR, @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'APPNEW','PL_REQUEST_DOC',@p_TLNAME,@p_PROCESS_ID) IF(@ERROR=1) BEGIN ROLLBACK TRANSACTION; SELECT '-1' Result, @EROOR_DES ErrorDesc RETURN '-1'; END END ----- DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10), @BRANCH_CREATE_TYPE VARCHAR(10) IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND EXISTS(SELECT TLNANME FROM dbo.TL_USER WHERE TLNANME=SIGN_USER AND BRANCH_CREATE=TLSUBBRID AND (RoleName='TPGD' OR RoleName='GDDV')))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Người ký nháy không được là trường phòng, trưởng đơn vị.' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND ( CAST(REQ_DT AS DATE) > CAST(GETDATE() AS DATE))) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Ngày tạo không được lớn hơn ngày hiện tại' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (REQ_NAME IS NULL OR REQ_NAME='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Tên tờ trình bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (REQ_CONTENT IS NULL OR REQ_CONTENT='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Nội dung tờ trình bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND ( REQ_REASON IS NULL OR REQ_REASON='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lý do trình chủ trương bắt buộc nhập' ErrorDesc RETURN '-1' END IF(NOT EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID ) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Danh sách hàng hóa bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM PL_REQUEST_DOC prd LEFT JOIN CM_BRANCH cb ON prd.BRANCH_ID = cb.BRANCH_ID WHERE prd.REQ_ID = @p_REQ_ID AND cb.BRANCH_CODE IN ('799','899','699'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Không được chọn đơn vị tạo tờ trình là: 799, 899, 699' ErrorDesc RETURN '-1' END -- GIANT 10/11/2021 IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PL_BASED_ID IS NOT NULL AND PL_BASED_ID <>'')) BEGIN DECLARE @PL_BASED_ID VARCHAR(20), @PL_BASE_CODE VARCHAR(20), @PL_BASE_TOTAL_USED DECIMAL(18,2), -- CÓ THỂ SỬ DỤNG @PL_BASE_TOTAL_PRICE DECIMAL(18,2), -- TỔNG TIỀN CỦA TTCT @TOTAL_PRICE DECIMAL(18,2) -- TỔNG TIỀN CỦA TỜ TRÌNH HIỆN TẠI SỬ DỤNG SET @PL_BASED_ID=(SELECT PL_BASED_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID ) SET @PL_BASE_CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID = @PL_BASED_ID) SET @PL_BASE_TOTAL_USED = (SELECT SUM(TOTAL_AMT) FROM PL_REQUEST_DOC WHERE PL_BASED_ID = @PL_BASED_ID AND AUTH_STATUS NOT IN ('E','R')) SET @PL_BASE_TOTAL_PRICE = (SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID = @PL_BASED_ID) SET @TOTAL_PRICE = (SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID) --IF( EXISTS(SELECT DT.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT DT WHERE DT.REQ_ID=@p_REQ_ID AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT DTB WHERE DTB.REQ_ID=@PL_BASED_ID AND DTB.TRADE_ID=DT.TRADE_ID AND DTB.HANGHOA_ID=DT.HANGHOA_ID))) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Danh sách hàng hóa không có trong tờ trình căn cứ' ErrorDesc -- RETURN '-1' --END -- KIỂM TRA CÁC TỔNG CÁC TỜ TRÌNH SỬ DỤNG TTCC VƯỢT QUÁ SỐ TIỀN CỦA TTCC CHO PHÉP HAY CHƯA -- Tổng giá trị những tờ trình con đã sử dụng tờ trình số: làm tờ trình căn cứ: 30 triệu. Giá trị còn lại có thể sử dụng: 70 triệu PRINT @PL_BASE_TOTAL_PRICE - @PL_BASE_TOTAL_USED IF (@PL_BASE_TOTAL_PRICE < (@PL_BASE_TOTAL_USED + @TOTAL_PRICE)) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Tổng giá trị những tờ trình con đã sử dụng tờ trình số: ' + @PL_BASE_CODE + N' làm tờ trình căn cứ: ' + CONVERT(NVARCHAR(20),CAST(@PL_BASE_TOTAL_USED AS money),1) + N' VND. Giá trị còn lại có thể sử dụng: ' + CONVERT(NVARCHAR(20),CAST(@PL_BASE_TOTAL_PRICE - @PL_BASE_TOTAL_USED AS money),1) + ' VND' ErrorDesc RETURN '-1' END -- KIỂM TRA HẠNG MỤC ĐƯỢC CHỌN CÓ THUỘC VÀO HẠNG MỨC CHO PHÉP CỦA TTCC DECLARE LISTS CURSOR LOCAL FOR SELECT REQDT_ID,TRADE_ID,REQ_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID OPEN LISTS DECLARE @REQDT_ID VARCHAR(15), @TRADE_ID VARCHAR(15), @REQ_ID VARCHAR(15), @COUNT INT = 1 FETCH NEXT FROM LISTS INTO @REQDT_ID,@TRADE_ID,@REQ_ID WHILE @@FETCH_STATUS = 0 BEGIN -- Chỉ sử dụng hàng hóa từ tờ trình căn cứ IF (NOT EXISTS (SELECT * FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID AND HANGHOA_ID IN (SELECT HANGHOA_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @PL_BASED_ID))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hàng hóa mua sắm đã chọn không thuộc vào Hàng hóa mua sắm cho phép của Tờ trình căn cứ' ErrorDesc RETURN '-1' END -- Chỉ sử dụng hạng mục ngân sách từ tờ trình căn cứ IF (NOT EXISTS (SELECT * FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID AND TRADE_ID IN (SELECT TRADE_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @PL_BASED_ID))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hạng mục ngân sách đã chọn không thuộc vào hạng mục ngân sách cho phép của Tờ trình căn cứ' ErrorDesc RETURN '-1' END -- SỐ NGÂN SÁCH CHỌN VƯỢT QUÁ NGÂN SÁCH CHO PHÉP CỦA HẠN MỤC ĐÓ IF ((SELECT TOTAL_AMT FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @PL_BASED_ID AND TRADE_ID = @TRADE_ID) < (SELECT TOTAL_AMT FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hạng mục ngân sách đã chọn vượt quá hạng mục cho phép của Tờ trình căn cứ' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC_DT prdd WHERE REQDT_ID = @REQDT_ID AND prdd.HANGHOA_ID NOT IN (SELECT HH_ID FROM SYS_HH_GROUP_LIMIT))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hàng hóa mua sắm đã chọn không có hạn mức phê duyệt' ErrorDesc RETURN '-1' END SET @COUNT += 1 FETCH NEXT FROM LISTS INTO @REQDT_ID,@TRADE_ID,@REQ_ID END CLOSE LISTS DEALLOCATE LISTS END IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (HANGHOA_ID IS NULL OR HANGHOA_ID ='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Hàng hóa bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (GOODS_ID IS NULL OR GOODS_ID ='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Hạng mục ngân sách bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (TOTAL_AMT IS NULL OR TOTAL_AMT = 0)) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới điều chuyển ngân sách: Vui lòng nhập số tiền điều chuyển' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER A LEFT JOIN CM_BRANCH cb ON A.FR_BRN_ID = cb.BRANCH_ID LEFT JOIN CM_DEPARTMENT cd ON A.FR_DEP_ID = cd.DEP_ID WHERE REQ_DOC_ID=@p_REQ_ID AND ((FR_BRN_ID = 'DV0001' AND FR_DEP_ID IN ('DEP000000000001','DEP000000000024')) OR cb.BRANCH_CODE IN ('DV0003','000','799','899','699')))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới điều chuyển ngân sách: Đơn vị chuyển không hợp lệ, vui lòng không chọn Hội sở - Chung, Chung - CNTT, KV Tổng, KV Khác' ErrorDesc RETURN '-1' END SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID -- KIEM TRA NEU HINH THUC CHI DINH THAU LA THEO QUY DINH VCCB THI KHONG CHO PHEP CHON NHA CUNG CAP IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='VCCB' AND SUP_ID <>'' AND SUP_ID IS NOT NULL AND REQ_ID =@p_REQ_ID)) BEGIN SELECT 'REQ-00001' Result, '' REQ_ID, N'Nếu hình thức mua sắm theo quy định VCCB thì bạn không được phép chọn nhà cung cấp. Vui lòng để trống nhà cung cấp' ErrorDesc ROLLBACK TRANSACTION RETURN '-1' END -- IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='CDT' AND ( SUP_ID ='' OR SUP_ID IS NULL) AND REQ_ID =@p_REQ_ID)) BEGIN SELECT 'REQ-00001' Result, '' REQ_ID, N'Nếu hình thức mua sắm chỉ định thầu thì bạn không được phép bỏ trống nhà cung cấp. Vui lòng chọn nhà cung cấp' ErrorDesc ROLLBACK TRANSACTION RETURN '-1' END ---- NEU HINH THUC MUA SAM CHI DINH THAU THI KHONG DUOC PHEP DE TRONG LY DO CHI DINH IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='CDT' AND ( [NAME] ='' OR [NAME] IS NULL) AND REQ_ID =@p_REQ_ID)) BEGIN SELECT 'REQ-00001' Result, '' REQ_ID, N'Lưới Danh sách hàng hóa: Nếu hình thức mua sắm chỉ định thầu thì bạn không được phép bỏ trống lý do chỉ định thầu. Vui lòng nhập lý do chỉ định thầu' ErrorDesc ROLLBACK TRANSACTION RETURN '-1' END -- --LUCTV: 04052021 BO SUNG RANG BUOC NEU TIEN TE LA VND THI DON GIA BAO GOM VAT * SO LUONG MUA MUA = VOI NS SU DUNG IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND ROUND(QUANTITY * PRICE,0) <> ROUND(TOTAL_AMT,0) AND CURRENCY='VND')) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Đối với tiền tệ VNĐ, Cột Ngân sách sử dụng chưa khớp với Đơn giá bao gồm VAT * Số lượng trình mua sắm ' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_BRN_ID=@BRANCH_CREATE AND (FR_GOOD_ID IS NULL OR FR_GOOD_ID='') AND ((FR_DEP_ID=@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') AND (FR_DEP_ID IS NULL OR FR_DEP_ID=''))) )) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Bạn là đơn vị chuyển ngân sách, vui lòng chọn hạn mục ngân sách chuyển' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT Temp.TRADE_ID FROM ( SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0) - ISNULL(PT.AMT_TF,0) - ISNULL(PT.AMT_ETM,0)) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_DOC_DT TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID WHERE TB.REQ_ID=@p_REQ_ID AND TB.REQDT_TYPE='I' AND PT.GOODS_ID NOT IN (SELECT ISNULL(GD_ID,'') FROM CM_GOODS WHERE GD_TYPE_ID =@GD_TYPE_ID_NOT_VALIDATE) GROUP BY TB.TRADE_ID )Temp WHERE Temp.TOTAL_AMT_EXE > Temp.TOTAL_AMT_REMAIN)) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS RESULT , '' REQ_CODE,'' REQ_ID, N'Số tiền sử dụng lớn hơn số tiền dự kiến còn lại của hạng mục trong ngân sách' ErrorDesc RETURN '-1' END IF( EXISTS(SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND REQDT_TYPE='O') AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND TO_GOOD_ID IN (SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND REQDT_TYPE='O'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS RESULT ,'' REQ_CODE, '' REQ_ID, N'Hạng mục ngoài ngân sách, vui lòng thêm danh sách điều chuyển ngân sách' ErrorDesc RETURN '-1' END IF( NOT EXISTS(SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND REQDT_TYPE='O') AND EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND TO_GOOD_ID IN (SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND REQDT_TYPE='O'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS RESULT ,'' REQ_CODE, '' REQ_ID, N'Hạng mục trong ngân sách, vui lòng không thêm danh sách điều chuyển ngân sách' ErrorDesc RETURN '-1' END IF( EXISTS(SELECT PLDT.GOODS_ID FROM dbo.PL_REQUEST_DOC_DT PLDT WHERE PLDT.REQ_ID=@p_REQ_ID AND PLDT.REQDT_TYPE='O' AND NOT EXISTS(SELECT PLTF.REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER PLTF WHERE PLTF.TO_GOOD_ID=PLDT.GOODS_ID AND ISNULL(PLTF.TO_TRADE_ID,'')=ISNULL(PLDT.TRADE_ID,''))) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS RESULT ,'' REQ_CODE, '' REQ_ID, N'Hạng mục ngoài ngân sách, vui lòng nhập danh sách điều chuyển ngân sách' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (PRICE IS NULL OR PRICE=0 OR QUANTITY IS NULL OR QUANTITY=0)) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Số luợng, đơn giá của hàng hóa bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (DESCRIPTION IS NULL OR DESCRIPTION='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Quy cách kỹ thuật bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (UNIT_NAME IS NULL OR UNIT_NAME='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Đơn vị tính bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (UNIT_NAME IS NULL OR UNIT_NAME='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Đây là thông tin bắt buộc nhập' ErrorDesc RETURN '-1' END --- LUCTV 14.11.2022 CHECK NEU CO DIEU CHUYEN NGAN SACH THI DON VI NHAN, DON VI CHUYEN PHAI KHAC NULL IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (ISNULL(FR_BRN_ID,'')='' OR ISNULL(TO_BRN_ID,'')=''))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới điều chuyển ngân sách: Đơn vị chuyển, đơn vị nhận không được phép để trống' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (ISNULL(FR_BRN_ID,'')='DV0001' AND ISNULL(FR_DEP_ID,'')=''))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới điều chuyển ngân sách: Đơn vị chuyển ngân sách nếu ở Hội Sở thì bạn phải chọn cụ thể phòng ban' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (ISNULL(TO_BRN_ID,'')='DV0001' AND ISNULL(TO_DEP_ID,'')=''))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới điều chuyển ngân sách: Đơn vị nhận ngân sách nếu ở Hội Sở thì bạn phải cụ thể chọn phòng ban' ErrorDesc RETURN '-1' END ---- END LUCTV DECLARE lstTransfer CURSOR FOR SELECT FR_GOOD_ID,TO_GOOD_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID OPEN lstTransfer DECLARE @FR_GOOD_ID VARCHAR(20),@TO_GOOD_ID VARCHAR(20) FETCH NEXT FROM lstTransfer INTO @FR_GOOD_ID,@TO_GOOD_ID WHILE @@FETCH_STATUS=0 BEGIN IF(@FR_GOOD_ID IS NOT NULL AND @FR_GOOD_ID<>'') BEGIN DECLARE @FR_GD_TYPE VARCHAR(20),@TO_GD_TYPE VARCHAR(20) SET @FR_GD_TYPE =(SELECT GT.GD_TYPE_ID FROM ( SELECT GD_CODE FROM dbo.CM_GOODS WHERE GD_ID=@FR_GOOD_ID ) CG LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%') SET @TO_GD_TYPE =(SELECT GT.GD_TYPE_ID FROM ( SELECT GD_CODE FROM dbo.CM_GOODS WHERE GD_ID=@TO_GOOD_ID ) CG LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%') IF(NOT EXISTS(SELECT * FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID= @FR_GD_TYPE AND @TO_GD_TYPE IN (SELECT value FROM dbo.wsiSplit(NOTES,';')) ) ) BEGIN DECLARE @FR_GD_TYPE_NAME NVARCHAR(100),@TO_GD_TYPE_NAME NVARCHAR(100) SET @FR_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@FR_GD_TYPE) SET @TO_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@TO_GD_TYPE) ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Không được điều chuyển từ ' + @FR_GD_TYPE_NAME +N' sang ' + @TO_GD_TYPE_NAME ErrorDesc CLOSE lstTransfer DEALLOCATE lstTransfer RETURN '-1' END END FETCH NEXT FROM lstTransfer INTO @FR_GOOD_ID,@TO_GOOD_ID END CLOSE lstTransfer DEALLOCATE lstTransfer --END UPDATE dbo.PL_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID SELECT @BRANCH_ID =BRANCH_ID,@DEP_ID=DEP_ID,@BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID) SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE) --IF(@BRANCH_TYPE='PGD') -- SET @BRANCH_ID=(SELECT BRANCH_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID) DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID ---KIEM TRA XEM CO CAP PHE DUYET TRUNG GIAN HAY KHONG 20-05-2020 LUCTV IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>'')) BEGIN DECLARE @BRANCH_SIGN_ID VARCHAR(20),@DEP_SIGN_ID VARCHAR(20),@BRANCH_SIGN_TYPE VARCHAR(10),@ROLE_SIGN VARCHAR(20) SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) UPDATE dbo.PL_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN', TOTAL_AMT =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'SIGN', -- PROCESS_ID - varchar(10) 'C', -- STATUS - varchar(5) @ROLE_SIGN, -- ROLE_USER - varchar(50) @BRANCH_SIGN_ID, CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END, -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime '', -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', -- DVDM_ID - varchar(15) N'Chờ cấp phê duyệt trung gian xác nhận phiếu', -- NOTES - nvarchar(500) NULL -- IS_HAS_CHILD - bit ) END ELSE -- NGUOC LAI KHONG CO CAP PHE DUYET TRUNG GIAN BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'APPNEW', -- PROCESS_ID - varchar(10) 'C', -- STATUS - varchar(5) 'GDDV', -- ROLE_USER - varchar(50) @BRANCH_ID, @DEP_ID, -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime '', -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', -- DVDM_ID - varchar(15) -- N'Chờ trưởng đơn vị phê duyệt', -- NOTES - nvarchar(500) N'Chờ trưởng đơn vị phê duyệt' , NULL -- IS_HAS_CHILD - bit ) END INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) --@p_PROCESS_ID, -- PROCESS_ID - varchar(10) 'SEND', @p_TLNAME, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Người tạo tờ trình gửi phê duyệt thành công' , -- PROCESS_DESC - nvarchar(1000) N'Nhân viên gửi phê duyệt ' -- NOTES - nvarchar(1000) ) IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='SIGN')) BEGIN SELECT '0' as Result,'' REQ_CODE,''REQ_ID, (SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) Attr1, N'Tờ trình số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)+N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc RETURN '0' END ELSE BEGIN SELECT '0' as Result,'' REQ_CODE,''REQ_ID, (SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) Attr1, N'Tờ trình số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)+N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc RETURN '0' END ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_ATTACH_FILE_Ins]' GO /* SELECT * FROM CM_ATTACH_FILE [dbo].[CM_ATTACH_FILE_Ins] '','','','','','',NULL,'','29/10/2013','' INSERT INTO [dbo].[SYS_PREFIX](ID,Prefix,Description) VALUES('CM_ATTACH_FILE','CMA','FILE ĐÍNH KÉM') */ ALTER PROCEDURE [dbo].[CM_ATTACH_FILE_Ins] @p_TYPE varchar(50) = NULL, @p_REF_ID varchar(15) = NULL, @p_FILE_NAME_OLD nvarchar(MAX) = NULL, @p_PATH_OLD nvarchar(MAX) = NULL, @p_FILE_NAME_NEW nvarchar(MAX) = NULL, @p_PATH_NEW nvarchar(MAX) = NULL, @p_FILE_SIZE decimal(18) = NULL, @p_FILE_TYPE varchar(50) = NULL, @p_ATTACH_DT VARCHAR(20) = NULL, @p_EMP_ID varchar(15) = NULL, @p_INDEX varchar(50) = NULL, @P_NOTES NVARCHAR(1000) = NULL, @p_AttachDetail xml = NULL AS --Validation is here --DECLARE @ERRORSYS NVARCHAR(15) = '' -- IF(@p_REF_ID <> '') -- IF ( NOT EXISTS ( SELECT * FROM CM_ATTACH_FILE WHERE ATTACH_ID = @p_REF_ID )) -- SET @ERRORSYS = 'CMA-99999' --IF @ERRORSYS <> '' --BEGIN -- SELECT ErrorCode Result, '' ATTACH_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS -- RETURN '0' --END BEGIN TRANSACTION DECLARE @l_ATTACH_ID VARCHAR(15) IF @p_PATH_NEW IS NOT NULL AND @p_PATH_NEW <> '' BEGIN EXEC SYS_CodeMasters_Gen 'CM_ATTACH_FILE', @l_ATTACH_ID out IF @l_ATTACH_ID='' OR @l_ATTACH_ID IS NULL GOTO ABORT INSERT INTO CM_ATTACH_FILE([ATTACH_ID],[TYPE],[REF_ID],[FILE_NAME_OLD],[PATH_OLD],[FILE_NAME_NEW],[PATH_NEW],[FILE_SIZE],[FILE_TYPE],[ATTACH_DT],[EMP_ID],[INDEX],[NOTES], [REF_MASTER]) VALUES(@l_ATTACH_ID ,@p_TYPE ,@p_REF_ID ,@p_FILE_NAME_OLD ,@p_PATH_OLD ,@p_FILE_NAME_NEW ,@p_PATH_NEW ,@p_FILE_SIZE ,@p_FILE_TYPE ,CONVERT(DATETIME, @p_ATTACH_DT, 103) ,@p_EMP_ID, @p_INDEX,@P_NOTES, @p_REF_ID) IF @@Error <> 0 GOTO ABORT -- INSERT HIST EXEC CM_ATTACH_FILE_HIS_Ins @l_ATTACH_ID, @p_TYPE, @p_REF_ID, @p_FILE_NAME_OLD, @p_PATH_OLD, @p_FILE_NAME_NEW, @p_PATH_NEW, @p_FILE_SIZE, @p_FILE_TYPE, @p_ATTACH_DT, @p_EMP_ID, @p_INDEX, @P_NOTES, 0, 'CreateFile' IF @@Error <> 0 GOTO ABORT END -- INSERT LIST IF EXISTS IF(@p_AttachDetail IS NOT NULL) BEGIN Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output, @p_AttachDetail DECLARE attDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/AttachDetail',2) WITH ( [TYPE] varchar(50), REF_ID varchar(15), FILE_NAME_OLD nvarchar(MAX), PATH_OLD nvarchar(MAX), FILE_NAME_NEW nvarchar(MAX), PATH_NEW nvarchar(MAX), FILE_SIZE decimal(18), FILE_TYPE varchar(50), ATTACH_DT VARCHAR(20), EMP_ID varchar(15), [INDEX] varchar(50), NOTES NVARCHAR(1000), REF_MASTER varchar(15) ) OPEN attDetail Declare @TYPE varchar(50), @REF_ID varchar(15), @REF_MASTER varchar(15), @FILE_NAME_OLD nvarchar(MAX), @PATH_OLD nvarchar(MAX), @FILE_NAME_NEW nvarchar(MAX), @PATH_NEW nvarchar(MAX), @FILE_SIZE decimal(18), @FILE_TYPE varchar(50), @ATTACH_DT VARCHAR(20), @EMP_ID varchar(15), @INDEX varchar(50),@NOTES NVARCHAR(1000) FETCH NEXT FROM attDetail INTO @TYPE, @REF_ID, @FILE_NAME_OLD, @PATH_OLD, @FILE_NAME_NEW, @PATH_NEW, @FILE_SIZE, @FILE_TYPE, @ATTACH_DT, @EMP_ID, @INDEX,@NOTES,@REF_MASTER WHILE @@FETCH_STATUS = 0 BEGIN EXEC SYS_CodeMasters_Gen 'CM_ATTACH_FILE', @l_ATTACH_ID out IF(@l_ATTACH_ID='' OR @l_ATTACH_ID IS NULL) GOTO ABORT INSERT INTO CM_ATTACH_FILE([ATTACH_ID],[TYPE],[REF_ID],[FILE_NAME_OLD],[PATH_OLD],[FILE_NAME_NEW],[PATH_NEW],[FILE_SIZE],[FILE_TYPE],[ATTACH_DT],[EMP_ID], [INDEX],[NOTES], [REF_MASTER]) VALUES(@l_ATTACH_ID ,@TYPE ,@REF_ID ,@FILE_NAME_OLD ,@PATH_OLD ,@FILE_NAME_NEW ,@PATH_NEW ,@FILE_SIZE ,@FILE_TYPE ,CONVERT(DATETIME, @ATTACH_DT, 103), @EMP_ID, @INDEX, @NOTES, @p_REF_ID) IF @@Error <> 0 GOTO ABORT -- INSERT HIST EXEC CM_ATTACH_FILE_HIS_Ins @l_ATTACH_ID, @TYPE, @REF_ID, @FILE_NAME_OLD, @PATH_OLD, @FILE_NAME_NEW, @PATH_NEW, @FILE_SIZE, @FILE_TYPE, @ATTACH_DT, @EMP_ID, @INDEX, @NOTES, 0, 'CreateFile' IF @@Error <> 0 GOTO ABORT -- next Id FETCH NEXT FROM attDetail INTO @TYPE, @REF_ID, @FILE_NAME_OLD, @PATH_OLD, @FILE_NAME_NEW, @PATH_NEW, @FILE_SIZE, @FILE_TYPE, @ATTACH_DT, @EMP_ID, @INDEX,@NOTES,@REF_MASTER END CLOSE attDetail DEALLOCATE attDetail END -------------------------BAODNQ 16/10/2022 : HOT FIX ĐÍNH KÈM FILE PYCMS---------------------- -----------------------UPDATE ATTACH_ID VÀO BẢNG TR_REQUEST_DOC_FILE--------------------- IF(EXISTS( SELECT * FROM TR_REQUEST_DOC_FILE TRF INNER JOIN CM_ATTACH_FILE CAF ON TRF.TR_REQUEST_DOC_FILE_ID = CAF.REF_ID) ) BEGIN UPDATE TR_REQUEST_DOC_FILE SET ATTACH_ID = CAF.ATTACH_ID FROM TR_REQUEST_DOC_FILE TRF INNER JOIN CM_ATTACH_FILE CAF ON TRF.TR_REQUEST_DOC_FILE_ID = CAF.REF_ID END -------------------------END BADNQ------------------------------- COMMIT TRANSACTION SELECT '0' as Result, @l_ATTACH_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'Altering [dbo].[CM_HANGHOA_Search]' GO ALTER PROCEDURE [dbo].[CM_HANGHOA_Search] @p_HH_CODE varchar(50) = NULL, @p_HH_NAME nvarchar(200) = NULL, @p_HH_GROUP_ID VARCHAR(20) = NULL, @p_HH_TYPE_ID varchar(15) = NULL, @p_DESCRIPTION nvarchar(2000) = NULL, @p_SUP_ID varchar(15) = NULL, @p_PRICE decimal(18) = NULL, @p_UNIT_ID varchar(15) = 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 = NULL, @p_GD_ID varchar(15) = NULL, --@p_HHGROUP_HH_ID varchar(20) = NULL, --@p_HHGROUP_GROUP_CDT_ID varchar(20) = NULL, --@p_HHGROUP_GROUP_TTCT_ID varchar(20) = NULL, --@p_HHGROUP_TYPE_LIMIT varchar(20) = NULL, @P_TOP INT = 1000 AS BEGIN -- PAGING IF(@P_TOP is null OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*, B.UNIT_CODE, B.UNIT_NAME, C.HH_TYPE_NAME, C.HH_TYPE_CODE, D.HH_GROUP_CODE, D.HH_GROUP_NAME, D.HH_GROUP_ID, E.AUTH_STATUS_NAME,F.CONTENT AS RECORD_STATUS_NAME,G.SUP_CODE, --G.GD_CODE, G.GD_NAME, GRCDT.GROUP_LIMIT_ID AS HHGROUP_GROUP_ID_CDT,sgl1.GROUP_CODE AS HHGROUP_GROUP_CODE_CDT,sgl1.GROUP_DES AS HHGROUP_GROUP_NAME_CDT, GRTTCT.GROUP_LIMIT_ID AS HHGROUP_GROUP_ID_TTCT,sgl.GROUP_CODE AS HHGROUP_GROUP_CODE_TTCT,sgl.GROUP_DES AS HHGROUP_GROUP_NAME_TTCT, DVDM.DVCM_ID,cd.DVDM_CODE,cd.DVDM_NAME --Column all NULL -- SELECT END FROM dbo.CM_HANGHOA A left join CM_UNIT B on A.UNIT_ID = B.UNIT_ID left join dbo.CM_HANGHOA_TYPE C on A.HH_TYPE_ID = C.HH_TYPE_ID left join dbo.CM_HANGHOA_GROUP D on C.HH_GROUP_ID = D.HH_GROUP_ID LEFT JOIN CM_AUTH_STATUS E ON A.AUTH_STATUS = E.AUTH_STATUS LEFT JOIN CM_ALLCODE F ON F.CDNAME = 'RECORD_STATUS' AND F.CDVAL = A.RECORD_STATUS LEFT JOIN CM_SUPPLIER G on G.SUP_ID = A.SUP_ID --left join CM_GOODS G ON G.GD_ID = A.GD_ID left join SYS_HH_GROUP_LIMIT GRCDT ON GRCDT.HH_ID = A.HH_ID AND GRCDT.TYPE_LIMIT = 'CDT' left join SYS_HH_GROUP_LIMIT GRTTCT ON GRTTCT.HH_ID = A.HH_ID AND GRTTCT.TYPE_LIMIT = 'TTCT' left join CM_HANGHOA_DVCM DVDM ON DVDM.HH_ID = A.HH_ID LEFT JOIN CM_DVDM cd ON CD.DVDM_ID = DVDM.DVCM_ID LEFT JOIN SYS_GROUP_LIMIT sgl ON sgl.GROUP_ID = GRTTCT.GROUP_LIMIT_ID LEFT JOIN SYS_GROUP_LIMIT sgl1 ON sgl1.GROUP_ID = GRCDT.GROUP_LIMIT_ID WHERE 1=1 AND (A.HH_CODE LIKE '%' + @p_HH_CODE + '%' OR @p_HH_CODE IS NULL OR @p_HH_CODE = '') AND (A.HH_NAME LIKE '%' + @p_HH_NAME + '%' OR @p_HH_NAME IS NULL OR @p_HH_NAME = '') AND (A.HH_TYPE_ID LIKE '%' + @p_HH_TYPE_ID + '%' OR @p_HH_TYPE_ID IS NULL OR @p_HH_TYPE_ID = '') AND (D.HH_GROUP_CODE LIKE '%' + @p_HH_GROUP_ID + '%' OR @p_HH_GROUP_ID IS NULL OR @p_HH_GROUP_ID = '') AND (A.SUP_ID LIKE '%' + @p_SUP_ID + '%' OR @p_SUP_ID IS NULL OR @p_SUP_ID = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) =0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') --AND (A.GD_ID LIKE '%' + @p_GD_ID + '%' OR @p_GD_ID IS NULL OR @p_GD_ID = '') AND A.RECORD_STATUS = '1' ORDER BY A.CREATE_DT DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(@P_TOP) A.*, B.UNIT_CODE, B.UNIT_NAME, C.HH_TYPE_NAME, C.HH_TYPE_CODE, D.HH_GROUP_CODE, D.HH_GROUP_NAME ,D.HH_GROUP_ID, E.AUTH_STATUS_NAME,F.CONTENT AS RECORD_STATUS_NAME,G.SUP_CODE, --G.GD_CODE, G.GD_NAME, GRCDT.GROUP_LIMIT_ID AS HHGROUP_GROUP_ID_CDT,sgl1.GROUP_CODE AS HHGROUP_GROUP_CODE_CDT,sgl1.GROUP_DES AS HHGROUP_GROUP_NAME_CDT, GRTTCT.GROUP_LIMIT_ID AS HHGROUP_GROUP_ID_TTCT,sgl.GROUP_CODE AS HHGROUP_GROUP_CODE_TTCT,sgl.GROUP_DES AS HHGROUP_GROUP_NAME_TTCT, DVDM.DVCM_ID,cd.DVDM_CODE,cd.DVDM_NAME --Column all NULL -- SELECT END FROM dbo.CM_HANGHOA A LEFT JOIN CM_UNIT B on A.UNIT_ID = B.UNIT_ID LEFT JOIN dbo.CM_HANGHOA_TYPE C on A.HH_TYPE_ID = C.HH_TYPE_ID LEFT JOIN dbo.CM_HANGHOA_GROUP D on C.HH_GROUP_ID = D.HH_GROUP_ID LEFT JOIN CM_AUTH_STATUS E ON A.AUTH_STATUS = E.AUTH_STATUS LEFT JOIN CM_ALLCODE F ON F.CDNAME = 'RECORD_STATUS' AND F.CDVAL = A.RECORD_STATUS LEFT JOIN CM_SUPPLIER G on G.SUP_ID = A.SUP_ID --LEFT JOIN CM_GOODS G ON G.GD_ID = A.GD_ID LEFT JOIN SYS_HH_GROUP_LIMIT GRCDT ON GRCDT.HH_ID = A.HH_ID AND GRCDT.TYPE_LIMIT = 'CDT' LEFT JOIN SYS_HH_GROUP_LIMIT GRTTCT ON GRTTCT.HH_ID = A.HH_ID AND GRTTCT.TYPE_LIMIT = 'TTCT' LEFT JOIN CM_HANGHOA_DVCM DVDM ON DVDM.HH_ID = A.HH_ID LEFT JOIN CM_DVDM cd ON CD.DVDM_ID = DVDM.DVCM_ID LEFT JOIN SYS_GROUP_LIMIT sgl ON sgl.GROUP_ID = GRTTCT.GROUP_LIMIT_ID LEFT JOIN SYS_GROUP_LIMIT sgl1 ON sgl1.GROUP_ID = GRCDT.GROUP_LIMIT_ID WHERE 1=1 AND (A.HH_CODE LIKE '%' + @p_HH_CODE + '%' OR @p_HH_CODE IS NULL OR @p_HH_CODE = '') AND (A.HH_NAME LIKE '%' + @p_HH_NAME + '%' OR @p_HH_NAME IS NULL OR @p_HH_NAME = '') AND (A.HH_TYPE_ID LIKE '%' + @p_HH_TYPE_ID + '%' OR @p_HH_TYPE_ID IS NULL OR @p_HH_TYPE_ID = '') --AND (C.HH_GROUP_ID LIKE '%' + @p_HH_GROUP_ID + '%' OR @p_HH_GROUP_ID IS NULL OR @p_HH_GROUP_ID = '') AND (D.HH_GROUP_CODE LIKE '%' + @p_HH_GROUP_ID + '%' OR @p_HH_GROUP_ID IS NULL OR @p_HH_GROUP_ID = '') AND (A.SUP_ID LIKE '%' + @p_SUP_ID + '%' OR @p_SUP_ID IS NULL OR @p_SUP_ID = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) =0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') --AND (A.GD_ID LIKE '%' + @p_GD_ID + '%' OR @p_GD_ID IS NULL OR @p_GD_ID = '') AND A.RECORD_STATUS = '1' ORDER BY A.CREATE_DT DESC -- PAGING END END -- PAGING --EXEC CM_GOODS_Search '','','','','',NULL,'','','','','','','','','' GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAY_BUDGET_ByID]' GO ALTER PROC [dbo].[TR_REQ_PAY_BUDGET_ByID] @p_REQ_PAY_ID VARCHAR(1500) = NULL AS BEGIN -- NHIEU PO HOAC SO PHIEU TAM UNG / THANH TOAN DECLARE @l_LSTSERI TABLE ( [ID] [int] IDENTITY(1,1) NOT NULL, [VALUE] [NVARCHAR](MAX) NULL) DECLARE @l_FILENAME VARCHAR(MAX) INSERT INTO @l_LSTSERI SELECT VALUE FROM WSISPLIT(@p_REQ_PAY_ID,';') ---- DECLARE @t_NSCP_ACCNO TABLE( GD_CODE VARCHAR(250), ACC_NO VARCHAR(20), COST_APPR DECIMAL(18, 0) ) insert into @t_NSCP_ACCNO SELECT GD_CODE, ACC_NO, COUNT(GD_CODE) FROM TR_REQ_BUGGED_NSCP GROUP BY GD_CODE, ACC_NO SELECT A.*,B.GOODS_CODE,G.GD_ID AS GOODS_ID,G.GD_NAME AS GOODS_NAME,A.RATE, A.CURRENCY, 0.0 AMT_REMAIN_HIS, NSCP.ACC_NO, CASE WHEN ISNULL(A.TLNAME, '') <> '' THEN H.TLNANME + ' - ' + H.TLFullName ELSE I.BRANCH_CODE + ' - ' + I.BRANCH_NAME END AS DISPLAY_NAME FROM TR_REQ_PAY_BUDGET A LEFT JOIN PL_TRADEDETAIL B ON A.TRADE_ID = B.TRADE_ID LEFT JOIN CM_GOODS G ON B.GOODS_ID = G.GD_ID LEFT JOIN @t_NSCP_ACCNO NSCP ON G.GD_CODE = NSCP.GD_CODE LEFT JOIN TL_USER H ON A.TLNAME = H.TLNANME LEFT JOIN CM_BRANCH I ON A.BRANCH_ID = I.BRANCH_ID WHERE A.REQ_PAY_ID IN (SELECT VALUE FROM @l_LSTSERI) END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[ASS_ADDNEW_BVB_Search]' GO ALTER PROCEDURE [dbo].[ASS_ADDNEW_BVB_Search] @p_ADDNEW_ID varchar(15) = NULL, @p_FR_BUY_DATE VARCHAR(10) = NULL, --Tu ngay nhap @p_TO_BUY_DATE VARCHAR(10) = NULL, --Den ngay nhap @p_TYPE_ID varchar(15) = NULL, @p_GROUP_ID varchar(15) = NULL, @p_ASSET_NAME nvarchar(1000) = NULL, @p_ASSET_SERIAL_NO nvarchar(MAX) = NULL, @p_ASSET_DESC nvarchar(max) = NULL, @p_BRANCH_ID varchar(15) = NULL, @p_DEPT_ID varchar(15) = NULL,---------Them ma phong ban @p_EMP_ID varchar(15) = NULL,-----------Them Nguoi su dung @p_DIVISION_ID varchar(15) = NULL,----------Them co so @p_BUY_PRICE decimal(18) = NULL, @p_AMORT_AMT decimal(18) = NULL, @p_AMORT_MONTH decimal(18,2) = NULL, @p_AMORT_RATE decimal(18,2) = NULL, @p_IS_MULTIPLE varchar(1) = NULL, @p_QTY int = NULL, @p_PO_ID varchar(15) = NULL, @p_TRADE_ID varchar(15) = NULL, --Them de luu chi tiet PO @p_TYPE varchar(10) = 'ADD_NEW', --'ADD_NEW' dung cho nhap moi TS, 'ADD_REF': nhap moi dieu chinh @p_REF_ASSET_ID varchar(15) = NULL, @p_REF_AMORTIZED_AMT decimal(18) = NULL, @p_WARRANTY_MONTHS int = 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_TOP INT = NULL, @p_CONSTRUCT_ID VARCHAR(15) = NULL, @p_POSTED_STATUS VARCHAR(1) = NULL, @p_BRANCH_CREATE VARCHAR(15) = NULL, @P_LEVEL VARCHAR(10) = NULL, @p_AUTH_STATUS_KT VARCHAR(1) = NULL, @p_KT_IS_DO VARCHAR(1) = NULL, @p_PRICE_TO decimal(18) = NULL, @p_PRICE_FROM decimal(18) = NULL, @p_USER_LOGIN VARCHAR(15),-- 26022020 LUCTV TRUYEN XUONG USER LOGIN DE DO TIM MA PHONG BAN @p_TYPE_SEARCH VARCHAR(10)= NULL -- 26022020 LUCTV TRUYEN XUONG DAU HIEU DE PHAN BIET TIM KIEM O MAN HINH KE TOAN HAY MAN HINH HCQT AS BEGIN -- PAGING SET @p_RECORD_STATUS = '1' declare @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_CREATE) DECLARE @l_GROUP_CODE VARCHAR(100) IF(@p_TYPE_ID='ALL') BEGIN SET @l_GROUP_CODE = (SELECT GROUP_CODE FROM ASS_GROUP WHERE GROUP_ID = @p_GROUP_ID) SET @p_TYPE_ID='' END IF @P_TOP IS NULL OR @P_TOP = '' -- PAGING BEGIN SELECT A.ADDNEW_ID, A.BUY_DATE, A.[TYPE_ID], C.[TYPE_NAME], A.GROUP_ID, D.GROUP_CODE, D.GROUP_NAME, A.ASSET_NAME, A.ASSET_SERIAL_NO, A.ASSET_DESC, A.BRANCH_ID, A.AMORT_START_DATE, A.DEPT_ID, H.DEP_CODE, H.DEP_NAME, A.EMP_ID, G.EMP_CODE, G.EMP_NAME, A.DIVISION_ID, ISNULL(A.BUY_PRICE,0) AS BUY_PRICE, ISNULL(A.AMORT_AMT,0) AS AMORT_AMT, A.AMORT_MONTH, A.AMORT_RATE, A.IS_MULTIPLE, A.QTY, A.PO_ID, PO.PO_CODE, A.PD_ID, A.REF_ASSET_ID, I.ASSET_CODE AS REF_ASS_CODE, I.ASSET_NAME AS REF_ASS_NAME, A.REF_AMORTIZED_AMT, A.WARRANTY_MONTHS, A.NOTES, A.CORE_NOTE , A.RECORD_STATUS, A.AUTH_STATUS, B.CONTENT AS AUTH_STATUS_NAME,AKT.CONTENT AS AUTH_STATUS_NAME_KT, A.MAKER_ID, UM.TLFullName MAKER_NAME, A.CREATE_DT,--CONVERT(VARCHAR(10), A.CREATE_DT, 103) AS S_CREATE_DT A.CHECKER_ID, A.APPROVE_DT, A.ENTRY_BOOKED, A.CONSTRUCT_ID,A.POSTED_STATUS, A.BRANCH_CREATE,A.MAKER_ID_KT, A.CREATE_DT_KT,A.CHECKER_ID_KT,A.APPROVE_DT_KT,A.AUTH_STATUS_KT, E.BRANCH_CODE, F.DIV_CODE, E.BRANCH_NAME, (ISNULL(E.BRANCH_NAME,'') + ' '+ ISNULL(H.DEP_NAME,'')) AS RECEIVE_BRANCH , CREBRN.BRANCH_CODE AS R_BRANCH_CODE, CREBRN.BRANCH_NAME AS R_BRANCH_NAME, A.AMORT_END_DATE, A.ACCOUNT_GL, A.VAT, A.PRICE_VAT,(ISNULL(A.QTY,0) * ISNULL(A.BUY_PRICE,0)) AS TOTAL_AMT --, G.SUP_CODE, G.SUP_NAME ,AP.ASSPO_ID AS ASS_PO_ID, AP.ADDNEW_ID AS ASS_PO_ADDNEWID, AP.PO_CODE AS ASS_PO_CODE, AP.INVOICE_NO AS AS_INVOICE_NO, AP.INVOICE_DATE AS ASS_INVOICE_DT, CREBRN.BRANCH_CODE+' - '+ CREBRN.BRANCH_NAME AS FULL_BRANCH_NAME, D.GROUP_CODE +' - '+ D.GROUP_NAME GROUP_NAME_FULL, UM2.TLFullName AS CREATE_USER_NAME, UM3.TLFullName AS APPROVE_NAME_KT, UM4.TLFullName AS CREATE_USER_NAME_KT, @p_USER_LOGIN AS USER_LOGIN,@p_TYPE_SEARCH AS TYPE_SEARCH --- TRA VE THAM SO GAN VO CURRENT SEARCH TRANH GAY LOI O CAC MAN HINH -- SELECT END FROM ASS_ADDNEW A --LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS = B.AUTH_STATUS LEFT JOIN dbo.CM_ALLCODE B ON B.CDVAL = A.AUTH_STATUS AND B.CDNAME = 'ASS_ADD_AUTH' AND B.CDTYPE = 'ASS_ADDNEW' LEFT JOIN ASS_TYPE C ON A.[TYPE_ID] = C.[TYPE_ID] LEFT JOIN ASS_GROUP D ON A.GROUP_ID = D.GROUP_ID LEFT JOIN TL_USER UM ON UM.TLNANME = A.CHECKER_ID LEFT JOIN TL_USER UM2 ON UM2.TLNANME = A.MAKER_ID LEFT JOIN TL_USER UM3 ON UM2.TLNANME = A.CHECKER_ID_KT LEFT JOIN TL_USER UM4 ON UM4.TLNANME = A.MAKER_ID_KT LEFT JOIN TR_PO_MASTER PO ON PO.PO_ID = A.PO_ID LEFT JOIN CM_BRANCH E ON E.BRANCH_ID = A.BRANCH_ID LEFT JOIN CM_DIVISION F ON F.DIV_ID = A.DIVISION_ID LEFT JOIN CM_EMPLOYEE G ON G.EMP_ID = A.EMP_ID LEFT JOIN CM_DEPARTMENT H ON H.DEP_ID = A.DEPT_ID LEFT JOIN ASS_MASTER I ON I.ASSET_ID = A.REF_ASSET_ID --LEFT JOIN CM_AUTH_STATUS AKT ON AKT.AUTH_STATUS = A.AUTH_STATUS_KT LEFT JOIN dbo.CM_ALLCODE AKT ON AKT.CDVAL = A.AUTH_STATUS_KT AND AKT.CDNAME = 'ASS_ADD_AUTH' AND AKT.CDTYPE = 'ASS_ADDNEW' LEFT JOIN CM_BRANCH CREBRN ON CREBRN.BRANCH_ID = A.BRANCH_CREATE LEFT JOIN ASS_PO AP ON A.ADDNEW_ID = AP.ADDNEW_ID WHERE (A.ADDNEW_ID like N'%' + @p_ADDNEW_ID + '%' OR @p_ADDNEW_ID IS NULL OR @p_ADDNEW_ID = '') -- TIM KIEM TU NGAY DEN NGAY O HC AND ((@p_TYPE_SEARCH = 'HC' AND (CONVERT(DATE,A.BUY_DATE,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')) OR @p_TYPE_SEARCH = 'KT' OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH = '') AND ((@p_TYPE_SEARCH = 'HC' AND (CONVERT(DATE,A.BUY_DATE,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')) OR @p_TYPE_SEARCH = 'KT' OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH = '') -- TIM KIEM TU NGAY O KT AND ((@p_TYPE_SEARCH = 'KT' AND (((A.MAKER_ID_KT IS NULL OR A.MAKER_ID_KT = '') AND (CONVERT(DATE,A.APPROVE_DT,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')) OR ((A.MAKER_ID_KT IS NOT NULL OR A.MAKER_ID_KT <> '') AND ((@p_AUTH_STATUS_KT = 'A' AND (CONVERT(DATE,A.APPROVE_DT_KT,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')) OR (@p_AUTH_STATUS_KT = 'U' AND (CONVERT(DATE,A.CREATE_DT_KT,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')) OR (@p_AUTH_STATUS_KT = 'R' AND (CONVERT(DATE,A.CREATE_DT_KT,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')) OR ((@p_AUTH_STATUS_KT = '' OR @p_AUTH_STATUS_KT IS NULL) AND (CONVERT(DATE,A.CREATE_DT_KT,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')))))) OR @p_TYPE_SEARCH = 'HC' OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH = '') -- TIM KIEM DEN NGAY O KT AND ((@p_TYPE_SEARCH = 'KT' AND (((A.MAKER_ID_KT IS NULL OR A.MAKER_ID_KT = '') AND (CONVERT(DATE,A.APPROVE_DT,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')) OR ((A.MAKER_ID_KT IS NOT NULL AND A.MAKER_ID_KT <> '') AND ((@p_AUTH_STATUS_KT = 'A' AND (CONVERT(DATE,A.APPROVE_DT_KT,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')) OR (@p_AUTH_STATUS_KT = 'U' AND (CONVERT(DATE,A.CREATE_DT_KT,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')) OR (@p_AUTH_STATUS_KT = 'R' AND (CONVERT(DATE,A.CREATE_DT_KT,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')) OR ((@p_AUTH_STATUS_KT = '' OR @p_AUTH_STATUS_KT IS NULL) AND (CONVERT(DATE,A.CREATE_DT_KT,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')))))) OR @p_TYPE_SEARCH = 'HC' OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH = '') 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 (D.GROUP_CODE = @l_GROUP_CODE OR @l_GROUP_CODE IS NULL OR @l_GROUP_CODE = '') AND (A.ASSET_NAME like N'%' + @p_ASSET_NAME + '%' OR @p_ASSET_NAME IS NULL OR @p_ASSET_NAME = '') AND (A.ASSET_SERIAL_NO like N'%' + @p_ASSET_SERIAL_NO + '%' OR @p_ASSET_SERIAL_NO IS NULL OR @p_ASSET_SERIAL_NO = '') AND (A.ASSET_DESC like N'%' + @p_ASSET_DESC + '%' OR @p_ASSET_DESC IS NULL OR @p_ASSET_DESC = '') AND (A.BRANCH_CREATE IN (SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)) OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.DEPT_ID = @p_DEPT_ID OR @p_DEPT_ID IS NULL OR @p_DEPT_ID = '') AND (A.EMP_ID = @p_EMP_ID OR @p_EMP_ID IS NULL OR @p_EMP_ID = '') AND (A.DIVISION_ID = @p_DIVISION_ID OR @p_DIVISION_ID IS NULL OR @p_DIVISION_ID = '') AND (A.BUY_PRICE = @p_BUY_PRICE OR @p_BUY_PRICE IS NULL) AND (A.AMORT_AMT = @p_AMORT_AMT OR @p_AMORT_AMT IS NULL) AND (A.AMORT_MONTH = @p_AMORT_MONTH OR @p_AMORT_MONTH IS NULL) AND (A.AMORT_RATE = @p_AMORT_RATE OR @p_AMORT_RATE IS NULL) AND (A.IS_MULTIPLE = @p_IS_MULTIPLE OR @p_IS_MULTIPLE IS NULL OR @p_IS_MULTIPLE = '') AND (A.QTY = @p_QTY OR @p_QTY IS NULL OR @p_QTY = 0) AND (A.PO_ID = @p_PO_ID OR @p_PO_ID IS NULL OR @p_PO_ID = '') AND ((@p_TYPE = 'ADD_NEW' AND (A.REF_ASSET_ID IS NULL OR A.REF_ASSET_ID = '')) OR (@p_TYPE = 'ADD_REF' AND A.REF_ASSET_ID IS NOT NULL AND A.REF_ASSET_ID <> '')) AND (A.REF_ASSET_ID = @p_REF_ASSET_ID OR @p_REF_ASSET_ID IS NULL OR @p_REF_ASSET_ID='') AND (A.REF_AMORTIZED_AMT = @p_REF_AMORTIZED_AMT OR @p_REF_AMORTIZED_AMT IS NULL) AND (A.WARRANTY_MONTHS = @p_WARRANTY_MONTHS OR @p_WARRANTY_MONTHS IS NULL OR @p_WARRANTY_MONTHS = 0) AND (A.NOTES like N'%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.RECORD_STATUS = @p_RECORD_STATUS OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.AUTH_STATUS = @p_AUTH_STATUS OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.POSTED_STATUS = @p_POSTED_STATUS OR @p_POSTED_STATUS IS NULL OR @p_POSTED_STATUS = '') --AND (A.BRANCH_CREATE = @p_BRANCH_CREATE OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') AND (A.AUTH_STATUS_KT = @p_AUTH_STATUS_KT OR @p_AUTH_STATUS_KT IS NULL OR @p_AUTH_STATUS_KT = '') AND ((A.MAKER_ID_KT IS NOT NULL AND @p_KT_IS_DO = 'Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat OR ((A.MAKER_ID_KT IS NULL AND @p_KT_IS_DO = 'N')) OR @p_KT_IS_DO IS NULL OR @p_KT_IS_DO = '') AND ((ISNULL(A.QTY,0) * ISNULL(A.BUY_PRICE,0)) >= @p_PRICE_FROM OR @p_PRICE_FROM = 0 OR @p_PRICE_FROM IS NULL) AND ((ISNULL(A.QTY,0) * ISNULL(A.BUY_PRICE,0)) <= @p_PRICE_TO OR @p_PRICE_TO = 0 OR @p_PRICE_TO IS NULL) -- 26-02-2020 LUCTV BO SUNG DIEU KIEN TIM KIEM PHIEU NHAP KHO THEO NGUOI TAO PHIEU : THEO YEU CAU BO SUNG CHINH SUA CUA VCCB AND (A.MAKER_ID = @p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') -- NEW TRANG THAI PHIEU XUAT LA LUU NHAP HOAC TU CHOI THI CHI NGUOI TAO CO THE TIM THAY AND ((A.AUTH_STATUS IN ('E','R') AND A.MAKER_ID = @p_USER_LOGIN) OR A.AUTH_STATUS NOT IN ('E','R') OR @p_USER_LOGIN IS NULL OR @p_USER_LOGIN = '') -- 11-03-2022 HUYHT BO SUNG DIEU KIEN TIM KIEM PHIEU NHAP THEO QUYEN KIEM NHIEM AND ((@p_TYPE_SEARCH='HC' AND (EXISTS(SELECT * FROM dbo.FN_GET_USER_BY_ROLE('GDDV',A.BRANCH_CREATE,A.DEPT_CREATE) US WHERE US.TLNANME = @p_USER_LOGIN))) OR A.MAKER_ID = @p_USER_LOGIN OR (@p_TYPE_SEARCH='KT' AND @P_LEVEL = 'ALL' AND A.BRANCH_CREATE IN (SELECT BRANCH_ID from @tmp)) OR (@p_TYPE_SEARCH='KT' AND @P_LEVEL = 'UNIT' AND A.BRANCH_CREATE = @p_BRANCH_CREATE) OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH ='') ORDER BY A.CREATE_DT DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP (CONVERT(INT, @P_TOP)) A.ADDNEW_ID, A.BUY_DATE, A.[TYPE_ID], C.[TYPE_NAME], A.GROUP_ID, D.GROUP_CODE, D.GROUP_NAME, A.ASSET_NAME, A.ASSET_SERIAL_NO, A.ASSET_DESC, A.BRANCH_ID, A.AMORT_START_DATE, A.DEPT_ID, H.DEP_CODE, H.DEP_NAME, A.EMP_ID, G.EMP_CODE, G.EMP_NAME, A.DIVISION_ID, ISNULL(A.BUY_PRICE,0) AS BUY_PRICE, ISNULL(A.AMORT_AMT,0) AS AMORT_AMT, A.AMORT_MONTH, A.AMORT_RATE, A.IS_MULTIPLE, A.QTY, A.PO_ID, PO.PO_CODE, A.REF_ASSET_ID, I.ASSET_CODE AS REF_ASS_CODE, I.ASSET_NAME AS REF_ASS_NAME, A.REF_AMORTIZED_AMT, A.WARRANTY_MONTHS, A.NOTES, A.CORE_NOTE, A.RECORD_STATUS, A.AUTH_STATUS, B.CONTENT AS AUTH_STATUS_NAME,AKT.CONTENT AS AUTH_STATUS_NAME_KT, A.MAKER_ID, UM.TLFullName MAKER_NAME, A.CREATE_DT,--CONVERT(VARCHAR(10), A.CREATE_DT, 103) AS S_CREATE_DT A.CHECKER_ID, A.APPROVE_DT, A.ENTRY_BOOKED,A.CONSTRUCT_ID,A.POSTED_STATUS, A.BRANCH_CREATE,A.MAKER_ID_KT, A.CREATE_DT_KT,A.CHECKER_ID_KT,A.APPROVE_DT_KT,A.AUTH_STATUS_KT, E.BRANCH_CODE, F.DIV_CODE, E.BRANCH_NAME, (ISNULL(E.BRANCH_NAME,'') + ' '+ ISNULL(H.DEP_NAME,'')) AS RECEIVE_BRANCH , CREBRN.BRANCH_CODE AS R_BRANCH_CODE, CREBRN.BRANCH_NAME AS R_BRANCH_NAME, A.AMORT_END_DATE, A.ACCOUNT_GL, A.VAT, A.PRICE_VAT, (ISNULL(A.QTY,0) * ISNULL(A.BUY_PRICE,0)) AS TOTAL_AMT --, G.SUP_CODE, G.SUP_NAME ,AP.ASSPO_ID AS ASS_PO_ID, AP.ADDNEW_ID AS ASS_PO_ADDNEWID, AP.PO_CODE AS ASS_PO_CODE, AP.INVOICE_NO AS AS_INVOICE_NO, AP.INVOICE_DATE AS ASS_INVOICE_DT,CREBRN.BRANCH_CODE+' - '+ CREBRN.BRANCH_NAME AS FULL_BRANCH_NAME ,D.GROUP_CODE +' - '+ D.GROUP_NAME GROUP_NAME_FULL, UM2.TLFullName AS CREATE_USER_NAME, UM3.TLFullName AS APPROVE_NAME_KT, UM4.TLFullName AS CREATE_USER_NAME_KT, @p_USER_LOGIN AS USER_LOGIN,@p_TYPE_SEARCH AS TYPE_SEARCH --- TRA VE THAM SO GAN VO CURRENT SEARCH TRANH GAY LOI O CAC MAN HINH -- SELECT END FROM ASS_ADDNEW A --LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS = B.AUTH_STATUS LEFT JOIN dbo.CM_ALLCODE B ON B.CDVAL = A.AUTH_STATUS AND B.CDNAME = 'ASS_ADD_AUTH' AND B.CDTYPE = 'ASS_ADDNEW' LEFT JOIN ASS_TYPE C ON A.[TYPE_ID] = C.[TYPE_ID] LEFT JOIN ASS_GROUP D ON A.GROUP_ID = D.GROUP_ID LEFT JOIN TL_USER UM ON UM.TLNANME = A.CHECKER_ID LEFT JOIN TL_USER UM2 ON UM2.TLNANME = A.MAKER_ID LEFT JOIN TL_USER UM3 ON UM2.TLNANME = A.CHECKER_ID_KT LEFT JOIN TL_USER UM4 ON UM4.TLNANME = A.MAKER_ID_KT LEFT JOIN TR_PO_MASTER PO ON PO.PO_ID = A.PO_ID LEFT JOIN CM_BRANCH E ON E.BRANCH_ID = A.BRANCH_ID LEFT JOIN CM_DIVISION F ON F.DIV_ID = A.DIVISION_ID LEFT JOIN CM_EMPLOYEE G ON G.EMP_ID = A.EMP_ID LEFT JOIN CM_DEPARTMENT H ON H.DEP_ID = A.DEPT_ID LEFT JOIN ASS_MASTER I ON I.ASSET_ID = A.REF_ASSET_ID --LEFT JOIN CM_AUTH_STATUS AKT ON AKT.AUTH_STATUS = A.AUTH_STATUS_KT LEFT JOIN dbo.CM_ALLCODE AKT ON AKT.CDVAL = A.AUTH_STATUS_KT AND AKT.CDNAME = 'ASS_ADD_AUTH' AND AKT.CDTYPE = 'ASS_ADDNEW' LEFT JOIN CM_BRANCH CREBRN ON CREBRN.BRANCH_ID = A.BRANCH_CREATE LEFT JOIN ASS_PO AP ON A.ADDNEW_ID = AP.ADDNEW_ID WHERE (A.ADDNEW_ID like N'%' + @p_ADDNEW_ID + '%' OR @p_ADDNEW_ID IS NULL OR @p_ADDNEW_ID = '') -- TIM KIEM TU NGAY DEN NGAY O HC AND ((@p_TYPE_SEARCH = 'HC' AND (CONVERT(DATE,A.BUY_DATE,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')) OR @p_TYPE_SEARCH = 'KT' OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH = '') AND ((@p_TYPE_SEARCH = 'HC' AND (CONVERT(DATE,A.BUY_DATE,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')) OR @p_TYPE_SEARCH = 'KT' OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH = '') -- TIM KIEM TU NGAY O KT AND ((@p_TYPE_SEARCH = 'KT' AND (((A.MAKER_ID_KT IS NULL OR A.MAKER_ID_KT = '') AND (CONVERT(DATE,A.APPROVE_DT,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')) OR ((A.MAKER_ID_KT IS NOT NULL OR A.MAKER_ID_KT <> '') AND ((@p_AUTH_STATUS_KT = 'A' AND (CONVERT(DATE,A.APPROVE_DT_KT,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')) OR (@p_AUTH_STATUS_KT = 'U' AND (CONVERT(DATE,A.CREATE_DT_KT,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')) OR (@p_AUTH_STATUS_KT = 'R' AND (CONVERT(DATE,A.CREATE_DT_KT,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')) OR ((@p_AUTH_STATUS_KT = '' OR @p_AUTH_STATUS_KT IS NULL) AND (CONVERT(DATE,A.CREATE_DT_KT,103) >= CONVERT(DATE, @p_FR_BUY_DATE, 103) OR @p_FR_BUY_DATE is NULL OR @p_FR_BUY_DATE = '')))))) OR @p_TYPE_SEARCH = 'HC' OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH = '') -- TIM KIEM DEN NGAY O KT AND ((@p_TYPE_SEARCH = 'KT' AND (((A.MAKER_ID_KT IS NULL OR A.MAKER_ID_KT = '') AND (CONVERT(DATE,A.APPROVE_DT,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')) OR ((A.MAKER_ID_KT IS NOT NULL AND A.MAKER_ID_KT <> '') AND ((@p_AUTH_STATUS_KT = 'A' AND (CONVERT(DATE,A.APPROVE_DT_KT,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')) OR (@p_AUTH_STATUS_KT = 'U' AND (CONVERT(DATE,A.CREATE_DT_KT,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')) OR (@p_AUTH_STATUS_KT = 'U' AND (CONVERT(DATE,A.CREATE_DT_KT,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')) OR ((@p_AUTH_STATUS_KT = '' OR @p_AUTH_STATUS_KT IS NULL) AND (CONVERT(DATE,A.CREATE_DT_KT,103) <= CONVERT(DATE, @p_TO_BUY_DATE, 103) OR @p_TO_BUY_DATE is NULL OR @p_TO_BUY_DATE = '')))))) OR @p_TYPE_SEARCH = 'HC' OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH = '') 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 (D.GROUP_CODE = @l_GROUP_CODE OR @l_GROUP_CODE IS NULL OR @l_GROUP_CODE = '') AND (A.ASSET_NAME like N'%' + @p_ASSET_NAME + '%' OR @p_ASSET_NAME IS NULL OR @p_ASSET_NAME = '') AND (A.ASSET_SERIAL_NO like N'%' + @p_ASSET_SERIAL_NO + '%' OR @p_ASSET_SERIAL_NO IS NULL OR @p_ASSET_SERIAL_NO = '') AND (A.ASSET_DESC like N'%' + @p_ASSET_DESC + '%' OR @p_ASSET_DESC IS NULL OR @p_ASSET_DESC = '') AND (A.BRANCH_CREATE IN (SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)) OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.BUY_PRICE = @p_BUY_PRICE OR @p_BUY_PRICE IS NULL) AND (A.AMORT_AMT = @p_AMORT_AMT OR @p_AMORT_AMT IS NULL) AND (A.AMORT_MONTH = @p_AMORT_MONTH OR @p_AMORT_MONTH IS NULL) AND (A.AMORT_RATE = @p_AMORT_RATE OR @p_AMORT_RATE IS NULL) AND (A.IS_MULTIPLE = @p_IS_MULTIPLE OR @p_IS_MULTIPLE IS NULL OR @p_IS_MULTIPLE = '') AND (A.QTY = @p_QTY OR @p_QTY IS NULL OR @p_QTY = 0) AND (A.PO_ID = @p_PO_ID OR @p_PO_ID IS NULL OR @p_PO_ID = '') AND ((@p_TYPE = 'ADD_NEW' AND (A.REF_ASSET_ID IS NULL OR A.REF_ASSET_ID = '')) OR (@p_TYPE = 'ADD_REF' AND A.REF_ASSET_ID IS NOT NULL AND A.REF_ASSET_ID <> '')) AND (A.REF_ASSET_ID = @p_REF_ASSET_ID OR @p_REF_ASSET_ID IS NULL OR @p_REF_ASSET_ID='') AND (A.REF_AMORTIZED_AMT = @p_REF_AMORTIZED_AMT OR @p_REF_AMORTIZED_AMT IS NULL) AND (A.WARRANTY_MONTHS = @p_WARRANTY_MONTHS OR @p_WARRANTY_MONTHS IS NULL OR @p_WARRANTY_MONTHS = 0) AND (A.NOTES like N'%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.RECORD_STATUS = @p_RECORD_STATUS OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.AUTH_STATUS = @p_AUTH_STATUS OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.POSTED_STATUS = @p_POSTED_STATUS OR @p_POSTED_STATUS IS NULL OR @p_POSTED_STATUS = '') --AND (A.BRANCH_CREATE = @p_BRANCH_CREATE OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') AND (A.AUTH_STATUS_KT = @p_AUTH_STATUS_KT OR @p_AUTH_STATUS_KT IS NULL OR @p_AUTH_STATUS_KT = '') AND ((A.MAKER_ID_KT IS NOT NULL AND @p_KT_IS_DO = 'Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat OR ((A.MAKER_ID_KT IS NULL AND @p_KT_IS_DO = 'N')) OR @p_KT_IS_DO IS NULL OR @p_KT_IS_DO = '') AND ((ISNULL(A.QTY,0) * ISNULL(A.BUY_PRICE,0)) >= @p_PRICE_FROM OR @p_PRICE_FROM = 0 OR @p_PRICE_FROM IS NULL) AND ((ISNULL(A.QTY,0) * ISNULL(A.BUY_PRICE,0)) <= @p_PRICE_TO OR @p_PRICE_TO = 0 OR @p_PRICE_TO IS NULL) -- 26-02-2020 LUCTV BO SUNG DIEU KIEN TIM KIEM PHIEU NHAP KHO THEO NGUOI TAO PHIEU : THEO YEU CAU BO SUNG CHINH SUA CUA VCCB AND (A.MAKER_ID = @p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') -- NEW TRANG THAI PHIEU XUAT LA LUU NHAP HOAC TU CHOI THI CHI NGUOI TAO CO THE TIM THAY AND ((A.AUTH_STATUS IN ('E','R') AND A.MAKER_ID = @p_USER_LOGIN) OR A.AUTH_STATUS NOT IN ('E','R') OR @p_USER_LOGIN IS NULL OR @p_USER_LOGIN = '') -- 11-03-2022 HUYHT BO SUNG DIEU KIEN TIM KIEM PHIEU NHAP THEO QUYEN KIEM NHIEM AND ((@p_TYPE_SEARCH='HC' AND (EXISTS(SELECT * FROM dbo.FN_GET_USER_BY_ROLE('GDDV',A.BRANCH_CREATE,A.DEPT_CREATE) US WHERE US.TLNANME = @p_USER_LOGIN))) OR A.MAKER_ID = @p_USER_LOGIN OR (@p_TYPE_SEARCH='KT' AND @P_LEVEL = 'ALL' AND A.BRANCH_CREATE IN (SELECT BRANCH_ID from @tmp)) OR (@p_TYPE_SEARCH='KT' AND @P_LEVEL = 'UNIT' AND A.BRANCH_CREATE = @p_BRANCH_CREATE) OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH ='') ORDER BY A.CREATE_DT DESC -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_CONTRACT_SendAppr]' GO /* */ ALTER PROCEDURE [dbo].[TR_CONTRACT_SendAppr] @p_CONTRACT_ID VARCHAR(15), @p_AUTH_STATUS varchar(50) = NULL, @p_USER_LOGIN varchar(12) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION DECLARE @tmp_tbl TABLE( GOODS_NAME nvarchar(MAX) , QUANTITY_USE DECIMAL ) INSERT INTO @tmp_tbl SELECT B.GD_NAME AS GOODS_NAME, C.QUANTITY_USE FROM TR_CONTRACT_DT A LEFT JOIN CM_GOODS B ON A.GOODS_ID = B.GD_ID LEFT JOIN ( select GOODS_ID, CONTRACT_ID, SUM(QUANTITY) AS QUANTITY_USE FROM TR_PO_DETAIL A LEFT JOIN TR_PO_MASTER B ON A.PO_ID = B.PO_ID WHERE B.CONTRACT_ID = @p_CONTRACT_ID AND B.AUTH_STATUS = 'A' GROUP BY GOODS_ID, CONTRACT_ID ) C on A.GOODS_ID = C.GOODS_ID WHERE C.QUANTITY_USE > A.QUANTITY AND A.CONTRACT_ID = @p_CONTRACT_ID IF EXISTS(SELECT * FROM @tmp_tbl) BEGIN DECLARE @message NVARCHAR(MAX) SELECT @message = COALESCE(@message + '\n ', '') + (N'Hàng hóa ' + GOODS_NAME + N' số lượng đã gọi là ' + CONVERT(NVARCHAR(50),(QUANTITY_USE))) -- + N' (đã duyệt ' + CONVERT(NVARCHAR(50),QUANTITY_USE) + N', chờ duyệt ' + CONVERT(NVARCHAR(50),QUANTITY) + N')') FROM @tmp_tbl ROLLBACK TRANSACTION SELECT '-1' Result, '' CONTRACT_ID, '' CONTRACT_CODE, N'Số lượng trong hợp đồng không được nhỏ hơn số lượng đã mua: \n' + @message ErrorDesc RETURN '0' END DECLARE @TOTAL_PO DECIMAL, @TOTAL_CONTRACT DECIMAL, @l_CONTRACT_NAME NVARCHAR(MAX) SELECT @TOTAL_PO = SUM(A.TOTAL_AMT) FROM TR_PO_DETAIL A LEFT JOIN TR_PO_MASTER B ON A.PO_ID = B.PO_ID WHERE B.CONTRACT_ID = @p_CONTRACT_ID AND B.AUTH_STATUS = 'A' SELECT @TOTAL_CONTRACT = SUM(PRICE * QUANTITY) FROM TR_CONTRACT_DT WHERE CONTRACT_ID = @p_CONTRACT_ID SET @l_CONTRACT_NAME = (SELECT [CONTRACT_NAME] FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID) IF @TOTAL_PO > @TOTAL_CONTRACT BEGIN DECLARE @message1 NVARCHAR(MAX) SELECT @message1 = COALESCE(@message + '\n ', '') + (N'Hợp đồng ' + @l_CONTRACT_NAME + N' giá trị đã gọi là ' + CONVERT(NVARCHAR(50),(@TOTAL_PO))) ROLLBACK TRANSACTION SELECT '-1' Result, '' CONTRACT_ID, '' CONTRACT_CODE, N'Giá trị trong hợp đồng không được nhỏ hơn giá trị đã mua: \n' + @message1 ErrorDesc RETURN '0' END --------------BAODNQ 12/12/2022 : Nếu hợp đồng ko ph là hợp đồng định kỳ----------- ------------------bắt buộc chọn NCC--------------- DECLARE @p_CONT_TYPE VARCHAR(10) = ( SELECT TOP 1 CONT_TYPE FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID ) DECLARE @p_SUP_ID VARCHAR(15) = (SELECT TOP 1 SUP_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID) IF(@p_CONT_TYPE <> 'DK' AND (@p_SUP_ID IS NULL OR @p_SUP_ID = '')) BEGIN DECLARE @p_DK_TYPE_NAME NVARCHAR(200) = ( SELECT TOP 1 CONTENT FROM CM_ALLCODE WHERE CDTYPE = 'CONTRACT' AND CDNAME = 'CONTRACT_TYPE' AND CDVAL = 'DK' ) ROLLBACK TRANSACTION SELECT '-1' Result, '' CONTRACT_ID, '' CONTRACT_CODE, N'Nếu loại hợp đồng không phải là ' +@p_DK_TYPE_NAME+ N', bắt buộc chọn nhà cung cấp từ hệ thống' ErrorDesc RETURN '0' END UPDATE TR_CONTRACT SET AUTH_STATUS = @p_AUTH_STATUS, IS_SEND_APPR = 'Y', SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103) WHERE CONTRACT_ID = @p_CONTRACT_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @p_IS_SEND_APPR VARCHAR(15) = (SELECT IS_SEND_APPR FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID) DECLARE @p_CONTRACT_NAME NVARCHAR(500) = (SELECT [CONTRACT_NAME] FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID) --------BAODNQ 16/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONTRACT_ID, 'SEND', @p_USER_LOGIN, GETDATE(), N'Người tạo gửi phê duyệt thành công' , N'Người tạo gửi phê duyệt' ) IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @P_CONTRACT_ID CONTRACT_ID, @p_IS_SEND_APPR IS_SEND_APPR, N'Thông tin hợp đồng: '+@p_CONTRACT_NAME+ N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, '' IS_SEND_APPR, ERROR_MESSAGE() ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[NF_MESSAGE_GetContent]' GO ALTER PROCEDURE [dbo].[NF_MESSAGE_GetContent] @p_TYPE VARCHAR(100) = NULL, @p_ID varchar(500) = NULL AS DECLARE @l_LST_REQ_ID TABLE ( [ID] [int] IDENTITY(1,1) NOT NULL, [REQ_PAY_ID] [VARCHAR](50) NULL) INSERT INTO @l_LST_REQ_ID SELECT VALUE FROM WSISPLIT(@p_ID,',') DECLARE @footer NVARCHAR(4000) = N'

P/s: Vui lòng không phản hồi email này. Đây là email được tạo ra bởi hệ thống tự động.

Thanks and Best Regards' DECLARE @CODE NVARCHAR(1000), @APPROVEDT DATETIME, @DATETIME VARCHAR(100), @URL VARCHAR(1000) DECLARE @TILTER_MAIL NVARCHAR(1000) ='', @LINK_UAT NVARCHAR(250)= '' SET @TILTER_MAIL =ISNULL((SELECT TOP 1 TITLE FROM TL_MESSAGE WHERE PROCESS_ID ='TIL'),N'[PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS]') --INSERT INTO TL_MESSAGE VALUES ('UAT',N'https://it.gsoft.com.vn:3051/app/admin/','') SET @URL = (SELECT TOP 1 TITLE FROM TL_MESSAGE WHERE PROCESS_ID = 'UAT') --SET @URL = 'https://it.gsoft.com.vn:3051/app/admin/' SET @LINK_UAT =N'

'+(SELECT TOP 1 TITLE FROM TL_MESSAGE WHERE PROCESS_ID = 'UAT') --DUYET PO --IF @p_TYPE = 'TR_PO_MASTER_Approve' --BEGIN --SELECT @CODE = PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @p_ID ----SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) --SELECT N'[HỆ THỐNG PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo PO đã được duyệt' AS TITLE, --@p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + --N',

Số PO: ' + @CODE + N' đã được duyệt.' + @footer --AS MESSAGECONTENT --RETURN 0 --END -----------------BAODNQ 16/11/2022 : KHAI BÁO FONT-SIZE, FONT-FAMILY------------------------------------- DECLARE @p_FONT_SIZE NVARCHAR(20) = (SELECT TOP 1 TITLE FROM TL_MESSAGE WHERE PROCESS_ID = 'FONT_SIZE') PRINT @p_FONT_SIZE IF(@p_FONT_SIZE IS NULL OR @p_FONT_SIZE = '') BEGIN SET @p_FONT_SIZE = '12px' END DECLARE @p_FONT_FAMILY VARCHAR(MAX) = 'times new roman' DECLARE @p_MESSAGE_HEAD VARCHAR(MAX) = '' --DUYET CAP NHAT DON HANG IF @p_TYPE = 'TR_PO_UP_MASTER_App' BEGIN SELECT @CODE = PO_CODE, @APPROVEDT = APPROVE_DT FROM TR_PO_UP_MASTER WHERE PO_UP_ID = @p_ID SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) SELECT N'[HỆ THỐNG PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo đã cập nhập đơn hàng' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị'+ N',

Số PO: ' + @CODE + N' đã nhận hàng vào lúc ' + @DATETIME + @footer AS MESSAGECONTENT RETURN 0 END --DUYET PO SUA CHUA IF @p_TYPE = 'TR_PO_REPAIR_Approve' BEGIN SELECT @CODE = PO_CODE FROM TR_PO_REPAIR WHERE PO_REPAIR_ID = @p_ID SELECT N'[HỆ THỐNG PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo PO sửa chữa đã được duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Số PO: ' + @CODE + N' đã được duyệt.' + @footer AS MESSAGECONTENT RETURN 0 END --DUYET XUAT SU DUNG DON LE IF @p_TYPE = 'ASS_USE_SearchResult' BEGIN SELECT @CODE = ASSET_CODE FROM ASS_MASTER WHERE ASSET_ID = (SELECT A.ASSET_ID FROM ASS_USE A WHERE A.USE_ID = @p_ID) SELECT N'[HỆ THỐNG PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo xuất kho được duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tài sản: ' + @CODE + N' đã được xuất sử dụng.' + @footer AS MESSAGECONTENT RETURN 0 END --DUYET XUAT SU DUNG HANG LOAT IF @p_TYPE = 'ASS_USE_MULTI_MASTER_SearchResult' BEGIN SET @CODE = (SELECT STUFF((SELECT '; ' + DTA.PO_CODE FROM TR_PO_MASTER DTA INNER JOIN ( SELECT A.PO_ID FROM ASS_MASTER_PO A INNER JOIN ASS_USE_MULTI_DT B ON A.ASSET_ID = B.ASSET_ID AND B.USER_MASTER_ID = @p_ID GROUP BY A.PO_ID ) PODT ON DTA.PO_ID = PODT.PO_ID FOR XML PATH('') ),1,1,'') ) SELECT N'[HỆ THỐNG PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo xuất kho được duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tài sản thuộc PO: ' + @CODE + N' đã được xuất sử dụng.' + @footer AS MESSAGECONTENT RETURN 0 END --DUYET NHAP MOI VA XUAT SU DUNG CUNG LUC IF @p_TYPE = 'ASS_ADDNEW_SearchResult' BEGIN SET @CODE = (SELECT STUFF((SELECT '; ' + DTA.PO_CODE FROM ASS_ADDNEW_PO DTA WHERE DTA.ADDNEW_ID = @p_ID FOR XML PATH('') ),1,1,'') ) SELECT N'[HỆ THỐNG PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo xuất kho được duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tài sản thuộc PO: ' + @CODE + N' đã được xuất sử dụng.' + @footer AS MESSAGECONTENT RETURN 0 END -- NOI DUNG GUI EMAIL IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_SEND_APR' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ xác nhận phiếu đề nghị tạm ứng' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ xác nhận.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đề nghị tạm ứng.' + @footer AS MESSAGECONTENT RETURN 0 END IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_CONFIRM' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ phê duyệt phiếu đề nghị tạm ứng' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đề nghị tạm ứng.' + @footer AS MESSAGECONTENT RETURN 0 END IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_APR' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_ID AND REQ_PAY_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER NOT IN ('TKTGD','TKHDQT')))) BEGIN SELECT @TILTER_MAIL+N' Thông báo chờ phê duyệt phiếu đề nghị tạm ứng' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đề nghị tạm ứng.' +@footer AS MESSAGECONTENT RETURN 0 END ELSE IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_ID AND REQ_PAY_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKTGD')))) BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD'))) BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt phiếu đề nghị tạm ứng' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N'

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ Anh/Chị:'+ N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý thanh toán tạm ứng / Điều phối công việc tại đây'+ N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đề nghị tạm ứng.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí TGĐ' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Anh/Chị có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Tổng Giám Đốc sau khi phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu đề nghị tạm ứng.' + @footer AS MESSAGECONTENT RETURN 0 END END -- NEU BUOC XU LY HIEN TAI CHO THU KI HOI DONG QUAN TRI ELSE IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_ID AND REQ_PAY_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKHDQT')))) BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT'))) BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt phiếu đề nghị tạm ứng' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ Anh/Chị:'+ N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý thanh toán tạm ứng / Điều phối công việc tại đây'+ N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đề nghị tạm ứng.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí HĐQT' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Anh/Chị có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Hội Đồng Quán Trị sau khi phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đề nghị tạm ứng.' + + @footer AS MESSAGECONTENT RETURN 0 END END -- ELSE BEGIN IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_ID AND AUTH_STATUS ='A')) BEGIN SELECT @TILTER_MAIL+N' Thông báo chờ kiểm soát viên điều phối phiếu đề nghị tạm ứng' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ kiểm soát viên điều phối cho giao dịch viên.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu đề nghị tạm ứng.' + @footer AS MESSAGECONTENT RETURN 0 END --ELSE -- LUCTV KHONG CAN XU LY NUA - 15.10.2022 --BEGIN -- SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) -- --SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) -- SELECT N'[PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo chờ phê duyệt phiếu đề nghị tạm ứng' AS TITLE, -- @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + -- N',

Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ phê duyệt.' + @footer -- AS MESSAGECONTENT -- RETURN 0 --END END RETURN 0 END -- GDV XỬ LÝ XONG GỬI LẠI KẾ TOÁN IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_SEND_APR' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ kiểm soát phê duyệt phiếu đề nghị tạm ứng' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Giao dịch viên gửi phê duyệt phiếu. Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ kiểm soát viên phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt hoàn tất phiếu đề nghị tạm ứng.' + @footer AS MESSAGECONTENT RETURN 0 END -- GDV XỬ LÝ XONG ĐỀ XUẤT TỪ CHỐI ĐẾN KẾ TOÁN IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_SEND_SUG' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ kiểm soát phê duyệt phiếu đề nghị tạm ứng' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Giao dịch viên đề xuất từ chối phiếu. Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ kiểm soát viên phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và đưa ra quyết định từ chối hoặc phê duyệt hoàn tất phiếu đề nghị tạm ứng.' + + @footer AS MESSAGECONTENT RETURN 0 END -- KSV PHÊ DUYỆT XONG THÔNG BÁO CHO NGƯỜI TẠO VÀ GIAO DỊCH VIÊN -- GDV XỬ LÝ XONG GỬI LẠI KẾ TOÁN IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_APPR' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu tạm ứng đã được kiểm soát viên phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đã được kiểm soát viên phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu đề nghị tạm ứng đã hoàn tất.' + + @footer AS MESSAGECONTENT RETURN 0 END --------- PHIẾU ĐỀ NGHỊ THANH TOÁN --------------------------------- ------------------------------------------------------------------------- IF @p_TYPE = 'TR_REQ_PAYMENT_SEND_APR' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID) --SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) SELECT @TILTER_MAIL+N' Thông báo chờ xác nhận phiếu đề nghị thanh toán' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị thanh toán số: ' + @CODE + N' đang chờ xác nhận.' + + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đề nghị thanh toán.' + @footer AS MESSAGECONTENT RETURN 0 END IF @p_TYPE = 'TR_REQ_PAYMENT_CONFIRM' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID) --SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) SELECT @TILTER_MAIL+N' Thông báo chờ phê duyệt phiếu đề nghị thanh toán' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị thanh toán số: ' + @CODE + N' đang chờ phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đề nghị thanh toán.' +@footer AS MESSAGECONTENT RETURN 0 END IF @p_TYPE = 'TR_REQ_PAYMENT_APR' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID) --SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) SELECT @TILTER_MAIL+N' Thông báo chờ kiểm soát viên điều phối phiếu đề nghị thanh toán' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị thanh toán số: ' + @CODE + N' đang chờ kiểm soát viên điều phối cho giao dịch viên.' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý thanh toán tạm ứng / Điều phối công việc tại đây' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu đề nghị thanh toán.' + @footer AS MESSAGECONTENT RETURN 0 END -- KSV DIEU PHOI TAM UNG CHO GDV IF @p_TYPE = 'TR_REQ_PAYMENT_TRANSFER' BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID))) BEGIN SET @CODE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) SELECT @TILTER_MAIL+N' Thông báo chờ giao dịch viên xử lý hạch toán phiếu đề nghị thanh toán' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị thanh toán số: ' + @CODE + N' đang chờ giao dịch viên xử lý hạch toán.' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để cập nhật phiếu đề nghị thanh toán.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SET @CODE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID) AND STATUS ='C' AND ROLE_USER IN ('TKTGD'))) BEGIN SELECT @TILTER_MAIL+N' Thông báo chờ giao dịch viên cập nhật ý kiến tại văn phòng Tổng Giám Đốc' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ nhân viên tại văn phòng Tổng Giám Đốc xác nhận nội dung.' + + N'
Anh/Chị vui lòng nhấn vào đây để cập nhật phiếu đề nghị tạm ứng.' + @footer AS MESSAGECONTENT END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID) AND STATUS ='C' AND ROLE_USER IN ('TKHDQT'))) BEGIN SELECT @TILTER_MAIL+N' Thông báo chờ giao dịch viên cập nhật ý kiến tại văn phòng Hội Đồng Quản Trí' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ nhân viên tại văn phòng Hội Đồng Quản Trị xác nhận nội dung.' + + N'
Anh/Chị vui lòng nhấn vào đây để cập nhật phiếu đề nghị tạm ứng.' + @footer AS MESSAGECONTENT END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo chờ giao dịch viên xử lý hạch toán phiếu đề nghị tạm ứng' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị tạm ứng số: ' + @CODE + N' đang chờ giao dịch viên xử lý hạch toán.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu đề nghị tạm ứng.' + @footer AS MESSAGECONTENT END RETURN 0 END END -- GDV XỬ LÝ XONG GỬI LẠI KẾ TOÁN IF @p_TYPE = 'TR_REQ_PAYMENT_KT_SEND_APR' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ kiểm soát phê duyệt phiếu đề nghị thanh toán' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Giao dịch viên gửi phê duyệt phiếu. Phiếu đề nghị thanh toán số: ' + @CODE + N' đang chờ kiểm soát viên phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt hoàn tất phiếu đề nghị thanh toán.' + + @footer AS MESSAGECONTENT RETURN 0 END -- GDV XỬ LÝ XONG ĐỀ XUẤT TỪ CHỐI ĐẾN KẾ TOÁN IF @p_TYPE = 'TR_REQ_PAYMENT_KT_SEND_SUG' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ kiểm soát phê duyệt phiếu đề nghị thanh toán' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Giao dịch viên đề xuất từ chối phiếu. Phiếu đề nghị thanh toán số: ' + @CODE + N' đang chờ kiểm soát viên phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và đưa ra quyết định từ chối hoặc phê duyệt hoàn tất phiếu đề nghị thanh toán.' + + @footer AS MESSAGECONTENT RETURN 0 END -- KSV PHÊ DUYỆT XONG THÔNG BÁO CHO NGƯỜI TẠO VÀ GIAO DỊCH VIÊN -- GDV XỬ LÝ XONG GỬI LẠI KẾ TOÁN IF @p_TYPE = 'TR_REQ_PAYMENT_KT_APR' BEGIN SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu thanh toán đã được kiểm soát viên phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đề nghị thanh toán số: ' + @CODE + N' đã được kiểm soát viên phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu đề nghị thanh toán đã hoàn tất.' + +@footer AS MESSAGECONTENT RETURN 0 END DECLARE @IS_TTMS bit, @typeURL VARCHAR(50) IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC_DT prdd WHERE prdd.REQ_ID = @p_ID)) BEGIN SET @IS_TTMS = 0 SET @typeURL='TTDC' END ELSE BEGIN SET @IS_TTMS = 1 SET @typeURL='TTMS' END DECLARE @REF_ID_TC INT, @REF_DVCM_HC INT, @REF_ID_DVCM_TC INT, @REF_ID_DVDM_DC INT SET @REF_ID_TC =(SELECT ID FROM PL_REQUEST_PROCESS WHERE STATUS='C' AND PROCESS_ID ='TC' AND REQ_ID =@p_ID) SET @REF_DVCM_HC =(SELECT ID FROM PL_REQUEST_PROCESS WHERE DVDM_ID ='DM0000000000003' AND STATUS='C' AND PROCESS_ID ='DVCM' AND REQ_ID =@p_ID) SET @REF_ID_DVCM_TC =(SELECT ID FROM PL_REQUEST_PROCESS WHERE DVDM_ID ='DM0000000000048' AND STATUS='C' AND PROCESS_ID ='DVCM' AND REQ_ID =@p_ID) SET @REF_ID_DVDM_DC =(SELECT ID FROM PL_REQUEST_PROCESS WHERE DVDM_ID ='DM0000000000003' AND STATUS='C' AND PROCESS_ID ='DVDM_DC' AND REQ_ID =@p_ID) ---------- TO TRINH CHU TRUONG IF (@p_TYPE = 'PL_SEND_APP' OR @p_TYPE ='PL_REQUEST_DOC_App' OR @p_TYPE ='REQ_PROCESS_CHILD_App') BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('GDK_TT','PTGDK_TT', 'TGD','HDQT','GDK_DC')) ) --- NẾU LÀ CÁC CẤP DUYỆT LÃNH ĐẠO BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị Ban Lãnh Đạo' + N',

' + CASE WHEN @IS_TTMS = 1 THEN N'Tờ trình chủ trương' ELSE N'Tờ trình điều chuyển' END + N' số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('DVCM','TC','KT'))) ---- NẾU LÀ CÁC DVCM/TC/KT/ ĐƠN VỊ ĐẦU MỐI QUẢN LÝ NGÂN SÁCH BEGIN IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID AND PROCESS_ID='TC') ) BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID) AND TYPE_JOB ='TP' AND STATUS_JOB ='C' AND PROCESS_ID =ISNULL(@REF_ID_TC,0))) BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được nhân viên với vai trò kiểm soát viên phê duyệt thành công' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt ý kiến chuyên môn' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ --N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE DVDM_ID ='DM0000000000048' AND STATUS='C' AND PROCESS_ID ='DVCM' AND REQ_ID =@p_ID)) BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID) AND TYPE_JOB ='TP' AND STATUS_JOB ='C' AND PROCESS_ID =ISNULL(@REF_ID_DVCM_TC,0))) BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được nhân viên với vai trò kiểm soát viên phê duyệt thành công' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt ý kiến chuyên môn' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ --N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE DVDM_ID ='DM0000000000003' AND STATUS='C' AND PROCESS_ID ='DVCM' AND REQ_ID =@p_ID)) BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID) AND TYPE_JOB ='TP' AND STATUS_JOB ='C' AND PROCESS_ID =ISNULL(@REF_DVCM_HC,0))) BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được nhân viên với vai trò kiểm soát viên phê duyệt thành công' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt ý kiến chuyên môn' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ --N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID AND PROCESS_ID='KT') ) BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt ý kiến chuyên môn' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý'+ N'

Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt ý kiến chuyên môn' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ --N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('DVDM_DC'))) ---- NẾU LÀ CÁC DVCM/TC/KT/ ĐƠN VỊ ĐẦU MỐI QUẢN LÝ NGÂN SÁCH BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID) AND TYPE_JOB ='TP' AND STATUS_JOB ='C' AND PROCESS_ID =ISNULL(@REF_ID_DVDM_DC,0))) BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' phê duyệt đầu mối quản lý ngân sách cho - ngân sách nhận' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được nhân viên với vai trò kiểm soát viên phê duyệt thành công' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' phê duyệt đầu mối quản lý ngân sách cho - ngân sách nhận' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý với vai trò đầu mối quản lý ngân sách cho - ngân sách nhận. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('DVDC'))) ---- NẾU LÀ ĐƠN VỊ CHO NGÂN SÁCH BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt về việc đồng ý cho ngân sách' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý.' + N'

Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây' + @footer AS MESSAGECONTENT RETURN 0 END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('APPNEW','SIGN'))) ---- NẾU LÀ CÁC CẤP DUYỆT TRUNG GIAN HOẶC TRƯỞNG ĐƠN VỊ BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ----- ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID ='APPROVE')) BEGIN ----SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) SELECT N'[ PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo tờ trình chủ trương đã được phê duyệt hoàn tất' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được phê duyệt hoàn tất và phát sinh phiếu yêu cầu mua sắm .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN ---- SETUP MAIL THU KI IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKTGD')))) BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD'))) BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt tờ trình chủ trương' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí TGĐ ' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Anh/Chị có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Tổng Giám Đốc sau khi phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer + @footer AS MESSAGECONTENT RETURN 0 END END -- NEU BUOC XU LY HIEN TAI CHO THU KI HOI DONG QUAN TRI ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKHDQT')))) BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT'))) BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + CHAR(10) + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí HĐQT' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số : ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Anh/Chị có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Hội Đồng Quán Trị sau khi phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ---- END SETUP MAIL THU KI END RETURN 0 END ELSE IF(@p_TYPE ='REQ_PROCESS_CHILD_Upd') BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('DVDM_DC','DVCM','TC','KT','DVDC'))) ---- NẾU LÀ CÁC DVCM/TC/KT/ ĐƠN VỊ ĐẦU MỐI QUẢN LÝ NGÂN SÁCH BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được nhân viên xử lý và gửi phê duyệt thành công' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKTGD')))) BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD'))) BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt tờ trình chủ trương' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí TGĐ ' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Anh/Chị có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Tổng Giám Đốc sau khi phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer + @footer AS MESSAGECONTENT RETURN 0 END END -- NEU BUOC XU LY HIEN TAI CHO THU KI HOI DONG QUAN TRI ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKHDQT')))) BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT'))) BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + CHAR(10) + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí HĐQT' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số : ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Anh/Chị có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Hội Đồng Quán Trị sau khi phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END END ELSE IF ( @p_TYPE ='PL_REQ_PROCESS_CHILD_Ins') BEGIN SET @CODE = (SELECT DTA.REQ_CODE FROM PL_REQUEST_DOC DTA WHERE DTA.REQ_ID =@p_ID) IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID AND PROCESS_ID='TC') ) BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID) AND TYPE_JOB ='KS' AND STATUS_JOB ='C' AND PROCESS_ID =ISNULL(@REF_ID_TC,0))) BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần điều phối xử lý tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được trưởng đơn vị giao cho Anh/Chị vai trò kiểm soát và đang chờ Anh/Chị điều phối cho nhân viên xử lý' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ --N'

Lưu ý nên chọn tình trạng điều phối: Đã điều phối' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần điều phối xử lý tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị xử lý. Vui lòng vào màn Quản lý kế hoạch / Tờ trình chủ trương DVCM - DVDC, tìm kiếm tờ trình và xử lý' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xử vào trực tiếp màn hình xử lý tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE DVDM_ID ='DM0000000000003' AND STATUS='C' AND PROCESS_ID ='DVCM' AND REQ_ID =@p_ID)) BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID) AND TYPE_JOB ='KS' AND STATUS_JOB ='C' AND PROCESS_ID =ISNULL(@REF_DVCM_HC,0))) BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần điều phối xử lý tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được trưởng đơn vị giao cho Anh/Chị vai trò kiểm soát và đang chờ Anh/Chị điều phối cho nhân viên xử lý' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ --N'

Lưu ý nên chọn tình trạng điều phối: Đã điều phối' --+ @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần điều phối xử lý tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị xử lý. Vui lòng vào màn Quản lý kế hoạch / Tờ trình chủ trương DVCM - DVDC, tìm kiếm tờ trình và xử lý' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để vào trực tiếp màn hình xử lý tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE DVDM_ID ='DM0000000000048' AND STATUS='C' AND PROCESS_ID ='DVCM' AND REQ_ID =@p_ID)) BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID) AND TYPE_JOB ='KS' AND STATUS_JOB ='C' AND PROCESS_ID =ISNULL(@REF_ID_DVCM_TC,0))) BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần điều phối xử lý tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được trưởng đơn vị giao cho Anh/Chị vai trò kiểm soát và đang chờ Anh/Chị điều phối cho nhân viên xử lý' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ --N'

Lưu ý nên chọn tình trạng điều phối: Đã điều phối' -- + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần điều phối xử lý tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị xử lý. Vui lòng vào màn Quản lý kế hoạch / Tờ trình chủ trương DVCM - DVDC, tìm kiếm tờ trình và xử lý' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xử trực tiếp vào màn hình lý tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ID =@REF_ID_DVDM_DC AND STATUS='C' AND PROCESS_ID ='DVDM_DC' AND REQ_ID =@p_ID)) BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID) AND TYPE_JOB ='KS' AND STATUS_JOB ='C' AND PROCESS_ID =ISNULL(@REF_ID_DVDM_DC,0))) BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần điều phối xử lý tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được trưởng đơn vị giao cho Anh/Chị vai trò kiểm soát và đang chờ Anh/Chị điều phối cho nhân viên xử lý' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ --N'

Lưu ý nên chọn tình trạng điều phối: Đã điều phối' --+ @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần điều phối xử lý tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị xử lý. Vui lòng vào màn Quản lý kế hoạch / Tờ trình chủ trương DVCM - DVDC, tìm kiếm tờ trình và xử lý' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để vào trực tiếp màn hình xử lý tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị xử lý. Vui lòng vào màn Quản lý kế hoạch / Tờ trình chủ trương DVCM - DVDC, tìm kiếm tờ trình và xử lý' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để vào trực tiếp màn hình xử lý tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ELSE IF(@p_TYPE='REQUEST_DOC_PROCESS_Approve') BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC_DT prdd WHERE prdd.REQ_ID = @p_ID)) BEGIN SET @IS_TTMS = 0 END ELSE BEGIN SET @IS_TTMS = 1 END IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('GDKTT','PTGDK_TT','TGD','HDQT','GDK_DC','GDK_TT'))) BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị Ban Lãnh Đạo' + N',

' + CASE WHEN @IS_TTMS = 1 THEN N'Tờ trình chủ trương' ELSE N'Tờ trình điều chuyển' END + N' số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKTGD')))) BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD'))) BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt tờ trình chủ trương' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số : ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí TGĐ ' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Anh/Chị có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Tổng Giám Đốc sau khi phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer + @footer AS MESSAGECONTENT RETURN 0 END END -- NEU BUOC XU LY HIEN TAI CHO THU KI HOI DONG QUAN TRI ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKHDQT')))) BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT'))) BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt tờ trình' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị điều phối cho nhân viên xử lý. Hoặc Anh/Chị có thể trực tiếp phê duyệt không cần điều phối.' + CHAR(10) + N'

Nếu muốn điều phối: Anh/Chị sử dụng màn hình: Quản lý kế hoạch / Điều phối công việc tại đây'+ N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí HĐQT' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Anh/Chị có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Hội Đồng Quán Trị sau khi phê duyệt thành công.' + N'
Hoặc Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END END ---- END SETUP MAIL THU KI IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID NOT IN ('GDK_TT','PTGDK_TT','TGD','HDQT','TKHDQT','TKTGD','APPROVE'))) BEGIN SELECT @TILTER_MAIL+N' Thông báo tờ trình chủ trương cần được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID ='APPROVE')) BEGIN ----SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) SELECT N'[ PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo tờ trình chủ trương đã được phê duyệt hoàn tất' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Tờ trình số: ' + @CODE + N' đã được phê duyệt hoàn tất và phát sinh phiếu yêu cầu mua sắm .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết tờ trình.' + @footer AS MESSAGECONTENT END END RETURN 0 END END ELSE IF(@p_TYPE='RESEND_REQUEST_DOC_PROCESS_Approve') --- LUCTV 28.11.2022 BO SUNG THEM NOI DUNG MAIL GỬI LẠI URL ĐỂ THƯ KÝ TGD GỬI CEO BEGIN SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID) IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC_DT prdd WHERE prdd.REQ_ID = @p_ID)) BEGIN SET @IS_TTMS = 0 END ELSE BEGIN SET @IS_TTMS = 1 END IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('TGD','HDQT'))) BEGIN SELECT @TILTER_MAIL+N' Thông báo ' + CASE WHEN @IS_TTMS = 1 THEN N'tờ trình chủ trương' ELSE N'tờ trình điều chuyển' END + N' vừa được gửi lại mail chứa URL để gửi Ban Lãnh Đạo phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị Ban Thư Ký' + N',

' + CASE WHEN @IS_TTMS = 1 THEN N'Tờ trình chủ trương' ELSE N'Tờ trình điều chuyển' END + N' số: ' + @CODE + N' đang chờ Ban Lãnh Đạo phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để copy URL và gửi Ban Lãnh Đạo phê duyệt.' + @footer AS MESSAGECONTENT RETURN 0 END END --- END LUCTV 28.11.2022 ------------------------- ---------PHIẾU YÊU CẦU MUA SẮM ------------------------------- DECLARE @p_CURRENT_PROCESS VARCHAR(20) DECLARE @p_REQUEST_DOC_LINK VARCHAR(200) DECLARE @p_DMMS_TYPE_JOB VARCHAR(20) --------------DVKD gửi YC phê duyệt / DMMS/DVCM gửi YC phê duyệt--------------- IF(@p_TYPE = 'TR_REQUEST_DOC_SendApp' OR @p_TYPE ='TR_REQ_PROCESS_CHILD_Upd') BEGIN -- KIỂM TRA BƯỚC XỬ LÝ HIỆN TẠI NẾU LÀ TỔNG GIÁM ĐỐC THÌ CHÈN ĐƯỜNG LINK CORE MỚI SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID =@p_ID) IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('TGD','HDQT'))) BEGIN SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END ELSE BEGIN SET @p_CURRENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') --------Nếu PROCESS là ĐVKD---------- IF(@p_CURRENT_PROCESS = 'APPNEW' OR @p_CURRENT_PROCESS = 'SIGN') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'request-doc-view;id=' + @p_ID END --------Nếu PROCESS là ĐMMS---------- ELSE IF (@p_CURRENT_PROCESS = 'DMMS') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'request-doc-dvms-view;id=' + @p_ID END --------Nếu PROCESS là ĐVCM---------- ELSE IF(@p_CURRENT_PROCESS = 'DVCM') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'RequestDocDVDM-view;id=' + @p_ID END SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu yêu cầu.' + @footer AS MESSAGECONTENT END RETURN 0 END --------------Trưởng ĐV phê duyệt/ cấp duyệt trung gian xác nhận--------------- IF(@p_TYPE = 'TR_REQUEST_DOC_App') BEGIN SET @p_CURRENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID =@p_ID) ---------Khi trưởng ĐV duyệt xong thì sang ĐMMS điều phối------- IF(@p_CURRENT_PROCESS = 'DMMS') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'TransferJob' SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần điều phối xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm: ' + @CODE + N' đang chờ Anh/Chị điều phối xử lý .' + N'
Anh/Chị vui lòng nhấn vào đây để thực hiện tìm kiếm và điều phối phiếu.' + @footer AS MESSAGECONTENT END ELSE IF(@p_CURRENT_PROCESS = 'APPNEW') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'request-doc-view;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu yêu cầu.' + @footer AS MESSAGECONTENT END END ------------Điều phối xử lý---------------- IF ( @p_TYPE ='TR_REQ_PROCESS_CHILD_Ins') BEGIN SET @p_CURRENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') SET @p_DMMS_TYPE_JOB = ( SELECT TOP 1 TYPE_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_ID AND PROCESS_ID = (SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') AND STATUS_JOB = 'C' ) SET @CODE = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE REQ_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ----------Nếu ng xử lý tiếp theo là KS------- IF(@p_DMMS_TYPE_JOB = 'KS') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'TransferJob' SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm số: ' + @CODE + N' đang chờ Anh/Chị điều phối xử lý .' + N'
Anh/Chị vui lòng nhấn vào đây để thực hiện tìm kiếm và điều phối phiếu.' + @footer AS MESSAGECONTENT END ----------Nếu ng xử lý tiếp theo là XL------- ELSE IF(@p_DMMS_TYPE_JOB = 'XL') BEGIN ----------Nếu PROCESS là DMMS--------- IF(@p_CURRENT_PROCESS = 'DMMS') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'request-doc-dvms-edit;id=' + @p_ID END ----------Nếu PROCESS là DVCM--------- ELSE IF(@p_CURRENT_PROCESS = 'DVCM') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'RequestDocDVDM-edit;id=' + @p_ID END SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm số: ' + @CODE + N' đang chờ Anh/Chị xử lý .' + N'
Anh/Chị vui lòng nhấn vào đây để thực hiện xử lý phiếu yêu cầu.' + @footer AS MESSAGECONTENT END RETURN 0 END -------------DMMS/DCVM phê duyệt------------ IF(@p_TYPE = 'TR_REQ_PROCESS_CHILD_App') BEGIN SET @p_CURRENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID =@p_ID) IF(@p_CURRENT_PROCESS = 'DMMS') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'request-doc-dvms-view;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu yêu cầu.' + @footer AS MESSAGECONTENT END ----------------Nếu PYCMS hoàn tất---------------- IF(@p_CURRENT_PROCESS = 'APPROVE') BEGIN SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm số: ' + @CODE + N' đã được phê duyệt hoàn tất và phát sinh PO .' + @footer AS MESSAGECONTENT END ----------------Nếu PYCMS đến DVCM------------------ ELSE IF (@p_CURRENT_PROCESS = 'DVCM') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'TransferJob' SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần điều phối xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm số: ' + @CODE + N' đang chờ Anh/Chị điều phối xử lý .' + N'
Anh/Chị vui lòng nhấn vào đây để thực hiện tìm kiếm và điều phối phiếu.' + @footer AS MESSAGECONTENT END ----------------Nếu PYCMS đến GDK HT--------------- ELSE IF(@p_CURRENT_PROCESS = 'GDK_PYC') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'RequestDocProcess-view;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu yêu cầu.' + @footer AS MESSAGECONTENT END END --------------Phê duyệt PYCMS----------------- IF(@p_TYPE='TR_REQUEST_DOC_PROCESS_Approve') BEGIN SET @p_CURRENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID =@p_ID) ----SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) --SELECT N'[ PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo phiếu yêu cầu mua sắm đã được phê duyệt hoàn tất' AS TITLE, --@p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + --N',

Phiếu yêu cầu mua sắm số : ' + @CODE + N' đã được phê duyệt hoàn tất và phát sinh PO .' + @footer --AS MESSAGECONTENT ----------------TH phiếu chưa hoàn tất----------- IF(@p_CURRENT_PROCESS <> 'APPROVE') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'RequestDocProcess-view;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu yêu cầu.' + @footer AS MESSAGECONTENT END ----------------TH phiếu đã hoàn tất----------- ELSE IF (@p_CURRENT_PROCESS = 'APPROVE') BEGIN SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm số: ' + @CODE + N' đã được phê duyệt hoàn tất và phát sinh PO .' + @footer AS MESSAGECONTENT END END ----------------------BAODNQ 20/10/2022 : DMMS CHUYỂN CHO DVCM----------------- IF(@p_TYPE = 'TR_REQUEST_DOC_MOVE_DVCM') BEGIN SET @p_REQUEST_DOC_LINK = @URL + 'TransferJob' SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần điều phối xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu mua sắm: ' + @CODE + N' đang chờ Anh/Chị điều phối xử lý .' + N'
Anh/Chị vui lòng nhấn vào đây để thực hiện tìm kiếm và điều phối phiếu.' + @footer AS MESSAGECONTENT END ----------------------ENDBAODNQ------------------------------ ------datmq 7/1/2022: Quản lý cho thuê------------------------ -----Quản lý trụ sở - gửi YC phê duyệt-------- IF(@p_TYPE = 'BUD_MASTER_SEND_APPROVE') BEGIN SET @CODE = (SELECT BUILDING_NAME FROM BUD_MASTER WHERE BUILDING_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo trụ sở cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin trụ sở số: ' + @CODE+ N' đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Quản lý trụ sở - cấp phê duyệt trung gian đã xác nhận-------- IF(@p_TYPE = 'BUD_MASTER_CONFIRM') BEGIN SET @CODE = (SELECT BUILDING_NAME FROM BUD_MASTER WHERE BUILDING_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo trụ sở cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin trụ sở: ' +@CODE + N' đã được xác nhận và đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Quản lý trụ sở - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------- IF(@p_TYPE = 'BUD_MASTER_APPROVED') BEGIN SET @CODE = (SELECT BUILDING_NAME FROM BUD_MASTER WHERE BUILDING_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo trụ sở đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin trụ sở: ' +@CODE+ N' đã được trưởng đơn vị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END ------BAODNQ 4/1/2022: Quản lý cho thuê------------------------ -----Khai báo DTSD nội bộ - gửi YC phê duyệt-------- IF(@p_TYPE = 'BUD_CONTRACT_MASTER_SEND_APPROVE') BEGIN SET @CODE = (SELECT B.BUILDING_NAME FROM BUD_CONTRACT_MASTER A LEFT JOIN BUD_MASTER B ON A.BUILDING_ID = B.BUILDING_ID WHERE A.CONTRACT_ID = @p_ID ) SELECT @TILTER_MAIL+N' Thông báo thông tin DTSD nội bộ cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin DTSD nội bộ của trụ sở: ' +@CODE+N' đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Khai báo DTSD nội bộ - cấp phê duyệt trung gian đã xác nhận-------- IF(@p_TYPE = 'BUD_CONTRACT_MASTER_CONFIRM') BEGIN SET @CODE = (SELECT B.BUILDING_NAME FROM BUD_CONTRACT_MASTER A LEFT JOIN BUD_MASTER B ON A.BUILDING_ID = B.BUILDING_ID WHERE A.CONTRACT_ID = @p_ID ) SELECT @TILTER_MAIL+N' Thông báo thông tin DTSD nội bộ cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin DTSD nội bộ của trụ sở: ' +@CODE+N' đã được xác nhận và đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Khai báo DTSD nội bộ - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------- IF(@p_TYPE = 'BUD_CONTRACT_MASTER_APPROVED') BEGIN SET @CODE = (SELECT B.BUILDING_NAME FROM BUD_CONTRACT_MASTER A LEFT JOIN BUD_MASTER B ON A.BUILDING_ID = B.BUILDING_ID WHERE A.CONTRACT_ID = @p_ID ) SELECT @TILTER_MAIL+N' Thông báo thông tin DTSD nội bộ đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin DTSD nội bộ của trụ sở: ' +@CODE+N' đã được trưởng đơn vị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END -----Quản lý hợp đồng khách thuê - gửi YC phê duyệt-------- IF(@p_TYPE = 'BUD_CONTRACT_CUST_MASTER_SEND_APPROVE') BEGIN SET @CODE = (SELECT CONTRACT_NO FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo hợp đồng khách thuê trụ sở cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin hợp đồng khách thuê trụ sở số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Quản lý hợp đồng khách thuê - cấp phê duyệt trung gian đã xác nhận-------- IF(@p_TYPE = 'BUD_CONTRACT_CUST_MASTER_CONFIRM') BEGIN SET @CODE = (SELECT CONTRACT_NO FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo hợp đồng khách thuê trụ sở cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin hợp đồng khách thuê trụ sở số: ' + @CODE + N' đã được xác nhận và đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Quản lý hợp đồng khách thuê - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------- IF(@p_TYPE = 'BUD_CONTRACT_CUST_MASTER_APPROVED') BEGIN SET @CODE = (SELECT CONTRACT_NO FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo hợp đồng khách thuê trụ sở đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin hợp đồng khách thuê trụ sở số: ' + @CODE + N' đã được phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END -----PhongNT 15/9/2022: Quản lý TSCĐ/CCLĐ-------- DECLARE @SYS_PREFIX VARCHAR(15),@PAGE NVARCHAR(200),@URLPAGE VARCHAR(2000) ----- Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý - HCQT -------- --IF(@p_TYPE = 'ASS_ADDNEW_BVB_HCQT_APP') IF(@p_TYPE = 'ASS_SEND_TDV') BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val )x) SELECT @PAGE = sp.Description, @URLPAGE=(CASE sp.Prefix WHEN 'ASA' THEN 'ass-t-add-new-bvb-view;id=' WHEN 'SMAC' THEN 'ass-collect-multi-hcqt-master-view;id=' WHEN 'ASSL' THEN 'ass-liq-bvb-hc-view;id=' WHEN 'TFS' THEN 'ass-transfer-multi-view;id=' WHEN 'SMA' THEN 'ass-use-multi-bvb-master-view;id=' WHEN 'ASSD' THEN 'ass-update-view;id=' WHEN 'ACAC' THEN 'ass-collect-cost-allocation-view;id=' END) FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX SELECT @TILTER_MAIL+N'Thông báo '+LOWER(@PAGE)+N' cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch '+LOWER(@PAGE)+N' có ID: '+@p_ID+ N' cần được phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'ASS_INVENTORY_MAIN') BEGIN SELECT @TILTER_MAIL+N'Thông báo kiểm kê tài sản cần phê duyệt ' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch kiểm kê tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'ASS_SEND_GDV') BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val )x) SELECT @PAGE = sp.Description, @URLPAGE=(CASE sp.Prefix WHEN 'ASA' THEN 'ass-t-add-new-bvb-kt-edit;id=' WHEN 'SMAC' THEN 'ass-collect-multi-kt-master-view;id=' WHEN 'ASSL' THEN 'ass-liq-bvb-kt-edit;id=' WHEN 'TFS' THEN 'ass-transfer-multi-kt-edit;id=' WHEN 'SMA' THEN 'ass-use-multi-bvb-kt-edit;id=' END) FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX SELECT @TILTER_MAIL+N'Thông báo '+LOWER(@PAGE)+N' cần xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch '+LOWER(@PAGE)+N' có ID: '+@p_ID+ N' cần được giao dịch viên xử lý.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'ASS_SEND_KSV') BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val )x) SELECT @PAGE = sp.Description, @URLPAGE=(CASE sp.Prefix WHEN 'ASA' THEN 'ass-t-add-new-bvb-kt-view;id=' WHEN 'SMAC' THEN 'ass-collect-multi-kt-master-view;id=' WHEN 'ASSL' THEN 'ass-liq-bvb-kt-view;id=' WHEN 'TFS' THEN 'ass-transfer-multi-kt-view;id=' WHEN 'SMA' THEN 'ass-use-multi-bvb-kt-view;id=' WHEN 'ASSD' THEN 'ass-update-view;id=' WHEN 'ACAC' THEN 'ass-collect-cost-allocation-view;id=' END) FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX SELECT @TILTER_MAIL+N'Thông báo '+LOWER(@PAGE)+N' cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch '+LOWER(@PAGE)+N' có ID: '+@p_ID+ N' cần được kiểm soát viên phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'ASS_SEND_CONFIRM') BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val )x) SELECT @PAGE = sp.Description, @URLPAGE=(CASE sp.Prefix WHEN 'SMAC' THEN 'ass-collect-confirm-view;id=' WHEN 'SMA' THEN 'ass-use-confirm-master-view;id=' WHEN 'ASSIM' THEN 'ass-inventory-confirm-view;id=' END) FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX SELECT @TILTER_MAIL+N'Thông báo xác nhận '+LOWER(@PAGE)+N' cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch xác nhận '+LOWER(@PAGE)+N' có ID: '+@p_ID+ N' cần được trưởng đơn vị xác nhận phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'ASS_INVENTORY_RECIVE_MAIL') BEGIN IF(EXISTS(SELECT 1 FROM ASS_INVENTORY_MASTER WHERE SIGN_USER IS NOT NULL AND CHECKER_ID_DVKD IS NULL AND INVENT_ID=@p_ID)) BEGIN SELECT @TILTER_MAIL+N'Thông báo kiểm kê tài sản cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch kiểm kê có ID: '+@p_ID+ N' cần được trưởng đơn vị xác nhận phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END ELSE BEGIN SELECT @TILTER_MAIL+N'Thông báo kiểm kê tài sản cần nhận xét' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch kiểm kê có ID: '+@p_ID+ N' cần được nhận xét.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END END IF(@p_TYPE = 'ASS_REJECT_NT') BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val )x) SELECT @PAGE = sp.Description, @URLPAGE=(CASE sp.Prefix WHEN 'ASA' THEN 'ass-t-add-new-bvb-edit;id=' WHEN 'SMAC' THEN 'ass-collect-multi-hcqt-master-edit;id=' WHEN 'ASSD' THEN 'ass-update-edit;id=' WHEN 'ASSL' THEN 'ass-liq-bvb-hc-edit;id=' WHEN 'TFS' THEN 'ass-transfer-multi-edit;id=' WHEN 'SMA' THEN 'ass-use-multi-bvb-master-edit;id=' WHEN 'ACAC' THEN 'ass-collect-cost-allocation-edit;id=' WHEN 'CON' THEN 'con-request-doc-edit;id=' END) FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX SELECT @TILTER_MAIL+N'Thông báo '+LOWER(@PAGE)+N' bị trả về' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch '+LOWER(@PAGE)+N' có ID: '+@p_ID+ N' bị từ chối.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'ASS_REJECT_GDV') BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val )x) SELECT @PAGE = sp.Description, @URLPAGE=(CASE sp.Prefix WHEN 'ASA' THEN 'ass-t-add-new-bvb-kt-edit;id=' WHEN 'SMAC' THEN 'ass-collect-multi-kt-master-edit;id=' WHEN 'ASSL' THEN 'ass-liq-bvb-kt-edit;id=' WHEN 'TFS' THEN 'ass-transfer-multi-kt-edit;id=' WHEN 'SMA' THEN 'ass-use-multi-bvb-kt-edit;id='END) FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX SELECT @TILTER_MAIL+N'Thông báo '+LOWER(@PAGE)+N' bị từ chối' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch '+LOWER(@PAGE)+N' có ID: '+@p_ID+ N' bị từ chối.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'ASS_REJECT_HC') BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val )x) SELECT @PAGE = sp.Description, @URLPAGE=(CASE sp.Prefix WHEN 'ASA' THEN 'ass-t-add-new-bvb-edit;id=' WHEN 'SMAC' THEN 'ass-collect-multi-hcqt-master-edit;id=' WHEN 'ASSL' THEN 'ass-liq-bvb-hc-edit;id=' WHEN 'TFS' THEN 'ass-transfer-multi-edit;id=' WHEN 'SMA' THEN 'ass-use-multi-bvb-master-edit;id=' WHEN 'ASSD' THEN 'ass-update-edit;id=' WHEN 'ACAC' THEN 'ass-collect-cost-allocation-edit;id=' END) FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX SELECT @TILTER_MAIL+N'Thông báo '+LOWER(@PAGE)+N' bị từ chối' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch '+LOWER(@PAGE)+N' có ID: '+@p_ID+ N' bị từ chối.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END --IF(@p_TYPE = 'ASS_SEND_CONFIRM') --BEGIN -- --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý -- SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( -- SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val -- )x) -- SELECT @PAGE = sp.Description, -- @URLPAGE=(CASE sp.Prefix -- WHEN 'SMAC' THEN 'ass-collect-multi-kt-master-view;id=' -- WHEN 'SMA' THEN 'ass-use-multi-bvb-kt-view;id='END) -- FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX --SELECT @TILTER_MAIL+N'Thông báo xác nhận '+LOWER(@PAGE)+N' cần phê duyệt' AS TITLE, -- @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + -- N',

Anh/Chị có giao dịch xác nhận'+LOWER(@PAGE)+N' có ID: '+@p_ID+ N' cần được kiểm soát viên phê duyệt.' + -- N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' -- + -- @footer -- AS MESSAGECONTENT --END IF(@p_TYPE = 'ASS_APPROVED') BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val )x) SELECT @PAGE = sp.Description, @URLPAGE=(CASE sp.Prefix WHEN 'ASA' THEN 'ass-t-add-new-bvb-view;id=' WHEN 'SMAC' THEN 'ass-collect-multi-hcqt-master-view;id=' WHEN 'ASSL' THEN 'ass-liq-bvb-hc-view;id=' WHEN 'TFS' THEN 'ass-transfer-multi-view;id=' WHEN 'SMA' THEN 'ass-use-multi-bvb-master-view;id=' WHEN 'ASSD' THEN 'ass-update-view;id=' WHEN 'ACAC' THEN 'ass-collect-cost-allocation-view;id=' WHEN 'ACAC' THEN 'ass-inventory-view;id=' END) FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX SELECT @TILTER_MAIL+N'Thông báo '+LOWER(@PAGE)+N' đã được phê duyệt hoàn tất' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch '+LOWER(@PAGE)+N' có ID: '+@p_ID+ N' đã được phê duyệt hoàn tất' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'ASS_TRANSFER_CONFIRM_HANDOVER') BEGIN SELECT @TILTER_MAIL+N'Thông báo xác nhận bàn giao tài sản điều chuyển cần được xác nhận' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch xác nhận bàn giao tài sản điều chuyển có ID: '+@p_ID+ N' cần được xác nhận.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'ASS_TRANSFER_CONFIRM_RECEIVER') BEGIN SELECT @TILTER_MAIL+N'Thông báo xác nhận bàn nhận tài sản điều chuyển cần được xác nhận' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch xác nhận nhận tài sản điều chuyển có ID: '+@p_ID+ N' cần được xác nhận.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END -------PhongNT 9/2/2022:Xuất sử dụng tài sản -HCQT-------- --IF(@p_TYPE = 'ASS_USE_MULTI_BVB_MASTER') --BEGIN --SELECT @TILTER_MAIL+N'Thông báo xuất sử dụng tài sản cần phê duyệt' AS TITLE, -- @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + -- N',

Anh/Chị có giao dịch xuất sử dụng tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' + -- N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' -- + -- @footer -- AS MESSAGECONTENT --END -------Điều chuyển tài sản - HCQT-------- --IF(@p_TYPE = 'ASS_TRANSFER_MULTI_APP') --BEGIN --SELECT @TILTER_MAIL+N'Thông báo điều chuyển tài sản cần phê duyệt' AS TITLE, -- @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + -- N',

Anh/Chị có giao dịch điều chuyển tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' + -- N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' -- + -- @footer -- AS MESSAGECONTENT --END -------Thu hồi tài sản - HCQT-------- --IF(@p_TYPE = 'ASS_COLLECT_MULTI_HCQT_APP') --BEGIN --SELECT @TILTER_MAIL+N'Thông báo thu hồi tài sản cần phê duyệt' AS TITLE, -- @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + -- N',

Anh/Chị có giao dịch thu hồi tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' + -- N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' -- + -- @footer -- AS MESSAGECONTENT --END -------Thu hồi tài sản - HCQT-------- --IF(@p_TYPE = 'ASS_COLLECT_MULTI_HCQT_APP') --BEGIN --SELECT @TILTER_MAIL+N'Thông báo thu hồi tài sản cần phê duyệt' AS TITLE, -- @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + -- N',

Anh/Chị có giao dịch thu hồi tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' + -- N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' -- + -- @footer -- AS MESSAGECONTENT --END -------Thanh lý tài sản - HC-------- --IF(@p_TYPE = 'ASS_LIQ_BVB_HC_APP') --BEGIN --SELECT @TILTER_MAIL+N'Thông báo thanh lý tài sản cần phê duyệt' AS TITLE, -- @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + -- N',

Anh/Chị có giao dịch thanh lý tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' + -- N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' -- + -- @footer -- AS MESSAGECONTENT --END ------------------BAODNQ 15/2/2022: Quản lý BDS--------------------- -----Quản lý BDS - gửi YC phê duyệt-------- IF(@p_TYPE = 'RET_MASTER_SEND_APPROVE') BEGIN SELECT @TILTER_MAIL+N' Thông báo thông tin bất động sản cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin bất động sản : ' + @p_ID + N' đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Quản lý BDS - cấp phê duyệt trung gian đã xác nhận-------- IF(@p_TYPE = 'RET_MASTER_CONFIRM') BEGIN SELECT @TILTER_MAIL+N' Thông báo thông tin bất động sản cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin bất động sản : ' + @p_ID + N' đã được xác nhận và đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Quản lý BDS - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------- IF(@p_TYPE = 'RET_MASTER_APPROVED') BEGIN SELECT @TILTER_MAIL+N' Thông báo thông tin bất động sản đã được duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin bất động sản : ' + @p_ID + N' đã được phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END -----Thông tin sửa chữa BDS - gửi YC phê duyệt-------- IF(@p_TYPE = 'RET_REPAIR_SEND_APPROVE') BEGIN SET @CODE = (SELECT RET_ID FROM RET_REPAIR WHERE RP_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo thông tin sửa chữa BĐS cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin sửa chữa BĐS : ' + @CODE + N' đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Thông tin sửa chữa BDS - cấp phê duyệt trung gian đã xác nhận-------- IF(@p_TYPE = 'RET_REPAIR_CONFIRM') BEGIN SET @CODE = (SELECT RET_ID FROM RET_REPAIR WHERE RP_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo thông tin sửa chữa BĐS cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin sửa chữa BĐS : ' + @CODE + N' đã được xác nhận và đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Thông tin sửa chữa BDS - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------- IF(@p_TYPE = 'RET_REPAIR_APPROVED') BEGIN SET @CODE = (SELECT RET_ID FROM RET_REPAIR WHERE RP_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo thông tin sửa chữa BĐS đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin sửa chữa BĐS : ' + @CODE + N' đã được phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END -----BDS thuê làm trụ sở CN/PGD - gửi YC phê duyệt-------- IF(@p_TYPE = 'REAL_ESTATE_R_H_SEND_APPROVE') BEGIN SELECT @TILTER_MAIL+N' Thông báo BĐS đi thuê cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin BĐS đi thuê: ' + @p_ID + N' đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----BDS thuê làm trụ sở CN/PGD - cấp phê duyệt trung gian đã xác nhận-------- IF(@p_TYPE = 'REAL_ESTATE_R_H_CONFIRM') BEGIN SELECT @TILTER_MAIL+N' Thông báo BĐS đi thuê cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin BĐS đi thuê: ' + @p_ID + N' đã được xác nhận và đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----BDS thuê làm trụ sở CN/PGD - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------- IF(@p_TYPE = 'REAL_ESTATE_R_H_APPROVED') BEGIN SELECT @TILTER_MAIL+N' Thông báo BĐS đi thuê đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin BĐS đi thuê số: ' + @p_ID + N' đã được phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END -----BDS đang hoàn thiện thủ tục pháp lý - gửi YC phê duyệt-------- IF(@p_TYPE = 'REAL_ESTATE_L_C_SEND_APPROVE') BEGIN SELECT @TILTER_MAIL+N' Thông báo BĐS đang hoàn thiện pháp lý cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin BĐS đang hoàn thiện thủ tục pháp lý số: ' + @p_ID + N' đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----BDS đang hoàn thiện thủ tục pháp lý - cấp phê duyệt trung gian đã xác nhận-------- IF(@p_TYPE = 'REAL_ESTATE_L_C_CONFIRM') BEGIN SELECT @TILTER_MAIL+N' Thông báo BĐS đang hoàn thiện pháp lý cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin BĐS đang hoàn thiện thủ tục pháp lý số: ' + @p_ID + N' đã được xác nhận và đang chờ Anh/Chị phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----BDS đang hoàn thiện thủ tục pháp lý - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------- IF(@p_TYPE = 'REAL_ESTATE_L_C_APPROVED') BEGIN SELECT @TILTER_MAIL+N' Thông báo BĐS đang hoàn thiện pháp lý đã được duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin BĐS đang hoàn thiện thủ tục pháp lý số: ' + @p_ID + N' đã được phê duyệt.' + --+ --N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END -----Phiếu yêu cầu công tác - cấp gửi cấp phê duyệt trung gian-------- IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_SEND') BEGIN DECLARE @SIGN_USER VARCHAR(20) SET @SIGN_USER = (SELECT SIGN_USER FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_ID) SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) IF (@SIGN_USER ='TKTGD') BEGIN SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí TGĐ ' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu công tác số: ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Anh/Chị có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Tổng Giám Đốc sau khi phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phiếu yêu cầu công tác.' + @footer + @footer AS MESSAGECONTENT RETURN 0 END ELSE IF (@SIGN_USER IS NOT NULL) BEGIN SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu công tác số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu yêu cầu.' + @footer AS MESSAGECONTENT RETURN 0 END END -----Phiếu yêu cầu công tác - cấp gửi Trưởng phòng-------- IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_SIGN') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) IF(EXISTS(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_ID AND STATUS='C' AND ROLE_USER IN('GDK','PTGD','TGD'))) BEGIN SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị Ban Lãnh Đạo' + N',

' + N'Phiếu yêu cầu công tác số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu yêu cầu.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu công tác cầu số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT RETURN 0 END END IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_TDV_APP') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) IF(EXISTS(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_ID AND STATUS='C' AND ROLE_USER IN('GDK','PTGD','TGD'))) BEGIN SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị Ban Lãnh Đạo' + N',

' + N'Phiếu yêu cầu công tác số: ' + @CODE + N' người tạo thay đổi lưới giờ bay và xác nhận hoàn tất đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu yêu cầu.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE BEGIN SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu công tác cầu số: ' + @CODE + N' người tạo thay đổi lưới giờ bay và xác nhận hoàn tất đang chờ Anh/Chị phê duyệt' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT RETURN 0 END END IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_SIGN_APP') BEGIN DECLARE @SIGN VARCHAR(20) SET @SIGN = (SELECT SIGN_USER FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_ID) SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) IF (@SIGN ='TKTGD') BEGIN SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí TGĐ ' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu công tác số: ' + @CODE + N' đã được người tạo thay đổi lưới giờ bay và xác nhận hoàn tất. Anh/Chị có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Tổng Giám Đốc sau khi phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phiếu yêu cầu công tác.' + @footer AS MESSAGECONTENT RETURN 0 END ELSE IF (@SIGN_USER IS NOT NULL) BEGIN SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu công tác số: ' + @CODE + N' đã được người tạo thay đổi lưới giờ bay và xác nhận hoàn tất. Đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu yêu cầu.' + @footer AS MESSAGECONTENT RETURN 0 END END -----Phiếu yêu cầu công tác - cấp gửi NVDV-------- IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_SEND_HOAPP') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã được xác nhận và đang chờ Anh/Chị xử lý. Đang chờ Anh/Chị phê duyệt' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và xử lý yêu cầu.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_SEND_TRAIN_UPD') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' người tạo đã thay đổi lộ trình. Đang chờ Anh/Chị phê duyệt' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_SEND_NVDV') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công và đang chờ Anh/Chị xử lý.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và xử lý yêu cầu.' + @footer AS MESSAGECONTENT END -----Phiếu yêu cầu công tác - Người tạo chọn vé-------- IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_CHECK') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã được xác nhận và đang chờ Anh/Chị chọn vé.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và xử lý yêu cầu.' + @footer AS MESSAGECONTENT END -----Phiếu yêu cầu công tác - gửi NVDV đặt vé-------- IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_TICKET') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' người tạo đã chọn vé và đang chờ Anh/Chị xử lý.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và xử lý yêu cầu.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_NOFI') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác đã được book vé' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã được book vé và đang chờ Anh/Chị xác nhận hoàn thành.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và xử lý yêu cầu.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_REJECT') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác bị từ chối' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã trưởng đơn vị từ chối.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_SEND_APP') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác đã được người tạo xác nhận hoàn tất và có thay đổi lưới giờ bay' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' xác nhận hoàn tất, có thay đổi lưới giờ bay và đang chờ Anh/Chị phê duyệt' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_SIGN_APP') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác đã được người tạo xác nhận hoàn tất và có thay đổi lưới giờ bay' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' xác nhận hoàn tất, có thay đổi lưới giờ bay và đang chờ Anh/Chị phê duyệt' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_CANCEL') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác đã bị hủy' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã bị hủy' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END -----Phiếu yêu cầu công tác - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------- IF(@p_TYPE = 'TR_REQUEST_JOB_FORM_APPROVED') BEGIN SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu công tác đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã được phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END -----Phiếu yêu cầu xe - gửi YC phê duyệt-------- IF(@p_TYPE = 'TR_REQUEST_CAR_SEND_TDV') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_CONFIRM') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã được xác nhận và đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END DECLARE @N_PLATE VARCHAR(25) IF(@p_TYPE = 'TR_REQUEST_CAR_SEND_USERUPD') BEGIN SELECT @CODE=REQ_CODE,@N_PLATE=N_PLATE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe đã được chuyên viên điều động' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã được chuyên viên điều động xe biển số: '+@N_PLATE+N' và đang chờ Anh/Chị cập nhật thông tin chuyến đi.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Phiếu yêu cầu công tác - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------- IF(@p_TYPE = 'TR_REQUEST_CAR_APPROVED') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã được phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_COST_SEND_CONFIRM') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe cần xác nhận chi phí' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Chi phí phiếu yêu cầu số: ' + @CODE + N' đang chờ Anh/Chị xác nhận.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END -----Phiếu yêu cầu công tác - trưởng đơn vị đã duyệt, gửi mail TĐV-------- IF(@p_TYPE = 'TR_REQUEST_CAR_COST_CONFIRM') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Chi phí phiếu yêu cầu số: ' + @CODE + N' đã được người tạo xác nhận và đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_COST_App') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Chi phí phiếu yêu cầu số: ' + @CODE + N' đã được trưởng phòng xác nhận và đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_COST_CV_App') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Chi phí phiếu yêu cầu số: ' + @CODE + N' đã được chuyên viên điều động xe xác nhận và đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_REJECT_TDV') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe bị trả về' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã bị trưởng đơn vị trả về!' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_REJECT_MAKER') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe bị trả về' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã bị người tạo trả về!' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_REJECT_CV') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe bị trả về' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã bị chuyên viên điều động xe trả về!' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_CANCEL') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe bị huỷ' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin phiếu yêu cầu số: ' + @CODE + N' đã bị chuyên viên điều động xe huỷ!' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_COST_SEND_MAKER') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe cần xác nhận thông tin' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin chuyến đi và chuyến về phiếu yêu cầu số: ' + @CODE + N' đã được chuyên viên điều động xe thay đổi đang chờ Anh/Chị xác nhận.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và xác nhận.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_INFO_SEND_MAKER') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe cần xác nhận thông tin' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin chuyến đi phiếu yêu cầu số: ' + @CODE + N' đã được chuyên viên cập nhật chi phí đang chờ Anh/Chị xác nhận.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và xác nhận.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_SEND_TDV_C_APP') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu số: ' + @CODE + N'đã được người tạo xác nhận chi phí và đang chờ Anh/Chị phê duyệt chi phí.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_USERSEND_CV') BEGIN SET @CODE = (SELECT REQ_CODE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe đã được lái xe cập nhật thông tin' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu số: ' + @CODE + N' đã được nhân viên lái xe cập nhật đang chờ Anh/Chị xác nhận.' + N'
Anh/Chị vui lòng nhấn vào đây để cập nhật chuyến đi.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REQUEST_CAR_CVSEND_NT') BEGIN SELECT @CODE=REQ_CODE,@N_PLATE=N_PLATE,@SIGN_USER=DRIVER_ID FROM dbo.TR_REQUEST_CAR WHERE REQ_ID =@p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu xe chuyên viên đã điều động xe' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu yêu cầu số: ' + @CODE + N' đã được chuyên viên điều động xe với biển số: '+@N_PLATE+N' và tài xế: '+@SIGN_USER+ N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END -- kho vật lệu IF @p_TYPE = 'MW_IN_KT_APPR' BEGIN SET @CODE = (SELECT IN_CODE FROM MW_IN_MASTER WHERE IN_ID =@p_ID) --SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) SELECT @TILTER_MAIL+N' Thông báo đã phê duyệt nhập kho vật liệu' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu nhập kho vật liệu số : ' + @CODE + N' đã được phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu nhập kho vật liệu.' + @footer AS MESSAGECONTENT RETURN 0 END IF @p_TYPE = 'MW_OUT_KT_APPR' BEGIN SET @CODE = (SELECT OUT_CODE FROM MW_OUT WHERE OUT_ID =@p_ID) --SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) SELECT @TILTER_MAIL+N' Thông báo đã phê duyệt xuất kho vật liệu' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu xuất kho vật liệu số : ' + @CODE + N' đã được phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu xuất kho vật liệu.' + @footer AS MESSAGECONTENT RETURN 0 END IF @p_TYPE = 'MW_TRANSFER_KT_APPR' BEGIN SET @CODE = (SELECT TRANSFER_CODE FROM MW_TRANSFER WHERE TRANSFER_ID =@p_ID) --SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) SELECT @TILTER_MAIL+N' Thông báo đã phê duyệt điều chuyển vật liệu' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu điều chuyển vật liệu số : ' + @CODE + N' đã được phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu điều chuyển vật liệu.' + @footer AS MESSAGECONTENT RETURN 0 END IF @p_TYPE = 'MW_LIQUID_KT_APPR' BEGIN SET @CODE = (SELECT LIQ_CODE FROM MW_LIQ_MASTER WHERE LIQ_ID =@p_ID) --SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11))) SELECT @TILTER_MAIL+N' Thông báo đã phê duyệt thanh lý vật liệu' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu thanh lý vật liệu số : ' + @CODE + N' đã được phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu thanh lý vật liệu.' + @footer AS MESSAGECONTENT RETURN 0 END ----------------BAODNQ 26/10/2022 : GỬI MAIL QUẢN LÝ HỢP ĐỒNG MUA SẮM---------------- --------------NGƯỜI TẠO GỬI YC PHÊ DUYỆT--------------------- IF(@p_TYPE = 'TR_CONTRACT_SEND_APP') BEGIN SET @CODE = (SELECT CONTRACT_CODE FROM TR_CONTRACT WHERE CONTRACT_ID = @p_ID) IF(@CODE IS NULL OR @CODE = '') BEGIN SET @CODE = (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @p_ID) + N'(ID hệ thống)' END SELECT @TILTER_MAIL+N' Thông báo thông tin hợp đồng cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin hợp đồng số : ' + @CODE + N' đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt thông tin hợp đồng.' + @footer AS MESSAGECONTENT RETURN 0 END ------------------------TRƯỞNG ĐV ĐÃ DUYỆT, GỬI MAIL CHO NG TẠO--------------------------- IF(@p_TYPE = 'TR_CONTRACT_APPROVE') BEGIN SET @CODE = (SELECT TOP 1 CONTRACT_CODE FROM TR_CONTRACT WHERE CONTRACT_ID = @p_ID) IF(@CODE IS NULL OR @CODE = '') BEGIN SET @CODE = (SELECT TOP 1 CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @p_ID) + N'(ID hệ thống)' END SELECT @TILTER_MAIL+N' Thông báo thông tin hợp đồng đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin hợp đồng số : ' + @CODE + N' đã được trưởng đơn vị phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết thông tin hợp đồng.' + @footer AS MESSAGECONTENT RETURN 0 END ----------------BAODNQ 26/10/2022 : GỬI MAIL QUẢN LÝ PO---------------- --------------NGƯỜI TẠO GỬI YC PHÊ DUYỆT--------------------- IF(@p_TYPE = 'TR_PO_MASTER_SEND_APP') BEGIN SET @CODE = (SELECT TOP 1 PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo thông tin PO cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin PO số : ' + @CODE + N' đang chờ Anh/Chị phê duyệt.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt thông tin PO.' + @footer AS MESSAGECONTENT RETURN 0 END ------------------------TRƯỞNG ĐV ĐÃ DUYỆT, GỬI MAIL CHO NG TẠO--------------------------- IF(@p_TYPE = 'TR_PO_MASTER_APPROVE') BEGIN SET @CODE = (SELECT TOP 1 PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @p_ID) SELECT @TILTER_MAIL+N' Thông báo thông tin PO đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Thông tin PO số : ' + @CODE + N' đã được trưởng đơn vị phê duyệt thành công.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết thông tin PO.' + @footer AS MESSAGECONTENT RETURN 0 END -------------------------BAODNQ 30/11/2022 : GỬI MAIL ĐÁNH GIÁ NCC--------------------- DECLARE @p_RATE_SUP_LINK VARCHAR(200) DECLARE @p_RATE_TRANSFER_DT_LINK VARCHAR(200) DECLARE @p_RATE_SUP_DMMS_TYPE_JOB VARCHAR(20) ------------------Ng tạo gửi phê duyệt / NVXL DMMS gửi phê duyệt--------------------- IF(@p_TYPE = 'TR_RATE_SUPPLIER_MASTER_SendAppr' OR @p_TYPE = 'TR_RATE_SUPPLIER_PROCESS_CHILD_Upd') BEGIN SET @CODE = (SELECT TOP 1 RATE_REQ_NO FROM TR_RATE_SUPPLIER_MASTER WHERE RATE_ID = @p_ID) SET @p_CURRENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') --------------phiếu đánh giá NCC đangchờ đơn vị duyệt-------------- IF(@p_CURRENT_PROCESS = 'SIGN' OR @p_CURRENT_PROCESS = 'APPNEW') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-view;id=' + @p_ID END --------------phiếu đánh giá NCC đang chờ DMMS duyệt-------------- ELSE IF(@p_CURRENT_PROCESS = 'DMMS') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-dmms-view;id=' + @p_ID END SELECT @TILTER_MAIL+N' Thông báo phiếu đánh giá nhà cung cấp cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đánh giá nhà cung cấp số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đánh giá.' + @footer AS MESSAGECONTENT END ---------------------Cấp trung gian duyệt / trưởng đv duyệt--------------- IF(@p_TYPE = 'TR_RATE_SUPPLIER_MASTER_Confirm' OR @p_TYPE = 'TR_RATE_SUPPLIER_MASTER_App') BEGIN SET @CODE = (SELECT TOP 1 RATE_REQ_NO FROM TR_RATE_SUPPLIER_MASTER WHERE RATE_ID = @p_ID) SET @p_CURRENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') --------------------------TH cấp duyệt trung gian duyệt xong đến trưởng đơn vị duyệt----------- IF(@p_CURRENT_PROCESS = 'APPNEW') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-view;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu đánh giá nhà cung cấp cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đánh giá nhà cung cấp số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đánh giá.' + @footer AS MESSAGECONTENT END -------------------------TH trưởng dv duyệt xong đến lãnh đạo khối duyệt------------------------ ELSE IF(@p_CURRENT_PROCESS = 'GDK_APP' OR @p_CURRENT_PROCESS = 'GDKHT_APP') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-approve-view;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu đánh giá nhà cung cấp cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đánh giá nhà cung cấp số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đánh giá.' + @footer AS MESSAGECONTENT END -------------------------TH CN/PGD trưởng đơn vị duyệt xong là hoàn tất----------------------------- ELSE IF(@p_CURRENT_PROCESS = 'APPROVE') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-edit;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu đánh giá nhà cung cấp đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đánh giá nhà cung cấp số: ' + @CODE + N' đã được phê duyệt hoàn tất.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu đánh giá.' + @footer AS MESSAGECONTENT END END ---------------------lãnh đạo phụ trách khối duyệt / GDK hỗ trợ duyệt------------------ IF(@p_TYPE = 'TR_RATE_SUPPLIER_MASTER_PROCESS_App') BEGIN SET @CODE = (SELECT TOP 1 RATE_REQ_NO FROM TR_RATE_SUPPLIER_MASTER WHERE RATE_ID = @p_ID) SET @p_CURRENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') -------------------------TH lãnh đạo khối duyệt xong đến DMMS xử lý------------------------ IF(@p_CURRENT_PROCESS = 'DMMS') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-transfer' SET @p_RATE_TRANSFER_DT_LINK = @URL + 'rate-supplier-transfer-view;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu đánh giá nhà cung cấp cần điều phối xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đánh giá nhà cung cấp số: ' + @CODE + N' đang chờ Anh/Chị điều phối xử lý .' + N'
Nếu Anh/Chị muốn điều phối xử lý: Anh/Chị vui lòng nhấn vào đây để thực hiện tìm kiếm và điều phối phiếu.' + N'
Nếu Anh/Chị không muốn điều phối xử lý: Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu.' + @footer AS MESSAGECONTENT END -------------------------TH GDK hỗ trợ duyệt xong là hoàn tất------------------------ ELSE IF(@p_CURRENT_PROCESS = 'APPROVE') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-edit;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu đánh giá nhà cung cấp đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đánh giá nhà cung cấp số: ' + @CODE + N' đã được phê duyệt hoàn tất.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết phiếu đánh giá.' + @footer AS MESSAGECONTENT END END ---------------------DMMS điều phối phiếu--------------------- IF(@p_TYPE = 'TR_RATE_SUPPLIER_PROCESS_CHILD_Ins') BEGIN SET @p_CURRENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') SET @p_RATE_SUP_DMMS_TYPE_JOB = ( SELECT TOP 1 TYPE_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_ID AND PROCESS_ID = (SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') AND STATUS_JOB = 'C') SET @CODE = (SELECT TOP 1 RATE_REQ_NO FROM TR_RATE_SUPPLIER_MASTER WHERE RATE_ID = @p_ID) ----------Nếu ng xử lý tiếp theo là KS------- IF(@p_RATE_SUP_DMMS_TYPE_JOB = 'KS') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-transfer' SET @p_RATE_TRANSFER_DT_LINK = @URL + 'rate-supplier-transfer-view;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu đánh giá nhà cung cấp cần điều phối xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đánh giá nhà cung cấp số: ' + @CODE + N' đang chờ Anh/Chị điều phối xử lý .' + N'
Nếu Anh/Chị muốn điều phối xử lý: Anh/Chị vui lòng nhấn vào đây để thực hiện tìm kiếm và điều phối phiếu.' + N'
Nếu Anh/Chị không muốn điều phối xử lý: Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu.' + @footer AS MESSAGECONTENT END ELSE IF(@p_RATE_SUP_DMMS_TYPE_JOB = 'XL') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-dmms-edit;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu đánh giá nhà cung cấp cần xử lý' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đánh giá nhà cung cấp số: ' + @CODE + N' đang chờ Anh/Chị xử lý .' + N'
Anh/Chị vui lòng nhấn vào đây để thực hiện xử lý phiếu đánh giá.' + @footer AS MESSAGECONTENT END END ---------------------DMMS phê duyệt--------------------- IF(@p_TYPE = 'TR_RATE_SUPPLIER_PROCESS_CHILD_App') BEGIN SET @p_CURRENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_ID AND STATUS = 'C') SET @CODE = (SELECT TOP 1 RATE_REQ_NO FROM TR_RATE_SUPPLIER_MASTER WHERE RATE_ID = @p_ID) IF(@p_CURRENT_PROCESS = 'DMMS') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-dmms-view;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu đánh giá nhà cung cấp cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đánh giá nhà cung cấp số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đánh giá.' + @footer AS MESSAGECONTENT END IF(@p_CURRENT_PROCESS = 'GDKHT_APP') BEGIN SET @p_RATE_SUP_LINK = @URL + 'rate-supplier-approve-view;id=' + @p_ID SELECT @TILTER_MAIL+N' Thông báo phiếu đánh giá nhà cung cấp cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Phiếu đánh giá nhà cung cấp số: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đánh giá.' + @footer AS MESSAGECONTENT END END --------------------------ENBAODNQ--------------------- IF(@p_TYPE = 'TR_REJECT_GDV') BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val )x) SELECT @PAGE = sp.Description, @URLPAGE=(CASE sp.Prefix WHEN 'TRPY' THEN 'req-temp-pay-list-kt-edit;id=' WHEN 'TADY' THEN 'req-payment-kt-edit;id='END) FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX IF (@SYS_PREFIX ='TRPY') SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID) ELSE IF (@SYS_PREFIX ='TADY') SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N'Thông báo '+LOWER(@PAGE)+N' bị từ chối' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch '+LOWER(@PAGE)+N' có mã phiếu: '+@CODE+ N' bị từ chối.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END IF(@p_TYPE = 'TR_REJECT_NT') BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@p_ID, PATINDEX('%[a-z]%', @p_ID), LEN(@p_ID)) Val )x) SELECT @PAGE = sp.Description, @URLPAGE=(CASE sp.Prefix WHEN 'TRPY' THEN 'req-temp-pay-list-edit;id=' WHEN 'TADY' THEN 'req-payment-edit;id=' END) FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX IF (@SYS_PREFIX ='TRPY') SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID) ELSE IF (@SYS_PREFIX ='TADY') SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID) SELECT @TILTER_MAIL+N'Thông báo '+LOWER(@PAGE)+N' bị từ chối' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Anh/Chị có giao dịch '+LOWER(@PAGE)+N' có mã phiếu: '+@CODE+ N' bị từ chối.' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.' + @footer AS MESSAGECONTENT END ---START hieuhm 09/11/2022 Gửi phê duyệt công trình, gửi mail cho người duyệt----- IF(@p_TYPE = 'CON_MASTER_SendApp') BEGIN SET @CODE = (SELECT CONSTRUCT_CODE FROM CON_MASTER WHERE CONSTRUCT_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo công trình cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Công trình: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.' + @footer AS MESSAGECONTENT RETURN 0 END ---END hieuhm 09/11/2022 Gửi phê duyệt công trình, gửi mail cho người duyệt----- ---START hieuhm 11/11/2022 Phê duyệt công trình, gửi mail cho người tạo----- IF(@p_TYPE = 'CON_MASTER_APP') BEGIN SET @CODE = (SELECT CONSTRUCT_CODE FROM CON_MASTER WHERE CONSTRUCT_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo công trình đã được phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Công trình: ' + @CODE + N' của Anh/Chị đã được phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết công trình.' + @footer AS MESSAGECONTENT RETURN 0 END ---END hieuhm 11/11/2022 Phê duyệt công trình, gửi mail cho người tạo----- ---START hieuhm 16/11/2022 Gửi phê duyệt và phê duyệt layout bản vẽ, gửi mail cho người duyệt----- IF(@p_TYPE = 'CON_LAYOUT_BLUEPRINT_App' OR @p_TYPE = 'CON_LAYOUT_BLUEPRINT_SendApp') BEGIN SET @CODE = (SELECT CON_LAYOUT_BLUEPRINT_ID FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID =@p_ID) SELECT @TILTER_MAIL+N' Thông báo layout bản vẽ cần phê duyệt' AS TITLE, @p_MESSAGE_HEAD + N'Kính gửi Anh/Chị' + N',

Layout bản vẽ: ' + @CODE + N' đang chờ Anh/Chị phê duyệt .' + N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt layout bản vẽ.' + @footer AS MESSAGECONTENT RETURN 0 END ---END hieuhm 16/11/2022 Gửi phê duyệt và phê duyệt layout bản vẽ, gửi mail cho người duyệt----- GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_DOC_SendApp]' GO -- Stored Procedure ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_SendApp] @p_REQ_ID VARCHAR(20), @p_PROCESS_ID VARCHAR(20), @p_TLNAME VARCHAR(20), @p_MAKER_ID VARCHAR(20) AS BEGIN TRANSACTION IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (REQ_DT IS NULL OR REQ_DT='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Ngày yêu cầu bắt buộc nhập' ErrorDesc RETURN '-1' END IF((SELECT CONVERT(DATE, REQ_DT, 103) FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) > CONVERT(DATE, GETDATE(),103)) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Ngày yêu cầu mua sắm không được phép lớn hơn ngày hiện tại' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (REQ_REASON IS NULL OR REQ_REASON='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Mục đích yêu cầu bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (PL_REQ_ID IS NULL OR PL_REQ_ID='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Tờ trình chủ trương bắt buộc nhập' ErrorDesc RETURN '-1' END IF(NOT EXISTS(SELECT REQ_DOC_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID ) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Chi tiết hàng hóa bắt buộc nhập' ErrorDesc RETURN '-1' END -------------------BAODNQ 24/10/2022 : XÓA DATA DVCM KHI GỬI PHÊ DUYỆT----------------- DELETE FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID -----------------------------ENDBAODNQ--------------------- --- XOA DATA CU DELETE PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID ----- DECLARE @NS_TO_TRINH DECIMAL(18,0), @NS_PYCMS_USE DECIMAL(18,0), @NS_LUY_KE DECIMAL(18,0),@PL_REQ_CODE VARCHAR(50) SET @PL_REQ_CODE =(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)) SET @NS_TO_TRINH =(SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)) SET @NS_PYCMS_USE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID) SET @NS_LUY_KE =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) AND PROCESS_ID='APPROVE')),0) DECLARE @p_PL_REQ_ID VARCHAR(15),@p_REQ_DATE DATETIME SELECT @p_PL_REQ_ID=PL_REQ_ID,@p_REQ_DATE=REQ_DT FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID --IF( EXISTS( -- SELECT Temp.GD_ID FROM (SELECT GD_ID,SUM(TOTAL_AMT) AS TOTAL_AMT_ETM FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID -- GROUP BY GD_ID) Temp WHERE TOTAL_AMT_ETM > -- ((SELECT SUM(TEMP2.TOTAL_AMT) AS TOTAL_AMT_APP FROM -- (SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT -- WHERE REQ_ID=@p_PL_REQ_ID -- UNION -- SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT -- WHERE REQ_ID=(SELECT REQ_PARENT_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_PL_REQ_ID) ) TEMP2 WHERE TEMP2.GOODS_ID=Temp.GD_ID -- GROUP BY TEMP2.GOODS_ID) - (SELECT ISNULL(SUM(TOTAL_AMT),0) AS TOTAL_AMT_EXE FROM dbo.TR_REQUEST_DOC_DT WHERE GD_ID=Temp.GD_ID AND REQ_DOC_ID IN (SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=@p_PL_REQ_ID AND PROCESS_ID='APPROVE') -- GROUP BY GD_ID)))) -- BEGIN -- ROLLBACK TRANSACTION -- SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, -- N'Thông tin liên quan tới phiếu yêu cầu mua sắm có sử dụng tờ trình số: '+ @PL_REQ_CODE -- +CHAR(10)+ N'Tổng số tiền lũy kế sử dụng ngân sách tờ trình: '+FORMAT(@NS_LUY_KE ,'#,#', 'vi-VN') -- +CHAR(10)+N'Tổng số tiền ngân sách còn lại của tờ trình: '+ FORMAT(@NS_TO_TRINH -@NS_LUY_KE ,'#,#', 'vi-VN') -- +CHAR(10)+ N'Số tiền sử dụng ngân sách cho phiếu yêu cầu mua sắm hiện tại vượt '+FORMAT(@NS_LUY_KE+@NS_PYCMS_USE -@NS_TO_TRINH ,'#,#', 'vi-VN')+N' so với tổng số tiền ngân sách còn lại của tờ trình.' -- +CHAR(10) +N'Vui lòng tra cứu tổng số tiền các phiếu yêu cầu mua sắm để biết thêm thông tin chi tiêt!' ErrorDesc -- RETURN '0' -- END -- LUCTV: 05-12-2020: KHAI BAO CURSOR DE KIEM TRA TONG HAN MUC SU DUNG PYC LINK TỚI TỜ TRÌNH -- LẤY SUM TỜ TRÌNH CHA DECLARE @SUM_TO_TRINH_CHINH DECIMAL(18) =0, @SUM_TO_TRINH_CON DECIMAL(18,0), @SUM_PYC_LUY_KE DECIMAL(18,0), @PYCMS_CODE_LIST VARCHAR(100), @SUM_THANH_TOAN DECIMAL(18,0), @PDNTT_CODE_LIST VARCHAR(250) SET @SUM_TO_TRINH_CHINH =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_PL_REQ_ID) -- LẤY SUM TỜ TRÌNH CON SET @SUM_TO_TRINH_CON =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM PL_REQUEST_DOC_DT WHERE REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_DOC WHERE REQ_PARENT_ID =@p_PL_REQ_ID)) --- SET @SUM_PYC_LUY_KE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS IN ('U','A')) AND REQ_DOC_ID <> @p_REQ_ID) ----------------------BAODNQ 29/12/2022: CỘNG THÊM VÀO SUM_LUY_KE THÀNH TIỀN DỰ KIẾN CỦA NHỮNG PYCMS KHÁC CÓ HẠNG MỤC LÀ XUẤT KHO---------------------------- SET @SUM_PYC_LUY_KE = @SUM_PYC_LUY_KE + (SELECT ISNULL(SUM(TOTAL_AMT_ETM),0) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID = @p_PL_REQ_ID AND AUTH_STATUS IN('U', 'A')) AND REQ_DOC_ID <> @p_REQ_ID AND TRAN_TYPE_ID = 'TRN0000000006' ) -----------------------ENDBAODNQ 29/12/2022-------------------------------- SET @SUM_THANH_TOAN = (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@p_PL_REQ_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS IN ('U','A'))) IF(ISNULL(@SUM_TO_TRINH_CHINH,0) + ISNULL(@SUM_TO_TRINH_CON,0) <@SUM_PYC_LUY_KE+@NS_PYCMS_USE + ISNULL(@SUM_THANH_TOAN,0)) BEGIN ROLLBACK TRANSACTION SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS IN ('U','A') FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@p_PL_REQ_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS IN ('U','A'))) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Thông tin liên quan tới phiếu yêu cầu mua sắm có sử dụng tờ trình số: '+ @PL_REQ_CODE + N'Tổng số tiền lũy kế sử dụng ngân sách tờ trình: '+FORMAT(@SUM_PYC_LUY_KE ,'#,#', 'vi-VN'), + N'Tổng số tiền lũy kế đã thanh toán cho tờ trình: '+FORMAT(isnull(@SUM_THANH_TOAN,0) ,'#,#', 'vi-VN') + N'\n Tổng số tiền ngân sách còn lại của tờ trình: '+ FORMAT(ISNULL(@SUM_TO_TRINH_CHINH,0)+ ISNULL(@SUM_TO_TRINH_CON,0) -@SUM_PYC_LUY_KE -ISNULL(@SUM_THANH_TOAN,0) ,'#,#', 'vi-VN') + N'\n Số tiền sử dụng ngân sách cho phiếu yêu cầu mua sắm hiện tại vượt '+FORMAT(ISNULL(@SUM_PYC_LUY_KE,0)+@NS_PYCMS_USE +ISNULL(@SUM_THANH_TOAN,0) -(ISNULL(@SUM_TO_TRINH_CHINH,0)+ ISNULL(@SUM_TO_TRINH_CON,0)) ,'#,#', 'vi-VN')+N' so với tổng số tiền ngân sách còn lại của tờ trình.' + N'\n Vui lòng tra cứu tổng số tiền các phiếu yêu cầu mua sắm số: '+ISNULL(@PYCMS_CODE_LIST,'')+N' để biết thêm thông tin chi tiêt!' + N'\n Vui lòng tra cứu tổng số tiền trên các phiếu thanh toán: '+ISNULL(@PDNTT_CODE_LIST,'')+N' để biết thêm thông tin chi tiêt!' ErrorDesc RETURN '0' END -- KHAI BÁO CURRS0R ĐỂ CHECK LŨY KẾ TỪNG HẠNG MỤC DECLARE @PL_DT_ID VARCHAR(15), @SUM_@PL_DT_ID DECIMAL(18,0), @INDEX INT =0, @TOTAL_AMT_DETAIL DECIMAL(18,0), @REMAIN_AMT DECIMAL(18,0), @AMT_PL_DT DECIMAL(18,0), @AMT_PL_DT_EX DECIMAL(18,0) DECLARE CURS CURSOR FOR SELECT PL_REQDT_ID, TOTAL_AMT FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID OPEN CURS FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL WHILE @@FETCH_STATUS = 0 BEGIN SET @INDEX = @INDEX +1 ----------------BAODNQ 20/12/2022: NẾU LƯỚI CHI TIẾT MUA SẮM THỰC TẾ K CÓ CHỌN DANH MỤC HÀNG HÓA THEO TỜ TRÌNH, KO CHO LƯU------------ IF(@PL_DT_ID IS NULL OR @PL_DT_ID = '') BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới chi tiết mua sắm thực tế, dòng :' +@INDEX+ N': Hàng hóa theo tờ trình không được bỏ trống' ErrorDesc RETURN '-1' END -- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET --IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADVANCE_ID)=0) SET @SUM_@PL_DT_ID =(SELECT SUM (TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS IN ('U','A')) AND PL_REQDT_ID =@PL_DT_ID) SET @AMT_PL_DT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID) SET @REMAIN_AMT = ISNULL(@AMT_PL_DT,0) -ISNULL(@SUM_@PL_DT_ID,0) --SET @SUM_@PL_DT_ID = ISNULL(@SUM_@PL_DT_ID,0)+ISNULL(@TOTAL_AMT_DETAIL,0) SET @AMT_PL_DT_EX =(SELECT SUM (TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID AND PL_REQDT_ID =@PL_DT_ID) --AND PL_REQDT_ID =@PL_DT_ID) --PRINT @SUM_@PL_DT_ID IF(ISNULL(@SUM_@PL_DT_ID,0)+ ISNULL(@AMT_PL_DT_EX,0) > @AMT_PL_DT) --IF(1<2) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Ngân sách sử dụng của hạng mục: '+ (SELECT ISNULL(DESCRIPTION,'') FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID) +N' đã vượt quá số tiền trình chủ trương.' + N'\n Số tiền đã gửi phê duyệt thành công trong những PUR khác: '+ FORMAT(ISNULL(@SUM_@PL_DT_ID,0) ,'#,#', 'vi-VN') + N'\n Số tiền còn lại có thể sử dụng: '+ CASE WHEN @REMAIN_AMT >0 THEN FORMAT(ISNULL(@REMAIN_AMT,0) ,'#,#', 'vi-VN') ELSE '0.00' END --+CHAR(10)+N'Số tiền vượt hạn mức: '+ FORMAT(ISNULL(@SUM_@PL_DT_ID,0) +ISNULL(@TOTAL_AMT_DETAIL,0) - (@AMT_PL_DT) ,'#,#', 'vi-VN') ErrorDesc RETURN '-1' END --UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT = ISNULL(PAY_AMT,0) + ISNULL(@AMT_PAY,0.00) +ISNULL(@AMT_REVERT,0.00) WHERE REQ_PAY_ID =@PAY_ADVANCE_ID -- SO SÁNH TỔNG BREAK DOWN TỪ 1 HẠNG MỤC --IF(SELECT SUM()) FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL END CLOSE CURS DEALLOCATE CURS --: HẾT ĐOẠN BỔ SUNG CỦA LỰCTV --IF(EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE)) --IF(EXISTS(SELECT REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE)) -- BEGIN -- ROLLBACK TRANSACTION -- SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa theo tờ trình: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc -- RETURN '0' --END IF(EXISTS(SELECT REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE)) BEGIN ROLLBACK TRANSACTION SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc RETURN '0' END IF(EXISTS(SELECT REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND (REQ_DT IS NULL OR REQ_DT =''))) BEGIN ROLLBACK TRANSACTION SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc RETURN '0' END IF(EXISTS(SELECT [DESCRIPTION] FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND ([DESCRIPTION] IS NULL OR [DESCRIPTION] =''))) BEGIN ROLLBACK TRANSACTION SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Mô tả hàng hóa/ dịch vụ không được phép để trống' ErrorDesc RETURN '0' END IF(EXISTS(SELECT UNIT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (UNIT_ID IS NULL OR UNIT_ID =''))) BEGIN ROLLBACK TRANSACTION SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Đơn vị tính không được phép để trống' ErrorDesc RETURN '0' END IF(EXISTS(SELECT QUANTITY FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (QUANTITY IS NULL OR QUANTITY =''))) BEGIN ROLLBACK TRANSACTION SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Số lượng không được phép để trống' ErrorDesc RETURN '0' END DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10), @BRANCH_CREATE_TYPE VARCHAR(10) SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID -----------------BAODNQ 25/8/2022 : Nếu ĐV tạo khác HS, ko lấy theo phòng ban------------ IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) <> 'HS') BEGIN SET @DEP_CREATE = NULL END SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID) SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE) -- KIEM TRA XEM CO CAP PHE DUYET HAY KHONG IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>'')) BEGIN UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN' WHERE REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'SIGN', -- PROCESS_ID - varchar(10) 'C', -- STATUS - varchar(5) (SELECT RoleName FROM TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)), -- ROLE_USER - varchar(50) @BRANCH_CREATE, @DEP_CREATE, -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime '', -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', -- DVDM_ID - varchar(15) N'Chờ cấp phê duyệt trung gian xác nhận phiếu', -- NOTES - nvarchar(500) NULL -- IS_HAS_CHILD - bit ) END ELSE BEGIN --IF(@BRANCH_CREATE_TYPE='PGD') -- SET @BRANCH_CREATE=(SELECT FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE) UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'APPNEW', -- PROCESS_ID - varchar(10) 'C', -- STATUS - varchar(5) 'GDDV', -- ROLE_USER - varchar(50) @BRANCH_CREATE, @DEP_CREATE, -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime '', -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', -- DVDM_ID - varchar(15) N'Chờ trưởng đơn vị phê duyệt', -- NOTES - nvarchar(500) NULL -- IS_HAS_CHILD - bit ) END --------------BAODNQ 4/11/2022: NG TẠO GỬI PHÊ DUYỆT MÀ K CÓ DVCM THÌ GHI LOG-------------- DECLARE @p_LOG_MESSAGE NVARCHAR(MAX) IF(NOT EXISTS (SELECT * FROM TR_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID)) BEGIN SET @p_LOG_MESSAGE = N'Nhân viên gửi phê duyệt và không chọn DVCM' END ELSE BEGIN SET @p_LOG_MESSAGE = N'Nhân viên gửi phê duyệt' END -------------------ENDBAODNQ--------------------------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) --@p_PROCESS_ID, -- PROCESS_ID - varchar(10) 'SEND', @p_TLNAME, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Nhân viên tạo phiếu và gửi phê duyệt thành công' , -- PROCESS_DESC - nvarchar(1000) @p_LOG_MESSAGE -- NOTES - nvarchar(1000) ) IF @@Error <> 0 GOTO ABORT ------BAODNQ 26/3/2022: Trả ra kết quả PROCESS_ID------- DECLARE @PROCESS_ID VARCHAR(50) = ( SELECT PROCESS_ID FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID ) COMMIT TRANSACTION SELECT '0' as Result,'' REQ_CODE,''REQ_ID, @PROCESS_ID PROCESS_ID,'' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' PROCESS_ID,'' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[rpt_BDS_BC04_Excel]' GO ALTER PROCEDURE [dbo].[rpt_BDS_BC04_Excel] @p_Fromdate varchar(20) = null, @p_Todate varchar(20) = null, @P_BRANCH_ID VARCHAR(15) = NULL, @P_LEVEL VARCHAR(15) = 'ALL', @p_STATUS VARCHAR(15) = NULL AS BEGIN DECLARE @FROM_DT DATETIME = CONVERT(DATE,@p_Fromdate,103) DECLARE @TO_DT DATETIME = CONVERT(DATE, @p_Todate, 103) declare @tmp table(BRANCH_ID varchar(15)) if(@P_LEVEL = 'ALL') BEGIN insert into @tmp select * from CM_BRANCH_GETCHILDID(@P_BRANCH_ID) END ELSE BEGIN INSERT INTO @tmp SELECT @P_BRANCH_ID AS BRANCH_ID END --;WITH RET AS( -- SELECT -- B.BRANCH_CREATE AS BRANCH_ID, -- [dbo].[FN_GET_CHINHANH](B.BRANCH_CREATE,'KV') AS KHU_VUC, -- [dbo].[FN_GET_CHINHANH](B.BRANCH_CREATE,'CN') AS CHI_NHANH, -- '' AS THANH_PHO, -- A.ADDR AS ADDRESS, -- [dbo].[FN_GET_CHINHANH](B.BRANCH_CREATE,'PGD') AS PGD, -- '' AS SCALE, -- OT.CONTENT AS OWNER_TYPE, -- A.TOTAL_SQUARE AS TOTAL_AREA, -- CASE -- WHEN A.USE_PERIOD = 0 THEN 'Lâu dài' -- ELSE CONVERT(VARCHAR(20), A.USE_PERIOD_DT, 103) -- END -- AS USE_PERIOD, -- A.CURRENT_STATE, -- B.BUY_PRICE, -- '' AS QSDD, -- B.AMORT_AMT, -- B.BUY_PRICE AS MARKET_PRICE, -- CASE -- WHEN A.CONST_STATUS = 'XD' THEN 'X' -- ELSE '' -- END -- AS CONSTRUCT, -- CASE -- WHEN A.CONST_STATUS = 'SC' THEN 'X' -- ELSE '' -- END -- AS REPAIR, -- CASE -- WHEN A.CONST_STATUS = 'XD/SC' THEN 'X' -- ELSE '' -- END -- AS REPAIR_CONSTRUCT, -- B.BUY_DATE, -- B.AMORT_START_DATE, -- CONVERT(VARCHAR, CAST(B.AMORT_MONTH AS INT)) + N' tháng' AS DURATION -- FROM RET_MASTER A -- INNER JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID -- LEFT JOIN CM_BRANCH BRCR ON B.BRANCH_CREATE = BRCR.BRANCH_ID -- LEFT JOIN CM_BRANCH BRUS ON A.BRANCH_USE = BRUS.BRANCH_ID -- LEFT JOIN CM_ALLCODE OT ON A.OWNER_TYPE = OT.CDVAL AND OT.CDTYPE = 'RET' AND OT.CDNAME = 'OWNER_TYPE' -- WHERE A.AUTH_STATUS = 'A' -- AND A.RECORD_STATUS = '1' -- AND B.BRANCH_CREATE IN (SELECT BRANCH_ID FROM @tmp) -- AND (A.BUY_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') -- AND (A.BUY_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') -- AND A.STATUS = @p_STATUS --), --RET_LC AS( -- SELECT -- A.BRANCH_CREATE AS BRANCH_ID, -- [dbo].[FN_GET_CHINHANH](A.BRANCH_CREATE,'KV') AS KHU_VUC, -- [dbo].[FN_GET_CHINHANH](A.BRANCH_CREATE,'CN') AS CHI_NHANH, -- '' AS THANH_PHO, -- A.RET_ADDR AS ADDRESS, -- [dbo].[FN_GET_CHINHANH](A.BRANCH_CREATE,'PGD') AS PGD, -- '' AS SCALE, -- N'Chưa hoàn thiện pháp lý' AS OWNER_TYPE, -- A.AREA AS TOTAL_AREA, -- '' AS USE_PERIOD, -- N'Chưa hoàn thiện pháp lý' AS CURRENT_STATE, -- 0 AS BUY_PRICE, -- '' AS QSDD, -- 0 AS AMORT_AMT, -- 0 AS MARKET_PRICE, -- '' AS CONSTRUCT, -- '' AS REPAIR, -- '' AS REPAIR_CONSTRUCT, -- NULL AS BUY_DATE, -- NULL AS AMORT_START_DATE, -- '' AS DURATION -- FROM REAL_ESTATE_L_C A -- LEFT JOIN CM_BRANCH BRCR ON A.BRANCH_MANAGE = BRCR.BRANCH_ID -- LEFT JOIN CM_BRANCH BRUS ON A.BRANCH_USE = BRUS.BRANCH_ID -- WHERE A.AUTH_STATUS = 'A' -- AND A.RECORD_STATUS = '1' -- AND A.BRANCH_CREATE IN (SELECT BRANCH_ID FROM @tmp) -- AND (A.BUY_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') -- AND (A.BUY_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') --) --SELECT --ROW_NUMBER() OVER (ORDER BY(SELECT 1)) AS STT, --RESULT.* --FROM ( -- SELECT * FROM RET -- UNION ALL(SELECT * FROM RET_LC) --) AS RESULT SELECT A.BRANCH_USE AS BRANCH_ID, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'KV') AS KHU_VUC, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'CN') AS CHI_NHANH, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'PGD') AS CHI_NHANH_PGD, CRU.REGION_NAME AS KHU_VUC, BRUS.BRANCH_NAME AS CHI_NHANH_PGD, [dbo].[FN_GET_CITY_FROM_BRANCH](A.BRANCH_USE) AS THANH_PHO, B.RET_ID, A.RET_ADDR AS ADDRESS, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'PGD') AS PGD, --'' AS SCALE, CASE WHEN A.AREA IS NOT NULL AND A.AREA <> 0 THEN A.AREA ELSE B.LAND_SQUARE END AS LAND_SQUARE, --OT.CONTENT AS OWNER_TYPE, N'Mua' AS OWNER_TYPE, B.TOTAL_SQUARE AS TOTAL_AREA, --A.AREA AS TOTAL_AREA, CASE WHEN B.USE_PERIOD = 0 THEN 'Lâu dài' ELSE CONVERT(VARCHAR(20), B.USE_PERIOD_DT, 103) END AS USE_PERIOD, B.CURRENT_STATE AS CURRENT_STATE, ISNULL(A.ASSET_PRICE,0) AS BUY_PRICE, ISNULL(A.LAND_USE_RIGHTS_PRICE,0) AS LAND_PRICE, ISNULL(A.MARKET_PRICE, 0) AS MARKET_PRICE, ( SELECT ISNULL(SUM(RR.TOTAL_AMT_CONSTRUCT),0) FROM RET_REPAIR_SUGGEST RR WHERE RR.RET_ID = B.RET_ID ) AS CONSTRUCT, ( SELECT ISNULL(SUM(RR.TOTAL_AMT_REPAIR),0) FROM RET_REPAIR_SUGGEST RR WHERE RR.RET_ID = B.RET_ID ) AS REPAIR, ( SELECT ISNULL(SUM(RTS.TOTAL_AMT), NULL) FROM RET_TAX_SCHEDULE RTS WHERE RTS.RET_ID = B.RET_ID ) AS LAND_TAX, CASE WHEN B.CONST_STATUS = 'XD/SC' THEN N'Đang XD/SC' ELSE '' END AS REPAIR_CONSTRUCT, '' AS AMORT_START_DATE, '' AS AMORTIZED_DURATION, '' AS DURATION FROM REAL_ESTATE_L_C A LEFT JOIN CM_BRANCH BRCR ON A.BRANCH_MANAGE = BRCR.BRANCH_ID --đơn vị quản lý LEFT JOIN CM_BRANCH BRUS ON A.BRANCH_USE = BRUS.BRANCH_ID -- đơn vị sử dụng LEFT JOIN CM_REGIONS CRU ON BRUS.REGION_ID = CRU.REGION_ID -- khu vực LEFT JOIN RET_MASTER B ON A.RET_ID = B.RET_ID LEFT JOIN CM_ALLCODE OT ON B.OWNER_TYPE = OT.CDVAL AND OT.CDTYPE = 'RET' AND OT.CDNAME = 'OWNER_TYPE' WHERE A.AUTH_STATUS = 'A' AND A.RECORD_STATUS = '1' AND A.BRANCH_USE IN (SELECT BRANCH_ID FROM @tmp) AND (B.ASSET_ID IS NULL OR B.ASSET_ID = '') AND A.FINISH_DT_REAL IS NULL AND (A.BUY_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') AND (A.BUY_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_PLAN_TYPE_App]' GO /* [dbo].[RET_REPAIR_App] '','','' */ ALTER PROCEDURE [dbo].[CM_PLAN_TYPE_App] @P_PLAN_TYPE_ID VARCHAR(15), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) = NULL AS --Validation is here --DECLARE @ERRORSYS NVARCHAR(15) = '' --IF ( NOT EXISTS ( SELECT * FROM CM_DEPARTMENT WHERE DEP_ID = @P_DEP_ID)) -- SET @ERRORSYS = 'DEP-00001' --IF @ERRORSYS <> '' --BEGIN -- SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS -- RETURN '0' --END BEGIN TRANSACTION UPDATE dbo.CM_PLAN_TYPE SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE PLAN_TYPE_ID = @P_PLAN_TYPE_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'Altering [dbo].[PL_PROCESS_CURRENT_SEARCH]' GO ALTER PROCEDURE [dbo].[PL_PROCESS_CURRENT_SEARCH] @p_REQ_ID VARCHAR(20)=NULL, @p_USER_LOGIN VARCHAR(20)=NULL, @p_TYPE VARCHAR(20)=NULL AS BEGIN DECLARE @PROCESS_CURR VARCHAR(20),@IS_HAS_CHILD BIT SELECT TOP 1 @PROCESS_CURR = PROCESS_ID,@IS_HAS_CHILD=IS_HAS_CHILD FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' DECLARE @SIGN_USER VARCHAR(15), @CURENT_PROCESS VARCHAR(50) IF(@p_TYPE LIKE 'TTCT%') BEGIN IF(@IS_HAS_CHILD=0 OR @IS_HAS_CHILD IS NULL) BEGIN SET @SIGN_USER = (SELECT SIGN_USER FROM dbo.PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID) SET @CURENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS='C') -- Nếu có cấp phê duyệt trung gian IF(@SIGN_USER IS NOT NULL AND @SIGN_USER <> '' AND @CURENT_PROCESS = 'SIGN') BEGIN 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 dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 TM.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 ='') LEFT JOIN dbo.PL_REQUEST_DOC RD ON RD.REQ_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID WHERE PL.REQ_ID = @p_REQ_ID AND STATUS='C' AND (PL.PROCESS_ID = 'SIGN' AND TempU.TLNANME = RD.SIGN_USER) END ELSE BEGIN 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 dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) 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 (((SELECT TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID = PL.BRANCH_ID) = 'HS' AND TempU.SECUR_CODE=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='') OR (SELECT TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID = PL.BRANCH_ID) <> 'HS') AND (TempU.DVDM_ID=PL.DVDM_ID OR PL.DVDM_ID IS NULL OR PL.DVDM_ID ='') LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID WHERE PL.REQ_ID = @p_REQ_ID AND STATUS='C' END END ELSE IF(@IS_HAS_CHILD=1) BEGIN 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 dbo.PL_REQUEST_PROCESS 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 TempC.REQ_ID = PL.REQ_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 dbo.TL_USER 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 UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) 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.REQ_ID =@p_REQ_ID AND PL.STATUS='C' END END ELSE IF(@p_TYPE LIKE 'PYC-XE') BEGIN IF(@IS_HAS_CHILD=0 OR @IS_HAS_CHILD IS NULL) BEGIN DECLARE @Role VARCHAR(50) SELECT TOP 1 @Role = ROLE_USER FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' SET @Role= REPLACE(@Role,'-',',') SELECT distinct PL.REQ_ID,PL.PROCESS_ID, BR.BRANCH_NAME AS DVDM_NAME,TempU.TLNANME AS TLNAME,TempU.TLFullName,PL.NOTES FROM dbo.PL_REQUEST_PROCESS PL LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID LEFT JOIN dbo.FN_GET_USER_BY_ROLE('','','') TempU ON (TempU.ROLE_OLD IN ( SELECT value from wsiSplit(@Role,',')) OR TempU.ROLE_NEW IN (SELECT value from wsiSplit(@Role,',')) OR TempU.TLNANME IN (SELECT value from wsiSplit(@Role,','))) AND (TempU.BRANCH_ID=PL.BRANCH_ID OR PL.BRANCH_ID IS NULL OR PL.BRANCH_ID='') AND (TempU.DEP_ID=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='') WHERE REQ_ID =@p_REQ_ID AND STATUS='C' -- UNION -- SELECT distinct PL.REQ_ID,PL.PROCESS_ID, BR.BRANCH_NAME AS DVDM_NAME,tmp.CDVAL AS TLNAME,tmp.CONTENT,PL.NOTES -- FROM dbo.PL_REQUEST_PROCESS PL -- LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID -- LEFT JOIN (SELECT ca.CDVAL,ca.CONTENT,tu.TLSUBBRID FROM CM_ALLCODE ca LEFT JOIN TL_USER tu ON ca.CDVAL= tu.TLNANME WHERE ca.CDTYPE ='TR' AND ca.CDNAME='REQCAR') tmp ON (PL.ROLE_USER='CVDDX' AND pl.BRANCH_ID=tmp.TLSUBBRID) -- WHERE REQ_ID =@p_REQ_ID AND STATUS='C' END ELSE IF(@IS_HAS_CHILD=1) BEGIN SELECT distinct PL.REQ_ID,PL.PROCESS_ID, BR.BRANCH_NAME AS DVDM_NAME,TempC.TLNAME AS TLNANME , TU.TLFullName AS TLFullName,CASE WHEN TempC.ID IS NULL THEN PL.NOTES ELSE TempC.CONTENT END AS NOTES FROM dbo.PL_REQUEST_PROCESS PL 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='CAR_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 WHERE PL.REQ_ID =@p_REQ_ID AND PL.STATUS='C' END END ELSE IF(@p_TYPE LIKE 'PYC%') BEGIN IF(@PROCESS_CURR='DMMS') BEGIN 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 dbo.PL_REQUEST_PROCESS 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.REQ_ID =@p_REQ_ID AND PL.STATUS='C' END ELSE IF(@IS_HAS_CHILD=0 OR @IS_HAS_CHILD IS NULL) BEGIN SET @SIGN_USER = (SELECT SIGN_USER FROM dbo.TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID) SET @CURENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS='C') -- Nếu có cấp phê duyệt trung gian IF(@SIGN_USER IS NOT NULL AND @SIGN_USER <> '' AND @CURENT_PROCESS = 'SIGN') BEGIN 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 dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 TM.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 ='') LEFT JOIN dbo.TR_REQUEST_DOC RD ON RD.REQ_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID WHERE PL.REQ_ID = @p_REQ_ID AND STATUS='C' AND (PL.PROCESS_ID = 'SIGN' AND TempU.TLNANME = RD.SIGN_USER) END ELSE BEGIN 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 dbo.PL_REQUEST_PROCESS 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 REQ_ID =@p_REQ_ID AND STATUS='C' END END ELSE IF(@IS_HAS_CHILD=1) BEGIN 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 dbo.PL_REQUEST_PROCESS 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.REQ_ID =@p_REQ_ID AND PL.STATUS='C' END END ELSE IF(@p_TYPE = 'INVENT') BEGIN SET @SIGN_USER = (SELECT SIGN_USER FROM dbo.ASS_INVENTORY_MASTER WHERE INVENT_ID = @p_REQ_ID) SET @CURENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS='C') -- Nếu có cấp phê duyệt trung gian IF(@SIGN_USER IS NOT NULL AND @SIGN_USER <> '' AND @CURENT_PROCESS = 'SIGN') BEGIN SELECT distinct PL.REQ_ID,PL.PROCESS_ID, BR.BRANCH_NAME AS DVDM_NAME,TU.TLNANME AS TLNAME,TU.TLFullName,PL.NOTES FROM dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.ASS_INVENTORY_MASTER AI ON AI.INVENT_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME = AI.SIGN_USER WHERE PL.REQ_ID = @p_REQ_ID AND STATUS='C' AND PL.PROCESS_ID = 'SIGN' END ELSE IF(@CURENT_PROCESS = 'APPNEW') BEGIN SELECT PL.REQ_ID, Pl.PROCESS_ID,BR.BRANCH_NAME AS DVDM_NAME, TmpU.TLNANME, TmpU.TLFullName, PL.NOTES FROM dbo.PL_REQUEST_PROCESS PL LEFT JOIN ( SELECT * FROM [dbo].[FN_GET_USER_BY_ROLE] ('', '', '') ) TmpU ON 1=1 LEFT JOIN dbo.CM_BRANCH BR ON BR.BRANCH_ID = PL.BRANCH_ID WHERE PL.REQ_ID = @p_REQ_ID AND PL.STATUS = 'C' AND ((TmpU.ROLE_OLD = PL.ROLE_USER OR TmpU.ROLE_NEW = PL.ROLE_USER) OR PL.ROLE_USER IS NULL OR PL.ROLE_USER = '') AND ((BR.BRANCH_TYPE = 'HS' AND TmpU.BRANCH_ID = PL.BRANCH_ID AND TmpU.DEP_ID = PL.DEP_ID) OR (BR.BRANCH_TYPE <> 'HS' AND TmpU.BRANCH_ID = PL.BRANCH_ID) OR (PL.BRANCH_ID IS NULL OR PL.BRANCH_ID = '') ) END ELSE IF(@CURENT_PROCESS <> 'APPNEW') BEGIN SELECT PL.REQ_ID, Pl.PROCESS_ID,BR.BRANCH_NAME AS DVDM_NAME, TU.TLNANME, TU.TLFullName, PL.NOTES FROM dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.TL_USER TU ON TU.TLNANME = PL.ROLE_USER LEFT JOIN dbo.CM_BRANCH BR ON BR.BRANCH_ID = TU.TLSUBBRID WHERE PL.REQ_ID = @p_REQ_ID AND PL.STATUS = 'C' END END ----------------BAODNQ 6/6/2022 TỜ TRÌNH CHỈ ĐỊNH THẦU-------------- ELSE IF (@p_TYPE = 'TT_CDT') BEGIN SET @SIGN_USER = (SELECT SIGN_USER FROM PL_APPOINT_CONTRACTOR WHERE REQ_ID = @p_REQ_ID) SET @CURENT_PROCESS = ( SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS = 'C' ) -------------CÓ CẤP DUYỆT TRUNG GIAN----------- IF(@SIGN_USER IS NOT NULL AND @SIGN_USER <> '' AND @CURENT_PROCESS = 'SIGN') BEGIN SELECT DISTINCT PRP.REQ_ID, PRP.PROCESS_ID, CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE CB.BRANCH_NAME END AS DVDM_NAME, TLUSER.TLNANME AS TLNAME, TLUSER.TLFullName, PRP.NOTES FROM PL_REQUEST_PROCESS PRP LEFT JOIN CM_DVDM CD ON PRP.DVDM_ID = CD.DVDM_ID LEFT JOIN( SELECT TU.TLNANME, TU.TLFullName, TU.RoleName, PCOST.DVDM_ID, TU.SECUR_CODE, TU.DEP_ID, TU.TLSUBBRID FROM TL_USER TU LEFT JOIN ( SELECT PC.DVDM_ID, PD.BRANCH_ID, PD.DEP_ID FROM PL_COSTCENTER PC LEFT JOIN PL_COSTCENTER_DT PD ON PD.COST_ID = PC.COST_ID ) PCOST ON TU.TLSUBBRID = PCOST.BRANCH_ID AND TU.DEP_ID = PCOST.DEP_ID ) TLUSER ON ( TLUSER.RoleName = PRP.ROLE_USER OR PRP.ROLE_USER IN ( SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING TM WHERE TM.ROLE_OLD = TLUSER.RoleName AND TM.TLNAME IS NULL OR TM.TLNAME = '' ) ) AND (TLUSER.TLSUBBRID = PRP.BRANCH_ID OR PRP.BRANCH_ID IS NULL OR PRP.BRANCH_ID = '') AND (TLUSER.DEP_ID = PRP.DEP_ID OR PRP.DEP_ID IS NULL OR PRP.DEP_ID = '') AND (TLUSER.DVDM_ID = PRP.DVDM_ID OR PRP.DVDM_ID IS NULL OR PRP.DVDM_ID = '') LEFT JOIN PL_APPOINT_CONTRACTOR PAC ON PRP.REQ_ID = PAC.REQ_ID LEFT JOIN CM_BRANCH CB ON PRP.BRANCH_ID = CB.BRANCH_ID WHERE PRP.REQ_ID = @p_REQ_ID AND STATUS = 'C' AND (PRP.PROCESS_ID = 'SIGN' AND TLUSER.TLNANME = PAC.SIGN_USER) END ELSE ----------KO CÓ CẤP DUYỆT TRUNG GIAN------------- BEGIN SELECT DISTINCT PRP.REQ_ID, PRP.PROCESS_ID, CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE CB.BRANCH_NAME END AS DVDM_NAME, TLUSER.TLNANME AS TLNAME, TLUSER.TLFullName, PRP.NOTES FROM PL_REQUEST_PROCESS PRP LEFT JOIN CM_DVDM CD ON CD.DVDM_ID = PRP.DVDM_ID LEFT JOIN ( SELECT TU.TLNANME, TU.TLFullName, TU.RoleName, PCOST.DVDM_ID, TU.SECUR_CODE, TU.DEP_ID, TU.TLSUBBRID FROM TL_USER TU LEFT JOIN ( SELECT PC.DVDM_ID, PD.BRANCH_ID, PD.DEP_ID FROM PL_COSTCENTER PC LEFT JOIN PL_COSTCENTER_DT PD ON PD.COST_ID = PC.COST_ID ) PCOST ON TU.TLSUBBRID = PCOST.BRANCH_ID AND TU.DEP_ID = PCOST.DEP_ID UNION ALL SELECT TM.TLNAME, TLU.TLFullName, TM.ROLE_NEW AS RoleName, PCOST.DVDM_ID, TM.DEP_ID AS SECUR_CODE, TM.DEP_ID AS DEP_ID, TM.BRANCH_ID AS TLSUBBRID FROM TL_SYS_ROLE_MAPPING TM LEFT JOIN TL_USER TLU ON TM.TLNAME = TLU.TLNANME LEFT JOIN ( SELECT PC.DVDM_ID, PD.BRANCH_ID, PD.DEP_ID FROM PL_COSTCENTER PC LEFT JOIN PL_COSTCENTER_DT PD ON PD.COST_ID = PC.COST_ID ) PCOST ON TM.BRANCH_ID = PCOST.BRANCH_ID AND TM.DEP_ID = PCOST.DEP_ID WHERE CAST(TM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TLUSER ON (TLUSER.RoleName = PRP.ROLE_USER) AND (TLUSER.TLSUBBRID = PRP.BRANCH_ID OR PRP.BRANCH_ID IS NULL OR PRP.BRANCH_ID = '') AND ( ((SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE PRP.BRANCH_ID = BRANCH_ID) = 'HS' AND TLUSER.SECUR_CODE = PRP.DEP_ID OR PRP.DEP_ID IS NULL OR PRP.DEP_ID = '') OR (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE PRP.BRANCH_ID = BRANCH_ID) <> 'HS' ) AND (TLUSER.DVDM_ID = PRP.DVDM_ID OR PRP.DVDM_ID IS NULL OR PRP.DVDM_ID = '') LEFT JOIN CM_BRANCH CB ON PRP.BRANCH_ID = CB.BRANCH_ID WHERE PRP.REQ_ID = @p_REQ_ID AND STATUS = 'C' END END -----------------------BAODNQ 13/7/2022 ĐÁNH GIÁ NCC--------------------------- ELSE IF (@p_TYPE = 'RATE_SUP') BEGIN IF(@PROCESS_CURR='DMMS') BEGIN 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 dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN TR_RATE_SUPPLIER_MASTER TR ON TR.RATE_ID=PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID LEFT JOIN ( ------------BAODNQ 11/10/2022 : Ở bước điều phối lần đầu tiên cả GDDV và KSV cùng thấy phiếu-------------- --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' ) 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' OR (PRC.STATUS_JOB = 'U' AND EXISTS( SELECT PC.ID FROM PL_REQUEST_PROCESS_CHILD PC WHERE PC.REQ_ID = PRC.REQ_ID AND PC.TYPE_JOB = 'KS' AND PC.MAKER_ID IS NULL AND PC.TRANFER_DT IS NULL ) AND NOT EXISTS(SELECT PC_2.ID FROM PL_REQUEST_PROCESS_CHILD PC_2 WHERE PC_2.REQ_ID = PRC.REQ_ID AND PC_2.TYPE_JOB = 'XL') ) ) --------------------END BAODNQ 11/10/2022---------------- )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, AR.DisplayName AS RoleName, TS.TLSUBBRID,TS.SECUR_CODE FROM dbo.TL_USER TS JOIN AbpUserRoles AU ON TS.ID = AU.UserId JOIN AbpRoles AR ON AU.RoleId = AR.Id 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 (TempU.RoleName='KSV' -- AND NOT EXISTS(SELECT TOP 1 PP.CHECKER_ID FROM PL_PROCESS PP WHERE PP.REQ_ID = @p_REQ_ID AND PP.PROCESS_ID = 'DMMS' AND PP.CHECKER_ID = TempU.TLNANME ORDER BY PP.APPROVE_DT DESC) --) ) --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 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 TM.AUTH_STATUS = 'A') ) AND (TempU.DMMS_ID=TR.DMMS_ID) AND TempC.ID IS NULL WHERE PL.REQ_ID =@p_REQ_ID AND PL.STATUS='C' END IF(@IS_HAS_CHILD=0 OR @IS_HAS_CHILD IS NULL) BEGIN SET @SIGN_USER = (SELECT SIGN_USER FROM TR_RATE_SUPPLIER_MASTER WHERE RATE_ID = @p_REQ_ID) SET @CURENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS='C') -- Nếu có cấp phê duyệt trung gian IF(@SIGN_USER IS NOT NULL AND @SIGN_USER <> '' AND @CURENT_PROCESS = 'SIGN') BEGIN 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 dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 TM.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 ='') LEFT JOIN dbo.TR_RATE_SUPPLIER_MASTER TRS ON TRS.RATE_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID WHERE PL.REQ_ID = @p_REQ_ID AND STATUS='C' AND (PL.PROCESS_ID = 'SIGN' AND TempU.TLNANME = TRS.SIGN_USER) END ELSE BEGIN 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 dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN ( SELECT TU.TLNANME,TU.TLFullName, --TU.RoleName, AR.DisplayName AS RoleName, Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER TU JOIN AbpUserRoles AU ON TU.ID = AU.UserId JOIN AbpRoles AR ON AU.RoleId = AR.Id 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 UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) 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 (((SELECT TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID = PL.BRANCH_ID) = 'HS' AND TempU.SECUR_CODE=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='') OR (SELECT TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID = PL.BRANCH_ID) <> 'HS') AND (TempU.DVDM_ID=PL.DVDM_ID OR PL.DVDM_ID IS NULL OR PL.DVDM_ID ='') LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID WHERE PL.REQ_ID = @p_REQ_ID AND STATUS='C' END END ELSE IF(@IS_HAS_CHILD=1) BEGIN 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 dbo.PL_REQUEST_PROCESS 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.REQ_ID =@p_REQ_ID AND PL.STATUS='C' END END -----------HIEUHM 15/11/2022 LAYOUT BẢN VẼ--- ELSE IF(@p_TYPE LIKE 'LAYOUT_BV') BEGIN IF(@IS_HAS_CHILD=0 OR @IS_HAS_CHILD IS NULL) BEGIN SET @SIGN_USER = (SELECT SIGN_USER FROM dbo.CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_REQ_ID) SET @CURENT_PROCESS = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS='C') -- Nếu có cấp phê duyệt trung gian IF(@SIGN_USER IS NOT NULL AND @SIGN_USER <> '' AND @CURENT_PROCESS = 'SIGN') BEGIN 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 dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 TM.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 ='') LEFT JOIN dbo.CON_LAYOUT_BLUEPRINT RD ON RD.CON_LAYOUT_BLUEPRINT_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID WHERE PL.REQ_ID = @p_REQ_ID AND STATUS='C' AND (PL.PROCESS_ID = 'SIGN' AND TempU.TLNANME = RD.SIGN_USER) END ELSE BEGIN 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 dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID LEFT JOIN ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 UNION ALL SELECT A.TLNANME,A.TLFullName,TRM.ROLE_NEW AS RoleName,Temp.DVDM_ID, A.SECUR_CODE,A.TLSUBBRID FROM dbo.TL_USER A INNER JOIN dbo.AbpUserRoles B ON A.ID = B.UserId INNER JOIN dbo.AbpRoles C ON B.RoleId = C.Id 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= A.DEP_ID AND Temp.BRANCH_ID = A.TLSUBBRID INNER JOIN (SELECT * FROM dbo.TL_SYS_ROLE_MAPPING RM WHERE RM.TLNAME IS NULL OR RM.TLNAME = '') TRM ON (TRM.ROLE_OLD = C.DisplayName) UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TempU ON (TempU.RoleName=PL.ROLE_USER) AND (TempU.TLSUBBRID=PL.BRANCH_ID OR PL.BRANCH_ID IS NULL OR PL.BRANCH_ID='') AND (((SELECT TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID = PL.BRANCH_ID) = 'HS' AND TempU.SECUR_CODE=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='') OR (SELECT TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID = PL.BRANCH_ID) <> 'HS') AND (TempU.DVDM_ID=PL.DVDM_ID OR PL.DVDM_ID IS NULL OR PL.DVDM_ID ='') LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID WHERE PL.REQ_ID = @p_REQ_ID AND STATUS='C' END END ELSE IF(@IS_HAS_CHILD=1) BEGIN 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 dbo.PL_REQUEST_PROCESS 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 TempC.REQ_ID = PL.REQ_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 dbo.TL_USER 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 UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) 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.REQ_ID =@p_REQ_ID AND PL.STATUS='C' END END -----------HIEUHM 15/11/2022 LAYOUT BẢN VẼ--- END --EXEC CM_GOODS_Search '','','','','',0,'','','','','','','','',100 GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CAR_DRIVE_ById]' GO ALTER PROC [dbo].[CAR_DRIVE_ById] @p_CAR_DR_ID varchar(15) AS BEGIN SELECT A.*, TR.REQ_PAY_CODE,TRC.REQ_CODE AS REQ_CAR_CODE FROM CAR_DRIVE A LEFT JOIN TR_REQ_PAYMENT TR ON TR.REQ_PAY_ID = A.REQ_PAY_ID LEFT JOIN TR_REQUEST_CAR TRC ON TRC.REQ_ID = A.REQ_CAR_ID WHERE A.[CAR_DR_ID]=@p_CAR_DR_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_CONTRACT_PAYMENT_ById]' GO -- Stored Procedure ALTER PROCEDURE [dbo].[TR_CONTRACT_PAYMENT_ById] @CONTRACT_ID varchar(15) AS IF((SELECT CONT_TYPE FROM TR_CONTRACT WHERE CONTRACT_ID =@CONTRACT_ID) ='DK') BEGIN SELECT '' AS PAY_ID,@CONTRACT_ID AS CONTRACT_ID,B.PAY_PHASE AS PAY_PHASE, C.APPROVE_DT_KT AS EXPECTED_DT,100.0 AS [PERCENT], B.AMT_PAY AS AMOUNT,'' AS PAY_STATUS,B.REASON AS NOTES,'' AS MAKER_ID,B.PAY_DT_REAL AS CREATE_DT,'A' AS AUTH_STATUS,'' AS CHECKER_ID,C.APPROVE_DT_KT AS APPROVE_DT, C.APPROVE_DT_KT AS PAY_DT, B.AMT_PAY AS PAY_AMOUNT,'' AS CONTRACT_CODE, '' AS REQUEST_ID,'' AS CONTRACT_PARENT, B.AMT_PAY AS AMT_ADVANCE, 0.0 AS AMT_PAY_DO, CASE WHEN B.PROCESS ='2' THEN 'TTX' ELSE 'DTU' END AS CDVAL,'' AS CONTENT, 0.0 AS AMT_LINK, 0.0 AS REMAIN_AMT FROM TR_REQ_PAY_PERIOD B INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON B.REQ_PAY_ID = C.REQ_PAY_ID -- 2021928 LUCTV EDIT WHERE B.PAY_TYPE ='ADV_PAY' AND B.AUTH_STATUS_KT ='A' AND B.CONTRACT_ID =@CONTRACT_ID AND B.AUTH_STATUS_KT IS NOT NULL AND (B.REQ_PAY_ID IN(SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE RECORD_STATUS <> '0')) UNION SELECT '' AS PAY_ID,@CONTRACT_ID AS CONTRACT_ID,B.PAY_PHASE AS PAY_PHASE, C.APPROVE_DT_KT AS EXPECTED_DT,100 AS [PERCENT], B.AMT_PAY AS AMOUNT,'' AS PAY_STATUS,B.REASON AS NOTES,'' AS MAKER_ID,B.PAY_DT_REAL AS CREATE_DT,'A' AS AUTH_STATUS,'' AS CHECKER_ID,C.APPROVE_DT_KT AS APPROVE_DT, C.APPROVE_DT_KT AS PAY_DT, B.AMT_PAY AS PAY_AMOUNT,'' AS CONTRACT_CODE, '' AS REQUEST_ID,'' AS CONTRACT_PARENT, 0.0 AS AMT_ADVANCE, B.AMT_PAY AS AMT_PAY_DO, 'TTX' CDVAL,'' AS CONTENT, 0.0 AS AMT_LINK, 0.0 AS REMAIN_AMT FROM TR_REQ_PAY_PERIOD B INNER JOIN TR_REQ_PAYMENT C ON B.REQ_PAY_ID = C.REQ_PAY_ID WHERE B.PAY_TYPE ='PAY' --AND B.PROCESS ='1' -- chi hien cac phieu thanh toan khac hoan ung AND B.AUTH_STATUS_KT ='A' AND B.CONTRACT_ID =@CONTRACT_ID ORDER BY C.APPROVE_DT_KT DESC END ELSE BEGIN SELECT A.PAY_ID ,A.CONTRACT_ID ,A.PAY_PHASE ,A.EXPECTED_DT ,A.[PERCENT] ,A.AMOUNT ,A.PAY_STATUS ,A.NOTES ,A.RECORD_STATUS ,A.MAKER_ID ,A.CREATE_DT ,A.AUTH_STATUS ,A.CHECKER_ID ,A.APPROVE_DT ,A.PAY_DT ,A.PAY_AMOUNT ,A.REQUEST_ID ,A.CONTRACT_PARENT ,A.BID_ID, ISNULL(B.AMT_ADVANCE,0) AS AMT_ADVANCE, ISNULL(B2.AMT_PAY_DO,0) AS AMT_PAY_DO , ISNULL(C.CDVAL,(CASE WHEN ISNULL(B.AMT_ADVANCE,0) >0 AND ISNULL(B2.AMT_PAY_DO,0) =0 THEN 'DTU' WHEN ISNULL(B2.AMT_PAY_DO,0) >0 AND ISNULL((A.AMOUNT - ISNULL(B2.AMT_PAY_DO,0) - ISNULL(B.AMT_ADVANCE,0)-ISNULL(B3.AMT_LINK,0)),0) >0 THEN 'DTT' WHEN ISNULL((A.AMOUNT - ISNULL(B2.AMT_PAY_DO,0) - ISNULL(B.AMT_ADVANCE,0)-ISNULL(B3.AMT_LINK,0)),0) =0 THEN 'TTX' ELSE 'CTT' END)) AS CDVAL, C.CONTENT, ISNULL(B3.AMT_LINK,0) AS AMT_LINK, ISNULL((A.AMOUNT - ISNULL(B2.AMT_PAY_DO,0) - ISNULL(B.AMT_ADVANCE,0) - ISNULL(B3.AMT_LINK,0)),0) AS REMAIN_AMT ,TRC.CONTRACT_CODE FROM TR_CONTRACT_PAYMENT A LEFT JOIN TR_CONTRACT TRC ON A.CONTRACT_ID = TRC.CONTRACT_ID --- TINH SO TIEN DA TAM UNG LEFT JOIN ( SELECT P.PAY_ID , SUM(P.AMT_PAY_REAL) AMT_ADVANCE, MAX(P.AMT_PAY_DO) AMT_PAY_DO, MAX(P.AMT_PAY) AMT_PAY, MAX(P.PAYMENT_STATUS) PAYMENT_STATUS FROM TR_REQ_PAY_SCHEDULE P WHERE P.AUTH_STATUS_KT='A' AND TRN_TYPE='ADV_PAY' GROUP BY P.PAY_ID ) B ON A.PAY_ID = B.PAY_ID LEFT JOIN ( SELECT P.PAY_ID , ISNULL(MAX(P.AMT_ADVANCE),0) AMT_ADVANCE, ISNULL(SUM(P.AMT_PAY_REAL),0) AMT_PAY_DO, ISNULL(MAX(P.AMT_PAY),0) AMT_PAY, MAX(P.PAYMENT_STATUS) PAYMENT_STATUS FROM TR_REQ_PAY_SCHEDULE P WHERE P.AUTH_STATUS_KT='A' AND TRN_TYPE='PAY' GROUP BY P.PAY_ID ) B2 ON A.PAY_ID = B2.PAY_ID -- LEFT JOIN DE LAY SO TIEN LINK TOI PHIEU TAM UNG LEFT JOIN ( SELECT P.PAY_ID , ISNULL(MAX(P.AMT_REMAIN),0) AS AMT_LINK, SUM((P.AMT_PAY_REAL)) AMT_PAY_DO, ISNULL(MAX(P.AMT_PAY),0) AMT_PAY, MAX(P.PAYMENT_STATUS) PAYMENT_STATUS FROM TR_REQ_PAY_SCHEDULE P WHERE P.AUTH_STATUS_KT='A' AND TRN_TYPE='PAY' AND P.REQ_ADV_ID IS NOT NULL AND P.REQ_ADV_ID <>'' GROUP BY P.PAY_ID ) B3 ON A.PAY_ID = B3.PAY_ID LEFT JOIN CM_ALLCODE C ON C.CDVAL = B.PAYMENT_STATUS AND C.CDNAME = 'PAYMENT_STATUS' WHERE A.CONTRACT_ID= @CONTRACT_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_PLAN_TYPE_Ins]' GO ALTER PROCEDURE [dbo].[CM_PLAN_TYPE_Ins] @p_PLAN_TYPE_CODE varchar(15) = NULL, @p_PLAN_TYPE_NAME NVARCHAR(300) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(20) = NULL, @p_CREATE_DT varchar(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(20) = NULL, @p_APPROVE_DT varchar(20) = NULL AS BEGIN TRANSACTION --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( EXISTS ( SELECT * FROM dbo.CM_PLAN_TYPE WHERE PLAN_TYPE_CODE=@p_PLAN_TYPE_CODE)) SET @ERRORSYS = 'PLCODE-0001' IF @ERRORSYS <> '' BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' PLAN_TYPE_ID, N'Mã loại ngân sách đã tồn tại' ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '-1' END DECLARE @l_PLAN_TYPE_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'CM_PLAN_TYPE', @l_PLAN_TYPE_ID out IF @l_PLAN_TYPE_ID='' OR @l_PLAN_TYPE_ID IS NULL GOTO ABORT INSERT INTO dbo.CM_PLAN_TYPE ( PLAN_TYPE_ID, PLAN_TYPE_CODE, PLAN_TYPE_NAME, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, EDITER_ID, EDIT_DT ) VALUES ( @l_PLAN_TYPE_ID, -- PLAN_TYPE - varchar(20) @p_PLAN_TYPE_CODE, -- PLAN_TYPE_CODE - varchar(20) @p_PLAN_TYPE_NAME, -- PLAN_TYPE_NAME - nvarchar(200) @p_NOTES, -- NOTES - nvarchar(1000) @p_RECORD_STATUS, -- RECORD_STATUS - varchar(1) @p_AUTH_STATUS, -- AUTH_STATUS - varchar(1) @p_MAKER_ID, -- MAKER_ID - varchar(15) CONVERT(DATETIME,@p_CREATE_DT,103), -- CREATE_DT - datetime @p_MAKER_ID, -- EDITER_ID - varchar(15) CONVERT(DATETIME,@p_CREATE_DT,103) -- EDIT_DT - datetime ) IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @l_PLAN_TYPE_ID PLAN_TYPE_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' PLAN_TYPE_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CAR_DRIVE_App]' GO ALTER PROCEDURE [dbo].[CAR_DRIVE_App] @p_CAR_DR_ID VARCHAR(15) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(15) = NULL AS DECLARE @sErrorCode VARCHAR(20) DECLARE @aStatus VARCHAR(1) --Put validation here SET @sErrorCode = '' SELECT @aStatus = [AUTH_STATUS] FROM CAR_DRIVE WHERE CAR_DR_ID = @p_CAR_DR_ID IF @aStatus = 'A' SET @sErrorCode = 'CARD-00002' IF @sErrorCode <> '' BEGIN SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode RETURN 0 END DECLARE @ERRORSYS NVARCHAR(MAX),@CAR_ID VARCHAR(20),@REQ_CAR_ID VARCHAR(30) SELECT @CAR_ID=CAR_ID,@REQ_CAR_ID = REQ_CAR_ID FROM dbo.CAR_DRIVE WHERE CAR_DR_ID =@p_CAR_DR_ID select @ERRORSYS = STUFF(( SELECT ', ' + REQ_CODE FROM TR_REQUEST_CAR WHERE START_TIME_TRIP<(SELECT START_TIME_TRIP FROM dbo.TR_REQUEST_CAR WHERE REQ_ID = @REQ_CAR_ID) AND CAR_ID = @CAR_ID AND REQ_ID NOT IN (SELECT REQ_CAR_ID FROM dbo.CAR_DRIVE A WHERE CAR_ID=@CAR_ID) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') --KIỂM TRA CÁC PHIẾU XE TRƯỚC THỜI ĐIỂM ĐI ĐÃ ĐƯỢC TẠO IF (@ERRORSYS IS NOT NULL) BEGIN SELECT '-1' Result, N'Bạn cần tạo vận hành cho các phiếu yêu cầu sau: '+ @ERRORSYS ErrorDesc RETURN '-1' END SET @ERRORSYS = STUFF(( SELECT ', ' + cd.CAR_DR_ID FROM TR_REQUEST_CAR trc LEFT JOIN dbo.CAR_DRIVE cd ON trc.REQ_ID =cd.REQ_CAR_ID WHERE START_TIME_TRIP<(SELECT START_TIME_TRIP FROM dbo.TR_REQUEST_CAR WHERE REQ_ID = @REQ_CAR_ID) AND trc.CAR_ID = @CAR_ID AND REQ_ID IN (SELECT REQ_CAR_ID FROM dbo.CAR_DRIVE A WHERE CAR_ID=@CAR_ID AND A.AUTH_STATUS<>'A') FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF (@ERRORSYS IS NOT NULL) BEGIN SELECT '-1' Result, N'Bạn cần duyệt cho các phiếu vận hành sau: '+ @ERRORSYS ErrorDesc RETURN '-1' END BEGIN TRANSACTION BEGIN UPDATE CAR_DRIVE SET AUTH_STATUS = @p_AUTH_STATUS, CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(datetime, @p_APPROVE_DT, 103) WHERE CAR_DR_ID = @p_CAR_DR_ID IF @@Error <> 0 GOTO ABORT UPDATE TR_REQUEST_CAR SET CAR_DR_ID =@p_CAR_DR_ID WHERE REQ_ID = @REQ_CAR_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'Altering [dbo].[PL_PROCESS_SEARCH]' GO /* SELECT * FROM PL_TRADEDETAIL WHERE PLAN_ID = 'PLM000000000143' select * from TR_CONTRACT_DT WHERE CONTRACT_ID = 'TRC000000000039' [TR_PO_GOODS_Search] 0,'','','','','',NULL,'','PLM000000000143','TRC000000000039','','','' exec [TR_PO_GOODS_Search] 1,'','','','','',NULL,'','PLM000000000003','','','','' exec [TR_PO_GOODS_Search] 0,'','','','','',NULL,'','PLM000000000003','','','','' SELECT * FROM TR_CONTRACT WHERE CONTRACT_TYPE = '1' SELECT * FROM PL_MASTER */ ALTER PROCEDURE [dbo].[PL_PROCESS_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 + ' - ' + PR.CHECKER_ID 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 ORDER BY PR.ID DESC END --EXEC CM_GOODS_Search '','','','','',0,'','','','','','','','',100s GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_REQUEST_TRANSFER_SendApp]' GO ALTER PROCEDURE [dbo].[PL_REQUEST_TRANSFER_SendApp] @p_REQ_ID VARCHAR(20), @p_PROCESS_ID VARCHAR(20), @p_TLNAME VARCHAR(20), @p_MAKER_ID VARCHAR(20) AS BEGIN TRANSACTION DECLARE @GD_TYPE_ID_NOT_VALIDATE VARCHAR(15) SET @GD_TYPE_ID_NOT_VALIDATE =(SELECT TOP 1 GD_TYPE_ID FROM CM_GOODSTYPE WHERE GD_TYPE_CODE ='OS') IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (PL_BASED_ID IS NULL OR PL_BASED_ID =''))) BEGIN --- KIEM TRA NGAN SACH LUCTV 18052020 DECLARE @ERROR BIT ,@EROOR_DES NVARCHAR(500) SELECT @ERROR=ERROR, @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'APPNEW','PL_REQUEST_DOC',@p_TLNAME,@p_PROCESS_ID) IF(@ERROR=1) BEGIN ROLLBACK TRANSACTION; SELECT '-1' Result, @EROOR_DES ErrorDesc RETURN '-1'; END ----- DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10), @BRANCH_CREATE_TYPE VARCHAR(10) IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND EXISTS(SELECT TLNANME FROM dbo.TL_USER WHERE TLNANME=SIGN_USER AND BRANCH_CREATE=TLSUBBRID AND (RoleName='TPGD' OR RoleName='GDDV')))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Người ký nháy không được là trường phòng, trưởng đơn vị.' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND ( CAST(REQ_DT AS DATE) > CAST(GETDATE() AS DATE))) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Ngày tạo không được lớn hơn ngày hiện tại' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (REQ_NAME IS NULL OR REQ_NAME='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Tên tờ trình bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND ( REQ_REASON IS NULL OR REQ_REASON='')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lý do trình chủ trương bắt buộc nhập' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (TOTAL_AMT IS NULL OR TOTAL_AMT = 0)) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới điều chuyển ngân sách: Vui lòng nhập số tiền điều chuyển' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM PL_REQUEST_DOC prd LEFT JOIN CM_BRANCH cb ON prd.BRANCH_ID = cb.BRANCH_ID WHERE prd.REQ_ID = @p_REQ_ID AND cb.BRANCH_CODE IN ('799','899','699'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Không được chọn đơn vị tạo tờ trình là: 799, 899, 699' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER A LEFT JOIN CM_BRANCH cb ON A.FR_BRN_ID = cb.BRANCH_ID LEFT JOIN CM_DEPARTMENT cd ON A.FR_DEP_ID = cd.DEP_ID WHERE REQ_DOC_ID=@p_REQ_ID AND ((FR_BRN_ID = 'DV0001' AND FR_DEP_ID IN ('DEP000000000001','DEP000000000024')) OR cb.BRANCH_CODE IN ('DV0003','000','799','899','699')))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới điều chuyển ngân sách: Đơn vị chuyển không hợp lệ, vui lòng không chọn Hội sở - Chung, Chung - CNTT, KV Tổng, KV Khác' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_BRN_ID=@BRANCH_CREATE AND (FR_GOOD_ID IS NULL OR FR_GOOD_ID='') AND ((FR_DEP_ID=@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') AND (FR_DEP_ID IS NULL OR FR_DEP_ID=''))) )) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Bạn là đơn vị chuyển ngân sách, vui lòng chọn hạn mục ngân sách chuyển' ErrorDesc RETURN '-1' END DECLARE lstTransfer CURSOR FOR SELECT FR_GOOD_ID,TO_GOOD_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID OPEN lstTransfer DECLARE @FR_GOOD_ID VARCHAR(20),@TO_GOOD_ID VARCHAR(20) FETCH NEXT FROM lstTransfer INTO @FR_GOOD_ID,@TO_GOOD_ID WHILE @@FETCH_STATUS=0 BEGIN IF(@FR_GOOD_ID IS NOT NULL AND @FR_GOOD_ID<>'') BEGIN DECLARE @FR_GD_TYPE VARCHAR(20),@TO_GD_TYPE VARCHAR(20) SET @FR_GD_TYPE =(SELECT GT.GD_TYPE_ID FROM ( SELECT GD_CODE FROM dbo.CM_GOODS WHERE GD_ID=@FR_GOOD_ID ) CG LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%') SET @TO_GD_TYPE =(SELECT GT.GD_TYPE_ID FROM ( SELECT GD_CODE FROM dbo.CM_GOODS WHERE GD_ID=@TO_GOOD_ID ) CG LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%') IF(NOT EXISTS(SELECT * FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID= @FR_GD_TYPE AND @TO_GD_TYPE IN (SELECT value FROM dbo.wsiSplit(NOTES,';')) ) ) BEGIN DECLARE @FR_GD_TYPE_NAME NVARCHAR(100),@TO_GD_TYPE_NAME NVARCHAR(100) SET @FR_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@FR_GD_TYPE) SET @TO_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@TO_GD_TYPE) ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Không được điều chuyển từ ' + @FR_GD_TYPE_NAME +N' sang ' + @TO_GD_TYPE_NAME ErrorDesc RETURN '-1' CLOSE lstTransfer DEALLOCATE lstTransfer END END FETCH NEXT FROM lstTransfer INTO @FR_GOOD_ID,@TO_GOOD_ID END CLOSE lstTransfer DEALLOCATE lstTransfer END UPDATE dbo.PL_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID SELECT @BRANCH_ID =BRANCH_ID,@DEP_ID=DEP_ID,@BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID) SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE) --IF(@BRANCH_TYPE='PGD') -- SET @BRANCH_ID=(SELECT BRANCH_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID) DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID ---KIEM TRA XEM CO CAP PHE DUYET TRUNG GIAN HAY KHONG 20-05-2020 LUCTV IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>'')) BEGIN DECLARE @BRANCH_SIGN_ID VARCHAR(20),@DEP_SIGN_ID VARCHAR(20),@BRANCH_SIGN_TYPE VARCHAR(10),@ROLE_SIGN VARCHAR(20) SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) UPDATE dbo.PL_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN', TOTAL_AMT =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM PL_REQUEST_TRANSFER WHERE REQ_DOC_ID =@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'SIGN', -- PROCESS_ID - varchar(10) 'C', -- STATUS - varchar(5) @ROLE_SIGN, -- ROLE_USER - varchar(50) @BRANCH_SIGN_ID, CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END, -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime '', -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', -- DVDM_ID - varchar(15) N'Chờ cấp phê duyệt trung gian xác nhận phiếu', -- NOTES - nvarchar(500) NULL -- IS_HAS_CHILD - bit ) END ELSE -- NGUOC LAI KHONG CO CAP PHE DUYET TRUNG GIAN BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'APPNEW', -- PROCESS_ID - varchar(10) 'C', -- STATUS - varchar(5) 'GDDV', -- ROLE_USER - varchar(50) @BRANCH_ID, @DEP_ID, -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime '', -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', -- DVDM_ID - varchar(15) -- N'Chờ trưởng đơn vị phê duyệt', -- NOTES - nvarchar(500) N'Chờ trưởng đơn vị phê duyệt' , NULL -- IS_HAS_CHILD - bit ) END INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) --@p_PROCESS_ID, -- PROCESS_ID - varchar(10) 'SEND', @p_TLNAME, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Người tạo tờ trình gửi phê duyệt thành công' , -- PROCESS_DESC - nvarchar(1000) N'Nhân viên gửi phê duyệt ' -- NOTES - nvarchar(1000) ) IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='SIGN')) BEGIN SELECT '0' as Result,'' REQ_CODE,''REQ_ID, (SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) Attr1, N'Tờ trình số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)+N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc RETURN '0' END ELSE BEGIN SELECT '0' as Result,'' REQ_CODE,''REQ_ID, (SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) Attr1, N'Tờ trình số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)+N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc RETURN '0' END ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_BRANCH_Ins]' GO ALTER PROCEDURE [dbo].[CM_BRANCH_Ins] @p_FATHER_ID varchar(15) = NULL, @p_IS_POTENTIAL varchar(1) = NULL, @p_BRANCH_CODE varchar(10) = NULL, @p_BRANCH_NAME nvarchar(200) = NULL, @p_REGION_ID varchar(15) = NULL, @p_BRANCH_TYPE varchar(5) = NULL, @p_ADDR nvarchar(200) = NULL, @p_TEL varchar(20) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_TAX_NO varchar(50) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_DAO_CODE VARCHAR(40) = NULL, @p_DAO_NAME NVARCHAR(500) = NULL, @p_PROVICE NVARCHAR(500) = NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( EXISTS ( SELECT * FROM CM_BRANCH WHERE BRANCH_CODE = @p_BRANCH_CODE)) SET @ERRORSYS = 'CMCD-00001' ELSE IF( EXISTS (SELECT * FROM CM_BRANCH WHERE @p_TAX_NO IS NOT NULL AND @p_TAX_NO != '' AND TAX_NO = @p_TAX_NO)) SET @ERRORSYS = 'BRN-001' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END BEGIN TRANSACTION DECLARE @l_BRANCH_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'CM_BRANCH', @l_BRANCH_ID out IF @l_BRANCH_ID='' OR @l_BRANCH_ID IS NULL GOTO ABORT INSERT INTO CM_BRANCH([BRANCH_ID],[FATHER_ID],[IS_POTENTIAL],[BRANCH_CODE],[TAX_NO],[BRANCH_NAME],[REGION_ID],[BRANCH_TYPE],[ADDR],[TEL],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[DAO_CODE],[DAO_NAME],[PROVICE]) VALUES(@l_BRANCH_ID ,@p_FATHER_ID, @p_IS_POTENTIAL ,@p_BRANCH_CODE, @p_TAX_NO ,@p_BRANCH_NAME ,@p_REGION_ID ,@p_BRANCH_TYPE ,@p_ADDR ,@p_TEL ,@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_DAO_CODE,@p_DAO_NAME,@p_PROVICE) IF @@Error <> 0 GOTO ABORT DECLARE @DMMS_ID VARCHAR(20) -- KIỂM TRA XEM ĐÃ KHAI BÁO ĐƠN VỊ / CHI NHÁNH NÀY TRONG CM_DMMS HAY CHƯA IF(NOT EXISTS (SELECT * FROM CM_DMMS WHERE BRANCH_ID =@l_BRANCH_ID)) BEGIN EXEC SYS_CodeMasters_Gen 'CM_DMMS', @DMMS_ID out INSERT INTO CM_DMMS (DMMS_ID,BRANCH_ID, DEP_ID,DVDM_ID) VALUES (@DMMS_ID,@l_BRANCH_ID,(SELECT TOP 1 DEP_ID FROM CM_DEPARTMENT WHERE BRANCH_ID =@l_BRANCH_ID),'') END COMMIT TRANSACTION SELECT '0' as Result, @l_BRANCH_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'Altering [dbo].[DB_BUDGET_PIE]' GO -- BIEU DO O3 NGAN SACH ALTER PROC [dbo].[DB_BUDGET_PIE] @p_USER_LOGIN VARCHAR(250) = NULL, @p_YEAR VARCHAR(4) = NULL, -- YEAR @p_DATE VARCHAR(20) = NULL, -- DD/MM/YYYY @p_GD_ID VARCHAR(15) = NULL, -- GD_NAME @p_PLAN_TYPE_ID VARCHAR(15) = NULL, -- BUDGET TYPE @p_GD_TYPE_ID VARCHAR(15) = NULL, -- BUDGET GROUP @p_BRANCH_ID VARCHAR(15) = NULL, -- BRANCH NAME @p_FILTER VARCHAR(15) = NULL -- BRANCH NAME AS BEGIN --SELECT -- ROUND( SUM(SD.NS_SU_DUNG)/1000000000 ,2)AS [MADE], -- ROUND(( SUM(A.AMT_APP) + SUM (NS_NHAN.NS_RECIVER) - SUM (NS_CHO.NS_TRANSFER))/1000000000,2) AS [DOING] , -- --SUM(NS_CHO.NS_TRANSFER) AS NS_TRANSFER , SUM(NS_NHAN.NS_RECIVER) AS NS_TRANSFER, -- --SUM(NS_SD_TT.NS_SD_REAL) AS DA_THUC_HIEN, -- ROUND(( SUM(A.AMT_APP) + SUM (NS_NHAN.NS_RECIVER) - SUM (NS_CHO.NS_TRANSFER) - SUM(SD.NS_SU_DUNG) -SUM(NS_SD_TT.NS_SD_REAL))/1000000000 ,2) AS [RESIDUAL] -- FROM PL_TRADEDETAIL -- A -- LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID -- LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID -- LEFT JOIN CM_GOODSTYPE GT ON GT.GD_TYPE_CODE IN (SELECT G.GD_TYPE_CODE FROM WSISPLIT(G.GD_CODE,'.') J JOIN CM_GOODSTYPE G ON G.GD_TYPE_CODE = J.VALUE) -- LEFT JOIN -- ( -- SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_SU_DUNG -- FROM PL_REQUEST_DOC_DT A -- INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID -- WHERE 1=1 -- --AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103) -- AND B.PROCESS_ID ='APPROVE' -- GROUP BY A.TRADE_ID -- ) SD ON SD.TRADE_ID = A.TRADE_ID -- ---- NS MANG ĐI CHO -- LEFT JOIN -- ( -- SELECT A.FR_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_TRANSFER -- FROM PL_REQUEST_TRANSFER A -- INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID -- WHERE 1=1 -- --AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103) -- AND B.PROCESS_ID ='APPROVE' -- GROUP BY A.FR_TRADE_ID -- ) NS_CHO ON NS_CHO.FR_TRADE_ID = A.TRADE_ID -- ---- NS NHẬN ĐƯỢC -- LEFT JOIN -- ( -- SELECT A.TO_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_RECIVER -- --- BẢNG SỬ DỤNG NGÂN SÁCH -- FROM PL_REQUEST_TRANSFER A -- --- BẢNG CHỨA THÔNG TIN CỘT MỐC NGÀY HOÀN TẤT TỜ TRÌNH -- INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID -- WHERE 1=1 -- --AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103) -- AND B.PROCESS_ID ='APPROVE' -- GROUP BY A.TO_TRADE_ID -- ) NS_NHAN ON NS_NHAN.TO_TRADE_ID = A.TRADE_ID -- --- NS SỬ DỤNG THỰC TẾ -- LEFT JOIN -- ( -- SELECT A.TRADE_ID, SUM (A.AMT_EXE) AS NS_SD_REAL -- FROM TR_REQ_PAY_BUDGET A -- INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID -- WHERE 1=1 -- --AND B.APPROVE_DT_KT <= CONVERT(datetime,@p_DATE,103) -- AND B.AUTH_STATUS_KT ='A' -- AND -- ( -- EXISTS( -- SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID -- IN -- (SELECT PLAN_TYPE_ID FROM PL_MASTER PLM -- LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = GD_ID -- WHERE PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID -- AND PLM.PLAN_ID = TRD.PLAN_ID -- ) -- )OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '' -- ) -- AND A.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' -- --AND -- GROUP BY A.TRADE_ID -- ) NS_SD_TT ON NS_SD_TT.TRADE_ID = A.TRADE_ID -- WHERE 1=1 -- AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') -- AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '') -- AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '') -- AND (YEAR(M.YEAR)=@p_YEAR OR @p_YEAR IS NULL OR @p_YEAR = '' ) DECLARE @TONG_CHI_PHI FLOAT = 0 ---------------TỔNG CHI PHÍ------------ SELECT @TONG_CHI_PHI = (SUM(SD.NS_SU_DUNG) + ( SUM(NSDT.NS_DANG_TRINH)) + ( SUM(A.AMT_APP) + SUM (NS_NHAN.NS_RECIVER) - SUM (NS_CHO.NS_TRANSFER) - SUM(SD.NS_SU_DUNG) -SUM(NSDT.NS_DANG_TRINH)) ) FROM PL_TRADEDETAIL A LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID LEFT JOIN CM_GOODSTYPE GT ON GT.GD_TYPE_CODE IN (SELECT G.GD_TYPE_CODE FROM WSISPLIT(G.GD_CODE,'.') J JOIN CM_GOODSTYPE G ON G.GD_TYPE_CODE = J.VALUE) LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_SU_DUNG FROM PL_REQUEST_DOC_DT A INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID WHERE 1=1 AND ((@p_FILTER = 'cumulative' AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR))) AND B.PROCESS_ID ='APPROVE' GROUP BY A.TRADE_ID ) SD ON SD.TRADE_ID = A.TRADE_ID LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_DANG_TRINH FROM PL_REQUEST_DOC_DT A INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID INNER JOIN PL_REQUEST_PROCESS D ON B.REQ_ID = D.REQ_ID AND D.[STATUS] = 'C' WHERE ((@p_FILTER = 'cumulative' AND D.APPROVE_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(D.APPROVE_DT) <= CONVERT(INT,@p_YEAR))) AND D.PROCESS_ID NOT IN ('APPROVE','APPNEW') GROUP BY A.TRADE_ID ) NSDT ON NSDT.TRADE_ID = A.TRADE_ID ---- NS MANG ĐI CHO LEFT JOIN ( SELECT A.FR_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_TRANSFER FROM PL_REQUEST_TRANSFER A INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID WHERE 1=1 AND ((@p_FILTER = 'cumulative' AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR))) AND B.PROCESS_ID ='APPROVE' GROUP BY A.FR_TRADE_ID ) NS_CHO ON NS_CHO.FR_TRADE_ID = A.TRADE_ID ---- NS NHẬN ĐƯỢC LEFT JOIN ( SELECT A.TO_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_RECIVER --- BẢNG SỬ DỤNG NGÂN SÁCH FROM PL_REQUEST_TRANSFER A --- BẢNG CHỨA THÔNG TIN CỘT MỐC NGÀY HOÀN TẤT TỜ TRÌNH INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID WHERE 1=1 AND ((@p_FILTER = 'cumulative' AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR))) AND B.PROCESS_ID ='APPROVE' GROUP BY A.TO_TRADE_ID ) NS_NHAN ON NS_NHAN.TO_TRADE_ID = A.TRADE_ID --- NS SỬ DỤNG THỰC TẾ LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.AMT_EXE) AS NS_SD_REAL FROM TR_REQ_PAY_BUDGET A INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID WHERE 1=1 --AND B.APPROVE_DT_KT <= CONVERT(datetime,@p_DATE,103) AND B.AUTH_STATUS_KT ='A' AND ( EXISTS( SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID IN (SELECT PLAN_TYPE_ID FROM PL_MASTER PLM LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = GD_ID WHERE PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID AND PLM.PLAN_ID = TRD.PLAN_ID ) )OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '' ) AND A.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' --AND GROUP BY A.TRADE_ID ) NS_SD_TT ON NS_SD_TT.TRADE_ID = A.TRADE_ID WHERE 1=1 AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '') AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '') AND (YEAR(M.YEAR)=@p_YEAR OR @p_YEAR IS NULL OR @p_YEAR = '' ) ---------------------------TỔNG CHI PHÍ ----------- DECLARE @RESULT TABLE( [MADE] FLOAT, [DOING] FLOAT, [RESIDUAL] FLOAT ) INSERT INTO @RESULT SELECT SUM(SD.NS_SU_DUNG) AS [MADE], SUM(NSDT.NS_DANG_TRINH) AS [DOING] , --SUM(NS_CHO.NS_TRANSFER) AS NS_TRANSFER , SUM(NS_NHAN.NS_RECIVER) AS NS_TRANSFER, --SUM(NS_SD_TT.NS_SD_REAL) AS DA_THUC_HIEN, ( SUM(A.AMT_APP) + SUM (NS_NHAN.NS_RECIVER) - SUM (NS_CHO.NS_TRANSFER) - SUM(SD.NS_SU_DUNG) -SUM(NSDT.NS_DANG_TRINH)) AS [RESIDUAL] FROM PL_TRADEDETAIL A LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID LEFT JOIN CM_GOODSTYPE GT ON GT.GD_TYPE_CODE IN (SELECT G.GD_TYPE_CODE FROM WSISPLIT(G.GD_CODE,'.') J JOIN CM_GOODSTYPE G ON G.GD_TYPE_CODE = J.VALUE) LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_SU_DUNG FROM PL_REQUEST_DOC_DT A INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID WHERE 1 = 1 AND ((@p_FILTER = 'cumulative' AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR))) AND B.PROCESS_ID ='APPROVE' GROUP BY A.TRADE_ID ) SD ON SD.TRADE_ID = A.TRADE_ID LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_DANG_TRINH FROM PL_REQUEST_DOC_DT A INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID INNER JOIN PL_REQUEST_PROCESS D ON B.REQ_ID = D.REQ_ID AND D.[STATUS] = 'C' WHERE ((@p_FILTER = 'cumulative' AND D.APPROVE_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(D.APPROVE_DT) <= CONVERT(INT,@p_YEAR))) AND D.PROCESS_ID NOT IN ('APPROVE','APPNEW') GROUP BY A.TRADE_ID ) NSDT ON NSDT.TRADE_ID = A.TRADE_ID ---- NS MANG ĐI CHO LEFT JOIN ( SELECT A.FR_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_TRANSFER FROM PL_REQUEST_TRANSFER A INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID WHERE 1=1 AND ((@p_FILTER = 'cumulative' AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR))) AND B.PROCESS_ID ='APPROVE' GROUP BY A.FR_TRADE_ID ) NS_CHO ON NS_CHO.FR_TRADE_ID = A.TRADE_ID ---- NS NHẬN ĐƯỢC LEFT JOIN ( SELECT A.TO_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_RECIVER --- BẢNG SỬ DỤNG NGÂN SÁCH FROM PL_REQUEST_TRANSFER A --- BẢNG CHỨA THÔNG TIN CỘT MỐC NGÀY HOÀN TẤT TỜ TRÌNH INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID WHERE 1=1 AND ((@p_FILTER = 'cumulative' AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR))) AND B.PROCESS_ID ='APPROVE' GROUP BY A.TO_TRADE_ID ) NS_NHAN ON NS_NHAN.TO_TRADE_ID = A.TRADE_ID --- NS SỬ DỤNG THỰC TẾ LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.AMT_EXE) AS NS_SD_REAL FROM TR_REQ_PAY_BUDGET A INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID WHERE 1=1 --AND B.APPROVE_DT_KT <= CONVERT(datetime,@p_DATE,103) AND B.AUTH_STATUS_KT ='A' AND ( EXISTS( SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID IN (SELECT PLAN_TYPE_ID FROM PL_MASTER PLM LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = GD_ID WHERE PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID AND PLM.PLAN_ID = TRD.PLAN_ID ) )OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '' ) AND A.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' --AND GROUP BY A.TRADE_ID ) NS_SD_TT ON NS_SD_TT.TRADE_ID = A.TRADE_ID WHERE 1=1 AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '') AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '') AND (YEAR(M.YEAR)=@p_YEAR OR @p_YEAR IS NULL OR @p_YEAR = '' ) ----------CHUYỂN SANG %----------- UPDATE @RESULT SET MADE = ROUND(MADE * 100 / @TONG_CHI_PHI,2), DOING = ROUND(DOING * 100 / @TONG_CHI_PHI,2), RESIDUAL = ROUND(RESIDUAL * 100 / @TONG_CHI_PHI,2) ----------CHUYỂN SANG %----------- SELECT * FROM @RESULT END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[DB_BUDGET_BAR]' GO -- BIEU DO O1 NGAN SACH ALTER PROC [dbo].[DB_BUDGET_BAR] @p_USER_LOGIN VARCHAR(250) = NULL, @p_YEAR VARCHAR(4) = NULL, -- YEAR @p_DATE VARCHAR(20) = NULL, -- DD/MM/YYYY @p_GD_ID VARCHAR(15) = NULL, -- GD_NAME @p_PLAN_TYPE_ID VARCHAR(15) = NULL, -- BUDGET TYPE @p_GD_TYPE_ID VARCHAR(15) = NULL, -- BUDGET GROUP @p_BRANCH_ID VARCHAR(15) = NULL, -- BRANCH NAME @p_FILTER VARCHAR(15) = NULL AS BEGIN IF(@p_FILTER ='cumulative') BEGIN --table 1 SELECT YEAR( CONVERT(datetime,@p_DATE,103)) AS [YEAR], ROUND( SUM(A.AMT_APP) /1000000000,2)AS [PLAN] FROM PL_TRADEDETAIL A LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID LEFT JOIN CM_GOODSTYPE GT ON GT.GD_TYPE_CODE IN (SELECT G.GD_TYPE_CODE FROM WSISPLIT(G.GD_CODE,'.') J JOIN CM_GOODSTYPE G ON G.GD_TYPE_CODE = J.VALUE) WHERE 1=1 AND (M.YEAR = YEAR( CONVERT(datetime,@p_DATE,103))) AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '') AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '') --table2 SELECT YEAR( CONVERT(datetime,@p_DATE,103)) AS [YEAR], '' AS [MONTH], ROUND( SUM(SD.NS_SU_DUNG)/1000000000 ,2)AS [MADE], ROUND( SUM(NSDT.NS_DANG_TRINH)/1000000000,2) AS [DOING], --SUM(NS_CHO.NS_TRANSFER) AS NS_TRANSFER , SUM(NS_NHAN.NS_RECIVER) AS NS_TRANSFER, --SUM(NS_SD_TT.NS_SD_REAL) AS DA_THUC_HIEN, ROUND(( SUM(A.AMT_APP) + ISNULL(SUM (NS_NHAN.NS_RECIVER),0) - ISNULL(SUM(NS_CHO.NS_TRANSFER),0) - ISNULL(SUM(SD.NS_SU_DUNG),0) - ISNULL(SUM(NSDT.NS_DANG_TRINH),0))/1000000000 ,2) AS [RESIDUAL] FROM PL_TRADEDETAIL A LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID LEFT JOIN CM_GOODSTYPE GT ON GT.GD_TYPE_CODE IN (SELECT G.GD_TYPE_CODE FROM WSISPLIT(G.GD_CODE,'.') J JOIN CM_GOODSTYPE G ON G.GD_TYPE_CODE = J.VALUE) LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_SU_DUNG FROM PL_REQUEST_DOC_DT A INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID WHERE B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103) AND B.PROCESS_ID ='APPROVE' GROUP BY A.TRADE_ID ) SD ON SD.TRADE_ID = A.TRADE_ID LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_DANG_TRINH FROM PL_REQUEST_DOC_DT A INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID INNER JOIN PL_REQUEST_PROCESS D ON B.REQ_ID = D.REQ_ID AND D.[STATUS] = 'C' WHERE D.APPROVE_DT <= CONVERT(datetime,@p_DATE,103) AND D.PROCESS_ID NOT IN ('APPROVE','APPNEW') GROUP BY A.TRADE_ID ) NSDT ON NSDT.TRADE_ID = A.TRADE_ID ---- NS MANG ĐI CHO LEFT JOIN ( SELECT A.FR_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_TRANSFER FROM PL_REQUEST_TRANSFER A INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID WHERE B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103) AND B.PROCESS_ID ='APPROVE' GROUP BY A.FR_TRADE_ID ) NS_CHO ON NS_CHO.FR_TRADE_ID = A.TRADE_ID ---- NS NHẬN ĐƯỢC LEFT JOIN ( SELECT A.TO_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_RECIVER --- BẢNG SỬ DỤNG NGÂN SÁCH FROM PL_REQUEST_TRANSFER A --- BẢNG CHỨA THÔNG TIN CỘT MỐC NGÀY HOÀN TẤT TỜ TRÌNH INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID WHERE B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103) AND B.PROCESS_ID ='APPROVE' GROUP BY A.TO_TRADE_ID ) NS_NHAN ON NS_NHAN.TO_TRADE_ID = A.TRADE_ID --- NS SỬ DỤNG THỰC TẾ LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.AMT_EXE) AS NS_SD_REAL FROM TR_REQ_PAY_BUDGET A INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID WHERE B.APPROVE_DT_KT <= CONVERT(datetime,@p_DATE,103) AND B.AUTH_STATUS_KT ='A' AND ( EXISTS( SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID IN ( SELECT PLAN_TYPE_ID FROM PL_MASTER PLM LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = GD_ID WHERE PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID AND PLM.PLAN_ID = TRD.PLAN_ID ) )OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '' ) AND A.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' --AND GROUP BY A.TRADE_ID ) NS_SD_TT ON NS_SD_TT.TRADE_ID = A.TRADE_ID WHERE 1=1 AND (M.YEAR = YEAR( CONVERT(datetime,@p_DATE,103))) AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '') AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '') END IF(@p_FILTER ='year') BEGIN --table 1 SELECT CONVERT(INT,@p_YEAR) AS [YEAR], ROUND( SUM(A.AMT_APP) /1000000000,2)AS [PLAN] FROM PL_TRADEDETAIL A LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID LEFT JOIN CM_GOODSTYPE GT ON GT.GD_TYPE_CODE IN (SELECT G.GD_TYPE_CODE FROM WSISPLIT(G.GD_CODE,'.') J JOIN CM_GOODSTYPE G ON G.GD_TYPE_CODE = J.VALUE) WHERE 1=1 AND (M.YEAR = CONVERT(INT,@p_YEAR)) AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '') AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '') --table2 SELECT CONVERT(INT,@p_YEAR) AS [YEAR], '' AS [MONTH], ROUND( SUM(SD.NS_SU_DUNG)/1000000000 ,2)AS [MADE], ROUND( SUM(NSDT.NS_DANG_TRINH)/1000000000,2) AS [DOING], --SUM(NS_CHO.NS_TRANSFER) AS NS_TRANSFER , SUM(NS_NHAN.NS_RECIVER) AS NS_TRANSFER, --SUM(NS_SD_TT.NS_SD_REAL) AS DA_THUC_HIEN, ROUND(( SUM(A.AMT_APP) + ISNULL(SUM (NS_NHAN.NS_RECIVER),0) - ISNULL(SUM(NS_CHO.NS_TRANSFER),0) - ISNULL(SUM(SD.NS_SU_DUNG),0) - ISNULL(SUM(NSDT.NS_DANG_TRINH),0))/1000000000 ,2) AS [RESIDUAL] FROM PL_TRADEDETAIL A LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID LEFT JOIN CM_GOODSTYPE GT ON GT.GD_TYPE_CODE IN (SELECT G.GD_TYPE_CODE FROM WSISPLIT(G.GD_CODE,'.') J JOIN CM_GOODSTYPE G ON G.GD_TYPE_CODE = J.VALUE) LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_SU_DUNG FROM PL_REQUEST_DOC_DT A INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID WHERE YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR) AND B.PROCESS_ID ='APPROVE' GROUP BY A.TRADE_ID ) SD ON SD.TRADE_ID = A.TRADE_ID LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_DANG_TRINH FROM PL_REQUEST_DOC_DT A INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID INNER JOIN PL_REQUEST_PROCESS D ON B.REQ_ID = D.REQ_ID AND D.[STATUS] = 'C' WHERE YEAR(D.APPROVE_DT) <= CONVERT(INT,@p_YEAR) AND D.PROCESS_ID NOT IN ('APPROVE','APPNEW') GROUP BY A.TRADE_ID ) NSDT ON NSDT.TRADE_ID = A.TRADE_ID ---- NS MANG ĐI CHO LEFT JOIN ( SELECT A.FR_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_TRANSFER FROM PL_REQUEST_TRANSFER A INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID WHERE YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR) AND B.PROCESS_ID ='APPROVE' GROUP BY A.FR_TRADE_ID ) NS_CHO ON NS_CHO.FR_TRADE_ID = A.TRADE_ID ---- NS NHẬN ĐƯỢC LEFT JOIN ( SELECT A.TO_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_RECIVER --- BẢNG SỬ DỤNG NGÂN SÁCH FROM PL_REQUEST_TRANSFER A --- BẢNG CHỨA THÔNG TIN CỘT MỐC NGÀY HOÀN TẤT TỜ TRÌNH INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID WHERE YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR) AND B.PROCESS_ID ='APPROVE' GROUP BY A.TO_TRADE_ID ) NS_NHAN ON NS_NHAN.TO_TRADE_ID = A.TRADE_ID --- NS SỬ DỤNG THỰC TẾ LEFT JOIN ( SELECT A.TRADE_ID, SUM (A.AMT_EXE) AS NS_SD_REAL FROM TR_REQ_PAY_BUDGET A INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID WHERE YEAR(B.APPROVE_DT_KT) <= CONVERT(INT,@p_YEAR) AND B.AUTH_STATUS_KT ='A' AND ( EXISTS( SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID IN ( SELECT PLAN_TYPE_ID FROM PL_MASTER PLM LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = GD_ID WHERE PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID AND PLM.PLAN_ID = TRD.PLAN_ID ) )OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '' ) AND A.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' --AND GROUP BY A.TRADE_ID ) NS_SD_TT ON NS_SD_TT.TRADE_ID = A.TRADE_ID WHERE 1=1 AND (M.YEAR = CONVERT(INT,@p_YEAR)) AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '') AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '') END /* DECLARE @TEMP_YEAR INT, @TEMP DECIMAL(18,2) DECLARE @TABLE TABLE( [YEAR] INT NULL, [PLAN] DECIMAL(18,2) NULL ) DECLARE @TABLE_MONTH_MADE TABLE( [YEAR] INT NULL, [MONTH] INT NULL, [MADE] DECIMAL(18,2) NULL ) DECLARE @TABLE_MONTH_DOING TABLE( [YEAR] INT NULL, [MONTH] INT NULL, [DOING] DECIMAL(18,2) NULL ) DECLARE CUR_FILTER_YEAR CURSOR FOR SELECT PL.YEAR FROM PL_MASTER PL WHERE PL.YEAR IS NOT NULL AND PL.YEAR <> '' GROUP BY PL.YEAR OPEN CUR_FILTER_YEAR FETCH NEXT FROM CUR_FILTER_YEAR INTO @TEMP_YEAR WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO @TABLE([YEAR],[PLAN]) --,[MADE],[DOING],[RESIDUAL] ( SELECT @TEMP_YEAR,ISNULL(ROUND(SUM(TRD.AMT_APP/1000000),2),0)-- AS SUM_PLAN FROM PL_TRADEDETAIL TRD -- MILLION DONG LEFT JOIN CM_GOODS G ON TRD.GOODS_ID = G.GD_ID LEFT JOIN PL_MASTER PLM ON PLM.PLAN_ID = TRD.PLAN_ID WHERE 1=1 AND (G.GD_ID = @p_GD_ID OR @p_GD_ID IS NULL OR @p_GD_ID = '') AND (PLM.YEAR = CAST(@p_YEAR AS INT) OR CAST(@p_YEAR AS INT) IS NULL OR CAST(@p_YEAR AS INT) = '') AND (G.GD_ID = @p_GD_ID OR @p_GD_ID IS NULL OR @p_GD_ID = '') AND ( -- FILTER BUDGET TYPE EXISTS( SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID IN(SELECT PLAN_TYPE_ID FROM PL_MASTER PLM LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = G.GD_ID WHERE TRD.GOODS_ID = G.GD_ID AND PLM.PLAN_ID = TRD.PLAN_ID) AND PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID ) OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '' ) AND ( EXISTS(SELECT GT.GD_TYPE_CODE FROM CM_GOODSTYPE GT WHERE GT.GD_TYPE_CODE IN(SELECT VALUE FROM WSISPLIT(G.GD_CODE,'.') J) AND GT.GD_TYPE_ID = @p_GD_TYPE_ID) OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '' ) AND ( PLM.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' ) AND ( ( PLM.APPROVE_DT <= CONVERT(DATETIME, @p_DATE,102) AND MONTH(PLM.APPROVE_DT) <= MONTH(CONVERT(DATETIME, @p_DATE,102)) AND YEAR(PLM.APPROVE_DT) = YEAR(CONVERT(DATETIME, @p_DATE,102)) ) OR @p_DATE IS NULL OR @p_DATE = '' ) AND ( PLM.YEAR = @TEMP_YEAR) GROUP BY PLM.YEAR ) -- DTH INSERT INTO @TABLE_MONTH_MADE([YEAR],[MONTH],[MADE]) SELECT PLM.YEAR,MONTH(PLM.APPROVE_DT),ISNULL(ROUND(SUM(DT.PRICE*2/1000000),2),0) FROM PL_TRADEDETAIL TRD-- MILLION DONG LEFT JOIN CM_GOODS G ON TRD.GOODS_ID = G.GD_ID LEFT JOIN PL_MASTER PLM ON PLM.PLAN_ID = TRD.PLAN_ID LEFT JOIN PL_REQUEST_DOC_DT DT ON DT.TRADE_ID = TRD.TRADE_ID LEFT JOIN PL_REQUEST_DOC D ON D.REQ_ID = DT.REQDT_ID WHERE 1=1 AND (G.GD_ID = @p_GD_ID OR @p_GD_ID IS NULL OR @p_GD_ID = '') AND (PLM.YEAR = CAST(@p_YEAR AS INT) OR CAST(@p_YEAR AS INT) IS NULL OR CAST(@p_YEAR AS INT) = '') AND ( -- FILTER BUDGET TYPE EXISTS( SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID IN(SELECT PLAN_TYPE_ID FROM PL_MASTER PLM LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = G.GD_ID WHERE TRD.GOODS_ID = G.GD_ID AND PLM.PLAN_ID = TRD.PLAN_ID) AND PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID ) OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '' ) AND ( EXISTS(SELECT GT.GD_TYPE_CODE FROM CM_GOODSTYPE GT WHERE GT.GD_TYPE_CODE IN(SELECT VALUE FROM WSISPLIT(G.GD_CODE,'.') J) AND GT.GD_TYPE_ID = @p_GD_TYPE_ID) OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '' ) AND ( PLM.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' ) AND ( ( PLM.APPROVE_DT <= CONVERT(DATETIME, @p_DATE,102) AND MONTH(PLM.APPROVE_DT) <= MONTH(CONVERT(DATETIME, @p_DATE,102)) AND YEAR(PLM.APPROVE_DT) = YEAR(CONVERT(DATETIME, @p_DATE,102)) ) OR @p_DATE IS NULL OR @p_DATE = '' ) AND ( EXISTS(SELECT TRD.TRADE_ID FROM PL_TRADEDETAIL TRD2 WHERE TRD2.TRADE_ID IN(SELECT DT.TRADE_ID FROM PL_REQUEST_DOC_DT DT, PL_REQUEST_DOC D WHERE D.PROCESS_ID = 'APPROVE') AND TRD.TRADE_ID = TRD2.TRADE_ID ) ) AND ( PLM.YEAR = @TEMP_YEAR) GROUP BY PLM.YEAR,MONTH(PLM.APPROVE_DT) ----------- -- DT INSERT INTO @TABLE_MONTH_DOING([YEAR],[MONTH],[DOING]) SELECT PLM.YEAR,MONTH(PLM.APPROVE_DT),ISNULL(ROUND(SUM(DT.PRICE*2/1000000),2),0) FROM PL_TRADEDETAIL TRD-- MILLION DONG LEFT JOIN CM_GOODS G ON TRD.GOODS_ID = G.GD_ID LEFT JOIN PL_MASTER PLM ON PLM.PLAN_ID = TRD.PLAN_ID LEFT JOIN PL_REQUEST_DOC_DT DT ON DT.TRADE_ID = TRD.TRADE_ID LEFT JOIN PL_REQUEST_DOC D ON D.REQ_ID = DT.REQDT_ID WHERE 1=1 AND (G.GD_ID = @p_GD_ID OR @p_GD_ID IS NULL OR @p_GD_ID = '') AND (PLM.YEAR = CAST(@p_YEAR AS INT) OR CAST(@p_YEAR AS INT) IS NULL OR CAST(@p_YEAR AS INT) = '') AND ( -- FILTER BUDGET TYPE EXISTS( SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID IN(SELECT PLAN_TYPE_ID FROM PL_MASTER PLM LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = G.GD_ID WHERE TRD.GOODS_ID = G.GD_ID AND PLM.PLAN_ID = TRD.PLAN_ID) AND PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID ) OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '' ) AND ( EXISTS(SELECT GT.GD_TYPE_CODE FROM CM_GOODSTYPE GT WHERE GT.GD_TYPE_CODE IN(SELECT VALUE FROM WSISPLIT(G.GD_CODE,'.') J) AND GT.GD_TYPE_ID = @p_GD_TYPE_ID) OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '' ) AND ( PLM.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' ) AND ( ( PLM.APPROVE_DT <= CONVERT(DATETIME, @p_DATE,102) AND MONTH(PLM.APPROVE_DT) <= MONTH(CONVERT(DATETIME, @p_DATE,102)) AND YEAR(PLM.APPROVE_DT) = YEAR(CONVERT(DATETIME, @p_DATE,102)) ) OR @p_DATE IS NULL OR @p_DATE = '' ) AND ( EXISTS(SELECT TRD.TRADE_ID FROM PL_TRADEDETAIL TRD2 WHERE TRD2.TRADE_ID IN(SELECT DT.TRADE_ID FROM PL_REQUEST_DOC_DT DT, PL_REQUEST_DOC D WHERE D.PROCESS_ID <> 'APPROVE' AND D.PROCESS_ID <> 'REJECT') AND TRD.TRADE_ID = TRD2.TRADE_ID ) ) AND ( PLM.YEAR = @TEMP_YEAR) GROUP BY PLM.YEAR,MONTH(PLM.APPROVE_DT) FETCH NEXT FROM CUR_FILTER_YEAR INTO @TEMP_YEAR END CLOSE CUR_FILTER_YEAR DEALLOCATE CUR_FILTER_YEAR SELECT * FROM @TABLE --SELECT * FROM @TABLE_MONTH_MADE --SELECT * FROM @TABLE_MONTH_DOING DECLARE @TABLE_MONTH_MEGA TABLE( [YEAR] INT NULL, [MONTH] INT NULL, [MADE] DECIMAL(18,2) NULL, [DOING] DECIMAL(18,2) NULL, [RESIDUAL] DECIMAL(18,2) NULL ) INSERT INTO @TABLE_MONTH_MEGA([YEAR],[MONTH],[MADE],[DOING],[RESIDUAL]) SELECT M.[YEAR], M.[MONTH], M.[MADE], D.[DOING], M.[MADE]-D.[DOING] FROM @TABLE_MONTH_MADE M INNER JOIN @TABLE_MONTH_DOING D ON D.YEAR=M.YEAR AND D.MONTH = M.MONTH SELECT * FROM @TABLE_MONTH_MEGA ------------------------ */ END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_CONTRACT_Upd]' GO ALTER PROCEDURE [dbo].[TR_CONTRACT_Upd] @p_CONTRACT_ID VARCHAR(15), @p_CONTRACT_CODE varchar(150) = NULL, @p_CONTRACT_NAME nvarchar(200) = NULL, @p_CONTRACT_TYPE varchar(1) = NULL, @p_BID_ID varchar(15) = NULL, @p_SUP_ID varchar(15) = NULL, @p_TOTAL_AMT decimal(18) = NULL, @p_DELIVERY_DT VARCHAR(20) = NULL, @p_FORM1 varchar(4) = NULL, @p_VOUCHER_ID1 varchar(20) = NULL, @p_BANK1 varchar(4) = NULL, @p_AMOUNT1 decimal(18) = NULL, @p_EXP_DT1 VARCHAR(20) = NULL, @p_RATE1 decimal(18,2) = NULL, @p_FORM2 varchar(4) = NULL, @p_VOUCHER_ID2 varchar(20) = NULL, @p_BANK2 varchar(4) = NULL, @p_AMOUNT2 decimal(18) = NULL, @p_EXP_DT2 VARCHAR(20) = NULL, @p_RATE2 decimal(18,2) = NULL, @p_REQ_DOC_ID nvarchar(50) = NULL, @p_REQ_DOC_CONTENT nvarchar(1000) = NULL, @p_APPROVE_VALUE decimal(18) = NULL, @p_SIGN_DT VARCHAR(20) = NULL, @p_CONSTRUCT_PROGRESS decimal(18,2) = 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_START_DT VARCHAR(20) = NULL, @P_END_DT VARCHAR(20) = NULL, @P_LISTASSET XML = NULL, @P_LISTPAYMENT XML = NULL, @P_CON_TRACK XML = NULL, @p_ListTrREQFile XML, @p_IS_CLOSED VARCHAR(1) = NULL, @p_CONT_TYPE VARCHAR(10) = NULL, @p_CUST_ID VARCHAR(15) = NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_EXP_CONTRACT INT = NULL, @p_DEPOSIT_AMT DECIMAL(18,0) = NULL, @p_TYPE_PERIOD VARCHAR(15) = NULL, @p_DEPOSIT_NOTE NVARCHAR(1000) = NULL, -----------------------BAODNQ 25/2/2022 : Thêm cột vào bảng TR_CONTRACT------------- @p_IS_SEND_APPR VARCHAR(1) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL, @p_ADDR NVARCHAR(1000) = NULL, @p_SUP_CODE VARCHAR(20) = NULL AS IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'U')) BEGIN SELECT '-1' as Result, @P_CONTRACT_ID CONTRACT_ID, N'Không thể chỉnh sửa. Hợp đồng ' + @p_CONTRACT_CODE + N' đã được gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END DECLARE @sErrorCode VARCHAR(20) DECLARE @TEMP TABLE ( [KEY] varchar(15), [REF_ID] varchar(15), [TYPE] varchar(50) ) --IF (@p_CONTRACT_CODE IS NOT NULL AND @p_CONTRACT_CODE <> '') --BEGIN -- IF EXISTS(SELECT * FROM TR_CONTRACT A WHERE A.CONTRACT_CODE = @p_CONTRACT_CODE AND A.CONTRACT_ID != @p_CONTRACT_ID ) -- BEGIN -- SET @sErrorCode = 'TR-00001' -- END --END ----------------BAODNQ 8/11/2022 : BỎ RÀNG BUỘC TRÙNG SỐ HỢP ĐỒNG------------ --IF(@p_CONTRACT_CODE IS NOT NULL AND @p_CONTRACT_CODE <> '') --BEGIN -- IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_CODE = @p_CONTRACT_CODE AND CONTRACT_ID <> @p_CONTRACT_ID)) -- BEGIN -- DECLARE @p_EXISTS_CONTRACT_ID VARCHAR(15) = ( -- SELECT TOP 1 CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_CODE = @p_CONTRACT_CODE AND CONTRACT_ID <> @p_CONTRACT_ID -- ) -- SELECT '-1' AS Result, '' CONTRACT_ID, -- N'Số hợp đồng: ' + @p_CONTRACT_CODE + N' đã tồn tại trên hệ thống ứng với ID hợp đồng: ' -- + @p_EXISTS_CONTRACT_ID + N'. Vui lòng nhập số hợp đồng khác' ErrorDesc -- RETURN '-1' -- END --END IF @sErrorCode <> '' BEGIN SELECT '-1' as Result, '' CONTRACT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode RETURN '-1' END DECLARE @REF_CODE VARCHAR(15) = NULL, @PDN_TT VARCHAR(15) = NULL SET @REF_CODE = ( SELECT TOP 1 B.REQ_PAY_CODE FROM TR_REQ_ADVANCE_DT A INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL) ) --- TIM KIEM XEM PO NAY CO DUOC PHEP THANH TOAN HAY KHONG SET @PDN_TT = ( SELECT TOP 1 B.REQ_PAY_CODE FROM TR_REQ_ADVANCE_DT A INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL) ) IF(@p_IS_CLOSED ='Y' AND @REF_CODE IS NOT NULL) BEGIN --ROLLBACK TRANSACTION SELECT '-1' Result, @p_CONTRACT_ID AS PO_ID, N'Hợp đồng đang được thực hiện tạm ứng với số phiếu: '+@REF_CODE AS ErrorDesc RETURN '-1' END IF(@p_IS_CLOSED ='Y' AND @PDN_TT IS NOT NULL) BEGIN --ROLLBACK TRANSACTION SELECT '-1' Result, @p_CONTRACT_ID AS PO_ID, N'Hợp đồng đang được thực hiện thanh toán với số phiếu: '+@PDN_TT AS ErrorDesc RETURN '-1' END ----------------BAODNQ 14/11/2022 : NẾU LOẠI HỢP ĐỒNG = DK, KO BẮT BUỘC NHẬP LƯỚI DANH SÁCH HÀNG HÓA------------------ ---------------NGƯỢC LẠI NẾU LÀ (MS, NT), BẮT BUỘC NHẬP LƯỚI DANH SÁCH HÀNG HÓA---------------- DECLARE @p_TR_CONTRACT_DT_XML_COUNT INT SET @p_TR_CONTRACT_DT_XML_COUNT = ( SELECT @p_LISTASSET.value('count(/Root/AssetDetail/GOODS_ID)', 'INT') AS 'COUNT' ) PRINT @p_TR_CONTRACT_DT_XML_COUNT IF(@p_CONT_TYPE <> 'DK' AND @p_TR_CONTRACT_DT_XML_COUNT <= 0) BEGIN SELECT '-1' Result, '' AS CONTRACT_ID, N'Đối với hợp đồng không phải là hợp đồng định kỳ, lưới danh sách hàng hóa bắt buộc nhập' AS ErrorDesc RETURN '-1' END -----------------ENDBAODNQ------------------- Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@P_LISTASSET DECLARE AssetDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/AssetDetail',2) WITH ( CD_ID VARCHAR(15), GOODS_ID varchar(15), UNIT_ID varchar(15), QUANTITY decimal(18), PRICE decimal(18), NOTES nvarchar(1000), GD_NAME_REAL NVARCHAR(500), RECURRING VARCHAR(5), UNIT_NAME_REAL NVARCHAR(100), -------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT------------- RENT_PRICE DECIMAL(18,0), BUILDING_ID VARCHAR(15) ) OPEN AssetDetail Exec sp_xml_preparedocument @hdoc Output,@P_LISTPAYMENT DECLARE PaymentDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/PaymentDetail',2) WITH ( PAY_ID VARCHAR(15), PAY_PHASE NVARCHAR(1000), EXPECTED_DT VARCHAR(20), [PERCENT] decimal(18,2), [AMOUNT] decimal(18), PAY_STATUS VARCHAR(1), PAY_AMOUNT DECIMAL(18), PAY_DT VARCHAR(20), NOTES nvarchar(1000) ) OPEN PaymentDetail Exec sp_xml_preparedocument @hdoc Output,@P_CON_TRACK DECLARE ConTrack CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/ConTrack',2) WITH ( CONS_TRACK_ID VARCHAR(15), FIX_DESCRIPTION varchar(200), EXPECTED_DT VARCHAR(20), FINISH_DT VARCHAR(20), [STATUS] VARCHAR(1), NOTES nvarchar(1000) ) OPEN ConTrack PRINT 'PASS KHOI TAO' BEGIN TRANSACTION ---------------BAODNQ 12/12/2022 : HOT_FIX TẠM THỜI------------------- --------------NẾU KO TRUYỀN SUP_ID THÌ TỪ SUP_CODE TÌM KIẾM RA SUP_ID--------- IF((@p_SUP_ID IS NULL OR @p_SUP_ID = '') AND @p_SUP_CODE IS NOT NULL AND @p_SUP_CODE <> '') BEGIN SET @p_SUP_ID = (SELECT TOP 1 SUP_ID FROM CM_SUPPLIER WHERE SUP_CODE = @p_SUP_CODE) END --------------ENDBAODNQ 12/12/2022---------------------------- IF(@p_CONTRACT_NAME ='' OR @p_CONTRACT_NAME IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, @p_CONTRACT_ID AS PO_ID, N'Tên hợp đồng không được để trống' AS ErrorDesc RETURN '-1' END --insert master IF @p_DELIVERY_DT = '' SET @p_DELIVERY_DT = NULL IF @p_EXP_DT1 = '' SET @p_EXP_DT1 = NULL IF @p_EXP_DT2 = '' SET @p_EXP_DT2 = NULL IF @p_SIGN_DT = '' SET @p_SIGN_DT = NULL IF @p_CREATE_DT = '' SET @p_CREATE_DT = NULL IF @p_APPROVE_DT = '' SET @p_APPROVE_DT = NULL IF @P_START_DT = '' SET @P_START_DT = NULL IF @P_END_DT = '' SET @P_END_DT = NULL DECLARE @EXP_DT_OLD DATEtime, @TOTAL_AMT_OLD DECIMAL(18,0), @FROM_EXP_DATE_OLD DATEtime SET @FROM_EXP_DATE_OLD = (SELECT START_DT FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID) SET @EXP_DT_OLD = (SELECT END_DT FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID) SET @TOTAL_AMT_OLD = (SELECT TOTAL_AMT FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID) IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'A')) BEGIN SET @p_CHECKER_ID = NULL SET @p_APPROVE_DT = NULL SET @p_SEND_APPR_DT = NULL END UPDATE TR_CONTRACT SET [START_DT] = (CASE WHEN @P_START_DT IS NOT NULL AND @P_START_DT <> '' then CONVERT(DATETIME,@P_START_DT,103) ELSE NULL END), [END_DT] = (CASE WHEN @P_END_DT IS NOT NULL AND @P_END_DT <> '' THEN CONVERT(DATETIME,@P_END_DT,103) ELSE NULL END), [CONTRACT_CODE] = @p_CONTRACT_CODE, [CONTRACT_NAME] = @p_CONTRACT_NAME, [CONTRACT_TYPE] = @p_CONTRACT_TYPE , [BID_ID] = @p_BID_ID,[SUP_ID] = @p_SUP_ID,[TOTAL_AMT] = @p_TOTAL_AMT, [DELIVERY_DT] = (CASE WHEN @p_DELIVERY_DT IS NOT NULL AND @p_DELIVERY_DT <> '' then CONVERT(DATETIME, @p_DELIVERY_DT, 103) ELSE NULL END), [FORM1] = @p_FORM1,[VOUCHER_ID1] = @p_VOUCHER_ID1,[BANK1] = @p_BANK1, [AMOUNT1] = @p_AMOUNT1,[EXP_DT1] = (CASE WHEN @p_EXP_DT1 IS NOT NULL AND @p_EXP_DT1 <> '' then CONVERT(DATETIME, @p_EXP_DT1, 103) ELSE NULL END), [RATE1] = @p_RATE1,[FORM2] = @p_FORM2,[VOUCHER_ID2] = @p_VOUCHER_ID2, [BANK2] = @p_BANK2,[AMOUNT2] = @p_AMOUNT2,[EXP_DT2] = (CASE WHEN @p_EXP_DT2 IS NOT NULL AND @p_EXP_DT2 <> '' then CONVERT(DATETIME, @p_EXP_DT2, 103) ELSE NULL END), [RATE2] = @p_RATE2,[REQ_DOC_ID] = @p_REQ_DOC_ID,[REQ_DOC_CONTENT] = @p_REQ_DOC_CONTENT, [APPROVE_VALUE] = @p_APPROVE_VALUE, [SIGN_DT] = (CASE WHEN @p_SIGN_DT IS NOT NULL AND @p_SIGN_DT <> '' then CONVERT(DATETIME, @p_SIGN_DT, 103) ELSE NULL END), [CONSTRUCT_PROGRESS] = @p_CONSTRUCT_PROGRESS,[NOTES] = @p_NOTES,[RECORD_STATUS] = '1', [MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[AUTH_STATUS] = 'E', [CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = (CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END), [CONT_TYPE]=@p_CONT_TYPE, CUST_ID = @p_CUST_ID, [IS_CLOSED] = @p_IS_CLOSED, BRANCH_ID=@p_BRANCH_ID,EXP_CONTRACT=@p_EXP_CONTRACT,DEPOSIT_AMT =@p_DEPOSIT_AMT,TYPE_PERIOD =@p_TYPE_PERIOD, DEPOSIT_NOTE = @p_DEPOSIT_NOTE, IS_SEND_APPR = @p_IS_SEND_APPR, SEND_APPR_DT = CONVERT(DATE, @p_SEND_APPR_DT, 103), [ADDRESS] = @p_ADDR WHERE CONTRACT_ID= @p_CONTRACT_ID -- INSERT VAO LOG INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_CONTRACT_ID, -- REQ_ID - varchar(15) 'UPDATE', -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'User: '+ @p_MAKER_ID +N' thực hiện chỉnh sửa hợp đồng. Thông tin chỉnh sửa bao gồm: '+ CHAR(10) + N'Thông tin ngày hiệu lực hợp đồng. Điều chỉnh từ ngày : ' + ISNULL((SELECT FORMAT (@FROM_EXP_DATE_OLD, 'dd/MM/yyyy ')),N'vô thời hạn ') + N' thành ngày : '+ ISNULL(@P_START_DT,N'vô thời hạn') +CHAR(10)+ + N'Thông tin ngày hết hiệu lực hợp đồng. Điều chỉnh từ ngày : ' + ISNULL((SELECT FORMAT (@EXP_DT_OLD, 'dd/MM/yyyy ')),N'vô thời hạn ') + N' thành ngày : '+ ISNULL(@P_END_DT,N'vô thời hạn') +CHAR(10)+ N'Tổng giá trị hợp đồng điều chỉnh từ: '+ ISNULL(FORMAT(@TOTAL_AMT_OLD,'#,###'),'0') + ' VND' + N' thành: '+ ISNULL(FORMAT(@p_TOTAL_AMT,'#,###'),'0') +' VND' ,N'Chỉnh sửa thông tin hợp đồng' ) IF @@Error <> 0 GOTO ABORT PRINT 'UPDATE MASTER SUCCESS' --insert asset detail tương đương như NỘI DUNG trong bảng contract detail Declare @CONS_TRACK_ID VARCHAR(15), @FIX_DESCRIPTION VARCHAR(200), @FINISH_DT VARCHAR(20), @STATUS VARCHAR(1), @CD_ID VARCHAR(15), @PAY_ID VARCHAR(15), @GOODS_ID varchar(15), @UNIT_ID varchar(15), @QUANTITY decimal(18), @PRICE decimal(18), @NOTES nvarchar(1000), @PAY_PHASE NVARCHAR(1000), @EXPECTED_DT VARCHAR(20), @PERCENT decimal(18), @AMOUNT decimal(18), @PAY_STATUS VARCHAR(1), @PAY_AMOUNT DECIMAL(18), @PAY_DT VARCHAR(20), @GD_NAME_REAL NVARCHAR(500), @RECURRING VARCHAR(5), @UNIT_NAME_REAL NVARCHAR(100), -------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT------------- @RENT_PRICE DECIMAL(18,0), @BUILDING_ID VARCHAR(15) DELETE FROM TR_CONTRACT_DT WHERE CONTRACT_ID = @P_CONTRACT_ID FETCH NEXT FROM AssetDetail INTO @CD_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@PRICE,@NOTES,@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID WHILE @@FETCH_STATUS = 0 BEGIN --IF(LEN(@CD_ID) = 0) --BEGIN -- EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_DT', @CD_ID out -- IF @CD_ID='' OR @CD_ID IS NULL GOTO ABORT --END EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_DT', @CD_ID out IF @CD_ID='' OR @CD_ID IS NULL GOTO ABORT --EXEC TR_CONTRACT_DT_Ins @P_CONTRACT_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@PRICE,@NOTES,@p_RECORD_STATUS, --@p_MAKER_ID,@p_CREATE_DT,@p_AUTH_STATUS,@p_CHECKER_ID,@p_APPROVE_DT --ELSE INSERT INTO TR_CONTRACT_DT([CD_ID],[CONTRACT_ID],[GOODS_ID],[UNIT_ID],[QUANTITY],[PRICE],[NOTES], [RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[GD_NAME_REAL],RECURRING,UNIT_NAME_REAL, RENT_PRICE,BUILDING_ID) VALUES(@CD_ID ,@P_CONTRACT_ID, @GOODS_ID , @UNIT_ID , @QUANTITY , @PRICE , @NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END),@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID) FETCH NEXT FROM AssetDetail INTO @CD_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@PRICE,@NOTES,@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID END DELETE FROM CON_TRACK WHERE CONTRACT_ID = @P_CONTRACT_ID FETCH NEXT FROM ConTrack INTO @CONS_TRACK_ID,@FIX_DESCRIPTION,@EXPECTED_DT,@FINISH_DT,@STATUS,@NOTES WHILE @@FETCH_STATUS = 0 BEGIN --IF(LEN(@CONS_TRACK_ID) = 0) --BEGIN -- EXEC SYS_CodeMasters_Gen 'CONS_TRACK_ID', @CONS_TRACK_ID out -- IF @CONS_TRACK_ID ='' OR @CONS_TRACK_ID IS NULL GOTO ABORT --END EXEC SYS_CodeMasters_Gen 'CONS_TRACK_ID', @CONS_TRACK_ID out IF @CONS_TRACK_ID ='' OR @CONS_TRACK_ID IS NULL GOTO ABORT INSERT INTO CON_TRACK([CONS_TRACK_ID],[CONTRACT_ID],[FIX_DESCRIPTION],[EXPECTED_DT],[STATUS],[FINISH_DT],[NOTES],[CREATED_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[RECORD_STATUS]) VALUES(@CONS_TRACK_ID ,@p_CONTRACT_ID ,@FIX_DESCRIPTION ,CONVERT(DATETIME, @EXPECTED_DT, 103) , @STATUS ,CONVERT(DATETIME, @FINISH_DT, 103) ,@NOTES ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END) ,@p_RECORD_STATUS ) FETCH NEXT FROM ConTrack INTO @CONS_TRACK_ID,@FIX_DESCRIPTION,@EXPECTED_DT,@FINISH_DT,@STATUS,@NOTES END --insert payment detail DELETE FROM TR_CONTRACT_PAYMENT WHERE CONTRACT_ID = @P_CONTRACT_ID FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@PAY_STATUS,@PAY_AMOUNT,@PAY_DT,@NOTES WHILE @@FETCH_STATUS = 0 BEGIN IF(LEN(ISNULL(@PAY_ID,'')) = 0 OR @PAY_ID IS NULL OR @PAY_ID = '') BEGIN EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @PAY_ID out IF @PAY_ID='' OR @PAY_ID IS NULL GOTO ABORT END --IF(EXISTS(SELECT * FROM TR_CONTRACT_PAYMENT WHERE PAY_ID =@PAY_ID)) --BEGIN -- UPDATE TR_CONTRACT_PAYMENT SET PAY_ID ='X' WHERE PAY_ID =@PAY_ID --END --EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @PAY_ID out IF @PAY_ID='' OR @PAY_ID IS NULL GOTO ABORT --EXEC TR_CONTRACT_PAYMENT_Ins @p_CONTRACT_ID,@PAY_PHASE,@EXPECTED_DT, --@PERCENT,@AMOUNT,@NOTES,@p_RECORD_STATUS,@p_MAKER_ID,@p_CREATE_DT,@p_AUTH_STATUS,@p_CHECKER_ID,@p_APPROVE_DT --ELSE --INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],PAY_DT, [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS], --[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT]) --VALUES(@PAY_AMOUNT,(CASE WHEN @PAY_DT IS NOT NULL AND @PAY_DT <> '' then CONVERT(DATETIME, @PAY_DT, 103) ELSE NULL END),@PAY_ID ,@p_CONTRACT_ID ,@PAY_PHASE ,CONVERT(DATETIME, @EXPECTED_DT, 103) , --@PERCENT ,@AMOUNT,@PAY_STATUS,@NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103), --@p_AUTH_STATUS ,@p_CHECKER_ID ,(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END)) -------------BAODNQ 15/9/2022: Fix lại theo BVB_v2_PROD----------- -------------Nếu @PAY_ID ko tồn tại trong TR_CONTRACT_PAYMENT, INSERT mới--------- IF(NOT EXISTS(SELECT * FROM TR_CONTRACT_PAYMENT WHERE PAY_ID = @PAY_ID)) BEGIN INSERT INTO TR_CONTRACT_PAYMENT ([PAY_AMOUNT],PAY_DT, [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS], [NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT]) VALUES(@PAY_AMOUNT,(CASE WHEN @PAY_DT IS NOT NULL AND @PAY_DT <> '' then CONVERT(DATETIME, @PAY_DT, 103) ELSE NULL END),@PAY_ID , @p_CONTRACT_ID ,@PAY_PHASE ,CONVERT(DATETIME, @EXPECTED_DT, 103) , @PERCENT ,@AMOUNT,@PAY_STATUS,@NOTES ,@p_RECORD_STATUS , @p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103), @p_AUTH_STATUS ,@p_CHECKER_ID , (CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END)) END ELSE -------------Nếu @PAY_ID đã tồn tại trong TR_CONTRACT_PAYMENT, UPDATE--------- BEGIN UPDATE TR_CONTRACT_PAYMENT SET PAY_AMOUNT = @PAY_AMOUNT, PAY_DT =(CASE WHEN @PAY_DT IS NOT NULL AND @PAY_DT <> '' then CONVERT(DATETIME, @PAY_DT, 103) ELSE NULL END), CONTRACT_ID = @p_CONTRACT_ID, PAY_PHASE = @PAY_PHASE, EXPECTED_DT = CONVERT(DATETIME, @EXPECTED_DT, 103), [PERCENT] = @PERCENT, [AMOUNT] = @AMOUNT, PAY_STATUS = @PAY_STATUS, NOTES = @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 = (CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END) WHERE PAY_ID = @PAY_ID END FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@PAY_STATUS,@PAY_AMOUNT,@PAY_DT,@NOTES END CLOSE ConTrack DEALLOCATE ConTrack CLOSE AssetDetail DEALLOCATE AssetDetail CLOSE PaymentDetail DEALLOCATE PaymentDetail IF(@p_RECORD_STATUS ='U') BEGIN UPDATE TR_CONTRACT SET AUTH_STATUS ='U' WHERE CONTRACT_ID =@p_CONTRACT_ID END --Insert into TABLE TR_REQUEST_DOC_FILE DECLARE @tableTrREQFile TABLE( TR_REQUEST_DOC_FILE_ID varchar(20) , REQ_ID varchar(20), NOTES nvarchar(200) ) Declare @fdoc INT Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile INSERT INTO @tableTrREQFile SELECT * FROM OPENXML(@fDoc,'/Root/ListTrREQ',2) WITH ( TR_REQUEST_DOC_FILE_ID varchar(20) , REQ_ID varchar(20), NOTES nvarchar(200) ) --delete TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID not in (select TR_REQUEST_DOC_FILE_ID from @tableTrREQFile) and REQ_ID = @p_CONTRACT_ID ------------BAODNQ 11/11/2022 : DELETE TR_REQUEST_DOC_FILE---------- DELETE FROM TR_REQUEST_DOC_FILE WHERE REQ_ID = @p_CONTRACT_ID DECLARE ListTrREQFile CURSOR FOR SELECT * FROM @tableTrREQFile OPEN ListTrREQFile Declare @TR_REQUEST_DOC_FILE_ID varchar(20) , @IS_VIEW bit, @REQ_ID varchar(20), @_NOTES nvarchar(200) FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@REQ_ID,@_NOTES WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_REQFile_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out --select @l_REQFile_ID --select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRC000000529764' IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT') IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0 begin update TR_REQUEST_DOC_FILE set IS_VIEW=isnull(@IS_VIEW,0),REQ_ID = @p_CONTRACT_ID,NOTES=@_NOTES where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID end else begin INSERT INTO dbo.TR_REQUEST_DOC_FILE ( [TR_REQUEST_DOC_FILE_ID] ,[REQ_ID] ,[NOTES] ) VALUES ( @l_REQFile_ID ,@p_CONTRACT_ID, @_NOTES ) end FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@REQ_ID,@_NOTES END CLOSE ListTrREQFile DEALLOCATE ListTrREQFile IF @@Error <> 0 GOTO ABORT if(select count(*) from @TEMP) = 0 begin INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT') end COMMIT TRANSACTION IF(@p_RECORD_STATUS ='U') BEGIN -- INSERT VAO LOG INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_CONTRACT_ID, -- REQ_ID - varchar(15) 'SEND', -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Nhân viên gửi phê duyệt phiếu thành công' ,N'Gửi phê duyệt') --IF(@p_CONT_TYPE ='DK') --BEGIN -- UPDATE TR_CONTRACT SET AUTH_STATUS ='A' WHERE CONTRACT_ID =@p_CONTRACT_ID --END SELECT '2' as Result, @P_CONTRACT_ID CONTRACT_ID, N'Hợp đồng có ID: '+ @P_CONTRACT_ID +N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp có thẩm quyền phê duyệt' ErrorDesc RETURN '2' --- --IF(@p_CONT_TYPE ='DK' AND CONVERT(DATE, GETDATE(),103) <='2020-08-30') END ELSE BEGIN SELECT '0' as Result, @P_CONTRACT_ID CONTRACT_ID, N'Hợp đồng có ID: '+ @P_CONTRACT_ID +N' đã được cập nhật dữ liệu thành công. Bạn có thể bấm gửi phê duyệt' ErrorDesc,[REF_ID], [TYPE] from @TEMP RETURN '0' END ABORT: BEGIN CLOSE ConTrack DEALLOCATE ConTrack CLOSE AssetDetail DEALLOCATE AssetDetail CLOSE PaymentDetail DEALLOCATE PaymentDetail ROLLBACK TRANSACTION SELECT '-1' AS RESULT, '' CONTRACT_ID,'' ErrorDesc RETURN '-1' End --SELECT * FROM TR_CONTRACT_DT --SELECT * FROM TR_CONTRACT_PAYMENT --SELECT * FROM TR_CONTRACT GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_BRANCH_Upd]' GO /* [dbo].[CM_BRANCH_Upd] 'BRN000000000005','DV0004','','','','','','','','','','15/10/2013','','','15/10/2013' INSERT INTO SYS_ERROR(ErrorCode,ErrorDesc,Form) Values ('CMC-00001',N'Mã chi nhánh không tồn tại','CM') INSERT INTO SYS_ERROR(ErrorCode,ErrorDesc,Form) Values ('CMC-00002',N'Mã chi nhánh cha không tồn tại','CM') SELECT * FROM CM_BRANCH */ ALTER PROCEDURE [dbo].[CM_BRANCH_Upd] @p_BRANCH_ID varchar(15) = null , @p_FATHER_ID varchar(15) = NULL , @p_BRANCH_CODE varchar(10) = NULL , @p_BRANCH_NAME nvarchar(200) = NULL , @p_REGION_ID varchar(15) = NULL , @p_BRANCH_TYPE varchar(5) = NULL , @p_ADDR nvarchar(200) = NULL , @p_TEL varchar(20) = NULL , @p_NOTES nvarchar(1000) = NULL , @p_IS_POTENTIAL varchar(1) = NULL, @p_RECORD_STATUS varchar(1) = NULL , @p_MAKER_ID varchar(15) = NULL , @p_CREATE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL , @p_CHECKER_ID varchar(15) = NULL , @p_TAX_NO varchar(50) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_DAO_CODE VARCHAR(40) = NULL, @p_DAO_NAME NVARCHAR(500) = NULL, @p_PROVICE NVARCHAR(500) = NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF( EXISTS (SELECT * FROM CM_BRANCH WHERE @p_TAX_NO IS NOT NULL AND @p_TAX_NO != '' AND TAX_NO = @p_TAX_NO AND BRANCH_ID <> @p_BRANCH_ID)) SET @ERRORSYS = 'BRN-001' IF ( EXISTS ( SELECT * FROM CM_BRANCH WHERE BRANCH_CODE = @p_BRANCH_CODE AND BRANCH_ID != @p_BRANCH_ID)) SET @ERRORSYS = 'CMCD-00001' IF ( NOT EXISTS ( SELECT * FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID)) SET @ERRORSYS = 'CMC-00001' IF ( @p_FATHER_ID <> NULL OR @p_FATHER_ID <> '') IF( NOT EXISTS ( SELECT * FROM CM_BRANCH WHERE BRANCH_ID = @p_FATHER_ID ) ) SET @ERRORSYS = 'CMC-00002' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END BEGIN TRANSACTION UPDATE CM_BRANCH SET [FATHER_ID] = @p_FATHER_ID, [BRANCH_CODE] = @p_BRANCH_CODE, [BRANCH_NAME] = @p_BRANCH_NAME, [REGION_ID] = @p_REGION_ID, [BRANCH_TYPE] = @p_BRANCH_TYPE, [ADDR] = @p_ADDR, [TEL] = @p_TEL, [NOTES] = @p_NOTES, [RECORD_STATUS] = @p_RECORD_STATUS, [TAX_NO] = @p_TAX_NO, [IS_POTENTIAL] = @p_IS_POTENTIAL, [AUTH_STATUS] = @p_AUTH_STATUS, PROVICE=@p_PROVICE, DAO_CODE=@p_DAO_CODE, DAO_NAME=@p_DAO_NAME WHERE BRANCH_ID= @p_BRANCH_ID IF @@Error <> 0 GOTO ABORT DECLARE @DMMS_ID VARCHAR(20) -- KIỂM TRA XEM ĐÃ KHAI BÁO ĐƠN VỊ / CHI NHÁNH NÀY TRONG CM_DMMS HAY CHƯA IF(NOT EXISTS (SELECT * FROM CM_DMMS WHERE BRANCH_ID =@p_BRANCH_ID)) BEGIN EXEC SYS_CodeMasters_Gen 'CM_DMMS', @DMMS_ID out INSERT INTO CM_DMMS (DMMS_ID,BRANCH_ID, DEP_ID,DVDM_ID) VALUES (@DMMS_ID,@p_BRANCH_ID,(SELECT TOP 1 DEP_ID FROM CM_DEPARTMENT WHERE BRANCH_ID =@p_BRANCH_ID),'') END COMMIT TRANSACTION SELECT '0' as Result, @p_BRANCH_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'Altering [dbo].[rpt_MW_ENTRIES_POST_ByRefId_BanViet_w]' GO ALTER PROCEDURE [dbo].[rpt_MW_ENTRIES_POST_ByRefId_BanViet_w] @p_REF_ID VARCHAR(200) = NULL, @p_BRANCH_ID VARCHAR(50) = NULL, @p_RefNo VARCHAR(500) = NULL AS DECLARE @ENT_TEMP TABLE (ID INT,REF_ID VARCHAR(15), CR_ACCT VARCHAR(50), CR_BRN VARCHAR(15), DR_ACCT VARCHAR(50), DR_BRN VARCHAR(15), AMT DECIMAL(18,0), TRN_DESC NVARCHAR(500), ASSET_ID VARCHAR(15)) DECLARE @ENT_TEMP_ROOT TABLE (ID INT,REF_ID VARCHAR(15), CR_ACCT VARCHAR(50), CR_BRN VARCHAR(15), DR_ACCT VARCHAR(50), DR_BRN VARCHAR(15), AMT DECIMAL(18,0), TRN_DESC NVARCHAR(500), ASSET_ID VARCHAR(15),DR_NAME NVARCHAR(500), CR_NAME NVARCHAR(500)) DECLARE @TRN_DESC NVARCHAR(500) = '', @TRN_TYPE VARCHAR(50) --------------------------LAY DANH SACH BUT TOAN -- LU VAO BANG DU LIEU GOC-------------------------- INSERT INTO @ENT_TEMP_ROOT SELECT Row_number() over(order by A.CR_ACCT),'',A.CR_ACCT, B.BRANCH_CODE CR_BRN, A.DR_ACCT, C.BRANCH_CODE DR_BRN, SUM(A.AMT) AS AMT,@TRN_DESC, A.MAST_PRICE_ID AS ASSET_ID,NULL, NULL FROM MW_ENTRIES_POST A LEFT JOIN CM_BRANCH B ON A.CR_BRN = B.BRANCH_ID LEFT JOIN CM_BRANCH C ON A.DR_BRN = C.BRANCH_ID WHERE TRN_ID = @p_REF_ID AND (A.DO_BRN = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (REF_NO = @p_RefNo OR @p_RefNo IS NULL OR @p_RefNo = '') GROUP BY A.CR_ACCT, B.BRANCH_CODE, A.DR_ACCT, C.BRANCH_CODE,A.MAST_PRICE_ID --ORDER BY LEN(CR_ACCT) --select * from @ENT_TEMP_ROOT --DECLARE @COUNT INT = (SELECT COUNT(*) - COUNT(DISTINCT ASSET_ID) FROM ASS_ENTRIES_POST WHERE TRN_ID = @p_REF_ID) --IF (SELECT COUNT(DISTINCT TRN_TYPE) FROM MW_ENTRIES_POST WHERE TRN_ID = @p_REF_ID) > 1 --SET @TRN_TYPE = 'ADD_NEW' --ELSE --SET @TRN_TYPE = (SELECT TOP 1 TRN_TYPE FROM ASS_ENTRIES_POST WHERE TRN_ID = @p_REF_ID ) ----------------------------TACH 1 DONG DU LIEU THANH 2 DONG NAM LIEN KE NHAU DE BINDING WORD-------------------------- -------LAY TAI KHOAN GL TUONG UNG CASA TRONG CM_BRANCH UPDATE @ENT_TEMP_ROOT SET CR_ACCT = B.TEL, CR_NAME = B.PROVICE FROM CM_BRANCH B INNER JOIN @ENT_TEMP_ROOT C ON C.CR_ACCT = B.DAO_CODE AND LEN(C.CR_ACCT)>9 UPDATE @ENT_TEMP_ROOT SET DR_ACCT = B.TEL, DR_NAME = B.PROVICE FROM CM_BRANCH B INNER JOIN @ENT_TEMP_ROOT C ON C.DR_ACCT = B.DAO_CODE AND LEN(C.DR_ACCT)>9 --IF @TRN_TYPE = 'ADD_NEW' OR @TRN_TYPE = 'ASS_USE' OR @TRN_TYPE='ASS_TRANSFER' --BEGIN SELECT SUM(AG.AMT) AMT, AG.DR_ACCT, AG.DR_ACCT_NAME, AG.DR_BRN, AG.ACCT,SUM(REF_ID) REF_ID, AG.DR_D DR_D, AG.CR_C FROM ( SELECT A.AMT, A.DR_ACCT AS DR_ACCT, ISNULL(A.DR_NAME,[dbo].[FN_GET_ACC_NAME](A.DR_ACCT)) AS DR_ACCT_NAME, '' AS DR_BRN, N'Nợ/Debit' AS ACCT,ID AS REF_ID, A.DR_BRN AS DR_D, A.CR_ACCT AS CR_C FROM @ENT_TEMP_ROOT A --WHERE LEN(A.DR_ACCT) <= 9 UNION SELECT A.AMT, A.CR_ACCT AS DR_ACCT, ISNULL(A.CR_NAME,[dbo].[FN_GET_ACC_NAME](A.CR_ACCT)) AS DR_ACCT_NAME, '' AS DR_BRN, N'Có/Credit' AS ACCT,ID AS REF_ID, A.CR_BRN AS DR_D, A.CR_ACCT AS CR_C FROM @ENT_TEMP_ROOT A --WHERE LEN(A.CR_ACCT) <= 9 --ORDER BY ID, ACCT DESC ) AG -- LUCTV 03062020 CHINH SUA THEO HĐ BAO HANH BAO TRI: BO SUNG CHI LAY NHUNG DONG HACH TOAN CO SO TIEN LON HON KHONG WHERE AG.AMT >0 --- GROUP BY AG.ACCT, AG.DR_ACCT, AG.DR_ACCT_NAME,AG.DR_BRN,AG.DR_ACCT, AG.DR_D, AG.CR_C ORDER BY AG.ACCT DESC, SUM(REF_ID), AG.CR_C, AG.DR_ACCT DESC --END --ELSE --BEGIN -- --IF LEFT(@p_REF_ID,4) = 'ASSL'--THANH LY TAI SAN -- SELECT SUM(AG.AMT) AMT, AG.DR_ACCT, AG.DR_ACCT_NAME, AG.DR_BRN, AG.ACCT,SUM(REF_ID) REF_ID, AG.DR_D DR_D -- FROM -- ( -- SELECT A.AMT, A.DR_ACCT AS DR_ACCT, [dbo].[FN_GET_ACC_NAME](A.DR_ACCT) AS DR_ACCT_NAME, A.ASSET_ID AS DR_BRN, N'Nợ/Debit' AS ACCT,ID AS REF_ID, A.DR_BRN AS DR_D -- FROM @ENT_TEMP_ROOT A -- UNION -- SELECT A.AMT, A.CR_ACCT AS DR_ACCT, [dbo].[FN_GET_ACC_NAME](A.CR_ACCT) AS DR_ACCT_NAME, A.ASSET_ID AS DR_BRN, N'Có/Credit' AS ACCT,ID AS REF_ID, A.CR_BRN AS DR_D -- FROM @ENT_TEMP_ROOT A -- --ORDER BY ID, ACCT DESC -- ) AG -- GROUP BY AG.DR_ACCT, AG.DR_ACCT_NAME,AG.DR_BRN,AG.DR_ACCT,AG.ACCT, AG.DR_D -- ORDER BY AG.DR_BRN, AG.ACCT DESC --END DELETE @ENT_TEMP DELETE @ENT_TEMP_ROOT --------------------------DONE-------------------------- GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAY_INVOICE_LOG_Search]' GO ALTER PROC [dbo].[TR_REQ_PAY_INVOICE_LOG_Search] @p_REQ_PAYMENT_ID varchar(15) = NULL, @p_REQ_PAYMENT_CODE varchar(15) = NULL, @p_BRANCH_LOGIN VARCHAR(15) = NULL AS BEGIN declare @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN) SET @p_REQ_PAYMENT_ID =(SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE =@p_REQ_PAYMENT_CODE) SELECT A.*,B.REQ_PAY_ID,B.REQ_PAY_CODE REQ_PAY_CODE FROM TR_REQ_PAY_INVOICE_LOG A LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID LEFT JOIN TR_REQ_ADVANCE_PAYMENT C ON B.REF_ID = C.REQ_PAY_ID WHERE 1=1 AND (B.REQ_PAY_CODE LIKE '%'+ @p_REQ_PAYMENT_CODE +'%' OR @p_REQ_PAYMENT_CODE IS NULL OR @p_REQ_PAYMENT_CODE ='') AND B.BRANCH_CREATE IN (SELECT * FROM @tmp) ORDER BY A.EDITOR_DT DESC END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TL_SYS_ROLE_MAPPING_Del]' GO ALTER PROCEDURE [dbo].[TL_SYS_ROLE_MAPPING_Del] @p_ID INT = NULL AS BEGIN TRANSACTION --DECLARE @UserId INT,@RoleID INT --SELECT @UserId =C.ID,@RoleID =B.Id FROM TL_SYS_ROLE_MAPPING A LEFT JOIN dbo.AbpRoles B ON A.ROLE_NEW=B.DisplayName LEFT JOIN dbo.TL_USER C ON A.TLNAME=C.TLNANME WHERE A.ID=@p_ID --DELETE AbpUserRoles WHERE UserId=@UserId AND RoleId=@RoleID IF (SELECT AUTH_STATUS FROM TL_SYS_ROLE_MAPPING WHERE ID = @p_ID) = 'A' BEGIN UPDATE TL_SYS_ROLE_MAPPING SET RECORD_STATUS = '0', EXP_DATE ='2000-01-01', EFF_DATE ='2000-01-01' WHERE ID = @p_ID IF @@Error <> 0 GOTO ABORT END ELSE BEGIN Delete FROM TL_SYS_ROLE_MAPPING WHERE ID = @p_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'Altering [dbo].[TR_REQUEST_CAR_Ins]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_CAR_Ins] @p_REQ_CODE varchar(150) = NULL, @p_REQ_DT varchar(150) = NULL, @p_EMP_ID varchar(15) = NULL, @p_EMP_PHONE varchar(15) = NULL, @p_BRANCH_ID varchar(15) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_DEP_ID varchar(15) = NULL, @p_DEP_CREATE varchar(15) = NULL, @p_ORIGN nvarchar(100) = NULL, @p_DESTINATION nvarchar(100) = NULL, @p_IS_SEND_APPR varchar(15) = NULL, @p_SEND_APPR_DT varchar(20) = NULL, @p_SIGN_USER varchar(15) = NULL, @p_SIGN_DT varchar(20) = NULL, @p_FROM_DATE VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL, @p_NOTES nvarchar(MAX) = NULL, @p_CAR_ID varchar(15) = NULL, @p_DRIVER_ID varchar(15) = NULL, @p_QUANTITY_TRIP int = NULL, @p_NOTES_TRIP nvarchar(MAX) = NULL, @p_UNIT_TRIP varchar(5) = NULL, @p_TO_TRIP nvarchar(100) = NULL, @p_FROM_TRIP nvarchar(100) = NULL, @p_MILRAGE_TRIP int = NULL, @p_START_TIME_TRIP VARCHAR(20) = NULL, @p_QUANTITY_RETURN_TRIP int = NULL, @p_NOTES_RETURN_TRIP nvarchar(MAX) = NULL, @p_UNIT_RETURN_TRIP varchar(5) = NULL, @p_TO_RETURN_TRIP nvarchar(MAX) = NULL, @p_FROM_RETURN_TRIP nvarchar(MAX) = NULL, @p_MILRAGE_RETURN_TRIP int = NULL, @p_START_TIME_RETURN_TRIP VARCHAR(20) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_APPROVE_DT varchar(20) = NULL, @p_CREATE_DT varchar(20) = NULL, @p_MAKER_ID varchar(20) = NULL, @p_MAKER_PHONE varchar(20) = NULL, @p_IS_CONFIRM_COST varchar(1) = NULL, @p_IS_CONTRACT_CAR varchar(1) = NULL, @p_ListCarDT xml AS BEGIN TRANSACTION exec [TR_CODE_GenKey] 'TR_REQUEST_CAR', '','PYC-XE', @p_REQ_CODE OUT --IF EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' Result, '' REQ_ID, N'Số phiếu yêu cầu đã tồn tại' ErrorDesc -- RETURN '-1' --END --IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='') --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' Result, '' REQ_ID, N'Mã phiếu yêu cầu bắt buộc nhập' ErrorDesc -- RETURN '-1' --END --insert master DECLARE @l_REQ_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_CAR', @l_REQ_ID out IF @l_REQ_ID='' OR @l_REQ_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQUEST_CAR ( REQ_ID,REQ_CODE,CREATE_DT,MAKER_ID,EMP_ID,MAKER_PHONE,BRANCH_ID,BRANCH_CREATE,DEP_ID,DEP_CREATE,ORIGN,DESTINATION,REQ_DT,IS_SEND_APPR,FROM_DATE,TO_DATE,NOTES,IS_CONFIRM_COST,IS_CONTRACT_CAR,PROCESS_ID,UNIT_TRIP,TO_TRIP,FROM_TRIP,START_TIME_TRIP,NOTES_TRIP,QUANTITY_TRIP,UNIT_RETURN_TRIP,QUANTITY_RETURN_TRIP,START_TIME_RETURN_TRIP,FROM_RETURN_TRIP,TO_RETURN_TRIP,AUTH_STATUS ) VALUES ( @l_REQ_ID,@p_REQ_CODE,CONVERT(DATETIME, @p_CREATE_DT, 103),@p_MAKER_ID,@p_EMP_ID,@p_MAKER_PHONE,@p_BRANCH_ID,@p_BRANCH_CREATE,@p_DEP_ID,@p_DEP_CREATE,@p_ORIGN,@p_DESTINATION,CONVERT(DATETIME,@p_REQ_DT,103),@p_IS_SEND_APPR,CONVERT(DATETIME,@p_FROM_DATE,103),CONVERT(DATETIME,@p_TO_DATE,103),@p_NOTES,@p_IS_CONFIRM_COST,@p_IS_CONTRACT_CAR,'INSERT',@p_UNIT_TRIP,@p_TO_TRIP,@p_FROM_TRIP,CONVERT(DATETIME, @p_START_TIME_TRIP, 103),@p_NOTES_TRIP,@p_QUANTITY_TRIP,@p_UNIT_RETURN_TRIP,@p_QUANTITY_TRIP,CONVERT(DATETIME, @p_START_TIME_RETURN_TRIP, 103),@p_FROM_RETURN_TRIP,@p_TO_RETURN_TRIP,'E' ) IF @@Error <> 0 GOTO ABORT --INSERT INTO dbo.PL_PROCESS -- ( -- REQ_ID, -- PROCESS_ID, -- CHECKER_ID, -- APPROVE_DT, -- PROCESS_DESC, -- NOTES -- ) -- VALUES -- ( @l_REQ_ID, -- 'INSERT', -- @p_MAKER_ID, -- GETDATE(), -- N'Thêm mới PYC xe thành công' , -- N'Thêm mới PYC xe' -- ) COMMIT TRANSACTION SELECT '0' as Result, @l_REQ_ID REQ_ID,@p_REQ_CODE REQ_CODE, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS RESULT RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TL_SYS_ROLE_MAPPING_Upd]' GO ALTER PROCEDURE [dbo].[TL_SYS_ROLE_MAPPING_Upd] @p_ID INT = NULL, @p_ROLE_OLD varchar(100) = NULL, @p_ROLE_NEW varchar(100) = NULL, @p_TLNAME varchar(20) = NULL, @p_DEP_ID varchar(20) = NULL, @p_BRANCH_ID varchar(20) = NULL, @p_EFF_DATE VARCHAR(20) = NULL, @p_EXP_DATE VARCHAR(20) = NULL, @p_NOTES nvarchar(200) = NULL, @p_TLFullName nvarchar(200) = NULL, @p_DEP_NAME nvarchar(200) = NULL, @p_BRANCH_NAME nvarchar(200) = NULL AS declare @ErrorDesc nvarchar(500) = '' BEGIN TRANSACTION IF @p_EFF_DATE = '' SET @p_EFF_DATE = NULL IF @p_EXP_DATE = '' SET @p_EXP_DATE = NULL DECLARE @UserId VARCHAR(20),@RoleID VARCHAR(20),@ROLE_NEW_ID INT,@ROLE_OLD_ID INT SELECT @UserId=ID,@p_ROLE_OLD=RoleName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME SELECT @ROLE_NEW_ID =Id FROM dbo.AbpRoles WHERE DisplayName= @p_ROLE_NEW SELECT @ROLE_OLD_ID= B.Id FROM dbo.TL_SYS_ROLE_MAPPING A LEFT JOIN dbo.AbpRoles B ON A.ROLE_NEW=B.DisplayName WHERE A.ID= @p_ID UPDATE TL_SYS_ROLE_MAPPING SET ROLE_OLD = @p_ROLE_OLD, ROLE_NEW = @p_ROLE_NEW, TLNAME = @p_TLNAME, DEP_ID = @p_DEP_ID, BRANCH_ID = @p_BRANCH_ID, EFF_DATE = CONVERT(DATETIME, @p_EFF_DATE, 103) , EXP_DATE = CONVERT(DATETIME, @p_EXP_DATE, 103), NOTES = @p_NOTES, IS_MAIN = 1 WHERE ID = @p_ID -- IF(NOT EXISTS(SELECT 1 FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME AND RoleName=@p_ROLE_NEW) AND NOT EXISTS(SELECT 1 FROM dbo.AbpUserRoles WHERE UserId=@UserId AND RoleId=@ROLE_NEW_ID) AND @p_TLNAME IS NOT NULL) BEGIN DELETE AbpUserRoles WHERE UserId=@UserId AND RoleId=@ROLE_OLD_ID INSERT INTO dbo.AbpUserRoles ( CreationTime,CreatorUserId,RoleId,TenantId,UserId ) VALUES ( SYSDATETIME(),'34087',@ROLE_NEW_ID,1,@UserId ) END UPDATE TL_SYS_ROLE_MAPPING SET ROLE_OLD = @p_ROLE_OLD, ROLE_NEW = @p_ROLE_NEW, TLNAME = @p_TLNAME, DEP_ID = @p_DEP_ID, BRANCH_ID = @p_BRANCH_ID, EFF_DATE = CONVERT(DATETIME, @p_EFF_DATE, 103) , EXP_DATE = CONVERT(DATETIME, @p_EXP_DATE, 103), NOTES = @p_NOTES WHERE ID = @p_ID COMMIT TRANSACTION SELECT '0' as Result,'' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @ErrorDesc ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_MASTER_SendAppr]' GO ALTER PROCEDURE [dbo].[BUD_MASTER_SendAppr] @p_BUILDING_ID VARCHAR(15) = NULL, @p_USER_LOGIN VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL AS IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND IS_SEND_APPR = 'Y')) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Gửi yêu cầu phê duyệt thất bại. Thông tin trụ sở đã được gửi yêu cầu phê duyệt trước đó' ErrorDesc RETURN '-1' END BEGIN TRANSACTION UPDATE BUD_MASTER SET IS_SEND_APPR = 'Y', SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), SIGN_DT = NULL, CHECKER_ID = NULL, APPROVE_DT = NULL, AUTH_STATUS = 'U' WHERE BUILDING_ID = @p_BUILDING_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @l_IS_SEND_APPR VARCHAR(15) SET @l_IS_SEND_APPR = (SELECT IS_SEND_APPR FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID) DECLARE @p_MESSAGE NVARCHAR(MAX), @p_BUILDING_NAME NVARCHAR(1000) SET @p_BUILDING_NAME = (SELECT BUILDING_NAME FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID) -----------------TH CÓ CHỌN CẤP DUYỆT TRUNG GIAN------------- IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND SIGN_USER IS NOT NULL)) BEGIN SET @p_MESSAGE = N'Thông tin trụ sở: '+@p_BUILDING_NAME+ N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' END ELSE BEGIN SET @p_MESSAGE = N'Thông tin trụ sở: '+@p_BUILDING_NAME+ N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' END INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_BUILDING_ID, 'SEND', @p_USER_LOGIN, GETDATE(), N'Người tạo gửi phê duyệt thành công', N'Người tạo gửi phê duyệt') IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' BUILDING_ID, @l_IS_SEND_APPR IS_SEND_APPR, @p_MESSAGE ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUILDING_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_DEPARTMENT_Upd]' GO ALTER PROCEDURE [dbo].[CM_DEPARTMENT_Upd] @p_DEP_ID varchar(15) = null , @p_DEP_CODE varchar(15) = NULL , @p_DEP_NAME nvarchar(200) = NULL , @p_DAO_CODE varchar(40) = NULL , @p_DAO_NAME nvarchar(500) = NULL , @p_BRANCH_ID varchar(15) = NULL , @p_GROUP_ID varchar(15) = NULL , @p_TEL 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_FATHER_ID VARCHAR(15) = NULL, @p_KHOI_ID VARCHAR(20)=NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM CM_DEPARTMENT WHERE DEP_ID = @p_DEP_ID)) SET @ERRORSYS = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END IF (EXISTS (SELECT * FROM dbo.CM_DEPARTMENT WHERE DEP_ID<>@p_DEP_ID AND BRANCH_ID =@p_BRANCH_ID AND DEP_CODE =@p_DEP_CODE)) BEGIN SELECT '-1' Result, '' ID, N'Mã phòng ban đã tồn tại ở đơn vị: '+(SELECT BRANCH_NAME FROM dbo.CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_ID) ErrorDesc RETURN '0' END BEGIN TRANSACTION UPDATE CM_DEPARTMENT SET [DEP_CODE] = @p_DEP_CODE,[DEP_NAME] = @p_DEP_NAME, [DAO_CODE] = @p_DAO_CODE,[DAO_NAME] = @p_DAO_NAME,[BRANCH_ID] = @p_BRANCH_ID,[GROUP_ID] = @p_GROUP_ID, [TEL] = @p_TEL,[NOTES] = @p_NOTES,[RECORD_STATUS] = @p_RECORD_STATUS,[KHOI_ID]=@p_KHOI_ID, [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), [FATHER_ID] = @p_FATHER_ID WHERE DEP_ID= @p_DEP_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_DEP_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'Altering [dbo].[BUD_MASTER_Confirm]' GO ALTER PROCEDURE [dbo].[BUD_MASTER_Confirm] ------STORE duyệt cấp phê duyệt trung gian----------- @p_BUILDING_ID varchar(15), @p_SIGN_USER VARCHAR(12), @p_SIGN_DT VARCHAR(20) AS IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Xác nhận thất bại. Thông tin trụ sở đang bị trả về' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND (SIGN_DT IS NOT NULL OR SIGN_DT <> ''))) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Xác nhận thất bại. Thông tin trụ sở đã được cấp trung gian xác nhận trước đó' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT BUILDING_ID FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Xác nhận thất bại. Thông tin trụ sở đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END BEGIN TRANSACTION -------Trường hợp người duyệt là cấp phê duyệt trung gian, update SIGN_DT--------- DECLARE @BUILDING_NAME NVARCHAR(500) = (SELECT BUILDING_NAME FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID) UPDATE BUD_MASTER SET SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103), AUTH_STATUS = 'U' WHERE BUILDING_ID = @p_BUILDING_ID IF @@ERROR <> 0 GOTO ABORT INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_BUILDING_ID, 'APPROVE', @p_SIGN_USER, GETDATE(), N'Cấp trung gian xác nhận thành công' , N'Cấp trung gian xác nhận' ) IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' CONTRACT_ID, N'Thông tin trụ sở: ' +@BUILDING_NAME+ N' đã được xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt.' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_MASTER_CheckAssetExists]' GO ALTER PROCEDURE [dbo].[BUD_MASTER_CheckAssetExists] @p_ASSET_ID VARCHAR(15), @p_BUILDING_ID VARCHAR(15) AS BEGIN DECLARE @p_ASSET_CODE NVARCHAR(100) = (SELECT TOP 1 ASSET_CODE FROM ASS_MASTER WHERE ASSET_ID = @p_ASSET_ID) DECLARE @p_BUILDING_NAME NVARCHAR(1000), @d_BUILDING_ID VARCHAR(15) IF(EXISTS(SELECT * FROM BUD_MASTER WHERE ASSET_ID = @p_ASSET_ID)) BEGIN SET @d_BUILDING_ID = ( SELECT TOP 1 BUILDING_ID FROM BUD_MASTER WHERE ASSET_ID = @p_ASSET_ID ) IF(@p_BUILDING_ID <> @d_BUILDING_ID OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '') BEGIN SET @p_BUILDING_NAME = ( SELECT TOP 1 BUILDING_NAME FROM BUD_MASTER WHERE ASSET_ID =@p_ASSET_ID ) SELECT '-1' as Result, N'Mã tài sản: '+@p_ASSET_CODE+ N' đã được sử dụng để khai báo thông tin trụ sở: ' + @p_BUILDING_NAME + ' ('+@d_BUILDING_ID+ N'). Vui lòng chọn bất động sản khác' ErrorDesc RETURN '-1' END ELSE BEGIN SELECT '0' as Result, '' ErrorDesc RETURN '0' END END ELSE BEGIN SELECT '0' as Result, '' ErrorDesc RETURN '0' END END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_MASTER_ById]' GO ALTER PROCEDURE [dbo].[BUD_MASTER_ById] @BUILDING_ID varchar(15) AS SELECT A.*, AM.ASSET_CODE, B.TLFullName AS SIGN_USER_FULLNAME, C.BRANCH_NAME, D.SUP_CODE, D.SUP_NAME, E.LENGTH, E.WIDTH, F.CONTRACT_CODE, F.CONTRACT_NAME, CBU.BRANCH_NAME AS BRANCH_USE_NAME, CASE WHEN F.CONT_TYPE = 'DK' THEN ( SELECT ISNULL(SUM(RESULT.AMMOUNT) ,0) FROM ( SELECT B.AMT_PAY AS AMMOUNT FROM TR_REQ_PAY_PERIOD B INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON B.REQ_PAY_ID = C.REQ_PAY_ID WHERE B.PAY_TYPE ='ADV_PAY' AND B.AUTH_STATUS_KT ='A' AND B.CONTRACT_ID = F.CONTRACT_ID AND B.AUTH_STATUS_KT IS NOT NULL AND (B.REQ_PAY_ID IN(SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE RECORD_STATUS <> '0')) UNION SELECT B.AMT_PAY AS AMMOUNT FROM TR_REQ_PAY_PERIOD B INNER JOIN TR_REQ_PAYMENT C ON B.REQ_PAY_ID = C.REQ_PAY_ID WHERE B.PAY_TYPE ='PAY' AND B.PROCESS ='1' AND B.AUTH_STATUS_KT ='A' AND B.CONTRACT_ID = F.CONTRACT_ID ) AS RESULT ) ELSE ( SELECT ISNULL(SUM(TC.AMOUNT), 0) FROM TR_CONTRACT_PAYMENT TC WHERE TC.CONTRACT_ID = F.CONTRACT_ID ) END AS TOTAL_RENT_ATM --( -- SELECT SUM(TC.AMOUNT) -- FROM TR_CONTRACT_PAYMENT TC -- WHERE TC.CONTRACT_ID = F.CONTRACT_ID --) --AS TOTAL_RENT_ATM FROM BUD_MASTER A ----------BAODNQ 26/1/2022: Kết thêm bảng TL_USER--------- LEFT JOIN TL_USER B ON A.SIGN_USER = B.TLNANME LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID LEFT JOIN CM_BRANCH CBU ON A.BRANCH_USE_ID = CBU.BRANCH_ID LEFT JOIN CM_SUPPLIER D ON A.SUP_ID = D.SUP_ID LEFT JOIN RET_MASTER E ON A.ASSET_ID = E.ASSET_ID LEFT JOIN TR_CONTRACT F ON A.CONTRACT_ID = F.CONTRACT_ID LEFT JOIN ASS_MASTER AM ON E.ASSET_ID = AM.ASSET_ID WHERE BUILDING_ID= @BUILDING_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAY_INVOICE_UPD_App]' GO ALTER PROCEDURE [dbo].[TR_REQ_PAY_INVOICE_UPD_App] @p_UPD_ID VARCHAR(15)= NULL, @p_CHECKER_ID VARCHAR(15) AS BEGIN TRANSACTION UPDATE TR_REQ_PAY_INVOICE_UPD SET AUTH_STATUS ='A', APPROVE_DT= GETDATE(), CHECKER_ID=@p_CHECKER_ID WHERE UP_ID =@p_UPD_ID -- UPDATE LAI VAO BANG HOA DON CUA THANH TOAN 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(50) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(500) = NULL, @PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2),@PRICE_KT DECIMAL(18,2), @VAT_KT DECIMAL(18,2),@TOTAL_AMT_KT DECIMAL(18,2),@REQ_PAY_ID VARCHAR(15),@TYPE_VAT VARCHAR(15), @TYPE_FUNC VARCHAR(15), @MAKER_ID VARCHAR(20), @CREATE_DT VARCHAR(20), @CREATE_DT_KT VARCHAR(20), @MAKER_ID_KT VARCHAR(20), @AUTH_STATUS VARCHAR(20), @AUTH_STATUS_KT VARCHAR(20), @EDITOR_ID VARCHAR(20) --- BAT DAU KHAI BAO CURSOR DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID=(SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE_UPD WHERE UP_ID=@p_UPD_ID) AND TYPE_FUNC='KT' DECLARE XmlData CURSOR FOR SELECT A.TRANS_NO, A.TRANS_DT,A.INVOICE_SIGN, A.INVOICE_NO_SIGN, A.INVOICE_NO, A.INVOICE_DT,A.SELLER,A.TAX_NO,A.GOODS_NAME,A.PRICE,A.TAX,A.VAT,A.NOTE,A.VAT_RATE,A.PRICE_KT,A.VAT_KT,A.TOTAL_AMT_KT,A.REQ_PAY_ID,A.MAKER_ID,A.MAKER_ID_KT,A.TYPE_VAT,A.TYPE_FUNC, A.EDITOR_ID, A.CREATE_DT, A.CREATE_DT_KT, A.AUTH_STATUS, A.AUTH_STATUS_KT FROM TR_REQ_PAY_INVOICE_UPD_DT A WHERE A.UPD_ID=@p_UPD_ID OPEN XmlData FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER , @TAX_NO ,@GOODS_NAME , @PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@PRICE_KT,@VAT_KT ,@TOTAL_AMT_KT ,@REQ_PAY_ID,@MAKER_ID , @MAKER_ID_KT,@TYPE_VAT, @TYPE_FUNC, @EDITOR_ID, @CREATE_DT, @CREATE_DT_KT, @AUTH_STATUS, @AUTH_STATUS_KT WHILE @@fetch_status=0 BEGIN DECLARE @p_REQ_INV_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT; IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME, PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC, EDITTOR_DT) VALUES (@p_REQ_INV_ID,@REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103) ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME , @PRICE ,@TAX,@VAT,@NOTES, @MAKER_ID, CONVERT(DATE,@CREATE_DT,103), @EDITOR_ID,'U',NULL,NULL, CONVERT(DATE,@CREATE_DT_KT,103),@MAKER_ID_KT, @AUTH_STATUS_KT,NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE,'VND',1,@PRICE_KT,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC, GETDATE()) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER , @TAX_NO ,@GOODS_NAME , @PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@PRICE_KT,@VAT_KT ,@TOTAL_AMT_KT ,@REQ_PAY_ID,@MAKER_ID , @MAKER_ID_KT,@TYPE_VAT, @TYPE_FUNC, @EDITOR_ID, @CREATE_DT, @CREATE_DT_KT, @AUTH_STATUS, @AUTH_STATUS_KT END; CLOSE XmlData; DEALLOCATE XmlData; --- Luu log chinh sua INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =(SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE_UPD WHERE UP_ID=@p_UPD_ID) 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'Altering [dbo].[BUD_CONTRACT_MASTER_SendAppr]' GO ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_SendAppr] @p_CONTRACT_ID VARCHAR(15) = NULL, @p_USER_LOGIN VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL AS IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND IS_SEND_APPR = 'Y')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Gửi yêu cầu phê duyệt thất bại. Thông tin khai báo DTSD nội bộ đã được gửi yêu cầu phê duyệt trước đó' ErrorDesc RETURN '-1' END BEGIN TRANSACTION UPDATE BUD_CONTRACT_MASTER SET IS_SEND_APPR = 'Y', SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), SIGN_DT = NULL, CHECKER_ID = NULL, APPROVE_DT = NULL, AUTH_STATUS = 'U' WHERE CONTRACT_ID = @p_CONTRACT_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @l_IS_SEND_APPR VARCHAR(15) SET @l_IS_SEND_APPR = (SELECT IS_SEND_APPR FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID) DECLARE @p_MESSAGE NVARCHAR(MAX) ---------------TH GỬI PHÊ DUYỆT CHO CẤP TRUNG GIAN------------- IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND SIGN_USER IS NOT NULL)) BEGIN SET @p_MESSAGE = N'Thông tin khai báo DTSD nội bộ: '+@p_CONTRACT_ID+ N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' END ----------TH KO GỬI CHO CẤP DUYỆT TRUNG GIAN (GỬI THẲNG TRƯỞNG ĐV)--------- ELSE BEGIN SET @p_MESSAGE = N'Thông tin khai báo DTSD nội bộ: '+@p_CONTRACT_ID+ N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' END INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_CONTRACT_ID, 'SEND', @p_USER_LOGIN, GETDATE(), N'Người tạo gửi phê duyệt thành công', N' Người tạo gửi phê duyệt') IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' CONTRACT_ID, @l_IS_SEND_APPR IS_SEND_APPR, @p_MESSAGE ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_CONTRACT_MASTER_Confirm]' GO ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_Confirm] ------STORE duyệt cấp phê duyệt trung gian----------- @p_CONTRACT_ID varchar(15), @p_SIGN_USER VARCHAR(12), @p_SIGN_DT VARCHAR(20) AS IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Xác nhận thất bại. Thông tin khai báo DTSD nội bộ đang bị trả về' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND IS_SEND_APPR = 'Y' AND (SIGN_DT IS NOT NULL OR SIGN_DT <> ''))) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Xác nhận thất bại. Thông tin khai báo DTSD nội bộ đã được cấp trung gian xác nhận trước đó' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT CONTRACT_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Xác nhận thất bại. Thông tin khai báo DTSD nội bộ đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END BEGIN TRANSACTION -------Trường hợp người duyệt là cấp phê duyệt trung gian, update SIGN_DT--------- UPDATE BUD_CONTRACT_MASTER SET SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103), AUTH_STATUS = 'U' WHERE CONTRACT_ID = @p_CONTRACT_ID IF @@ERROR <> 0 GOTO ABORT INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONTRACT_ID, 'APPROVE', @p_SIGN_USER, GETDATE(), N'Cấp trung gian xác nhận thành công' , N'Cấp trung gian xác nhận' ) IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' CONTRACT_ID, N'Thông tin khai báo DTSD nội bộ: ' +@p_CONTRACT_ID+ N' đã được xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt.' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[rpt_RET_CN_PGD_RENT_Excel]' GO ALTER PROCEDURE [dbo].[rpt_RET_CN_PGD_RENT_Excel] @p_FROM_DT VARCHAR(20) = null, @p_TO_DT VARCHAR(20) = null, @p_BRANCH_ID VARCHAR(15) = NULL, @P_LEVEL VARCHAR(15) = 'ALL' AS BEGIN DECLARE @t_BRANCH_TABLE TABLE(BRANCH_ID VARCHAR(15)) IF(@P_LEVEL = 'ALL') BEGIN INSERT INTO @t_BRANCH_TABLE SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID) END IF(@P_LEVEL = 'UNIT') BEGIN INSERT INTO @t_BRANCH_TABLE SELECT @p_BRANCH_ID END DECLARE @FROM_DT DATETIME = CONVERT(DATETIME, @p_FROM_DT,103), @TO_DT DATETIME = CONVERT(DATETIME, @p_TO_DT,103) DECLARE @t_RET_PRICE_TABLE TABLE ( RET_R_H_ID VARCHAR(15), PRICE_DT DATETIME, PRICE_END_DT DATETIME ) INSERT INTO @t_RET_PRICE_TABLE SELECT RP.RET_R_H_ID, RP.PRICE_DT,RP.PRICE_END_DT FROM RET_PRICE RP WHERE (RP.PRICE_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') AND (RP.PRICE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') --AND (RP.PRICE_END_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') ;WITH RET_RH_TABLE AS( SELECT A.RET_R_H_ID, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'KV') AS KHU_VUC, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'CN') AS CHI_NHANH, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'PGD') AS PGD, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'PGD') AS CHI_NHANH_PGD, CRU.REGION_NAME AS KHU_VUC, CBU.BRANCH_NAME AS CHI_NHANH_PGD, A.RET_ADDR AS ADDRESS, B.CONTRACT_CODE, B.CONTRACT_ID, A.START_DT, A.END_DT, -----GIÁ THUÊ(THÁNG) ĐÃ THUẾ KỲ ĐẦU TIÊN-------- ( SELECT TOP 1 ISNULL(RP.PRICE, 0) FROM RET_PRICE RP WHERE RP.RET_R_H_ID = A.RET_R_H_ID ) AS INIT_PRICE, -----GIÁ THUÊ(THÁNG) ĐÃ THUẾ KỲ LIỀN KỀ TRƯỚC ĐÓ------- ( SELECT TOP 1 ISNULL(RP.PRICE, 0) FROM RET_PRICE RP WHERE RP.RET_R_H_ID = A.RET_R_H_ID AND RP.PRICE_END_DT <= ( SELECT TOP 1 TP.PRICE_DT FROM @t_RET_PRICE_TABLE TP WHERE TP.RET_R_H_ID = A.RET_R_H_ID ORDER BY TP.PRICE_END_DT DESC ) ORDER BY RP.PRICE_END_DT DESC ) AS LAST_PHASE_PRICE, -----GIÁ THUÊ(THÁNG) ĐÃ THUẾ HIỆN TẠI-------- ( SELECT TOP 1 ISNULL(RP.PRICE, 0) FROM RET_PRICE RP WHERE RP.RET_R_H_ID = A.RET_R_H_ID AND (RP.PRICE_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') AND (RP.PRICE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') --AND (RP.PRICE_END_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') ORDER BY RP.PRICE_DT DESC ) AS CURRENT_PRICE, ------KỲ THANH TOÁN(THÁNG)---------- ( SELECT TOP 1 RP.PAY_PHASE FROM RET_PRICE RP WHERE RP.RET_R_H_ID = A.RET_R_H_ID AND (RP.PRICE_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') AND (RP.PRICE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') --AND (RP.PRICE_END_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') ORDER BY RP.PRICE_DT DESC ) AS PAY_PHASE, --------SỐ THÁNG CỦA KỲ THANH TOÁN------------- ( SELECT TOP 1 [dbo].[FN_DATE_DIFF_BETWEEN]( RP.PRICE_DT, RP.PRICE_END_DT, 'MONTH' ) FROM RET_PRICE RP WHERE RP.RET_R_H_ID = A.RET_R_H_ID AND (RP.PRICE_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') AND (RP.PRICE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') ORDER BY RP.PRICE_DT DESC ) AS PAY_PHASE_MONTH, -------SỐ TIỀN THANH TOÁN KỲ HIỆN TẠI------ ( SELECT TOP 1 RP.TOTAL_AMT_PAY_PHASE FROM RET_PRICE RP WHERE RP.RET_R_H_ID = A.RET_R_H_ID AND (RP.PRICE_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') AND (RP.PRICE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') --AND (RP.PRICE_END_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') ORDER BY RP.PRICE_DT DESC ) AS PAY_AMOUNT, ( -----------------SỐ TIỀN THANH TOÁN KỲ TIẾP THEO LIỀN KỀ----------- SELECT TOP 1 RP.TOTAL_AMT_PAY_PHASE FROM RET_PRICE RP WHERE RP.RET_R_H_ID = A.RET_R_H_ID AND RP.PRICE_DT >= ( SELECT TOP 1 TP.PRICE_END_DT FROM @t_RET_PRICE_TABLE TP WHERE TP.RET_R_H_ID = A.RET_R_H_ID ORDER BY TP.PRICE_END_DT DESC ) ) AS AMT_NEXT_PAYMENT_PHASE FROM REAL_ESTATE_R_H A LEFT JOIN TR_CONTRACT B ON A.TR_CONTRACT_ID = B.CONTRACT_ID LEFT JOIN CM_BRANCH CBU ON A.BRANCH_USE = CBU.BRANCH_ID -- đơn vị sử dụng LEFT JOIN CM_REGIONS CRU ON CBU.REGION_ID = CRU.REGION_ID -- khu vực WHERE A.AUTH_STATUS = 'A' AND A.RECORD_STATUS = '1' AND A.BRANCH_CREATE IN (SELECT BRANCH_ID FROM @t_BRANCH_TABLE) --AND (CONVERT(DATETIME,A.START_DT, 103) >= CONVERT(DATETIME, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '') --AND (CONVERT(DATETIME, A.END_DT, 103) <= CONVERT(DATETIME, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '') ) SELECT ROW_NUMBER() OVER (ORDER BY RESULT.RET_R_H_ID ASC) AS STT, RESULT.*, --[dbo].[FN_CALCULATE_VAT_AMT_RET_R_H](RESULT.INIT_PRICE) AS INIT_VAT, --[dbo].[FN_CALCULATE_VAT_AMT_RET_R_H](RESULT.CURRENT_PRICE) AS CURRENT_VAT --------THUẾ NỘP------- [dbo].[FN_CALCULATE_VAT_AMT_RET_R_H](RESULT.PAY_AMOUNT) AS VAT_PAY_AMMOUNT FROM RET_RH_TABLE RESULT --SELECT --ROW_NUMBER() OVER (ORDER BY A.RET_R_H_ID ASC) AS STT, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'KV') AS KHU_VUC, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'CN') AS CHI_NHANH, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE,'PGD') AS PGD, --A.RET_ADDR AS ADDRESS, --B.CONTRACT_CODE, --B.CONTRACT_ID, --A.START_DT, --A.END_DT, -------GIÁ THUÊ(THÁNG) ĐÃ THUẾ KỲ ĐẦU TIÊN-------- --( -- SELECT TOP 1 ISNULL(RP.PRICE, 0) -- FROM RET_PRICE RP -- WHERE RP.RET_R_H_ID = A.RET_R_H_ID --) --AS INIT_PRICE, --0 AS INIT_VAT, -------GIÁ THUÊ(THÁNG) ĐÃ THUẾ HIỆN TẠI-------- --( -- SELECT TOP 1 ISNULL(RP.PRICE, 0) -- FROM RET_PRICE RP -- WHERE RP.RET_R_H_ID = A.RET_R_H_ID -- AND (RP.PRICE_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') -- AND (RP.PRICE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') -- --AND (RP.PRICE_END_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') -- ORDER BY RP.PRICE_DT DESC --) --AS CURRENT_PRICE, --0 AS CURRENT_VAT, --( -- SELECT TOP 1 RP.PAY_PHASE -- FROM RET_PRICE RP -- WHERE RP.RET_R_H_ID = A.RET_R_H_ID -- AND (RP.PRICE_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') -- AND (RP.PRICE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') -- --AND (RP.PRICE_END_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') -- ORDER BY RP.PRICE_DT DESC --) --AS PAY_PHASE, --( -- SELECT TOP 1 RP.TOTAL_AMT_PAY_PHASE -- FROM RET_PRICE RP -- WHERE RP.RET_R_H_ID = A.RET_R_H_ID -- AND (RP.PRICE_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') -- AND (RP.PRICE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') -- --AND (RP.PRICE_END_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') -- ORDER BY RP.PRICE_DT DESC --) --AS PAY_AMOUNT, --( -- -----------------THANH TOÁN KỲ TIẾP THEO----------- -- SELECT TOP 1 RP.TOTAL_AMT_PAY_PHASE -- FROM RET_PRICE RP -- WHERE RP.RET_R_H_ID = A.RET_R_H_ID -- AND RP.PRICE_DT >= -- ( -- SELECT TOP 1 PRICE_END_DT -- FROM @t_RET_PRICE_TABLE TP -- WHERE TP.RET_R_H_ID = A.RET_R_H_ID -- ORDER BY PRICE_END_DT DESC -- ) --) --AS AMT_NEXT_PAYMENT_PHASE --FROM REAL_ESTATE_R_H A --LEFT JOIN TR_CONTRACT B ON A.TR_CONTRACT_ID = B.CONTRACT_ID --WHERE A.AUTH_STATUS = 'A' --AND A.RECORD_STATUS = '1' --AND A.BRANCH_CREATE IN (SELECT BRANCH_ID FROM @t_BRANCH_TABLE) ----AND (CONVERT(DATETIME,A.START_DT, 103) >= CONVERT(DATETIME, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '') ----AND (CONVERT(DATETIME, A.END_DT, 103) <= CONVERT(DATETIME, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '') END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_CHECK_ROLE_APPROVE]' GO ALTER PROCEDURE [dbo].[TR_CHECK_ROLE_APPROVE] @TYPE VARCHAR(15) = NULL, @p_REQ_ID varchar(15) = NULL, @p_USER_LOGIN varchar(15) = NULL AS BEGIN TRANSACTION IF(@TYPE <> 'ADV_PAY') BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN AND TYPE_JOB IN ('TP','KS'))) BEGIN ROLLBACK TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' END END -- KHAI BAO THEM ROLE NHAN UY QUYEN DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50)) DECLARE @TABLE_ROLE2 TABLE (ROLE_AUTH VARCHAR(50)) DECLARE @TABLE_DEP TABLE (ROLE_NEW VARCHAR(50), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20)) DECLARE @ROLE_ID VARCHAR(50) SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) INSERT INTO @TABLE_ROLE SELECT @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) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR (EFF_DATE IS NULL OR EXP_DATE IS NULL) ) INSERT INTO @TABLE_ROLE2 SELECT @ROLE_ID INSERT INTO @TABLE_ROLE2 SELECT ROLE_NEW 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) OR (EFF_DATE IS NULL OR EXP_DATE IS NULL) ) INSERT INTO @TABLE_DEP SELECT ROLE_NEW, BRANCH_ID, 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) OR (EFF_DATE IS NULL OR EXP_DATE IS NULL) ) DECLARE @AUTHOR TABLE ( ROLE_ID VARCHAR(20), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), BRANCH_TYPE VARCHAR(20) ) DECLARE @AUTHOR_DVDM TABLE ( ROLE_ID VARCHAR(20), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), DVDM_ID VARCHAR(20) ) DECLARE @AUTHOR_DMMS TABLE ( ROLE_ID VARCHAR(20), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), DMMS_ID VARCHAR(20) ) INSERT INTO @AUTHOR ( ROLE_ID, BRANCH_ID, DEP_ID, BRANCH_TYPE ) SELECT RoleName,TLSUBBRID,SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_USER TU LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID WHERE TLNANME=@p_USER_LOGIN UNION ALL SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,CB.BRANCH_TYPE 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='') LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID WHERE TLNANME=@p_USER_LOGIN UNION ALL SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_SYS_ROLE_MAPPING TM1 LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID WHERE TM1.TLNAME=@p_USER_LOGIN 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,CB.BRANCH_TYPE 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='') LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID WHERE TM1.TLNAME=@p_USER_LOGIN 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_USER_LOGIN 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_USER_LOGIN 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_USER_LOGIN 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_USER_LOGIN AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) INSERT INTO @AUTHOR_DMMS ( ROLE_ID, BRANCH_ID, DEP_ID, DMMS_ID ) SELECT RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TU.SECUR_CODE=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS') WHERE TLNANME=@p_USER_LOGIN UNION ALL SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID 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='') LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TU.SECUR_CODE=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS') WHERE TLNANME=@p_USER_LOGIN UNION ALL SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1 LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TM1.DEP_ID=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS') WHERE TM1.TLNAME=@p_USER_LOGIN 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,MS.DMMS_ID 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='') LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TM1.DEP_ID=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS') WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) IF(@TYPE='ADV_PAY') BEGIN IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Phiếu đã duyệt xong. Vui lòng chờ các giao dịch tiếp theo để thực hiện phê duyệt' ErrorDesc RETURN '-1' END -- NEU LA TPHC O HOI SO IF( EXISTS(SELECT * FROM TL_USER WHERE TLNANME = @p_USER_LOGIN AND TLSUBBRID = 'DV0001' AND DEP_ID = 'DEP000000000014' AND RoleName = 'GDDV')) --OR EXISTS(SELECT * FROM @TABLE_DEP WHERE ROLE_NEW = 'GDDV' AND BRANCH_ID = 'DV0001' AND DEP_ID = 'DEP000000000014') BEGIN IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND PROCESS <> '' AND PROCESS IS NOT NULL)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Bạn không có quyền phê duyệt' ErrorDesc RETURN '-1' END END --doanptt: THU KY DA DIEU PHOI CHO NHAN VIEN XU LY THI KHONG DUOC DUYET NUA ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB <> 'C' AND TLNAME =@p_USER_LOGIN AND TYPE_JOB IN ('KS'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Phiếu đang được điều phối đến nhân viên xử lý' ErrorDesc RETURN '-1' END ELSE IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_ID AND TRASFER_USER_RECIVE = @p_USER_LOGIN AND ISNULL(PROCESS,'') = '')) BEGIN PRINT '1' END ELSE IF ( ( EXISTS(SELECT * FROM TL_USER WHERE TLNANME = @p_USER_LOGIN AND TLSUBBRID = 'DV0001' AND RoleName = 'GDDV') OR EXISTS(SELECT * FROM @TABLE_DEP WHERE ROLE_NEW = 'GDDV' AND BRANCH_ID = 'DV0001') ) OR EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_ID AND TRASFER_USER_RECIVE = @p_USER_LOGIN AND ISNULL(PROCESS,'') = '') ) BEGIN ROLLBACK TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' END -- CAC TRUONG HOP CON LAI ELSE BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID) ) BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Bạn không có quyền phê duyệt' ErrorDesc RETURN '-1' END END END --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND BRANCH_CREATE ='DV0001') --BEGIN -- IF(EXISTS(SELECT * FROM PL_PROCESS WHERE CHEC)) --END --ELSE --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' ErrorDesc -- RETURN '-1' --END END ELSE IF(@TYPE='TR_REQ_PAYMENT') BEGIN IF((SELECT COUNT(*) FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_ID AND TRASFER_USER_RECIVE = @p_USER_LOGIN AND ISNULL(PROCESS, '') = '' AND AUTH_STATUS <> 'A') > 0) BEGIN ROLLBACK TRANSACTION SELECT '0' as Result, N'' ErrorDesc RETURN '0' END IF((SELECT COUNT(*) FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_ID AND TRASFER_USER_RECIVE = @p_USER_LOGIN AND ISNULL(PROCESS, '') = '0' AND AUTH_STATUS <> 'A') > 0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Phiếu đã duyệt xong. Vui lòng chờ các giao dịch tiếp theo để thực hiện phê duyệt' ErrorDesc RETURN '-1' END IF ( ( SELECT COUNT(*) FROM @TABLE_ROLE2 A WHERE A.ROLE_AUTH IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','KTT','GDK','KSV','TC','NVTC','TPTC','PPGD') ) = 0 ) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Bạn không có quyền phê duyệt' ErrorDesc RETURN '-1' END END ELSE IF (@TYPE ='CORE') BEGIN IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT ='A') OR EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT ='A')) BEGIN IF(EXISTS(SELECT * FROM PAY_ENTRIES_POST WHERE TRN_ID =@p_REQ_ID AND ISNULL(REF_NO,'') <> '')) BEGIN ROLLBACK TRANSACTION SELECT '6' as Result, N'Giao dịch được phê duyệt thành công trên AMS và hạch toán thành công vào hệ thống Core FC' ErrorDesc RETURN '6' END ELSE BEGIN ROLLBACK TRANSACTION SELECT '5' as Result, N'Giao dịch được phê duyệt thành công nhưng bắn vào Core FC thất bại. Vui lòng rà soát lại nội dung hạch toán (không được phép chứa kí tự & hoặc kí tự <)' ErrorDesc RETURN '5' END END ELSE BEGIN IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT <> 'A') AND EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT <>'A')) BEGIN ROLLBACK TRANSACTION SELECT '7' as Result, '' ErrorDesc RETURN '7' END END END ELSE IF(@TYPE ='CON_LAYOUT') BEGIN -- NEU CAP DUYET LA VAN PHONG THU KI TGD THI CO THE DUYET LUON IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKTGD' AND (@ROLE_ID ='TKTGD' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKTGD')))) BEGIN ROLLBACK TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' END -- NEU CAP DUYET LA VAN PHONG THU KI HDQT THI CO THE DUYET LUON IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKHDQT' AND (@ROLE_ID ='TKHDQT' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKHDQT')))) BEGIN ROLLBACK TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' END IF(EXISTS(SELECT * FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_REQ_ID AND PROCESS_ID ='APPROVE')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' END IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS PR WHERE PR.REQ_ID =@p_REQ_ID AND STATUS ='C' AND ( EXISTS(SELECT * FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND AUTH.BRANCH_ID=PR.BRANCH_ID AND (AUTH.DEP_ID=PR.DEP_ID OR AUTH.BRANCH_TYPE<>'HS')) OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND PR.DVDM_ID=AUTH.DVDM_ID) OR ( (PR.BRANCH_ID IS NULL OR PR.BRANCH_ID='') AND (PR.DVDM_ID ='' OR PR.DVDM_ID IS NULL) ) ))) BEGIN print 'haha' ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' END END ELSE BEGIN -- NEU CAP DUYET LA VAN PHONG THU KI TGD THI CO THE DUYET LUON IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKTGD' AND (@ROLE_ID ='TKTGD' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKTGD')))) BEGIN ROLLBACK TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' END -- NEU CAP DUYET LA VAN PHONG THU KI HDQT THI CO THE DUYET LUON IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKHDQT' AND (@ROLE_ID ='TKHDQT' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKHDQT')))) BEGIN ROLLBACK TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' END -- NEU CAP DUYET LA DVCM THI CO THE DUYET LUON IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='DVCM' AND (@ROLE_ID ='GDDV' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='GDDV')))) BEGIN ROLLBACK TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='DVDC' AND (@ROLE_ID ='GDDV' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='GDDV')))) BEGIN ROLLBACK TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN)) BEGIN ROLLBACK TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' END IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS PR WHERE PR.REQ_ID =@p_REQ_ID AND STATUS ='C' AND ( EXISTS(SELECT * FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND AUTH.BRANCH_ID=PR.BRANCH_ID AND (AUTH.DEP_ID=PR.DEP_ID OR AUTH.BRANCH_TYPE<>'HS')) OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND PR.DVDM_ID=AUTH.DVDM_ID) OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DMMS AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND EXISTS (SELECT * FROM dbo.TR_REQUEST_DOC A WHERE A.REQ_ID=@p_REQ_ID AND A.DMMS_ID=AUTH.DMMS_ID AND A.PROCESS_ID='DMMS')) OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND EXISTS (SELECT * FROM dbo.TR_REQUEST_DOC A WHERE A.REQ_ID=@p_REQ_ID AND A.DMMS_ID=AUTH.DVDM_ID AND A.PROCESS_ID='DMMS')) OR EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PR.ID AND TLNAME=@p_USER_LOGIN AND TYPE_JOB='KS' AND STATUS_JOB='C') OR ((PR.BRANCH_ID IS NULL OR PR.BRANCH_ID='') AND (PR.DVDM_ID ='' OR PR.DVDM_ID IS NULL) AND EXISTS(SELECT * FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID = PR.ROLE_USER)) ))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='APPROVE')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='APPROVE')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' END -- GiaNT IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='P' AND PROCESS_ID ='KT' AND (@ROLE_ID ='KSV' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='KSV')))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' END END COMMIT TRANSACTION print 'haha' 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'Altering [dbo].[BUD_CONTRACT_CUST_MASTER_SendAppr]' GO ALTER PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_SendAppr] @p_CONTRACT_ID VARCHAR(15) = NULL, @p_USER_LOGIN VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL AS IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND IS_SEND_APPR = 'Y')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Gửi yêu cầu phê duyệt thất bại. Thông tin hợp đồng khách thuê đã được gửi yêu cầu phê duyệt trước đó' ErrorDesc RETURN '-1' END BEGIN TRANSACTION UPDATE BUD_CONTRACT_CUST_MASTER SET IS_SEND_APPR = 'Y', SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), SIGN_DT = NULL, CHECKER_ID = NULL, APPROVE_DT = NULL, AUTH_STATUS = 'U' WHERE CONTRACT_ID = @p_CONTRACT_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @p_CONTRACT_NO NVARCHAR(MAX) = ( SELECT CONTRACT_NO FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID ) DECLARE @l_IS_SEND_APPR VARCHAR(15) SET @l_IS_SEND_APPR = (SELECT IS_SEND_APPR FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID) DECLARE @p_MESSAGE NVARCHAR(MAX) ---------------TH GỬI PHÊ DUYỆT CHO CẤP TRUNG GIAN------------- IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND SIGN_USER IS NOT NULL)) BEGIN SET @p_MESSAGE = N'Thông tin hợp đồng khách thuê: '+@p_CONTRACT_NO+ N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' END ----------TH KO GỬI CHO CẤP DUYỆT TRUNG GIAN (GỬI THẲNG TRƯỞNG ĐV)--------- ELSE BEGIN SET @p_MESSAGE = N'Thông tin hợp đồng khách thuê: '+@p_CONTRACT_NO+ N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' END INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_CONTRACT_ID, 'SEND', @p_USER_LOGIN, GETDATE(), N'Người tạo gửi phê duyệt thành công', N'Người tạo gửi phê duyệt') IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' CONTRACT_ID, @l_IS_SEND_APPR IS_SEND_APPR, @p_MESSAGE ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_BUDGET_YEAR_Ins]' GO ALTER PROC [dbo].[TR_BUDGET_YEAR_Ins] @p_GD_ID VARCHAR(20) = NULL, @p_BRANCH_ID VARCHAR(20), @p_BRANCH_CODE VARCHAR(20), @p_BRANCH_NAME NVARCHAR(250), @p_DEP_ID VARCHAR(20), @p_DEP_CODE VARCHAR(20), @p_DEP_NAME NVARCHAR(250), @p_BRANCH_TYPE VARCHAR(20) = NULL, @p_BUDGET_YEAR VARCHAR(20) = NULL, @p_BUDGET_TYPE VARCHAR(20) = NULL, @p_MAKER_ID VARCHAR(15)= NULL, @p_CHECKER_ID VARCHAR(15)= NULL, @p_ROLENAME VARCHAR(20) = NULL, @p_TLNAME VARCHAR(20) = NULL, @p_KHOI_ID VARCHAR(20) = NULL, @p_BUDGET_LIMIT_AMT DECIMAL(18, 2), @p_M1 DECIMAL(18, 0), @p_M2 DECIMAL(18, 0), @p_M3 DECIMAL(18, 0), @p_M4 DECIMAL(18, 0), @p_M5 DECIMAL(18, 0), @p_M6 DECIMAL(18, 0), @p_M7 DECIMAL(18, 0), @p_M8 DECIMAL(18, 0), @p_M9 DECIMAL(18, 0), @p_M10 DECIMAL(18, 0), @p_M11 DECIMAL(18, 0), @p_M12 DECIMAL(18, 0) AS BEGIN TRANSACTION -- validate here DECLARE @p_BUDGET_YEAR_LIMIT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_YEAR', @p_BUDGET_YEAR_LIMIT_ID OUT; IF @p_BUDGET_YEAR_LIMIT_ID='' OR @p_BUDGET_YEAR_LIMIT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT(BUDGET_YEAR_LIMIT_ID,GD_ID,BUDGET_TYPE,BRANCH_TYPE,BUDGET_YEAR,BUDGET_LIMIT_AMT, BRANCH_ID, DEP_ID, TLNAME, ROLENAME, KHOI_ID, MAKER_ID,CREATE_DT,RECORD_STATUS,AUTH_STATUS,CHECKER_ID,APPROVE_DT, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12) VALUES (@p_BUDGET_YEAR_LIMIT_ID,@p_GD_ID, 'nam',@p_BRANCH_TYPE, @p_BUDGET_YEAR, @p_BUDGET_LIMIT_AMT, @p_BRANCH_ID, @p_DEP_ID, @p_TLNAME, @p_ROLENAME, @p_KHOI_ID, @p_MAKER_ID,GETDATE(), '1', 'U', NULL, NULL, @p_M1, @p_M2, @p_M3, @p_M4, @p_M5, @p_M6, @p_M7, @p_M8, @p_M9, @p_M10, @p_M11, @p_M12) IF(NOT EXISTS(SELECT * FROM TR_GOODSTYPE WHERE GD_ID = @p_GD_ID AND BUDGET_TYPE = 'nam')) BEGIN INSERT INTO TR_GOODSTYPE(GD_ID, BUDGET_TYPE, CREATE_DT, MAKER_ID, APPROVE_DT, CHECKER_ID, RECORD_STATUS, AUTH_STATUS) VALUES (@p_GD_ID, 'nam', NULL, NULL, NULL, NULL, '1', 'A') END COMMIT TRANSACTION SELECT '0' as Result, @p_BUDGET_YEAR_LIMIT_ID BUDGET_YEAR_LIMIT_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUDGET_YEAR_LIMIT_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_CONTRACT_CUST_MASTER_Confirm]' GO ALTER PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_Confirm] ------STORE duyệt cấp phê duyệt trung gian----------- @p_CONTRACT_ID varchar(15), @p_SIGN_USER VARCHAR(12), @p_SIGN_DT VARCHAR(20) AS IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Xác nhận thất bại. Thông tin hợp đồng khách thuê đang bị trả về' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND IS_SEND_APPR = 'Y' AND (SIGN_DT IS NOT NULL OR SIGN_DT <> ''))) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Xác nhận thất bại. Thông tin hợp đồng khách thuê đã được cấp trung gian xác nhận trước đó' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT CONTRACT_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Xác nhận thất bại. Thông tin hợp đồng khách thuê đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END BEGIN TRANSACTION -------Trường hợp người duyệt là cấp phê duyệt trung gian, update SIGN_DT--------- DECLARE @p_CONTRACT_NO VARCHAR(15) SET @p_CONTRACT_NO = (SELECT CONTRACT_NO FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID) UPDATE BUD_CONTRACT_CUST_MASTER SET SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103), AUTH_STATUS = 'U' WHERE CONTRACT_ID = @p_CONTRACT_ID IF @@ERROR <> 0 GOTO ABORT INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONTRACT_ID, 'APPROVE', @p_SIGN_USER, GETDATE(), N'Cấp trung gian xác nhận thành công' , N'Cấp trung gian xác nhận' ) IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' CONTRACT_ID, N'Thông tin hợp đồng khách thuê: ' +@p_CONTRACT_NO+ N' đã được xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt.' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_BUDGET_YEAR_DETAIL_IMPORT]' GO -- Stored Procedure ALTER PROC [dbo].[TR_BUDGET_YEAR_DETAIL_IMPORT] ( @GD_ID VARCHAR(20), @BUDGET_TYPE VARCHAR(20), @BRANCH_TYPE VARCHAR(20), @p_MAKER_ID VARCHAR(20), @p_MONTH_IMPORT VARCHAR(20), @p_XMP_TR_BUDGET_LIMIT_YEAR_DETAIL XML = NULL ) AS IF(@GD_ID IS NULL OR @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(@BUDGET_TYPE IS NULL OR @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(@BRANCH_TYPE IS NULL OR @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 @hdoc INT EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TR_BUDGET_LIMIT_YEAR_DETAIL DELETE FROM TR_GOODSTYPE WHERE GD_ID = @GD_ID AND BUDGET_TYPE = 'nam' INSERT INTO TR_GOODSTYPE(GD_ID, BUDGET_TYPE, CREATE_DT, MAKER_ID, APPROVE_DT, CHECKER_ID, RECORD_STATUS, AUTH_STATUS) VALUES (@GD_ID, 'nam', GETDATE(), @p_MAKER_ID, NULL, NULL, '1', 'A') DECLARE XmlBudgetLimitYearhDT CURSOR FOR SELECT * FROM OPENXML(@hdoc, '/Root/XmlBudgetLimitYearhDT', 2) WITH ( DEP_CODE VARCHAR(15), DEP_NAME NVARCHAR(250), ROLENAME NVARCHAR(20), BUDGET_YEAR VARCHAR(15), BUDGET_LIMIT_AMT DECIMAL(18,2), BUDGET_MONTH VARCHAR(50), 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 @DEP_CODE VARCHAR(15), @DEP_NAME NVARCHAR(250), @ROLENAME NVARCHAR(20), @BUDGET_YEAR VARCHAR(15), @BUDGET_LIMIT_AMT DECIMAL(18,2), @BUDGET_MONTH VARCHAR(50), @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 XmlBudgetLimitYearhDT; FETCH NEXT FROM XmlBudgetLimitYearhDT INTO @DEP_CODE, @DEP_NAME , @ROLENAME, @BUDGET_YEAR , @BUDGET_LIMIT_AMT, @BUDGET_MONTH, @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12 WHILE @@fetch_status=0 BEGIN SET @INDEX = @INDEX +1 ----------------------------------------- validate begin ----------------------------------------- DECLARE @l_DEP_ID VARCHAR(20), @l_TLNAME VARCHAR(20); -- NẾU ĐƠN VỊ CHỊU CHI PHÍ LÀ ĐƠN VỊ SET @l_DEP_ID = (SELECT TOP 1 DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE = @DEP_CODE AND BRANCH_ID = 'DV0001') -- NẾU ĐƠN VỊ CHỊU CHI PHÍ LÀ USER SET @l_TLNAME = (SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName = @ROLENAME AND TLSUBBRID = 'DV0001' AND DEP_ID = @l_DEP_ID) DECLARE @l_KHOI_ID VARCHAR(20), @l_ROLENAME VARCHAR(20), @l_KHOI_NAME NVARCHAR(250); IF(ISNULL(@l_DEP_ID,'') <> '' AND ISNULL(@ROLENAME, '') <> '') BEGIN SET @l_KHOI_ID = ( SELECT TOP 1 A.KHOI_ID FROM CM_DEPARTMENT A WHERE A.DEP_ID = @l_DEP_ID ) SET @l_KHOI_NAME = (SELECT TOP 1 C.DVDM_NAME FROM CM_DEPARTMENT B LEFT JOIN CM_DVDM C ON B.KHOI_ID = C.DVDM_ID WHERE B.DEP_ID = @l_DEP_ID ) SET @l_ROLENAME = @ROLENAME END ELSE BEGIN SET @l_KHOI_ID = NULL SET @l_KHOI_NAME = NULL SET @l_ROLENAME = NULL END IF(ISNULL(@l_DEP_ID,'') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlBudgetLimitYearhDT; DEALLOCATE XmlBudgetLimitYearhDT; SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phòng ban ' + @DEP_CODE + N' không có trong hệ thống' AS ErrorDesc RETURN '-1' END IF(ISNULL(@ROLENAME,'') <> '' AND ISNULL(@l_DEP_ID,'') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlBudgetLimitYearhDT; DEALLOCATE XmlBudgetLimitYearhDT; SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Khối ' + @l_KHOI_NAME + ' hiện tại không có ' + @ROLENAME AS ErrorDesc RETURN '-1' END ----------------------------------------- validate end ----------------------------------------- -- NEU DA TON TAI NGAN SACH CHI PHI NAY THI CHI UPDATE -- NEU DON VI CHIU CHI PHI LA DON VI IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR) AND ISNULL(@l_DEP_ID,'') <> '' AND ISNULL(@l_KHOI_ID,'') = '') BEGIN print 'DON VI' print '@GD_ID: ' + @GD_ID; print '@l_DEP_ID: ' + @l_DEP_ID; print '@BUDGET_YEAR: ' + CONVERT(VARCHAR(20), @BUDGET_YEAR); print '@l_ROLENAME: ' + @l_ROLENAME; print '@l_KHOI_ID: ' + @l_KHOI_ID; print '@l_KHOI_NAME: ' + @l_KHOI_NAME; print '@l_TLNAME: ' + @l_TLNAME; IF(ISNULL(@M1, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M1 = @M1 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M2, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M2 = @M2 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M3, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M3 = @M3 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M4, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M4 = @M4 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M5, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M5 = @M5 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M6, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M6 = @M6 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M7, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M7 = @M7 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M8, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M8 = @M8 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M9, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M9 = @M9 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M10, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M10 = @M10 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M11, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M11 = @M11 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@M12, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M12 = @M12 where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF(ISNULL(@BUDGET_LIMIT_AMT, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET BUDGET_LIMIT_AMT = @BUDGET_LIMIT_AMT where GD_ID = @GD_ID and DEP_ID = @l_DEP_ID AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR AND ISNULL(ROLENAME, '') = '' END IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlBudgetLimitYearhDT INTO @DEP_CODE, @DEP_NAME, @ROLENAME, @BUDGET_YEAR , @BUDGET_LIMIT_AMT, @BUDGET_MONTH, @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12 END ELSE IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT where GD_ID = @GD_ID and ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND KHOI_ID = @l_KHOI_ID AND BUDGET_YEAR = @BUDGET_YEAR) AND ISNULL(@l_DEP_ID,'') <> '' AND ISNULL(@l_KHOI_ID,'') <> '') BEGIN print 'USER' print '@GD_ID: ' + @GD_ID; print '@l_DEP_ID: ' + @l_DEP_ID; print '@BUDGET_YEAR: ' + CONVERT(VARCHAR(20), @BUDGET_YEAR); print '@l_ROLENAME: ' + @l_ROLENAME; print '@l_KHOI_ID: ' + @l_KHOI_ID; print '@l_KHOI_NAME: ' + @l_KHOI_NAME; print '@l_TLNAME: ' + @l_TLNAME; IF(ISNULL(@M1, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M1 = @M1 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M2, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M2 = @M2 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M3, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M3 = @M3 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M4, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M4 = @M4 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M5, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M5 = @M5 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M6, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M6 = @M6 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M7, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M7 = @M7 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M8, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M8 = @M8 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M9, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M9 = @M9 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M10, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M10 = @M10 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M11, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M11 = @M11 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M12, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M12 = @M12 WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@BUDGET_LIMIT_AMT, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET TLNAME = @l_TLNAME, BUDGET_LIMIT_AMT = @BUDGET_LIMIT_AMT WHERE GD_ID = @GD_ID AND KHOI_ID = @l_KHOI_ID AND ROLENAME = @l_ROLENAME AND BRANCH_ID = 'DV0001' AND BUDGET_YEAR = @BUDGET_YEAR END IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlBudgetLimitYearhDT INTO @DEP_CODE, @DEP_NAME, @ROLENAME, @BUDGET_YEAR , @BUDGET_LIMIT_AMT, @BUDGET_MONTH, @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12 END ELSE BEGIN print 'THEM MOI' print '@GD_ID: ' + @GD_ID; print '@l_DEP_ID: ' + @l_DEP_ID; print '@BUDGET_YEAR: ' + CONVERT(VARCHAR(20), @BUDGET_YEAR); print '@l_ROLENAME: ' + @l_ROLENAME; print '@l_KHOI_ID: ' + @l_KHOI_ID; print '@l_KHOI_NAME: ' + @l_KHOI_NAME; print '@l_TLNAME: ' + @l_TLNAME; -- Tự động sinh mã code DECLARE @BUDGET_YEAR_LIMIT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_YEAR', @BUDGET_YEAR_LIMIT_ID OUT; IF @BUDGET_YEAR_LIMIT_ID='' OR @BUDGET_YEAR_LIMIT_ID IS NULL GOTO ABORT; -- NEU LA IMPORT USER CHIU CHI PHI IF(ISNULL(@l_TLNAME, '') <> '') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT(BUDGET_YEAR_LIMIT_ID, GD_ID, BUDGET_TYPE, BRANCH_TYPE, BUDGET_YEAR, BRANCH_ID, DEP_ID, BUDGET_LIMIT_AMT, KHOI_ID, TLNAME, ROLENAME, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID, APPROVE_DT) VALUES(@BUDGET_YEAR_LIMIT_ID, @GD_ID, 'nam', 'ho', @BUDGET_YEAR, 'DV0001', @l_DEP_ID, @BUDGET_LIMIT_AMT, @l_KHOI_ID, @l_TLNAME, @l_ROLENAME, @M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL) END ELSE BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT(BUDGET_YEAR_LIMIT_ID, GD_ID, BUDGET_TYPE, BRANCH_TYPE, BUDGET_YEAR, BRANCH_ID, DEP_ID, 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) VALUES(@BUDGET_YEAR_LIMIT_ID, @GD_ID, 'nam', 'ho', @BUDGET_YEAR, 'DV0001', @l_DEP_ID, @BUDGET_LIMIT_AMT, @M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL) END IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlBudgetLimitYearhDT INTO @DEP_CODE, @DEP_NAME, @ROLENAME, @BUDGET_YEAR , @BUDGET_LIMIT_AMT, @BUDGET_MONTH, @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12 END END CLOSE XmlBudgetLimitYearhDT; DEALLOCATE XmlBudgetLimitYearhDT 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'Altering [dbo].[PL_REQUEST_DOC_PROCESS_Upd]' GO ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_PROCESS_Upd] @p_REQ_ID VARCHAR(15)=NULL, @p_MAKER_ID varchar(20) = NULL, @p_BRANCH_ID VARCHAR(15)=NULL, @p_TC_NOTES NVARCHAR(4000), @p_KT_NOTES NVARCHAR(4000), @p_TK_TGD_NOTES NVARCHAR(4000), @p_TK_HDQT_NOTES NVARCHAR(4000), @p_ORTHER_NOTES NVARCHAR(4000), @p_ListCostCenter XML, @p_ListTransfer XML, @p_IS_AUTHORITY bit AS DECLARE @IS_AUTHORITY_HDQT VARCHAR(1) DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID VARCHAR(15),@ROLE_ID VARCHAR(20), @PROCESS_CURR VARCHAR(10), @STEP_CURR INT, @STEP_NEXT INT, @PROCESS_NEXT VARCHAR(10) SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C') SET @PROCESS_NEXT = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR) SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID) SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID) SET @ROLE_ID=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID) BEGIN TRANSACTION --LUCTV 13042021 - BO SUNG CAP NHAT Y KIEN TK TGD, TK HDQT IF(@PROCESS_CURR='TKTGD') BEGIN UPDATE dbo.PL_REQUEST_DOC SET TK_TGD_NOTES=@p_TK_TGD_NOTES WHERE REQ_ID=@p_REQ_ID END ELSE IF(@PROCESS_CURR='TKHDQT') BEGIN UPDATE dbo.PL_REQUEST_DOC SET TK_HDQT_NOTES=@p_TK_HDQT_NOTES, OTHER_NOTES = @p_ORTHER_NOTES, IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_ID=@p_REQ_ID END -- END LUCTV ELSE BEGIN IF(@PROCESS_CURR='KT') BEGIN UPDATE dbo.PL_REQUEST_DOC SET KT_NOTES=@p_KT_NOTES WHERE REQ_ID=@p_REQ_ID END ELSE IF(@PROCESS_CURR='TC') BEGIN UPDATE dbo.PL_REQUEST_DOC SET TC_NOTES=@p_TC_NOTES WHERE REQ_ID=@p_REQ_ID END IF @@Error <> 0 GOTO ABORT Declare @hdoc INT Declare @REQ_TRANSFER_ID varchar(15), @FR_PLAN_ID varchar(15), @FR_TRADE_ID varchar(15), @FR_GOOD_ID varchar(15), @FR_BRN_ID varchar(15), @TO_BRN_ID varchar(15), @TO_PLAN_ID varchar(15), @TO_TRADE_ID varchar(15), @TO_GOOD_ID varchar(15), @QTY DECIMAL(18,0), @FR_DEP_ID VARCHAR(20), @TO_DEP_ID VARCHAR(20), @FR_DVDM_ID VARCHAR(20), @TO_DVDM_ID VARCHAR(20), @FR_KHOI_ID VARCHAR(20), @TO_KHOI_ID VARCHAR(20), @FR_GD_TYPE VARCHAR(20), @TO_GD_TYPE VARCHAR(20), @TOTAL_AMT DECIMAL(18,0), @NOTES NVARCHAR(500), @AUTH_STATUS VARCHAR(5), @COST_ID varchar(15), @REQ_COST_ID varchar(15), @DVDM_ID VARCHAR(20), @FR_AMT_APP decimal(18), @FR_AMT_TF DECIMAL(18), @FR_AMT_RECEIVE_TF DECIMAL(18), @FR_AMT_EXE DECIMAL(18), @FR_AMT_ETM DECIMAL(18), @FR_AMT_ETM_TMP decimal(18) IF(EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS <>'A')) BEGIN --Insert into TABLE PL_REQUEST_DOC_DT Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter DECLARE ListCostCenters CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListCostCenter',2) WITH ( REQ_COST_ID VARCHAR(15), COST_ID varchar(15), AUTH_STATUS VARCHAR(5), NOTES nvarchar(1000) ) OPEN ListCostCenters FETCH NEXT FROM ListCostCenters INTO @REQ_COST_ID,@COST_ID,@AUTH_STATUS, @NOTES WHILE @@FETCH_STATUS = 0 BEGIN IF(EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE COST_ID=@COST_ID AND REQ_ID=@p_REQ_ID AND AUTH_STATUS <> 'A')) BEGIN UPDATE dbo.PL_REQUEST_COSTCENTER SET NOTES=@NOTES WHERE REQ_COST_ID=@REQ_COST_ID AND COST_ID=@COST_ID END IF @@ERROR <> 0 GOTO ABORT1 -- next Group_Id FETCH NEXT FROM ListCostCenters INTO @REQ_COST_ID,@COST_ID,@AUTH_STATUS, @NOTES END CLOSE ListCostCenters DEALLOCATE ListCostCenters --IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C')) --BEGIN -- UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID -- UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID --END END IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A' AND (FR_BRN_ID=@BRANCH_ID AND (FR_DEP_ID IS NULL OR FR_DEP_ID='' OR FR_DEP_ID=@DEP_ID)))) BEGIN DECLARE @TABLE TABLE( REQ_TRANSFER_ID VARCHAR(15), FR_PLAN_ID varchar(15), FR_TRADE_ID varchar(15), FR_GOOD_ID varchar(15), FR_BRN_ID varchar(15), TO_BRN_ID varchar(15), TO_PLAN_ID varchar(15), TO_TRADE_ID varchar(15), TO_GOOD_ID varchar(15), QTY DECIMAL(18,0), TOTAL_AMT decimal(18), AUTH_STATUS VARCHAR(10), NOTES nvarchar(1000), FR_DEP_ID VARCHAR(20), TO_DEP_ID VARCHAR(20), FR_DVDM_ID VARCHAR(20), TO_DVDM_ID VARCHAR(20), FR_KHOI_ID VARCHAR(20), TO_KHOI_ID VARCHAR(20), FR_GD_TYPE_ID VARCHAR(20), TO_GD_TYPE_ID VARCHAR(20), FR_AMT_APP decimal(18), FR_AMT_TF DECIMAL(18), FR_AMT_RECEIVE_TF DECIMAL(18), FR_AMT_EXE DECIMAL(18), FR_AMT_ETM DECIMAL(18), FR_AMT_ETM_TMP decimal(18) ) Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer INSERT INTO @TABLE SELECT * FROM OPENXML(@hDoc,'/Root/ListTransfer',2) WITH ( REQ_TRANSFER_ID VARCHAR(15), FR_PLAN_ID varchar(15), FR_TRADE_ID varchar(15), FR_GOOD_ID varchar(15), FR_BRN_ID varchar(15), TO_BRN_ID varchar(15), TO_PLAN_ID varchar(15), TO_TRADE_ID varchar(15), TO_GOOD_ID varchar(15), QTY DECIMAL(18,0), TOTAL_AMT decimal(18), AUTH_STATUS VARCHAR(10), NOTES nvarchar(1000), FR_DEP_ID VARCHAR(20), TO_DEP_ID VARCHAR(20), FR_DVDM_ID VARCHAR(20), TO_DVDM_ID VARCHAR(20), FR_KHOI_ID VARCHAR(20), TO_KHOI_ID VARCHAR(20), FR_GD_TYPE_ID VARCHAR(20), TO_GD_TYPE_ID VARCHAR(20), FR_AMT_APP decimal(18), FR_AMT_TF DECIMAL(18), FR_AMT_RECEIVE_TF DECIMAL(18), FR_AMT_EXE DECIMAL(18), FR_AMT_ETM DECIMAL(18), FR_AMT_ETM_TMP decimal(18) ) --IF(EXISTS(SELECT * FROM( --SELECT TB.FR_TRADE_ID, SUM(TB.TOTAL_AMT) AS TOTAL_TRANSFER,SUM (ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)- ISNULL(PT.AMT_TF,0)- ISNULL(PT.AMT_ETM,0) ) AS TOTAL_AMT FROM @TABLE TB --LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID --GROUP BY TB.FR_TRADE_ID --) TEMP --WHERE TEMP.TOTAL_TRANSFER > TEMP.TOTAL_AMT --)) --BEGIN -- SELECT '-1' Result, '' REQ_ID, N'Số tiền điều chuyển lớn hơn số tiền dự kiến còn lại của hạng mục ngân sách' ErrorDesc -- ROLLBACK TRANSACTION -- RETURN '-1' --END DECLARE ListTransfers CURSOR FOR SELECT REQ_TRANSFER_ID, FR_PLAN_ID, FR_TRADE_ID, FR_GOOD_ID, FR_BRN_ID, TO_BRN_ID, TO_PLAN_ID, TO_TRADE_ID, TO_GOOD_ID, QTY, TOTAL_AMT, AUTH_STATUS, NOTES, FR_DEP_ID, TO_DEP_ID, FR_DVDM_ID, TO_DVDM_ID, FR_KHOI_ID, TO_KHOI_ID, FR_GD_TYPE_ID, TO_GD_TYPE_ID, FR_AMT_APP, FR_AMT_TF, FR_AMT_RECEIVE_TF, FR_AMT_EXE, FR_AMT_ETM, FR_AMT_ETM_TMP FROM @TABLE OPEN ListTransfers FETCH NEXT FROM ListTransfers INTO @REQ_TRANSFER_ID,@FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID, @TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT,@AUTH_STATUS, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE,@FR_AMT_APP,@FR_AMT_TF,@FR_AMT_RECEIVE_TF,@FR_AMT_EXE,@FR_AMT_ETM,@FR_AMT_ETM_TMP WHILE @@FETCH_STATUS = 0 BEGIN --- KIEM TRA NGAN SACH DIEU CHUYEN TAI DVDC PHAI BAT BUOC NHAP IF(@FR_GOOD_ID IS NULL OR @FR_GOOD_ID ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưới điều chuyển ngân sách: Bạn là đơn vị điều chuyển ngân sách. Vui lòng chọn hạng mục ngân sách chuyển!' ErrorDesc RETURN '-1' END ---- DECLARE @FR_GD_TYPE_NAME NVARCHAR(100),@TO_GD_TYPE_NAME NVARCHAR(100) IF(@FR_GOOD_ID IS NOT NULL AND @FR_GOOD_ID<>'') IF(NOT EXISTS(SELECT * FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID= @FR_GD_TYPE AND @TO_GD_TYPE IN (SELECT value FROM dbo.wsiSplit(NOTES,';')) ) ) BEGIN SET @FR_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@FR_GD_TYPE) SET @TO_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@TO_GD_TYPE) ROLLBACK TRANSACTION SELECT '-1' AS Result , '' REQ_ID, N'Không được điều chuyển từ ' + ISNULL(@FR_GD_TYPE_NAME,'') +N' sang ' + ISNULL(@TO_GD_TYPE_NAME,'') ErrorDesc RETURN '-1' CLOSE ListTransfers DEALLOCATE ListTransfers END --- KIEM TRA HAN MUC CO HOP LE HAY KHONG IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @p_REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND doc.REQ_ID <> @p_REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM @TABLE TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Số tiền điều chuyển lớn hơn số tiền dự kiến còn lại của hạng mục ngân sách' ErrorDesc RETURN '-1' END ---- IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_TRANSFER_ID=@REQ_TRANSFER_ID AND AUTH_STATUS <> 'A' AND (FR_BRN_ID=@BRANCH_ID AND (FR_DEP_ID IS NULL OR FR_DEP_ID='' OR FR_DEP_ID=@DEP_ID)))) BEGIN UPDATE dbo.PL_REQUEST_TRANSFER SET FR_GOOD_ID=@FR_GOOD_ID,FR_PLAN_ID=@FR_PLAN_ID,FR_TRADE_ID=@FR_TRADE_ID, NOTES=@NOTES,TOTAL_AMT=@TOTAL_AMT ,FR_DVDM_ID=@FR_DVDM_ID,FR_KHOI_ID=@FR_KHOI_ID, FR_AMT_APP = @FR_AMT_APP, FR_AMT_TF = @FR_AMT_TF, FR_AMT_RECEIVE_TF = @FR_AMT_RECEIVE_TF, FR_AMT_EXE = @FR_AMT_EXE, FR_AMT_ETM = @FR_AMT_ETM, FR_AMT_ETM_TMP = @FR_AMT_ETM_TMP WHERE REQ_TRANSFER_ID=@REQ_TRANSFER_ID UPDATE prdd SET prdd.FR_AMT_APP = ISNULL(PL.AMT_APP,0), prdd.FR_AMT_EXE = ISNULL(PL.AMT_EXE,0), prdd.FR_AMT_ETM = ISNULL(PL.AMT_ETM,0), prdd.FR_AMT_TF = ISNULL(PL.AMT_TF,0), prdd.FR_AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0), prdd.FR_AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND DDT.TRADE_ID = PL.TRADE_ID AND DOC.REQ_ID <> prdd.REQ_DOC_ID) + (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND DDT.FR_TRADE_ID = PL.TRADE_ID AND DOC.REQ_ID <> prdd.REQ_DOC_ID) FROM PL_REQUEST_TRANSFER prdd LEFT JOIN PL_TRADEDETAIL PL ON PL.TRADE_ID = prdd.FR_TRADE_ID WHERE prdd.REQ_TRANSFER_ID=@REQ_TRANSFER_ID END IF @@ERROR <> 0 GOTO ABORT1 -- next Group_Id FETCH NEXT FROM ListTransfers INTO @REQ_TRANSFER_ID,@FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID, @TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT,@AUTH_STATUS, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE,@FR_AMT_APP,@FR_AMT_TF,@FR_AMT_RECEIVE_TF,@FR_AMT_EXE,@FR_AMT_ETM,@FR_AMT_ETM_TMP END CLOSE ListTransfers DEALLOCATE ListTransfers IF @@Error <> 0 GOTO ABORT END END COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_ID REQ_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc RETURN '-1' End ABORT1: BEGIN CLOSE ListCostCenters DEALLOCATE ListCostCenters CLOSE ListTransfers DEALLOCATE ListTransfers ROLLBACK TRANSACTION SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_REQ_PROCESS_CHILD_App]' GO ALTER PROCEDURE [dbo].[PL_REQ_PROCESS_CHILD_App] @p_REQ_ID VARCHAR(20), @p_PROCESS_ID VARCHAR(20), @p_TLNAME VARCHAR(20), @p_MAKER_ID VARCHAR(20), @p_TYPE_JOB VARCHAR(20), @p_PROCESS_DES NVARCHAR(MAX), @p_REF_ID INT, @p_IS_AUTHORITY bit, @p_ListTransfer XML AS BEGIN TRANSACTION DECLARE @IS_AUTH_HDQT_NOTES NVARCHAR(6), @IS_AUTHORITY_HDQT VARCHAR(1),@IS_NEXT_HDQT BIT SET @IS_AUTHORITY_HDQT='N' IF(RIGHT(@p_PROCESS_DES,7)=N'KTMHĐQT') BEGIN SET @IS_AUTHORITY_HDQT='Y' SET @IS_AUTH_HDQT_NOTES=N'' SET @p_PROCESS_DES = LEFT(@p_PROCESS_DES, LEN(@p_PROCESS_DES)-7) END IF(RIGHT(@p_PROCESS_DES,6)=N'TMHĐQT') BEGIN SET @IS_AUTHORITY_HDQT='Y' SET @IS_AUTH_HDQT_NOTES=N'TMHĐQT' SET @p_PROCESS_DES = LEFT(@p_PROCESS_DES, LEN(@p_PROCESS_DES)-6) END --- LUCTV 20102022: NEU TO TRINH DIEU CHUYEN <=10 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH DECLARE @TOTAL_AMT_TRANSFER DECIMAL(18,0) SET @TOTAL_AMT_TRANSFER =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID) ---END LUCTV ---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R')) OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R'))) BEGIN ROLLBACK TRANSACTION SELECT -1 as Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc RETURN -1 END --- LUCTV 13042021 KIEM TRA NEU LA CAP TKTGD : CO THE DUYET BAT CU LUC NAO, KO CAN PHAI THONG QUA DIEU PHOI DECLARE @ROLE_USER_VP VARCHAR(15) -- KHAI BAO THEM ROLE NHAN UY QUYEN DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50)) SET @ROLE_USER_VP = (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_MAKER_ID) INSERT INTO @TABLE_ROLE SELECT @ROLE_USER_VP INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_USER_VP AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR (EFF_DATE IS NULL OR EXP_DATE IS NULL)) --- LUCTV 28.11.2022 KIEM TRA NEU TO TRINH DANG CHO CAC CAP BAN LANH DAO SE KHONG DUOC DUYET IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE PROCESS_ID IN ('GDK_TT') AND REQ_ID =@p_REQ_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+N' đang đợi Giám đốc khối phê duyệt. Vui lòng thao tác tại màn hình Phê duyệt tờ trình chủ trương!' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE PROCESS_ID IN ('PTGDK_TT') AND REQ_ID =@p_REQ_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+N' đang đợi Phó tổng giám đốc khối phê duyệt. Vui lòng thao tác tại màn hình Phê duyệt tờ trình chủ trương!' ErrorDesc RETURN '-1' END --- END LUCTV 28.11.2022 --KIEM TRA NEU DANG CHO TKTGD IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) ='TKTGD' AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C' AND LEVEL_JOB = 1)) BEGIN IF(@ROLE_USER_VP IN (@ROLE_USER_VP)) BEGIN SET @p_REF_ID =(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='TKTGD' AND STATUS ='C') IF @p_REF_ID IS NULL OR @p_REF_ID ='' BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa tới bước xử lý của Văn Phòng Thư Ký TGĐ. Vui lòng đợi quy trình!' ErrorDesc RETURN -1 END ELSE BEGIN UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Thư Ký TGĐ đã duyệt' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID -- LAY REF ID CUA TGD SET @p_REF_ID = (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='TGD') UPDATE PL_REQUEST_PROCESS SET STATUS ='C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID UPDATE PL_REQUEST_DOC SET PROCESS_ID ='TGD' WHERE REQ_ID =@p_REQ_ID UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID =@p_REQ_ID --IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE ISNULL(TK_TGD_NOTES,'') ='' AND REQ_ID =@p_REQ_ID)) --BEGIN -- UPDATE PL_REQUEST_DOC SET TK_TGD_NOTES =@p_PROCESS_DES WHERE REQ_ID =@p_REQ_ID --END UPDATE PL_REQUEST_DOC SET TK_TGD_NOTES =@p_PROCESS_DES WHERE REQ_ID =@p_REQ_ID --- INSERT VAO LOG INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES , N'Thư Ký TGD đã phê duyệt') ------ COMMIT TRANSACTION SELECT 0 as Result, N'Thư ký TGĐ đã phê duyệt thành công' ErrorDesc RETURN 0 END END END ELSE IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) ='TKHDQT' AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C' AND LEVEL_JOB = 1)) BEGIN IF(@ROLE_USER_VP IN (@ROLE_USER_VP)) BEGIN SET @p_REF_ID =(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='TKHDQT' AND STATUS ='C') IF @p_REF_ID IS NULL OR @p_REF_ID ='' BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa tới bước xử lý của Văn Phòng Thư Ký HĐQT. Vui lòng đợi quy trình!' ErrorDesc RETURN -1 END ELSE BEGIN UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Văn phòng HĐQT đã duyệt' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID -- LAY REF ID CUA TGD SET @p_REF_ID = (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='HDQT') UPDATE PL_REQUEST_PROCESS SET STATUS ='C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID UPDATE PL_REQUEST_DOC SET PROCESS_ID ='HDQT' WHERE REQ_ID =@p_REQ_ID UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID =@p_REQ_ID IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE ISNULL(TK_HDQT_NOTES,'') ='' AND REQ_ID =@p_REQ_ID)) BEGIN UPDATE PL_REQUEST_DOC SET TK_HDQT_NOTES =@p_PROCESS_DES, OTHER_NOTES =@IS_AUTH_HDQT_NOTES WHERE REQ_ID =@p_REQ_ID END UPDATE PL_REQUEST_DOC SET OTHER_NOTES =@IS_AUTH_HDQT_NOTES, IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_ID =@p_REQ_ID --- INSERT VAO LOG INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,N'Văn phòng HĐQT đã phê duyệt') ------ COMMIT TRANSACTION SELECT 0 as Result, N'Văn phòng HĐQT đã phê duyệt thành công' ErrorDesc RETURN 0 END END END ELSE IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) IN ('DVCM','DVDM_DC') AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C')) BEGIN IF (NOT EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID IN ('DVCM','DVDM_DC') AND STATUS ='C' AND ID = @p_REF_ID)) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa tới bước xử lý của đơn vị chuyên môn. Vui lòng đợi quy trình!' ErrorDesc RETURN -1 END ELSE BEGIN ---------BAODNQ 23/6/2022 : Update trạng thái duyệt khi trưởng DVCM duyệt------------- DECLARE @p_BRANCH_LOGIN_ID VARCHAR(15), @p_DEP_LOGIN_ID VARCHAR(15) SET @p_BRANCH_LOGIN_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) SET @p_DEP_LOGIN_ID = (SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) UPDATE dbo.PL_REQUEST_COSTCENTER SET NOTES = @p_PROCESS_DES, AUTH_STATUS='A', APPROVE_DT=GETDATE(), CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID AND COST_ID IN( SELECT PC.DVDM_ID FROM PL_COSTCENTER PC LEFT JOIN PL_COSTCENTER_DT PCD ON PC.COST_ID = PCD.COST_ID WHERE PCD.BRANCH_ID = @p_BRANCH_LOGIN_ID AND (PCD.DEP_ID = @p_DEP_LOGIN_ID OR PCD.DEP_ID IN (SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME = @p_MAKER_ID)) ) -----------------------END BAODNQ------------- UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Đơn vị chuyên môn đã xác nhận' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID AND PROCESS_ID ='DVCM' UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Đơn vị đầu mối quản lý ngân sách cho - nhận đã xác nhận' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID AND PROCESS_ID ='DVDM_DC' IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='DVCM') AND (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='DVCM'))) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET STATUS = 'C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVCM' UPDATE PL_REQUEST_DOC SET PROCESS_ID = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVCM') WHERE REQ_ID =@p_REQ_ID INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,N'Đơn vị chuyên môn đã phê duyệt') COMMIT TRANSACTION SELECT 0 as Result, N'Trưởng đơn vị chuyên môn đã phê duyệt thành công KKK' ErrorDesc RETURN 0 END ELSE IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='DVDM_DC') AND (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='DVDM_DC'))) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET STATUS = 'C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVDM_DC' UPDATE PL_REQUEST_DOC SET PROCESS_ID = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVDM_DC') WHERE REQ_ID =@p_REQ_ID INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,N'Đơn vị đầu mối quản lý ngân sách cho - nhận đã phê duyệt') COMMIT TRANSACTION SELECT 0 as Result, N'Trưởng đơn vị đầu mối quản lý ngân sách đã phê duyệt thành công' ErrorDesc RETURN 0 END END END ELSE IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) ='TC' AND EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS = 'C' AND SUB_PROCESS_ID IS NOT NULL AND SUB_PROCESS_ID LIKE '%DVDC%')) BEGIN IF (EXISTS(SELECT ID FROM PL_REQUEST_PROCESS_CHILD prpc WHERE prpc.REQ_ID = @p_REQ_ID AND prpc.PROCESS_ID = @p_REF_ID AND prpc.STATUS_JOB = 'C' AND (prpc.TYPE_JOB = 'XL' OR prpc.TYPE_JOB = 'KS'))) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng thực hiện điều phối hoặc đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc RETURN -1 END EXEC PL_REQUEST_DOC_PROCESS_Upd @p_REQ_ID = @p_REQ_ID,@p_MAKER_ID = @p_MAKER_ID,@p_BRANCH_ID = '',@p_TC_NOTES = N'',@p_KT_NOTES = N'', @p_TK_TGD_NOTES = N'',@p_TK_HDQT_NOTES = N'',@p_ORTHER_NOTES = N'',@p_ListCostCenter = NULL,@p_ListTransfer = @p_ListTransfer,@p_IS_AUTHORITY = 0 END ELSE IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) ='DVDC' AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C' AND LEVEL_JOB = 1)) BEGIN IF (EXISTS(SELECT ID FROM PL_REQUEST_PROCESS_CHILD prpc WHERE prpc.REQ_ID = @p_REQ_ID AND prpc.PROCESS_ID = @p_REF_ID AND prpc.STATUS_JOB = 'C' AND (prpc.TYPE_JOB = 'XL'))) --- LUCTV 30.12.2022 TAM THOI KHONG XET TYPE JOB KS BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng thực hiện điều phối hoặc đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc RETURN -1 END EXEC PL_REQUEST_DOC_PROCESS_Upd @p_REQ_ID = @p_REQ_ID,@p_MAKER_ID = @p_MAKER_ID,@p_BRANCH_ID = '',@p_TC_NOTES = N'',@p_KT_NOTES = N'', @p_TK_TGD_NOTES = N'',@p_TK_HDQT_NOTES = N'',@p_ORTHER_NOTES = N'',@p_ListCostCenter = NULL,@p_ListTransfer = @p_ListTransfer,@p_IS_AUTHORITY = 0 END --END CODE LUCTV 13 04 2021 -- VALIDATE IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND IS_HAS_CHILD=1 AND STATUS='C' AND PROCESS_ID NOT IN ('TKTGD','TKHDQT','DVCM','DVDM_DC','TC','DVDC'))) BEGIN IF(EXISTS( SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID WHERE PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C' AND PRC.PROCESS_ID =@p_REF_ID)) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng thực hiện điều phối hoặc đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc RETURN -1 END IF(NOT EXISTS( SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID WHERE (PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.PROCESS_ID =@p_REF_ID) OR (PR.REQ_ID=@p_REQ_ID AND PR.PROCESS_ID='TC' AND (PR.SUB_PROCESS_ID IS NULL OR PR.SUB_PROCESS_ID NOT LIKE '%DVDC%') AND PRC.PROCESS_ID =@p_REF_ID))) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng thực hiện điều phối hoặc đợi viên xử lý phiếu và gửi phê duyệt!' ErrorDesc RETURN -1 END END DECLARE @ERROR BIT ,@EROOR_DES NVARCHAR(500) SELECT @ERROR=ERROR, @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'DVKD') IF(@ERROR=1) BEGIN ROLLBACK TRANSACTION; SELECT -1 Result, @EROOR_DES ErrorDesc RETURN 0; END DECLARE @LEVEL INT,@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20),@STEP_PARENT VARCHAR(20) DECLARE @ROLE_ID VARCHAR(20),@NOTES NVARCHAR(500), @PROCESS_CURR VARCHAR(10), @STEP_CURR INT, @STEP_NEXT VARCHAR(20), @PROCESS_NEXT VARCHAR(10), @TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100) SELECT @BRANCH_ID= TLSUBBRID,@DEP_ID=SECUR_CODE ,@ROLE_ID=RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID DECLARE @COST_ID_TABLE TABLE ( COST_ID VARCHAR(15) ) DECLARE @DVDM_ID_TABLE TABLE ( DVDM_ID VARCHAR(15) ) DECLARE @AUTHOR_DVDM TABLE ( ROLE_ID VARCHAR(100), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), DVDM_ID VARCHAR(20) ) 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_MAKER_ID 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_MAKER_ID 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_MAKER_ID 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_MAKER_ID AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) INSERT INTO @COST_ID_TABLE SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID INSERT INTO @DVDM_ID_TABLE SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID_TABLE) GROUP BY DVDM_ID DECLARE @TYPE_JOB_CR VARCHAR(20) SET @TYPE_JOB_CR= (SELECT TOP 1 TYPE_JOB FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB='C') UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID --AND TLNAME=@p_TLNAME AND TYPE_JOB=@TYPE_JOB_CR SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@TYPE_JOB_CR) SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME ) INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) @p_PROCESS_ID, -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE() , -- APPROVE_DT - datetime @p_PROCESS_DES , ISNULL(@TYPE_JOB_NAME,N'Trưởng đơn vị chuyên môn')+ N' đã phê duyệt xong' -- PROCESS_DESC - nvarchar(1000) ) SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID --AND TLNAME=@p_TLNAME AND TYPE_JOB=@TYPE_JOB_CR ORDER BY LEVEL_JOB DESC),0) UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1) -- UPDATE STATUS, CHECKER FOR SUB_PROCESS IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS prp WHERE prp.REQ_ID = @p_REQ_ID AND prp.STATUS = 'C' AND prp.ID = @p_REF_ID AND prp.PROCESS_ID = 'DVDC' AND prp.SUB_PROCESS_ID LIKE '%DVCM%')) BEGIN UPDATE A SET A.AUTH_STATUS = 'A', CHECKER_ID = @p_MAKER_ID, A.APPROVE_DT = GETDATE() FROM PL_REQUEST_COSTCENTER A LEFT JOIN PL_COSTCENTER pc ON A.COST_ID = pc.DVDM_ID LEFT JOIN PL_COSTCENTER_DT pcd1 ON pc.COST_ID = pcd1.COST_ID LEFT JOIN PL_REQUEST_PROCESS prp ON pcd1.BRANCH_ID = prp.BRANCH_ID AND pcd1.DEP_ID = prp.DEP_ID WHERE A.REQ_ID = @p_REQ_ID AND prp.ID = @p_REF_ID END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS prp WHERE prp.REQ_ID = @p_REQ_ID AND prp.STATUS = 'C' AND prp.ID = @p_REF_ID AND prp.PROCESS_ID = 'TC' AND prp.SUB_PROCESS_ID LIKE '%DVCM%')) BEGIN UPDATE A SET A.AUTH_STATUS = 'A', CHECKER_ID = @p_MAKER_ID, A.APPROVE_DT = GETDATE() FROM PL_REQUEST_COSTCENTER A LEFT JOIN PL_COSTCENTER pc ON A.COST_ID = pc.DVDM_ID LEFT JOIN PL_COSTCENTER_DT pcd1 ON pc.COST_ID = pcd1.COST_ID WHERE A.REQ_ID = @p_REQ_ID AND pcd1.BRANCH_ID = 'DV0001' AND pcd1.DEP_ID = 'DEP000000000023' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS prp WHERE prp.REQ_ID = @p_REQ_ID AND prp.STATUS = 'C' AND prp.ID = @p_REF_ID AND prp.PROCESS_ID = 'KT' AND prp.SUB_PROCESS_ID LIKE '%DVCM%')) BEGIN UPDATE A SET A.AUTH_STATUS = 'A', CHECKER_ID = @p_MAKER_ID, A.APPROVE_DT = GETDATE() FROM PL_REQUEST_COSTCENTER A WHERE A.REQ_ID = @p_REQ_ID AND A.DVMD_ID = 'DM0000000000006' END IF(NOT EXISTS (SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P')) BEGIN SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C') SET @PROCESS_NEXT = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR) IF(@PROCESS_CURR='TC' OR (@PROCESS_CURR ='DVDC' AND @p_TLNAME IN (SELECT TLNANME FROM TL_USER WHERE (DEP_ID ='DEP000000000023' OR SECUR_CODE ='DEP000000000023')))) BEGIN SELECT @ERROR=ERROR, @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC') IF(@ERROR=1) BEGIN ROLLBACK TRANSACTION; SELECT -1 Result, @EROOR_DES ErrorDesc RETURN -1; END ---Duyệt TTCT DECLARE @LIMTT_MAX DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID VARCHAR(20),@TOTAL_TRANSFER_CE DECIMAL(18,2),@TOTAL_TRANSFER_OE DECIMAL(18,2) -- BO SUNG QUAN LY GIAM DOC KHOI /PTGD KHOI QUAN LY NGAN SACH CHO - NHAN LUCTV 20.10.2022 -- DECLARE @KHOI_ID_TF VARCHAR(20), @KHOI_ID_TO VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@IS_GDK BIT,@IS_PTGD BIT -- DECLARE @DATA_KHOI TABLE ( -- KHOI_ID VARCHAR(20), -- TOTAL_AMT DECIMAL(18,2), -- IS_NEXT BIT, -- IS_GDK BIT, -- IS_PTGD BIT -- ) -- INSERT INTO @DATA_KHOI -- ( -- KHOI_ID, -- TOTAL_AMT, -- IS_NEXT, -- IS_GDK, -- IS_PTGD -- ) -- SELECT FR_KHOI_ID,SUM(TOTAL_AMT),0,CD.IS_GDK,CD.IS_PTGD FROM dbo.PL_REQUEST_TRANSFER PT -- LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PT.FR_KHOI_ID -- WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID <>'' AND FR_KHOI_ID IS NOT NULL GROUP BY FR_KHOI_ID,CD.IS_GDK,CD.IS_PTGD -- SET @STEP_PARENT='TC' -- SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS') -- DECLARE lstDATA CURSOR FOR -- SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI -- OPEN lstDATA -- FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD -- WHILE @@FETCH_STATUS=0 -- BEGIN -- SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID_TF) -- IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@KHOI_ID_TF) AND @IS_GDK=1) -- BEGIN -- IF((@KHOI_ID_TF ='DM0000000000015' AND @TOTAL_AMT_TRANSFER >10000000) OR @KHOI_ID_TF <> 'DM0000000000015') -- BEGIN -- INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) -- 'GDK_TT', -- PROCESS_ID - varchar(10) -- 'U', -- STATUS - varchar(5) -- 'GDK', -- ROLE_USER - varchar(50) -- '', -- BRANCH_ID - varchar(15) -- '', -- CHECKER_ID - varchar(15) -- NULL, -- APPROVE_DT - datetime -- @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) -- 'N', -- IS_LEAF - varchar(1) -- '', -- COST_ID - varchar(15) -- @KHOI_ID_TF , -- N'Chờ giám đốc khối quản lý ngân sách điều chuyển xác nhận', -- 0 -- DVDM_ID - varchar(15) -- ) -- END -- END -- --IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP) -- IF(@TOTAL_TRANSFER > @LIMTT_MAX ) -- UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF -- IF(@IS_GDK=0) -- UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF -- FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD -- END -- CLOSE lstDATA -- DEALLOCATE lstDATA -- IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT')) -- SET @STEP_PARENT='GDK_TT' -- IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1) -- OR EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID<>TO_KHOI_ID)) -- BEGIN -- DECLARE lstDATA CURSOR FOR -- SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI WHERE IS_NEXT=1 -- OPEN lstDATA -- FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD -- WHILE @@FETCH_STATUS=0 -- BEGIN -- SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='PTGD' AND DVDM_ID=@KHOI_ID_TF) -- IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='PTGD' AND DVDM_ID=@KHOI_ID_TF) AND @IS_PTGD=1) -- BEGIN -- INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) -- 'PTGDK_TT', -- PROCESS_ID - varchar(10) -- 'U', -- STATUS - varchar(5) -- 'PTGD', -- ROLE_USER - varchar(50) -- '', -- BRANCH_ID - varchar(15) -- '', -- CHECKER_ID - varchar(15) -- NULL, -- APPROVE_DT - datetime -- @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) -- 'N', -- IS_LEAF - varchar(1) -- '', -- COST_ID - varchar(15) -- @KHOI_ID_TF , -- N'Chờ Phó tổng giám đốc khối xác nhận', -- 0 -- DVDM_ID - varchar(15) -- ) -- END -- UPDATE @DATA_KHOI SET IS_NEXT=0 -- IF(@IS_GDK=0) -- UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF -- FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD -- END -- CLOSE lstDATA -- DEALLOCATE lstDATA -- END ------- END LUCTV 20.10.2022 SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDDV' AND LIMIT_TYPE='LIMIT_DCNS') SET @TOTAL_TRANSFER_CE=(SELECT SUM(TOTAL_AMT) FROM PL_REQUEST_TRANSFER A LEFT JOIN CM_GOODS B ON A.FR_GOOD_ID = B.GD_ID WHERE A.REQ_DOC_ID=@p_REQ_ID AND B.GD_CODE LIKE '%CE%') SET @TOTAL_TRANSFER_OE=(SELECT SUM(TOTAL_AMT) FROM PL_REQUEST_TRANSFER A LEFT JOIN CM_GOODS B ON A.FR_GOOD_ID = B.GD_ID WHERE A.REQ_DOC_ID=@p_REQ_ID AND B.GD_CODE LIKE '%OE%') IF(@TOTAL_TRANSFER_CE > 200000000 OR @TOTAL_TRANSFER_OE > 100000000) BEGIN SET @STEP_PARENT='TC' SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='LIMIT_DCNS') SET @KHOI_ID=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='LIMIT_DCNS') IF @KHOI_ID IS NULL OR @KHOI_ID ='' SET @KHOI_ID ='DM0000000000017' IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@KHOI_ID)) BEGIN INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'GDK_TT', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'GDK', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @KHOI_ID , N'Chờ giám đốc khối Tài Chính xác nhận', 0 -- DVDM_ID - varchar(15) ) --LUCTV 20211028 FIX LOI CAP NHAT NHUNG STEP CU KHAC GDK_TT DANG CO CHA LA TAI CHINH VE GDK_TT UPDATE PL_REQUEST_PROCESS SET PARENT_PROCESS_ID ='GDK_TT' WHERE PROCESS_ID <> 'GDK_TT' AND PARENT_PROCESS_ID ='TC' AND REQ_ID =@p_REQ_ID --END EDIT END IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT')) SET @STEP_PARENT='GDK_TT' IF(@TOTAL_TRANSFER_CE > 500000000 OR @TOTAL_TRANSFER_OE > 300000000) BEGIN IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD')) BEGIN -- LUCTV : CHEN THEM BUOC THU KI TGD INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'TKTGD', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'TKTGD', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', N'Chờ Văn Phòng Thư Ký Tổng Giám Đốc xác nhận', 1 -- DVDM_ID - varchar(15) ); SET @STEP_PARENT ='TKTGD' --END --------- INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'TGD', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'TGD', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) --'TKTGD', 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', N'Chờ tổng giám phê duyệt điều chuyển', 0 -- DVDM_ID - varchar(15) ); END SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND LIMIT_TYPE='LIMIT_DCNS') --- LUCTV 15.08.2022 KIEM TRA NEU TONG CHI PHI TO TRINH VƯƠT HAN MUC CUA TGD THI LÊN CHỦ TỊCH HĐQT --IF(ISNULL(@TOTAL_TRANSFER_CE,0) + ISNULL(@TOTAL_TRANSFER_OE,0)>@LIMTT_MAX) SET @IS_NEXT_HDQT =(SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'TGD')) IF(@IS_NEXT_HDQT=1) BEGIN IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='HDQT')) BEGIN ---- THEM THU KI HDQT SET @STEP_PARENT ='TGD' INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'TKHDQT', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'TKHDQT', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', N'Chờ Văn Phòng HĐQT xác nhận', 1 -- DVDM_ID - varchar(15) ); SET @STEP_PARENT = 'TKHDQT'; ---- END THU KY HDQT INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'HDQT', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'HDQT', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', N'Chờ HDQT phê duyệt điều chuyển', 0 -- DVDM_ID - varchar(15) ); SET @STEP_PARENT = 'HDQT'; END -- END LUCTV 15.08.2022 END END DECLARE @LAST_PROCESS VARCHAR(20) SET @LAST_PROCESS=( SELECT TOP 1 PL.PROCESS_ID FROM dbo.PL_REQUEST_PROCESS PL LEFT JOIN dbo.PL_CONFIG_PROCESS CP ON CP.PROCESS_ID=PL.PROCESS_ID WHERE REQ_ID=@p_REQ_ID GROUP BY PL.PROCESS_ID,CP.LEVEL_PROCESS ORDER BY CP.LEVEL_PROCESS DESC) --UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@LAST_PROCESS WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID --SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') --IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='KT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID)) --BEGIN -- UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='KT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID --END --IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='DVCM' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID)) --BEGIN -- UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='DVCM' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID --END --IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='DVDC' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID)) --BEGIN -- UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='DVDC' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID --END --IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='DVDM_DC' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID)) --BEGIN -- UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='DVDM_DC' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID --END --IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='TC' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID)) --BEGIN -- UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='TC' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID --END --IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='GDK_DC' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID)) --BEGIN -- UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='GDK_DC' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID --END ---END LUCTV BO SUNG RULE UPDATE 08.11.2022 IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='GDK_TT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID)) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='GDK_TT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='PTGDK_TT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID)) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='PTGDK_TT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='TGD' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID)) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='TGD' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='HDQT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID)) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='HDQT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID END END SET @NOTES = 'Tài chính' UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID) OR ID =@p_REF_ID) AND PROCESS_ID=@PROCESS_CURR IF (EXISTS(SELECT prc.REQ_COST_ID FROM PL_REQUEST_COSTCENTER prc WHERE prc.COST_ID = 'DM0000000000048' AND prc.REQ_ID = @p_REQ_ID)) BEGIN UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS = 'A', NOTES = @p_PROCESS_DES, APPROVE_DT = GETDATE(), CHECKER_ID = @p_MAKER_ID WHERE REQ_ID = @p_REQ_ID AND COST_ID = 'DM0000000000048' END UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C') UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID END ELSE IF(@PROCESS_CURR='KT') BEGIN SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND PROCESS_ID=@PROCESS_CURR UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID END ELSE IF(@PROCESS_CURR='DVCM' ) BEGIN SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') UPDATE dbo.PL_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID AND (COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM)) UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND (DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM) OR ID =@p_REF_ID) IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C')) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID END END ELSE BEGIN IF(@PROCESS_CURR = 'TKHDQT') BEGIN UPDATE PL_REQUEST_DOC SET IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_ID = @p_REQ_ID END SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS='A',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_DOC_ID=@p_REQ_ID AND FR_BRN_ID=@BRANCH_ID AND (FR_DEP_ID=@DEP_ID OR FR_DEP_ID IS NULL OR FR_DEP_ID='') -- LUCTV: 2204 BO SUNG THEM DIEU KIEN SO SANH PROCESS_ID VOI REF ID UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND ID =@p_REF_ID IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C')) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID END IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE))) BEGIN IF(NOT EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS<>'A')) BEGIN IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A')) BEGIN DECLARE @LIMIT_VALUE DECIMAL(18,0), @IS_NEXT BIT=0,@TOTAL_AMT_GD DECIMAL(12,0),@STOP BIT,@ROLE_TF VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTE NVARCHAR(100) DECLARE @ROLE_CDT VARCHAR(20),@DVDM_CDT VARCHAR(20),@LIMIT_VALUE_CDT VARCHAR(20),@NOTES_CDT VARCHAR(20),@TOTAL_AMT DECIMAL(18,2) SET @STEP_PARENT=(SELECT PARENT_PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID) SET @NOTE= (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='DVDM' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='TC')) BEGIN DECLARE lstTransfer CURSOR FOR SELECT FR_DVDM_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>'' AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE) AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV' AND DVDM_ID=FR_DVDM_ID ) AND FR_DVDM_ID <>'DM0000000000048' AND ( (FR_DVDM_ID ='DM0000000000003' AND ISNULL(@TOTAL_AMT_TRANSFER,0) >=10000000) OR FR_DVDM_ID <> 'DM0000000000003') GROUP BY FR_DVDM_ID OPEN lstTransfer FETCH NEXT FROM lstTransfer INTO @DVDM_ID WHILE @@FETCH_STATUS = 0 BEGIN IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV' AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) )) BEGIN INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'DVDM_DC', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'GDDV', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @DVDM_ID , -- DVDM_ID - varchar(15) --N'Chờ '+@NOTE+N' xác nhận ngân sách cho' N'Chờ đơn vị đầu mối quản lý ngân sách cho xác nhận' ,1) -- LUCTV 20.10.22 DVDM_DC CHO CÓ TÍNH NĂNG ĐIỀU PHỐI END FETCH NEXT FROM lstTransfer INTO @DVDM_ID END CLOSE lstTransfer DEALLOCATE lstTransfer SET @STEP_NEXT='TC' IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC')) BEGIN SET @STEP_PARENT='DVDM_DC' SET @STEP_NEXT ='DVDM_DC' END UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID SET @STEP_PARENT='TC' UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@STEP_NEXT AND REQ_ID=@p_REQ_ID UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@STEP_NEXT WHERE REQ_ID=@p_REQ_ID IF(@PROCESS_CURR='DVDM_DC' ) BEGIN SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') UPDATE dbo.PL_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID AND (COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM)) UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND (DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM) OR ID =@p_REF_ID) IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C')) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID END END END END END END END -- NEU CAP DUYET CUA DVDM_DC IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='APPROVE')) BEGIN EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID --- LUCTV 8.11.2022 KIEM TRA NEU TO TRINH LA TO TRINH MUA SAM MOI PHAT SINH PYCMS EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID END END IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT 0 as Result, N'Phê duyệt thành công' 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'Altering [dbo].[TR_PO_MASTER_Upd]' GO ALTER PROCEDURE [dbo].[TR_PO_MASTER_Upd] @p_PO_ID varchar(15) = NULL, @P_PO_TYPE INT = NULL, @p_PO_CODE varchar(15) = NULL, @p_PO_NAME nvarchar(200) = NULL, @p_CONTRACT_ID varchar(15) = NULL, @p_SUP_ID varchar(15) = NULL, @p_SUP_NAME nvarchar(200) = NULL, @p_SUP_ADDR nvarchar(200) = NULL, @p_INPUT_DT VARCHAR(20) = NULL, @p_PAYMENT_DT VARCHAR(20) = NULL, @p_TOTAL_AMT decimal(18) = NULL, @p_REQ_DOC_ID varchar(15) = NULL, @p_DELIVERY_DT VARCHAR(20) = NULL, @p_PAYAPP_DT VARCHAR(20) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_TR_REQ_ID VARCHAR(20) = NULL, @p_TR_REQ_CODE VARCHAR(20)= NULL, @P_LISTASSET XML = NULL, @P_LISTPAYMENT XML = NULL, @P_LISTROLE XML = NULL, @p_BRANCH_ID varchar(15) = null, @p_IS_CLOSED VARCHAR(1) = NULL, -----------------------BAODNQ 2/3/2022 : Thêm tham số---------------------- @p_IS_SEND_APPR VARCHAR(1) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL AS IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID = @p_PO_ID AND AUTH_STATUS = 'U')) BEGIN SELECT '-1' Result, @p_PO_ID AS PO_ID, N'Không thể chỉnh sửa. PO ' +@p_PO_CODE+ N' đã được gửi yêu cầu phê duyệt' AS ErrorDesc RETURN '-1' END -----------------------BAODNQ 16/12/2022: User chỉnh sửa ko ph là ng tạo thì ko dc chỉnh sửa---------------- IF(EXISTS(SELECT PO_ID FROM TR_PO_MASTER WHERE PO_ID = @p_PO_ID AND MAKER_ID <> @p_MAKER_ID)) BEGIN SELECT '-1' Result, @p_PO_ID AS PO_ID, N'Không thể chỉnh sửa. Chỉ có người tạo PO: ' +@p_PO_CODE+ N' mới được phép chỉnh sửa. Bạn không phải là người tạo PO này' AS ErrorDesc RETURN '-1' END DECLARE @REF_CODE VARCHAR(15) = NULL, @PDN_TT VARCHAR(15) = NULL SET @REF_CODE = ( SELECT TOP 1 B.REQ_PAY_CODE FROM TR_REQ_ADVANCE_DT A INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID WHERE A.REF_ID =@p_PO_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL) ) --- TIM KIEM XEM PO NAY CO DUOC PHEP THANH TOAN HAY KHONG SET @PDN_TT = ( SELECT TOP 1 B.REQ_PAY_CODE FROM TR_REQ_ADVANCE_DT A INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL) ) IF(@p_IS_CLOSED ='Y' AND @REF_CODE IS NOT NULL) BEGIN --ROLLBACK TRANSACTION SELECT '-1' Result, @p_PO_ID AS PO_ID, N'PO đang được thực hiện tạm ứng với số phiếu: '+@REF_CODE AS ErrorDesc RETURN '-1' END IF(@p_IS_CLOSED ='Y' AND @PDN_TT IS NOT NULL) BEGIN --ROLLBACK TRANSACTION SELECT '-1' Result, @p_PO_ID AS PO_ID, N'PO đang được thực hiện thanh toán với số phiếu: '+@PDN_TT AS ErrorDesc RETURN '-1' END IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE [PO_CODE] = @p_PO_CODE AND [PO_ID] <> @p_PO_ID) BEGIN SELECT ErrorCode Result, '' PO_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'PO-00002' RETURN '0' END --- 21052020 KIEM TRA XEM NEU PYCMS DA TON TAI HAY CHUA IF((SELECT COUNT(*) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_DOC_ID)=1) BEGIN IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE REQ_DOC_ID =@p_REQ_DOC_ID AND AUTH_STATUS IN ('E','U','A') AND PO_ID <>@p_PO_ID)) BEGIN --ROLLBACK TRANSACTION SELECT '-1' Result, @p_PO_ID AS PO_ID, N'Phiếu yêu cầu mua sắm số :'+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_DOC_ID)+ N' đã được link tới PO có số: '+(SELECT TOP 1 PO_CODE FROM TR_PO_MASTER WHERE REQ_DOC_ID =@p_REQ_DOC_ID AND PO_ID <> @p_PO_ID) AS ErrorDesc RETURN '-1' END END ------ Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@P_LISTASSET DECLARE AssetDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/AssetDetail',2) WITH ( PD_ID VARCHAR(15), PLAN_ID varchar(15) , TRADE_ID varchar(15) , REQ_DT_ID VARCHAR(15), GOODS_ID varchar(15) , [DESCRIPTION] nvarchar(500), UNIT_ID varchar(15) , QUANTITY decimal(18) , PRICE decimal(18,2) , TOTAL_AMT decimal(18,2), IS_DELIVERY varchar(1) , DELIVERY_DT VARCHAR(20), PAYMENT_STATUS varchar(4), AMOUNT_PAID decimal(18) , PAID_DT VARCHAR(20) , INVOICENO varchar(1000), NOTES nvarchar(1000), RECEIVE_BRANCH varchar(15), RECEIVE_ADDR nvarchar(1000), RECEIVE_PERSON nvarchar(500), RECEIVE_TEL varchar(100), EXP_DELIVERY_DT varchar(20), GOODS_NAME NVARCHAR(500), INVOICE_DT VARCHAR(20), --THIEUVQ 100415 THEM LOAI HANG HOA THUC TE GOODSTYPE_REAL VARCHAR(15), GOODSTYPE_REAL_NAME VARCHAR(15), --THIEUVQ 13092016 THEM VAT, CONTRACT_DT VAT DECIMAL(18,2), PRICE_VAT DECIMAL(18,0), CONTRACT_DT VARCHAR(15), CURRENCY VARCHAR(15), RATE INT, TOTAL_AMT_FN DECIMAL(18,2) ) OPEN AssetDetail Exec sp_xml_preparedocument @hdoc Output,@P_LISTPAYMENT DECLARE PaymentDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/PaymentDetail',2) WITH ( PAY_ID VARCHAR(15), PAY_PHASE varchar(15), EXPECTED_DT VARCHAR(20), [PERCENT] decimal(18,2), [AMOUNT] decimal(18,2), NOTES nvarchar(1000), CURRENCY VARCHAR(15), RATE INT, TOTAL_AMT DECIMAL(18,2) ) OPEN PaymentDetail PRINT 'PASS KHOI TAO' --Nhom user gui mail (DAO EDIT) --Exec sp_xml_preparedocument @hdoc Output,@P_LISTROLE --DECLARE LISTROLE CURSOR FOR --SELECT * --FROM OPENXML(@hDoc,'/Root/LISTROLE',2) --WITH --( -- NOTIFI_ID VARCHAR(15), -- TL_NAME varchar(15), -- EDITOR_DT VARCHAR(20), -- EDITOR_ID VARCHAR(15), -- NOTES nvarchar(1000) --) --OPEN LISTROLE BEGIN TRANSACTION IF @p_DELIVERY_DT = '' SET @p_DELIVERY_DT = NULL IF @p_PAYAPP_DT = '' SET @p_PAYAPP_DT = NULL --insert master UPDATE TR_PO_MASTER SET [PO_TYPE] = @P_PO_TYPE, [PO_CODE] = @p_PO_CODE,[PO_NAME] = @p_PO_NAME, [CONTRACT_ID] = @p_CONTRACT_ID,[SUP_ID] = @p_SUP_ID,[SUP_NAME] = @p_SUP_NAME,[SUP_ADDR] = @p_SUP_ADDR, [INPUT_DT] = CONVERT(DATETIME, @p_INPUT_DT, 103),[PAYMENT_DT] = CONVERT(DATETIME, @p_PAYMENT_DT, 103), [TOTAL_AMT] = @p_TOTAL_AMT,[REQ_DOC_ID] = @p_TR_REQ_ID,[DELIVERY_DT] = CONVERT(DATETIME, @p_DELIVERY_DT, 103), [PAYAPP_DT] = CONVERT(DATETIME, @p_PAYAPP_DT, 103),[NOTES] = @p_NOTES,[RECORD_STATUS] = '1', [MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[AUTH_STATUS] = 'E', [CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103), BRANCH_ID = @p_BRANCH_ID, -----------------------BAODNQ 2/3/2022 : Thêm cột IS_SEND_APPR, SEND_APPR_DT---------------------- [IS_SEND_APPR] = @p_IS_SEND_APPR, [SEND_APPR_DT] = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), IS_CLOSED = @p_IS_CLOSED WHERE PO_ID= @p_PO_ID IF @@Error <> 0 GOTO ABORT PRINT 'INSERT MASTER SUCCESS' UPDATE dbo.TR_PO_MASTER_TEMP SET TR_REQ_ID=@p_TR_REQ_ID,TR_REQ_CODE=@p_TR_REQ_CODE WHERE PO_ID=@p_PO_ID --insert asset detail tương đương như NỘI DUNG trong bảng contract detail Declare @PAY_ID VARCHAR(15), @PD_ID VARCHAR(15), @PLAN_ID varchar(15), @TRADE_ID varchar(15), @REQ_DT_ID VARCHAR(15), @GOODS_ID varchar(15), @DESCRIPTION nvarchar(500), @UNIT_ID varchar(15), @QUANTITY decimal(18), @PRICE decimal(18,2), @TOTAL_AMT decimal(18,2), @IS_DELIVERY varchar(1), @DELIVERY_DT VARCHAR(20), @PAYMENT_STATUS varchar(4), @AMOUNT_PAID decimal(18), @PAID_DT VARCHAR(20), @INVOICENO varchar(20), @NOTES nvarchar(1000), @PO_ID varchar(15) = NULL, @PAY_PHASE VARCHAR(20) = NULL, @EXPECTED_DT VARCHAR(20) = NULL, @PERCENT decimal(18,2) = NULL, @AMOUNT decimal(18,2) = NULL, @RECEIVE_BRANCH varchar(15)=NULL, @RECEIVE_ADDR nvarchar(1000)=NULL, @RECEIVE_PERSON nvarchar(500)=NULL, @RECEIVE_TEL varchar(100)=NULL, @EXP_DELIVERY_DT varchar(20) = NULL, @GOODS_NAME NVARCHAR(500) = NULL, @INVOICE_DT VARCHAR(20), @GOODSTYPE_REAL VARCHAR(15) = NULL, @GOODSTYPE_REAL_NAME VARCHAR(15) = NULL, @VAT DECIMAL(18,2), @PRICE_VAT DECIMAL(18,0), @CONTRACT_DT VARCHAR(15), --DAO MOI THEM @NOTIFI_ID VARCHAR(15), @TL_NAME VARCHAR(15), @EDITOR_DT VARCHAR(20), @EDITOR_ID VARCHAR(15), @NOTES_ROLE nvarchar(1000), @CURRENCY VARCHAR(15), @RATE INT, @TOTAL_AMT_FN DECIMAL(18,2) DECLARE @l_GOODSTYPE_ID VARCHAR(15) DELETE FROM TR_PO_DETAIL WHERE PO_ID = @P_PO_ID FETCH NEXT FROM AssetDetail INTO @PD_ID,@PLAN_ID,@TRADE_ID,@REQ_DT_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY, @PRICE,@TOTAL_AMT,@IS_DELIVERY,@DELIVERY_DT,@PAYMENT_STATUS,@AMOUNT_PAID,@PAID_DT, @INVOICENO,@NOTES, @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL,@EXP_DELIVERY_DT,@GOODS_NAME, @INVOICE_DT, @GOODSTYPE_REAL,@GOODSTYPE_REAL_NAME,@VAT,@PRICE_VAT,@CONTRACT_DT,@CURRENCY,@RATE,@TOTAL_AMT_FN WHILE @@FETCH_STATUS = 0 BEGIN --if( NOT EXISTS (SELECT * FROM PL_MASTER A WHERE A.PLAN_ID = @PLAN_ID)) --BEGIN -- SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'TR-00002' -- GOTO ABORT --END IF(LEN(@PD_ID) = 0) BEGIN EXEC SYS_CodeMasters_Gen 'TR_PO_DETAIL', @PD_ID out IF @PD_ID ='' OR @PD_ID IS NULL GOTO ABORT END IF(@DELIVERY_DT = '') SET @DELIVERY_DT = NULL IF(@PAID_DT = '') SET @PAID_DT = NULL IF(@INVOICE_DT = '') SET @INVOICE_DT = NULL IF @EXP_DELIVERY_DT = '' SET @EXP_DELIVERY_DT = NULL /***THIEUVQ THEM KIEM TRA VA LUU THONG TIN LOAI HANG HOA THUC TE***/ --BEGIN --CHUA CO LOAI HANG HOA THI THEM MOI IF @GOODSTYPE_REAL IS NULL OR @GOODSTYPE_REAL = '' BEGIN --NEU TON TAI THI LAY RA ID SET @GOODSTYPE_REAL = (SELECT TOP 1 GD_RETYPE_ID FROM CM_GOODSTYPE_REAL WHERE [TYPE_NAME] = @GOODSTYPE_REAL_NAME) --NEU CHUA CO THI THEM MOI IF @GOODSTYPE_REAL IS NULL OR @GOODSTYPE_REAL = '' BEGIN EXEC SYS_CodeMasters_Gen 'CM_GOODSTYPE_REAL', @l_GOODSTYPE_ID OUT IF @l_GOODSTYPE_ID='' OR @l_GOODSTYPE_ID IS NULL GOTO ABORT INSERT INTO CM_GOODSTYPE_REAL VALUES (@l_GOODSTYPE_ID, @l_GOODSTYPE_ID, @GOODSTYPE_REAL_NAME, '', '1', @p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103),'A',@p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103)) IF @@ERROR <> 0 GOTO ABORT SET @GOODSTYPE_REAL = @l_GOODSTYPE_ID END END --END INSERT INTO TR_PO_DETAIL([PD_ID],[PO_ID],[PLAN_ID],[TRADE_ID],[REQ_DT_ID],[GOODS_ID],[DESCRIPTION],[UNIT_ID],[QUANTITY],[PRICE],[TOTAL_AMT],[IS_DELIVERY],[DELIVERY_DT], [PAYMENT_STATUS],[AMOUNT_PAID],[PAID_DT],[INVOICENO],[NOTES], RECEIVE_BRANCH, RECEIVE_ADDR, RECEIVE_PERSON, RECEIVE_TEL,[RECORD_STATUS],[MAKER_ID],[CREATE_DT], [AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],EXP_DELIVERY_DT,GOODS_NAME,INVOICE_DT,GOODSTYPE_REAL,VAT,PRICE_VAT,CONTRACT_DT,CURRENCY,RATE,TOTAL_AMT_FN) VALUES(@PD_ID ,@p_PO_ID ,@PLAN_ID ,@TRADE_ID,@REQ_DT_ID ,@GOODS_ID,@DESCRIPTION ,@UNIT_ID ,@QUANTITY ,@PRICE ,@TOTAL_AMT , @IS_DELIVERY ,CONVERT(DATETIME, @DELIVERY_DT, 103) ,@PAYMENT_STATUS ,@AMOUNT_PAID , CONVERT(DATETIME, @PAID_DT, 103) ,@INVOICENO ,@NOTES , @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL, @p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103),CONVERT(DATETIME, @EXP_DELIVERY_DT, 103), @GOODS_NAME, CONVERT(DATETIME, @INVOICE_DT, 103),@GOODSTYPE_REAL,@VAT,@PRICE_VAT,@CONTRACT_DT,ISNULL(@CURRENCY,'VND'),ISNULL(@RATE,1) ,@TOTAL_AMT*ISNULL(@RATE,1) ) IF @@ERROR <> 0 GOTO ABORT -- next Group_Id FETCH NEXT FROM AssetDetail INTO @PD_ID,@PLAN_ID,@TRADE_ID,@REQ_DT_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY, @PRICE,@TOTAL_AMT,@IS_DELIVERY,@DELIVERY_DT,@PAYMENT_STATUS,@AMOUNT_PAID,@PAID_DT, @INVOICENO,@NOTES, @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL, @EXP_DELIVERY_DT,@GOODS_NAME,@INVOICE_DT, @GOODSTYPE_REAL,@GOODSTYPE_REAL_NAME,@VAT,@PRICE_VAT,@CONTRACT_DT,@CURRENCY,@RATE,@TOTAL_AMT_FN END --insert payment detail DELETE FROM TR_PO_PAYMENT WHERE PO_ID = @p_PO_ID FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@NOTES,@CURRENCY,@RATE,@TOTAL_AMT_FN WHILE @@FETCH_STATUS = 0 BEGIN --EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @PAY_ID out --IF @PAY_ID ='' OR @PAY_ID IS NULL GOTO ABORT --PRINT @PAY_ID IF(LEN(@PAY_ID) = 0 OR @PAY_ID IS NULL OR @PAY_ID = '') BEGIN EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @PAY_ID out IF @PAY_ID ='' OR @PAY_ID IS NULL GOTO ABORT END IF @EXPECTED_DT = '' SET @EXPECTED_DT = NULL --INSERT INTO TR_PO_PAYMENT([PAY_ID],[PO_ID],[PAY_PHASE],[EXP_DT],[PERCENT],[AMOUNT],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],CURRENCY,RATE,TOTAL_AMT) --VALUES(@PAY_ID ,@p_PO_ID ,@PAY_PHASE ,CONVERT(DATETIME, @EXPECTED_DT, 103) ,@PERCENT ,@AMOUNT,@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),ISNULL(@CURRENCY,'VND'),ISNULL(@RATE,1) ,@AMOUNT*ISNULL(@RATE,1)) -------------BAODNQ 15/9/2022: Fix lại theo BVB_v2_PROD----------- -------------Nếu @PAY_ID ko tồn tại trong TR_PO_PAYMENT, INSERT mới--------- IF(NOT EXISTS(SELECT * FROM TR_PO_PAYMENT WHERE PAY_ID = @PAY_ID)) BEGIN INSERT INTO TR_PO_PAYMENT([PAY_ID],[PO_ID],[PAY_PHASE],[EXP_DT],[PERCENT],[AMOUNT],[NOTES], [RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT], CURRENCY,RATE,TOTAL_AMT) VALUES(@PAY_ID ,@p_PO_ID ,@PAY_PHASE ,CONVERT(DATETIME, @EXPECTED_DT, 103) ,@PERCENT , @AMOUNT,@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), ISNULL(@CURRENCY,'VND'),ISNULL(@RATE,1) ,@AMOUNT*ISNULL(@RATE,1)) END ELSE -------------Nếu @PAY_ID đã tồn tại trong TR_PO_PAYMENT, UPDATE--------- BEGIN UPDATE TR_PO_PAYMENT SET PO_ID =@p_PO_ID, PAY_PHASE =@PAY_PHASE, EXP_DT =CONVERT(DATETIME, @EXPECTED_DT, 103), [PERCENT] =@PERCENT, AMOUNT =@TOTAL_AMT_FN / ISNULL(@RATE,1), RECORD_STATUS =1, AUTH_STATUS ='A', CURRENCY =ISNULL(@CURRENCY,'VND'), RATE =ISNULL(@RATE,1) , TOTAL_AMT =@AMOUNT*ISNULL(@RATE,1), NOTES =@NOTES, MAKER_ID =@p_MAKER_ID, CREATE_DT =CONVERT(DATETIME, @p_CREATE_DT, 103) WHERE PAY_ID =@PAY_ID --- XU LY TRONG TRUONG HOP TRUNG KEY THI CAP NHAT KY THANH TOAN 202297 END UPDATE TR_PO_PAYMENT SET TOTAL_AMT = AMOUNT* ISNULL(RATE, 1) WHERE PAY_ID =@PAY_ID FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@NOTES,@CURRENCY,@RATE,@TOTAL_AMT_FN END CLOSE AssetDetail DEALLOCATE AssetDetail CLOSE PaymentDetail DEALLOCATE PaymentDetail ---INSERT NHOM QUYEN USER THONG BAO (DAO-EDIT) --DELETE FROM TL_ROLE_NOTIFICATION WHERE PO_ID=@p_PO_ID -- FETCH NEXT FROM LISTROLE INTO --@NOTIFI_ID, --@TL_NAME, --@EDITOR_DT, --@EDITOR_ID, --@NOTES_ROLE --WHILE @@FETCH_STATUS = 0 --BEGIN -- IF(LEN(@NOTIFI_ID)=0) -- EXEC SYS_CodeMasters_Gen 'TL_ROLE_NOTIFICATION', @NOTIFI_ID out -- IF @NOTIFI_ID='' OR @NOTIFI_ID IS NULL GOTO ABORT -- INSERT INTO [dbo].[TL_ROLE_NOTIFICATION] -- ([NOTIFI_ID] -- ,[NOTIFI_CODE] -- ,[NOTIFI_NAME] -- ,[TYPE] -- ,[PO_ID] -- ,[TL_NAME] -- ,[BRANCH_ID] -- ,[RECORD_STATUS] -- ,[AUTH_STATUS] -- ,[EDITOR_ID] -- ,[EDIT_DT] -- ,[NOTES]) -- VALUES -- (@NOTIFI_ID -- ,'' -- ,'' -- ,'PO' -- ,@p_PO_ID -- ,@TL_NAME -- ,@p_BRANCH_ID -- ,'1' -- ,'U' -- ,@EDITOR_ID -- ,CONVERT(DATETIME, @EDITOR_DT, 103) -- ,@NOTES_ROLE) -- IF @@ERROR <> 0 GOTO ABORT -- FETCH NEXT FROM LISTROLE INTO -- @NOTIFI_ID, -- @TL_NAME, -- @EDITOR_DT, -- @EDITOR_ID, -- @NOTES_ROLE --END --CLOSE LISTROLE --DEALLOCATE LISTROLE --- BAT DAU CAP NHAT AUTH_STATUS ='U' NEU BAM GUI PHE DUYET IF(@p_RECORD_STATUS ='U') BEGIN UPDATE TR_PO_MASTER SET AUTH_STATUS ='U' WHERE PO_ID =@p_PO_ID END ------------------------BAODNQ 1/3/2022: Insert lưu lịch sử xử lý---------------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_PO_ID, -- REQ_ID - varchar(15) 'UPDATE', -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Cập nhật phiếu gọi hàng thành công' , N'Cập nhật phiếu gọi hàng' -- PROCESS_DESC - nvarchar(1000) ) COMMIT TRANSACTION IF(@p_RECORD_STATUS ='U') BEGIN IF(NOT EXISTS(SELECT * FROM TR_PO_DETAIL WHERE PO_ID =@p_PO_ID)) BEGIN SELECT '-1' as Result, @p_PO_ID PO_ID, N'PO số: '+ @p_PO_CODE +N' Vui lòng nhập thông tin hàng hóa gọi hàng' ErrorDesc RETURN '-1' END IF(NOT EXISTS(SELECT * FROM TR_PO_PAYMENT WHERE PO_ID =@p_PO_ID)) BEGIN SELECT '-1' as Result, @p_PO_ID PO_ID, N'PO số: '+ @p_PO_CODE +N' Vui lòng nhập thông tin lịch thanh toán' ErrorDesc RETURN '-1' END -- INSERT VAO LOG INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_PO_ID, -- REQ_ID - varchar(15) 'SEND', -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Nhân viên gửi phê duyệt phiếu thành công' ,N'Gửi phê duyệt') SELECT '2' as Result, @p_PO_ID PO_ID, N'PO số: '+ @p_PO_CODE +N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp có thẩm quyền phê duyệt' ErrorDesc RETURN '2' END ELSE BEGIN SELECT '0' as Result, @p_PO_ID PO_ID, N'PO số: '+ @p_PO_CODE +N' đã được cập nhật dữ liệu thành công. Bạn có thể bấm gửi phê duyệt' ErrorDesc RETURN '0' END ABORT: BEGIN CLOSE AssetDetail DEALLOCATE AssetDetail CLOSE PaymentDetail DEALLOCATE PaymentDetail --CLOSE LISTROLE --DEALLOCATE LISTROLE ROLLBACK TRANSACTION SELECT '-1' AS RESULT RETURN '-1' End --SELECT * FROM TR_CONTRACT_DT --SELECT * FROM TR_CONTRACT_PAYMENT --SELECT * FROM TR_CONTRACT GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAY_INVOICE_UPD_Ins]' GO /* INSERT INTO [dbo].[SYS_PREFIX](ID,Prefix,Description) VALUES('TR_REQ_PAY_INVOICE_UPD','TUIV',N'Thông tin chỉnh sửa hóa đơn') INSERT INTO [dbo].[SYS_PREFIX](ID,Prefix,Description) VALUES('TR_REQ_PAY_INVOICE_UPD_DT','TIND',N'Thông tin chi tiết chỉnh sửa hóa đơn') */ ALTER PROCEDURE [dbo].[TR_REQ_PAY_INVOICE_UPD_Ins] @p_REQ_PAY_ID varchar(15)= NULL, @p_REQ_PAY_CODE varchar(50) = NULL, @p_MAKER_ID varchar(15) = null, @p_MAKER_ID_KT varchar(15) = null, @p_EDITOR_ID VARCHAR(20) = NULL, @p_XMP_TEMP XML = NULL AS --Validation is here DECLARE @l_REQ_PAY_ID VARCHAR(15) SET @l_REQ_PAY_ID = (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE =@p_REQ_PAY_CODE) DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(50), @AMT decimal(18,0),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0), @BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000) 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(50) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(500) = 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), @TOTAL_AMT_KT DECIMAL(18,2),@VAT_KT DECIMAL(18,2), @TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @MAKER_ID VARCHAR(20), @CREATE_DT VARCHAR(20), @CREATE_DT_KT VARCHAR(20), @MAKER_ID_KT VARCHAR(20), @AUTH_STATUS_KT VARCHAR(20) DECLARE @hdoc INT; EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP; DECLARE XmlInvoice CURSOR FOR SELECT * FROM OPENXML(@hdoc, '/Root/XmlData', 2) WITH(REQ_PAY_ID VARCHAR(15),TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(50),TAX_NO nvarchar(15),GOODS_NAME nvarchar(500) , PRICE decimal(18,2),TAX decimal(18, 2),VAT decimal(18,2),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), PRICE_KT DECIMAL(18,2),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15),TYPE_FUNC VARCHAR(15), MAKER_ID VARCHAR(20), CREATE_DT VARCHAR(20), CREATE_DT_KT VARCHAR(20), MAKER_ID_KT VARCHAR(20), AUTH_STATUS_KT VARCHAR(20)) OPEN XmlInvoice; DECLARE @INDEX INT = 0 BEGIN TRANSACTION --VALIDATION IF(EXISTS (SELECT * FROM TR_REQ_PAY_INVOICE_UPD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS <>'A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Đang tồn tại giao dịch điều chỉnh chứng từ có mã ' + @p_REQ_PAY_CODE +N' đang chờ duyệt'ErrorDesc RETURN '-1' END -- INSERT MASTER DECLARE @p_UPD_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE_UPD', @p_UPD_ID OUT; IF @p_UPD_ID='' OR @p_UPD_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_INVOICE_UPD (UP_ID,REQ_PAY_ID,MAKER_ID,CREATE_DT,CHECKER_ID,APPROVE_DT,AUTH_STATUS) VALUES (@p_UPD_ID,@l_REQ_PAY_ID,@p_EDITOR_ID,GETDATE(),NULL,NULL,'U') --- --DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID=@p_REQ_PAY_ID FETCH NEXT FROM XmlInvoice INTO @p_REQ_PAY_ID, @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER , @TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC, @MAKER_ID, @CREATE_DT, @CREATE_DT_KT, @MAKER_ID_KT, @AUTH_STATUS_KT WHILE @@fetch_status=0 BEGIN SET @INDEX = @INDEX +1 IF(LEN(@INVOICE_NO) >7) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Số hóa đơn '+ @INVOICE_NO +N' không được vượt quá 7 kí tự' ErrorDesc RETURN '-1' END IF(LEN(@INVOICE_NO) <7) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Số hóa đơn '+ @INVOICE_NO +N' phải đủ 7 kí tự' ErrorDesc RETURN '-1' END IF(@TYPE_FUNC='KT') BEGIN IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND REQ_PAY_ID <>@p_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc RETURN '-1' END END INSERT INTO TR_REQ_PAY_INVOICE_UPD_DT(UPD_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX, VAT,NOTE, MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN, VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC, EDITOR_ID) VALUES (@p_UPD_ID,@l_REQ_PAY_ID,@TRANS_NO,CONVERT(DATE,@TRANS_DT,103),@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103),@SELLER ,@TAX_NO ,@GOODS_NAME, @PRICE,@TAX, @VAT,@NOTES, @MAKER_ID,CONVERT(DATE,@CREATE_DT,103),'U',NULL,NULL,CONVERT(DATE,@CREATE_DT_KT,103),@MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN, @VAT_RATE,@CURRENCY, @RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC, @p_EDITOR_ID) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlInvoice INTO @p_REQ_PAY_ID, @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER , @TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC, @MAKER_ID, @CREATE_DT, @CREATE_DT_KT, @MAKER_ID_KT, @AUTH_STATUS_KT END; CLOSE XmlInvoice; DEALLOCATE XmlInvoice; --- Luu log chinh sua INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID ----- COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, @p_UPD_ID UP_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION --CLOSE XmlInvoice; --DEALLOCATE XmlInvoice; SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_CONTRACT_CUST_MASTER_Upd]' GO ALTER PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_Upd] @p_CONTRACT_ID varchar(15) = NULL, @p_BUILDING_ID varchar(15) = NULL, @p_CONTRACT_NO nvarchar(100) = NULL, @p_VERSION_NO int = NULL, @p_TR_CONTRACT_ID VARCHAR(15) = NULL, @p_CUST_ID varchar(15) = NULL, @p_INPUT_DT VARCHAR(20) = NULL, @p_AMEND_DT VARCHAR(20) = NULL, @p_FROM_DT VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL, @p_CLOSE_DT VARCHAR(20) = NULL, @p_MONTHS int = NULL, @p_RENT_PRICE numeric(18) = NULL, @p_NOTES NVARCHAR(MAX)= NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_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_XML_TEMP xml = NULL, @p_VAT DECIMAL(18,0) = NULL, @p_VAT_AMT DECIMAL(18,0) = NULL, @p_DEPOSITS_AMT DECIMAL(18,0) = NULL, @p_PAYMENT_SHEDULE NVARCHAR(500) = NULL, @p_PAYMENT_DT VARCHAR(20) = NULL, @p_EXTEND_DT VARCHAR(20) = NULL, @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL, @p_SIGN_USER VARCHAR(15) = NULL, @p_SIGN_DT VARCHAR(15) = NULL AS /* --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM BUD_CONTRACT_MASTER WHERE VERSION_NO=@p_VERSION_NO SET @ERRORSYS = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' VERSION_NO, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END */ IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Không thể chỉnh sửa. Thông tin hợp đồng khách thuê đã được gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(@p_INPUT_DT IS NULL OR @p_INPUT_DT = '') BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Ngày ký hợp đồng không được bỏ trống' ErrorDesc RETURN '-1' END IF(@p_AMEND_DT IS NULL OR @p_AMEND_DT = '') BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Ngày ký HĐ sau cùng không được bỏ trống' ErrorDesc RETURN '-1' END IF(@p_FROM_DT IS NULL OR @p_FROM_DT = '') BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Hiệu lực từ ngày không được bỏ trống' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE TR_CONTRACT_ID = @p_TR_CONTRACT_ID AND CONTRACT_ID <> @p_CONTRACT_ID)) BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Số hợp đồng: ' +@p_CONTRACT_NO+ N' đã được sử dụng để khai báo thông tin hợp đồng khách thuê, Vui lòng chọn hợp đồng khác' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT CONTRACT_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND MAKER_ID <> @p_MAKER_ID)) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Không thể chỉnh sửa. Chỉ có người tạo thông tin hợp đồng khách thuê: ' +@p_CONTRACT_NO+ N' mới được phép chỉnh sửa. Bạn không phải là người tạo thông tin hợp đồng khách thuê này' ErrorDesc RETURN '-1' END --------------------BẮT BUỘC NHẬP THÔNG TIN CHI TIẾT HỢP ĐỒNG-------------------- DECLARE @p_BUD_CONTRACT_CUST_DT_XML_COUNT INT SET @p_BUD_CONTRACT_CUST_DT_XML_COUNT = ( SELECT @p_XML_TEMP.value('count(/Root/XmlData1)', 'INT') AS 'COUNT' ) PRINT @p_BUD_CONTRACT_CUST_DT_XML_COUNT IF(@p_BUD_CONTRACT_CUST_DT_XML_COUNT <= 0) BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Lưới thông tin chi tiết hợp đồng không được để trống' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @STT INT = 0 IF (@p_STATUS = 'C') BEGIN UPDATE BUD_CONTRACT_CUST_MASTER SET STATUS= @p_STATUS, AUTH_STATUS='U', APPROVE_DT=NULL, CHECKER_ID=NULL, IS_SEND_APPR = @p_IS_SEND_APPR WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO END ELSE BEGIN DELETE FROM BUD_CONTRACT_CUST_DT WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO= @p_VERSION_NO Declare @hdoc1 INT DECLARE @d_CONTRACT_DTID VARCHAR(15), @d_BUILD_ID VARCHAR(15), @d_VERSION_NO INT, @d_BUILDING_AREA_ID VARCHAR(15), @d_RENT_AREA DECIMAL(18,2), @d_RENT_AREA_APP DECIMAL(18,2), @d_AREA_REMAIN DECIMAL(18,2), @d_RENT_PRICE DECIMAL, @d_NOTES NVARCHAR(MAX), @d_DIEN_TICH_TANG DECIMAL(18,2), @d_DIEN_TICH_SD_NOI_BO DECIMAL(18,2), @d_DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), @d_DIEN_TICH_CON_LAI DECIMAL(18,2), @d_DIEN_TICH_CAN_CHOTHUE DECIMAL(18,2), @d_PRICE DECIMAL, @d_TOTAL_AMT DECIMAL, @d_DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2) Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP DECLARE XmlDataDoc CURSOR FOR SELECT * FROM OPENXML(@hdoc1,'/Root/XmlData1',2) WITH ( CONTRACT_DTID VARCHAR(15), BUILD_ID VARCHAR(15), VERSION_NO INT, BUILDING_AREA_ID VARCHAR(15), RENT_AREA DECIMAL(18,2), RENT_AREA_APP DECIMAL(18,2), AREA_REMAIN DECIMAL(18,2), RENT_PRICE DECIMAL, NOTES NVARCHAR(MAX), DIEN_TICH_TANG DECIMAL(18,2), DIEN_TICH_SD_NOI_BO DECIMAL(18,2), DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), DIEN_TICH_CON_LAI DECIMAL(18,2), DIEN_TICH_CAN_CHOTHUE DECIMAL(18,2), PRICE DECIMAL, TOTAL_AMT DECIMAL, DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2) ) OPEN XmlDataDoc FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN, @d_RENT_PRICE, @d_NOTES, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_CHOTHUE, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL WHILE @@FETCH_STATUS = 0 BEGIN ---------------------BAODNQ 11/3/2022: Check lỗi insert------------ SET @STT= @STT+1 DECLARE @VALUE_ERROR DECIMAL(18,0) SET @VALUE_ERROR = (SELECT FLOOR_AREA - (UTILZED_AREA + INTERNAL_AREA) FROM BUD_AREA_DT WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID ) DECLARE @ERRORSYS NVARCHAR(200) ='' IF (@d_DIEN_TICH_CAN_CHOTHUE > (@VALUE_ERROR + @d_RENT_AREA_APP) OR @d_DIEN_TICH_CAN_CHOTHUE > @d_DIEN_TICH_CON_LAI_FINAL) BEGIN SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@stt) +N': Cột diện tích cho thuê phải nhỏ hơn hoặc bằng cột DT trống: '+ convert(nvarchar(20),@VALUE_ERROR) END --IF(@d_DIEN_TICH_CAN_CHOTHUE = 0) --BEGIN -- SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@stt) +N': Diện tích cho thuê phải lớn hơn 0' --END IF @ERRORSYS <> '' BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, @ERRORSYS ErrorDesc RETURN '-1' END IF(LEN( @d_CONTRACT_DTID)=0) EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_DT', @d_CONTRACT_DTID out IF @d_CONTRACT_DTID='' OR @d_CONTRACT_DTID IS NULL GOTO ABORT INSERT INTO BUD_CONTRACT_CUST_DT([CONTRACT_DTID],[BUILD_ID],[CONTRACT_ID],[VERSION_NO],[BUILDING_AREA_ID],[RENT_AREA],[RENT_AREA_APP],[AREA_REMAIN],[RENT_PRICE],[NOTES], [DIEN_TICH_TANG],[DIEN_TICH_SD_NOI_BO],[DIEN_TICH_DA_CHO_THUE],[DIEN_TICH_CON_LAI],[DIEN_TICH_CAN_CHOTHUE],[PRICE],[TOTAL_AMT], [DIEN_TICH_CON_LAI_FINAL]) VALUES(@d_CONTRACT_DTID ,@d_BUILD_ID ,@p_CONTRACT_ID ,@d_VERSION_NO ,@d_BUILDING_AREA_ID ,@d_RENT_AREA,@d_RENT_AREA_APP,@d_AREA_REMAIN,@d_RENT_PRICE,@d_NOTES, @d_DIEN_TICH_TANG,@d_DIEN_TICH_SD_NOI_BO,@d_DIEN_TICH_DA_CHO_THUE,@d_DIEN_TICH_CON_LAI,@d_DIEN_TICH_CAN_CHOTHUE,@d_PRICE,@d_TOTAL_AMT,@d_DIEN_TICH_CON_LAI_FINAL) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN , @d_RENT_PRICE, @d_NOTES, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_CHOTHUE, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL END CLOSE XmlDataDoc DEALLOCATE XmlDataDoc IF @@Error <> 0 GOTO ABORT SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_CUST_DT WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO) IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'A')) BEGIN ---------------CẬP NHẬT LẠI SAU KHI ĐÃ DUYỆT------------ SET @p_CHECKER_ID = NULL SET @p_APPROVE_DT = NULL SET @p_SIGN_DT = NULL SET @p_SEND_APPR_DT = NULL END ---BAODNQ 30/12/2021:Thêm cột vào bảng BUD_CONTRACT_MASTER------- UPDATE BUD_CONTRACT_CUST_MASTER SET BUILDING_ID =@p_BUILDING_ID, CONTRACT_NO =@p_CONTRACT_NO, TR_CONTRACT_ID = @p_TR_CONTRACT_ID, CUST_ID=@p_CUST_ID, INPUT_DT = CONVERT(DATE,@p_INPUT_DT,103), AMEND_DT = CONVERT(DATE,@p_AMEND_DT,103), FROM_DT = CONVERT(DATE,@p_FROM_DT,103), TO_DATE = CONVERT(DATE,@p_TO_DATE,103), CLOSE_DT = CONVERT(DATE,@p_CLOSE_DT,103), STATUS= @p_STATUS, MONTHS = @p_MONTHS, RENT_PRICE=@p_RENT_PRICE*@p_MONTHS, [NOTES] = @p_NOTES, VAT =@p_VAT, VAT_AMT =@p_VAT_AMT, DEPOSITS_AMT =@p_DEPOSITS_AMT, PAYMENT_SHEDULE =@p_PAYMENT_SHEDULE, PAYMENT_DT = CONVERT(DATETIME, @p_PAYMENT_DT, 103), EXTEND_DT = CONVERT(DATETIME, @p_EXTEND_DT, 103), IS_SEND_APPR = @p_IS_SEND_APPR, SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), SIGN_USER = @p_SIGN_USER, SIGN_DT = CONVERT(DATETIME,@p_SIGN_DT, 103), RECORD_STATUS = @p_RECORD_STATUS, AUTH_STATUS = @p_AUTH_STATUS, MAKER_ID = @p_MAKER_ID, CREATE_DT = CONVERT(DATETIME,@p_CREATE_DT, 103), CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT, 103) WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO END ---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý ---------------BAODNQ : TH NGƯỜI TẠO CẬP NHẬT NHIỀU LẦN THÌ CHỈ LƯU LỊCH SỬ XỬ LÝ CẬP NHẬT GẦN NHẤT---------------- IF((SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID = @p_CONTRACT_ID ORDER BY APPROVE_DT DESC) = 'UPDATE') BEGIN WITH RESULT AS( SELECT TOP 1 * FROM PL_PROCESS WHERE REQ_ID = @p_CONTRACT_ID ORDER BY APPROVE_DT DESC ) DELETE FROM RESULT END INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONTRACT_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Cập nhật thông tin hợp đồng khách thuê thành công' , N'Cập nhật thông tin hợp đồng khách thuê' ) COMMIT TRANSACTION SELECT '0' as Result, @p_CONTRACT_ID CONTRACT_ID, @p_CONTRACT_NO CONTRACT_NO, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, @p_CONTRACT_NO CONTRACT_NO, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_REQ_PROCESS_CHILD_Upd]' GO ALTER PROCEDURE [dbo].[PL_REQ_PROCESS_CHILD_Upd] @p_REQ_ID VARCHAR(20), @p_PROCESS_ID VARCHAR(20), @p_TLNAME VARCHAR(20), @p_MAKER_ID VARCHAR(20), @p_TYPE_JOB VARCHAR(20), @p_REF_ID INT, @p_PROCESS_DES NVARCHAR(4000) AS BEGIN TRANSACTION DECLARE @LEVEL INT,@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20) SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID) SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID) DECLARE @lstCOST TABLE( COST_ID VARCHAR(20) ) INSERT INTO @lstCOST SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB='XL' SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB='XL' ORDER BY LEVEL_JOB DESC),0) UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1) INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) -- @p_PROCESS_ID, -- PROCESS_ID - varchar(10) 'SEND', @p_TLNAME, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime CASE WHEN @p_PROCESS_DES <> 'DVDM_DC' THEN N'Nhân viên xử lý phiếu gửi phê duyệt thành công' ELSE @p_PROCESS_DES END, -- PROCESS_DESC - nvarchar(1000) N'Nhân viên xử lý gửi phê duyệt ' -- NOTES - nvarchar(1000) ) IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT 0 as Result, N'Nhân viên xử lý phiếu gửi phê duyệt thành công' 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'Altering [dbo].[BUD_CONTRACT_CUST_MASTER_Ins]' GO ALTER PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_Ins] @p_CONTRACT_ID varchar(15) = NULL, @p_BUILDING_ID varchar(15) = NULL, @p_CONTRACT_NO nvarchar(100) = NULL, @p_VERSION_NO int = NULL, @p_TR_CONTRACT_ID VARCHAR(15) = NULL, @p_CUST_ID varchar(15) = NULL, @p_INPUT_DT VARCHAR(20) = NULL, @p_AMEND_DT VARCHAR(20) = NULL, @p_FROM_DT VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL, @p_CLOSE_DT VARCHAR(20) = NULL, @p_MONTHS int = NULL, @p_RENT_PRICE numeric(18) = NULL, @p_NOTES NVARCHAR(MAX)= NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_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_XML_TEMP xml = NULL, @p_VAT DECIMAL(18,0) = NULL, @p_VAT_AMT DECIMAL(18,0) = NULL, @p_DEPOSITS_AMT DECIMAL(18,0) = NULL, @p_PAYMENT_SHEDULE NVARCHAR(500) = NULL, @p_PAYMENT_DT VARCHAR(20) = NULL, @p_EXTEND_DT VARCHAR(20) = NULL, @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL, @p_SIGN_USER VARCHAR(15) = NULL, @p_SIGN_DT VARCHAR(15) = NULL AS --IF (EXISTS ( SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_NO=@p_CONTRACT_NO AND VERSION_NO=@p_VERSION_NO)) --BEGIN -- SELECT '-1' Result, '' CONTRACT_ID, N'Số hợp đồng này đã tồn tại' ErrorDesc -- RETURN '0' --END IF(@p_INPUT_DT IS NULL OR @p_INPUT_DT = '') BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Ngày ký hợp đồng không được bỏ trống' ErrorDesc RETURN '-1' END IF(@p_AMEND_DT IS NULL OR @p_AMEND_DT = '') BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Ngày ký HĐ sau cùng không được bỏ trống' ErrorDesc RETURN '-1' END IF(@p_FROM_DT IS NULL OR @p_FROM_DT = '') BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Hiệu lực từ ngày không được bỏ trống' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE TR_CONTRACT_ID = @p_TR_CONTRACT_ID)) BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Số hợp đồng: ' +@p_CONTRACT_NO+ N' đã được sử dụng để khai báo hợp đồng khách thuê, Vui lòng chọn hợp đồng khác' ErrorDesc RETURN '-1' END --------------------BẮT BUỘC NHẬP THÔNG TIN CHI TIẾT HỢP ĐỒNG-------------------- DECLARE @p_BUD_CONTRACT_CUST_DT_XML_COUNT INT SET @p_BUD_CONTRACT_CUST_DT_XML_COUNT = ( SELECT @p_XML_TEMP.value('count(/Root/XmlData1)', 'INT') AS 'COUNT' ) PRINT @p_BUD_CONTRACT_CUST_DT_XML_COUNT IF(@p_BUD_CONTRACT_CUST_DT_XML_COUNT <= 0) BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Lưới thông tin chi tiết hợp đồng không được để trống' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @STT INT = 0 DECLARE @l_CONTRACT_ID VARCHAR(15) IF(LEN( @p_CONTRACT_ID)=0 OR @p_CONTRACT_ID IS NULL) EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_MASTER', @p_CONTRACT_ID out IF @p_CONTRACT_ID='' OR @p_CONTRACT_ID IS NULL GOTO ABORT ---BAODNQ 30/12/2021:Thêm cột vào bảng BUD_CONTRACT_MASTER------- INSERT INTO BUD_CONTRACT_CUST_MASTER([CONTRACT_ID],[BUILDING_ID],[CONTRACT_NO],[VERSION_NO], [TR_CONTRACT_ID],[CUST_ID],[INPUT_DT],[AMEND_DT],[FROM_DT],[TO_DATE],[CLOSE_DT],[MONTHS], [RENT_PRICE],[NOTES],[BRANCH_ID],[RECORD_STATUS],[AUTH_STATUS],[STATUS],[MAKER_ID], [CREATE_DT],[CHECKER_ID],[APPROVE_DT],[XML_TEMP],[VAT],[VAT_AMT],[DEPOSITS_AMT], [PAYMENT_SHEDULE], [PAYMENT_DT],[EXTEND_DT],[IS_SEND_APPR],[SEND_APPR_DT],[SIGN_USER],[SIGN_DT]) VALUES(@p_CONTRACT_ID ,@p_BUILDING_ID ,@p_CONTRACT_NO ,@p_VERSION_NO,@p_TR_CONTRACT_ID ,@p_CUST_ID , CONVERT(DATE, @p_INPUT_DT, 103) ,CONVERT(DATE, @p_AMEND_DT, 103) ,CONVERT(DATE, @p_FROM_DT, 103) , CONVERT(DATE, @p_TO_DATE, 103) ,CONVERT(DATE, @p_CLOSE_DT, 103) ,@p_MONTHS ,@p_RENT_PRICE ,@p_NOTES,@p_BRANCH_ID, '1' ,@p_AUTH_STATUS,@p_STATUS,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,NULL ,@p_XML_TEMP, @p_VAT,@p_VAT_AMT,@p_DEPOSITS_AMT,@p_PAYMENT_SHEDULE, CONVERT(DATE, @p_PAYMENT_DT, 103),CONVERT(DATETIME,@p_EXTEND_DT,103) ,@p_IS_SEND_APPR, CONVERT(DATETIME, @p_SEND_APPR_DT,103),@p_SIGN_USER,CONVERT(DATETIME,@p_SIGN_DT,103)) ----------------------------------------------------------------------------------------------------- ----INSERT VAO BANG BUD_CONTACT DELETE FROM BUD_CONTACT WHERE CONTRACT_ID = @p_CONTRACT_ID INSERT INTO BUD_CONTACT VALUES(@p_CONTRACT_ID,@p_VERSION_NO,@p_BUILDING_ID,@p_CONTRACT_NO,@p_CUST_ID,CONVERT(DATE, @p_CREATE_DT, 103)) IF @@Error <> 0 GOTO ABORT Declare @hdoc1 INT DECLARE @d_CONTRACT_DTID VARCHAR(15), @d_BUILD_ID VARCHAR(15), @d_VERSION_NO INT, @d_BUILDING_AREA_ID VARCHAR(15), @d_RENT_AREA DECIMAL(18,2), @d_RENT_AREA_APP DECIMAL(18,2), @d_AREA_REMAIN DECIMAL(18,2), @d_RENT_PRICE DECIMAL, @d_NOTES NVARCHAR(MAX), @d_DIEN_TICH_TANG DECIMAL(18,2), @d_DIEN_TICH_SD_NOI_BO DECIMAL(18,2), @d_DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), @d_DIEN_TICH_CON_LAI DECIMAL(18,2), @d_DIEN_TICH_CAN_CHOTHUE DECIMAL(18,2), @d_PRICE DECIMAL, @d_TOTAL_AMT DECIMAL, @d_DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2) Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP DECLARE XmlDataDoc CURSOR FOR SELECT * FROM OPENXML(@hdoc1,'/Root/XmlData1',2) WITH ( CONTRACT_DTID VARCHAR(15), BUILD_ID VARCHAR(15), VERSION_NO INT, BUILDING_AREA_ID VARCHAR(15), RENT_AREA DECIMAL(18,2), RENT_AREA_APP DECIMAL(18,2), AREA_REMAIN DECIMAL(18,2), RENT_PRICE DECIMAL, NOTES NVARCHAR(MAX), DIEN_TICH_TANG DECIMAL(18,2), DIEN_TICH_SD_NOI_BO DECIMAL(18,2), DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), DIEN_TICH_CON_LAI DECIMAL(18,2), DIEN_TICH_CAN_CHOTHUE DECIMAL(18,2), PRICE DECIMAL, TOTAL_AMT DECIMAL, DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2) ) OPEN XmlDataDoc FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN, @d_RENT_PRICE, @d_NOTES, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_CHOTHUE, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL WHILE @@FETCH_STATUS = 0 BEGIN ---------------------BAODNQ 11/3/2022: Check lỗi insert------------ SET @STT= @STT+1 DECLARE @VALUE_ERROR DECIMAL(18,0) SET @VALUE_ERROR = (SELECT FLOOR_AREA - (UTILZED_AREA + INTERNAL_AREA) FROM BUD_AREA_DT WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID ) DECLARE @ERRORSYS NVARCHAR(200) ='' --IF (@d_DIEN_TICH_CAN_CHOTHUE > (@VALUE_ERROR + @d_RENT_AREA_APP) OR @d_DIEN_TICH_CAN_CHOTHUE > @d_DIEN_TICH_CON_LAI_FINAL) IF (@d_DIEN_TICH_CAN_CHOTHUE > (@VALUE_ERROR + @d_RENT_AREA_APP) OR @d_DIEN_TICH_CAN_CHOTHUE > @d_DIEN_TICH_CON_LAI) BEGIN SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@stt) +N': Cột diện tích cho thuê phải nhỏ hơn hoặc bằng cột DT trống' END --IF(@d_DIEN_TICH_CAN_CHOTHUE = 0) --BEGIN -- SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@stt) +N': Diện tích cho thuê phải lớn hơn 0' --END IF @ERRORSYS <> '' BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, @ERRORSYS ErrorDesc RETURN '-1' END EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_DT', @d_CONTRACT_DTID out IF @d_CONTRACT_DTID='' OR @d_CONTRACT_DTID IS NULL GOTO ABORT INSERT INTO BUD_CONTRACT_CUST_DT([CONTRACT_DTID],[BUILD_ID],[CONTRACT_ID],[VERSION_NO],[BUILDING_AREA_ID],[RENT_AREA],[RENT_AREA_APP], [AREA_REMAIN],[RENT_PRICE],[NOTES], [DIEN_TICH_TANG], [DIEN_TICH_SD_NOI_BO],[DIEN_TICH_DA_CHO_THUE],[DIEN_TICH_CON_LAI], [DIEN_TICH_CAN_CHOTHUE],[PRICE],[TOTAL_AMT],[DIEN_TICH_CON_LAI_FINAL]) VALUES(@d_CONTRACT_DTID ,@d_BUILD_ID ,@p_CONTRACT_ID ,@d_VERSION_NO ,@d_BUILDING_AREA_ID ,@d_RENT_AREA,0,@d_AREA_REMAIN,@d_RENT_PRICE,@d_NOTES, @d_DIEN_TICH_TANG,@d_DIEN_TICH_SD_NOI_BO,@d_DIEN_TICH_DA_CHO_THUE,@d_DIEN_TICH_CON_LAI,@d_DIEN_TICH_CAN_CHOTHUE, @d_PRICE,@d_TOTAL_AMT,@d_DIEN_TICH_CON_LAI_FINAL) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN, @d_RENT_PRICE, @d_NOTES, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_CHOTHUE, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL END CLOSE XmlDataDoc DEALLOCATE XmlDataDoc SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_CUST_DT WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO) UPDATE BUD_CONTRACT_CUST_MASTER SET RENT_PRICE=@p_RENT_PRICE*MONTHS WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO ---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONTRACT_ID, 'INSERT', @p_MAKER_ID, GETDATE(), N'Thêm mới thông tin hợp đồng khách thuê thành công' , N'Thêm mới thông tin hợp đồng khách thuê' ) COMMIT TRANSACTION SELECT '0' as Result, @p_CONTRACT_ID CONTRACT_ID, @p_CONTRACT_NO CONTRACT_NO, '' ErrorDesc RETURN '0' ABORT: BEGIN --CLOSE XmlDataDoc --DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, @p_CONTRACT_NO CONTRACT_NO, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAY_INVOICE_UPD_Search]' GO ALTER PROCEDURE [dbo].[TR_REQ_PAY_INVOICE_UPD_Search] @p_UP_ID VARCHAR(15) = NULL, @p_REQ_PAY_CODE VARCHAR(15) = NULL, @p_REQ_PAY_TYPE VARCHAR(15) = NULL, @p_MAKER_ID VARCHAR(15) = NULL, @p_FROM_DATE VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_MAKER_ID_CRE VARCHAR(15) = NULL, @p_BRANCH_ID_CRE VARCHAR(15)= NULL, @p_DEP_ID_CRE VARCHAR(15) = NULL, @p_MAKER_ID_KT VARCHAR(15) = NULL, @p_REASON NVARCHAR(1000)= NULL, @p_FROM_DATE_CRE VARCHAR(20)= NULL, @p_TO_DATE_CRE VARCHAR(20)= NULL, @p_TOP INT = 100 AS BEGIN -- PAGING IF(@p_TOP IS NULL OR @p_TOP = '' OR @p_TOP = 0) BEGIN -- PAGING BEGIN SELECT A.*, B.REQ_PAY_CODE, AL.CONTENT AS LOAI_THANH_TOAN,B.REQ_AMT, TL5.TLFullName AS GDV_NAME, B.CREATE_DT_KT NGAY_TAO_KT, TL6.TLFullName AS NGUOI_DUYET_KT_NAME, B.APPROVE_DT_KT AS NGAY_DUYET_KT, TL1.TLFullName AS NGUOI_CAP_NHAT, A.CREATE_DT AS NGAY_CAP_NHAT, TL2.TLFullName AS NGUOI_DUYET, A.APPROVE_DT AS NGAY_DUYET, B.MAKER_ID AS NGUOI_TAO_PHIEU, B.CHECKER_ID AS NGUOI_DUYET_PHIEU_DV, B.CHECKER_ID AS NGUOI_DUYET_KT, TL3.TLFullName AS NGUOI_TAO_PHIEU_NAME, TL4.TLFullName AS NGUOI_DUYET_PHIEU_DV_NAME, B.MAKER_ID_KT AS GDV, B.BRANCH_ID AS BRANCH_ID_CRE,B.DEP_ID AS DEP_ID_CRE, B.REQ_REASON, B.CREATE_DT AS NGAY_TAO -- SELECT END FROM TR_REQ_PAY_INVOICE_UPD A LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID= B.REQ_PAY_ID LEFT JOIN TL_USER TL1 ON A.MAKER_ID = TL1.TLNANME LEFT JOIN TL_USER TL2 ON A.CHECKER_ID= TL2.TLNANME LEFT JOIN TL_USER TL3 ON B.MAKER_ID = TL3.TLNANME LEFT JOIN TL_USER TL4 ON B.CHECKER_ID= TL4.TLNANME LEFT JOIN TL_USER TL5 ON B.MAKER_ID_KT = TL5.TLNANME LEFT JOIN TL_USER TL6 ON B.CHECKER_ID_KT= TL6.TLNANME LEFT JOIN CM_ALLCODE AL ON B.REQ_TYPE = AL.CDVAL AND AL.CDNAME='PAY_TYPE' AND AL.CDTYPE = 'REQ' WHERE 1=1 AND (A.UP_ID= @p_UP_ID OR @p_UP_ID IS NULL OR @p_UP_ID ='') AND (B.REQ_PAY_CODE LIKE '%'+@p_REQ_PAY_CODE+'%' OR @p_REQ_PAY_CODE = '' OR @p_REQ_PAY_CODE IS NULL) AND (A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS ='') AND (A.MAKER_ID =@p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID ='') AND (B.MAKER_ID =@p_MAKER_ID_CRE OR @p_MAKER_ID_CRE IS NULL OR @p_MAKER_ID_CRE ='') AND (B.MAKER_ID_KT =@p_MAKER_ID_KT OR @p_MAKER_ID_KT IS NULL OR @p_MAKER_ID_KT ='') AND (B.REQ_REASON LIKE N'%'+@p_REASON +'%' OR @p_REASON IS NULL OR @p_REASON ='') AND (B.BRANCH_ID =@p_BRANCH_ID_CRE OR @p_BRANCH_ID_CRE IS NULL OR @p_BRANCH_ID_CRE ='') AND (B.DEP_ID =@p_DEP_ID_CRE OR @p_DEP_ID_CRE IS NULL OR @p_DEP_ID_CRE ='') ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE BEGIN -- PAGING BEGIN SELECT TOP(@p_TOP) A.*, B.REQ_PAY_CODE, AL.CONTENT AS LOAI_THANH_TOAN,B.REQ_AMT, TL5.TLFullName AS GDV_NAME, B.CREATE_DT_KT NGAY_TAO_KT, TL6.TLFullName AS NGUOI_DUYET_KT_NAME, B.APPROVE_DT_KT AS NGAY_DUYET_KT, TL1.TLFullName AS NGUOI_CAP_NHAT, A.CREATE_DT AS NGAY_CAP_NHAT, TL2.TLFullName AS NGUOI_DUYET, A.APPROVE_DT AS NGAY_DUYET, B.MAKER_ID AS NGUOI_TAO_PHIEU, B.CHECKER_ID AS NGUOI_DUYET_PHIEU_DV, B.CHECKER_ID AS NGUOI_DUYET_KT, TL3.TLFullName AS NGUOI_TAO_PHIEU_NAME, TL4.TLFullName AS NGUOI_DUYET_PHIEU_DV_NAME, B.MAKER_ID_KT AS GDV, B.BRANCH_ID AS BRANCH_ID_CRE,B.DEP_ID AS DEP_ID_CRE, B.REQ_REASON, B.CREATE_DT AS NGAY_TAO -- SELECT END FROM TR_REQ_PAY_INVOICE_UPD A LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID= B.REQ_PAY_ID LEFT JOIN TL_USER TL1 ON A.MAKER_ID = TL1.TLNANME LEFT JOIN TL_USER TL2 ON A.CHECKER_ID= TL2.TLNANME LEFT JOIN TL_USER TL3 ON B.MAKER_ID = TL3.TLNANME LEFT JOIN TL_USER TL4 ON B.CHECKER_ID= TL4.TLNANME LEFT JOIN TL_USER TL5 ON B.MAKER_ID_KT = TL5.TLNANME LEFT JOIN TL_USER TL6 ON B.CHECKER_ID_KT= TL6.TLNANME LEFT JOIN CM_ALLCODE AL ON B.REQ_TYPE = AL.CDVAL AND AL.CDNAME='PAY_TYPE' AND AL.CDTYPE = 'REQ' WHERE 1=1 AND (A.UP_ID= @p_UP_ID OR @p_UP_ID IS NULL OR @p_UP_ID ='') AND (B.REQ_PAY_CODE LIKE '%'+@p_REQ_PAY_CODE+'%' OR @p_REQ_PAY_CODE = '' OR @p_REQ_PAY_CODE IS NULL) AND (A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS ='') AND (A.MAKER_ID =@p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID ='') AND (B.MAKER_ID =@p_MAKER_ID_CRE OR @p_MAKER_ID_CRE IS NULL OR @p_MAKER_ID_CRE ='') AND (B.MAKER_ID_KT =@p_MAKER_ID_KT OR @p_MAKER_ID_KT IS NULL OR @p_MAKER_ID_KT ='') AND (B.REQ_REASON LIKE N'%'+@p_REASON +'%' OR @p_REASON IS NULL OR @p_REASON ='') AND (B.BRANCH_ID =@p_BRANCH_ID_CRE OR @p_BRANCH_ID_CRE IS NULL OR @p_BRANCH_ID_CRE ='') AND (B.DEP_ID =@p_DEP_ID_CRE OR @p_DEP_ID_CRE IS NULL OR @p_DEP_ID_CRE ='') ORDER BY A.CREATE_DT DESC -- PAGING END END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_CONTRACT_CUST_MASTER_App]' GO ALTER PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_App] @p_CONTRACT_ID varchar(15), @p_VERSION_NO varchar(15), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(25), @P_TYPE_CONTRACT VARCHAR(1), @P_XML_TEMP XML AS IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Phê duyệt thất bại. Thông tin hợp đồng khách thuê đang bị trả về' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Phê duyệt thất bại. Thông tin hợp đồng khách thuê đã được phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT CONTRACT_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Phê duyệt thất bại. Thông tin hợp đồng khách thuê đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT CONTRACT_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'U' AND IS_SEND_APPR = 'Y' AND (SIGN_USER IS NOT NULL AND SIGN_USER <> '') AND(SIGN_DT IS NULL OR SIGN_DT = '') ) ) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Phê duyệt thất bại. TThông tin hợp đồng khách thuê đang chờ cấp phê duyệt trung gian xác nhận. Vui lòng đợi cấp phê duyệt trung gian xác nhận' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @_BUILDING_UTIL_LOG VARCHAR(15) DECLARE @p_VALUE_ID VARCHAR(15) DECLARE @p_MONTH DECIMAL(18,0) DECLARE @VALUE_ERROR DECIMAL(18,2) DECLARE @p_RENT_PRICE DECIMAL(18,0) DECLARE @TOATAL_INTERNAL DECIMAL(18,2) DECLARE @STT INT SET @STT =0 DECLARE @_BUILDING_ID VARCHAR(15) DECLARE @_BUILDING_AREA_ID VARCHAR(15) DECLARE @_RENT_AREA DECIMAL(18,2) DECLARE @_RENT_PRICE_OLD DECIMAL(18,0) --DECLARE @tmp table(CONTRACT_DTID VARCHAR(15), BUILDING_AREA_ID varchar(15),RENT_AREA DECIMAL(18,2),RENT_PRICE DECIMAL(18,2)) --insert into @tmp SELECT CONTRACT_DTID, BUILDING_AREA_ID,RENT_AREA,RENT_PRICE FROM BUD_CONTRACT_CUST_DT -- WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO-1 -----BAODNQ 20/1/2022-------------------- DECLARE @p_VAT_INIT NUMERIC(18,0) SET @p_VAT_INIT = (SELECT VAT FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID) DECLARE @t_BUD_CONTRACT_LOG_FLOOR TABLE( BUILDING_AREA_ID VARCHAR(15) ) INSERT INTO @t_BUD_CONTRACT_LOG_FLOOR SELECT BC.BUILDING_AREA_ID FROM BUD_CONTRACT_LOG BC WHERE CONTRACT_ID = @p_CONTRACT_ID GROUP BY BC.BUILDING_AREA_ID -----*** INSERT VERSION -1 VAO TRONG BANG LOG IF @@Error <> 0 GOTO ABORT Declare @hdoc1 INT DECLARE @d_CONTRACT_DTID VARCHAR(15), @d_BUILD_ID VARCHAR(15), @d_VERSION_NO INT, @d_BUILDING_AREA_ID VARCHAR(15), @d_RENT_AREA DECIMAL(18,2), @d_RENT_AREA_APP DECIMAL(18,2), @d_AREA_REMAIN DECIMAL(18,2), @d_RENT_PRICE DECIMAL, @d_NOTES NVARCHAR(MAX), @d_DIEN_TICH_TANG DECIMAL(18,2), @d_DIEN_TICH_SD_NOI_BO DECIMAL(18,2), @d_DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), @d_DIEN_TICH_CON_LAI DECIMAL(18,2), @d_DIEN_TICH_CAN_CHOTHUE DECIMAL(18,2), @d_PRICE DECIMAL, @d_TOTAL_AMT DECIMAL, @d_DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2) Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP DECLARE XmlDataDoc CURSOR FOR SELECT * FROM OPENXML(@hdoc1,'/Root/XmlData1',2) WITH ( CONTRACT_DTID VARCHAR(15), BUILD_ID VARCHAR(15), VERSION_NO INT, BUILDING_AREA_ID VARCHAR(15), RENT_AREA DECIMAL(18,2), RENT_AREA_APP DECIMAL(18,2), AREA_REMAIN DECIMAL(18,2), RENT_PRICE DECIMAL, NOTES NVARCHAR(MAX), DIEN_TICH_TANG DECIMAL(18,2), DIEN_TICH_SD_NOI_BO DECIMAL(18,2), DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), DIEN_TICH_CON_LAI DECIMAL(18,2), DIEN_TICH_CAN_CHOTHUE DECIMAL(18,2), PRICE DECIMAL, TOTAL_AMT DECIMAL, DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2) ) OPEN XmlDataDoc FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN, @d_RENT_PRICE, @d_NOTES, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_CHOTHUE, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL WHILE @@FETCH_STATUS = 0 BEGIN SET @STT= @STT+1 SET @VALUE_ERROR = (SELECT FLOOR_AREA - (UTILZED_AREA + INTERNAL_AREA) FROM BUD_AREA_DT WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID ) --+(SELECT SUM(RENT_AREA) FROM BUD_CONTRACT_DT --WHERE CONTRACT_ID =@p_CONTRACT_ID AND CONTRACT_ID IN(SELECT CONTRACT_ID FROM --BUD_CONTRACT_MASTER WHERE AUTH_STATUS='A')) --DIEN TICH CHO THUE PHAI LON HON DIEN TICH CON LAI+ DIEN TICH VERSION CŨ TRONG TRUONG --HOP TAO PHU LUC HOP DONG -- IF ( @d_DIEN_TICH_CAN_CHOTHUE > (@VALUE_ERROR + @d_RENT_AREA_APP)) BEGIN DECLARE @ERRORSYS NVARCHAR(200) ='' SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@stt) +N': Cột diện tích cho thuê phải nhỏ hơn hoặc bằng cột DT trống: '+ convert(nvarchar(20),@VALUE_ERROR) END IF @ERRORSYS <> '' BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, @ERRORSYS ErrorDesc RETURN '-1' END ----**** INSERT VERSION CURRENT -1------------------------------------------------------------------------- --IF(@p_VERSION_NO>1) --BEGIN -- SET @_BUILDING_AREA_ID= (SELECT TOP(1) BUILDING_AREA_ID FROM @tmp) -- SET @_RENT_AREA= (SELECT TOP(1) RENT_AREA FROM @tmp) -- SET @p_RENT_PRICE= (SELECT TOP(1) RENT_PRICE FROM @tmp) -- EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @_BUILDING_UTIL_LOG out -- IF @_BUILDING_UTIL_LOG='' OR @_BUILDING_UTIL_LOG IS NULL GOTO ABORT -- INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID],[VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT]) -- VALUES(@_BUILDING_UTIL_LOG ,@_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'R' ,@p_CONTRACT_ID ,@p_VERSION_NO-1 ,CONVERT(DATETIME, GETDATE(), 103) ,@_RENT_AREA ,'1' ,'A' ,@P_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103) ) -- ------**** INSERT INTO CONTRACT_VALUES --------------------------------------------------------------- -- EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out -- IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT -- INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO-1,@_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'R',@p_RENT_PRICE*@_RENT_AREA,NULL,@d_NOTES, -- '1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103)) -- DELETE @tmp WHERE CONTRACT_DTID = (SELECT TOP(1) CONTRACT_DTID FROM @tmp) --END -----***INSERT VERSION CURRENT------------------------------------------------------------------ DECLARE @l_UTIL_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @l_UTIL_ID out IF @l_UTIL_ID='' OR @l_UTIL_ID IS NULL GOTO ABORT DECLARE @p_CUSTOMER_ID VARCHAR(15) = (SELECT CUST_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID) DECLARE @p_IS_FIRST_TIME VARCHAR(1) --IF(NOT EXISTS -- (SELECT * FROM BUD_UTIL_LOG -- WHERE CONTRACT_ID = @p_CONTRACT_ID -- AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID -- AND CUSTOMER_ID = @p_CUSTOMER_ID -- AND IS_FIRST_TIME = 'Y')) --BEGIN -- SET @p_IS_FIRST_TIME = 'Y' --END --ELSE --BEGIN -- SET @p_IS_FIRST_TIME = 'N' --END --INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID], -- [VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID], -- [APPROVE_DT], [TOTAL_AMT_INIT], [VAT_INIT], [IS_FIRST_TIME], [CUSTOMER_ID]) -- VALUES(@l_UTIL_ID ,@d_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'U' ,@p_CONTRACT_ID ,@p_VERSION_NO , -- CONVERT(DATETIME, GETDATE(), 103) ,@d_DIEN_TICH_CAN_CHOTHUE ,'1' ,'A' ,@P_CHECKER_ID , -- CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103), -- @d_TOTAL_AMT, @p_VAT_INIT, @p_IS_FIRST_TIME, @p_CUSTOMER_ID) ---*** UPDATE CONTRACT_VALUES------------------------------------------------------- EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO,@d_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'U',@d_PRICE*@d_DIEN_TICH_CAN_CHOTHUE,NULL,@d_NOTES, '1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103)) ---*** UPDATE DIEN TICH CHO KHACH THUE DECLARE @p_RENT_AREA_LOG DECIMAL(18,2) ---------------TH CẬP NHẬT DIỆN TÍCH ĐÃ ĐƯỢC DUYỆT: --NẾU SỐ TẦNG LẦN DUYỆT NÀY SO VỚI LẦN DUYỆT TRƯỚC GIỮ NGUYÊN---- --LẤY TỔNG DIỆN TÍCH ĐÃ CHO THUÊ CỦA TẦNG - DIỆN TÍCH ĐÃ CHO THUÊ LƯU LOG TỪ LẦN DUYỆT TRƯỚC-- IF(EXISTS (SELECT * FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = @p_CONTRACT_ID AND CUSTOMER_ID = @p_CUSTOMER_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID AND [TYPE] = 'CUSTOMER')) BEGIN SET @p_RENT_AREA_LOG = ( SELECT TOP 1 RENT_AREA FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = @p_CONTRACT_ID AND CUSTOMER_ID = @p_CUSTOMER_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID AND [TYPE] = 'CUSTOMER' ORDER BY APPROVE_DT DESC ) UPDATE BUD_AREA_DT SET UTILZED_AREA = UTILZED_AREA - @p_RENT_AREA_LOG WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID END BEGIN --UPDATE BUD_AREA_DT --SET UTILZED_AREA =( -- (SELECT ISNULL(SUM(AREA),0) FROM BUD_UTIL_LOG WHERE BUILDING_AREA_ID=@d_BUILDING_AREA_ID AND UTIL_RELEASE='U' AND UTIL_TYPE=@P_TYPE_CONTRACT) -- - -- (SELECT ISNULL(SUM(AREA),0) FROM BUD_UTIL_LOG WHERE BUILDING_AREA_ID=@d_BUILDING_AREA_ID AND UTIL_RELEASE='R' AND UTIL_TYPE =@P_TYPE_CONTRACT) -- ) UPDATE BUD_AREA_DT SET UTILZED_AREA = UTILZED_AREA + @d_DIEN_TICH_CAN_CHOTHUE WHERE BUILDING_AREA_ID =@d_BUILDING_AREA_ID ---****** UPDATE BUD_CONTRACT_CUST_DT ******************************************--------- UPDATE BUD_CONTRACT_CUST_DT SET RENT_AREA_APP = RENT_AREA_APP + @d_DIEN_TICH_CAN_CHOTHUE, --DIEN_TICH_DA_CHO_THUE = DIEN_TICH_DA_CHO_THUE + @d_DIEN_TICH_CAN_CHOTHUE, AREA_REMAIN = AREA_REMAIN - @d_DIEN_TICH_CAN_CHOTHUE --DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_CON_LAI_FINAL - @d_DIEN_TICH_CAN_CHOTHUE --DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_CON_LAI - @d_DIEN_TICH_CAN_CHOTHUE WHERE CONTRACT_DTID = @d_CONTRACT_DTID IF @@Error <> 0 GOTO ABORT -------------------CẬP NHẬT TỔNG DT ĐÃ CHO THUÊ SAU KHI DUYỆT----------- --UPDATE BUD_CONTRACT_CUST_DT --SET DIEN_TICH_DA_CHO_THUE = DIEN_TICH_DA_CHO_THUE + @d_DIEN_TICH_CAN_CHOTHUE --WHERE CONTRACT_DTID = @d_CONTRACT_DTID --IF @@Error <> 0 GOTO ABORT -----------------CẬP NHẬT TỔNG DT ĐÃ CHO THUÊ CỦA CÁC TẦNG GIỐNG VỚI TẦNG-------- -----------------CỦA PHIẾU DC DUYỆT----------------- DECLARE @p_TOTAL_UTILIZED_AREA DECIMAL(18,2) = ( SELECT UTILZED_AREA FROM BUD_AREA_DT WHERE BUILD_ID = @d_BUILD_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID ) UPDATE BUD_CONTRACT_CUST_DT SET DIEN_TICH_DA_CHO_THUE = @p_TOTAL_UTILIZED_AREA, DIEN_TICH_CON_LAI = DIEN_TICH_TANG - (DIEN_TICH_SD_NOI_BO + @p_TOTAL_UTILIZED_AREA), DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_TANG - (DIEN_TICH_SD_NOI_BO + @p_TOTAL_UTILIZED_AREA) WHERE BUILD_ID = @d_BUILD_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID UPDATE BUD_CONTRACT_DT SET DIEN_TICH_DA_CHO_THUE = @p_TOTAL_UTILIZED_AREA, DIEN_TICH_CON_LAI = DIEN_TICH_TANG - (DIEN_TICH_SD_NOI_BO + @p_TOTAL_UTILIZED_AREA), DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_TANG - (DIEN_TICH_SD_NOI_BO + @p_TOTAL_UTILIZED_AREA) WHERE BUILD_ID = @d_BUILD_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID END ------------------------------------------------------------------------------------------ -----BAODNQ 17/1/2022: Insert vào BUD_CONTRACT_LOG khi trưởng dv duyệt thành công IF(NOT EXISTS (SELECT * FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = @p_CONTRACT_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID AND CUSTOMER_ID = @p_CUSTOMER_ID AND IS_FIRST_TIME = 'Y')) BEGIN SET @p_IS_FIRST_TIME = 'Y' END ELSE BEGIN SET @p_IS_FIRST_TIME = 'N' END DECLARE @p_MAKER_ID VARCHAR(15) SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID) --SET @p_CREATE_DT = (SELECT CREATE_DT FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID) INSERT INTO BUD_CONTRACT_LOG ([BUD_CONTRACT_LOG_ID], [CONTRACT_ID], [CONTRACT_DT_ID], [CUSTOMER_ID], [BUILDING_AREA_ID], [TYPE], [INTERNAL_AREA], [RENT_AREA], [REMAIN_AREA], [UNIT_PRICE], [VAT], [TOTAL_AMT], [IS_FIRST_TIME], [BRANCH_RENT_ID], [DEP_RENT_ID], [MAKER_ID], [CREATE_DT], [CHECKER_ID], [APPROVE_DT], [AUTH_STATUS]) VALUES (@l_UTIL_ID, @p_CONTRACT_ID , @d_CONTRACT_DTID, @p_CUSTOMER_ID, @d_BUILDING_AREA_ID, 'CUSTOMER', NULL, @d_DIEN_TICH_CAN_CHOTHUE, @d_DIEN_TICH_CON_LAI_FINAL, @d_PRICE, @p_VAT_INIT, @d_TOTAL_AMT, @p_IS_FIRST_TIME, NULL, NULL, @p_MAKER_ID, GETDATE(), @P_CHECKER_ID, GETDATE(), 'A') IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN, @d_RENT_PRICE, @d_NOTES, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_CHOTHUE, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL END CLOSE XmlDataDoc DEALLOCATE XmlDataDoc -----SO VỚI LẦN DUYỆT TRƯỚC NẾU XÓA BỚT TẦNG ĐI ---> TRẢ LẠI DIỆN TÍCH ĐÃ THUÊ CHO TẦNG ĐÓ------ --IF((SELECT TOP 1(BC.BUILDING_AREA_ID) FROM @t_BUD_CONTRACT_LOG_FLOOR BC) IS NOT NULL) --BEGIN -- DECLARE @h_BUILDING_AREA_ID VARCHAR(15), @h_RENT_AREA_FLOOR_LOG DECIMAL(18,2) -- DECLARE BudContractLogCursor CURSOR FOR -- SELECT BC.BUILDING_AREA_ID FROM @t_BUD_CONTRACT_LOG_FLOOR BC -- OPEN BudContractLogCursor -- FETCH NEXT FROM BudContractLogCursor INTO @h_BUILDING_AREA_ID -- WHILE @@FETCH_STATUS = 0 -- BEGIN -- IF(@h_BUILDING_AREA_ID NOT IN -- (SELECT BCC.BUILDING_AREA_ID -- FROM BUD_CONTRACT_CUST_DT BCC WHERE BCC.CONTRACT_ID = @p_CONTRACT_ID) -- ) -- BEGIN -- SET @h_RENT_AREA_FLOOR_LOG = ( -- SELECT TOP 1 RENT_AREA FROM BUD_CONTRACT_LOG -- WHERE CONTRACT_ID = @p_CONTRACT_ID -- AND BUILDING_AREA_ID = @h_BUILDING_AREA_ID -- AND [TYPE] = 'CUSTOMER' -- ORDER BY APPROVE_DT DESC -- ) -- UPDATE BUD_AREA_DT -- SET UTILZED_AREA = UTILZED_AREA - @h_RENT_AREA_FLOOR_LOG -- WHERE BUILDING_AREA_ID = @h_BUILDING_AREA_ID -- END -- FETCH NEXT FROM BudContractLogCursor INTO @h_BUILDING_AREA_ID -- END -- CLOSE BudContractLogCursor -- DEALLOCATE BudContractLogCursor --END ---------------------------- --**** UPDATE BUD_CONTRACT_CUST_MASTER************* SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_CUST_DT WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO) SET @p_MONTH= (SELECT MONTHS FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO) UPDATE BUD_CONTRACT_CUST_MASTER SET RENT_PRICE=@p_RENT_PRICE *@p_MONTH WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO ---*** UPDATE BUD_MASTER------------------------------- SET @_BUILDING_ID =(SELECT BUILDING_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO) UPDATE BUD_MASTER SET UTILZED_AREA = (SELECT ISNULL(SUM(UTILZED_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID) WHERE BUILDING_ID=@_BUILDING_ID ---***UPDATE DIEN TICH CHO THUE TOAN BO TOA NHA --SET @TOATAL_INTERNAL = (SELECT ISNULL(SUM(INTERNAL_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID) --UPDATE BUD_MASTER --SET RENT_TOTAL_AREA = TOTAL_AREA -@TOATAL_INTERNAL --WHERE BUILDING_ID = @_BUILDING_ID UPDATE BUD_CONTRACT_CUST_MASTER SET AUTH_STATUS = 'A', CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE VERSION_NO=@p_VERSION_NO AND CONTRACT_ID =@p_CONTRACT_ID IF @@Error <> 0 GOTO ABORT ---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONTRACT_ID, 'APPROVE', @P_CHECKER_ID, GETDATE(), N'Trưởng đơn vị phê duyệt thành công' , N'Trưởng đơn vị phê duyệt' ) COMMIT TRANSACTION SELECT '0' as Result, @p_VERSION_NO VERSION_NO, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAY_INVOICE_UPD_Up]' GO /* INSERT INTO [dbo].[SYS_PREFIX](ID,Prefix,Description) VALUES('TR_REQ_PAY_INVOICE_UPD','TUIV',N'Thông tin chỉnh sửa hóa đơn') INSERT INTO [dbo].[SYS_PREFIX](ID,Prefix,Description) VALUES('TR_REQ_PAY_INVOICE_UPD_DT','TIND',N'Thông tin chi tiết chỉnh sửa hóa đơn') */ ALTER PROCEDURE [dbo].[TR_REQ_PAY_INVOICE_UPD_Up] @p_UP_ID VARCHAR(15) = NULL, @p_REQ_PAY_ID varchar(15)= NULL, @p_REQ_PAY_CODE varchar(50) = NULL, @p_MAKER_ID varchar(15) = null, @p_MAKER_ID_KT varchar(15) = null, @p_EDITOR_ID VARCHAR(20) = NULL, @p_XMP_TEMP XML = NULL AS --Validation is here DECLARE @MAKER_ID_CREATE_INVOICE VARCHAR(15),@l_REQ_PAY_ID VARCHAR(15) SET @MAKER_ID_CREATE_INVOICE =(SELECT MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID) SET @p_MAKER_ID_KT =(SELECT MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID) SET @l_REQ_PAY_ID = (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE =@p_REQ_PAY_CODE) DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(50), @AMT decimal(18,0),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0), @BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000) 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(50) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(500) = 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),@TOTAL_AMT_KT DECIMAL(18,2),@VAT_KT DECIMAL(18,2),@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @MAKER_ID VARCHAR(20), @CREATE_DT VARCHAR(20), @CREATE_DT_KT VARCHAR(20), @MAKER_ID_KT VARCHAR(20), @AUTH_STATUS_KT VARCHAR(20) DECLARE @hdoc INT; EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP; DECLARE XmlInvoice CURSOR FOR SELECT * FROM OPENXML(@hdoc, '/Root/XmlData', 2) WITH(REQ_PAY_ID VARCHAR(15),TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(50),TAX_NO nvarchar(15),GOODS_NAME nvarchar(500) , PRICE decimal(18,2),TAX decimal(18, 2),VAT decimal(18,2),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), PRICE_KT DECIMAL(18,2),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15),TYPE_FUNC VARCHAR(15), MAKER_ID VARCHAR(20), CREATE_DT VARCHAR(20), CREATE_DT_KT VARCHAR(20), MAKER_ID_KT VARCHAR(20), AUTH_STATUS_KT VARCHAR(20)) OPEN XmlInvoice; DECLARE @INDEX INT =0 BEGIN TRANSACTION -- VALIDATE IF(EXISTS (SELECT * FROM TR_REQ_PAY_INVOICE_UPD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND UP_ID<>@p_UP_ID AND AUTH_STATUS <>'A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Đang tồn tại giao dịch điều chỉnh chứng từ có mã ' + @p_REQ_PAY_CODE +N' đang chờ duyệt'ErrorDesc RETURN '-1' END IF(LEN(@INVOICE_NO) <7) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Số hóa đơn '+ @INVOICE_NO +N' phải đủ 7 kí tự' ErrorDesc RETURN '-1' END IF(@TYPE_FUNC='KT') BEGIN IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND REQ_PAY_ID <>@p_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc RETURN '-1' END END -- CAP NHAT MASTER SET @l_REQ_PAY_ID =(SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE) UPDATE TR_REQ_PAY_INVOICE_UPD SET REQ_PAY_ID=@l_REQ_PAY_ID, MAKER_ID=@p_EDITOR_ID WHERE UP_ID= @p_UP_ID --- DELETE FROM TR_REQ_PAY_INVOICE_UPD_DT WHERE UPD_ID=@p_UP_ID FETCH NEXT FROM XmlInvoice INTO @p_REQ_PAY_ID, @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER , @TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC, @MAKER_ID, @CREATE_DT, @CREATE_DT_KT, @MAKER_ID_KT, @AUTH_STATUS_KT WHILE @@fetch_status=0 BEGIN INSERT INTO TR_REQ_PAY_INVOICE_UPD_DT(UPD_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE, TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS, INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) VALUES (@p_UP_ID,@l_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103) ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE, @TAX,@VAT,@NOTES, @MAKER_ID_CREATE_INVOICE,CONVERT(DATE,@CREATE_DT,103), @p_EDITOR_ID,'U',NULL,NULL,CONVERT(DATE,@CREATE_DT_KT,103),@p_MAKER_ID_KT,'U',NULL,NULL,'1', @INVOICE_NO_SIGN,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT , @VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlInvoice INTO @p_REQ_PAY_ID, @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER , @TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC, @MAKER_ID, @CREATE_DT, @CREATE_DT_KT, @MAKER_ID_KT, @AUTH_STATUS_KT END; CLOSE XmlInvoice; DEALLOCATE XmlInvoice; --- Luu log chinh sua INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID ----- COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_JOB_FORM_Upd]' GO ALTER PROC [dbo].[TR_REQUEST_JOB_FORM_Upd] @p_REQ_ID varchar(15) = NULL, @p_REQ_CODE varchar(15) = NULL, @p_REQ_DT varchar(150) = NULL, @p_REF_ID varchar(20) = NULL, @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT varchar(20) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT varchar(20) = NULL, @p_REQ_REASON nvarchar(MAX) = NULL, @p_REQ_DESC nvarchar(MAX) = NULL, @p_NOTES nvarchar(MAX) = NULL, @p_REQ_TYPE_TRANS varchar(15) = NULL, @p_REQ_TYPE_GROUP varchar(15) = NULL, @p_REQ_TYPE_BOOKING_HOTEL VARCHAR(15) = NULL, @p_REQ_TYPE_BOOKING_AIR VARCHAR(15) = NULL, @p_REQ_TYPE_BOOKING_TRAIN VARCHAR(15) = NULL, @p_REQ_TYPE_BOOKING_CAR VARCHAR(15) = NULL, @p_SENDER_ID varchar(15) = NULL, @p_SEND_DT varchar(20) = NULL, @p_SIGN_USER varchar(15) = NULL, @p_SIGN_DT varchar(20) = NULL, @p_PROCESS_ID varchar(15) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_DEP_CREATE varchar(15) = NULL, @p_BRANCH_ID nvarchar(500) = NULL, @p_DEP_ID nvarchar(500) = NULL, @p_EMP_ID VARCHAR(20) = NULL, @p_HOTEL_NT NVARCHAR(MAX) = NULL, @p_HOTEL_HO NVARCHAR(MAX) =NULL, @p_EMP_PHONE VARCHAR(20) NULL, @p_NUM_TRIP_PEOPLE VARCHAR(20) NULL, @p_OVERALL_TIME VARCHAR(20) NULL, @p_TYPE_WORK VARCHAR(20) NULL, @p_FROM_DATE VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL, @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_USER_LOGIN VARCHAR(15) = NULL, @p_REQ_CAR_ID VARCHAR(20)=NULL, @p_ListReqJobDetail XML, @p_ListReqJobTrain XML, @p_ListReqJobFly XML, @p_ListReqJobTrip XML, @p_ListReqJobReturnTrip XML AS BEGIN TRANSACTION IF(@p_REQ_TYPE_BOOKING_AIR IS NULL OR @p_REQ_TYPE_BOOKING_AIR ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Bạn cần chọn vé máy bay' ErrorDesc RETURN '-1' END IF((@p_REQ_TYPE_TRANS IS NULL OR @p_REQ_TYPE_TRANS ='')AND @p_REQ_TYPE_BOOKING_AIR ='AIR_B') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Bạn cần chọn Một chiều/khứ hồi' ErrorDesc RETURN '-1' END IF(@p_REQ_TYPE_BOOKING_HOTEL IS NULL OR @p_REQ_TYPE_BOOKING_HOTEL ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Bạn cần chọn khách sạn' ErrorDesc RETURN '-1' END --IF(@P_REQ_TYPE_BOOKING_TRAIN IS NULL OR @P_REQ_TYPE_BOOKING_TRAIN ='') -- BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Bạn cần chọn đặt vé tàu' ErrorDesc -- RETURN '-1' -- END IF(@p_REQ_TYPE_GROUP IS NULL OR @p_REQ_TYPE_GROUP ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Bạn cần chọn Cá Nhân/Theo đoàn' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM trjf WHERE trjf.REQ_ID =@p_REQ_ID AND trjf.AUTH_STATUS ='E')) BEGIN SET @p_AUTH_STATUS ='E' END IF(NOT EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE PROCESS_ID='UPDATE' AND REQ_ID=@p_REQ_ID)AND EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID='HCHO_XL')) BEGIN UPDATE TR_REQ_JOB_FLY SET IS_OLD =1 WHERE REQ_ID=@p_REQ_ID END -- update master UPDATE dbo.TR_REQUEST_JOB_FORM SET REQ_CODE=@p_REQ_CODE,REQ_DT=CONVERT(DATETIME, @p_REQ_DT, 103),REF_ID=@p_REF_ID,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), REQ_REASON=@p_REQ_REASON, REQ_DESC=@p_REQ_DESC, NOTES=@p_NOTES, REQ_TYPE_TRANS=@p_REQ_TYPE_TRANS, DEP_CREATE=@p_DEP_CREATE, REQ_TYPE_GROUP=@p_REQ_TYPE_GROUP, REQ_TYPE_BOOKING_HOTEL = @p_REQ_TYPE_BOOKING_HOTEL, REQ_TYPE_BOOKING_AIR=@p_REQ_TYPE_BOOKING_AIR, REQ_TYPE_BOOKING_TRAIN=@p_REQ_TYPE_BOOKING_TRAIN,SENDER_ID=@p_SENDER_ID, SEND_DT=CONVERT(DATETIME, @p_SEND_DT, 103), SIGN_USER=@p_SIGN_USER, SIGN_DT= CONVERT(DATETIME, @p_SIGN_DT, 103), PROCESS_ID=@p_PROCESS_ID, BRANCH_CREATE=@p_BRANCH_CREATE,BRANCH_ID=@p_BRANCH_ID, DEP_ID=@p_DEP_ID, IS_SEND_APPR = @p_IS_SEND_APPR,EMP_ID=@p_EMP_ID,HOTEL_HO=@p_HOTEL_HO,HOTEL_NT=@p_HOTEL_NT,EMP_PHONE=@p_EMP_PHONE,NUM_TRIP_PEOPLE=@p_NUM_TRIP_PEOPLE,OVERALL_TIME =@p_OVERALL_TIME,TYPE_WORK =@p_TYPE_WORK,FROM_DATE=CONVERT(DATETIME, @p_FROM_DATE, 103),TO_DATE=CONVERT(DATETIME, @p_TO_DATE, 103),REQ_TYPE_BOOKING_CAR=@p_REQ_TYPE_BOOKING_CAR,REQ_CAR_ID=@p_REQ_CAR_ID WHERE REQ_ID=@p_REQ_ID IF @@Error <> 0 GOTO ABORT DELETE FROM dbo.TR_REQUEST_JOB_TRAIN WHERE REQ_ID = @p_REQ_ID AND IS_OLD = 0 DELETE FROM dbo.TR_REQUEST_JOB_DETAIL WHERE REQ_ID=@p_REQ_ID --Lưới Danh sách công tác DECLARE @lstRJD TABLE( REQ_DT_ID varchar(15), REQ_ID varchar(15), EMP_ID varchar(15), TLNANME varchar(15), BRANCH_ID varchar(15), DEP_ID varchar(15), PHONE varchar(150), NOTES nvarchar(MAX), AUTH_STATUS varchar(1) ) DECLARE @doc INT Exec sp_xml_preparedocument @doc Output,@p_ListReqJobDetail INSERT INTO @lstRJD SELECT * FROM OPENXML(@doc,'/Root/ListReqJobDetail',2) WITH ( REQ_DT_ID varchar(15), REQ_ID varchar(15), EMP_ID varchar(15), TLNANME varchar(15), BRANCH_ID varchar(15), DEP_ID varchar(15), PHONE varchar(150), NOTES nvarchar(MAX), AUTH_STATUS varchar(1) ) DECLARE PlDetailCur CURSOR FOR SELECT * FROM @lstRJD OPEN PlDetailCur DECLARE @pl_REQ_DT_ID varchar(15), @pl_REQ_ID varchar(15), @pl_EMP_ID varchar(15), @pl_TLNANME varchar(15), @pl_BRANCH_ID varchar(15), @pl_DEP_ID varchar(15), @pl_PHONE varchar(150), @pl_NOTES nvarchar(MAX), @pl_AUTH_STATUS varchar(1) FETCH NEXT FROM PlDetailCur INTO @pl_REQ_DT_ID, @pl_REQ_ID,@pl_EMP_ID, @pl_TLNANME, @pl_BRANCH_ID, @pl_DEP_ID, @pl_PHONE, @pl_NOTES, @pl_AUTH_STATUS WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_RJD_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_JOB_DETAIL', @l_RJD_ID out IF @l_RJD_ID='' OR @l_RJD_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQUEST_JOB_DETAIL ( REQ_DT_ID, REQ_ID, EMP_ID, TLNANME, BRANCH_ID, DEP_ID, PHONE, NOTES, AUTH_STATUS ) VALUES ( @l_RJD_ID, @p_REQ_ID, @pl_EMP_ID,@pl_TLNANME, @pl_BRANCH_ID, @pl_DEP_ID,@pl_PHONE,@pl_NOTES,@pl_AUTH_STATUS ) IF @@ERROR <> 0 GOTO ABORT1 FETCH NEXT FROM PlDetailCur INTO @pl_REQ_DT_ID, @pl_REQ_ID,@pl_EMP_ID, @pl_TLNANME, @pl_BRANCH_ID, @pl_DEP_ID, @pl_PHONE, @pl_NOTES, @pl_AUTH_STATUS END CLOSE PlDetailCur DEALLOCATE PlDetailCur --Lưới Lộ Trình DECLARE @lstRJT TABLE( TRAIN_ID varchar(15), REQ_ID varchar(15), TIME_TRAIN varchar(15), DAY_TRAIN varchar(15), FROM_TRAIN varchar(15), TO_TRAIN varchar(15), NOTES nvarchar(MAX), AUTH_STATUS varchar(1), VEHICLE_TYPE varchar(15), CONSIGNMENT varchar(5), IS_OLD BIT ) DECLARE @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_ListReqJobTrain --Lưới Danh sách Lộ Trình INSERT INTO @lstRJT SELECT * FROM OPENXML(@hdoc,'/Root/ListReqJobTrain',2) WITH ( TRAIN_ID varchar(15), REQ_ID varchar(15), TIME_TRAIN varchar(15), DAY_TRAIN varchar(15), FROM_TRAIN varchar(15), TO_TRAIN varchar(15), NOTES nvarchar(MAX), AUTH_STATUS varchar(1), VEHICLE_TYPE varchar(15), CONSIGNMENT varchar(5), IS_OLD BIT ) DECLARE PlTrainsCur CURSOR FOR SELECT * FROM @lstRJT OPEN PlTrainsCur DECLARE @pl_RJT_ID varchar(15), @pl_TIME_TRAIN varchar(15), @pl_DAY_TRAIN varchar(15), @pl_FROM_TRAIN varchar(15), @pl_TO_TRAIN varchar(15), @pl_VEHICLE_TYPE varchar(15), @pl_CONSIGNMENT varchar(5), @pl_IS_OLD BIT FETCH NEXT FROM PlTrainsCur INTO @pl_RJT_ID, @pl_REQ_ID,@pl_TIME_TRAIN, @pl_DAY_TRAIN, @pl_FROM_TRAIN, @pl_TO_TRAIN, @pl_NOTES, @pl_AUTH_STATUS,@pl_VEHICLE_TYPE,@pl_CONSIGNMENT,@pl_IS_OLD WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_RJT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_JOB_TRAIN', @l_RJT_ID out IF @l_RJT_ID='' OR @l_RJT_ID IS NULL GOTO ABORT IF(@pl_VEHICLE_TYPE<>'AIR') BEGIN SET @pl_CONSIGNMENT=NULL END INSERT INTO dbo.TR_REQUEST_JOB_TRAIN ( TRAIN_ID,REQ_ID, TIME_TRAIN, DAY_TRAIN, FROM_TRAIN, TO_TRAIN, NOTES, AUTH_STATUS,VEHICLE_TYPE,CONSIGNMENT,IS_OLD ) VALUES ( @l_RJT_ID, @p_REQ_ID, @pl_TIME_TRAIN,CONVERT(DATETIME, @pl_DAY_TRAIN, 103), @pl_FROM_TRAIN,@pl_TO_TRAIN, @pl_NOTES, @pl_AUTH_STATUS,@pl_VEHICLE_TYPE,@pl_CONSIGNMENT,0 ) IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM PlTrainsCur INTO @pl_RJT_ID, @pl_REQ_ID,@pl_TIME_TRAIN, @pl_DAY_TRAIN, @pl_FROM_TRAIN, @pl_TO_TRAIN, @pl_NOTES, @pl_AUTH_STATUS,@pl_VEHICLE_TYPE,@pl_CONSIGNMENT,@pl_IS_OLD END CLOSE PlTrainsCur DEALLOCATE PlTrainsCur --IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID NOT IN('','SIGN','NEW') AND --(REQ_TYPE_BOOKING_AIR='AIR_B'OR REQ_TYPE_BOOKING_TRAIN='TRAIN_Y'))) --BEGIN DELETE FROM dbo.TR_REQ_JOB_TRIP WHERE REQ_ID=@p_REQ_ID AND RECORD_STATUS='1' DELETE FROM dbo.TR_REQ_JOB_RETURN_TRIP WHERE REQ_ID=@p_REQ_ID AND RECORD_STATUS='1' DELETE FROM dbo.TR_REQ_JOB_FLY WHERE REQ_ID=@p_REQ_ID AND IS_OLD= '0' --Lưới giờ bay DECLARE @lstRJF TABLE( FLY_ID varchar(15), REQ_ID varchar(15), TIME_FLY varchar(10), DAY_FLY varchar(20), COST decimal(18, 2), NOTES nvarchar(MAX), AUTH_STATUS varchar(15), JOURNEY nvarchar(1000), AIRLINE_FLY nvarchar(50), IS_TRIP bit ) Exec sp_xml_preparedocument @hdoc Output,@p_ListReqJobFly --Lưới Danh sách giờ bay INSERT INTO @lstRJF SELECT * FROM OPENXML(@hdoc,'/Root/ListReqJobFly',2) WITH ( FLY_ID varchar(15), REQ_ID varchar(15), TIME_FLY varchar(10), DAY_FLY varchar(20), COST decimal(18, 2), NOTES nvarchar(MAX), AUTH_STATUS varchar(15), JOURNEY nvarchar(1000), AIRLINE_FLY nvarchar(50), IS_TRIP bit ) DECLARE PlFlysCur CURSOR FOR SELECT * FROM @lstRJF OPEN PlFlysCur DECLARE @pl_FLY_ID varchar(15), @pl_TIME_FLY varchar(10), @pl_DAY_FLY varchar(20), @pl_COST decimal(18, 2), @pl_JOURNEY NVARCHAR(1000), @pl_IS_TRIP bit, @pl_AIRLINE_FLY nvarchar(50) FETCH NEXT FROM PlFlysCur INTO @pl_FLY_ID, @pl_REQ_ID, @pl_TIME_FLY,@pl_DAY_FLY, @pl_COST, @pl_NOTES,@pl_AUTH_STATUS,@pl_JOURNEY,@pl_AIRLINE_FLY,@pl_IS_TRIP WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_RJF_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQ_JOB_FLY', @l_RJF_ID out IF @l_RJF_ID='' OR @l_RJF_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQ_JOB_FLY ( FLY_ID,REQ_ID, TIME_FLY, DAY_FLY, COST, NOTES, AUTH_STATUS,JOURNEY,AIRLINE_FLY,IS_TRIP ) VALUES ( @l_RJF_ID, @p_REQ_ID, @pl_TIME_FLY,CONVERT(DATETIME, @pl_DAY_FLY, 103), @pl_COST, @pl_NOTES, @pl_AUTH_STATUS,@pl_JOURNEY,@pl_AIRLINE_FLY,@pl_IS_TRIP ) IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM PlFlysCur INTO @pl_FLY_ID, @pl_REQ_ID, @pl_TIME_FLY,@pl_DAY_FLY, @pl_COST, @pl_NOTES,@pl_AUTH_STATUS,@pl_JOURNEY,@pl_AIRLINE_FLY,@pl_IS_TRIP END CLOSE PlFlysCur DEALLOCATE PlFlysCur --Lưới chuyến đi DECLARE @lstRJTrip TABLE( TRIP_ID varchar(15), REQ_ID varchar(15), TIME_TRIP varchar(10), DAY_TRIP varchar(20), FROM_TRIP nvarchar(MAX), TO_TRIP nvarchar(MAX), NOTES nvarchar(MAX), AUTH_STATUS varchar(15), AIRLINE_TRIP nvarchar(50) ) Exec sp_xml_preparedocument @hdoc Output,@p_ListReqJobTrip --Lưới Danh chuyến đi INSERT INTO @lstRJTrip SELECT * FROM OPENXML(@hdoc,'/Root/ListReqJobTrip ',2) WITH ( TRIP_ID varchar(15), REQ_ID varchar(15), TIME_TRIP varchar(10), DAY_TRIP varchar(20), FROM_TRIP nvarchar(MAX), TO_TRIP nvarchar(MAX), NOTES nvarchar(MAX), AUTH_STATUS varchar(15), AIRLINE_TRIP NVARCHAR(50) ) DECLARE PlTripsCur CURSOR FOR SELECT * FROM @lstRJTrip OPEN PlTripsCur DECLARE @pl_TRIP_ID varchar(15), @pl_TIME_TRIP varchar(10), @pl_DAY_TRIP varchar(20), @pl_FROM_TRIP nvarchar(MAX), @pl_TO_TRIP nvarchar(MAX), @pl_AIRLINE_TRIP nvarchar(50) FETCH NEXT FROM PlTripsCur INTO @pl_TRIP_ID, @pl_REQ_ID,@pl_TIME_TRIP,@pl_DAY_TRIP, @pl_FROM_TRIP, @pl_TO_TRIP, @pl_NOTES,@pl_AUTH_STATUS,@pl_AIRLINE_TRIP WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_RJTrip_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQ_JOB_TRIP', @l_RJTrip_ID out IF @l_RJTrip_ID='' OR @l_RJTrip_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQ_JOB_TRIP ( TRIP_ID,REQ_ID, TIME_TRIP, DAY_TRIP, FROM_TRIP,TO_TRIP, NOTES, AUTH_STATUS,AIRLINE_TRIP,RECORD_STATUS ) VALUES ( @l_RJTrip_ID, @p_REQ_ID, @pl_TIME_TRIP,CONVERT(DATETIME, @pl_DAY_TRIP, 103),@pl_FROM_TRIP, @pl_TO_TRIP, @pl_NOTES, @pl_AUTH_STATUS,@pl_AIRLINE_TRIP,'1' ) IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM PlTripsCur INTO @pl_TRIP_ID, @pl_REQ_ID,@pl_TIME_TRIP,@pl_DAY_TRIP, @pl_FROM_TRIP, @pl_TO_TRIP, @pl_NOTES,@pl_AUTH_STATUS,@pl_AIRLINE_TRIP END CLOSE PlTripsCur DEALLOCATE PlTripsCur --Lưới chuyến về DECLARE @lstRJRT TABLE( RETURN_ID varchar(15), REQ_ID varchar(15), TIME_RETURN varchar(10), DAY_RETURN varchar(20), FROM_RETURN nvarchar(MAX), TO_RETURN nvarchar(MAX), NOTES nvarchar(MAX), AUTH_STATUS varchar(15), AIRLINE_RETURN NVARCHAR(50) ) Exec sp_xml_preparedocument @hdoc Output,@p_ListReqJobReturnTrip --Lưới Danh chuyến về INSERT INTO @lstRJRT SELECT * FROM OPENXML(@hdoc,'/Root/ListReqJobReturnTrip',2) WITH ( RETURN_ID varchar(15), REQ_ID varchar(15), TIME_RETURN varchar(10), DAY_RETURN varchar(20), FROM_RETURN nvarchar(MAX), TO_RETURN nvarchar(MAX), NOTES nvarchar(MAX), AUTH_STATUS varchar(15), AIRLINE_RETURN NVARCHAR(50) ) DECLARE PlRTripsCur CURSOR FOR SELECT * FROM @lstRJRT OPEN PlRTripsCur DECLARE @pl_RETURN_ID varchar(15), @pl_TIME_RETURN varchar(10), @pl_DAY_RETURN varchar(20), @pl_FROM_RETURN nvarchar(MAX), @pl_TO_RETURN nvarchar(MAX), @pl_AIRLINE_RETURN NVARCHAR(50) FETCH NEXT FROM PlRTripsCur INTO @pl_RETURN_ID, @pl_REQ_ID,@pl_TIME_RETURN, @pl_DAY_RETURN, @pl_FROM_RETURN,@pl_TO_RETURN, @pl_NOTES,@pl_AUTH_STATUS,@pl_AIRLINE_RETURN WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_RJRT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQ_JOB_RETURN_TRIP', @l_RJRT_ID out IF @l_RJRT_ID='' OR @l_RJRT_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQ_JOB_RETURN_TRIP ( RETURN_ID,REQ_ID, TIME_RETURN, DAY_RETURN, FROM_RETURN,TO_RETURN, NOTES, AUTH_STATUS,AIRLINE_RETURN,RECORD_STATUS ) VALUES ( @l_RJRT_ID, @p_REQ_ID, @pl_TIME_RETURN,CONVERT(DATETIME, @pl_DAY_RETURN, 103), @pl_FROM_RETURN,@pl_TO_RETURN, @pl_NOTES, @pl_AUTH_STATUS,@pl_AIRLINE_RETURN,'1' ) IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM PlRTripsCur INTO @pl_RETURN_ID, @pl_REQ_ID,@pl_TIME_RETURN, @pl_DAY_RETURN, @pl_FROM_RETURN,@pl_TO_RETURN, @pl_NOTES,@pl_AUTH_STATUS,@pl_AIRLINE_RETURN END CLOSE PlRTripsCur DEALLOCATE PlRTripsCur --END DECLARE @PROCESS_ID VARCHAR(15) SELECT @PROCESS_ID=PROCESS_ID FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID IF(@PROCESS_ID='MAKER_CONF') BEGIN UPDATE dbo.TR_REQUEST_JOB_FORM SET PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='HO_APP' UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='U' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='MAKER_CONF' END DELETE dbo.PL_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE' INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_REQ_ID, 'UPDATE', @p_USER_LOGIN, GETDATE(), N'Cập nhật PYC công tác thành công' , N'Cập nhật PYC công tác' ) COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_ID REQ_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_ID, '' ErrorDesc RETURN '-1' END ABORT1: BEGIN CLOSE PlGoodsCur DEALLOCATE PlGoodsCur ROLLBACK TRANSACTION SELECT '-1' AS RESULT RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_JOB_FORM_Ins]' GO ALTER PROC [dbo].[TR_REQUEST_JOB_FORM_Ins] @p_REQ_CODE VARCHAR(15) = NULL, @p_REQ_DT VARCHAR(150) = NULL, @p_MAKER_ID VARCHAR(15) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_CHECKER_ID VARCHAR(15) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_REQ_REASON NVARCHAR(MAX) = NULL, @p_REQ_DESC NVARCHAR(MAX) = NULL, @p_NOTES NVARCHAR(MAX) = NULL, @p_REQ_TYPE_TRANS VARCHAR(15) = NULL, @p_REQ_TYPE_GROUP VARCHAR(15) = NULL, @p_REQ_TYPE_BOOKING_HOTEL VARCHAR(15) = NULL, @p_REQ_TYPE_BOOKING_AIR VARCHAR(15) = NULL, @p_REQ_TYPE_BOOKING_TRAIN VARCHAR(15) = NULL, @p_REQ_TYPE_BOOKING_CAR VARCHAR(15) = NULL, @p_SENDER_ID VARCHAR(15) = NULL, @p_SEND_DT VARCHAR(20) = NULL, @p_SIGN_USER VARCHAR(15) = NULL, @p_SIGN_DT VARCHAR(20) = NULL, @p_BRANCH_CREATE VARCHAR(15) = NULL, @p_DEP_CREATE VARCHAR(15) = NULL, @p_BRANCH_ID NVARCHAR(500) = NULL, @p_DEP_ID NVARCHAR(500) = NULL, @p_EMP_PHONE VARCHAR(20) NULL, @p_NUM_TRIP_PEOPLE VARCHAR(20) NULL, @p_OVERALL_TIME VARCHAR(20) NULL, @p_TYPE_WORK VARCHAR(20) NULL, @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_FROM_DATE VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL, @p_EMP_ID VARCHAR(20) = NULL, @p_HOTEL_NT NVARCHAR(1000) = NULL, @p_REQ_CAR_ID VARCHAR(20)=NULL, @p_ListReqJobDetail XML = NULL, @p_ListReqJobTrain XML = NULL AS BEGIN TRANSACTION IF(@p_REQ_TYPE_GROUP IS NULL OR @p_REQ_TYPE_GROUP ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Bạn cần chọn Cá Nhân/Theo đoàn' ErrorDesc RETURN '-1' END IF(@p_REQ_TYPE_BOOKING_HOTEL IS NULL OR @p_REQ_TYPE_BOOKING_HOTEL ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Bạn cần chọn khách sạn' ErrorDesc RETURN '-1' END IF(@p_REQ_TYPE_BOOKING_AIR IS NULL OR @p_REQ_TYPE_BOOKING_AIR ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Bạn cần chọn vé máy bay' ErrorDesc RETURN '-1' END IF((@p_REQ_TYPE_TRANS IS NULL OR @p_REQ_TYPE_TRANS ='')AND @p_REQ_TYPE_BOOKING_AIR ='AIR_B') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Bạn cần chọn Một chiều/khứ hồi' ErrorDesc RETURN '-1' END IF(@p_REQ_TYPE_BOOKING_TRAIN IS NULL OR @p_REQ_TYPE_BOOKING_TRAIN ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Vé tàu bạn cần chọn Tự đặt/Không' ErrorDesc RETURN '-1' END -- insert master DECLARE @l_REQ_ID varchar(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_JOB_FORM', @l_REQ_ID OUT EXEC [TR_REQ_JOB_CODE_GenKey] 'TR_REQUEST_JOB_FORM', '','AFT', @p_REQ_CODE OUT IF @l_REQ_ID='' OR @l_REQ_ID IS NULL GOTO ABORT INSERT INTO TR_REQUEST_JOB_FORM ( [REQ_ID],[REQ_CODE],[REQ_DT],[REF_ID],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[REQ_REASON],[REQ_DESC],[NOTES],[REQ_TYPE_TRANS],[REQ_TYPE_GROUP],[REQ_TYPE_BOOKING_HOTEL],[REQ_TYPE_BOOKING_AIR], [REQ_TYPE_BOOKING_TRAIN],[SENDER_ID],[SEND_DT],[SIGN_USER],[SIGN_DT],[BRANCH_CREATE],[DEP_CREATE],[BRANCH_ID],[DEP_ID],[IS_SEND_APPR],[EMP_PHONE],[NUM_TRIP_PEOPLE],[OVERALL_TIME],[TYPE_WORK],[PROCESS_ID],[FROM_DATE],[TO_DATE],[EMP_ID],[HOTEL_NT],[REQ_TYPE_BOOKING_CAR],[REQ_CAR_ID] ) VALUES(@l_REQ_ID,@p_REQ_CODE,CONVERT(DATETIME, @p_REQ_DT, 103),@p_MAKER_ID,@p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103),'E',@p_CHECKER_ID,CONVERT(DATETIME, @p_APPROVE_DT, 103),@p_REQ_REASON,@p_REQ_DESC,@p_NOTES,@p_REQ_TYPE_TRANS,@p_REQ_TYPE_GROUP,@p_REQ_TYPE_BOOKING_HOTEL,@p_REQ_TYPE_BOOKING_AIR, @p_REQ_TYPE_BOOKING_TRAIN,@p_SENDER_ID,CONVERT(DATETIME, @p_SEND_DT, 103),@p_SIGN_USER,CONVERT(DATETIME, @p_SIGN_DT, 103),@p_BRANCH_CREATE,@p_DEP_CREATE,@p_BRANCH_ID,@p_DEP_ID,@p_IS_SEND_APPR,@p_EMP_PHONE,@p_NUM_TRIP_PEOPLE ,@p_OVERALL_TIME,@p_TYPE_WORK,'NEW',CONVERT(DATETIME,@p_FROM_DATE ,103),CONVERT(DATETIME,@p_TO_DATE,103),@p_EMP_ID,@p_HOTEL_NT,@p_REQ_TYPE_BOOKING_CAR,@p_REQ_CAR_ID) IF @@Error <> 0 GOTO ABORT --Lưới Danh sách công tác DECLARE @lstRJD TABLE( EMP_ID varchar(15), TLNANME varchar(15), BRANCH_ID varchar(15), DEP_ID varchar(15), PHONE varchar(150), NOTES nvarchar(MAX) ) DECLARE @doc INT Exec sp_xml_preparedocument @doc Output,@p_ListReqJobDetail INSERT INTO @lstRJD SELECT * FROM OPENXML(@doc,'/Root/ListReqJobDetail',2) WITH ( EMP_ID varchar(15), TLNANME varchar(15), BRANCH_ID varchar(15), DEP_ID varchar(15), PHONE varchar(150), NOTES nvarchar(MAX) ) DECLARE PlDetailCur CURSOR FOR SELECT * FROM @lstRJD OPEN PlDetailCur DECLARE @EMP_ID varchar(15), @TLNANME varchar(15), @BRANCH_ID varchar(15), @DEP_ID varchar(15), @PHONE varchar(150), @NOTES nvarchar(MAX) FETCH NEXT FROM PlDetailCur INTO @EMP_ID, @TLNANME, @BRANCH_ID, @DEP_ID, @PHONE,@NOTES WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_RJD_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_JOB_DETAIL', @l_RJD_ID out IF @l_RJD_ID='' OR @l_RJD_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQUEST_JOB_DETAIL ( REQ_DT_ID, REQ_ID, EMP_ID, TLNANME, BRANCH_ID, DEP_ID, PHONE, NOTES ) VALUES ( @l_RJD_ID, @l_REQ_ID, @EMP_ID, @TLNANME, @BRANCH_ID, @DEP_ID, @PHONE,@NOTES ) IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM PlDetailCur INTO @EMP_ID, @TLNANME, @BRANCH_ID, @DEP_ID, @PHONE,@NOTES END CLOSE PlDetailCur DEALLOCATE PlDetailCur --Lưới Lộ Trình DECLARE @lstRJT TABLE( TIME_TRAIN varchar(15), DAY_TRAIN varchar(15), FROM_TRAIN varchar(15), TO_TRAIN varchar(15), NOTES NVARCHAR(2000), VEHICLE_TYPE varchar(15), CONSIGNMENT varchar(5) ) DECLARE @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_ListReqJobTrain --Lưới Danh sách Lộ Trình INSERT INTO @lstRJT SELECT * FROM OPENXML(@hdoc,'/Root/ListReqJobTrain',2) WITH ( TIME_TRAIN varchar(15), DAY_TRAIN varchar(15), FROM_TRAIN varchar(15), TO_TRAIN varchar(15), NOTES NVARCHAR(2000), VEHICLE_TYPE varchar(15), CONSIGNMENT varchar(5) ) DECLARE PlTrainsCur CURSOR FOR SELECT * FROM @lstRJT OPEN PlTrainsCur DECLARE @TIME_TRAIN varchar(15), @DAY_TRAIN varchar(15), @FROM_TRAIN varchar(15), @TO_TRAIN varchar(15), @VEHICLE_TYPE varchar(15), @CONSIGNMENT varchar(5) FETCH NEXT FROM PlTrainsCur INTO @TIME_TRAIN, @DAY_TRAIN, @FROM_TRAIN, @TO_TRAIN,@NOTES,@VEHICLE_TYPE,@CONSIGNMENT WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_RJT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_JOB_TRAIN', @l_RJT_ID out IF @l_RJT_ID='' OR @l_RJT_ID IS NULL GOTO ABORT IF(@VEHICLE_TYPE='AIR' AND @CONSIGNMENT IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_ID, N'Lưu thất bại! Lưới lộ trình. Chuyến bay '+@TO_TRAIN+' - '+@FROM_TRAIN +N'cần chọn loại ký gửi' ErrorDesc RETURN '-1' END IF(@VEHICLE_TYPE!='AIR') BEGIN SET @CONSIGNMENT=NULL END INSERT INTO dbo.TR_REQUEST_JOB_TRAIN ( TRAIN_ID,REQ_ID, TIME_TRAIN, DAY_TRAIN, FROM_TRAIN, TO_TRAIN, NOTES,VEHICLE_TYPE,CONSIGNMENT,IS_OLD ) VALUES ( @l_RJT_ID, @l_REQ_ID, @TIME_TRAIN,CONVERT(DATETIME, @DAY_TRAIN, 103), @FROM_TRAIN,@TO_TRAIN,@NOTES, @VEHICLE_TYPE,@CONSIGNMENT,0 ) IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM PlTrainsCur INTO @TIME_TRAIN, @DAY_TRAIN, @FROM_TRAIN, @TO_TRAIN,@NOTES,@VEHICLE_TYPE,@CONSIGNMENT END CLOSE PlTrainsCur DEALLOCATE PlTrainsCur INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @l_REQ_ID, 'INSERT', @p_MAKER_ID, GETDATE(), N'Thêm mới PYC công tác thành công' , N'Thêm mới PYC công tác' ) COMMIT TRANSACTION SELECT '0' as Result, @l_REQ_ID REQ_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE PlTrainsCur DEALLOCATE PlTrainsCur CLOSE PlDetailCur DEALLOCATE PlDetailCur ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_EMPLOYEE_Search]' GO /* [CM_EMPLOYEE_Search] '','','Nguyễn Minh Tuân','DV0002','','','','','','','','','','100', 'ALL' */ ALTER PROCEDURE [dbo].[CM_EMPLOYEE_Search] @p_EMP_ID varchar(15) = null , @p_EMP_CODE varchar(15) = NULL , @p_EMP_NAME nvarchar(50) = NULL , @p_BRANCH_ID varchar(15) = NULL , @p_BRANCH_CODE varchar(15) = NULL , @p_DEP_ID varchar(15) = 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_TOP INT = NULL, @P_LEVEL varchar(10) = NULL AS BEGIN -- PAGING DECLARE @l_HS_ID VARCHAR(15) = (SELECT A.BRANCH_ID FROM CM_BRANCH A WHERE A.BRANCH_TYPE = 'HS') declare @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID) IF (@P_LEVEL = 'ALL' AND @p_BRANCH_ID <> @l_HS_ID) BEGIN INSERT INTO @tmp SELECT @l_HS_ID SET @p_DEP_ID='' END IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*,C.AUTH_STATUS_NAME,D.DEP_NAME,B.BRANCH_CODE, dbo.FN_GET_CHINHANH(B.BRANCH_ID,'KV') KHU_VUC, dbo.FN_GET_CHINHANH(B.BRANCH_ID,'CN') CHI_NHANH,B.BRANCH_NAME PGD,E.CONTENT AS RECORD_STATUS_NAME ,U.PhoneNumber AS PHONE_NUMBER , L.POS_CODE,L.POS_NAME, L.USER_DOMAIN -- SELECT END FROM CM_EMPLOYEE A LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS=C.AUTH_STATUS LEFT JOIN CM_DEPARTMENT D ON A.DEP_ID=D.DEP_ID LEFT JOIN CM_ALLCODE E ON E.CDNAME = 'RECORD_STATUS' AND E.CDVAL = A.RECORD_STATUS LEFT JOIN CM_EMPLOYEE_LOG L ON L.EMP_CODE = A.EMP_CODE LEFT JOIN TL_USER U ON U.TLNANME = L.USER_DOMAIN WHERE 1 = 1 AND (A.EMP_ID LIKE '%' + @p_EMP_ID + '%' OR @p_EMP_ID IS NULL OR @p_EMP_ID = '') AND (A.EMP_CODE LIKE '%' + @p_EMP_CODE + '%' OR @p_EMP_CODE IS NULL OR @p_EMP_CODE = '') AND (A.EMP_NAME LIKE '%' + @p_EMP_NAME + '%' OR @p_EMP_NAME IS NULL OR @p_EMP_NAME = '') --AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (B.BRANCH_CODE LIKE '%' + @p_BRANCH_CODE + '%' OR @p_BRANCH_CODE IS NULL OR @p_BRANCH_CODE = '') AND (A.DEP_ID LIKE '%' + @p_DEP_ID + '%' OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_ID))) AND A.RECORD_STATUS = '1' AND ((@P_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp) OR (@P_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_ID)) OR @p_BRANCH_ID = '' OR @p_BRANCH_ID IS NULL ) AND (L.USER_DOMAIN IN (SELECT TLNANME FROM TL_USER WHERE RoleName <>'DISABLE')) -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(CONVERT(INT,@P_TOP))A.*,C.AUTH_STATUS_NAME,D.DEP_NAME,B.BRANCH_CODE, dbo.FN_GET_CHINHANH(B.BRANCH_ID,'KV') KHU_VUC, dbo.FN_GET_CHINHANH(B.BRANCH_ID,'CN') CHI_NHANH,B.BRANCH_NAME PGD,E.CONTENT AS RECORD_STATUS_NAME --,U.PhoneNumber AS PHONE_NUMBER , L.POS_CODE,L.POS_NAME, L.USER_DOMAIN -- SELECT END FROM CM_EMPLOYEE A LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS=C.AUTH_STATUS LEFT JOIN CM_DEPARTMENT D ON A.DEP_ID=D.DEP_ID LEFT JOIN CM_ALLCODE E ON E.CDNAME = 'RECORD_STATUS' AND E.CDVAL = A.RECORD_STATUS LEFT JOIN CM_EMPLOYEE_LOG L ON L.EMP_CODE = A.EMP_CODE LEFT JOIN TL_USER U ON U.TLNANME = L.USER_DOMAIN WHERE 1 = 1 AND (A.EMP_ID LIKE '%' + @p_EMP_ID + '%' OR @p_EMP_ID IS NULL OR @p_EMP_ID = '') AND (A.EMP_CODE LIKE '%' + @p_EMP_CODE + '%' OR @p_EMP_CODE IS NULL OR @p_EMP_CODE = '') AND (A.EMP_NAME LIKE '%' + @p_EMP_NAME + '%' OR @p_EMP_NAME IS NULL OR @p_EMP_NAME = '') --AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (B.BRANCH_CODE LIKE '%' + @p_BRANCH_CODE + '%' OR @p_BRANCH_CODE IS NULL OR @p_BRANCH_CODE = '') AND (A.DEP_ID LIKE '%' + @p_DEP_ID + '%' OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') --AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_ID))) AND A.RECORD_STATUS = '1' AND ((@P_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp) OR (@P_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_ID)) OR @p_BRANCH_ID = '' OR @p_BRANCH_ID IS NULL ) AND (L.USER_DOMAIN IN (SELECT TLNANME FROM TL_USER WHERE RoleName <>'DISABLE')) -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_EMPLOYEE_Upd]' GO /* [CM_EMPLOYEE_Upd] @p_EMP_ID= 'EMP000000000002' , @p_EMP_CODE ='EMP2013/0001', @p_EMP_NAME = NULL , @p_BRANCH_ID= NULL , @p_DEP_ID= NULL , @p_NOTES= NULL , @p_RECORD_STATUS= NULL , @p_AUTH_STATUS = NULL , @p_MAKER_ID = NULL , @p_CREATE_DT = NULL, @p_CHECKER_ID= NULL , @p_APPROVE_DT = NULL */ ALTER PROCEDURE [dbo].[CM_EMPLOYEE_Upd] @p_EMP_ID varchar(15) = null , @p_EMP_CODE varchar(15) = NULL , @p_EMP_NAME nvarchar(50) = NULL , @p_BRANCH_ID varchar(15) = NULL , @p_DEP_ID varchar(15) = 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 AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( EXISTS ( SELECT * FROM CM_EMPLOYEE WHERE EMP_CODE = @p_EMP_CODE AND EMP_ID<>@p_EMP_ID)) SET @ERRORSYS = 'EMP-0001' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END BEGIN TRANSACTION UPDATE CM_EMPLOYEE SET [EMP_CODE] = @p_EMP_CODE,[EMP_NAME] = @p_EMP_NAME,[BRANCH_ID] = @p_BRANCH_ID,[DEP_ID] = @p_DEP_ID,[NOTES] = @p_NOTES,[RECORD_STATUS] = @p_RECORD_STATUS,[AUTH_STATUS] = @p_AUTH_STATUS,[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE EMP_ID= @p_EMP_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_EMP_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'Altering [dbo].[ASS_GROUP_ByType]' GO ALTER PROCEDURE [dbo].[ASS_GROUP_ByType] @p_TYPE_ID varchar(15) = NULL-- TSCD; CCLD; ''; 'ADDNEW' AS BEGIN IF @p_TYPE_ID = 'ADDNEW' BEGIN SELECT MAX(GROUP_ID) AS GROUP_ID, MAX(TYPE_ID) AS TYPE_ID, MAX(PARENT_ID) AS PARENT_ID , MAX(IS_LEAF) AS IS_LEAF , MAX(GROUP_LEVEL) AS GROUP_LEVEL, MAX(ASS_CAT) AS ASS_CAT, MAX(AMORT_ACCTNO) AS AMORT_ACCTNO, MAX(EXP_ACCTNO) AS EXP_ACCTNO, MAX(INC_ACCTNO) AS INC_ACCTNO, MAX(LIQ_ACCTNO) AS LIQ_ACCTNO, MAX(ASSET_ACCTNO) AS ASSET_ACCTNO, MAX(ASSET_ACCTNO_NHNN) AS ASSET_ACCTNO_NHNN, MAX(AMORT_MONTH) AS AMORT_MONTH, MAX(AMORT_RATE) AS AMORT_RATE, MAX(NOTES) AS NOTES, MAX(RECORD_STATUS) AS RECORD_STATUS, MAX(AUTH_STATUS) AS AUTH_STATUS, MAX(MAKER_ID) AS MAKER_ID, MAX(CREATE_DT) AS CREATE_DT, MAX(CHECKER_ID) AS CHECKER_ID, MAX(APPROVE_DT) AS APPROVE_DT, MAX(AMORT_MONTH_MAX) AS AMORT_MONTH_MAX, MAX(AMORT_MONTH_MIN) AS AMORT_MONTH_MIN, GROUP_CODE, GROUP_NAME, GROUP_CODE+ ' - '+ GROUP_NAME AS GROUP_NAME_FULL --MAX(intrare) AS intrare, FROM ASS_GROUP WHERE IS_LEAF ='Y' AND AUTH_STATUS = 'A' AND RECORD_STATUS = '1' GROUP BY GROUP_CODE, GROUP_NAME ORDER BY GROUP_CODE, GROUP_NAME END ELSE BEGIN SELECT A.*,GROUP_CODE+ ' - '+ GROUP_NAME AS GROUP_NAME_FULL FROM ASS_GROUP A WHERE ([TYPE_ID] = @p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID = '') AND IS_LEAF ='Y' AND AUTH_STATUS = 'A' AND RECORD_STATUS = '1' --AND A.GROUP_ID = 'ASG000000001255'--(SELECT aa.GROUP_ID FROM ASS_ADDNEW aa WHERE aa.ADDNEW_ID='ASA000000256899') --and IS_LEAF='Y' --AND ISNULL(A.ASSET_ACCTNO,'') <> '' --AND ISNULL(A.AMORT_ACCTNO,'') <> '' --AND ISNULL(A.EXP_ACCTNO,'') <> '' --AND ISNULL(A.INC_ACCTNO,'') <> '' --AND ISNULL(A.LIQ_ACCTNO,'') <> '' ORDER BY GROUP_CODE END End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_REQUEST_DOC_ById]' GO ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_ById] @p_REQ_ID varchar(15) = NULL, @p_USER_LOGIN VARCHAR(50) = NULL AS BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,A.IS_AUTHORITY, CASE WHEN A.BRANCH_FEE IS NULL OR A.BRANCH_FEE = '' OR ISNULL(A.NOTES,'') <> '' THEN A.NOTES WHEN A.BRANCH_FEE = 'DV0001' THEN DF.DEP_NAME + ' - ' + BF.BRANCH_NAME WHEN A.BRANCH_FEE <> 'DV0001' THEN BF.BRANCH_NAME END AS NOTES, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, CASE WHEN A.BRANCH_CREATE <> 'DV0001' THEN G.BRANCH_NAME ELSE DEP.DEP_NAME + ' - ' + G.BRANCH_NAME END AS BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RPN.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, CC.REQ_NAME AS PL_BASED_NAME, CC.REQ_CODE AS PL_BASED_CODE, CC.TOTAL_AMT AS PL_BASED_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, RPC.TYPE_JOB AS TYPE_JOB, RPC.TLNAME AS USER_JOB, TU.TLFullName AS USER_JOB_NAME, TFM.TLNANME AS TRANSFER_MAKER, RPC.TRANFER_DT AS TRANFER_DT , RPC.MAKER_ID AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, --PLRP.ID AS REF_ID, -- GIANT 11/11/2021 ISNULL(RPC.PROCESS_ID,PLRP.ID) AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY, '' AS NGUOIXULY ,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES, BTC.BRANCH_TYPE AS BRANCH_TYPE_CRE, BF.BRANCH_TYPE AS BRANCH_TYPE_FEE, A.PL_BASED_ID, A.TGD_NOTES, A.DEP_FEE AS DEP_FEE_ID, A.CREATOR_NOTES, ISNULL(PLRP.SUB_PROCESS_ID, '') AS SUB_PROCESS_ID FROM PL_REQUEST_DOC A --LEFT JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <> 'U' AND (PLRP.IS_HAS_CHILD=1 OR PLRP.PROCESS_ID IN ('TKTGD','TKHDQT')) ------------BAODNQ 24/6/2022------------------- LEFT JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS = 'C' AND ((PLRP.PROCESS_ID = 'DVCM' AND EXISTS( SELECT pc.COST_ID FROM PL_COSTCENTER pc LEFT JOIN PL_COSTCENTER_DT pcd ON pc.COST_ID = pcd.COST_ID LEFT JOIN CM_DEPARTMENT cd ON pcd.DEP_ID = cd.DEP_ID OR pcd.DEP_ID = cd.FATHER_ID LEFT JOIN TL_USER tu1 ON pcd.BRANCH_ID = tu1.TLSUBBRID AND cd.DEP_ID = tu1.SECUR_CODE LEFT JOIN TL_SYS_ROLE_MAPPING tsrm ON tsrm.DEP_ID = cd.DEP_ID AND pcd.BRANCH_ID = tsrm.BRANCH_ID WHERE (pc.DVDM_ID = PLRP.DVDM_ID OR PLRP.DVDM_ID IS NULL OR PLRP.DVDM_ID = '') AND (tu1.TLNANME = @p_USER_LOGIN OR tsrm.TLNAME = @p_USER_LOGIN))) OR (PLRP.PROCESS_ID = 'DVDC' AND EXISTS( SELECT prt.REQ_TRANSFER_ID FROM PL_REQUEST_TRANSFER prt LEFT JOIN CM_DEPARTMENT cd ON cd.DEP_ID = prt.FR_DEP_ID OR cd.FATHER_ID = prt.FR_DEP_ID LEFT JOIN TL_USER tu1 ON prt.FR_BRN_ID = tu1.TLSUBBRID AND (cd.DEP_ID = tu1.SECUR_CODE OR tu1.BRANCH_TYPE <> 'HS') LEFT JOIN TL_SYS_ROLE_MAPPING tsrm ON tsrm.DEP_ID = cd.DEP_ID AND prt.FR_BRN_ID = tsrm.BRANCH_ID WHERE prt.REQ_DOC_ID = PLRP.REQ_ID AND (tu1.TLNANME = @p_USER_LOGIN OR tsrm.TLNAME = @p_USER_LOGIN))) OR PLRP.PROCESS_ID NOT IN ('DVCM','DVDC')) ------------END BAODNQ------------------- 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID --LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID = PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') -- GIANT LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') AND RPC.TLNAME = @p_USER_LOGIN --LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.PL_REQUEST_DOC CC ON CC.REQ_ID = A.PL_BASED_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME -- GiaNT LEFT JOIN CM_BRANCH BTC ON BTC.BRANCH_ID = A.BRANCH_CREATE WHERE 1 = 1 AND (A.REQ_ID = @p_REQ_ID ) ORDER BY USER_JOB DESC END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_CAR_COST_Confirm]' GO ALTER PROC [dbo].[TR_REQUEST_CAR_COST_Confirm] @p_REQ_ID varchar(20) NULL, @p_USER_LOGIN varchar(20) NULL AS IF((SELECT MAKER_ID FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID)!=@p_USER_LOGIN) BEGIN SELECT '-1' Result, N'Bạn không được phép xác nhận đối tượng này!' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT MAKER_ID FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS='R')) BEGIN SELECT '-1' Result, N'Phiếu yêu cầu xe số: '+(SELECT REQ_CODE FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID) +N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @p_MESSAGE NVARCHAR(200), @p_Process_ID VARCHAR(20) --IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='CVINFO_SEND')) --BEGIN -- UPDATE TR_REQUEST_CAR -- SET PROCESS_ID='MAKER_CONF' -- WHERE REQ_ID=@p_REQ_ID -- IF @@Error <> 0 GOTO ABORT -- SET @p_Process_ID='MAKER_APP' -- SET @p_MESSAGE=N'Xác nhận thông tin thành công' -- INSERT INTO dbo.PL_PROCESS -- ( -- REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES -- ) -- VALUES -- ( -- @p_REQ_ID,'MAKER_APP',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),N'Người tạo xác nhận thông tin thành công. Vui lòng chờ tài xế cập nhật thông tin chuyến đi',N'Người tạo xác nhận thông tin' -- ) -- UPDATE PL_REQUEST_PROCESS -- SET STATUS='P',CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=GETDATE(),NOTES=N'Người tạo đã xác nhận thông tin' -- WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='MAKER_CONF' --END --ELSE --BEGIN DECLARE @BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(20) UPDATE TR_REQUEST_CAR SET IS_CONFIRM_COST=1,PROCESS_ID='TDV_C_APP' WHERE REQ_ID=@p_REQ_ID SET @p_MESSAGE=N'Xác nhận chi phí thành công' IF @@Error <> 0 GOTO ABORT SET @p_Process_ID='TDV_C_APP' UPDATE PL_REQUEST_PROCESS SET STATUS='P', CHECKER_ID=@p_USER_LOGIN, APPROVE_DT=CONVERT(DATETIME,GETDATE(),103),NOTES=N'Người tạo xác nhận chi phí thành công' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='MAKER_APP' INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'MAKER_APP',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),N'Người tạo xác nhận chi phí thành công',N'Người tạo xác nhận chi phí' ) SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_ID INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, CHECKER_ID, APPROVE_DT,PARENT_PROCESS_ID, IS_LEAF,BRANCH_ID,DEP_ID, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD) VALUES (@p_REQ_ID,'TDV_C_APP', 'C','GDDV','',CONVERT(DATETIME,GETDATE(),103),'MAKER_APP','N',@BRANCH_CREATE,IIF(@BRANCH_CREATE='DV0001',@DEP_CREATE,''),'', '',N'Chờ trưởng phòng xác nhận chi phí','0' ) --END COMMIT TRANSACTION SELECT '0' as Result, 1 IS_CONFIRM_COST,@p_Process_ID PROCESS_ID, @p_MESSAGE ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Xác nhận thất bại' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BID_MASTER_Search]' GO -- SELECT * FROM CM_ALLCODE -- SELECT * FROM BID_MASTER -- /* BID_MASTER_Search NULL,'H','2',NULL,NULL, NULL,NULL,'','','','','','',100 SELECT * FROM BID_MASTER WHERE BID_TYPE = '2' */ ALTER PROCEDURE [dbo].[BID_MASTER_Search] @p_BID_ID varchar(15) = NULL, @p_BID_CODE varchar(20) = NULL,--MA HO SO THAU @p_BID_TYPE varchar(1) = NULL, -- LOAI HO SO THAU(MUA SAM OR XDCB) @p_PROJECT_ID varchar(15) = NULL,-- DU AN XDCB LA CONG TRINH @P_PROJECT_CODE VARCHAR (15) = NULL, @p_TERM_BID nvarchar(200) = NULL,--HANG MUC THAU @p_FORM varchar(4) = NULL,-- HINH THUC THAU LA DAU THAU CDVAL = DT VA CHI DINH THAU CDVAL = CD VOI CDNAME = 'FORM' @P_AUTH nvarchar(1) = NULL, -- TRANG THAI DUYET --@p_INPUT_DT VARCHAR(20) = NULL,-- NGAY PHAT HO SO THAU @p_EXP_DT VARCHAR(20) = NULL, @p_OPEN_DT VARCHAR(20) = NULL, @P_FROM_DATE VARCHAR(20) = NULL, @P_TO_DATE VARCHAR(20) = NULL, @P_SUP_ID VARCHAR(15) = NULL, @p_REQ_ID VARCHAR(20) = NULL, @p_TOP INT = 100 AS BEGIN -- PAGING IF @p_BID_TYPE = '1' BEGIN IF(@p_TOP is NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*, C.SUP_ID, C.SUP_CODE, C.SUP_NAME, C.ADDR AS SUP_ADD, C.TEL AS SUP_TEL, C.CONTACT_PERSON AS SUP_CONTACT_PERSON, D.CONTENT, E.PROJECT_CODE, E.PROJECT_NAME,AU.AUTH_STATUS_NAME, TRRDDT.[DESCRIPTION] AS DESCRIPTION_TR_REQ_DOC_DT, TRRD.REQ_CODE -- SELECT END FROM BID_MASTER A LEFT JOIN TR_REQUEST_DOC TRRD ON TRRD.REQ_ID = A.REQUEST_ID LEFT JOIN BID_CONTRACTOR_DT B ON B.BID_ID = A.BID_ID LEFT JOIN TR_REQUEST_DOC_DT TRRDDT ON TRRDDT.BID_ID = A.BID_ID LEFT JOIN CM_SUPPLIER C ON B.SUP_ID = C.SUP_ID LEFT JOIN CM_ALLCODE D ON D.CDNAME = 'FORM' AND D.CDVAL = A.FORM LEFT JOIN TR_PROJECT E ON E.PROJECT_ID = A.PROJECT_ID LEFT JOIN CM_AUTH_STATUS AU ON AU.AUTH_STATUS = A.AUTH_STATUS WHERE 1 = 1 AND (A.BID_ID LIKE '%' + @p_BID_ID + '%' OR @p_BID_ID IS NULL OR @p_BID_ID = '') AND (A.BID_CODE LIKE '%' + @p_BID_CODE + '%' OR @p_BID_CODE IS NULL OR @p_BID_CODE = '') AND (A.BID_TYPE LIKE '%' + @p_BID_TYPE + '%' OR @p_BID_TYPE IS NULL OR @p_BID_TYPE = '') AND (A.PROJECT_ID LIKE '%' + @p_PROJECT_ID + '%' OR @p_PROJECT_ID IS NULL OR @p_PROJECT_ID = '') AND (E.PROJECT_CODE LIKE '%' + @P_PROJECT_CODE + '%' OR @P_PROJECT_CODE IS NULL OR @P_PROJECT_CODE = '') AND (A.TERM_BID LIKE '%' + @p_TERM_BID + '%' OR @p_TERM_BID IS NULL OR @p_TERM_BID = '') AND (A.FORM LIKE '%' + @p_FORM + '%' OR @p_FORM IS NULL OR @p_FORM = '') AND (A.AUTH_STATUS LIKE '%' + @P_AUTH + '%' OR @P_AUTH IS NULL OR @P_AUTH = '') AND (A.INPUT_DT > CONVERT(DATETIME, @P_FROM_DATE, 103) OR @P_FROM_DATE IS NULL OR @P_FROM_DATE = '') AND (A.INPUT_DT < CONVERT(DATETIME, @P_TO_DATE, 103) OR @P_TO_DATE IS NULL OR @P_TO_DATE = '') AND (DATEDIFF(DAYOFYEAR,A.EXP_DT,CONVERT(DATETIME, @p_EXP_DT, 103)) = 0 OR @p_EXP_DT IS NULL OR @p_EXP_DT = '') AND (DATEDIFF(DAYOFYEAR,A.OPEN_DT,CONVERT(DATETIME, @p_OPEN_DT, 103)) = 0 OR @p_OPEN_DT IS NULL OR @p_OPEN_DT = '') AND (B.SUP_ID LIKE '%' + @P_SUP_ID + '%' OR @P_SUP_ID = '' OR @P_SUP_ID is NULL) AND B.IS_BID_WIN = '1' AND A.RECORD_STATUS = '1' AND (@p_REQ_ID IS NULL OR @p_REQ_ID='' OR A.REQUEST_ID=@p_REQ_ID) ORDER BY A.CREATE_DT DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(CONVERT(INT,@P_TOP)) A.*, C.SUP_ID, C.SUP_CODE, C.SUP_NAME, C.ADDR AS SUP_ADD, C.TEL AS SUP_TEL, C.CONTACT_PERSON AS SUP_CONTACT_PERSON, D.CONTENT,E.PROJECT_CODE,E.PROJECT_NAME,AU.AUTH_STATUS_NAME, TRRDDT.[DESCRIPTION] AS DESCRIPTION_TR_REQ_DOC_DT, TRRD.REQ_CODE -- SELECT END FROM BID_MASTER A LEFT JOIN TR_REQUEST_DOC TRRD ON TRRD.REQ_ID = A.REQUEST_ID LEFT JOIN BID_CONTRACTOR_DT B ON B.BID_ID = A.BID_ID LEFT JOIN TR_REQUEST_DOC_DT TRRDDT ON TRRDDT.BID_ID = A.BID_ID LEFT JOIN CM_SUPPLIER C ON B.SUP_ID = C.SUP_ID LEFT JOIN CM_ALLCODE D ON D.CDNAME = 'FORM' AND D.CDVAL = A.FORM LEFT JOIN TR_PROJECT E ON E.PROJECT_ID = A.PROJECT_ID LEFT JOIN CM_AUTH_STATUS AU ON AU.AUTH_STATUS = A.AUTH_STATUS WHERE 1 = 1 AND (A.BID_ID LIKE '%' + @p_BID_ID + '%' OR @p_BID_ID IS NULL OR @p_BID_ID = '') AND (A.BID_CODE LIKE '%' + @p_BID_CODE + '%' OR @p_BID_CODE IS NULL OR @p_BID_CODE = '') AND (A.BID_TYPE LIKE '%' + @p_BID_TYPE + '%' OR @p_BID_TYPE IS NULL OR @p_BID_TYPE = '') AND (A.PROJECT_ID LIKE '%' + @p_PROJECT_ID + '%' OR @p_PROJECT_ID IS NULL OR @p_PROJECT_ID = '') AND (E.PROJECT_CODE LIKE '%' + @P_PROJECT_CODE + '%' OR @P_PROJECT_CODE IS NULL OR @P_PROJECT_CODE = '') AND (A.TERM_BID LIKE '%' + @p_TERM_BID + '%' OR @p_TERM_BID IS NULL OR @p_TERM_BID = '') AND (A.FORM LIKE '%' + @p_FORM + '%' OR @p_FORM IS NULL OR @p_FORM = '') AND (A.AUTH_STATUS LIKE '%' + @P_AUTH + '%' OR @P_AUTH IS NULL OR @P_AUTH = '') AND (A.INPUT_DT > CONVERT(DATETIME, @P_FROM_DATE, 103) OR @P_FROM_DATE IS NULL OR @P_FROM_DATE = '') AND (A.INPUT_DT < CONVERT(DATETIME, @P_TO_DATE, 103) OR @P_TO_DATE IS NULL OR @P_TO_DATE = '') AND (DATEDIFF(DAYOFYEAR,A.EXP_DT,CONVERT(DATETIME, @p_EXP_DT, 103)) = 0 OR @p_EXP_DT IS NULL OR @p_EXP_DT = '') AND (DATEDIFF(DAYOFYEAR,A.OPEN_DT,CONVERT(DATETIME, @p_OPEN_DT, 103)) = 0 OR @p_OPEN_DT IS NULL OR @p_OPEN_DT = '') AND (B.SUP_ID LIKE '%' + @P_SUP_ID + '%' OR @P_SUP_ID = '' OR @P_SUP_ID is NULL) AND B.IS_BID_WIN = '1' AND A.RECORD_STATUS = '1' AND (@p_REQ_ID IS NULL OR @p_REQ_ID='' OR A.REQUEST_ID=@p_REQ_ID) ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE BEGIN IF(@p_TOP is NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*, C.SUP_ID, C.SUP_CODE, C.SUP_NAME, C.ADDR AS SUP_ADD, C.TEL AS SUP_TEL, C.CONTACT_PERSON AS SUP_CONTACT_PERSON, D.CONTENT, E.CONSTRUCT_CODE AS PROJECT_CODE, E.CONSTRUCT_NAME AS PROJECT_NAME, AU.AUTH_STATUS_NAME -- SELECT END FROM BID_MASTER A LEFT JOIN BID_CONTRACTOR_DT B ON B.BID_ID = A.BID_ID LEFT JOIN CM_SUPPLIER C ON B.SUP_ID = C.SUP_ID LEFT JOIN CM_ALLCODE D ON D.CDNAME = 'FORM' AND D.CDVAL = A.FORM LEFT JOIN CON_MASTER E ON E.CONSTRUCT_ID = A.PROJECT_ID LEFT JOIN CM_AUTH_STATUS AU ON AU.AUTH_STATUS = A.AUTH_STATUS WHERE 1 = 1 AND (A.BID_ID LIKE '%' + @p_BID_ID + '%' OR @p_BID_ID IS NULL OR @p_BID_ID = '') AND (A.BID_CODE LIKE '%' + @p_BID_CODE + '%' OR @p_BID_CODE IS NULL OR @p_BID_CODE = '') AND (A.BID_TYPE LIKE '%' + @p_BID_TYPE + '%' OR @p_BID_TYPE IS NULL OR @p_BID_TYPE = '') AND (A.PROJECT_ID LIKE '%' + @p_PROJECT_ID + '%' OR @p_PROJECT_ID IS NULL OR @p_PROJECT_ID = '') AND (E.CONSTRUCT_CODE LIKE '%' + @P_PROJECT_CODE + '%' OR @P_PROJECT_CODE IS NULL OR @P_PROJECT_CODE = '') AND (A.TERM_BID LIKE '%' + @p_TERM_BID + '%' OR @p_TERM_BID IS NULL OR @p_TERM_BID = '') AND (A.FORM LIKE '%' + @p_FORM + '%' OR @p_FORM IS NULL OR @p_FORM = '') AND (A.AUTH_STATUS LIKE '%' + @P_AUTH + '%' OR @P_AUTH IS NULL OR @P_AUTH = '') AND (A.INPUT_DT > CONVERT(DATETIME, @P_FROM_DATE, 103) OR @P_FROM_DATE IS NULL OR @P_FROM_DATE = '') AND (A.INPUT_DT < CONVERT(DATETIME, @P_TO_DATE, 103) OR @P_TO_DATE IS NULL OR @P_TO_DATE = '') AND (DATEDIFF(DAYOFYEAR,A.EXP_DT,CONVERT(DATETIME, @p_EXP_DT, 103)) = 0 OR @p_EXP_DT IS NULL OR @p_EXP_DT = '') AND (DATEDIFF(DAYOFYEAR,A.OPEN_DT,CONVERT(DATETIME, @p_OPEN_DT, 103)) = 0 OR @p_OPEN_DT IS NULL OR @p_OPEN_DT = '') AND (B.SUP_ID LIKE '%' + @P_SUP_ID + '%' OR @P_SUP_ID = '' OR @P_SUP_ID is NULL) AND B.IS_BID_WIN = '1' AND A.RECORD_STATUS = '1' AND (@p_REQ_ID IS NULL OR @p_REQ_ID='' OR A.REQUEST_ID=@p_REQ_ID) ORDER BY A.CREATE_DT DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(CONVERT(INT,@P_TOP)) A.*, C.SUP_ID, C.SUP_CODE, C.SUP_NAME, C.ADDR AS SUP_ADD, C.TEL AS SUP_TEL, C.CONTACT_PERSON AS SUP_CONTACT_PERSON, D.CONTENT,E.CONSTRUCT_CODE AS PROJECT_CODE,E.CONSTRUCT_NAME AS PROJECT_NAME, AU.AUTH_STATUS_NAME -- SELECT END FROM BID_MASTER A LEFT JOIN BID_CONTRACTOR_DT B ON B.BID_ID = A.BID_ID LEFT JOIN CM_SUPPLIER C ON B.SUP_ID = C.SUP_ID LEFT JOIN CM_ALLCODE D ON D.CDNAME = 'FORM' AND D.CDVAL = A.FORM LEFT JOIN CON_MASTER E ON E.CONSTRUCT_ID = A.PROJECT_ID LEFT JOIN CM_AUTH_STATUS AU ON AU.AUTH_STATUS = A.AUTH_STATUS WHERE 1 = 1 AND (A.BID_ID LIKE '%' + @p_BID_ID + '%' OR @p_BID_ID IS NULL OR @p_BID_ID = '') AND (A.BID_CODE LIKE '%' + @p_BID_CODE + '%' OR @p_BID_CODE IS NULL OR @p_BID_CODE = '') AND (A.BID_TYPE LIKE '%' + @p_BID_TYPE + '%' OR @p_BID_TYPE IS NULL OR @p_BID_TYPE = '') AND (A.PROJECT_ID LIKE '%' + @p_PROJECT_ID + '%' OR @p_PROJECT_ID IS NULL OR @p_PROJECT_ID = '') AND (E.CONSTRUCT_CODE LIKE '%' + @P_PROJECT_CODE + '%' OR @P_PROJECT_CODE IS NULL OR @P_PROJECT_CODE = '') AND (A.TERM_BID LIKE '%' + @p_TERM_BID + '%' OR @p_TERM_BID IS NULL OR @p_TERM_BID = '') AND (A.FORM LIKE '%' + @p_FORM + '%' OR @p_FORM IS NULL OR @p_FORM = '') AND (A.AUTH_STATUS LIKE '%' + @P_AUTH + '%' OR @P_AUTH IS NULL OR @P_AUTH = '') AND (A.INPUT_DT > CONVERT(DATETIME, @P_FROM_DATE, 103) OR @P_FROM_DATE IS NULL OR @P_FROM_DATE = '') AND (A.INPUT_DT < CONVERT(DATETIME, @P_TO_DATE, 103) OR @P_TO_DATE IS NULL OR @P_TO_DATE = '') AND (DATEDIFF(DAYOFYEAR,A.EXP_DT,CONVERT(DATETIME, @p_EXP_DT, 103)) = 0 OR @p_EXP_DT IS NULL OR @p_EXP_DT = '') AND (DATEDIFF(DAYOFYEAR,A.OPEN_DT,CONVERT(DATETIME, @p_OPEN_DT, 103)) = 0 OR @p_OPEN_DT IS NULL OR @p_OPEN_DT = '') AND (B.SUP_ID LIKE '%' + @P_SUP_ID + '%' OR @P_SUP_ID = '' OR @P_SUP_ID is NULL) --AND B.IS_BID_WIN = '1' AND A.RECORD_STATUS = '1' AND (@p_REQ_ID IS NULL OR @p_REQ_ID='' OR A.REQUEST_ID=@p_REQ_ID) ORDER BY A.CREATE_DT DESC -- PAGING END END END -- PAGING --select * from BID_CONTRACTOR_DT --select * from BID_MASTER where BID_CODE = N'0002/2021/CD-P.HC.BPMH' --[BID_MASTER_Search] GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAY_PERIOD_BYID]' GO ALTER PROC [dbo].[TR_REQ_PAY_PERIOD_BYID] @p_REQ_PAY_ID VARCHAR(15)= NULL AS BEGIN SELECT A.* ,ISNULL(B.CONTRACT_CODE,B.CONTRACT_ID) AS CONTRACT_CODE , B.CONTRACT_NAME, C.REQ_PAY_CODE, S.ACC_NUM,S.ACC_NAME,S.BANK_NAME,S.ACC_NUM_OUT,S.ACC_NAME_OUT,S.BANK_NAME_OUT, D.REQ_PAY_CODE AS SO_PHIEU_TAM_UNG,D.REQ_DT AS NGAY_TAM_UNG, S.TAX_NO AS SUP_TAX_NO FROM TR_REQ_PAY_PERIOD A LEFT JOIN TR_CONTRACT B ON A.CONTRACT_ID = B.CONTRACT_ID LEFT JOIN CM_SUPPLIER S ON B.SUP_ID = S.SUP_ID LEFT JOIN TR_REQ_PAYMENT C ON A.REQ_PAY_ID = C.REQ_PAY_ID LEFT JOIN TR_REQ_ADVANCE_PAYMENT D ON A.AD_PAY_ID = D.REQ_PAY_ID WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[MW_TRANSFER_CONFIRM_DT_Import]' GO ALTER PROC [dbo].[MW_TRANSFER_CONFIRM_DT_Import] ( @p_FR_BR_ID VARCHAR(15) = NULL, @p_LEVLEL VARCHAR(15) = NULL, @p_WARE_HOUSE VARCHAR(15) = NULL, @p_XmlData XML=NULL ) AS BEGIN DECLARE @tmpMastBal TABLE( STT INT IDENTITY(1, 1) PRIMARY KEY, MAST_BAL_ID VARCHAR(15), MATERIAL_ID VARCHAR(15), MATERIAL_CODE VARCHAR(15), MATERIAL_NAME NVARCHAR(100), PRICE_ID VARCHAR(30), PRICE_CODE VARCHAR(MAX), QTY_BALANCE DECIMAL(18,2), SL_TON_TT DECIMAL(18,2), NOTES NVARCHAR(1000), QTY DECIMAL(18,2), WARE_HOUSE VARCHAR(15) ) DECLARE @hdoc INT EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData INSERT INTO @tmpMastBal SELECT * FROM OPENXML(@hDoc, '/Root/XmlData', 2) WITH ( MAST_BAL_ID VARCHAR(15), MATERIAL_ID VARCHAR(15), MATERIAL_CODE VARCHAR(15), MATERIAL_NAME NVARCHAR(100), PRICE_ID VARCHAR(30), PRICE_CODE VARCHAR(MAX), QTY_BALANCE DECIMAL(18,2), SL_TON_TT DECIMAL(18,2), NOTES NVARCHAR(1000), QTY DECIMAL(18,2), WARE_HOUSE VARCHAR(15) ) -- validate begin DECLARE @ERROR_MESSAGE nvarchar(MAX) -- Mã vật liệu SELECT @ERROR_MESSAGE = STUFF(( SELECT ', ' + T.PRICE_CODE FROM @tmpMastBal T WHERE T.PRICE_CODE IS NOT NULL AND T.PRICE_CODE <> '' AND NOT EXISTS (SELECT B.PRICE_CODE FROM dbo.MW_MAST_PRICE B LEFT JOIN MW_MAST_BAL A ON A.PRICE_ID = B.PRICE_ID LEFT JOIN MW_IN MI ON B.MATERIAL_ID = MI.IN_ID LEFT JOIN MW_IN_MASTER IM ON MI.IN_MASTER_ID = IM.IN_ID AND IM.WARE_HOUSE = @p_WARE_HOUSE WHERE B.PRICE_CODE = T.PRICE_CODE) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF(LEN(@ERROR_MESSAGE) > 0) BEGIN SET @ERROR_MESSAGE = N'Mã vật liệu không có trong hệ thống: ' + @ERROR_MESSAGE EXEC sp_seterrormessage @ERROR_MESSAGE RETURN '-1' END -- validate end SELECT MI.MATERIAL_NAME, A.MAST_BAL_ID, A.PRICE_ID, A.MATERIAL_ID, A.TOTAL_AMT AS LAST_AMT_MASBAL, A.PRICE AS PRICE, B.PRICE_CODE , B.MATERIAL_ID AS IN_MATERIAL_ID, ISNULL(RP.SL_TON,A.QTY_BALANCE) AS SL_TON_TT, ISNULL(RP.SL_TON,A.QTY_BALANCE) AS QTY_OLD, ISNULL(RP.SL_TON,A.QTY_BALANCE) AS QTY_BALANCE, A.TOTAL_AMT/B.QTY DON_GIA, MT.MATERIAL_CODE, IM.WARE_HOUSE, AL.CONTENT WARE_HOUSE_NAME, T.NOTES FROM dbo.MW_MAST_BAL A LEFT JOIN MW_MAST_PRICE B ON A.PRICE_ID = B.PRICE_ID INNER JOIN @tmpMastBal T ON T.PRICE_CODE = B.PRICE_CODE LEFT JOIN MW_IN MI ON B.MATERIAL_ID = MI.IN_ID LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID LEFT JOIN MW_IN_MASTER IM ON MI.IN_MASTER_ID = IM.IN_ID LEFT JOIN CM_ALLCODE AL ON IM.WARE_HOUSE = AL.CDVAL AND AL.CDNAME='WARE_HOUSE_IN' LEFT JOIN MW_EXPORT_VIEW RP ON A.MAST_BAL_ID = RP.MAST_BAL_ID WHERE (A.BRANCH_ID = @p_FR_BR_ID) AND (IM.WARE_HOUSE = @p_WARE_HOUSE) ORDER BY T.STT ASC END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[ASS_GROUP_Ins]' GO ALTER PROCEDURE [dbo].[ASS_GROUP_Ins] @p_TYPE_ID varchar(15) = NULL, @p_GROUP_CODE nvarchar(100) = NULL, @p_GROUP_NAME nvarchar(200) = NULL, @p_PARENT_ID varchar(15) = NULL, @p_IS_LEAF varchar(1) = NULL, --@p_GROUP_LEVEL int = NULL, --SP se tu dong tinh level @p_ASS_CAT varchar(10) = NULL , @p_AMORT_ACCTNO varchar(50) = NULL, @p_EXP_ACCTNO varchar(50) = NULL, @p_INC_ACCTNO varchar(50) = NULL, @p_LIQ_ACCTNO varchar(50) = NULL, @p_ASSET_ACCTNO varchar(50) = NULL, @p_ASSET_ACCTNO_NHNN VARCHAR(50) = NULL, @p_AMORT_MONTH int = NULL, @p_AMORT_RATE decimal(18,2) = 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_MANAGER_ID varchar(15) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_AMORT_MONTH_MIN int = NULL, @p_AMORT_MONTH_MAX int = NULL AS DECLARE @l_PARENT_GROUP_LEVEL int = 0 DECLARE @l_GROUP_LEVEL int DECLARE @l_GROUP_ID VARCHAR(15) DECLARE @sErrorCode VARCHAR(20) = '' DECLARE @l_AMORT_MONTH INT -- LUCTV: BO SUNG CONG THUC TU TINH SET @l_AMORT_MONTH = CASE WHEN @p_AMORT_RATE IS NULL OR @p_AMORT_RATE = 0 THEN 0 ELSE ROUND(12/@p_AMORT_RATE*100,0) END --Lay group level cua cha IF (@p_PARENT_ID IS NULL OR @p_PARENT_ID = '') BEGIN SET @l_GROUP_LEVEL = 1 END ELSE BEGIN SELECT @l_PARENT_GROUP_LEVEL = ISNULL(GROUP_LEVEL,0) FROM ASS_GROUP A WHERE A.GROUP_ID = @p_PARENT_ID SET @l_GROUP_LEVEL = @l_PARENT_GROUP_LEVEL + 1 END --Kiem tra parent_ID hop le IF (@p_PARENT_ID IS NOT NULL AND @p_PARENT_ID <> '') BEGIN IF NOT EXISTS(SELECT * FROM ASS_GROUP A WHERE A.GROUP_ID = @p_PARENT_ID) BEGIN SET @sErrorCode = 'ASS-00006' END END IF EXISTS(SELECT 1 FROM ASS_GROUP A WHERE A.GROUP_CODE = @p_GROUP_CODE AND A.TYPE_ID=@p_TYPE_ID) BEGIN SET @sErrorCode = 'ASS-000021' END --PHONGNT 19/9/2022 LUON MAC DINH GIA TRỊ MIN MAX SET @p_AMORT_MONTH_MIN=1 SET @p_AMORT_MONTH_MAX=5000 -- 19-04-2019 LUCTV: KIEM TRA MIN - MAX CUA NHOM TS KHONG DUOC =0 IF (@p_AMORT_MONTH_MIN =0 OR @p_AMORT_MONTH_MIN IS NULL) BEGIN SELECT '-1' as Result, '' AMORT_MONTH, N'Số tháng khấu hao MIN phải lớn hơn 0' ErrorDesc RETURN '-1' END IF (@p_AMORT_MONTH_MAX =0 OR @p_AMORT_MONTH_MAX IS NULL) BEGIN SELECT '-1' as Result, '' AMORT_MONTH, N'Số tháng khấu hao MAX phải lớn hơn 0' ErrorDesc RETURN '-1' END IF (@p_AMORT_MONTH_MAX < @p_AMORT_MONTH_MIN) BEGIN SELECT '-1' as Result, '' AMORT_MONTH, N'Số tháng khấu hao MAX phải lớn hơn hoặc bằng số tháng khấu hao MIN' ErrorDesc RETURN '-1' END IF (@l_AMORT_MONTH IS NULL OR @l_AMORT_MONTH >@p_AMORT_MONTH_MAX OR @l_AMORT_MONTH <@p_AMORT_MONTH_MIN) BEGIN SELECT '-1' as Result, '' AMORT_MONTH, N'Số tháng khấu hao phải nằm trong khoảng '+ CONVERT(VARCHAR(5),@p_AMORT_MONTH_MIN)+N' - ' +CONVERT(VARCHAR(5),@p_AMORT_MONTH_MAX) ErrorDesc RETURN '-1' END -- END LUCTV 19-04-2019 IF @sErrorCode <> '' BEGIN SELECT ErrorCode Result, '' AMORT_MONTH, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode RETURN 0 END BEGIN TRANSACTION EXEC SYS_CodeMasters_Gen 'ASS_GROUP', @l_GROUP_ID out IF @l_GROUP_ID='' OR @l_GROUP_ID IS NULL GOTO ABORT --TINH SO KY KHAU HAO --SET @p_AMORT_RATE = (CASE WHEN @p_AMORT_RATE IS NULL OR @p_AMORT_RATE = 0 then 0 ELSE (12/@p_AMORT_RATE)*100 END) SET @l_AMORT_MONTH = CASE WHEN @p_AMORT_RATE IS NULL OR @p_AMORT_RATE = 0 THEN 0 ELSE ROUND(12/@p_AMORT_RATE*100,0) END --Insert bang ASS_GROUP INSERT INTO ASS_GROUP ( [GROUP_ID], [TYPE_ID], [GROUP_CODE], [GROUP_NAME], [PARENT_ID], [IS_LEAF], [GROUP_LEVEL], [ASS_CAT], [AMORT_ACCTNO], [EXP_ACCTNO], [INC_ACCTNO], [LIQ_ACCTNO], [ASSET_ACCTNO], [ASSET_ACCTNO_NHNN], [AMORT_MONTH], [AMORT_RATE], [NOTES], [RECORD_STATUS], [AUTH_STATUS], [MAKER_ID], [CREATE_DT], [CHECKER_ID], [APPROVE_DT], [AMORT_MONTH_MIN], [AMORT_MONTH_MAX], [MANAGER_ID] ) VALUES ( @l_GROUP_ID, @p_TYPE_ID, @p_GROUP_CODE, @p_GROUP_NAME, @p_PARENT_ID, --@p_IS_LEAF, 'Y', --Luon luon la leaf @l_GROUP_LEVEL, @p_ASS_CAT, @p_AMORT_ACCTNO, @p_EXP_ACCTNO, @p_INC_ACCTNO, @p_LIQ_ACCTNO, @p_ASSET_ACCTNO, @p_ASSET_ACCTNO_NHNN, @l_AMORT_MONTH,--sua @p_AMORT_RATE, @p_NOTES, @p_RECORD_STATUS, @p_AUTH_STATUS, @p_MAKER_ID, CONVERT(DATETIME, @p_CREATE_DT, 103), @p_CHECKER_ID, (CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END), @p_AMORT_MONTH_MIN, @p_AMORT_MONTH_MAX, @p_MANAGER_ID ) IF @@Error <> 0 GOTO ABORT --UPDATE IS_LEAF = 'N' cho record cha IF (@p_PARENT_ID IS NOT NULL AND @p_PARENT_ID<>'') BEGIN UPDATE ASS_GROUP SET IS_LEAF = 'N' WHERE GROUP_ID = @p_PARENT_ID IF @@Error <> 0 GOTO ABORT END COMMIT TRANSACTION SELECT '0' as Result, CAST(@l_AMORT_MONTH as varchar(100)) AMORT_MONTH, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' AMORT_MONTH, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[RET_REPAIR_SendAppr]' GO /* [dbo].[RET_REPAIR_App] '','','' */ ALTER PROCEDURE [dbo].[RET_REPAIR_SendAppr] @p_RP_ID VARCHAR(15) = NULL, @p_USER_LOGIN VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION IF(EXISTS (SELECT * FROM RET_REPAIR WHERE RP_ID = @p_RP_ID AND IS_SEND_APPR ='Y')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RP_ID, '' IS_SEND_APPR, N'Gửi yêu cầu phê duyệt thất bại. Thông tin sửa chữa BĐS đã được gửi yêu cầu phê duyệt trước đó' ErrorDesc RETURN '-1' END UPDATE RET_REPAIR SET IS_SEND_APPR = 'Y', SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), SIGN_DT = NULL, AUTH_STATUS = 'U' WHERE RP_ID = @p_RP_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @p_IS_SEND_APPR VARCHAR(15) = (SELECT IS_SEND_APPR FROM RET_REPAIR WHERE RP_ID = @p_RP_ID) DECLARE @p_MESSAGE NVARCHAR(500) DECLARE @p_RET_ID VARCHAR(15) = (SELECT RET_ID FROM RET_REPAIR WHERE RP_ID = @p_RP_ID) ------------------TH gửi phê duyệt có cấp phê duyệt trung gian-------------- IF(EXISTS(SELECT * FROM RET_REPAIR WHERE RP_ID = @p_RP_ID AND SIGN_USER IS NOT NULL)) BEGIN SET @p_MESSAGE = N'Thông tin sửa chữa BĐS: ' +@p_RET_ID+ N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' END ------------------TH gửi phê duyệt ko có cấp phê duyệt trung gian(gửi thẳng trưởng DV)-------------- ELSE BEGIN SET @p_MESSAGE = N'Thông tin sửa chữa BĐS: ' +@p_RET_ID+ N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' END --------BAODNQ 15/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @P_RP_ID, 'SEND', @p_USER_LOGIN, GETDATE(), N'Người tạo gửi phê duyệt thành công' , N'Người tạo gửi phê duyệt' ) IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_RP_ID RP_ID, @p_IS_SEND_APPR IS_SEND_APPR, @p_MESSAGE ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RP_ID, '' IS_SEND_APPR, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_GOODS_Upd]' GO ALTER PROCEDURE [dbo].[CM_GOODS_Upd] @p_GD_ID varchar(150) = null , @p_GD_CODE varchar(150) = NULL , @p_GD_NAME nvarchar(200) = NULL , @p_GD_TYPE_ID varchar(15) = NULL , @p_DESCRIPTION nvarchar(2000) = NULL , @p_SUP_ID varchar(15) = NULL , @p_PRICE decimal(17) = NULL , @p_UNIT_ID varchar(15) = 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_DVDM_ID VARCHAR(20) = NULL, @p_MONTHLY_ALLOCATED BIT =NULL AS DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( EXISTS ( SELECT * FROM CM_GOODS WHERE GD_CODE = @p_GD_CODE AND [GD_ID] != @p_GD_ID AND RECORD_STATUS = '1')) SET @ERRORSYS = 'CMCD-00001' IF ( NOT EXISTS ( SELECT * FROM CM_GOODS WHERE [GD_ID] = @p_GD_ID)) SET @ERRORSYS = 'CMC-00001' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END BEGIN TRANSACTION UPDATE CM_GOODS SET [GD_CODE] = @p_GD_CODE,[GD_NAME] = @p_GD_NAME,[GD_TYPE_ID] = @p_GD_TYPE_ID,[DESCRIPTION] = @p_DESCRIPTION,[SUP_ID] = @p_SUP_ID,[PRICE] = @p_PRICE,[UNIT_ID] = @p_UNIT_ID,[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), [DVDM_ID] = @p_DVDM_ID,MONTHLY_ALLOCATED=@p_MONTHLY_ALLOCATED WHERE GD_ID= @p_GD_ID IF @@Error <> 0 GOTO ABORT DELETE CM_GOOD_DVDM WHERE GD_ID = @p_GD_ID INSERT INTO CM_GOOD_DVDM (GD_ID, DVDM_ID) VALUES(@p_GD_ID,@p_DVDM_ID) IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT 0 as Result, @p_GD_ID GD_ID, '' ErrorDesc RETURN 0 ABORT: BEGIN ROLLBACK TRANSACTION SELECT -1 as Result, '' GD_ID, '' ErrorDesc RETURN -1 End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[MW_INVENTORY_DT_Import]' GO ALTER PROC [dbo].[MW_INVENTORY_DT_Import] ( @p_BRN_ID VARCHAR(15) = NULL, @p_LEVLEL VARCHAR(15) = NULL, @p_WARE_HOUSE VARCHAR(15) = NULL, @p_XmlData XML=NULL ) AS BEGIN DECLARE @tmpMastBal TABLE( STT INT IDENTITY(1, 1) PRIMARY KEY, MAST_BAL_ID VARCHAR(15), MATERIAL_ID VARCHAR(15), MATERIAL_CODE VARCHAR(15), MATERIAL_NAME NVARCHAR(100), PRICE_ID VARCHAR(30), PRICE_CODE VARCHAR(MAX), QTY_INVENTORY DECIMAL(18,2), QTY_DAMAGED DECIMAL(18,2), SL_TON_TT DECIMAL(18,2), NOTES NVARCHAR(1000), REASON NVARCHAR(1000), QTY DECIMAL(18,2), AMOUNT_DIFF DECIMAL(18,2), WARE_HOUSE VARCHAR(15) ) DECLARE @hdoc INT EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData INSERT INTO @tmpMastBal SELECT * FROM OPENXML(@hDoc, '/Root/XmlData', 2) WITH ( MAST_BAL_ID VARCHAR(15), MATERIAL_ID VARCHAR(15), MATERIAL_CODE VARCHAR(15), MATERIAL_NAME NVARCHAR(100), PRICE_ID VARCHAR(30), PRICE_CODE VARCHAR(MAX), QTY_INVENTORY DECIMAL(18,2), QTY_DAMAGED DECIMAL(18,2), SL_TON_TT DECIMAL(18,2), NOTES NVARCHAR(1000), REASON NVARCHAR(1000), QTY DECIMAL(18,2), AMOUNT_DIFF DECIMAL(18,2), WARE_HOUSE VARCHAR(15) ) -- validate begin DECLARE @ERROR_MESSAGE nvarchar(MAX) -- Mã vật liệu SELECT @ERROR_MESSAGE = STUFF(( SELECT ', ' + T.PRICE_CODE FROM @tmpMastBal T WHERE T.PRICE_CODE IS NOT NULL AND T.PRICE_CODE <> '' AND NOT EXISTS (SELECT B.PRICE_CODE FROM dbo.MW_MAST_PRICE B LEFT JOIN MW_MAST_BAL A ON A.PRICE_ID = B.PRICE_ID LEFT JOIN MW_IN MI ON B.MATERIAL_ID = MI.IN_ID LEFT JOIN MW_IN_MASTER IM ON MI.IN_MASTER_ID = IM.IN_ID AND IM.WARE_HOUSE = @p_WARE_HOUSE --LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID WHERE B.PRICE_CODE = T.PRICE_CODE and A.BRANCH_ID = @p_BRN_ID) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF(LEN(@ERROR_MESSAGE) > 0) BEGIN SET @ERROR_MESSAGE = N'Mã vật liệu không có trong hệ thống hoặc đơn vị : ' + @ERROR_MESSAGE EXEC sp_seterrormessage @ERROR_MESSAGE RETURN '-1' END -- validate end SELECT MI.MATERIAL_NAME, A.MAST_BAL_ID, A.PRICE_ID, A.MATERIAL_ID, A.TOTAL_AMT AS LAST_AMT_MASBAL, A.PRICE AS PRICE, B.PRICE_CODE , B.MATERIAL_ID AS IN_MATERIAL_ID, ISNULL(RP.SL_TON,A.QTY_BALANCE) AS SL_TON_TT, ISNULL(RP.SL_TON,A.QTY_BALANCE) AS QTY_OLD, ISNULL(RP.SL_TON,A.QTY_BALANCE) AS QTY_BALANCE, A.TOTAL_AMT/B.QTY DON_GIA, MT.MATERIAL_CODE, IM.WARE_HOUSE, AL.CONTENT WARE_HOUSE_NAME, T.NOTES, T.QTY_INVENTORY, T.REASON, T.QTY, T.QTY_DAMAGED FROM dbo.MW_MAST_BAL A LEFT JOIN MW_MAST_PRICE B ON A.PRICE_ID = B.PRICE_ID INNER JOIN @tmpMastBal T ON T.PRICE_CODE = B.PRICE_CODE LEFT JOIN MW_IN MI ON B.MATERIAL_ID = MI.IN_ID LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID LEFT JOIN MW_IN_MASTER IM ON MI.IN_MASTER_ID = IM.IN_ID LEFT JOIN CM_ALLCODE AL ON IM.WARE_HOUSE = AL.CDVAL AND AL.CDNAME='WARE_HOUSE_IN' LEFT JOIN MW_EXPORT_VIEW RP ON A.MAST_BAL_ID = RP.MAST_BAL_ID WHERE (A.BRANCH_ID = @p_BRN_ID) AND (IM.WARE_HOUSE = @p_WARE_HOUSE) ORDER BY T.STT ASC END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_RATE_SUPPLIER_CODE_GenKey]' GO ALTER PROCEDURE [dbo].[TR_RATE_SUPPLIER_CODE_GenKey] @p_TYPE_ID varchar(50), @p_YEAR varchar(50), @p_DEFAULT VARCHAR(100), @p_BRANCH_ID VARCHAR(15), @p_DEP_ID VARCHAR(15), @p_KeyGen nvarchar(100) OUT AS DECLARE @CurValue AS Numeric DECLARE @CODE_YEAR VARCHAR(50) = CONVERT(VARCHAR, YEAR(GETDATE())) DECLARE @p_BRANCH_TYPE VARCHAR(20) = ( SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID ) DECLARE @p_CODE VARCHAR(20) BEGIN TRANSACTION IF NOT EXISTS(SELECT * FROM TR_CODE_GEN WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR) BEGIN INSERT TR_CODE_GEN ( CODE_TYPE, CUR_YEAR, CUR_VALUE )VALUES( @p_TYPE_ID, @CODE_YEAR, 1 ) IF @@ERROR <> 0 GOTO ABORT SET @CurValue = 1 END ELSE BEGIN IF EXISTS(SELECT 1 FROM TR_CODE_GEN WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR) UPDATE TR_CODE_GEN SET CUR_VALUE =CUR_VALUE + 1 WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR IF @@ERROR <> 0 GOTO ABORT SELECT @CurValue = CUR_VALUE FROM TR_CODE_GEN WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR END ----------TẠO MÃ CODE------------- IF(@p_BRANCH_TYPE = 'HS') BEGIN -------nếu BRANCH_ID là HS, lấy mã phòng ban------ SET @p_CODE = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID) END ELSE BEGIN ---------nếu BRANCH_ID khác HS, lấy mã đơn vị------------ SET @p_CODE = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID) END SET @p_KeyGen = right('00000000' + convert(varchar(20),@CurValue), 6) + '/' + @CODE_YEAR + '/PĐG-' + @p_CODE IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION RETURN 0 ABORT: BEGIN ROLLBACK TRANSACTION SET @p_KeyGen = '' RETURN -1 END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[RET_MASTER_App]' GO /* [dbo].[RET_MASTER_App] '','','' */ ALTER PROCEDURE [dbo].[RET_MASTER_App] @P_RET_ID VARCHAR(15), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @p_APPROVE_DT VARCHAR(20) = NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM RET_MASTER R WHERE R.RET_ID = @P_RET_ID)) SET @ERRORSYS = 'RETM-00001' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '-1' END IF(EXISTS (SELECT * FROM RET_MASTER WHERE RET_ID = @P_RET_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' as Result, N'Phê duyệt thất bại. Thông tin bất động sản đang bị trả về' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM RET_MASTER WHERE RET_ID = @P_RET_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' as Result, N'Phê duyệt thất bại. Thông tin bất động sản đã được phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT RET_ID FROM RET_MASTER WHERE RET_ID = @P_RET_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' as Result, '' RET_ID, N'Phê duyệt thất bại. Thông tin bất động sản đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS( SELECT RET_ID FROM RET_MASTER WHERE RET_ID = @P_RET_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U' AND (SIGN_USER IS NOT NULL AND SIGN_USER <> '') AND (SIGN_DT IS NULL OR SIGN_DT = '') )) BEGIN SELECT '-1' as Result, '' RET_ID, N'Phê duyệt thất bại. Thông tin bất động sản đang chờ cấp phê duyệt trung gian xác nhận. Vui lòng đợi cấp phê duyệt trung gian xác nhận' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @p_ASSET_ID VARCHAR(15) SET @p_ASSET_ID = (SELECT ASSET_ID FROM RET_MASTER WHERE RET_ID = @P_RET_ID) UPDATE RET_MASTER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE RET_ID = @P_RET_ID --THAY DOI LOAI TAI SAN LA 2 UPDATE ASS_MASTER SET ASS_TYPE = '3' WHERE ASSET_ID = @p_ASSET_ID IF @@Error <> 0 GOTO ABORT --------BAODNQ 16/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_RET_ID, 'APPROVE', @P_CHECKER_ID, GETDATE(), N'Trưởng đơn vị phê duyệt thành công' , N'Trưởng đơn vị phê duyệt' ) 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'Altering [dbo].[RET_REPAIR_Confirm]' GO /* [dbo].[RET_REPAIR_App] '','','' */ ALTER PROCEDURE [dbo].[RET_REPAIR_Confirm] @p_RP_ID VARCHAR(15) = NULL, @p_SIGN_USER VARCHAR(15) = NULL, @p_SIGN_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION IF(EXISTS ( SELECT * FROM RET_REPAIR WHERE RP_ID = @p_RP_ID AND IS_SEND_APPR = 'Y' AND (SIGN_DT IS NOT NULL OR SIGN_DT <> ''))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RP_ID, N'Xác nhận thất bại. Thông tin sửa chữa BĐS đã được cấp trung gian xác nhận trước đó' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM RET_REPAIR WHERE RP_ID = @p_RP_ID AND AUTH_STATUS = 'R')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RP_ID, N'Xác nhận thất bại. Thông tin sửa chữa BĐS đang bị trả về' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT RP_ID FROM RET_REPAIR WHERE RP_ID = @p_RP_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' as Result, '' RET_ID, N'Xác nhận thất bại. Thông tin sửa chữa BĐS đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END UPDATE RET_REPAIR SET AUTH_STATUS = 'U', SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103) WHERE RP_ID = @p_RP_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @p_RET_ID VARCHAR(15) = (SELECT RET_ID FROM RET_REPAIR WHERE RP_ID = @p_RP_ID) --------BAODNQ 15/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @P_RP_ID, 'APPROVE', @p_SIGN_USER, GETDATE(), N'Cấp trung gian xác nhận thành công' , N'Cấp trung gian xác nhận' ) IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_RP_ID RP_ID, N' Thông tin sửa chữa BĐS: ' +@p_RET_ID+ N' đã được xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RP_ID,'' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[RET_MASTER_ById]' GO ALTER PROC [dbo].[RET_MASTER_ById] @p_RET_ID varchar(15) AS SELECT A.*, B.AUTH_STATUS_NAME, C.CONTENT, G.DIV_CODE, G.DIV_NAME, G.ADDR ASS_ADDR, E.CONTENT AS RET_STATUS, F.TLFullName AS SIGN_USER_FULLNAME, CBU.BRANCH_NAME AS BRANCH_USE_NAME, --D.BRANCH_ID, -- Đơn vị sử dụng ----------BAODNQ 18/4/2022: Check điều kiện khi lấy thông tin tài sản----- CASE WHEN A.ASSET_ID IS NULL OR A.ASSET_ID = '' THEN A.ASS_NAME ELSE D.ASSET_NAME END AS ASSET_NAME, CASE WHEN A.ASSET_ID IS NULL OR A.ASSET_ID = '' THEN A.DESCRIPTION ELSE D.ASSET_DESC END AS ASSET_DESC, CASE WHEN A.ASSET_ID IS NULL OR A.ASSET_ID = '' THEN A.ASSET_PRICE ELSE D.BUY_PRICE END AS BUY_PRICE -------------------------END BAODNQ--------------- FROM RET_MASTER A INNER JOIN CM_AUTH_STATUS B ON B.AUTH_STATUS = A.AUTH_STATUS INNER JOIN CM_ALLCODE C ON C.CDVAL = A.RET_TYPE AND C.CDNAME = 'RET_TYPE_2'AND C.CDTYPE = 'RET' INNER JOIN CM_ALLCODE E ON E.CDVAL = A.[STATUS] AND E.CDNAME = 'RET_STATUS' AND E.CDTYPE = 'RET' LEFT JOIN ASS_MASTER D ON D.ASSET_ID = A.ASSET_ID LEFT JOIN CM_DIVISION G ON G.DIV_ID=D.DIVISION_ID LEFT JOIN CM_BRANCH CBU ON A.BRANCH_USE_ID = CBU.BRANCH_ID -------------------BAODNQ 16/2/2022: Kết thêm bảng-------------- LEFT JOIN TL_USER F ON A.SIGN_USER = F.TLNANME WHERE A.RET_ID=@p_RET_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[REAL_ESTATE_R_H_Upd]' GO ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_Upd] @p_RET_R_H_ID varchar(15) = NULL, @p_BRANCH_MANAGE Nvarchar(500) = NULL, @p_BRANCH_USE Nvarchar(500) = NULL, @p_BRANCH_CREATE Nvarchar(15) = NULL, @p_RET_ADDR nvarchar(MAX) = NULL, @p_RET_R_H_TIME DECIMAL = NULL, @p_START_DT VARCHAR(20) = NULL, @p_END_DT VARCHAR(20) = NULL, @p_R_LAND_SQUARE DECIMAL(18,2) = NULL, @p_SCALE nvarchar(500) = NULL, @p_CONSTRUCT_SQUARE DECIMAL(18,2) = NULL, @p_PRICE_DETAIL XML = NULL, @p_DEPOSIT varchar(1) = NULL, @p_DEPOSIT_PRICE DECIMAL = NULL, @p_DEPOSIT_RETURN_DT NVARCHAR(500) = NULL, @p_PURCHASE_EACH_TERM decimal = NULL, @p_PAY_AMT decimal = 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_PAY_PAY_AMT decimal = NULL, @p_PAY_MONTH_TIMES INT = NULL, @p_MONTH_TIMES INT = NULL, ----BAODNQ 7/2/2022: Thêm cột vào bảng REAL_ESTATE_R_H------ @p_TR_CONTRACT_ID varchar(15) = NULL, @p_EXTEND_DT VARCHAR(20) = NULL, @p_STRUCTURE NVARCHAR(500) = NULL, @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL, @p_SIGN_USER VARCHAR(15) = NULL, @p_SIGN_DT VARCHAR(20) = NULL, @p_EXTEND_PHASE NVARCHAR(1000) = NULL AS DECLARE @l_ERROR_MESSAGE VARCHAR(1000) IF(CONVERT(DATETIME, @p_END_DT, 103) < CONVERT(DATETIME, @p_START_DT, 103)) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Ngày kết thúc không được nhỏ hơn ngày bắt đầu' ErrorDesc RETURN '-1' END IF(CONVERT(DATETIME, @p_EXTEND_DT, 103) < CONVERT(DATETIME, @p_START_DT, 103)) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Ngày gia hạn hợp đồng không được nhỏ hơn ngày bắt đầu' ErrorDesc RETURN '-1' END IF(CONVERT(DATETIME, @p_EXTEND_DT, 103) < CONVERT(DATETIME, @p_END_DT, 103)) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Ngày gia hạn hợp đồng không được nhỏ hơn ngày kết thúc' ErrorDesc RETURN '-1' END IF( (@p_DEPOSIT_RETURN_DT IS NOT NULL OR @p_DEPOSIT_RETURN_DT <> '') AND CONVERT(DATETIME, @p_DEPOSIT_RETURN_DT, 103) < CONVERT(DATETIME, @p_START_DT, 103) ) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Thời điểm hoàn lại tiền cọc không được nhỏ hơn ngày bắt đầu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U')) BEGIN SELECT '-1' AS Result, '' RET_ID, N'Không thể chỉnh sửa. Thông tin BĐS cho thuê làm trụ sở CN/PGD đã được gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT RET_R_H_ID FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND MAKER_ID <> @p_MAKER_ID)) BEGIN SELECT '-1' AS Result, '' RET_ID, N'Không thể chỉnh sửa. Chỉ có người tạo thông tin BĐS đi thuê mới được chỉnh sửa. Bạn không phải là người tạo thông tin BĐS đi thuê này' ErrorDesc RETURN '-1' END BEGIN TRANSACTION IF(@p_RET_R_H_ID IS NULL) BEGIN SET @l_ERROR_MESSAGE = 'ID IS NULL' GOTO ABORT END DECLARE @p_PRICE_DT_ROW_NO INT = 0 Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_PRICE_DETAIL DECLARE PriceDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/RetPriceDetail',2) WITH ( RET_PRICE_ID varchar(15), RET_R_H_ID varchar(15), PRICE decimal(18,2), PRICE_DT VARCHAR(20), PRICE_END_DT VARCHAR(20), PAY_PHASE NVARCHAR(1000), TOTAL_AMT_PAY_PHASE DECIMAL(18,2), NOTES NVARCHAR(MAX) ) OPEN PriceDetail IF(EXISTS (SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND AUTH_STATUS = 'A')) BEGIN SET @p_CHECKER_ID = NULL SET @p_APPROVE_DT = NULL SET @p_SEND_APPR_DT = NULL SET @p_SIGN_DT = NULL END -- UPDATE ----BAODNQ 7/2/2022: Thêm cột vào bảng REAL_ESTATE_R_H------ UPDATE REAL_ESTATE_R_H SET BRANCH_MANAGE=@p_BRANCH_MANAGE, BRANCH_USE=@p_BRANCH_USE, BRANCH_CREATE=@p_BRANCH_CREATE, RET_ADDR=@p_RET_ADDR, RET_R_H_TIME=@p_RET_R_H_TIME, START_DT=CONVERT(DATETIME, @p_START_DT, 103), END_DT=CONVERT(DATETIME, @p_END_DT, 103), R_LAND_SQUARE=@p_R_LAND_SQUARE, SCALE=@p_SCALE, CONSTRUCT_SQUARE=@p_CONSTRUCT_SQUARE, DEPOSIT=@p_DEPOSIT, DEPOSIT_PRICE=@p_DEPOSIT_PRICE, DEPOSIT_RETURN_DT=CONVERT(DATETIME, @p_DEPOSIT_RETURN_DT, 103), PURCHASE_EACH_TERM=@p_PURCHASE_EACH_TERM, NOTES=@p_NOTES, RECORD_STATUS=@p_RECORD_STATUS, AUTH_STATUS=@p_AUTH_STATUS, ------Store Upd ko cập nhật lại MAKER_ID--------- --MAKER_ID=@p_MAKER_ID, CREATE_DT=CONVERT(DATETIME, @p_CREATE_DT, 103), CHECKER_ID=@p_CHECKER_ID, APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103), MONTH_TIMES = @p_MONTH_TIMES, PAY_AMT = @p_PAY_AMT, PAY_MONTH_TIMES= @p_PAY_MONTH_TIMES, PAY_PAY_AMT = @p_PAY_PAY_AMT, TR_CONTRACT_ID = @p_TR_CONTRACT_ID, EXTEND_DT = CONVERT(DATETIME, @p_EXTEND_DT, 103), STRUCTURE = @p_STRUCTURE, IS_SEND_APPR = @p_IS_SEND_APPR, SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), SIGN_USER = @p_SIGN_USER, SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103), EXTEND_PHASE = @p_EXTEND_PHASE WHERE RET_R_H_ID = @p_RET_R_H_ID IF @@Error <> 0 GOTO ABORT DECLARE @RET_PRICE_ID varchar(15), @RET_R_H_ID varchar(15), @PRICE decimal(18,2), @PRICE_DT VARCHAR(20), @PRICE_END_DT VARCHAR(20), @PAY_PHASE NVARCHAR(1000), @TOTAL_AMT_PAY_PHASE DECIMAL(18,2), @NOTES NVARCHAR(MAX) FETCH NEXT FROM PriceDetail INTO @RET_PRICE_ID, @RET_R_H_ID, @PRICE, @PRICE_DT, @PRICE_END_DT, @PAY_PHASE, @TOTAL_AMT_PAY_PHASE, @NOTES DELETE FROM RET_PRICE WHERE RET_R_H_ID = @p_RET_R_H_ID WHILE @@FETCH_STATUS = 0 BEGIN SET @p_PRICE_DT_ROW_NO = @p_PRICE_DT_ROW_NO + 1 IF(CONVERT(DATETIME, @PRICE_END_DT, 103) <= CONVERT(DATETIME, @PRICE_DT, 103)) BEGIN ROLLBACK TRANSACTION CLOSE PriceDetail DEALLOCATE PriceDetail SELECT '-1' as Result, '' RET_R_H_ID, N'Lưới giá thuê: dòng' +CONVERT(VARCHAR, @p_PRICE_DT_ROW_NO)+ N': Đến ngày không được nhỏ hơn từ ngày'ErrorDesc RETURN '-1' END IF @RET_PRICE_ID ='' OR @RET_PRICE_ID IS NULL -- INSERT PRICE DETAIL BEGIN EXEC SYS_CodeMasters_Gen 'RET_PRICE', @RET_PRICE_ID out IF @RET_PRICE_ID ='' OR @RET_PRICE_ID IS NULL GOTO ABORT END INSERT INTO RET_PRICE (RET_PRICE_ID, RET_R_H_ID, PRICE, PRICE_DT, PRICE_END_DT, PAY_PHASE, TOTAL_AMT_PAY_PHASE, NOTES) VALUES (@RET_PRICE_ID, @p_RET_R_H_ID, @PRICE, CONVERT(DATETIME, @PRICE_DT, 103), CONVERT(DATETIME, @PRICE_END_DT, 103), @PAY_PHASE, @TOTAL_AMT_PAY_PHASE, @NOTES) IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM PriceDetail INTO @RET_PRICE_ID, @p_RET_R_H_ID, @PRICE, @PRICE_DT, @PRICE_END_DT, @PAY_PHASE, @TOTAL_AMT_PAY_PHASE, @NOTES END CLOSE PriceDetail DEALLOCATE PriceDetail ---------------BAODNQ : TH NGƯỜI TẠO CẬP NHẬT NHIỀU LẦN THÌ CHỈ LƯU LỊCH SỬ XỬ LÝ CẬP NHẬT GẦN NHẤT---------------- IF((SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID = @p_RET_R_H_ID ORDER BY APPROVE_DT DESC) = 'UPDATE') BEGIN WITH RESULT AS( SELECT TOP 1 * FROM PL_PROCESS WHERE REQ_ID = @p_RET_R_H_ID ORDER BY APPROVE_DT DESC ) DELETE FROM RESULT END --------BAODNQ 14/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_RET_R_H_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Cập nhật thông tin BĐS đi thuê thành công' , N'Cập nhật thông tin BĐS đi thuê' ) COMMIT TRANSACTION SELECT '0' as Result, @p_RET_R_H_ID RET_R_H_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN SELECT '-1' as Result, '' RET_R_H_ID, @l_ERROR_MESSAGE ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[ASS_INVENTORY_ById]' GO ALTER PROCEDURE [dbo].[ASS_INVENTORY_ById] @p_INVENTORY_ID varchar(15) = NULL AS --thieuvq 12/7/2018 - DOC DU LIEU BO QUA COMMIT TRANSACTION SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED BEGIN IF EXISTS (SELECT * FROM ASS_INVENTORY_DT_RPT WHERE INVENT_ID = @p_INVENTORY_ID) BEGIN SELECT A.*, B.ASSET_NAME, B.ASSET_CODE, B.BUY_PRICE, B.ASSET_SERIAL_NO, B.USE_DATE,GR.MANAGER_ID, --ISNULL((B.AMORT_AMT - B.AMORTIZED_AMT), B.AMORT_AMT) AS REMAIN_AMORTIZED_AMT, --So tien khau hao con lai A.REMAIN_VALUE AS REMAIN_AMORTIZED_AMT, --So tien khau hao con lai E.STATUS_NAME ASS_STATUS_NAME, --Tinh trang tai san CBR.BRANCH_NAME AS BRANCH_USE_NAME, CBR.BRANCH_CODE AS BRANCH_USE_CODE, CDP.DEP_NAME AS DEPT_USE_NAME, CDP.DEP_CODE AS DEPT_USE_CODE, A.ASSET_STATUS, (SELECT COUNT(*) FROM CM_IMAGE WHERE REF_ID = A.INVENTDT_ID) AS IMAGE_QTY, (SELECT COUNT (*) FROM [FUNC_CM_IMAGE_GetNearAsset](A.ASSET_ID, F.INVENTORY_DT)) AS NEAR_IMAGE_QTY, B.TYPE_ID, B.GROUP_ID, GR.MANAGER_ID, INVENT_STATUS = CASE WHEN LG.LOG_ID IS NULL THEN '0' ELSE '1' END FROM ASS_INVENTORY_DT_RPT A LEFT JOIN ASS_MASTER B ON A.ASSET_ID=B.ASSET_ID LEFT JOIN ASS_STATUS E ON A.ASSET_STATUS = E.STATUS_ID LEFT JOIN CM_BRANCH CBR ON CBR.BRANCH_ID = A.BRANCH_USE LEFT JOIN CM_DEPARTMENT CDP ON CDP.DEP_ID = A.DEPT_USE LEFT JOIN ASS_INVENTORY_MASTER F ON A.INVENT_ID = F.INVENT_ID LEFT JOIN dbo.ASS_GROUP GR ON GR.GROUP_ID = B.GROUP_ID LEFT JOIN ASS_INVENTORY_DT_LOG LG ON LG.INVENTDT_ID = A.INVENTDT_ID WHERE 1 = 1 AND A.INVENT_ID = @p_INVENTORY_ID ORDER BY A.INVENTDT_ID END ELSE BEGIN SELECT A.*, B.ASSET_NAME, B.ASSET_CODE, B.BUY_PRICE, B.ASSET_SERIAL_NO, B.USE_DATE,GR.MANAGER_ID, --ISNULL((B.AMORT_AMT - B.AMORTIZED_AMT), B.AMORT_AMT) AS REMAIN_AMORTIZED_AMT, --So tien khau hao con lai A.REMAIN_VALUE AS REMAIN_AMORTIZED_AMT, --So tien khau hao con lai E.STATUS_NAME ASS_STATUS_NAME, --Tinh trang tai san CBR.BRANCH_NAME AS BRANCH_USE_NAME, CBR.BRANCH_CODE AS BRANCH_USE_CODE, CDP.DEP_NAME AS DEPT_USE_NAME, CDP.DEP_CODE AS DEPT_USE_CODE, A.ASSET_STATUS, (SELECT COUNT(*) FROM CM_IMAGE WHERE REF_ID = A.INVENTDT_ID) AS IMAGE_QTY, (SELECT COUNT (*) FROM [FUNC_CM_IMAGE_GetNearAsset](A.ASSET_ID, F.INVENTORY_DT)) AS NEAR_IMAGE_QTY, B.TYPE_ID, B.GROUP_ID, GR.MANAGER_ID, INVENT_STATUS = CASE WHEN LG.LOG_ID IS NULL THEN '0' ELSE '1' END FROM ASS_INVENTORY_DT A LEFT JOIN ASS_MASTER B ON A.ASSET_ID=B.ASSET_ID LEFT JOIN ASS_STATUS E ON A.ASSET_STATUS = E.STATUS_ID LEFT JOIN CM_BRANCH CBR ON CBR.BRANCH_ID = A.BRANCH_USE LEFT JOIN CM_DEPARTMENT CDP ON CDP.DEP_ID = A.DEPT_USE LEFT JOIN ASS_INVENTORY_MASTER F ON A.INVENT_ID = F.INVENT_ID LEFT JOIN dbo.ASS_GROUP GR ON GR.GROUP_ID = B.GROUP_ID LEFT JOIN ASS_INVENTORY_DT_LOG LG ON LG.INVENTDT_ID = A.INVENTDT_ID WHERE 1 = 1 AND A.INVENT_ID = @p_INVENTORY_ID ORDER BY A.INVENTDT_ID END END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PAY_ENTRIES_POST_UpdRef]' GO ALTER PROCEDURE [dbo].[PAY_ENTRIES_POST_UpdRef] @p_ET_ID varchar(500) = NULL, @p_ENTRY_PAIR varchar(50) = NULL, @p_TRN_ID varchar(50) = NULL, @p_REF_NO VARCHAR(100) = ''---SO REF NO CUA CORE TRA VE AS BEGIN TRY UPDATE PAY_ENTRIES_POST SET REF_NO = @p_REF_NO , TRN_DATE = GETDATE() -- LUCTV 28042021: BO SUNG NEU TRUONG HOP RETRY BUT TOAN THI NGAY HACH TOAN TREN AMS VA NGAY HACH TOAN TREN CORE FC PHAI KHOP NHAU WHERE ET_ID IN (SELECT * FROM wsiSplit(@p_ET_ID,',')) /* -- doanptt update ref_no danh sách chuyển tiền ngoài hệ thống UPDATE TR_REQ_PAY_TRANS_OUTSIDE_REC SET REF_NO = @p_REF_NO WHERE REQ_PAY_ID = @p_TRN_ID AND ENTRY_PAIR = @p_ENTRY_PAIR */ --SELECT * FROM wsiSplit('PET000000000016,PET000000000017,PET000000000018,PET000000000019',',') SELECT '0' RESULT, '' ERROR RETURN 0 END TRY BEGIN CATCH SELECT '-1' RESULT, ERROR_MESSAGE() ERROR RETURN -1 END CATCH GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_CONTRACT_MASTER_App]' GO --INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('CONTRACT_VALUES','CTVA','') --INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('CTVA','1','1') ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_App] @p_CONTRACT_ID varchar(15), @p_VERSION_NO varchar(15), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(25), @P_TYPE_CONTRACT VARCHAR(1), @P_XML_TEMP XML AS IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Phê duyệt thất bại. Thông tin khai báo DTSD nội bộ đang bị trả về' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Phê duyệt thất bại. Thông tin khai báo DTSD nội bộ đã được phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT CONTRACT_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Phê duyệt thất bại. Thông tin khai báo DTSD nội bộ đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT CONTRACT_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'U' AND IS_SEND_APPR = 'Y' AND (SIGN_USER IS NOT NULL AND SIGN_USER <> '') AND(SIGN_DT IS NULL OR SIGN_DT = '') ) ) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Phê duyệt thất bại. Thông tin khai báo DTSD nội bộ đang chờ cấp phê duyệt trung gian xác nhận. Vui lòng đợi cấp phê duyệt trung gian xác nhận' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @_BUILDING_UTIL_LOG VARCHAR(15) DECLARE @p_VALUE_ID VARCHAR(15) DECLARE @p_MONTH DECIMAL(18,0) DECLARE @VALUE_ERROR DECIMAL(18,2) DECLARE @p_RENT_PRICE DECIMAL(18,0) DECLARE @TOATAL_INTERNAL DECIMAL(18,2) DECLARE @STT INT SET @STT =0 DECLARE @_BUILDING_ID VARCHAR(15) DECLARE @_BUILDING_AREA_ID VARCHAR(15) DECLARE @_RENT_AREA DECIMAL(18,2) DECLARE @_RENT_PRICE_OLD DECIMAL(18,0) --DECLARE @tmp table(CONTRACT_DTID VARCHAR(15), BUILDING_AREA_ID varchar(15),RENT_AREA DECIMAL(18,2),RENT_PRICE DECIMAL(18,2)) --insert into @tmp SELECT CONTRACT_DTID, BUILDING_AREA_ID,RENT_AREA,RENT_PRICE FROM BUD_CONTRACT_DT -- WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO-1 -----*** INSERT VERSION -1 VAO TRONG BANG LOG IF @@Error <> 0 GOTO ABORT Declare @hdoc1 INT DECLARE @d_CONTRACT_DTID VARCHAR(15), @d_BUILD_ID VARCHAR(15), @d_VERSION_NO INT, @d_BUILDING_AREA_ID VARCHAR(15), @d_RENT_AREA DECIMAL(18,2), @d_RENT_AREA_APP DECIMAL(18,2), @d_AREA_REMAIN DECIMAL(18,2), @d_RENT_PRICE DECIMAL, @d_DIEN_TICH_TANG DECIMAL(18,2), @d_DIEN_TICH_SD_NOI_BO DECIMAL(18,2), @d_DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), @d_DIEN_TICH_CON_LAI DECIMAL(18,2), @d_DIEN_TICH_CAN_SD DECIMAL(18,2), @d_REASON NVARCHAR(MAX), @d_PRICE DECIMAL, @d_TOTAL_AMT DECIMAL, @d_DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2), @d_BRANCH_ID NVARCHAR(15), @d_DEP_ID NVARCHAR(15), @d_VAT INT, @d_PAY_PHASE VARCHAR(15) Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP DECLARE XmlDataDoc CURSOR FOR SELECT * FROM OPENXML(@hdoc1,'/Root/XmlData1',2) WITH ( ----BAODNQ-21/12/2021: Thêm các cột vào cursor XML----- CONTRACT_DTID VARCHAR(15), BUILD_ID VARCHAR(15), VERSION_NO INT, BUILDING_AREA_ID VARCHAR(15), RENT_AREA DECIMAL(18,2), RENT_AREA_APP DECIMAL(18,2), AREA_REMAIN DECIMAL(18,2), RENT_PRICE DECIMAL, DIEN_TICH_TANG DECIMAL(18,2), DIEN_TICH_SD_NOI_BO DECIMAL(18,2), DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), DIEN_TICH_CON_LAI DECIMAL(18,2), DIEN_TICH_CAN_SD DECIMAL(18,2), REASON NVARCHAR(MAX), PRICE DECIMAL, TOTAL_AMT DECIMAL, DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2), BRANCH_ID NVARCHAR(15), DEP_ID NVARCHAR(15), VAT INT, PAY_PHASE VARCHAR(15) ) OPEN XmlDataDoc FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN, @d_RENT_PRICE, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_SD, @d_REASON, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL, @d_BRANCH_ID, @d_DEP_ID, @d_VAT, @d_PAY_PHASE WHILE @@FETCH_STATUS = 0 BEGIN SET @STT= @STT+1 SET @VALUE_ERROR = (SELECT FLOOR_AREA - (UTILZED_AREA + INTERNAL_AREA) FROM BUD_AREA_DT WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID ) --+(SELECT SUM(RENT_AREA) FROM BUD_CONTRACT_DT --WHERE CONTRACT_ID =@p_CONTRACT_ID AND CONTRACT_ID IN(SELECT CONTRACT_ID FROM --BUD_CONTRACT_MASTER WHERE AUTH_STATUS='A')) --DIEN TICH CHO THUE PHAI LON HON DIEN TICH CON LAI+ DIEN TICH VERSION CŨ TRONG TRUONG --HOP TAO PHU LUC HOP DONG ----BAODNQ-21/12/2021: Đổi @d_RENT_AREA thành @d_DIEN_TICH_CAN_SD------- IF ( @d_DIEN_TICH_CAN_SD > (@VALUE_ERROR + @d_RENT_AREA_APP)) BEGIN DECLARE @ERRORSYS NVARCHAR(200) ='' SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@stt) +N': Cột DT cần sử dụng phải nhỏ hơn hoặc bằng cột DT trống: '+ convert(nvarchar(20),@VALUE_ERROR) END IF @ERRORSYS <> '' BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, @ERRORSYS ErrorDesc RETURN '-1' END ----**** INSERT VERSION CURRENT -1------------------------------------------------------------------------- --IF(@p_VERSION_NO>1) --BEGIN -- SET @_BUILDING_AREA_ID= (SELECT TOP(1) BUILDING_AREA_ID FROM @tmp) -- SET @_RENT_AREA= (SELECT TOP(1) RENT_AREA FROM @tmp) -- SET @p_RENT_PRICE= (SELECT TOP(1) RENT_PRICE FROM @tmp) -- EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @_BUILDING_UTIL_LOG out -- IF @_BUILDING_UTIL_LOG='' OR @_BUILDING_UTIL_LOG IS NULL GOTO ABORT -- INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID],[VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT]) -- VALUES(@_BUILDING_UTIL_LOG ,@_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'R' ,@p_CONTRACT_ID ,@p_VERSION_NO-1 ,CONVERT(DATETIME, GETDATE(), 103) ,@_RENT_AREA ,'1' ,'A' ,@P_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103) ) -- ------**** INSERT INTO CONTRACT_VALUES --------------------------------------------------------------- -- EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out -- IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT -- INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO-1,@_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'R',@p_RENT_PRICE*@_RENT_AREA,NULL,@d_REASON, -- '1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103)) -- DELETE @tmp WHERE CONTRACT_DTID = (SELECT TOP(1) CONTRACT_DTID FROM @tmp) --END -----***INSERT VERSION CURRENT------------------------------------------------------------------ DECLARE @l_UTIL_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @l_UTIL_ID out IF @l_UTIL_ID='' OR @l_UTIL_ID IS NULL GOTO ABORT ----BAODNQ-21/12/2021: Đổi biến insert vào cột [AREA] thành @d_DIEN_TICH_CAN_SD + thêm cột vào bảng BUD_UTIL_LOG------- DECLARE @p_IS_FIRST_TIME VARCHAR(1) --IF(NOT EXISTS -- (SELECT * FROM BUD_UTIL_LOG -- WHERE CONTRACT_ID = @p_CONTRACT_ID -- AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID -- AND CUSTOMER_ID = @d_BRANCH_ID -- AND IS_FIRST_TIME = 'Y')) --BEGIN -- SET @p_IS_FIRST_TIME = 'Y' --END --ELSE --BEGIN -- SET @p_IS_FIRST_TIME = 'N' --END --INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID], -- [VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID], -- [APPROVE_DT], [TOTAL_AMT_INIT], [VAT_INIT], [IS_FIRST_TIME], [CUSTOMER_ID]) -- VALUES(@l_UTIL_ID ,@d_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'U' ,@p_CONTRACT_ID ,@p_VERSION_NO , -- CONVERT(DATETIME, GETDATE(), 103) ,@d_DIEN_TICH_CAN_SD ,'1' ,'A' ,@P_CHECKER_ID , -- CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103), @d_TOTAL_AMT, -- @d_VAT, @p_IS_FIRST_TIME, @d_BRANCH_ID) ---*** UPDATE CONTRACT_VALUES------------------------------------------------------- EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT ----BAODNQ-21/12/2021: Đổi biến insert vào cột [RENT_AMT] thành @d_TOTAL_AMT------- INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO,@d_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'U',@d_TOTAL_AMT,NULL,@d_REASON, '1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103)) -----***UPDATE DIEN TICH NOI BO SU DUNG NEU TYPE = I:INTERNAL ------------------------------------------------------------------ IF(@P_TYPE_CONTRACT='I') BEGIN --DECLARE @p_CUSTOMER_ID VARCHAR(15) --IF(@d_DEP_ID IS NULL OR @d_DEP_ID = '') --BEGIN -- SET @p_CUSTOMER_ID = @d_BRANCH_ID --END --ELSE --BEGIN -- SET @p_CUSTOMER_ID = @d_DEP_ID --END ---------------TH CẬP NHẬT DIỆN TÍCH ĐÃ ĐƯỢC DUYỆT: --LẤY TỔNG DIỆN TÍCH ĐÃ CHO THUÊ CỦA TẦNG - DIỆN TÍCH ĐÃ CHO THUÊ LƯU LOG TỪ LẦN DUYỆT TRƯỚC-- DECLARE @p_RENT_AREA_LOG DECIMAL(18,2) --IF(EXISTS -- (SELECT * FROM BUD_CONTRACT_LOG -- WHERE CONTRACT_ID = @p_CONTRACT_ID -- AND ( -- (@d_DEP_ID IS NOT NULL AND @d_DEP_ID <> '' AND DEP_RENT_ID = @d_DEP_ID) -- OR (BRANCH_RENT_ID = @d_BRANCH_ID AND (@d_DEP_ID IS NULL OR @d_DEP_ID = '')) -- ) -- AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID -- AND [TYPE] = 'INTERNAL')) IF(EXISTS (SELECT * FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = @p_CONTRACT_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID AND CONTRACT_DT_ID = @d_CONTRACT_DTID AND [TYPE] = 'INTERNAL')) BEGIN --SET @p_RENT_AREA_LOG = ( -- SELECT TOP 1 INTERNAL_AREA FROM BUD_CONTRACT_LOG -- WHERE CONTRACT_ID = @p_CONTRACT_ID -- AND ( -- (@d_DEP_ID IS NOT NULL AND @d_DEP_ID <> '' AND DEP_RENT_ID = @d_DEP_ID) -- OR BRANCH_RENT_ID = @d_BRANCH_ID -- ) -- AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID -- AND [TYPE] = 'INTERNAL' -- ORDER BY APPROVE_DT DESC --) SET @p_RENT_AREA_LOG = ( SELECT TOP 1 INTERNAL_AREA FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = @p_CONTRACT_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID AND CONTRACT_DT_ID = @d_CONTRACT_DTID AND [TYPE] = 'INTERNAL' ORDER BY APPROVE_DT DESC ) UPDATE BUD_AREA_DT SET INTERNAL_AREA = INTERNAL_AREA - @p_RENT_AREA_LOG WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID END --UPDATE BUD_AREA_DT --SET INTERNAL_AREA =( -- (SELECT ISNULL(SUM(AREA),0) FROM BUD_UTIL_LOG WHERE BUILDING_AREA_ID=@d_BUILDING_AREA_ID AND UTIL_RELEASE='U' AND UTIL_TYPE=@P_TYPE_CONTRACT) -- - -- (SELECT ISNULL(SUM(AREA),0) FROM BUD_UTIL_LOG WHERE BUILDING_AREA_ID=@d_BUILDING_AREA_ID AND UTIL_RELEASE='R' AND UTIL_TYPE =@P_TYPE_CONTRACT) -- ) UPDATE BUD_AREA_DT SET INTERNAL_AREA = INTERNAL_AREA + @d_DIEN_TICH_CAN_SD WHERE BUILDING_AREA_ID =@d_BUILDING_AREA_ID ---****** UPDATE BUD_CONTRACT_DT ******************************************--------- ----BAODNQ-21/12/2021: Đổi biến insert vào cột [RENT_AREA_APP] thành @@d_DIEN_TICH_CAN_SD------- UPDATE BUD_CONTRACT_DT SET RENT_AREA_APP =RENT_AREA_APP + @d_DIEN_TICH_CAN_SD --DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_CON_LAI - @d_DIEN_TICH_CAN_SD WHERE CONTRACT_DTID = @d_CONTRACT_DTID IF @@Error <> 0 GOTO ABORT -------------------CẬP NHẬT TỔNG DT NỘI BỘ ĐÃ SỬ DỤNG SAU KHI DUYỆT----------- --UPDATE BUD_CONTRACT_DT --SET DIEN_TICH_SD_NOI_BO = DIEN_TICH_SD_NOI_BO + @d_DIEN_TICH_CAN_SD --WHERE CONTRACT_DTID = @d_CONTRACT_DTID --IF @@Error <> 0 GOTO ABORT -----------------CẬP NHẬT TỔNG DT NỘI BỘ ĐÃ SỬ DỤNG CỦA CÁC TẦNG GIỐNG VỚI TẦNG-------- -----------------CỦA PHIẾU DC DUYỆT----------------- DECLARE @p_TOTAL_INTERNAL_AREA DECIMAL(18,2) = ( SELECT INTERNAL_AREA FROM BUD_AREA_DT WHERE BUILD_ID = @d_BUILD_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID ) UPDATE BUD_CONTRACT_DT SET DIEN_TICH_SD_NOI_BO = @p_TOTAL_INTERNAL_AREA, DIEN_TICH_CON_LAI = DIEN_TICH_TANG - (@p_TOTAL_INTERNAL_AREA + DIEN_TICH_DA_CHO_THUE), DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_TANG - (@p_TOTAL_INTERNAL_AREA + DIEN_TICH_DA_CHO_THUE) WHERE BUILD_ID = @d_BUILD_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID IF @@Error <> 0 GOTO ABORT UPDATE BUD_CONTRACT_CUST_DT SET DIEN_TICH_SD_NOI_BO = @p_TOTAL_INTERNAL_AREA, DIEN_TICH_CON_LAI = DIEN_TICH_TANG - (@p_TOTAL_INTERNAL_AREA + DIEN_TICH_DA_CHO_THUE), DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_TANG - (@p_TOTAL_INTERNAL_AREA + DIEN_TICH_DA_CHO_THUE) WHERE BUILD_ID = @d_BUILD_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID IF @@Error <> 0 GOTO ABORT END ------------------------------------------------------------------------------------------ -----BAODNQ 17/1/2022: Insert vào bảng BUD_CONTRACT_LOG khi trưởng dv duyệt thành công --IF(NOT EXISTS -- (SELECT * FROM BUD_CONTRACT_LOG -- WHERE CONTRACT_ID = @p_CONTRACT_ID -- AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID -- AND ( -- BRANCH_RENT_ID = @d_BRANCH_ID -- AND DEP_RENT_ID = @d_DEP_ID -- ) -- AND IS_FIRST_TIME = 'Y')) IF(NOT EXISTS( SELECT * FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = @p_CONTRACT_ID AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID AND CONTRACT_DT_ID = @d_CONTRACT_DTID AND IS_FIRST_TIME = 'Y' ) ) BEGIN SET @p_IS_FIRST_TIME = 'Y' END ELSE BEGIN SET @p_IS_FIRST_TIME = 'N' END DECLARE @p_MAKER_ID VARCHAR(15) SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID) --SET @p_CREATE_DT = (SELECT CREATE_DT FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID) INSERT INTO BUD_CONTRACT_LOG ([BUD_CONTRACT_LOG_ID], [CONTRACT_ID], [CONTRACT_DT_ID], [CUSTOMER_ID], [BUILDING_AREA_ID], [TYPE], [INTERNAL_AREA], [RENT_AREA], [REMAIN_AREA], [UNIT_PRICE], [VAT], [TOTAL_AMT], [IS_FIRST_TIME], [BRANCH_RENT_ID], [DEP_RENT_ID], [MAKER_ID], [CREATE_DT], [CHECKER_ID], [APPROVE_DT], [AUTH_STATUS]) VALUES (@l_UTIL_ID, @p_CONTRACT_ID, @d_CONTRACT_DTID, NULL, @d_BUILDING_AREA_ID, 'INTERNAL', @d_DIEN_TICH_CAN_SD, NULL, @d_DIEN_TICH_CON_LAI_FINAL, @d_PRICE, @d_VAT, @d_TOTAL_AMT, @p_IS_FIRST_TIME, @d_BRANCH_ID, @d_DEP_ID, @p_MAKER_ID, GETDATE(), @P_CHECKER_ID, GETDATE(), 'A') IF @@ERROR <> 0 GOTO ABORT ------------------------------------- FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN, @d_RENT_PRICE, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_SD, @d_REASON, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL, @d_BRANCH_ID, @d_DEP_ID, @d_VAT, @d_PAY_PHASE END CLOSE XmlDataDoc DEALLOCATE XmlDataDoc --**** UPDATE BUD_CONTRACT_MASTER************* ----BAODNQ-21/12/2021: Đổi cột thực hiện SUM thành TOTAL_AMT------- SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_DT WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO) SET @p_MONTH= (SELECT MONTHS FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO) UPDATE BUD_CONTRACT_MASTER --SET RENT_PRICE=@p_RENT_PRICE *@p_MONTH SET RENT_PRICE=@p_RENT_PRICE WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO ---*** UPDATE BUD_MASTER------------------------------- SET @_BUILDING_ID =(SELECT BUILDING_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO) --UPDATE BUD_MASTER --SET UTILZED_AREA = (SELECT ISNULL(SUM(UTILZED_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID) --WHERE BUILDING_ID=@_BUILDING_ID ---***UPDATE DIEN TICH CHO THUE TOAN BO TOA NHA SET @TOATAL_INTERNAL = (SELECT ISNULL(SUM(INTERNAL_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID) UPDATE BUD_MASTER SET RENT_TOTAL_AREA = TOTAL_AREA -@TOATAL_INTERNAL WHERE BUILDING_ID = @_BUILDING_ID UPDATE BUD_CONTRACT_MASTER SET AUTH_STATUS = 'A', CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE VERSION_NO=@p_VERSION_NO AND CONTRACT_ID =@p_CONTRACT_ID IF @@ERROR <> 0 GOTO ABORT ---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONTRACT_ID, 'APPROVE', @P_CHECKER_ID, GETDATE(), N'Trưởng đơn vị phê duyệt thành công' , N'Trưởng đơn vị phê duyệt' ) COMMIT TRANSACTION SELECT '0' as Result, @p_VERSION_NO VERSION_NO, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAY_SERVICE_ById]' GO ALTER PROC [dbo].[TR_REQ_PAY_SERVICE_ById] @p_REQ_PAY_ID varchar(15) AS BEGIN SELECT A.*,P.REQ_CODE AS EMP_NAME, D.DEP_CODE, D.DEP_NAME, A.SERVICE_NAME AS REQ_PAY_SERVICE_NAME, A.TOTAL_AMT AS TOTAL_AMT_SERVICE FROM TR_REQ_PAY_SERVICE A --LEFT JOIN TL_USER T ON A.EMP_ID = T.TLNANME LEFT JOIN PL_REQUEST_DOC P ON A.EMP_ID = P.REQ_ID LEFT JOIN CM_DEPARTMENT D ON A.DEPT_ID= D.DEP_ID WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[REAL_ESTATE_R_H_Ins]' GO ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_Ins] @p_BRANCH_MANAGE nvarchar(500) = NULL, @p_BRANCH_USE nvarchar(500) = NULL, @p_RET_ADDR nvarchar(MAX) = NULL, @p_RET_R_H_TIME decimal = NULL, @p_START_DT VARCHAR(20) = NULL, @p_END_DT VARCHAR(20) = NULL, @p_R_LAND_SQUARE DECIMAL(18,2) = NULL, @p_SCALE NVARCHAR(500) = NULL, @p_CONSTRUCT_SQUARE DECIMAL(18,2) = NULL, @p_PRICE_DETAIL XML = NULL, @p_DEPOSIT varchar(1) = NULL, @p_DEPOSIT_PRICE decimal = NULL, @p_DEPOSIT_RETURN_DT VARCHAR(20) = NULL, @p_PURCHASE_EACH_TERM decimal = NULL, @p_PAY_AMT decimal = NULL, @p_PAY_PAY_AMT decimal = NULL, @p_PAY_MONTH_TIMES INT = 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_MONTH_TIMES INT = NULL, @p_BRANCH_CREATE varchar(15) = NULL, ----BAODNQ 7/2/2022: Thêm cột vào bảng REAL_ESTATE_R_H------ @p_TR_CONTRACT_ID varchar(15) = NULL, @p_EXTEND_DT varchar(20) = NULL, @p_STRUCTURE nvarchar(500) = NULL, @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL, @p_SIGN_USER VARCHAR(15) = NULL, @p_SIGN_DT VARCHAR(20) = NULL, @p_EXTEND_PHASE NVARCHAR(1000) = NULL AS DECLARE @l_ERROR_MESSAGE VARCHAR(1000) IF(CONVERT(DATETIME, @p_END_DT, 103) < CONVERT(DATETIME, @p_START_DT, 103)) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Ngày kết thúc không được nhỏ hơn ngày bắt đầu' ErrorDesc RETURN '-1' END IF(CONVERT(DATETIME, @p_EXTEND_DT, 103) < CONVERT(DATETIME, @p_START_DT, 103)) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Ngày gia hạn hợp đồng không được nhỏ hơn ngày bắt đầu' ErrorDesc RETURN '-1' END IF(CONVERT(DATETIME, @p_EXTEND_DT, 103) < CONVERT(DATETIME, @p_END_DT, 103)) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Ngày gia hạn hợp đồng không được nhỏ hơn ngày kết thúc' ErrorDesc RETURN '-1' END IF( (@p_DEPOSIT_RETURN_DT IS NOT NULL OR @p_DEPOSIT_RETURN_DT <> '') AND CONVERT(DATETIME, @p_DEPOSIT_RETURN_DT, 103) < CONVERT(DATETIME, @p_START_DT, 103) ) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Thời điểm hoàn lại tiền cọc không được nhỏ hơn ngày bắt đầu' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @p_PRICE_DT_ROW_NO INT = 0 -- GEN ID DECLARE @p_RET_R_H_ID VARCHAR(30) DECLARE @p_KeyGen VARCHAR(15); EXEC dbo.SYS_CodeMasters_Gen 'REAL_ESTATE_R_H', @p_RET_R_H_ID out Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_PRICE_DETAIL DECLARE PriceDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/RetPriceDetail',2) WITH ( RET_PRICE_ID varchar(15), RET_R_H_ID varchar(15), PRICE decimal(18,2), PRICE_DT VARCHAR(20), PRICE_END_DT VARCHAR(20), PAY_PHASE NVARCHAR(1000), TOTAL_AMT_PAY_PHASE DECIMAL(18,2), NOTES NVARCHAR(MAX) ) OPEN PriceDetail -- INSERT ----BAODNQ 7/2/2022: Thêm cột vào bảng REAL_ESTATE_R_H------ INSERT INTO REAL_ESTATE_R_H (RET_R_H_ID, BRANCH_MANAGE, BRANCH_USE, RET_ADDR, RET_R_H_TIME, START_DT, END_DT, R_LAND_SQUARE, SCALE, CONSTRUCT_SQUARE, DEPOSIT, DEPOSIT_PRICE, DEPOSIT_RETURN_DT, PURCHASE_EACH_TERM, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT,BRANCH_CREATE, MONTH_TIMES, PAY_AMT, PAY_MONTH_TIMES, PAY_PAY_AMT, TR_CONTRACT_ID, EXTEND_DT, STRUCTURE, IS_SEND_APPR,SEND_APPR_DT,SIGN_USER,SIGN_DT, EXTEND_PHASE) VALUES (@p_RET_R_H_ID, @p_BRANCH_MANAGE, @p_BRANCH_USE, @p_RET_ADDR, @p_RET_R_H_TIME, CONVERT(DATETIME, @p_START_DT, 103), CONVERT(DATETIME, @p_END_DT, 103), @p_R_LAND_SQUARE, @p_SCALE, @p_CONSTRUCT_SQUARE, @p_DEPOSIT, @p_DEPOSIT_PRICE, CONVERT(DATETIME,@p_DEPOSIT_RETURN_DT, 103), @p_PURCHASE_EACH_TERM, @p_NOTES, @p_RECORD_STATUS, @p_AUTH_STATUS, @p_MAKER_ID, CONVERT(DATETIME, @p_CREATE_DT, 103), @p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103),@p_BRANCH_CREATE,@p_MONTH_TIMES,@p_PAY_AMT, @p_PAY_MONTH_TIMES, @p_PAY_PAY_AMT, @p_TR_CONTRACT_ID, CONVERT(DATETIME, @p_EXTEND_DT, 103), @p_STRUCTURE, @p_IS_SEND_APPR, CONVERT(DATETIME,@p_SEND_APPR_DT ,103), @p_SIGN_USER, CONVERT(DATETIME, @p_SIGN_DT, 103), @p_EXTEND_PHASE) IF @@Error <> 0 GOTO ABORT DECLARE @RET_PRICE_ID varchar(15), @RET_R_H_ID varchar(15), @PRICE decimal(18,2), @PRICE_DT VARCHAR(20), @PRICE_END_DT VARCHAR(20), @PAY_PHASE NVARCHAR(1000), @TOTAL_AMT_PAY_PHASE DECIMAL(18,2), @NOTES NVARCHAR(MAX) FETCH NEXT FROM PriceDetail INTO @RET_PRICE_ID, @RET_R_H_ID, @PRICE, @PRICE_DT, @PRICE_END_DT, @PAY_PHASE, @TOTAL_AMT_PAY_PHASE, @NOTES WHILE @@FETCH_STATUS = 0 BEGIN SET @p_PRICE_DT_ROW_NO = @p_PRICE_DT_ROW_NO + 1 IF(CONVERT(DATETIME, @PRICE_END_DT, 103) <= CONVERT(DATETIME, @PRICE_DT, 103)) BEGIN ROLLBACK TRANSACTION CLOSE PriceDetail DEALLOCATE PriceDetail SELECT '-1' as Result, '' RET_R_H_ID, N'Lưới kỳ thanh toán: dòng' +CONVERT(VARCHAR, @p_PRICE_DT_ROW_NO)+ N': Đến ngày không được nhỏ hơn từ ngày'ErrorDesc RETURN '-1' END EXEC SYS_CodeMasters_Gen 'RET_PRICE', @RET_PRICE_ID out IF @RET_PRICE_ID ='' OR @RET_PRICE_ID IS NULL GOTO ABORT INSERT INTO RET_PRICE (RET_PRICE_ID, RET_R_H_ID, PRICE, PRICE_DT, PRICE_END_DT, PAY_PHASE, TOTAL_AMT_PAY_PHASE, NOTES) VALUES (@RET_PRICE_ID, @p_RET_R_H_ID, @PRICE, CONVERT(DATETIME, @PRICE_DT, 103), CONVERT(DATETIME, @PRICE_END_DT, 103), @PAY_PHASE, @TOTAL_AMT_PAY_PHASE, @NOTES) IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM PriceDetail INTO @RET_PRICE_ID, @RET_R_H_ID, @PRICE, @PRICE_DT, @PRICE_END_DT, @PAY_PHASE, @TOTAL_AMT_PAY_PHASE, @NOTES END CLOSE PriceDetail DEALLOCATE PriceDetail --------BAODNQ 14/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_RET_R_H_ID, 'INSERT', @p_MAKER_ID, GETDATE(), N'Thêm mới thông tin BĐS đi thuê thành công' , N'Thêm mới thông tin BĐS đi thuê' ) COMMIT TRANSACTION SELECT '0' as Result, @p_RET_R_H_ID RET_R_H_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION CLOSE PriceDetail DEALLOCATE PriceDetail SELECT '-1' as Result, '' RET_R_H_ID, @l_ERROR_MESSAGE ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_DOC_App]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_App] @p_REQ_ID VARCHAR(15) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_ROLE_LOGIN VARCHAR(50) = NULL, @p_BRANCH_LOGIN VARCHAR(15), @p_PROCESS_DES NVARCHAR(500) AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)) SET @ERRORSYS = 'REQ-00002' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END BEGIN TRANSACTION SET @p_APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) -- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R')) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc RETURN '-1' END -- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC IF(NOT EXISTS(SELECT * FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa có thông tin hàng hóa mua sắm. Vui lòng trả về nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc RETURN '-1' END ----------------------BAODNQ 22/12/2022: Ko cho trưởng đơn vị duyệt lại khi đã duyệt--------------------------------- IF(EXISTS(SELECT REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID AND AUTH_STATUS = 'A' AND PROCESS_ID <> 'APPNEW')) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) + N' đã được trưởng đơn vị phê duyệt. Vui lòng chờ đợi bước xử lý tiếp theo xử lý phiếu.' ErrorDesc RETURN '-1' END --- PHE DUYET TRUNG GIAN DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE_N VARCHAR(20) ,@DEP_CREATE_N VARCHAR(20),@BRANCH_TYPE VARCHAR(10), @BRANCH_CREATE_TYPE VARCHAR(10) SELECT @BRANCH_CREATE_N=BRANCH_CREATE,@DEP_CREATE_N=DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID) SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE_N) -- LUCTV 08122020 KIỂM TRA NẾU TỜ TRÌNH LINK TỚI PYCMS LÀ TỜ TRÌNH TOÀN HÀNG THÌ ĐMMS GIAO CHO ĐƠN VỊ TỰ MUA SẮM DECLARE @PL_REQ_REF VARCHAR(15), @ISCHECK_ALL VARCHAR(1) SET @PL_REQ_REF =(SELECT TOP 1 PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) SET @ISCHECK_ALL =(SELECT TOP 1 IS_CHECKALL FROM PL_REQUEST_DOC WHERE REQ_ID =@PL_REQ_REF) -- LUCTV 08122020: END IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER =@p_CHECKER_ID AND PROCESS_ID ='SIGN')) BEGIN DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'SIGN', -- PROCESS_ID - varchar(10) @p_CHECKER_ID, -- CHECKER_ID - varchar(15) @p_APPROVE_DT , -- APPROVE_DT - datetime N'Cấp phê duyệt trung gian xác nhận phiếu yêu cầu mua sắm', N'Cấp phê duyệt trung gian' ) --- DUA CAP PHE DUYET TRUONG DON VI --IF(@BRANCH_CREATE_TYPE='PGD') -- SET @BRANCH_CREATE_N=(SELECT FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE_N) INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'APPNEW', -- PROCESS_ID - varchar(10) 'C', -- STATUS - varchar(5) 'GDDV', -- ROLE_USER - varchar(50) @BRANCH_CREATE_N, @DEP_CREATE_N, -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime '', -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', -- DVDM_ID - varchar(15) N'Chờ trưởng đơn vị phê duyệt', -- NOTES - nvarchar(500) NULL -- IS_HAS_CHILD - bit ) --- UPDATE PROCESS_ID VE APP_NEW UPDATE TR_REQUEST_DOC SET PROCESS_ID ='APPNEW' WHERE REQ_ID =@p_REQ_ID END ELSE --- PHE DUYET GIU NGUYEN NHU THUONG BEGIN DECLARE @ROLE_USER_LOGIN VARCHAR(15)='' SET @ROLE_USER_LOGIN =(SELECT RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) --- KIEM TRA XEM DA PHE DUYET TRUNG GIAN HAY CHUA IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <> '')) BEGIN IF(NOT EXISTS (SELECT * FROM PL_PROCESS WHERE PROCESS_ID='SIGN' AND REQ_ID =@p_REQ_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang đợi cấp phê duyệt trung gian xác nhận. Vui lòng đợi nhân viên '+(SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+' xác nhận phiếu!' ErrorDesc RETURN '-1' END IF(@p_CHECKER_ID = (SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) AND @BRANCH_CREATE_TYPE ='HS') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang đợi trưởng đơn vị phê duyệt. Bạn không có thẩm quyền phê duyệt cấp trưởng đơn vị! Vui lòng xem lịch sử xử lý phiếu' ErrorDesc RETURN '-1' END END -- LUCTV: 08 12 2020: KIỂM TRA NẾU CẤP DUYỆT KHÔNG NẰM TRONG CẤP TP, PP THÌ KHÔNG CHO DUYỆT TRƯỞNG ĐƠN VỊ --IF( DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID DECLARE @CURR_PROCESS VARCHAR(20),@TOTAL_AMT DECIMAL(18,2), @LIMIT_VALUE DECIMAL(18,0), @LIMIT_DVCM DECIMAL(18,0),@IS_NEXT BIT,@DMMS_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@BRANCH_HS VARCHAR(20),@DEP_CREATE VARCHAR(15) SET @BRANCH_HS= (SELECT TOP 1 BRANCH_ID FROM dbo.CM_BRANCH WHERE BRANCH_TYPE='HS') SET @LIMIT_VALUE=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PYCMS_DVKD') SET @LIMIT_DVCM=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PYCMS_DVCM') SET @TOTAL_AMT=(SELECT TOTAL_AMT FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) SET @CURR_PROCESS = (SELECT PROCESS_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='A',REQ_TYPE=0, CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CAST(@p_APPROVE_DT AS DATE),BRANCH_DVMS=BRANCH_CREATE, PROCESS_ID='DMMS' WHERE REQ_ID=@p_REQ_ID -- SET @IS_NEXT=(SELECT dbo.FN_CHECK_LIMIT_TR_REQ(@p_REQ_ID,'GDDV')) SET @BRANCH_CREATE=(SELECT BRANCH_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) SET @DEP_CREATE=(SELECT DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) --IF(@BRANCH_CREATE_TYPE='PGD') -- SET @BRANCH_CREATE=(SELECT BRANCH_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE) IF(EXISTS (SELECT BRANCH_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE AND BRANCH_TYPE='HS')) BEGIN IF(@TOTAL_AMT <= @LIMIT_DVCM) BEGIN PRINT 'DVCM THEO MAPPING HANG HOA' SET @DMMS_ID= (SELECT TOP 1 HC.DVCM_ID FROM dbo.TR_REQUEST_DOC_DT DT LEFT JOIN dbo.CM_HANGHOA_DVCM HC ON HC.HH_ID=DT.HANGHOA_ID WHERE REQ_DOC_ID=@p_REQ_ID) PRINT @DMMS_ID UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=2 WHERE REQ_ID=@p_REQ_ID END ELSE BEGIN PRINT 'LAY PHONG HANH CHINH RA MUA SAM' SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS) UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID END END ELSE BEGIN IF(EXISTS(SELECT RD.REQDT_ID FROM dbo.TR_REQUEST_DOC_DT RD LEFT JOIN dbo.SYS_HH_GROUP_LIMIT HGL ON RD.HANGHOA_ID=HGL.HH_ID LEFT JOIN dbo.SYS_GROUP_LIMIT GL ON GL.GROUP_ID=HGL.GROUP_LIMIT_ID WHERE GL.IS_HO=1 AND RD.REQ_DOC_ID=@p_REQ_ID)) BEGIN IF(@TOTAL_AMT <= @LIMIT_DVCM) BEGIN SET @DMMS_ID= (SELECT DISTINCT HC.DVCM_ID FROM dbo.TR_REQUEST_DOC_DT DT LEFT JOIN dbo.CM_HANGHOA_DVCM HC ON HC.HH_ID=DT.HANGHOA_ID WHERE REQ_DOC_ID=@p_REQ_ID) UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=2 WHERE REQ_ID=@p_REQ_ID END ELSE BEGIN SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS) UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID END END ELSE BEGIN IF(@TOTAL_AMT<=@LIMIT_VALUE) BEGIN SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_CREATE) UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_CREATE,DMMS_ID=@DMMS_ID,REQ_TYPE=0 WHERE REQ_ID=@p_REQ_ID END ELSE BEGIN SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS) UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID END END END IF(@TOTAL_AMT > 20000000) BEGIN SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS) UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID END -- LUCTV 08122020 KIỂM TRA NẾU TỜ TRÌNH LINK TỚI PYCMS LÀ TỜ TRÌNH TOÀN HÀNG THÌ ĐMMS GIAO CHO ĐƠN VỊ TỰ MUA SẮM IF(@ISCHECK_ALL ='1' AND NOT EXISTS (SELECT BRANCH_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE AND BRANCH_TYPE='HS')) BEGIN SET @DMMS_ID= (SELECT TOP 1 DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_CREATE) UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_CREATE,DMMS_ID=@DMMS_ID,REQ_TYPE=0 WHERE REQ_ID=@p_REQ_ID END IF(@TOTAL_AMT <= 10000000 AND @BRANCH_CREATE=@BRANCH_HS AND (EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (DMMS_ID IS NULL OR DMMS_ID = '')))) BEGIN PRINT 'XAC ĐINH DMMS CHINH LA DON VI TAO PYCMS' SET @DMMS_ID=(SELECT TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE IS_KHOI <> '1' AND DVDM_ID IN(SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.COST_ID=PC.COST_ID WHERE DT.DEP_ID=@DEP_CREATE AND DT.BRANCH_ID=@BRANCH_CREATE)) IF(@DMMS_ID IS NULL OR @DMMS_ID ='') SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_CREATE) UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_CREATE,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID END --- XAC DINH NEU HANG HOA DO DVCM TU MUA SAM 202238 IF (EXISTS(SELECT * FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID AND HANGHOA_ID IN (SELECT HH_ID FROM CM_HANGHOA WHERE HH_CODE IN ('THQHCC-001-000006','SPMKT-001-000007','DVNS-002-000001','THQHCC-001-000003','DVNS-001-000001')))) BEGIN PRINT 'XAC ĐINH DMMS CHINH LA DON VI TAO PYCMS' SET @DMMS_ID=(SELECT TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE IS_KHOI <> '1' AND DVDM_ID IN(SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.COST_ID=PC.COST_ID WHERE DT.DEP_ID=@DEP_CREATE AND DT.BRANCH_ID=@BRANCH_CREATE)) IF(@DMMS_ID IS NULL OR @DMMS_ID ='') SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_CREATE) UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_CREATE,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID END -- LUCTV 08122020 --IF(EXISTS( SELECT RD.REQDT_ID FROM dbo.TR_REQUEST_DOC_DT RD -- LEFT JOIN dbo.SYS_HH_GROUP_LIMIT HGL ON RD.HANGHOA_ID=HGL.HH_ID -- LEFT JOIN dbo.SYS_GROUP_LIMIT GL ON GL.GROUP_ID=HGL.GROUP_LIMIT_ID -- WHERE GL.IS_HO=1 AND RD.REQ_DOC_ID=@p_REQ_ID) OR @BRANCH_CREATE=@BRANCH_HS) -- BEGIN -- IF(@TOTAL_AMT<=@LIMIT_VALUE AND NOT EXISTS(SELECT HC.DVCM_ID FROM dbo.TR_REQUEST_DOC_DT DT -- LEFT JOIN dbo.CM_HANGHOA_DVCM HC ON HC.HH_ID=DT.HANGHOA_ID WHERE REQ_DOC_ID=@p_REQ_ID -- GROUP BY HC.DVCM_ID HAVING COUNT(REQDT_ID)>1)) -- BEGIN -- SET @DMMS_ID= (SELECT DISTINCT HC.DVCM_ID FROM dbo.TR_REQUEST_DOC_DT DT -- LEFT JOIN dbo.CM_HANGHOA_DVCM HC ON HC.HH_ID=DT.HANGHOA_ID WHERE REQ_DOC_ID=@p_REQ_ID) -- UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=2 WHERE REQ_ID=@p_REQ_ID -- END -- ELSE -- BEGIN -- SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS) -- UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID -- END -- END -- ELSE -- BEGIN -- IF(@TOTAL_AMT<=@LIMIT_VALUE) -- BEGIN -- SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_CREATE) -- UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_CREATE,DMMS_ID=@DMMS_ID,REQ_TYPE=0 WHERE REQ_ID=@p_REQ_ID -- END -- ELSE -- BEGIN -- SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS) -- UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID -- END -- END INSERT INTO dbo.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, DEP_ID ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'APPNEW', -- PROCESS_ID - varchar(10) 'P', -- STATUS - varchar(5) 'GDDV', -- ROLE_USER - varchar(50) @BRANCH_CREATE, -- BRANCH_ID - varchar(15) @p_CHECKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime '', -- PARENT_PROCESS_ID - varchar(10) '', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', -- DVDM_ID - varchar(15) N'Trưởng đơn vị phê duyệt', -- NOTES - nvarchar(500) 0 , -- IS_HAS_CHILD - bit @DEP_CREATE ) INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'DMMS', -- PROCESS_ID - varchar(10) 'C', -- STATUS - varchar(5) 'GDDV', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime 'APPNEW', -- PARENT_PROCESS_ID - varchar(10) '', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @DMMS_ID, -- DVDM_ID - varchar(15) N'Chờ đầu mối mua sắm xử lý', -- NOTES - nvarchar(500) 1 -- IS_HAS_CHILD - bit ) INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) 'APPNEW', -- PROCESS_ID - varchar(10) @p_CHECKER_ID, -- CHECKER_ID - varchar(15) @p_APPROVE_DT , -- APPROVE_DT - datetime --@p_PROCESS_DES, N'Trưởng đơn vị phê duyệt thành công', N'Trưởng đơn vị phê duyệt' -- PROCESS_DESC - nvarchar(1000) ) END IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID)) BEGIN SELECT '0' as Result, '' ErrorDesc RETURN '0' END ELSE BEGIN SELECT '4' as Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đã được đợi cấp phê duyệt trung gian xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt' ErrorDesc RETURN '4' END ABORT: BEGIN PRINT 'ERROR' ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_BUDGET_YEAR_DVKD_DETAIL_IMPORT]' GO -- Stored Procedure ALTER PROC [dbo].[TR_BUDGET_YEAR_DVKD_DETAIL_IMPORT] ( @p_GD_ID VARCHAR(20), @p_BRANCH_ID VARCHAR(20), @p_BUDGET_TYPE VARCHAR(20), @p_BRANCH_TYPE VARCHAR(20), @p_MAKER_ID VARCHAR(20), @p_XMP_TR_BUDGET_LIMIT_YEAR_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 @hdoc INT EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TR_BUDGET_LIMIT_YEAR_DETAIL DELETE FROM TR_GOODSTYPE WHERE GD_ID = @p_GD_ID AND BUDGET_TYPE = 'nam' INSERT INTO TR_GOODSTYPE(GD_ID, BUDGET_TYPE, CREATE_DT, MAKER_ID, APPROVE_DT, CHECKER_ID, RECORD_STATUS, AUTH_STATUS) VALUES (@p_GD_ID, 'nam', GETDATE(), @p_MAKER_ID, NULL, NULL, '1', 'A') DECLARE XmlBudgetLimitYearhDT CURSOR FOR SELECT * FROM OPENXML(@hdoc, '/Root/XmlBudgetLimitYearhDT', 2) WITH ( BRANCH_CODE VARCHAR(15), BRANCH_NAME NVARCHAR(250), BUDGET_YEAR VARCHAR(15), BUDGET_LIMIT_AMT DECIMAL(18,2), 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_CODE VARCHAR(15), @BRANCH_NAME NVARCHAR(250), @BUDGET_YEAR VARCHAR(15), @BUDGET_LIMIT_AMT DECIMAL(18,2), @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 XmlBudgetLimitYearhDT; FETCH NEXT FROM XmlBudgetLimitYearhDT INTO @BRANCH_CODE, @BRANCH_NAME , @BUDGET_YEAR , @BUDGET_LIMIT_AMT , @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12 WHILE @@fetch_status=0 BEGIN SET @INDEX = @INDEX +1 DECLARE @l_BRANCH_ID VARCHAR(20); DECLARE @l_DEP_ID VARCHAR(20); SET @l_BRANCH_ID = (SELECT TOP 1 BRANCH_ID FROM CM_BRANCH WHERE BRANCH_CODE = @BRANCH_CODE) IF(ISNULL(@l_BRANCH_ID,'') = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlBudgetLimitYearhDT; DEALLOCATE XmlBudgetLimitYearhDT; SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Đơn vị ' + @BRANCH_CODE + N' không có trong hệ thống' AS ErrorDesc RETURN '-1' END -- NEU DA TON TAI NGAN SACH THI CHI UPDATE IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR)) BEGIN IF(ISNULL(@M1, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M1 = @M1 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M2, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M2 = @M2 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M3, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M3 = @M3 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M4, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M4 = @M4 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M5, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M5 = @M5 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M6, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M6 = @M6 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M7, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M7 = @M7 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M8, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M8 = @M8 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M9, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M9 = @M9 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M10, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M10 = @M10 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M11, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M11 = @M11 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@M12, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M12 = @M12 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF(ISNULL(@BUDGET_LIMIT_AMT, 0) > 0) BEGIN UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET BUDGET_LIMIT_AMT = ISNULL(@BUDGET_LIMIT_AMT, 0) WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR END IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlBudgetLimitYearhDT INTO @BRANCH_CODE, @BRANCH_NAME , @BUDGET_YEAR, @BUDGET_LIMIT_AMT , @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12 END ELSE BEGIN -- Tự động sinh mã code DECLARE @BUDGET_YEAR_LIMIT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_YEAR', @BUDGET_YEAR_LIMIT_ID OUT; IF @BUDGET_YEAR_LIMIT_ID='' OR @BUDGET_YEAR_LIMIT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT(BUDGET_YEAR_LIMIT_ID, GD_ID, BUDGET_TYPE, BRANCH_TYPE, BUDGET_YEAR, BRANCH_ID, DEP_ID, 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) VALUES(@BUDGET_YEAR_LIMIT_ID, @p_GD_ID, 'nam', @p_BRANCH_TYPE, @BUDGET_YEAR, @l_BRANCH_ID, NULL, ISNULL(@BUDGET_LIMIT_AMT, 0), @M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlBudgetLimitYearhDT INTO @BRANCH_CODE, @BRANCH_NAME , @BUDGET_YEAR, @BUDGET_LIMIT_AMT , @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12 END END CLOSE XmlBudgetLimitYearhDT; DEALLOCATE XmlBudgetLimitYearhDT 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'Altering [dbo].[RET_MASTER_Upd]' GO ALTER PROCEDURE [dbo].[RET_MASTER_Upd] @p_RET_ID varchar(15) = null , @p_ASSET_ID VARCHAR(100) = NULL, @P_ASSET_CODE VARCHAR(100) = NULL, @P_OWNER NVARCHAR(500) = NULL, @p_LENGTH DECIMAL(18,2) = NULL, @p_WIDTH DECIMAL(18,2) = NULL, @p_FLOORS int = NULL, @p_CURRENT_STATE nvarchar(100) = NULL, @p_RET_TYPE varchar(15) = NULL, @p_STATUS varchar(15) = NULL, @p_LAND_SQUARE DECIMAL(18,2) = NULL, @p_ADDR nvarchar(1000) = NULL, -- hungdv hieu chinh yeu cau anh toi 250520 @p_CONSTRUCT_SQUARE DECIMAL(18,2) = NULL, @p_TOTAL_SQUARE DECIMAL(18,2) = NULL, @p_BOUNDARY nvarchar(100) = NULL, @p_HOUSEDES nvarchar(100) = NULL, @p_PURPOSE_IN_USE nvarchar(500) = NULL, @P_W_USE_CON NVARCHAR(100) = NULL, @p_USE_STATUS varchar(15) = NULL, @p_CONST_STATUS varchar(15) = NULL, @p_OWNER_TYPE varchar(15) = NULL, @p_USE_PERIOD int = NULL, @p_PERSON_HOLDER nvarchar(1000) = NULL, @p_REASON nvarchar(1000) = 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_BUY_DT VARCHAR(20) = NULL, @p_USE_FORM VARCHAR(1), @p_USE_FORM_DETAIL nvarchar(MAX), @p_USE_SOURCE nvarchar(MAX), @p_USE_PERIOD_DT VARCHAR(20), @p_OWNER_TYPE_DETAIL NVARCHAR(MAX), @p_RET_SAVE_CODE VARCHAR(100), @p_BRANCH_USE nvarchar(500), @p_RET_TAX_SCHEDULE XML = NULL, @p_RET_REPAIR_SUGGEST XML = NULL, @p_RET_REPAIR_REAL XML = NULL, @p_FLUCTUATING_DT varchar(20) = null, @p_REASON_FLUCTUATING nvarchar(max) = null, ----------------BAODNQ 16/2/2022: Thêm cột vào bảng RET_MASTER--------- @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL, @p_SIGN_USER VARCHAR(15) = NULL, @p_SIGN_DT VARCHAR(20) = NULL, @p_RET_FORM VARCHAR(15) = NULL, @p_BRANCH_USE_ID VARCHAR(15) = NULL, @p_ASSET_NAME NVARCHAR(1000) = NULL, @p_ASSET_DESC NVARCHAR(MAX) = NULL, @p_BUY_PRICE DECIMAL(18,2) = NULL, @p_BRANCH_CREATE VARCHAR(15) = NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM RET_MASTER WHERE RET_ID = @p_RET_ID)) SET @ERRORSYS = 'RETM-00001' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' RET_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END IF(EXISTS(SELECT * FROM RET_MASTER WHERE RET_ID = @p_RET_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U')) BEGIN SELECT '-1' AS Result, '' RET_ID, N'Không thể chỉnh sửa. Thông tin bất động sản đã được gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT RET_ID FROM RET_MASTER WHERE RET_ID = @p_RET_ID AND MAKER_ID <> @p_MAKER_ID)) BEGIN SELECT '-1' AS Result, '' RET_ID, N'Không thể chỉnh sửa. Chỉ có người tạo thông tin bất động sản: ' +@p_ASSET_NAME+ N' mới được chỉnh sửa. Bạn không phải là người tạo thông tin bất động sản này' ErrorDesc RETURN '-1' END DECLARE @p_RET_TAX_ROW_NO INT = 0, @p_RET_REPAIR_SUG_ROW_NO INT = 0, @p_RET_REPAIR_REAL_ROW_NO INT = 0 Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_RET_TAX_SCHEDULE DECLARE RetTaxSchedule CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/RetTaxSchedule',2) WITH ( TAX_SCHEDULE_ID VARCHAR(15), REQ_PAY_ID VARCHAR(15), FRM_DATE varchar(30), TO_DATE varchar(30), TOTAL_AMT decimal ) OPEN RetTaxSchedule Exec sp_xml_preparedocument @hdoc Output,@p_RET_REPAIR_SUGGEST DECLARE RetRepairSuggest CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/RetRepairSuggest',2) WITH ( RET_SUG_REPAIR_ID VARCHAR(15), REQ_ID varchar(15), REPAIR_SUG_DT varchar(30) , BRANCH_ID varchar(15) , BRANCH_SUGGEST nvarchar(4000), TOTAL_AMT_REPAIR decimal(18,2), TOTAL_AMT_CONSTRUCT DECIMAL(18,2), USER_SUGGEST varchar(15), REPAIR_REASON nvarchar(4000), REPAIR_CONTENT nvarchar(4000) ) OPEN RetRepairSuggest Exec sp_xml_preparedocument @hdoc Output,@p_RET_REPAIR_REAL DECLARE RetRepairReal CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/RetRepairReal',2) WITH ( RET_REPAIR_REAL_ID varchar(15), REQ_PAY_ID varchar(15), REPAIR_DT varchar(30) , BRANCH_REPAIR nvarchar(4000), TOTAL_AMT_REPAIR decimal(18,2), TOTAL_AMT_CONSTRUCT DECIMAL(18,2), REPAIR_CONTENT_REAL nvarchar(4000), NOTES nvarchar(4000) ) OPEN RetRepairReal BEGIN TRANSACTION IF(EXISTS (SELECT * FROM RET_MASTER WHERE RET_ID = @p_RET_ID AND AUTH_STATUS = 'A')) BEGIN --------------------CẬP NHẬT LẠI SAU KHI ĐÃ DUYỆT---------------- SET @p_CHECKER_ID = NULL SET @p_APPROVE_DT = NULL SET @p_SEND_APPR_DT = NULL SET @p_SIGN_DT = NULL END UPDATE RET_MASTER SET [BUY_DT] = CONVERT(DATETIME, @P_BUY_DT, 103), [ASSET_ID] = @p_ASSET_ID, [ASSET_CODE] = @P_ASSET_CODE, [OWNER] = @P_OWNER, [LENGTH] = @p_LENGTH, [WIDTH] = @p_WIDTH, [FLOORS] = @p_FLOORS, [CURRENT_STATE] = @p_CURRENT_STATE, [RET_TYPE] = @p_RET_TYPE, [STATUS] = @p_STATUS, [LAND_SQUARE] = @p_LAND_SQUARE, [CONSTRUCT_SQUARE] = @p_CONSTRUCT_SQUARE, [TOTAL_SQUARE] = @p_TOTAL_SQUARE, [BOUNDARY] = @p_BOUNDARY, [HOUSEDES] = @p_HOUSEDES, [PURPOSE_IN_USE] = @p_PURPOSE_IN_USE, [W_USE_CON] = @P_W_USE_CON, [USE_STATUS] = @p_USE_STATUS, [CONST_STATUS] = @p_CONST_STATUS, [OWNER_TYPE] = @p_OWNER_TYPE, [USE_PERIOD] = @p_USE_PERIOD, [PERSON_HOLDER] = @p_PERSON_HOLDER, [NOTES] = @p_NOTES, [REASON] = @p_REASON, [RECORD_STATUS] = @p_RECORD_STATUS, [AUTH_STATUS] = @p_AUTH_STATUS, ------Store Upd ko cập nhật lại MAKER_ID--------- --[MAKER_ID] = @p_MAKER_ID, [CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103), [CHECKER_ID] = @p_CHECKER_ID, [APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103), [USE_FORM] = @p_USE_FORM, [USE_FORM_DETAIL] = @p_USE_FORM_DETAIL, [USE_SOURCE] = @p_USE_SOURCE, [USE_PERIOD_DT] = CONVERT(DATETIME, @p_USE_PERIOD_DT, 103), [OWNER_TYPE_DETAIL] = @p_OWNER_TYPE_DETAIL, [RET_SAVE_CODE] = @p_RET_SAVE_CODE, [BRANCH_USE] = @p_BRANCH_USE, ADDR = @p_ADDR, -- hungdv hieu chinh yeu cau anh toi 250520 [FLUCTUATING_DT] = CONVERT(DATETIME, @p_FLUCTUATING_DT, 103), [REASON_FLUCTUATING] = @p_REASON_FLUCTUATING, ----------------BAODNQ 16/2/2022: Thêm cột vào bảng RET_MASTER--------- [IS_SEND_APPR] = @p_IS_SEND_APPR, [SEND_APPR_DT] = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), [SIGN_USER] = @p_SIGN_USER, [SIGN_DT] = CONVERT(DATETIME, @p_SIGN_DT, 103), [RET_FORM] = @p_RET_FORM, [BRANCH_USE_ID] = @p_BRANCH_USE_ID, [ASS_NAME] = @p_ASSET_NAME, [DESCRIPTION] = @p_ASSET_DESC, [ASSET_PRICE] = @p_BUY_PRICE, [BRANCH_CREATE] = @p_BRANCH_CREATE WHERE RET_ID = @p_RET_ID; IF @@Error <> 0 GOTO ABORT --UPDATE DETAIL DECLARE @TAX_SCHEDULE_ID VARCHAR(15), @RET_SUG_REPAIR_ID VARCHAR(15), @RET_REPAIR_REAL_ID varchar(15), @d_REQ_PAY_ID VARCHAR(15), @d_FRM_DATE varchar(30), @d_TO_DATE varchar(30), @d_TOTAL_AMT decimal, @RET_ID varchar(15), @REQ_ID varchar(15), @REPAIR_SUG_DT varchar(30), @BRANCH_ID varchar(15), @REPAIR_DT varchar(20), @BRANCH_REPAIR nvarchar(4000), @REPAIR_CONTENT_REAL nvarchar(4000), @NOTES nvarchar(4000), @BRANCH_SUGGEST nvarchar(4000), @TOTAL_AMT decimal, @USER_SUGGEST varchar(15), @REPAIR_REASON nvarchar(4000), @REPAIR_CONTENT nvarchar(4000), @d_TOTAL_AMT_REPAIR DECIMAL(18,2), @d_TOTAL_AMT_CONSTRUCT DECIMAL(18,2) --UPDATE ACCESSORY DETAIL DELETE FROM RET_TAX_SCHEDULE WHERE RET_ID = @p_RET_ID FETCH NEXT FROM RetTaxSchedule INTO @TAX_SCHEDULE_ID, @d_REQ_PAY_ID,@d_FRM_DATE,@d_TO_DATE,@d_TOTAL_AMT WHILE @@FETCH_STATUS = 0 BEGIN print LEN(@TAX_SCHEDULE_ID) SET @p_RET_TAX_ROW_NO = @p_RET_TAX_ROW_NO + 1 ---------------PDN thanh toán chặn--------------- ------TH KO CÓ PDN thanh toán------ IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @d_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RET_ID, N'Lưới thông tin quản lý định kỳ thuế nhà đất, dòng ' + CONVERT(VARCHAR, @p_RET_TAX_ROW_NO) + N'Phiếu đề nghị thanh toán không tồn tại trong hệ thống' ErrorDesc RETURN '-1' END ---------TH PDN thanh toán CHƯA ĐƯỢC DUYỆT--------- IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @d_REQ_PAY_ID AND AUTH_STATUS_KT = 'A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RET_ID, N'Lưới thông tin quản lý định kỳ thuế nhà đất, dòng ' + CONVERT(VARCHAR, @p_RET_TAX_ROW_NO) + N'Phiếu đề nghị thanh toán chưa được duyệt' ErrorDesc RETURN '-1' END IF(CONVERT(DATETIME, @d_TO_DATE,103) <= CONVERT(DATETIME, @d_FRM_DATE, 103)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RET_ID, N'Lưới thông tin quản lý định kỳ thuế nhà đất, dòng ' + CONVERT(VARCHAR, @p_RET_TAX_ROW_NO) + N': Thời gian kết thúc đóng thuế phải lớn hơn thời gian bắt đầu đóng thuế' ErrorDesc RETURN '-1' END IF(LEN(@TAX_SCHEDULE_ID) = 0) BEGIN EXEC SYS_CodeMasters_Gen 'RET_TAX_SCHEDULE', @TAX_SCHEDULE_ID out IF @TAX_SCHEDULE_ID ='' OR @TAX_SCHEDULE_ID IS NULL GOTO ABORT END PRINT @TAX_SCHEDULE_ID INSERT INTO RET_TAX_SCHEDULE([TAX_SCHEDULE_ID],[RET_ID],[REQ_PAY_ID],[FRM_DATE],[TO_DATE],[TOTAL_AMT],[AUTH_STATUS],[RECORD_STATUS],[MAKER_ID]) VALUES(@TAX_SCHEDULE_ID,@p_RET_ID ,@d_REQ_PAY_ID , CONVERT(DATETIME, @d_FRM_DATE, 103) ,CONVERT(DATETIME, @d_TO_DATE, 103) ,@d_TOTAL_AMT ,@p_AUTH_STATUS,@p_RECORD_STATUS ,@p_MAKER_ID ) IF @@ERROR <> '' GOTO ABORT FETCH NEXT FROM RetTaxSchedule INTO @TAX_SCHEDULE_ID, @d_REQ_PAY_ID,@d_FRM_DATE,@d_TO_DATE,@d_TOTAL_AMT END PRINT 'RetTaxSchedule' --UPDATE RetRepairSuggest DELETE FROM RET_REPAIR_SUGGEST WHERE RET_ID = @p_RET_ID FETCH NEXT FROM RetRepairSuggest INTO @RET_SUG_REPAIR_ID, @REQ_ID,@REPAIR_SUG_DT, @BRANCH_ID, @BRANCH_SUGGEST, @d_TOTAL_AMT_REPAIR, @d_TOTAL_AMT_CONSTRUCT, @USER_SUGGEST, @REPAIR_REASON, @REPAIR_CONTENT WHILE @@FETCH_STATUS = 0 BEGIN SET @p_RET_REPAIR_SUG_ROW_NO = @p_RET_REPAIR_SUG_ROW_NO + 1 ---------------TTCT chặn--------------- ------TH KO CÓ TTCT------ IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID = @REQ_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RET_ID, N'Lưới thông tin sửa chữa dự kiến, dòng ' +CONVERT(VARCHAR, @p_RET_REPAIR_SUG_ROW_NO)+ N'Tờ trình chủ trương không tồn tại trong hệ thống' ErrorDesc RETURN '-1' END ---------TH TTCT CHƯA ĐƯỢC DUYỆT--------- IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID = @REQ_ID AND PROCESS_ID = 'APPROVE')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RET_ID, N'Lưới thông tin sửa chữa dự kiến, dòng ' +CONVERT(VARCHAR, @p_RET_REPAIR_SUG_ROW_NO)+ N'Tờ trình chủ trương chưa được duyệt' ErrorDesc RETURN '-1' END DECLARE @l_RET_SUG_REPAIR_ID VARCHAR(15) IF LEN(@RET_SUG_REPAIR_ID ) = 0 BEGIN EXEC SYS_CodeMasters_Gen 'RET_REPAIR_SUGGEST', @RET_SUG_REPAIR_ID out PRINT @RET_SUG_REPAIR_ID IF @RET_SUG_REPAIR_ID ='' OR @RET_SUG_REPAIR_ID IS NULL GOTO ABORT END INSERT INTO RET_REPAIR_SUGGEST ([RET_SUG_REPAIR_ID],[RET_ID],[REQ_ID],[REPAIR_SUG_DT],[BRANCH_ID],[BRANCH_SUGGEST], [TOTAL_AMT_REPAIR],[TOTAL_AMT_CONSTRUCT],[USER_SUGGEST],[REPAIR_REASON],[REPAIR_CONTENT],[AUTH_STATUS],[RECORD_STATUS], [MAKER_ID]) VALUES (@RET_SUG_REPAIR_ID,@p_RET_ID ,@REQ_ID ,CONVERT(DATETIME, @REPAIR_SUG_DT, 103) ,@BRANCH_ID , @BRANCH_SUGGEST,@d_TOTAL_AMT_REPAIR,@d_TOTAL_AMT_CONSTRUCT,@USER_SUGGEST,@REPAIR_REASON,@REPAIR_CONTENT ,@p_AUTH_STATUS , @p_RECORD_STATUS ,@p_MAKER_ID ) IF @@ERROR <> '' GOTO ABORT FETCH NEXT FROM RetRepairSuggest INTO @RET_SUG_REPAIR_ID, @REQ_ID, @REPAIR_SUG_DT, @BRANCH_ID, @BRANCH_SUGGEST, @d_TOTAL_AMT_REPAIR, @d_TOTAL_AMT_CONSTRUCT, @USER_SUGGEST, @REPAIR_REASON, @REPAIR_CONTENT END --UPDATE RetRepairReal DELETE FROM RET_REPAIR_REAL WHERE RET_ID = @p_RET_ID FETCH NEXT FROM RetRepairReal INTO @RET_REPAIR_REAL_ID, @d_REQ_PAY_ID, @REPAIR_DT, @BRANCH_REPAIR, @d_TOTAL_AMT_REPAIR, @d_TOTAL_AMT_CONSTRUCT, @REPAIR_CONTENT_REAL, @NOTES WHILE @@FETCH_STATUS = 0 BEGIN SET @p_RET_REPAIR_REAL_ROW_NO = @p_RET_REPAIR_REAL_ROW_NO + 1 ---------------PDN thanh toán chặn--------------- ------TH KO CÓ PDN thanh toán------ IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @d_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RET_ID, N'Lưới thông tin sửa chữa thực tế, dòng ' +CONVERT(VARCHAR, @p_RET_REPAIR_REAL_ROW_NO)+ N'Phiếu đề nghị thanh toán không tồn tại trong hệ thống' ErrorDesc RETURN '-1' END ---------TH PDN thanh toán CHƯA ĐƯỢC DUYỆT--------- IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @d_REQ_PAY_ID AND AUTH_STATUS_KT = 'A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RET_ID, N'Lưới thông tin sửa chữa thực tế, dòng ' +CONVERT(VARCHAR, @p_RET_REPAIR_REAL_ROW_NO)+ N'Phiếu đề nghị thanh toán chưa được duyệt' ErrorDesc RETURN '-1' END DECLARE @l_RET_REPAIR_REAL_ID VARCHAR(15) IF LEN(@RET_REPAIR_REAL_ID ) = 0 BEGIN EXEC SYS_CodeMasters_Gen 'RET_REPAIR_REAL', @RET_REPAIR_REAL_ID out PRINT @RET_REPAIR_REAL_ID IF @RET_REPAIR_REAL_ID ='' OR @RET_REPAIR_REAL_ID IS NULL GOTO ABORT END INSERT INTO RET_REPAIR_REAL ([RET_REPAIR_REAL_ID],[RET_ID],[REQ_PAY_ID],[REPAIR_DT],[BRANCH_REPAIR],[TOTAL_AMT_REPAIR], [TOTAL_AMT_CONSTRUCT],[REPAIR_CONTENT_REAL],[NOTES] , [AUTH_STATUS],[RECORD_STATUS],[MAKER_ID]) VALUES (@RET_REPAIR_REAL_ID,@p_RET_ID,@d_REQ_PAY_ID ,CONVERT(DATETIME, @REPAIR_DT, 103) , @BRANCH_REPAIR ,@d_TOTAL_AMT_REPAIR,@d_TOTAL_AMT_CONSTRUCT,@REPAIR_CONTENT_REAL,@NOTES ,@p_AUTH_STATUS ,@p_RECORD_STATUS , @p_MAKER_ID ) IF @@ERROR <> '' GOTO ABORT FETCH NEXT FROM RetRepairReal INTO @RET_REPAIR_REAL_ID, @d_REQ_PAY_ID, @REPAIR_DT, @BRANCH_REPAIR, @d_TOTAL_AMT_REPAIR, @d_TOTAL_AMT_CONSTRUCT, @REPAIR_CONTENT_REAL, @NOTES END CLOSE RetTaxSchedule DEALLOCATE RetTaxSchedule CLOSE RetRepairSuggest DEALLOCATE RetRepairSuggest CLOSE RetRepairReal DEALLOCATE RetRepairReal ---------------BAODNQ : TH NGƯỜI TẠO CẬP NHẬT NHIỀU LẦN THÌ CHỈ LƯU LỊCH SỬ XỬ LÝ CẬP NHẬT GẦN NHẤT---------------- IF((SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID = @p_RET_ID ORDER BY APPROVE_DT DESC) = 'UPDATE') BEGIN WITH RESULT AS( SELECT TOP 1 * FROM PL_PROCESS WHERE REQ_ID = @p_RET_ID ORDER BY APPROVE_DT DESC ) DELETE FROM RESULT END --------BAODNQ 16/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_RET_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Cập nhật thông tin bất động sản thành công' , N'Cập nhật thông tin bất động sản' ) IF @@ERROR <> 0 GOTO ABORT ---------BAODNQ 15/3/2022: Lấy tên BDS----- DECLARE @p_RET_NAME NVARCHAR(MAX) =( SELECT B.ASSET_NAME FROM RET_MASTER A LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID WHERE A.RET_ID = @p_RET_ID ) COMMIT TRANSACTION SELECT '0' as Result, @p_RET_ID RET_ID, @p_RET_NAME RET_NAME,'' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE RetTaxSchedule DEALLOCATE RetTaxSchedule CLOSE RetRepairSuggest DEALLOCATE RetRepairSuggest CLOSE RetRepairReal DEALLOCATE RetRepairReal ROLLBACK TRANSACTION SELECT '-1' as Result, '' RET_ID, '' RET_NAME,'' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_DOC_Del]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_Del] @REQ_ID varchar(15), @p_USER_LOGIN VARCHAR(50) AS DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID= @REQ_ID)) SET @ERRORSYS = 'REQ-00002' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END BEGIN TRANSACTION IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@REQ_ID AND (AUTH_STATUS NOT IN('E','R') AND AUTH_STATUS IS NOT NULL AND AUTH_STATUS <> '')) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Bạn chỉ được phép xóa khi phiếu đang ở tình trạng lưu nháp hoặc từ chối' ErrorDesc RETURN '-1' END IF((SELECT AUTH_STATUS FROM TR_REQUEST_DOC WHERE REQ_ID= @REQ_ID) = 'A') BEGIN UPDATE TR_REQUEST_DOC SET RECORD_STATUS = '0' WHERE REQ_ID= @REQ_ID IF @@Error <> 0 GOTO ABORT --UPDATE DETAIL UPDATE TR_REQUEST_DOC_DT SET RECORD_STATUS = '0' WHERE REQ_DOC_ID = @REQ_ID END ELSE BEGIN Delete FROM TR_REQUEST_DOC WHERE REQ_ID= @REQ_ID delete FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@REQ_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'Altering [dbo].[TR_REQ_PAY_TRANSFER_Upd]' GO ALTER PROCEDURE [dbo].[TR_REQ_PAY_TRANSFER_Upd] @p_TRANSFER_MAKER nvarchar(50) = NULL, @p_TRANSFER_DT varchar(25) = NULL, @p_TRASFER_USER_RECIVE varchar(15) = NULL, @p_TRANSFER_TYPE varchar(15) = NULL, @p_XMP_TEMP XML = NULL AS --Validation is here /* */ DECLARE @LIST_REQ_PAY_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_ID varchar(15) , TRANSFER_MAKER nvarchar(15) , TRASFER_USER_RECIVE 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_ID VARCHAR(15), @TRANSFER_MAKER VARCHAR(15),@TRASFER_USER_RECIVE VARCHAR(15),@TRANSFER_ACTION VARCHAR(15) DECLARE @INDEX INT =0 FETCH NEXT FROM TransferData INTO @REQ_PAY_ID, @TRANSFER_MAKER, @TRASFER_USER_RECIVE,@TRANSFER_ACTION WHILE @@FETCH_STATUS = 0 BEGIN SET @PROCESS_ID ='3' SET @INDEX = @INDEX+1 -- BO SUNG NEU TO PDN TẠM ỨNG NẾU ĐÃ ĐƯỢC TRƯỞNG VĂN PHÒNG ĐIỀU PHỐI IF(EXISTS(SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@REQ_PAY_ID AND ISNULL(AUTH_STATUS, '') <> 'A')) BEGIN IF EXISTS (SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='TKTGD' AND REQ_ID =@REQ_PAY_ID AND STATUS ='C') BEGIN SET @PROCESS_ID ='1' UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_TGD_XL_TLNAME =@TRASFER_USER_RECIVE WHERE REQ_PAY_ID =@REQ_PAY_ID END IF EXISTS (SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='TKHDQT' AND REQ_ID =@REQ_PAY_ID AND STATUS ='C') BEGIN SET @PROCESS_ID ='2' UPDATE TR_REQ_ADVANCE_PAYMENT SET TK_HDQT_XL_TLNAME =@TRASFER_USER_RECIVE WHERE REQ_PAY_ID =@REQ_PAY_ID END ---- IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@REQ_PAY_ID AND STATUS ='P' AND ROLE_USER IN ('TKTGD') AND @ROLE_USER ='TKTGD')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được trưởng văn phòng phê duyệt. Vui lòng không thực hiện điều phối' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@REQ_PAY_ID AND STATUS ='P' AND ROLE_USER IN ('TKHDQT') AND @ROLE_USER ='TKHDQT')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được trưởng văn phòng phê duyệt. Vui lòng không thực hiện điều phối' ErrorDesc RETURN '-1' END END IF(EXISTS(SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@REQ_PAY_ID AND AUTH_STATUS = 'A')) BEGIN IF (EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@p_TRANSFER_MAKER AND RoleName IN ('TKTGD','TKHDQT'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được các cấp phê duyệt hạn mức hoàn tất. Phiếu đang chờ bộ phận kế toán xử lý, vui lòng không thực hiện điều phối' ErrorDesc RETURN '-1' END END -- doanptt 12/04/2022 IF(@TRANSFER_MAKER = @TRASFER_USER_RECIVE) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_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_ID -- DOANPTT 291222: THEM LOG KPI DELETE FROM TR_REQ_KPI WHERE REQ_ID = @REQ_PAY_ID AND ISNULL(MAKER_ID_KT, '') = '' -- KIEM TRA NEU CHUA CHON NHAN VIEN XU LY SE BAO LOI IF(@TRASFER_USER_RECIVE ='' OR @TRASFER_USER_RECIVE IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_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_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='S')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứ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 WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='S')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_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 WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_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 =@TRASFER_USER_RECIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_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 =@TRASFER_USER_RECIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_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 =@TRASFER_USER_RECIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_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 =@TRASFER_USER_RECIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_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 TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>'')) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán cập nhật thông tin' ErrorDesc -- RETURN '-1' --END --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>'')) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán cập nhật thông tin' ErrorDesc -- RETURN '-1' --END --IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL)) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đã được kế toán cập nhật thông tin' ErrorDesc -- RETURN '-1' --END IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_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_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_ID) SET @NEXT_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) +1 SET @PREV_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) -1 IF(@TRANSFER_ACTION ='XL') BEGIN --UPDATE TR_REQ_ADVANCE_PAYMENT SET --AUTH_STATUS_KT ='U', --TRANSFER_DT = CONVERT(DATE,GETDATE(),103), --TRANSFER_MAKER = @TRANSFER_MAKER, --TRASFER_USER_RECIVE = @TRASFER_USER_RECIVE --WHERE REQ_PAY_ID =@REQ_PAY_ID IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_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_ID,@PROCESS_ID,@TRASFER_USER_RECIVE,'XL',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1',GETDATE()) INSERT INTO PL_PROCESS VALUES (@REQ_PAY_ID,'TRANSF',@p_TRANSFER_MAKER, GETDATE(),N'Điều phối về nhân viên ' +@TRASFER_USER_RECIVE,N'Điều phối thanh toán/ tạm ứng') -- DOANPTT 291222: THEM LOG KPI INSERT INTO TR_REQ_KPI(KPI_TYPE, REQ_TYPE, REQ_STATUS, REQ_ID, REQ_REASON, CORE_NOTE, AUTH_STATUS_KT, TRANSFER_DT, MAKER_ID_KT, CREATE_DT_KT, CHECKER_ID_KT, APPROVE_DT_KT) VALUES ('PAY', 'TR_REQ_PAYMENT', NULL, @REQ_PAY_ID, NULL, NULL, 'U', GETDATE(), @TRASFER_USER_RECIVE, NULL, @p_TRANSFER_MAKER, NULL ) END ELSE BEGIN UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB=@TRANSFER_ACTION,TLNAME = @TRASFER_USER_RECIVE WHERE REQ_ID =@REQ_PAY_ID AND TYPE_JOB =@TRANSFER_ACTION END -- UPDATE BUOC TRUOC DO VE P --UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND LEVEL_JOB =@MAX_LEVEL END ELSE BEGIN IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_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_ID,@PROCESS_ID,@TRASFER_USER_RECIVE,'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_ID AND TLNAME =@TRASFER_USER_RECIVE END -- UPDATE BUOC TRUOC DO VE P --UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND LEVEL_JOB =@MAX_LEVEL END --LUCTV - 06042021 BO SUNG KHI DIEU PHOI XONG CAP NHAT NGAY DIEU PHOI VAO BANG MASTER THANH TOAN / TAM UNG IF(@p_TRANSFER_TYPE='A') BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='U',TRANSFER_DT = GETDATE() WHERE REQ_PAY_ID =@REQ_PAY_ID END ELSE BEGIN UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='U',TRANSFER_DT = GETDATE() WHERE REQ_PAY_ID =@REQ_PAY_ID END SET @LIST_REQ_PAY_ID = @LIST_REQ_PAY_ID+','+@REQ_PAY_ID IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM TransferData INTO @REQ_PAY_ID, @TRANSFER_MAKER, @TRASFER_USER_RECIVE,@TRANSFER_ACTION END CLOSE TransferData DEALLOCATE TransferData IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @LIST_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION CLOSE TransferData DEALLOCATE TransferData SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[RET_REPAIR_App]' GO /* [dbo].[RET_REPAIR_App] '','','' */ ALTER PROCEDURE [dbo].[RET_REPAIR_App] @P_RP_ID VARCHAR(15), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) = NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM RET_REPAIR WHERE RP_ID = @P_RP_ID)) SET @ERRORSYS = 'RETR-00001' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '-1' END IF(EXISTS (SELECT * FROM RET_REPAIR WHERE RP_ID = @P_RP_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' AS Result, N'Phê duyệt thất bại. Thông tin sửa chữa BĐS đang được trả về' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM RET_REPAIR WHERE RP_ID = @P_RP_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' AS Result, N'Phê duyệt thất bại. Thông tin sửa chữa BĐS đã được phê duyệt trước đó' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT RP_ID FROM RET_REPAIR WHERE RP_ID = @P_RP_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' as Result, '' RET_ID, N'Phê duyệt thất bại. Thông tin sửa chữa BĐS đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS( SELECT RP_ID FROM RET_REPAIR WHERE RP_ID = @P_RP_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U' AND (SIGN_USER IS NOT NULL AND SIGN_USER <> '') AND (SIGN_DT IS NULL OR SIGN_DT = '') )) BEGIN SELECT '-1' as Result, '' RET_ID, N'Phê duyệt thất bại. Thông tin sửa chữa BĐS đang chờ cấp phê duyệt trung gian xác nhận. Vui lòng đợi cấp phê duyệt trung gian xác nhận' ErrorDesc RETURN '-1' END BEGIN TRANSACTION UPDATE RET_REPAIR SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE RP_ID = @P_RP_ID IF @@Error <> 0 GOTO ABORT --------BAODNQ 15/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @P_RP_ID, 'APPROVE', @P_CHECKER_ID, GETDATE(), N'Trưởng đơn vị phê duyệt thành công' , N'Trưởng đơn vị phê duyệt' ) 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'Altering [dbo].[REAL_ESTATE_L_C_Upd]' GO ALTER PROCEDURE [dbo].[REAL_ESTATE_L_C_Upd] @p_RET_L_C_ID varchar(15) = null, @p_RET_NAME nvarchar(MAX) = null, @p_RET_ADDR nvarchar(MAX) = null, @p_RET_DESC nvarchar(MAX) = null, @p_REASON nvarchar(500) = null, @p_PROC_EXE nvarchar(500) = null, @p_PROC_NEXT nvarchar(500) = null, @p_BRANCH_ID varchar(15) = NULL, @p_BRANCH_USE Nvarchar(500) = NULL, @p_BRANCH_MANAGE varchar(15) = NULL, @p_BRANCH_CREATE nvarchar(15) = NULL, @p_AREA nvarchar(500) = NULL, @p_END_DT VARCHAR(20) = null, @p_BUY_DT varchar(20) = 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_CONTRUCT_AREA nvarchar(500) = NULL, --------BAODNQ 15/2/2022: Thêm cột vào bảng REAL_ESTATE_L_C------ @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL, @p_SIGN_USER VARCHAR(15) = NULL, @p_SIGN_DT VARCHAR(20) = NULL, @p_RET_ID VARCHAR(15) = NULL, @p_ASSET_PRICE DECIMAL(18,2) = NULL, @p_LAND_USE_RIGHTS_PRICE DECIMAL(18,2) = NULL, @p_MARKET_PRICE DECIMAL(18,2) = NULL, @p_FINISH_DT_REAL VARCHAR(20) = NULL AS DECLARE @l_ERROR_MESSAGE VARCHAR(1000) BEGIN TRANSACTION IF(@p_RET_L_C_ID IS NULL) BEGIN SET @l_ERROR_MESSAGE = 'ID IS NULL' GOTO ABORT END IF(EXISTS(SELECT * FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @p_RET_L_C_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U')) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result, '' RET_ID, N'Không thể chỉnh sửa. Thông tin BĐS đang hoàn thiện thủ tục pháp lý đã được gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END DECLARE @p_RET_MASTER_NAME NVARCHAR(1000) = (SELECT TOP 1 ASS_NAME FROM RET_MASTER WHERE RET_ID = @p_RET_ID) IF(EXISTS(SELECT RET_L_C_ID FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @p_RET_L_C_ID AND MAKER_ID <> @p_MAKER_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result, '' RET_ID, N'Không thể chỉnh sửa. Chỉ có người tạo thông tin BĐS đang hoàn thiện thủ tục pháp lý: ' +@p_RET_MASTER_NAME+ N' mới được phép chỉnh sửa.' + N' Bạn không phải là người tạo thông tin BĐS đang hoàn thiện thủ tục pháp lý này' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @p_RET_L_C_ID AND AUTH_STATUS = 'A')) BEGIN --------------------CẬP NHẬT LẠI SAU KHI ĐÃ DUYỆT---------------- SET @p_CHECKER_ID = NULL SET @p_APPROVE_DT = NULL SET @p_SEND_APPR_DT = NULL SET @p_SIGN_DT = NULL END -- UPDATE UPDATE REAL_ESTATE_L_C SET RET_NAME=@p_RET_NAME, RET_ADDR=@p_RET_ADDR, RET_DESC=@p_RET_DESC, REASON=@p_REASON, PROC_EXE=@p_PROC_EXE, PROC_NEXT=@p_PROC_NEXT, END_DT=CONVERT(DATETIME, @p_END_DT, 103), BRANCH_CREATE = @p_BRANCH_CREATE, BRANCH_ID = @p_BRANCH_ID, NOTES=@p_NOTES, RECORD_STATUS=@p_RECORD_STATUS, AUTH_STATUS=@p_AUTH_STATUS, ------Store Upd ko cập nhật lại MAKER_ID--------- --MAKER_ID=@p_MAKER_ID, BUY_DT = CONVERT(DATETIME, @p_BUY_DT, 103), CREATE_DT=CONVERT(DATETIME, @p_CREATE_DT, 103), CHECKER_ID=@p_CHECKER_ID, APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103), BRANCH_USE = @p_BRANCH_USE, BRANCH_MANAGE = @p_BRANCH_MANAGE, AREA = @p_AREA, CONTRUCT_AREA = @p_CONTRUCT_AREA, --------BAODNQ 15/2/2022: Thêm cột vào bảng REAL_ESTATE_L_C------ IS_SEND_APPR = @p_IS_SEND_APPR, SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), SIGN_USER = @p_SIGN_USER, SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103), RET_ID = @p_RET_ID, ASSET_PRICE = @p_ASSET_PRICE, LAND_USE_RIGHTS_PRICE = @p_LAND_USE_RIGHTS_PRICE, MARKET_PRICE = @p_MARKET_PRICE, FINISH_DT_REAL = CONVERT(DATETIME, @p_FINISH_DT_REAL, 103) WHERE RET_L_C_ID = @p_RET_L_C_ID IF @@Error <> 0 GOTO ABORT ---------------BAODNQ : TH NGƯỜI TẠO CẬP NHẬT NHIỀU LẦN THÌ CHỈ LƯU LỊCH SỬ XỬ LÝ CẬP NHẬT GẦN NHẤT---------------- IF((SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID = @p_RET_L_C_ID ORDER BY APPROVE_DT DESC) = 'UPDATE') BEGIN WITH RESULT AS( SELECT TOP 1 * FROM PL_PROCESS WHERE REQ_ID = @p_RET_L_C_ID ORDER BY APPROVE_DT DESC ) DELETE FROM RESULT END --------BAODNQ 15/2/2022: Insert vào bảng lưu lịch sử xử lý------ INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_RET_L_C_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Cập nhật thông tin BĐS đang hoàn thiện thủ tục pháp lý thành công' , N'Cập nhật thông tin BĐS đang hoàn thiện thủ tục pháp lý' ) IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_RET_L_C_ID RET_L_C_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN SELECT '-1' as Result, '' RET_L_C_ID, @l_ERROR_MESSAGE ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[SYS_GROUP_LIMIT_DT_Search]' GO ALTER PROCEDURE [dbo].[SYS_GROUP_LIMIT_DT_Search] @p_GROUP_LM_DTID varchar(15) = NULL, @p_GROUP_LM_ID varchar(15) = NULL, @P_GROUP_LM_DTCODE varchar(50) = NULL, @p_GROUP_DES nvarchar(max) = NULL, @p_ROLE_ID varchar(500) = NULL, @p_VALUE_LIMIT decimal(18) = NULL, @p_BRANCH_ID varchar(1) = NULL, @p_DVDM_ID varchar(15) = NULL, @p_GROUP_CODE varchar(50) = NULL, @p_TYPE varchar(15) = NULL, @p_TOP INT = null AS BEGIN -- PAGING BEGIN TRANSACTION IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*,B.GROUP_DES,B.GROUP_CODE,C.BRANCH_NAME,D.DVDM_NAME -- SELECT END FROM SYS_GROUP_LIMIT_DT A left join SYS_GROUP_LIMIT B on A.GROUP_LM_ID = B.GROUP_ID left join CM_BRANCH C on A.BRANCH_ID = C.BRANCH_ID left join CM_DVDM D on A.DVDM_ID = D.DVDM_ID WHERE 1 = 1 AND (B.TYPE LIKE '%' + @p_TYPE + '%' OR @p_TYPE IS NULL OR @p_TYPE = '') AND (B.GROUP_DES LIKE '%' + @p_GROUP_DES + '%' OR @p_GROUP_DES IS NULL OR @p_GROUP_DES = '') AND (B.GROUP_CODE LIKE '%' + @p_GROUP_CODE + '%' OR @p_GROUP_CODE IS NULL OR @p_GROUP_CODE = '') AND (A.GROUP_LM_DTID LIKE '%' + @p_GROUP_LM_DTID + '%' OR @p_GROUP_LM_DTID IS NULL OR @p_GROUP_LM_DTID = '') AND (A.GROUP_LM_DTCODE LIKE '%' + @P_GROUP_LM_DTCODE + '%' OR @P_GROUP_LM_DTCODE IS NULL OR @P_GROUP_LM_DTCODE = '') AND (A.GROUP_LM_ID LIKE '%' + @p_GROUP_LM_ID + '%' OR @p_GROUP_LM_ID IS NULL OR @p_GROUP_LM_ID = '') AND (A.ROLE_ID LIKE '%' + @p_ROLE_ID + '%' OR @p_ROLE_ID IS NULL OR @p_ROLE_ID = '') AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.DVDM_ID LIKE '%' + @p_DVDM_ID + '%' OR @p_DVDM_ID IS NULL OR @p_DVDM_ID = '') -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(10) A.*,B.GROUP_DES,B.GROUP_CODE,C.BRANCH_NAME,D.DVDM_NAME -- SELECT END FROM SYS_GROUP_LIMIT_DT A left join SYS_GROUP_LIMIT B on A.GROUP_LM_ID = B.GROUP_ID left join CM_BRANCH C on A.BRANCH_ID = C.BRANCH_ID left join CM_DVDM D on A.DVDM_ID = D.DVDM_ID WHERE 1 = 1 AND (B.TYPE LIKE '%' + @p_TYPE + '%' OR @p_TYPE IS NULL OR @p_TYPE = '') AND (A.GROUP_LM_DTID LIKE '%' + @p_GROUP_LM_DTID + '%' OR @p_GROUP_LM_DTID IS NULL OR @p_GROUP_LM_DTID = '') AND (B.GROUP_CODE LIKE '%' + @p_GROUP_CODE + '%' OR @p_GROUP_CODE IS NULL OR @p_GROUP_CODE = '') AND (A.GROUP_LM_DTCODE LIKE '%' + @P_GROUP_LM_DTCODE + '%' OR @P_GROUP_LM_DTCODE IS NULL OR @P_GROUP_LM_DTCODE = '') AND (B.GROUP_DES LIKE '%' + @p_GROUP_DES + '%' OR @p_GROUP_DES IS NULL OR @p_GROUP_DES = '') AND (A.GROUP_LM_ID LIKE '%' + @p_GROUP_LM_ID + '%' OR @p_GROUP_LM_ID IS NULL OR @p_GROUP_LM_ID = '') AND (A.ROLE_ID LIKE '%' + @p_ROLE_ID + '%' OR @p_ROLE_ID IS NULL OR @p_ROLE_ID = '') AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.DVDM_ID LIKE '%' + @p_DVDM_ID + '%' OR @p_DVDM_ID IS NULL OR @p_DVDM_ID = '') -- PAGING END COMMIT TRANSACTION END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_ACCOUNT_PAY_BYID]' GO ALTER PROC [dbo].[CM_ACCOUNT_PAY_BYID] @p_REF_ID VARCHAR(15) = NULL, @p_ACC_TYPE VARCHAR(50) = NULL AS BEGIN IF(@p_ACC_TYPE = 'ADV_PAY') BEGIN SELECT TOP 1 A.*,'' AS REF_CODE, '' AS REF_NAME, 'ADV_PAY' AS ACC_TYPE, A.ACC_NUM ACC_NO, B.CONTENT AS AUTH_STATUS_NAME FROM CM_ACCOUNT_PAY A LEFT JOIN CM_ALLCODE B ON A.AUTH_STATUS = B.CDVAL AND B.CDNAME = 'AUTH_STATUS' AND B.CDTYPE = 'AUTH_STATUS' WHERE A.ACC_NUM = @p_REF_ID END ELSE BEGIN SELECT TOP 1 A.*,'' AS REF_CODE, '' AS REF_NAME, CASE WHEN LEN(A.ACC_NO) > 9 THEN 'CASA' ELSE 'GL' END AS ACC_TYPE, B.CONTENT AS AUTH_STATUS_NAME FROM CM_ACCOUNT A LEFT JOIN CM_ALLCODE B ON A.AUTH_STATUS = B.CDVAL AND B.CDNAME = 'AUTH_STATUS' AND B.CDTYPE = 'AUTH_STATUS' WHERE A.ACC_NO = @p_REF_ID END END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_CONTRACT_MASTER_Ins]' GO /* INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_CONTRACT_MASTER','UMA','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('UMA','1','1') INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_CONTRACT_DT','UDT','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('UDT','1','1') INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_CONTACT','UCO','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('UCO','1','1') INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_UTIL_LOG','ULO','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('ULO','1','1') */ ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_Ins] @p_CONTRACT_ID varchar(15) = NULL, @p_BUILDING_ID varchar(15) = NULL, @p_CONTRACT_NO nvarchar(100) = NULL, @p_VERSION_NO int = NULL, @p_CUST_ID varchar(15) = NULL, @p_INPUT_DT VARCHAR(20) = NULL, @p_AMEND_DT VARCHAR(20) = NULL, @p_FROM_DT VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL, @p_CLOSE_DT VARCHAR(20) = NULL, @p_MONTHS int=0, @p_RENT_PRICE numeric(18) = NULL, @p_NOTES NVARCHAR(MAX)= NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_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_XML_TEMP xml = NULL, @p_VAT DECIMAL(18,0), @p_VAT_AMT DECIMAL(18,0), @p_DEPOSITS_AMT DECIMAL(18,0), @p_PAYMENT_SHEDULE NVARCHAR(500), @p_IS_SEND_APPR VARCHAR(15), @p_SEND_APPR_DT VARCHAR(20), @p_SIGN_USER VARCHAR(15), @p_SIGN_DT VARCHAR(15) AS ---BAODNQ 30/12/2021:Thêm cột vào bảng BUD_CONTRACT_MASTER------- IF (EXISTS ( SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_NO=@p_CONTRACT_NO AND VERSION_NO=@p_VERSION_NO)) BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Số hợp đồng này đã tồn tại' ErrorDesc RETURN '0' END -----------------BẮT BUỘC NHẬP LƯỚI THÔNG TIN CHI TIẾT HỢP ĐỒNG------------------------ DECLARE @p_BUD_CONTRACT_DT_XML_COUNT INT SET @p_BUD_CONTRACT_DT_XML_COUNT = ( SELECT @p_XML_TEMP.value('count(/Root/XmlData1)', 'INT') AS 'COUNT' ) PRINT @p_BUD_CONTRACT_DT_XML_COUNT IF(@p_BUD_CONTRACT_DT_XML_COUNT <= 0) BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Lưới thông tin chi tiết diện tích sử dụng nội bộ không được để trống' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @STT INT = 0 DECLARE @l_CONTRACT_ID VARCHAR(15) IF(LEN( @p_CONTRACT_ID)=0 OR @p_CONTRACT_ID IS NULL) EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_MASTER', @p_CONTRACT_ID out IF @p_CONTRACT_ID='' OR @p_CONTRACT_ID IS NULL GOTO ABORT INSERT INTO BUD_CONTRACT_MASTER([CONTRACT_ID],[BUILDING_ID],[CONTRACT_NO],[VERSION_NO],[CUST_ID], [INPUT_DT],[AMEND_DT],[FROM_DT],[TO_DATE],[CLOSE_DT],[MONTHS],[RENT_PRICE],[NOTES], [BRANCH_ID],[RECORD_STATUS],[AUTH_STATUS],[STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID], [APPROVE_DT],[XML_TEMP],[VAT],[VAT_AMT],[DEPOSITS_AMT],[PAYMENT_SHEDULE],[IS_SEND_APPR],[SEND_APPR_DT], [SIGN_USER], [SIGN_DT]) VALUES(@p_CONTRACT_ID ,@p_BUILDING_ID ,@p_CONTRACT_NO ,@p_VERSION_NO ,@p_CUST_ID ,CONVERT(DATE, @p_INPUT_DT, 103) , CONVERT(DATE, @p_AMEND_DT, 103) ,CONVERT(DATE, @p_FROM_DT, 103) ,CONVERT(DATE, @p_TO_DATE, 103) , CONVERT(DATE, @p_CLOSE_DT, 103) ,@p_MONTHS ,@p_RENT_PRICE ,@p_NOTES,@p_BRANCH_ID, '1' ,@p_AUTH_STATUS,'N',@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,NULL ,@p_XML_TEMP,@p_VAT, (@p_VAT*@p_RENT_PRICE)/100,@p_DEPOSITS_AMT,@p_PAYMENT_SHEDULE,@p_IS_SEND_APPR, @p_SEND_APPR_DT,@p_SIGN_USER,@p_SIGN_DT) ----------------------------------------------------------------------------------------------------- ----INSERT VAO BANG BUD_CONTACT DELETE FROM BUD_CONTACT WHERE CONTRACT_ID = @p_CONTRACT_ID INSERT INTO BUD_CONTACT VALUES(@p_CONTRACT_ID,@p_VERSION_NO,@p_BUILDING_ID,@p_CONTRACT_NO,@p_CUST_ID,CONVERT(DATE, @p_CREATE_DT, 103)) IF @@Error <> 0 GOTO ABORT Declare @hdoc1 INT ----BAODNQ : Thêm các cột vào bảng BUD_CONTRACT_DT--- DECLARE @d_CONTRACT_DTID VARCHAR(15), @d_BUILD_ID VARCHAR(15), @d_VERSION_NO INT, @d_BUILDING_AREA_ID VARCHAR(15), @d_RENT_AREA DECIMAL(18,2), @d_RENT_AREA_APP DECIMAL(18,2), @d_AREA_REMAIN DECIMAL(18,2), @d_RENT_PRICE DECIMAL, @d_NOTES NVARCHAR(MAX), @d_DIEN_TICH_TANG DECIMAL(18,2), @d_DIEN_TICH_SD_NOI_BO DECIMAL(18,2), @d_DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), @d_DIEN_TICH_CON_LAI DECIMAL(18,2), @d_DIEN_TICH_CAN_SD DECIMAL(18,2), @d_REASON NVARCHAR(MAX), @d_PRICE DECIMAL, @d_TOTAL_AMT DECIMAL, @d_DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2), @d_BRANCH_ID NVARCHAR(15), @d_DEP_ID NVARCHAR(15), @d_VAT INT, @d_PAY_PHASE VARCHAR(15) Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP DECLARE XmlDataDoc CURSOR FOR SELECT * FROM OPENXML(@hdoc1,'/Root/XmlData1',2) WITH ( ----BAODNQ : Thêm các cột vào bảng BUD_CONTRACT_DT--- CONTRACT_DTID VARCHAR(15), BUILD_ID VARCHAR(15), VERSION_NO INT, BUILDING_AREA_ID VARCHAR(15), RENT_AREA DECIMAL(18,2), RENT_AREA_APP DECIMAL(18,2), AREA_REMAIN DECIMAL(18,2), RENT_PRICE DECIMAL, NOTES NVARCHAR(MAX), DIEN_TICH_TANG DECIMAL(18,2), DIEN_TICH_SD_NOI_BO DECIMAL(18,2), DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), DIEN_TICH_CON_LAI DECIMAL(18,2), DIEN_TICH_CAN_SD DECIMAL(18,2), REASON NVARCHAR(MAX), PRICE DECIMAL, TOTAL_AMT DECIMAL, DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2), BRANCH_ID NVARCHAR(15), DEP_ID NVARCHAR(15), VAT INT, PAY_PHASE VARCHAR(15) ) OPEN XmlDataDoc ----BAODNQ : Thêm các cột vào bảng BUD_CONTRACT_DT--- FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN, @d_RENT_PRICE, @d_NOTES, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_SD, @d_REASON, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL, @d_BRANCH_ID, @d_DEP_ID, @d_VAT, @d_PAY_PHASE WHILE @@FETCH_STATUS = 0 BEGIN -------------BAODNQ 11/3/2022: Check lỗi insert-------- DECLARE @VALUE_ERROR DECIMAL(18,0) SET @STT= @STT+1 SET @VALUE_ERROR = ( SELECT FLOOR_AREA - (UTILZED_AREA + INTERNAL_AREA) FROM BUD_AREA_DT WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID ) DECLARE @ERRORSYS NVARCHAR(200) ='' --IF ( @d_DIEN_TICH_CAN_SD > (@VALUE_ERROR + @d_RENT_AREA_APP) OR @d_DIEN_TICH_CAN_SD > @d_DIEN_TICH_CON_LAI_FINAL) --IF ( @d_DIEN_TICH_CAN_SD > (@VALUE_ERROR + @d_RENT_AREA_APP) OR @d_DIEN_TICH_CAN_SD > @d_DIEN_TICH_CON_LAI) IF (@d_DIEN_TICH_CAN_SD > @d_DIEN_TICH_CON_LAI) BEGIN SET @ERRORSYS = N'Lưới chi tiết DTSD nội bộ, ' + N'Dòng '+ convert(nvarchar(2),@stt) +N': DT cần sử dụng phải nhỏ hơn hoặc bằng DT trống' END --IF ( @d_DIEN_TICH_CAN_SD = 0) --BEGIN -- SET @ERRORSYS = -- N'Lưới chi tiết DTSD nội bộ, ' + -- N'Dòng '+ convert(nvarchar(2),@stt) +N': DT cần sử dụng phải lớn hơn 0 ' --END IF @ERRORSYS <> '' BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, @ERRORSYS ErrorDesc RETURN '-1' END ---BAODNQ: insert thêm vào các cột trong bảng BUD_CONTRACT_DT--- EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_DT', @d_CONTRACT_DTID out IF @d_CONTRACT_DTID='' OR @d_CONTRACT_DTID IS NULL GOTO ABORT INSERT INTO BUD_CONTRACT_DT([CONTRACT_DTID],[BUILD_ID],[CONTRACT_ID],[VERSION_NO],[BUILDING_AREA_ID],[RENT_AREA],[RENT_AREA_APP], [AREA_REMAIN],[RENT_PRICE],[NOTES], [DIEN_TICH_TANG], [DIEN_TICH_SD_NOI_BO],[DIEN_TICH_DA_CHO_THUE],[DIEN_TICH_CON_LAI], [DIEN_TICH_CAN_SD],[REASON],[PRICE],[TOTAL_AMT],[DIEN_TICH_CON_LAI_FINAL],[BRANCH_ID],[DEP_ID], [VAT], [PAY_PHASE]) VALUES(@d_CONTRACT_DTID ,@d_BUILD_ID ,@p_CONTRACT_ID ,@d_VERSION_NO ,@d_BUILDING_AREA_ID ,@d_RENT_AREA,0,@d_AREA_REMAIN,@d_RENT_PRICE,@d_NOTES, @d_DIEN_TICH_TANG,@d_DIEN_TICH_SD_NOI_BO,@d_DIEN_TICH_DA_CHO_THUE,@d_DIEN_TICH_CON_LAI,@d_DIEN_TICH_CAN_SD,@d_REASON, @d_PRICE,@d_TOTAL_AMT,@d_DIEN_TICH_CON_LAI_FINAL,@d_BRANCH_ID,@d_DEP_ID, @d_VAT, @d_PAY_PHASE) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN, @d_RENT_PRICE, @d_NOTES, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_SD, @d_REASON, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL, @d_BRANCH_ID, @d_DEP_ID, @d_VAT, @d_PAY_PHASE END CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ---BAODNQ: sửa lấy tổng thành TOTAL_AMT--- SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_DT WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO) UPDATE BUD_CONTRACT_MASTER --SET RENT_PRICE=@p_RENT_PRICE*MONTHS SET RENT_PRICE = @p_RENT_PRICE WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO ---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONTRACT_ID, 'INSERT', @p_MAKER_ID, GETDATE(), N'Thêm mới thông tin khai báo DTSD nội bộ thành công' , N'Thêm mới thông tin khai báo DTSD nội bộ' ) COMMIT TRANSACTION SELECT '0' as Result, @p_CONTRACT_ID CONTRACT_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN --CLOSE XmlDataDoc --DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAYMENT_Appr]' GO ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Appr] --Luanlt 2019/17/10 - Sửa params @p_REQ_PAY_ID varchar(15)= NULL, @p_CHECKER_ID varchar(15) = NULL AS -- BEGIN VALIDATE IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE MAKER_ID =@p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề thanh toán ứng này này! Người phê duyệt phiếu phải khác với người tạo phiếu' ErrorDesc RETURN '-1' END IF ( EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE ISNULL(TRASFER_USER_RECIVE, '') <> '' AND TRASFER_USER_RECIVE = @p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề thanh toán ứng này này! Người phê duyệt phiếu phải khác với người phê duyệt trung gian' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phê duyệt phiếu đề thanh toán ứng thất bại! Phiếu đề thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được phê duyệt trước đó' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được kiểm soát viên phê duyệt trước đó' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về giao dịch viên. Vui lòng kiểm tra lại thông tin' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='S' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được đề xuất từ chối. Vui lòng kiểm tra lại thông tin' ErrorDesc RETURN '-1' END -- CHAN CUOI IF (EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS <> 'U' AND REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề thanh toán ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' chưa được gửi phê duyệt. Vui lòng đợi người tạo gửi phê duyệt trước khi phê duyệt phiếu' ErrorDesc RETURN '-1' END -- END VALIDATE BEGIN TRANSACTION DECLARE @ROLE_ID VARCHAR(15) SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) IF(@ROLE_ID IS NOT NULL AND @ROLE_ID <>'' AND @ROLE_ID IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC','PPGD')) BEGIN PRINT @ROLE_ID END ELSE BEGIN SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID) IF(@ROLE_ID IS NULL OR @ROLE_ID ='') BEGIN SET @ROLE_ID =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)) END END DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50)) INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@p_CHECKER_ID 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 ='') IF(@ROLE_ID NOT IN ('TPGD','PPGD','PP','TP','GDDV','PGD','KTT','TP','PP','TPTC','TC','GDK') AND NOT EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('TPGD','PPGD','PP','TP','GDDV','PGD','KTT','TP','PP','TPTC','TC','GDK'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không nằm trong nhóm quyền được phép phê duyệt phiếu đề nghị thanh toán' ErrorDesc RETURN '-1' END -- KIEM TRA NGUOI TAO PHAI KHAC NGUOI DUYET IF(EXISTS(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID AND RoleName NOT IN ('GDK','GDDV','PTGD','TGD','HDQT','TBP'))) BEGIN IF EXISTS (SELECT TOP 1 REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE MAKER_ID = @p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn là người tạo phiếu đề nghị thanh toán. Bạn không được phép duyệt phiếu này' ErrorDesc RETURN '-1' END END -- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc RETURN '-1' END -- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc RETURN '-1' END -- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được KSV phê duyệt trước đó' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt trước đó' ErrorDesc RETURN '-1' END -- CHECK XEM CO CAP DUYET TRUNG GIAN HAY KHONG IF((SELECT ISNULL(PROCESS, '') FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) = '') BEGIN DECLARE @USER_SIGN VARCHAR(15) SET @USER_SIGN =(SELECT ISNULL(TRASFER_USER_RECIVE,'') FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) IF(@p_CHECKER_ID <> @USER_SIGN AND @USER_SIGN <> '' AND (SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID ORDER BY ID DESC ) = 'SEND') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị thanh toán đang chờ cấp phê duyệt trung gian xác nhận. User domain: '+ISNULL(@USER_SIGN,'') ErrorDesc RETURN '-1' END END --END - CAP NHAT CODE TRONG QUA TRINH TEST UAT 19 11 2019 DECLARE @INDEX INT =0 DECLARE @PAY_ID VARCHAR(15),@PAY_PHASE VARCHAR(15) DECLARE @REQ_TYPE VARCHAR(15),@PAY_ADVANCE_ID VARCHAR(15),@AMT_PAY DECIMAL(18,2), @AMT_USE DECIMAL(18,2), @AMT_REVERT DECIMAL(12) SET @REQ_TYPE =(SELECT REQ_TYPE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID) IF(@REQ_TYPE ='I') BEGIN DECLARE CURS CURSOR FOR SELECT A.PAY_ADV_ID,A.AMT_REMAIN,A.AMT_USE,A.AMT_REVERT FROM TR_REQ_PAYMENT_DT A WHERE A.PAY_ID =@p_REQ_PAY_ID OPEN CURS FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_USE, @AMT_REVERT WHILE @@FETCH_STATUS = 0 BEGIN SET @INDEX = @INDEX +1 -- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADVANCE_ID)=0) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phiếu tạm ứng này đã được hoàn tạm ứng xong. Vui lòng xóa khỏi danh sách hoàn tạm ứng' ErrorDesc RETURN '-1' END --UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT = ISNULL(PAY_AMT,0) + ISNULL(@AMT_PAY,0.00) +ISNULL(@AMT_REVERT,0.00) WHERE REQ_PAY_ID =@PAY_ADVANCE_ID FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_USE, @AMT_REVERT END CLOSE CURS DEALLOCATE CURS END -- NEU LOAI TAM UNG LA THANH TOAN PO ELSE IF(@REQ_TYPE ='P') BEGIN DECLARE CURS CURSOR FOR SELECT A.PAY_ID, A.PAY_PHASE FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID OPEN CURS FETCH NEXT FROM CURS INTO @PAY_ID,@PAY_PHASE WHILE @@FETCH_STATUS = 0 BEGIN SET @INDEX = @INDEX +1 ---- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET --IF((SELECT MIN(A.AMT_REMAIN)FROM TR_REQ_PAY_SCHEDULE A WHERE A.PAY_ID =@PAY_ID GROUP BY A.PAY_ID)=0) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N':Kì '+ @PAY_PHASE+N' đã thanh toán xong' ErrorDesc -- RETURN '-1' --END FETCH NEXT FROM CURS INTO @PAY_ID,@PAY_PHASE END CLOSE CURS DEALLOCATE CURS END UPDATE TR_REQ_PAYMENT SET AUTH_STATUS='A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = GETDATE(), AUTH_STATUS_KT='U' WHERE REQ_PAY_ID = @p_REQ_PAY_ID --UPDATE DETAIL UPDATE TR_REQ_PAYMENT_DT SET AUTH_STATUS='A',CHECKER_ID =@p_CHECKER_ID,APPROVE_DT = GETDATE() WHERE PAY_ID =@p_REQ_PAY_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_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_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'Altering [dbo].[BUD_CONTRACT_MASTER_Search]' GO ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_Search] @p_CONTRACT_ID varchar(15) = NULL, @p_BUILDING_ID varchar(15) = NULL, @p_CONTRACT_NO nvarchar(100) = NULL, @p_VERSION_NO int =0, @p_CUST_ID varchar(15) = NULL, @p_INPUT_DT VARCHAR(20) = NULL, @p_AMEND_DT VARCHAR(20) = NULL, @p_FROM_DT VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL, @p_CLOSE_DT VARCHAR(20) = NULL, @p_MONTHS int = NULL, @p_RENT_PRICE numeric(18) = NULL, @p_NOTES NVARCHAR(MAX) = NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_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_XML_TEMP xml = NULL, @p_VAT DECIMAL(18,0)= NULL, @p_VAT_AMT DECIMAL(18,0) =NULL, @p_DEPOSITS_AMT DECIMAL(18,0) =NULL, @p_PAYMENT_SHEDULE NVARCHAR(500)= NULL, @p_TOP INT = 10, @p_FROM_MONTH int= NULL, @p_TO_MONTH int = NULL, @p_FROM_PRICE DECIMAL(18) = NULL, @p_TO_PRICE DECIMAL(18) = NULL, @p_FROMDATE VARCHAR(25) = NULL, @p_TODATE VARCHAR(25)= NULL, @p_LEVEL VARCHAR(15)='ALL', @p_USER_LOGIN VARCHAR(15) -----BAODNQ 4/1/2021: Truyền thêm USER_LOGIN---- AS -----BAODNQ: thêm các comment phân trang---- BEGIN -- PAGING declare @p_BRANCH_LOGIN VARCHAR(15) --set @p_BRANCH_LOGIN = (select TLSUBBRID from TL_USER where TLNANME=@p_MAKER_ID) set @p_BRANCH_LOGIN = (select TLSUBBRID from TL_USER where TLNANME=@p_USER_LOGIN) DECLARE @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN) --------BAODNQ 5/1/2021: Khai báo role USER_LOGIN------------------- --DECLARE @p_USER_LOGIN_ROLE VARCHAR(50) --SET @p_USER_LOGIN_ROLE = (SELECT RoleName FROM TL_USER WHERE TLNANME = @p_USER_LOGIN) DECLARE @t_USER_LOGIN_ROLE_TABLE TABLE (BRANCH_ID VARCHAR(20), DEPT_ID VARCHAR(15), ROLE_ID VARCHAR(20)) INSERT INTO @t_USER_LOGIN_ROLE_TABLE(BRANCH_ID, DEPT_ID, ROLE_ID) SELECT * FROM [dbo].[TL_USER_GET_ROLES](@p_USER_LOGIN) IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*, CASE WHEN A.AUTH_STATUS = 'U' AND A.IS_SEND_APPR = 'Y' AND (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <> '') AND (A.SIGN_DT IS NULL OR A.SIGN_DT = '') THEN N'Chờ cấp phê duyệt trung gian xác nhận' ELSE B.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME, C.NUM_FLOOR, C.BUILDING_NAME,BR.BRANCH_NAME,LS.CUSTOMER_NAME,CM.CONTENT AS TINHTRANG_HOPDONG, -----BAODNQ 30/12/2021: Lấy thêm cột full name---- D.TLFullName AS SIGN_USER_FULLNAME, TUM.TLFullName AS MAKER_NAME, TUC.TLFullName AS CHECKER_NAME -- SELECT END FROM BUD_CONTRACT_MASTER A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID --đơn vị quản lý LEFT JOIN LS_CUSTOMER LS ON LS.CUSTOMER_ID = A.CUST_ID LEFT JOIN CM_ALLCODE CM ON A.[STATUS] = CM.CDVAL AND CDNAME='CONTRACT_STATUS' AND CDTYPE='CONTRACT' -----BAODNQ 30/12/2021: Kết thêm bảng TL_USER---- LEFT JOIN TL_USER D ON A.SIGN_USER = D.TLNANME LEFT JOIN TL_USER TUM ON A.MAKER_ID = TUM.TLNANME LEFT JOIN TL_USER TUC ON A.CHECKER_ID = TUC.TLNANME WHERE 1 = 1 AND (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_ID + '%' OR @p_CONTRACT_ID IS NULL OR @p_CONTRACT_ID = '') AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '') AND ( (A.CONTRACT_NO LIKE '%' + @p_CONTRACT_NO + '%' OR @p_CONTRACT_NO IS NULL OR @p_CONTRACT_NO = '') OR (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_NO + '%') ) AND (A.CUST_ID LIKE '%' + @p_CUST_ID + '%' OR @p_CUST_ID IS NULL OR @p_CUST_ID = '') AND (A.INPUT_DT =CONVERT(DATE, @p_INPUT_DT, 103) OR @p_INPUT_DT IS NULL OR @p_INPUT_DT = '') AND (A.AMEND_DT =CONVERT(DATE, @p_AMEND_DT, 103) OR @p_AMEND_DT IS NULL OR @p_AMEND_DT = '') --AND (A.TO_DATE =CONVERT(DATE, @p_TO_DATE, 103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '') AND (A.CLOSE_DT =CONVERT(DATE, @p_CLOSE_DT, 103) OR @p_CLOSE_DT IS NULL OR @p_CLOSE_DT = '') AND (A.RENT_PRICE = @p_RENT_PRICE OR @p_RENT_PRICE IS NULL OR @p_RENT_PRICE =0) AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND ( A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR ( @p_AUTH_STATUS = 'S' AND A.AUTH_STATUS = 'U' AND A.IS_SEND_APPR = 'Y' AND (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <> '') AND (A.SIGN_DT IS NULL OR A.SIGN_DT = '') ) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '' ) AND (A.STATUS LIKE '%' + @p_STATUS + '%' OR @p_STATUS IS NULL OR @p_STATUS = '') AND (CONVERT(DATE,A.CREATE_DT,103) >=CONVERT(DATE, @p_FROMDATE, 103) OR @p_FROMDATE IS NULL OR @p_FROMDATE = '') AND (CONVERT(DATE,A.CREATE_DT,103) <=CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '') AND (ISNULL(A.MONTHS,0) >= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH = 0) AND (ISNULL(A.MONTHS,0) <= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH = 0) AND (A.RENT_PRICE >= @p_FROM_PRICE OR @p_FROM_PRICE IS NULL OR @p_FROM_PRICE = 0) AND (A.RENT_PRICE <= @p_TO_PRICE OR @p_TO_PRICE IS NULL OR @p_TO_PRICE = 0) AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (A.APPROVE_DT =CONVERT(DATE, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp)) -----BAODNQ 4/1/2021: Thêm điều kiện select---- --AND (A.MAKER_ID = @p_USER_LOGIN -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') -- OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD', 'TBP')) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- (ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL ))) -- ) -- ) --) --AND (A.MAKER_ID = @p_USER_LOGIN ---- user login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- user login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ( -- --user login là trưởng ĐV và đã gửi YC phê duyệt -- ( -- ------user login là trưởng ĐV ở hội sở-------- -- ( -- EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) -- = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) -- ) -- ------user login là trưởng ĐV ở CN/PGD -- OR -- ( -- NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND A.BRANCH_ID = (SELECT TOP 1 BRANCH_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'PGD', 'TPGD', 'PPGD')) -- ) -- ) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) --) AND( A.BRANCH_ID = @p_BRANCH_LOGIN AND( (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE) OR (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN) <> 'HS' ) ) ORDER BY A.CREATE_DT DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(CONVERT(INT,@P_TOP))A.*, CASE WHEN A.AUTH_STATUS = 'U' AND A.IS_SEND_APPR = 'Y' AND (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <> '') AND (A.SIGN_DT IS NULL OR A.SIGN_DT = '') THEN N'Chờ cấp phê duyệt trung gian xác nhận' ELSE B.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME, C.NUM_FLOOR, C.BUILDING_NAME,BR.BRANCH_NAME,LS.CUSTOMER_NAME,CM.CONTENT AS TINHTRANG_HOPDONG, -----BAODNQ 30/12/2021: Lấy thêm cột full name---- D.TLFullName AS SIGN_USER_FULLNAME, TUM.TLFullName AS MAKER_NAME, TUC.TLFullName AS CHECKER_NAME -- SELECT END FROM BUD_CONTRACT_MASTER A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID LEFT JOIN LS_CUSTOMER LS ON LS.CUSTOMER_ID = A.CUST_ID LEFT JOIN CM_ALLCODE CM ON A.[STATUS] = CM.CDVAL AND CDNAME='CONTRACT_STATUS' AND CDTYPE='CONTRACT' -----BAODNQ 30/12/2021: Kết thêm bảng TL_USER---- LEFT JOIN TL_USER D ON A.SIGN_USER = D.TLNANME LEFT JOIN TL_USER TUM ON A.MAKER_ID = TUM.TLNANME LEFT JOIN TL_USER TUC ON A.CHECKER_ID = TUC.TLNANME WHERE 1 = 1 AND (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_ID + '%' OR @p_CONTRACT_ID IS NULL OR @p_CONTRACT_ID = '') AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '') AND ( (A.CONTRACT_NO LIKE '%' + @p_CONTRACT_NO + '%' OR @p_CONTRACT_NO IS NULL OR @p_CONTRACT_NO = '') OR (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_NO + '%') ) AND (A.CUST_ID LIKE '%' + @p_CUST_ID + '%' OR @p_CUST_ID IS NULL OR @p_CUST_ID = '') AND (A.INPUT_DT =CONVERT(DATE, @p_INPUT_DT, 103) OR @p_INPUT_DT IS NULL OR @p_INPUT_DT = '') AND (A.AMEND_DT =CONVERT(DATE, @p_AMEND_DT, 103) OR @p_AMEND_DT IS NULL OR @p_AMEND_DT = '') --AND (A.TO_DATE =CONVERT(DATE, @p_TO_DATE, 103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '') AND (A.CLOSE_DT =CONVERT(DATE, @p_CLOSE_DT, 103) OR @p_CLOSE_DT IS NULL OR @p_CLOSE_DT = '') AND (A.RENT_PRICE = @p_RENT_PRICE OR @p_RENT_PRICE IS NULL OR @p_RENT_PRICE = 0) AND (A.RECORD_STATUS =1) AND ( A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR ( @p_AUTH_STATUS = 'S' AND A.AUTH_STATUS = 'U' AND A.IS_SEND_APPR = 'Y' AND (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <> '') AND (A.SIGN_DT IS NULL OR A.SIGN_DT = '') ) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '' ) AND (A.STATUS LIKE '%' + @p_STATUS + '%' OR @p_STATUS IS NULL OR @p_STATUS = '') AND (CONVERT(DATE,A.CREATE_DT,103) >=CONVERT(DATE, @p_FROMDATE, 103) OR @p_FROMDATE IS NULL OR @p_FROMDATE = '') AND (CONVERT(DATE,A.CREATE_DT,103) <=CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '') AND (ISNULL(A.MONTHS,0) >= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH = 0) AND (ISNULL(A.MONTHS,0) <= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH = 0) AND (A.RENT_PRICE >= @p_FROM_PRICE OR @p_FROM_PRICE IS NULL OR @p_FROM_PRICE = 0) AND (A.RENT_PRICE <= @p_TO_PRICE OR @p_TO_PRICE IS NULL OR @p_TO_PRICE = 0) AND (( (@p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp)) OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_ID) ) OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = '') --AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp)) AND ( A.VERSION_NO =(SELECT MAX(VERSION_NO) FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = A.CONTRACT_ID)) -----BAODNQ 4/1/2021: Thêm điều kiện select---- --AND (A.MAKER_ID = @p_USER_LOGIN -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') -- OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD', 'TBP')) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- (ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL ))) -- ) -- ) -- ) --AND (A.MAKER_ID = @p_USER_LOGIN ---- user login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- user login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ( -- --user login là trưởng ĐV và đã gửi YC phê duyệt -- ( -- ------user login là trưởng ĐV ở hội sở-------- -- ( -- EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) -- = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) -- ) -- ------user login là trưởng ĐV ở CN/PGD -- OR -- ( -- NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND A.BRANCH_ID = (SELECT TOP 1 BRANCH_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'PGD', 'TPGD', 'PPGD')) -- ) -- ) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) --) AND( A.BRANCH_ID = @p_BRANCH_LOGIN AND( (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE) OR (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN) <> 'HS' ) ) ORDER BY A.CREATE_DT DESC -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_CONTRACT_MASTER_Upd]' GO /*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_CONTRACT_MASTER','UMA','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('UMA','1','1') INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_CONTRACT_DT','UDT','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('UDT','1','1') */ ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_Upd] @p_CONTRACT_ID varchar(15) = NULL, @p_BUILDING_ID varchar(15) = NULL, @p_CONTRACT_NO nvarchar(100) = NULL, @p_VERSION_NO int = NULL, @p_CUST_ID varchar(15) = NULL, @p_INPUT_DT VARCHAR(20) = NULL, @p_AMEND_DT VARCHAR(20) = NULL, @p_FROM_DT VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL, @p_CLOSE_DT VARCHAR(20) = NULL, @p_MONTHS int = NULL, @p_RENT_PRICE numeric(18) = NULL, @p_NOTES NVARCHAR(MAX)= NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_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_XML_TEMP xml = NULL, @p_VAT DECIMAL(18,0), @p_VAT_AMT DECIMAL(18,0), @p_DEPOSITS_AMT DECIMAL(18,0), @p_PAYMENT_SHEDULE NVARCHAR(500), @p_IS_SEND_APPR VARCHAR(15), @p_SEND_APPR_DT VARCHAR(20), @p_SIGN_USER VARCHAR(15), @p_SIGN_DT VARCHAR(15) AS /* --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM BUD_CONTRACT_MASTER WHERE VERSION_NO=@p_VERSION_NO SET @ERRORSYS = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' VERSION_NO, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END */ IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U')) BEGIN SELECT '-1' as Result, '' CONTRACT_ID, N'Không thể chỉnh sửa. Thông tin khai báo DTSD nội bộ đã được gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT CONTRACT_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND MAKER_ID <> @p_MAKER_ID)) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Không thể chỉnh sửa. Chỉ có người tạo thông tin khai báo DTSD nội bộ: ' +@p_CONTRACT_ID+ N' mới được phép chỉnh sửa. Bạn không phải là người tạo thông tin khai báo DTSD nội bộ này' ErrorDesc RETURN '-1' END -----------------BẮT BUỘC NHẬP LƯỚI THÔNG TIN CHI TIẾT HỢP ĐỒNG------------------------ DECLARE @p_BUD_CONTRACT_DT_XML_COUNT INT SET @p_BUD_CONTRACT_DT_XML_COUNT = ( SELECT @p_XML_TEMP.value('count(/Root/XmlData1)', 'INT') AS 'COUNT' ) PRINT @p_BUD_CONTRACT_DT_XML_COUNT IF(@p_BUD_CONTRACT_DT_XML_COUNT <= 0) BEGIN SELECT '-1' Result, '' CONTRACT_ID, N'Lưới thông tin chi tiết diện tích sử dụng nội bộ không được để trống' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @STT INT = 0 IF (@p_STATUS = 'C') BEGIN UPDATE BUD_CONTRACT_MASTER SET STATUS= @p_STATUS, AUTH_STATUS='U', APPROVE_DT=NULL, CHECKER_ID=NULL WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO END ELSE BEGIN DELETE FROM BUD_CONTRACT_DT WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO= @p_VERSION_NO Declare @hdoc1 INT ---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML--- DECLARE @d_CONTRACT_DTID VARCHAR(15), @d_BUILD_ID VARCHAR(15), @d_VERSION_NO INT, @d_BUILDING_AREA_ID VARCHAR(15), @d_RENT_AREA DECIMAL(18,2), @d_RENT_AREA_APP DECIMAL(18,2), @d_AREA_REMAIN DECIMAL(18,2), @d_RENT_PRICE DECIMAL, @d_NOTES NVARCHAR(MAX), @d_DIEN_TICH_TANG DECIMAL(18,2), @d_DIEN_TICH_SD_NOI_BO DECIMAL(18,2), @d_DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), @d_DIEN_TICH_CON_LAI DECIMAL(18,2), @d_DIEN_TICH_CAN_SD DECIMAL(18,2), @d_REASON NVARCHAR(MAX), @d_PRICE DECIMAL, @d_TOTAL_AMT DECIMAL, @d_DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2), @d_BRANCH_ID NVARCHAR(15), @d_DEP_ID NVARCHAR(15), @d_VAT INT, @d_PAY_PHASE VARCHAR(15) Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP DECLARE XmlDataDoc CURSOR FOR SELECT * FROM OPENXML(@hdoc1,'/Root/XmlData1',2) WITH ( ---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML--- CONTRACT_DTID VARCHAR(15), BUILD_ID VARCHAR(15), VERSION_NO INT, BUILDING_AREA_ID VARCHAR(15), RENT_AREA DECIMAL(18,2), RENT_AREA_APP DECIMAL(18,2), AREA_REMAIN DECIMAL(18,2), RENT_PRICE DECIMAL, NOTES NVARCHAR(MAX), DIEN_TICH_TANG DECIMAL(18,2), DIEN_TICH_SD_NOI_BO DECIMAL(18,2), DIEN_TICH_DA_CHO_THUE DECIMAL(18,2), DIEN_TICH_CON_LAI DECIMAL(18,2), DIEN_TICH_CAN_SD DECIMAL(18,2), REASON NVARCHAR(MAX), PRICE DECIMAL, TOTAL_AMT DECIMAL, DIEN_TICH_CON_LAI_FINAL DECIMAL(18,2), BRANCH_ID NVARCHAR(15), DEP_ID NVARCHAR(15), VAT INT, PAY_PHASE VARCHAR(15) ) OPEN XmlDataDoc ---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML--- FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN, @d_RENT_PRICE, @d_NOTES, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_SD, @d_REASON, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL, @d_BRANCH_ID, @d_DEP_ID, @d_VAT, @d_PAY_PHASE WHILE @@FETCH_STATUS = 0 BEGIN -------------BAODNQ 11/3/2022: Check lỗi insert-------- DECLARE @VALUE_ERROR DECIMAL(18,0) SET @STT= @STT+1 SET @VALUE_ERROR = ( SELECT FLOOR_AREA - (UTILZED_AREA + INTERNAL_AREA) FROM BUD_AREA_DT WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID ) PRINT @d_DIEN_TICH_CAN_SD PRINT (@VALUE_ERROR + @d_RENT_AREA_APP) PRINT @d_DIEN_TICH_CON_LAI DECLARE @ERRORSYS NVARCHAR(200) ='' --IF ( @d_DIEN_TICH_CAN_SD > (@VALUE_ERROR + @d_RENT_AREA_APP) OR @d_DIEN_TICH_CAN_SD > @d_DIEN_TICH_CON_LAI_FINAL) --IF ( @d_DIEN_TICH_CAN_SD > (@VALUE_ERROR + @d_RENT_AREA_APP) OR @d_DIEN_TICH_CAN_SD > @d_DIEN_TICH_CON_LAI) IF (@d_DIEN_TICH_CAN_SD > @d_DIEN_TICH_CON_LAI) BEGIN SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@STT) +N': DT cần sử dụng phải nhỏ hơn hoặc bằng DT trống ' END --IF ( @d_DIEN_TICH_CAN_SD = 0) --BEGIN -- SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@STT) +N': DT cần sử dụng phải lớn hơn 0 ' --END IF @ERRORSYS <> '' BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, @ERRORSYS ErrorDesc RETURN '-1' END ---BAODNQ: insert thêm vào các cột trong bảng BUD_CONTRACT_DT--- -------------Nếu đã có DT_ID cũ, k tạo DT_ID mới IF(LEN( @d_CONTRACT_DTID)=0) BEGIN EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_DT', @d_CONTRACT_DTID out END IF @d_CONTRACT_DTID='' OR @d_CONTRACT_DTID IS NULL GOTO ABORT INSERT INTO BUD_CONTRACT_DT([CONTRACT_DTID],[BUILD_ID],[CONTRACT_ID],[VERSION_NO],[BUILDING_AREA_ID],[RENT_AREA],[RENT_AREA_APP],[AREA_REMAIN],[RENT_PRICE],[NOTES], [DIEN_TICH_TANG],[DIEN_TICH_SD_NOI_BO],[DIEN_TICH_DA_CHO_THUE],[DIEN_TICH_CON_LAI],[DIEN_TICH_CAN_SD],[REASON],[PRICE],[TOTAL_AMT], [DIEN_TICH_CON_LAI_FINAL],[BRANCH_ID], [DEP_ID], [VAT], [PAY_PHASE]) VALUES(@d_CONTRACT_DTID ,@d_BUILD_ID ,@p_CONTRACT_ID ,@d_VERSION_NO ,@d_BUILDING_AREA_ID ,@d_RENT_AREA,@d_RENT_AREA_APP,@d_AREA_REMAIN,@d_RENT_PRICE,@d_NOTES, @d_DIEN_TICH_TANG,@d_DIEN_TICH_SD_NOI_BO,@d_DIEN_TICH_DA_CHO_THUE,@d_DIEN_TICH_CON_LAI,@d_DIEN_TICH_CAN_SD,@d_REASON,@d_PRICE,@d_TOTAL_AMT,@d_DIEN_TICH_CON_LAI_FINAL, @d_BRANCH_ID,@d_DEP_ID, @d_VAT, @d_PAY_PHASE) IF @@Error <> 0 GOTO ABORT ---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML--- FETCH NEXT FROM XmlDataDoc INTO @d_CONTRACT_DTID, @d_BUILD_ID, @d_VERSION_NO, @d_BUILDING_AREA_ID, @d_RENT_AREA, @d_RENT_AREA_APP, @d_AREA_REMAIN , @d_RENT_PRICE, @d_NOTES, @d_DIEN_TICH_TANG, @d_DIEN_TICH_SD_NOI_BO, @d_DIEN_TICH_DA_CHO_THUE, @d_DIEN_TICH_CON_LAI, @d_DIEN_TICH_CAN_SD, @d_REASON, @d_PRICE, @d_TOTAL_AMT, @d_DIEN_TICH_CON_LAI_FINAL, @d_BRANCH_ID, @d_DEP_ID, @d_VAT, @d_PAY_PHASE END CLOSE XmlDataDoc DEALLOCATE XmlDataDoc IF @@Error <> 0 GOTO ABORT ---BAODNQ: sửa lấy tổng thành TOTAL_AMT--- SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_DT WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO) IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'A')) BEGIN ---------------CẬP NHẬT LẠI SAU KHI ĐÃ DUYỆT------------ SET @p_CHECKER_ID = NULL SET @p_APPROVE_DT = NULL SET @p_SIGN_DT = NULL SET @p_SEND_APPR_DT = NULL END ---BAODNQ 30/12/2021:Thêm cột vào bảng BUD_CONTRACT_MASTER------- UPDATE BUD_CONTRACT_MASTER SET BUILDING_ID =@p_BUILDING_ID, CONTRACT_NO =@p_CONTRACT_NO, --VERSION_NO=@p_VERSION_NO, CUST_ID=@p_CUST_ID, INPUT_DT = CONVERT(DATE,@p_INPUT_DT,103), AMEND_DT = CONVERT(DATE,@p_AMEND_DT,103), FROM_DT = CONVERT(DATE,@p_FROM_DT,103), TO_DATE = CONVERT(DATE,@p_TO_DATE,103), CLOSE_DT = CONVERT(DATE,@p_CLOSE_DT,103), STATUS= @p_STATUS, MONTHS = @p_MONTHS, --RENT_PRICE=@p_RENT_PRICE*@p_MONTHS, RENT_PRICE = @p_RENT_PRICE, [NOTES] = @p_NOTES, VAT =@p_VAT, VAT_AMT =(@p_VAT*@p_RENT_PRICE)/100, DEPOSITS_AMT =@p_DEPOSITS_AMT, PAYMENT_SHEDULE =@p_PAYMENT_SHEDULE, IS_SEND_APPR = @p_IS_SEND_APPR, SEND_APPR_DT = CONVERT(DATETIME,@p_SEND_APPR_DT, 103), SIGN_USER = @p_SIGN_USER, SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103), RECORD_STATUS = @p_RECORD_STATUS, AUTH_STATUS = @p_AUTH_STATUS, MAKER_ID = @p_MAKER_ID, CREATE_DT = CONVERT(DATETIME,@p_CREATE_DT, 103), CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT, 103) WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO END ---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý ---------------BAODNQ : TH NGƯỜI TẠO CẬP NHẬT NHIỀU LẦN THÌ CHỈ LƯU LỊCH SỬ XỬ LÝ CẬP NHẬT GẦN NHẤT---------------- IF((SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID = @p_CONTRACT_ID ORDER BY APPROVE_DT DESC) = 'UPDATE') BEGIN WITH RESULT AS( SELECT TOP 1 * FROM PL_PROCESS WHERE REQ_ID = @p_CONTRACT_ID ORDER BY APPROVE_DT DESC ) DELETE FROM RESULT END INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONTRACT_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Cập nhật thông tin khai báo DTSD nội bộ thành công' , N'Cập nhật thông tin khai báo DTSD nội bộ' ) COMMIT TRANSACTION SELECT '0' as Result, @p_CONTRACT_ID CONTRACT_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_DOC_Search]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_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' DECLARE @AUTHOR TABLE ( ROLE_ID VARCHAR(100), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), BRANCH_TYPE VARCHAR(20) ) DECLARE @AUTHOR_DVDM TABLE ( ROLE_ID VARCHAR(100), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), DVDM_ID VARCHAR(20) ) DECLARE @AUTHOR_DMMS TABLE ( ROLE_ID VARCHAR(100), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), DMMS_ID VARCHAR(20) ) INSERT INTO @AUTHOR ( ROLE_ID, BRANCH_ID, DEP_ID, BRANCH_TYPE ) SELECT RoleName,TLSUBBRID,SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_USER TU LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID WHERE TLNANME=@p_TLNAME_USER UNION ALL SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,CB.BRANCH_TYPE 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='') LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID WHERE TLNANME=@p_TLNAME_USER UNION ALL SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_SYS_ROLE_MAPPING TM1 LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID 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,CB.BRANCH_TYPE 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='') LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID 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 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 @AUTHOR_DMMS ( ROLE_ID, BRANCH_ID, DEP_ID, DMMS_ID ) SELECT RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TU.SECUR_CODE=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS') WHERE TLNANME=@p_TLNAME_USER UNION ALL SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID 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='') LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TU.SECUR_CODE=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS') WHERE TLNANME=@p_TLNAME_USER UNION ALL SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1 LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TM1.DEP_ID=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS') 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,MS.DMMS_ID 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='') LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TM1.DEP_ID=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS') WHERE TM1.TLNAME=@p_TLNAME_USER AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ----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 IF(@p_TYPE='DVKD') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT, A.REQ_TYPE, A.IS_KT, A.REQ_REASON, A.REQ_CONTENT,A.PL_REQ_ID,A.TOTAL_AMT AS TOTAL_AMT, A.NOTES, A.RECORD_STATUS,A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.BRANCH_DO, A.PROCESS_ID,A.BRANCH_CREATE, A.USER_REQUEST,U.TLFullName AS USER_REQUEST_NAME, D.AUTH_STATUS_NAME,UDV.TLFullName AS CHECKER_NAME,UMS.TLFullName AS USER_DVMS_NAME,UM.TLFullName AS MAKER_NAME, CMS.DMMS_NAME,A.DMMS_ID, RP.NOTES AS PROCESS_STATUS,RP.APPROVE_DT AS PROCESS_APP_DT,UP.TLFullName AS PROCESS_CHECKER_NAME, RP.ROLE_USER, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Hoàn tất' ELSE N'Chưa hoàn tất' END AS AUTH_STATUS_PROCESS_NAME, RPN.NOTES AS PROCESS_STATUS_NEXT ,G.BRANCH_NAME AS BRANCH_DO_NAME,G.BRANCH_CODE AS BRANCH_DO_CODE,PLRD.REQ_CODE AS PL_REQ_CODE, DVMS.BRANCH_CODE AS BRANCH_CODE_DVMS,DVMS.BRANCH_NAME AS BRANCH_NAME_DVMS,DVC.BRANCH_CODE AS BRANCH_CREATE_CODE, DVC.BRANCH_NAME AS BRANCH_CREATE_NAME, PLRD.REQ_NAME AS PL_REQ_NAME,'' TYPE_JOB,'' AS USER_JOB,'' AS USER_JOB_NAME,'' AS TRANSFER_MAKER,CAST(NULL AS DATETIME) AS TRANFER_DT , '' AS TRANSFER_MAKER_ID,'' AS TYPE_JOB_XL,'' AS USER_JOB_XL,PLRD.REQ_CODE AS SO_TT_CT, PLRD.REQ_DT AS NGAY_NHAN_TT, PLRD.EFFEC_DT NGAY_DUYET_TT, '' AS NCC_CODE, FORMAT(PLRD.TOTAL_AMT,'#,###') AS NCC_NAME, '' AS NCC_ADDR,RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB,A.REQ_PARENT_ID,A.DEP_CREATE,APR.REQ_CODE AS REQ_PARENT_CODE,CDC.DEP_NAME AS DEP_CREATE_NAME, CDC.DEP_CODE AS DEP_CREATE_CODE, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) AS NGUOIXULY, CASE WHEN A.PROCESS_ID ='SIGN' THEN TL.TLFullName ELSE NXL.NGUOIXULY END AS NGUOIXULY, PLRD.TOTAL_AMT AS GIATRI_TO_TRINH, ------------BAODNQ 11/8/2022 : Lấy đơn vị yêu cầu------------- --------------Nếu ĐV tạo ở HS, lấy thêm phòng ban, ngược lại chỉ lấy ĐV------- CASE WHEN (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE) = 'HS' THEN CDC.DEP_NAME + ' - ' + DVC.BRANCH_NAME ELSE DVC.BRANCH_NAME END AS BRANCH_DEP_REQUEST -- NXL.NGUOIXULY AS NGUOIXULY -- SELECT END FROM TR_REQUEST_DOC A LEFT JOIN dbo.PL_REQUEST_DOC PLRD ON A.PL_REQ_ID=PLRD.REQ_ID LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_DO=G.BRANCH_ID LEFT JOIN dbo.TL_USER U ON U.TLNANME =A.USER_REQUEST LEFT JOIN dbo.TL_USER UMS ON UMS.TLNANME =A.USER_DVMS LEFT JOIN dbo.CM_BRANCH DVMS ON DVMS.BRANCH_ID=A.BRANCH_DVMS LEFT JOIN dbo.CM_BRANCH DVC ON DVC.BRANCH_ID=A.BRANCH_CREATE LEFT JOIN dbo.CM_DEPARTMENT CDC ON CDC.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TR_REQUEST_DOC APR ON APR.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.TL_USER UM ON UM.TLNANME=A.MAKER_ID LEFT JOIN ( SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM dbo.PL_REQUEST_PROCESS GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES ) RPN ON RPN.REQ_ID=A.REQ_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R') LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN ( SELECT DMMS_ID,DEP_NAME+'-'+BRANCH_NAME AS DMMS_NAME FROM dbo.CM_DMMS LEFT JOIN dbo.CM_BRANCH ON CM_BRANCH.BRANCH_ID=CM_DMMS.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT ON CM_DEPARTMENT.DEP_ID = CM_DMMS.DEP_ID UNION ALL SELECT DVDM_ID AS DMMS_ID ,DVDM_NAME AS DMMS_NAME FROM dbo.CM_DVDM )CMS ON CMS.DMMS_ID=A.DMMS_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.IS_KT = @p_IS_KT OR @p_IS_KT IS NULL) AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (CAST(A.CREATE_DT AS DATE)=CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (CAST(A.APPROVE_DT AS DATE) = CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND ( A.PROCESS_ID LIKE '%' + @p_PROCESS_STATUS + '%' OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS='' ) --AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_ID))) 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.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '' --OR A.DEP_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' --) AND (A.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') --------------------------BAODNQ 21/10/2022 SEARCH THEO DEP_CREATE--------------------------- AND (A.DEP_CREATE LIKE '%' + @p_DEP_CREATE + '%' OR @p_DEP_CREATE IS NULL OR @p_DEP_CREATE = '') AND (PLRD.REQ_CODE LIKE '%' + @p_PL_REQ_CODE + '%' OR @p_PL_REQ_CODE IS NULL OR @p_PL_REQ_CODE = '') AND (A.PL_REQ_ID LIKE '%' + @p_PL_REQ_ID + '%' OR @p_PL_REQ_ID IS NULL OR @p_PL_REQ_ID = '') AND A.RECORD_STATUS = '1' AND (A.MAKER_ID=@p_TLNAME_USER OR (EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS PLRP WHERE A.REQ_ID=PLRP.REQ_ID AND PLRP.PROCESS_ID='APPNEW' AND EXISTS(SELECT * FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND AUTH.BRANCH_ID=PLRP.BRANCH_ID AND (AUTH.DEP_ID=PLRP.DEP_ID OR AUTH.BRANCH_TYPE <>'HS')) )) OR (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <>'' AND A.SIGN_USER =@p_TLNAME_USER AND A.AUTH_STATUS <>'E') OR (EXISTS(SELECT * FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE ='TR_REQUEST_DOC_ALL' AND BRANCH_ID =@p_TLNAME_USER)) ) --AND ( -- ( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') -- OR( @p_AUTH_STATUS='U' AND A.PROCESS_ID <> 'APPROVE') -- or @p_AUTH_STATUS=A.AUTH_STATUS -- OR @p_AUTH_STATUS IS NULL -- OR @p_AUTH_STATUS = '' --) --CuongLX AND ( (A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') OR (@p_AUTH_STATUS = 'W' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS PL WHERE A.REQ_ID = PL.REQ_ID AND PL.PROCESS_ID = 'SIGN' AND PL.STATUS = 'C')) OR (@p_AUTH_STATUS = 'G' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS PL WHERE A.REQ_ID = PL.REQ_ID AND PL.PROCESS_ID = 'SIGN' AND PL.STATUS = 'P')) ) 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( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='TFJOB') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT, A.REQ_TYPE,A.IS_KT, A.REQ_REASON, A.REQ_CONTENT,A.PL_REQ_ID,A.TOTAL_AMT AS TOTAL_AMT, A.NOTES, A.RECORD_STATUS,A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.BRANCH_DO, A.PROCESS_ID,A.BRANCH_CREATE, A.USER_REQUEST,U.TLFullName AS USER_REQUEST_NAME, D.AUTH_STATUS_NAME,UDV.TLFullName AS CHECKER_NAME,UMS.TLFullName AS USER_DVMS_NAME,UM.TLFullName AS MAKER_NAME, CMS.DMMS_NAME,A.DMMS_ID, RP.NOTES AS PROCESS_STATUS,RP.APPROVE_DT AS PROCESS_APP_DT,UP.TLFullName AS PROCESS_CHECKER_NAME, RP.ROLE_USER, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_PROCESS_NAME, RPN.NOTES AS PROCESS_STATUS_NEXT ,G.BRANCH_NAME AS BRANCH_DO_NAME,G.BRANCH_CODE AS BRANCH_DO_CODE,PLRD.REQ_CODE AS PL_REQ_CODE, DVMS.BRANCH_CODE AS BRANCH_CODE_DVMS,DVMS.BRANCH_NAME AS BRANCH_NAME_DVMS,DVC.BRANCH_CODE AS BRANCH_CREATE_CODE, CASE WHEN DVC.BRANCH_TYPE ='HS' THEN DVC.BRANCH_NAME ELSE DEP.DEP_NAME END AS BRANCH_CREATE_NAME, --DVC.BRANCH_NAME AS BRANCH_CREATE_NAME, PLRD.REQ_NAME AS PL_REQ_NAME,ISNULL(RPC.TYPE_JOB,'KS') AS TYPE_JOB,RPC.TLNAME AS USER_JOB,TU.TLFullName AS USER_JOB_NAME,TFM.TLFullName AS TRANSFER_MAKER,RPC.TRANFER_DT ,RPC.MAKER_ID AS TRANSFER_MAKER_ID, '' AS TYPE_JOB_XL,'' AS USER_JOB_XL,PLRD.REQ_CODE AS SO_TT_CT, PLRD.REQ_DT AS NGAY_NHAN_TT, PLRD.EFFEC_DT NGAY_DUYET_TT, '' AS NCC_CODE, FORMAT(PLRD.TOTAL_AMT,'#,###') AS NCC_NAME, '' AS NCC_ADDR,PLRP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, '' AS STATUS_JOB,A.REQ_PARENT_ID,A.DEP_CREATE,APR.REQ_CODE AS REQ_PARENT_CODE, --CDC.DEP_NAME AS DEP_CREATE_NAME, CASE WHEN DVC.BRANCH_TYPE ='HS' THEN CDC.DEP_NAME ELSE DVC.BRANCH_NAME END AS DEP_CREATE_NAME, CDC.DEP_CODE AS DEP_CREATE_CODE,A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY, -------BAODNQ 21/4/2022: Lấy giá trị tờ trình------ PLRD.TOTAL_AMT AS GIATRI_TO_TRINH, -------------END BAODNQ--------------------- ------------BAODNQ 11/8/2022 : Lấy đơn vị yêu cầu------------- --------------Nếu ĐV tạo ở HS, lấy thêm phòng ban, ngược lại chỉ lấy ĐV------- CASE WHEN (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE) = 'HS' THEN CDC.DEP_NAME + ' - ' + DVC.BRANCH_NAME ELSE DVC.BRANCH_NAME END AS BRANCH_DEP_REQUEST -- 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' AND PLRP.IS_HAS_CHILD=1 LEFT JOIN dbo.PL_REQUEST_DOC PLRD ON A.PL_REQ_ID=PLRD.REQ_ID LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_DO=G.BRANCH_ID LEFT JOIN dbo.TL_USER U ON U.TLNANME =A.USER_REQUEST LEFT JOIN dbo.TL_USER UMS ON UMS.TLNANME =A.USER_DVMS LEFT JOIN dbo.CM_BRANCH DVMS ON DVMS.BRANCH_ID=A.BRANCH_DVMS LEFT JOIN dbo.CM_BRANCH DVC ON DVC.BRANCH_ID=A.BRANCH_CREATE LEFT JOIN dbo.CM_DEPARTMENT CDC ON CDC.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TR_REQUEST_DOC APR ON APR.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.TL_USER UM ON UM.TLNANME=A.MAKER_ID LEFT JOIN CM_DEPARTMENT DEP ON UM.SECUR_CODE = DEP.DEP_ID LEFT JOIN ( SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM dbo.PL_REQUEST_PROCESS GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES ) RPN ON RPN.REQ_ID=A.REQ_ID AND ( [RPN].[STATUS]='C' OR [RPN].[STATUS]='R') LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN ( SELECT DMMS_ID,DEP_NAME+'-'+BRANCH_NAME AS DMMS_NAME FROM dbo.CM_DMMS LEFT JOIN dbo.CM_BRANCH ON CM_BRANCH.BRANCH_ID=CM_DMMS.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT ON CM_DEPARTMENT.DEP_ID = CM_DMMS.DEP_ID UNION ALL SELECT DVDM_ID AS DMMS_ID ,DVDM_NAME AS DMMS_NAME FROM dbo.CM_DVDM )CMS ON CMS.DMMS_ID=A.DMMS_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.IS_KT = @p_IS_KT OR @p_IS_KT IS NULL) AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (CAST(A.CREATE_DT AS DATE)=CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (CAST(A.APPROVE_DT AS DATE) = CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (A.PROCESS_ID LIKE '%' + @p_PROCESS_STATUS + '%' OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS='') --AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_ID))) 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.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '' --OR A.DEP_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' --) AND (A.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') --------------------------BAODNQ 21/10/2022 SEARCH THEO DEP_CREATE--------------------------- AND (A.DEP_CREATE LIKE '%' + @p_DEP_CREATE + '%' OR @p_DEP_CREATE IS NULL OR @p_DEP_CREATE = '') AND (PLRD.REQ_CODE LIKE '%' + @p_PL_REQ_CODE + '%' OR @p_PL_REQ_CODE IS NULL OR @p_PL_REQ_CODE = '') AND (A.PL_REQ_ID LIKE '%' + @p_PL_REQ_ID + '%' OR @p_PL_REQ_ID IS NULL OR @p_PL_REQ_ID = '') AND A.RECORD_STATUS = '1' AND ( EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND PLRP.DVDM_ID=AUTH.DVDM_ID) OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DMMS AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND A.DMMS_ID=AUTH.DMMS_ID AND A.PROCESS_ID='DMMS') OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND A.DMMS_ID=AUTH.DVDM_ID AND A.PROCESS_ID='DMMS') OR EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID AND TLNAME=@p_TLNAME_USER AND TYPE_JOB='KS') ) --AND ( ( ( (PLRP.ROLE_USER=@p_ROLE_USER OR PLRP.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_USER)) AND ((PLRP.DVDM_ID IN (SELECT DVDM_ID FROM @COST_ID) ) --OR ((A.DMMS_ID IN (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID =@p_BRANCH_LOGIN AND (DEP_ID=@DEP_ID OR @BRANCH_TYPE <>'HS')) --OR A.DMMS_ID IN (SELECT DVDM_ID FROM @COST_ID)) AND A.PROCESS_ID='DMMS')))) --OR (EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID AND TLNAME=@p_TLNAME_USER AND TYPE_JOB='KS') )) AND (( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') OR( @p_AUTH_STATUS='U' AND A.PROCESS_ID <> 'APPROVE') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') 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 (RPC.TYPE_JOB <>'TP' OR RPC.TYPE_JOB IS NULL OR RPC.TYPE_JOB ='') AND ( --((RPC.REQ_ID IS NOT NULL OR RPC.REQ_ID <> '') AND @p_IS_TRANSFER = 'Y') --OR ((RPC.REQ_ID IS NULL OR RPC.REQ_ID = '') AND @p_IS_TRANSFER = 'N') --OR @p_IS_TRANSFER = '' OR @p_IS_TRANSFER IS NULL ------------BAODNQ 18/5/2022: SỬA TÌM KIẾM THEO TÌNH TRẠNG ĐIỀU PHỐI-------------- ((RPC.REQ_ID IS NOT NULL AND RPC.REQ_ID <> '' AND RPC.MAKER_ID =@p_TLNAME_USER) AND @p_IS_TRANSFER = '1') --- LUCTV 22-10-22 DIEU CHINH NGUYEN TAC CHUA DIEU PHOI / DA DIEU PHOI OR ((RPC.REQ_ID IS NULL OR RPC.REQ_ID = '' OR (RPC.REQ_ID IS NOT NULL AND RPC.REQ_ID <> '' AND RPC.MAKER_ID <> @p_TLNAME_USER)) AND @p_IS_TRANSFER = '0') OR @p_IS_TRANSFER = '' OR @p_IS_TRANSFER IS NULL ---------------------------END BAODNQ--------------------------------------------- ) AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) --LUCTV 10-03-2021 Ơ MAN HINH DIEU PHOI PYCMS NEU PHIEU DA DUOC NHAN VIEN XU LY GUI PHE DUYET THI KHONG CAN HIEN THI AND ((NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =A.REQ_ID AND TYPE_JOB ='XL' AND STATUS_JOB ='P' AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =A.REQ_ID))) OR A.PROCESS_ID ='DVCM') ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='DMMS') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT, A.REQ_TYPE,A.IS_KT, A.REQ_REASON, A.REQ_CONTENT,A.PL_REQ_ID,A.TOTAL_AMT AS TOTAL_AMT, A.NOTES, A.RECORD_STATUS,A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.BRANCH_DO, A.PROCESS_ID,A.BRANCH_CREATE, A.USER_REQUEST,U.TLFullName AS USER_REQUEST_NAME, D.AUTH_STATUS_NAME,UDV.TLFullName AS CHECKER_NAME,UMS.TLFullName AS USER_DVMS_NAME,UM.TLFullName AS MAKER_NAME, CMS.DMMS_NAME,A.DMMS_ID, RP.NOTES AS PROCESS_STATUS,RP.APPROVE_DT AS PROCESS_APP_DT,UP.TLFullName AS PROCESS_CHECKER_NAME, RP.ROLE_USER, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_PROCESS_NAME, RPN.NOTES AS PROCESS_STATUS_NEXT ,G.BRANCH_NAME AS BRANCH_DO_NAME,G.BRANCH_CODE AS BRANCH_DO_CODE,PLRD.REQ_CODE AS PL_REQ_CODE, DVMS.BRANCH_CODE AS BRANCH_CODE_DVMS,DVMS.BRANCH_NAME AS BRANCH_NAME_DVMS,DVC.BRANCH_CODE AS BRANCH_CREATE_CODE, CASE WHEN DVC.BRANCH_TYPE ='HS' THEN DVC.BRANCH_NAME ELSE DEP.DEP_NAME END AS BRANCH_CREATE_NAME, --DVC.BRANCH_NAME AS BRANCH_CREATE_NAME, PLRD.REQ_NAME AS PL_REQ_NAME,RPC.TYPE_JOB,RPC.TLNAME AS USER_JOB,TU.TLFullName AS USER_JOB_NAME,TFM.TLFullName AS TRANSFER_MAKER,RPC.TRANFER_DT ,RPC.MAKER_ID AS TRANSFER_MAKER_ID, '' AS TYPE_JOB_XL,'' AS USER_JOB_XL,PLRD.REQ_CODE AS SO_TT_CT, PLRD.REQ_DT AS NGAY_NHAN_TT, PLRD.EFFEC_DT NGAY_DUYET_TT, '' AS NCC_CODE, FORMAT(PLRD.TOTAL_AMT,'#,###') AS NCC_NAME, '' AS NCC_ADDR,PLRP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB,A.REQ_PARENT_ID,A.DEP_CREATE,APR.REQ_CODE AS REQ_PARENT_CODE, CASE WHEN DVC.BRANCH_TYPE ='HS' THEN CDC.DEP_NAME ELSE DVC.BRANCH_NAME END AS DEP_CREATE_NAME, CDC.DEP_CODE AS DEP_CREATE_CODE,A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,PLRD.TOTAL_AMT AS GIATRI_TO_TRINH, ------------BAODNQ 11/8/2022 : Lấy đơn vị yêu cầu------------- --------------Nếu ĐV tạo ở HS, lấy thêm phòng ban, ngược lại chỉ lấy ĐV------- CASE WHEN (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE) = 'HS' THEN CDC.DEP_NAME + ' - ' + DVC.BRANCH_NAME ELSE DVC.BRANCH_NAME END AS BRANCH_DEP_REQUEST -- SELECT END FROM TR_REQUEST_DOC A LEFT JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <>'U' AND PLRP.PROCESS_ID = 'DMMS' LEFT JOIN dbo.PL_REQUEST_DOC PLRD ON A.PL_REQ_ID=PLRD.REQ_ID LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_DO=G.BRANCH_ID LEFT JOIN dbo.TL_USER U ON U.TLNANME =A.USER_REQUEST LEFT JOIN dbo.TL_USER UMS ON UMS.TLNANME =A.USER_DVMS LEFT JOIN dbo.CM_BRANCH DVMS ON DVMS.BRANCH_ID=A.BRANCH_DVMS LEFT JOIN dbo.CM_BRANCH DVC ON DVC.BRANCH_ID=A.BRANCH_CREATE LEFT JOIN dbo.CM_DEPARTMENT CDC ON CDC.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TR_REQUEST_DOC APR ON APR.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.TL_USER UM ON UM.TLNANME=A.MAKER_ID LEFT JOIN CM_DEPARTMENT DEP ON UM.SECUR_CODE = DEP.DEP_ID LEFT JOIN ( SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM dbo.PL_REQUEST_PROCESS GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES ) RPN ON RPN.REQ_ID=A.REQ_ID AND( [RPN].[STATUS]='C' OR [RPN].[STATUS]='R') LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') AND A.PROCESS_ID <>'PDHT' LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN ( SELECT DMMS_ID,DEP_NAME+'-'+BRANCH_NAME AS DMMS_NAME FROM dbo.CM_DMMS LEFT JOIN dbo.CM_BRANCH ON CM_BRANCH.BRANCH_ID=CM_DMMS.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT ON CM_DEPARTMENT.DEP_ID = CM_DMMS.DEP_ID UNION ALL SELECT DVDM_ID AS DMMS_ID ,DVDM_NAME AS DMMS_NAME FROM dbo.CM_DVDM )CMS ON CMS.DMMS_ID=A.DMMS_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.IS_KT = @p_IS_KT OR @p_IS_KT IS NULL) AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) --AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (CAST(A.CREATE_DT AS DATE)=CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (CAST(A.APPROVE_DT AS DATE) = CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (@p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS='' OR (RPC.TYPE_JOB LIKE '%' + @p_PROCESS_STATUS + '%' AND (@p_PROCESS_STATUS='KS' OR @p_PROCESS_STATUS='TP') AND EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD Temp WHERE Temp.REQ_ID=A.REQ_ID AND Temp.STATUS_JOB='P' AND Temp.TYPE_JOB='XL') OR (RPC.TYPE_JOB LIKE '%' + @p_PROCESS_STATUS + '%' AND @p_PROCESS_STATUS='XL') OR A.USER_DVMS =@p_TLNAME_USER ) ) 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.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '' --OR A.DEP_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' --) AND (A.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') --------------------------BAODNQ 21/10/2022 SEARCH THEO DEP_CREATE--------------------------- AND (A.DEP_CREATE LIKE '%' + @p_DEP_CREATE + '%' OR @p_DEP_CREATE IS NULL OR @p_DEP_CREATE = '') AND (PLRD.REQ_CODE LIKE '%' + @p_PL_REQ_CODE + '%' OR @p_PL_REQ_CODE IS NULL OR @p_PL_REQ_CODE = '') AND (A.PL_REQ_ID LIKE '%' + @p_PL_REQ_ID + '%' OR @p_PL_REQ_ID IS NULL OR @p_PL_REQ_ID = '') AND A.RECORD_STATUS = '1' AND ( EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DMMS AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND A.DMMS_ID=AUTH.DMMS_ID AND A.PROCESS_ID='DMMS') OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND A.DMMS_ID=AUTH.DVDM_ID AND A.PROCESS_ID='DMMS') OR EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND PROCESS_ID=PLRP.ID AND PLRP.PROCESS_ID='DMMS') OR(A.USER_DVMS =@p_TLNAME_USER) ) AND (( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') OR( @p_AUTH_STATUS='U' AND A.PROCESS_ID <> 'APPROVE') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') 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( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') -- LUCTV: 10-03-2021 BO SUNG DIEU KIEN NEU CHUA DIEU PHOI THI KHONG TIM THAY O MAN HINH DMMS --AND ((EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =A.REQ_ID AND TLNAME = @p_TLNAME_USER AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =A.REQ_ID)) OR LEN(A.REQ_CODE) >15)) ----------BAODNQ 17/10/2022 : Chỉ tìm thấy phiếu ở màn hình ĐMMS khi đã có điều phối cho NVXL-------------- AND(EXISTS( SELECT ID FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_ID AND PROCESS_ID = (SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID = 'DMMS') AND TYPE_JOB = 'XL' ) ) -------------------------------------END BAODNQ----------------------------------- ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='PDYC') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT, A.REQ_TYPE,A.IS_KT, A.REQ_REASON, A.REQ_CONTENT,A.PL_REQ_ID,A.TOTAL_AMT AS TOTAL_AMT, A.NOTES, A.RECORD_STATUS,A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.BRANCH_DO, A.PROCESS_ID,A.BRANCH_CREATE, A.USER_REQUEST,U.TLFullName AS USER_REQUEST_NAME, D.AUTH_STATUS_NAME,UDV.TLFullName AS CHECKER_NAME,UMS.TLFullName AS USER_DVMS_NAME,UM.TLFullName AS MAKER_NAME, CMS.DMMS_NAME,A.DMMS_ID, RP.NOTES AS PROCESS_STATUS,RP.APPROVE_DT AS PROCESS_APP_DT,UP.TLFullName AS PROCESS_CHECKER_NAME, PLRP.ROLE_USER, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_PROCESS_NAME, RPN.NOTES AS PROCESS_STATUS_NEXT ,G.BRANCH_NAME AS BRANCH_DO_NAME,G.BRANCH_CODE AS BRANCH_DO_CODE,PLRD.REQ_CODE AS PL_REQ_CODE, DVMS.BRANCH_CODE AS BRANCH_CODE_DVMS,DVMS.BRANCH_NAME AS BRANCH_NAME_DVMS,DVC.BRANCH_CODE AS BRANCH_CREATE_CODE, DVC.BRANCH_NAME AS BRANCH_CREATE_NAME, PLRD.REQ_NAME AS PL_REQ_NAME,RPC.TYPE_JOB,RPC.TLNAME AS USER_JOB,TU.TLFullName AS USER_JOB_NAME,TFM.TLFullName AS TRANSFER_MAKER,RPC.TRANFER_DT ,RPC.MAKER_ID AS TRANSFER_MAKER_ID, '' AS TYPE_JOB_XL,'' AS USER_JOB_XL,PLRD.REQ_CODE AS SO_TT_CT, PLRD.REQ_DT AS NGAY_NHAN_TT, PLRD.EFFEC_DT NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME, '' AS NCC_ADDR,PLRP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB,A.REQ_PARENT_ID,A.DEP_CREATE,APR.REQ_CODE AS REQ_PARENT_CODE,CDC.DEP_NAME AS DEP_CREATE_NAME,CDC.DEP_CODE AS DEP_CREATE_CODE, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY, ------------BAODNQ 11/8/2022 : Lấy đơn vị yêu cầu------------- --------------Nếu ĐV tạo ở HS, lấy thêm phòng ban, ngược lại chỉ lấy ĐV------- CASE WHEN (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE) = 'HS' THEN CDC.DEP_NAME + ' - ' + DVC.BRANCH_NAME ELSE DVC.BRANCH_NAME END AS BRANCH_DEP_REQUEST -- SELECT END FROM TR_REQUEST_DOC A INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS<>'U' LEFT JOIN dbo.PL_REQUEST_DOC PLRD ON A.PL_REQ_ID=PLRD.REQ_ID LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_DO=G.BRANCH_ID LEFT JOIN dbo.TL_USER U ON U.TLNANME =A.USER_REQUEST LEFT JOIN dbo.TL_USER UMS ON UMS.TLNANME =A.USER_DVMS LEFT JOIN dbo.CM_BRANCH DVMS ON DVMS.BRANCH_ID=A.BRANCH_DVMS LEFT JOIN dbo.CM_BRANCH DVC ON DVC.BRANCH_ID=A.BRANCH_CREATE LEFT JOIN dbo.CM_DEPARTMENT CDC ON CDC.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TR_REQUEST_DOC APR ON APR.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.TL_USER UM ON UM.TLNANME=A.MAKER_ID LEFT JOIN ( SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM dbo.PL_REQUEST_PROCESS GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES ) RPN ON RPN.REQ_ID=A.REQ_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R') LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.REQ_ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN ( SELECT DMMS_ID,DEP_NAME+'-'+BRANCH_NAME AS DMMS_NAME FROM dbo.CM_DMMS LEFT JOIN dbo.CM_BRANCH ON CM_BRANCH.BRANCH_ID=CM_DMMS.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT ON CM_DEPARTMENT.DEP_ID = CM_DMMS.DEP_ID UNION ALL SELECT DVDM_ID AS DMMS_ID ,DVDM_NAME AS DMMS_NAME FROM dbo.CM_DVDM )CMS ON CMS.DMMS_ID=A.DMMS_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.IS_KT = @p_IS_KT OR @p_IS_KT IS NULL) AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (CAST(A.CREATE_DT AS DATE)=CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (CAST(A.APPROVE_DT AS DATE) = CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (A.PROCESS_ID LIKE '%' + @p_PROCESS_STATUS + '%' OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS='') --AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_ID))) 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.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '' --OR A.DEP_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' --) AND (A.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') --------------------------BAODNQ 21/10/2022 SEARCH THEO DEP_CREATE--------------------------- AND (A.DEP_CREATE LIKE '%' + @p_DEP_CREATE + '%' OR @p_DEP_CREATE IS NULL OR @p_DEP_CREATE = '') AND (PLRD.REQ_CODE LIKE '%' + @p_PL_REQ_CODE + '%' OR @p_PL_REQ_CODE IS NULL OR @p_PL_REQ_CODE = '') AND (A.PL_REQ_ID LIKE '%' + @p_PL_REQ_ID + '%' OR @p_PL_REQ_ID IS NULL OR @p_PL_REQ_ID = '') AND A.RECORD_STATUS = '1' --AND (PLRP.ROLE_USER=@p_ROLE_USER OR PLRP.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_USER)) AND PLRP.PROCESS_ID <>'DMMS' AND PLRP.PROCESS_ID<>'APPNEW' AND ( -- (PLRP.DVDM_ID IN (SELECT DVDM_ID FROM @COST_ID) OR PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL)) AND (EXISTS( SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND (PLRP.DVDM_ID=AUTH.DVDM_ID OR PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL) AND PLRP.PROCESS_ID <>'DMMS' AND PLRP.PROCESS_ID<>'APPNEW' AND PLRP.PROCESS_ID <> 'DVCM' -----------------------BAODNQ 15/8/2022 : Chờ duyệt chỉ hiện những phiếu đến mình duyệt-------- AND ((@p_AUTH_STATUS = 'U' AND PLRP.STATUS = 'C') OR (@p_AUTH_STATUS <> 'U') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '' ) ) ) AND ( ( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') OR( @p_AUTH_STATUS='U' AND A.PROCESS_ID <> 'APPROVE') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') 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( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='DVCM') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT, A.REQ_TYPE,A.IS_KT, A.REQ_REASON, A.REQ_CONTENT,A.PL_REQ_ID,ISNULL(A.TOTAL_AMT,0.00) AS TOTAL_AMT, A.NOTES, A.RECORD_STATUS,A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.BRANCH_DO, A.PROCESS_ID,A.BRANCH_CREATE, A.USER_REQUEST,U.TLFullName AS USER_REQUEST_NAME, D.AUTH_STATUS_NAME,UDV.TLFullName AS CHECKER_NAME,UMS.TLFullName AS USER_DVMS_NAME,UM.TLFullName AS MAKER_NAME, CMS.DMMS_NAME,A.DMMS_ID, RP.NOTES AS PROCESS_STATUS,RP.APPROVE_DT AS PROCESS_APP_DT,UP.TLFullName AS PROCESS_CHECKER_NAME, PLRP.ROLE_USER, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_PROCESS_NAME, RPN.NOTES AS PROCESS_STATUS_NEXT ,G.BRANCH_NAME AS BRANCH_DO_NAME,G.BRANCH_CODE AS BRANCH_DO_CODE,PLRD.REQ_CODE AS PL_REQ_CODE, DVMS.BRANCH_CODE AS BRANCH_CODE_DVMS,DVMS.BRANCH_NAME AS BRANCH_NAME_DVMS,DVC.BRANCH_CODE AS BRANCH_CREATE_CODE, DVC.BRANCH_NAME AS BRANCH_CREATE_NAME, PLRD.REQ_NAME AS PL_REQ_NAME,RPC.TYPE_JOB,RPC.TLNAME AS USER_JOB,TU.TLFullName AS USER_JOB_NAME,TFM.TLFullName AS TRANSFER_MAKER,RPC.TRANFER_DT ,RPC.MAKER_ID AS TRANSFER_MAKER_ID, '' AS TYPE_JOB_XL,'' AS USER_JOB_XL,PLRD.REQ_CODE AS SO_TT_CT, PLRD.REQ_DT AS NGAY_NHAN_TT, PLRD.EFFEC_DT NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME, '' AS NCC_ADDR,PLRP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB,A.REQ_PARENT_ID,A.DEP_CREATE,APR.REQ_CODE AS REQ_PARENT_CODE,CDC.DEP_NAME AS DEP_CREATE_NAME,CDC.DEP_CODE AS DEP_CREATE_CODE,A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,PLRD.TOTAL_AMT AS GIATRI_TO_TRINH, ------------BAODNQ 11/8/2022 : Lấy đơn vị yêu cầu------------- --------------Nếu ĐV tạo ở HS, lấy thêm phòng ban, ngược lại chỉ lấy ĐV------- CASE WHEN (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE) = 'HS' THEN CDC.DEP_NAME + ' - ' + DVC.BRANCH_NAME ELSE DVC.BRANCH_NAME END AS BRANCH_DEP_REQUEST -- SELECT END FROM TR_REQUEST_DOC A INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS<>'U' LEFT JOIN dbo.PL_REQUEST_DOC PLRD ON A.PL_REQ_ID=PLRD.REQ_ID LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_DO=G.BRANCH_ID LEFT JOIN dbo.TL_USER U ON U.TLNANME =A.USER_REQUEST LEFT JOIN dbo.TL_USER UMS ON UMS.TLNANME =A.USER_DVMS LEFT JOIN dbo.CM_BRANCH DVMS ON DVMS.BRANCH_ID=A.BRANCH_DVMS LEFT JOIN dbo.CM_BRANCH DVC ON DVC.BRANCH_ID=A.BRANCH_CREATE LEFT JOIN dbo.CM_DEPARTMENT CDC ON CDC.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TR_REQUEST_DOC APR ON APR.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.TL_USER UM ON UM.TLNANME=A.MAKER_ID LEFT JOIN ( SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM dbo.PL_REQUEST_PROCESS GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES ) RPN ON RPN.REQ_ID=A.REQ_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R') LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') AND A.PROCESS_ID <>'PDHT' LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN ( SELECT DMMS_ID,DEP_NAME+'-'+BRANCH_NAME AS DMMS_NAME FROM dbo.CM_DMMS LEFT JOIN dbo.CM_BRANCH ON CM_BRANCH.BRANCH_ID=CM_DMMS.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT ON CM_DEPARTMENT.DEP_ID = CM_DMMS.DEP_ID UNION ALL SELECT DVDM_ID AS DMMS_ID ,DVDM_NAME AS DMMS_NAME FROM dbo.CM_DVDM )CMS ON CMS.DMMS_ID=A.DMMS_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.IS_KT = @p_IS_KT OR @p_IS_KT IS NULL) AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) --AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (CAST(A.CREATE_DT AS DATE)=CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (CAST(A.APPROVE_DT AS DATE) = CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (A.PROCESS_ID LIKE '%' + @p_PROCESS_STATUS + '%' OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS='') --AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_ID))) 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.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '' --OR A.DEP_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' --) AND (A.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') --------------------------BAODNQ 21/10/2022 SEARCH THEO DEP_CREATE--------------------------- AND (A.DEP_CREATE LIKE '%' + @p_DEP_CREATE + '%' OR @p_DEP_CREATE IS NULL OR @p_DEP_CREATE = '') AND (PLRD.REQ_CODE LIKE '%' + @p_PL_REQ_CODE + '%' OR @p_PL_REQ_CODE IS NULL OR @p_PL_REQ_CODE = '') AND (A.PL_REQ_ID LIKE '%' + @p_PL_REQ_ID + '%' OR @p_PL_REQ_ID IS NULL OR @p_PL_REQ_ID = '') AND A.RECORD_STATUS = '1' AND (( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') OR( @p_AUTH_STATUS='U' AND A.PROCESS_ID <> 'APPROVE') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND(((PLRP.ROLE_USER=@p_ROLE_USER OR PLRP.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_USER)) AND ((PLRP.DVDM_ID IN (SELECT DVDM_ID FROM @COST_ID) ))) OR (EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID AND PLRP.PROCESS_ID='DVCM') )) AND ( EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND PLRP.DVDM_ID=AUTH.DVDM_ID) OR EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID AND PLRP.PROCESS_ID='DVCM') ) 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( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='PLDVCM') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT, A.REQ_TYPE,A.IS_KT, A.REQ_REASON, A.REQ_CONTENT,A.PL_REQ_ID,ISNULL(A.TOTAL_AMT,0.00) AS TOTAL_AMT, A.NOTES, A.RECORD_STATUS,A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.BRANCH_DO, A.PROCESS_ID,A.BRANCH_CREATE, A.USER_REQUEST,U.TLFullName AS USER_REQUEST_NAME, D.AUTH_STATUS_NAME,UDV.TLFullName AS CHECKER_NAME,UMS.TLFullName AS USER_DVMS_NAME,UM.TLFullName AS MAKER_NAME, CMS.DMMS_NAME,A.DMMS_ID, RP.NOTES AS PROCESS_STATUS,RP.APPROVE_DT AS PROCESS_APP_DT,UP.TLFullName AS PROCESS_CHECKER_NAME, --PLRP.ROLE_USER, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Hoàn tất' ELSE N'Chưa hoàn tất' END AS AUTH_STATUS_PROCESS_NAME, RPN.NOTES AS PROCESS_STATUS_NEXT ,G.BRANCH_NAME AS BRANCH_DO_NAME,G.BRANCH_CODE AS BRANCH_DO_CODE,PLRD.REQ_CODE AS PL_REQ_CODE, DVMS.BRANCH_CODE AS BRANCH_CODE_DVMS,DVMS.BRANCH_NAME AS BRANCH_NAME_DVMS,DVC.BRANCH_CODE AS BRANCH_CREATE_CODE, DVC.BRANCH_NAME AS BRANCH_CREATE_NAME, PLRD.REQ_NAME AS PL_REQ_NAME, --RPC.TYPE_JOB,RPC.TLNAME AS USER_JOB,TU.TLFullName AS USER_JOB_NAME,TFM.TLFullName AS TRANSFER_MAKER,RPC.TRANFER_DT ,RPC.MAKER_ID AS TRANSFER_MAKER_ID, '' AS TYPE_JOB, '' AS USER_JOB, '' AS TYPE_JOB_XL,'' AS USER_JOB_XL,PLRD.REQ_CODE AS SO_TT_CT, PLRD.REQ_DT AS NGAY_NHAN_TT, PLRD.EFFEC_DT NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME, '' AS NCC_ADDR, --PLRP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, --PLRP.STATUS AS STATUS_CURR, --RPC.STATUS_JOB AS STATUS_JOB, A.REQ_PARENT_ID,A.DEP_CREATE,APR.REQ_CODE AS REQ_PARENT_CODE,CDC.DEP_NAME AS DEP_CREATE_NAME,CDC.DEP_CODE AS DEP_CREATE_CODE,A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY, --------------BAODNQ 27/10/2022 : BỔ SUNG THÔNG TIN---------- PLRD.TOTAL_AMT AS GIATRI_TO_TRINH, CASE WHEN (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE) = 'HS' THEN CDC.DEP_NAME + ' - ' + DVC.BRANCH_NAME ELSE DVC.BRANCH_NAME END AS BRANCH_DEP_REQUEST -- SELECT END FROM TR_REQUEST_DOC A --INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS<>'U' LEFT JOIN dbo.PL_REQUEST_DOC PLRD ON A.PL_REQ_ID=PLRD.REQ_ID LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_DO=G.BRANCH_ID LEFT JOIN dbo.TL_USER U ON U.TLNANME =A.USER_REQUEST LEFT JOIN dbo.TL_USER UMS ON UMS.TLNANME =A.USER_DVMS LEFT JOIN dbo.CM_BRANCH DVMS ON DVMS.BRANCH_ID=A.BRANCH_DVMS LEFT JOIN dbo.CM_BRANCH DVC ON DVC.BRANCH_ID=A.BRANCH_CREATE LEFT JOIN dbo.CM_DEPARTMENT CDC ON CDC.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TR_REQUEST_DOC APR ON APR.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.TL_USER UM ON UM.TLNANME=A.MAKER_ID LEFT JOIN ( SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM dbo.PL_REQUEST_PROCESS GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES ) RPN ON RPN.REQ_ID=A.REQ_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R') LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID --LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') AND A.PROCESS_ID <>'PDHT' --LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID --LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN ( SELECT DMMS_ID,DEP_NAME+'-'+BRANCH_NAME AS DMMS_NAME FROM dbo.CM_DMMS LEFT JOIN dbo.CM_BRANCH ON CM_BRANCH.BRANCH_ID=CM_DMMS.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT ON CM_DEPARTMENT.DEP_ID = CM_DMMS.DEP_ID UNION ALL SELECT DVDM_ID AS DMMS_ID ,DVDM_NAME AS DMMS_NAME FROM dbo.CM_DVDM )CMS ON CMS.DMMS_ID=A.DMMS_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.IS_KT = @p_IS_KT OR @p_IS_KT IS NULL) AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (CAST(A.CREATE_DT AS DATE)=CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (CAST(A.APPROVE_DT AS DATE) = CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (A.PROCESS_ID LIKE '%' + @p_PROCESS_STATUS + '%' OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS='') --AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_ID))) 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.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '' --OR A.DEP_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' --) AND (A.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') --------------------------BAODNQ 21/10/2022 SEARCH THEO DEP_CREATE--------------------------- AND (A.DEP_CREATE LIKE '%' + @p_DEP_CREATE + '%' OR @p_DEP_CREATE IS NULL OR @p_DEP_CREATE = '') AND (PLRD.REQ_CODE LIKE '%' + @p_PL_REQ_CODE + '%' OR @p_PL_REQ_CODE IS NULL OR @p_PL_REQ_CODE = '') AND (A.PL_REQ_ID LIKE '%' + @p_PL_REQ_ID + '%' OR @p_PL_REQ_ID IS NULL OR @p_PL_REQ_ID = '') AND A.RECORD_STATUS = '1' AND (( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') OR( @p_AUTH_STATUS='U' AND A.PROCESS_ID <> 'APPROVE') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') --AND( EXISTS ( -- SELECT * FROM PL_REQUEST_COSTCENTER PRC -- INNER JOIN @COST_ID COST ON PRC.COST_ID = COST.DVDM_ID -- WHERE PRC.REQ_ID = A.PL_REQ_ID -- ) -- OR @DEP_ID='DEP000000000022' -- ) 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( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND(((PLRP.ROLE_USER=@p_ROLE_USER OR PLRP.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_USER)) AND ((PLRP.DVDM_ID IN (SELECT DVDM_ID FROM @COST_ID) ))) -- OR (EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID) )) ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='DVKD_PARENT' ) BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT, A.REQ_TYPE,A.IS_KT, A.REQ_REASON, A.REQ_CONTENT,A.PL_REQ_ID,A.TOTAL_AMT AS TOTAL_AMT, A.NOTES, A.RECORD_STATUS,A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.BRANCH_DO, A.PROCESS_ID,A.BRANCH_CREATE, A.USER_REQUEST,U.TLFullName AS USER_REQUEST_NAME, D.AUTH_STATUS_NAME,UDV.TLFullName AS CHECKER_NAME,UMS.TLFullName AS USER_DVMS_NAME,UM.TLFullName AS MAKER_NAME, '' AS DMMS_NAME,A.DMMS_ID, --CMS.DMMS_NAME,A.DMMS_ID, --RP.NOTES AS PROCESS_STATUS, '' AS PROCESS_STATUS, -- RP.APPROVE_DT AS PROCESS_APP_DT, NULL AS PROCESS_APP_DT, -- UP.TLFullName AS PROCESS_CHECKER_NAME, '' AS PROCESS_CHECKER_NAME, --RP.ROLE_USER, '' AS ROLE_USER, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_PROCESS_NAME, --RPN.NOTES AS PROCESS_STATUS_NEXT '' AS PROCESS_STATUS_NEXT, G.BRANCH_NAME AS BRANCH_DO_NAME,G.BRANCH_CODE AS BRANCH_DO_CODE,PLRD.REQ_CODE AS PL_REQ_CODE, DVMS.BRANCH_CODE AS BRANCH_CODE_DVMS,DVMS.BRANCH_NAME AS BRANCH_NAME_DVMS,DVC.BRANCH_CODE AS BRANCH_CREATE_CODE, DVC.BRANCH_NAME AS BRANCH_CREATE_NAME, PLRD.REQ_NAME AS PL_REQ_NAME,'' TYPE_JOB,'' AS USER_JOB,'' AS USER_JOB_NAME,'' AS TRANSFER_MAKER,CAST(NULL AS DATETIME) AS TRANFER_DT , '' AS TRANSFER_MAKER_ID,'' AS TYPE_JOB_XL,'' AS USER_JOB_XL,PLRD.REQ_CODE AS SO_TT_CT, PLRD.REQ_DT AS NGAY_NHAN_TT, PLRD.EFFEC_DT NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME, '' AS NCC_ADDR, --RP.ID AS REF_ID, NULL AS REF_ID, -- RPN.STATUS AS STATUS_NEXT, -- RP.STATUS AS STATUS_CURR, '' AS STATUS_NEXT, '' AS STATUS_CURR, '' AS STATUS_JOB,A.REQ_PARENT_ID,A.DEP_CREATE,APR.REQ_CODE AS REQ_PARENT_CODE,CDC.DEP_NAME AS DEP_CREATE_NAME,CDC.DEP_CODE AS DEP_CREATE_CODE,A.SIGN_USER, --TL.TLFullName AS SIGN_USER_NAME, '' AS SIGN_USER_NAME, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) AS NGUOIXULY --NXL.NGUOIXULY AS NGUOIXULY '' AS NGUOIXULY -- SELECT END FROM TR_REQUEST_DOC A LEFT JOIN dbo.PL_REQUEST_DOC PLRD ON A.PL_REQ_ID=PLRD.REQ_ID LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_DO=G.BRANCH_ID LEFT JOIN dbo.TL_USER U ON U.TLNANME =A.USER_REQUEST LEFT JOIN dbo.TL_USER UMS ON UMS.TLNANME =A.USER_DVMS LEFT JOIN dbo.CM_BRANCH DVMS ON DVMS.BRANCH_ID=A.BRANCH_DVMS LEFT JOIN dbo.CM_BRANCH DVC ON DVC.BRANCH_ID=A.BRANCH_CREATE LEFT JOIN dbo.CM_DEPARTMENT CDC ON CDC.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TR_REQUEST_DOC APR ON APR.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.TL_USER UM ON UM.TLNANME=A.MAKER_ID --LEFT JOIN --( -- SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM -- dbo.PL_REQUEST_PROCESS -- GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES --) RPN ON RPN.REQ_ID=A.REQ_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R') --LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) --LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID --LEFT JOIN --( -- SELECT DMMS_ID,DEP_NAME+'-'+BRANCH_NAME AS DMMS_NAME FROM -- dbo.CM_DMMS -- LEFT JOIN dbo.CM_BRANCH ON CM_BRANCH.BRANCH_ID=CM_DMMS.BRANCH_ID -- LEFT JOIN dbo.CM_DEPARTMENT ON CM_DEPARTMENT.DEP_ID = CM_DMMS.DEP_ID -- UNION ALL -- SELECT DVDM_ID AS DMMS_ID ,DVDM_NAME AS DMMS_NAME -- FROM dbo.CM_DVDM --)CMS ON CMS.DMMS_ID=A.DMMS_ID --LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME --LEFT JOIN --( --SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName --FROM @lstREQUEST RE --WHERE RE.REQ_ID=Results.REQ_ID --FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, --STUFF((select ', ' + RE.TLNAME --FROM @lstREQUEST RE --WHERE RE.REQ_ID=Results.REQ_ID --FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME --FROM @lstREQUEST Results --GROUP BY REQ_ID --) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.IS_KT = @p_IS_KT OR @p_IS_KT IS NULL) AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') -------------BAODNQ 2/11/2022 Tìm theo USER_LOGIN là ng xử lý PYCMS hoặc là ng tạo----------------- AND(A.USER_DVMS = @p_TLNAME_USER OR A.MAKER_ID = @p_TLNAME_USER OR (EXISTS(SELECT * FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE ='TR_REQUEST_DOC_ALL' AND BRANCH_ID =@p_TLNAME_USER)) ) -------------------------------------ENDBAODNQ---------------------- AND (CAST(A.CREATE_DT AS DATE)=CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (CAST(A.APPROVE_DT AS DATE) = CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') --AND (A.PROCESS_ID LIKE '%' + @p_PROCESS_STATUS + '%' OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS='') --AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_ID))) 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.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') --AND (A.PL_REQ_ID LIKE '%' + @p_PL_REQ_CODE + '%' OR @p_PL_REQ_CODE IS NULL OR @p_PL_REQ_CODE = '') AND A.RECORD_STATUS = '1' --AND (A.BRANCH_CREATE =@p_BRANCH_LOGIN AND (A.DEP_CREATE=@DEP_ID OR A.DEP_CREATE ='' OR A.DEP_CREATE IS NULL)) --AND (( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') OR( @p_AUTH_STATUS='U' AND A.PROCESS_ID <> 'APPROVE') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.PROCESS_ID ='APPROVE') 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_PARENT_ID IS NULL OR A.REQ_PARENT_ID='') --AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' --OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='DMMS_PARENT') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT, A.REQ_TYPE,A.IS_KT, A.REQ_REASON, A.REQ_CONTENT,A.PL_REQ_ID,A.TOTAL_AMT AS TOTAL_AMT, A.NOTES, A.RECORD_STATUS,A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.BRANCH_DO, A.PROCESS_ID,A.BRANCH_CREATE, A.USER_REQUEST,U.TLFullName AS USER_REQUEST_NAME, D.AUTH_STATUS_NAME,UDV.TLFullName AS CHECKER_NAME,UMS.TLFullName AS USER_DVMS_NAME,UM.TLFullName AS MAKER_NAME, CMS.DMMS_NAME,A.DMMS_ID, RP.NOTES AS PROCESS_STATUS,RP.APPROVE_DT AS PROCESS_APP_DT,UP.TLFullName AS PROCESS_CHECKER_NAME, RP.ROLE_USER, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_PROCESS_NAME, RPN.NOTES AS PROCESS_STATUS_NEXT ,G.BRANCH_NAME AS BRANCH_DO_NAME,G.BRANCH_CODE AS BRANCH_DO_CODE,PLRD.REQ_CODE AS PL_REQ_CODE, DVMS.BRANCH_CODE AS BRANCH_CODE_DVMS,DVMS.BRANCH_NAME AS BRANCH_NAME_DVMS,DVC.BRANCH_CODE AS BRANCH_CREATE_CODE, DVC.BRANCH_NAME AS BRANCH_CREATE_NAME, PLRD.REQ_NAME AS PL_REQ_NAME,RPC.TYPE_JOB,RPC.TLNAME AS USER_JOB,TU.TLFullName AS USER_JOB_NAME,TFM.TLFullName AS TRANSFER_MAKER,RPC.TRANFER_DT ,RPC.MAKER_ID AS TRANSFER_MAKER_ID, '' AS TYPE_JOB_XL,'' AS USER_JOB_XL,PLRD.REQ_CODE AS SO_TT_CT, PLRD.REQ_DT AS NGAY_NHAN_TT, PLRD.EFFEC_DT NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME, '' AS NCC_ADDR,PLRP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB,A.REQ_PARENT_ID,A.DEP_CREATE,APR.REQ_CODE AS REQ_PARENT_CODE,CDC.DEP_NAME AS DEP_CREATE_NAME,CDC.DEP_CODE AS DEP_CREATE_CODE,A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY -- SELECT END FROM TR_REQUEST_DOC A INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <>'U' LEFT JOIN dbo.PL_REQUEST_DOC PLRD ON A.PL_REQ_ID=PLRD.REQ_ID LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_DO=G.BRANCH_ID LEFT JOIN dbo.TL_USER U ON U.TLNANME =A.USER_REQUEST LEFT JOIN dbo.TL_USER UMS ON UMS.TLNANME =A.USER_DVMS LEFT JOIN dbo.CM_BRANCH DVMS ON DVMS.BRANCH_ID=A.BRANCH_DVMS LEFT JOIN dbo.CM_BRANCH DVC ON DVC.BRANCH_ID=A.BRANCH_CREATE LEFT JOIN dbo.CM_DEPARTMENT CDC ON CDC.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TR_REQUEST_DOC APR ON APR.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.TL_USER UM ON UM.TLNANME=A.MAKER_ID LEFT JOIN ( SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM dbo.PL_REQUEST_PROCESS GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES ) RPN ON RPN.REQ_ID=A.REQ_ID AND( [RPN].[STATUS]='C' OR [RPN].[STATUS]='R') LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') AND A.PROCESS_ID <>'PDHT' LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN ( SELECT DMMS_ID,DEP_NAME+'-'+BRANCH_NAME AS DMMS_NAME FROM dbo.CM_DMMS LEFT JOIN dbo.CM_BRANCH ON CM_BRANCH.BRANCH_ID=CM_DMMS.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT ON CM_DEPARTMENT.DEP_ID = CM_DMMS.DEP_ID UNION ALL SELECT DVDM_ID AS DMMS_ID ,DVDM_NAME AS DMMS_NAME FROM dbo.CM_DVDM )CMS ON CMS.DMMS_ID=A.DMMS_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.IS_KT = @p_IS_KT OR @p_IS_KT IS NULL) AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (CAST(A.CREATE_DT AS DATE)=CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (CAST(A.APPROVE_DT AS DATE) = CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (A.PROCESS_ID LIKE '%' + @p_PROCESS_STATUS + '%' OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS='') --AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_ID))) 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.BRANCH_CREATE LIKE '%' + @p_BRANCH_CREATE + '%' OR @p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE = '') AND (A.PL_REQ_ID LIKE '%' + @p_PL_REQ_CODE + '%' OR @p_PL_REQ_CODE IS NULL OR @p_PL_REQ_CODE = '') AND A.RECORD_STATUS = '1' AND (((PLRP.ROLE_USER=@p_ROLE_USER OR PLRP.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_USER)) AND ( A.DMMS_ID IN (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID =@p_BRANCH_LOGIN AND (DEP_ID=@DEP_ID OR @BRANCH_TYPE <>'HS')) OR A.DMMS_ID IN (SELECT DVDM_ID FROM @COST_ID) )OR (EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND PROCESS_ID=PLRP.ID) )) OR A.USER_DVMS=@p_TLNAME_USER) AND (( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') OR( @p_AUTH_STATUS='U' AND A.PROCESS_ID <> 'APPROVE') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') 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_PARENT_ID IS NULL OR A.REQ_PARENT_ID='') AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='TTCT' ) BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT, A.REQ_TYPE,A.IS_KT, A.REQ_REASON, A.REQ_CONTENT,A.PL_REQ_ID,A.TOTAL_AMT AS TOTAL_AMT, A.NOTES, A.RECORD_STATUS,A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.BRANCH_DO, A.PROCESS_ID,A.BRANCH_CREATE, A.USER_REQUEST,U.TLFullName AS USER_REQUEST_NAME, D.AUTH_STATUS_NAME,UDV.TLFullName AS CHECKER_NAME,UMS.TLFullName AS USER_DVMS_NAME,UM.TLFullName AS MAKER_NAME, CMS.DMMS_NAME,A.DMMS_ID, RP.NOTES AS PROCESS_STATUS,RP.APPROVE_DT AS PROCESS_APP_DT,UP.TLFullName AS PROCESS_CHECKER_NAME, RP.ROLE_USER, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_PROCESS_NAME, RPN.NOTES AS PROCESS_STATUS_NEXT ,G.BRANCH_NAME AS BRANCH_DO_NAME,G.BRANCH_CODE AS BRANCH_DO_CODE,PLRD.REQ_CODE AS PL_REQ_CODE, DVMS.BRANCH_CODE AS BRANCH_CODE_DVMS,DVMS.BRANCH_NAME AS BRANCH_NAME_DVMS,DVC.BRANCH_CODE AS BRANCH_CREATE_CODE, DVC.BRANCH_NAME AS BRANCH_CREATE_NAME, PLRD.REQ_NAME AS PL_REQ_NAME,'' TYPE_JOB,'' AS USER_JOB,'' AS USER_JOB_NAME,'' AS TRANSFER_MAKER,CAST(NULL AS DATETIME) AS TRANFER_DT , '' AS TRANSFER_MAKER_ID,'' AS TYPE_JOB_XL,'' AS USER_JOB_XL,PLRD.REQ_CODE AS SO_TT_CT, PLRD.REQ_DT AS NGAY_NHAN_TT, PLRD.EFFEC_DT NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME, '' AS NCC_ADDR,RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB,A.REQ_PARENT_ID,A.DEP_CREATE,APR.REQ_CODE AS REQ_PARENT_CODE,CDC.DEP_NAME AS DEP_CREATE_NAME,CDC.DEP_CODE AS DEP_CREATE_CODE,A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY -- SELECT END FROM TR_REQUEST_DOC A LEFT JOIN dbo.PL_REQUEST_DOC PLRD ON A.PL_REQ_ID=PLRD.REQ_ID LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_DO=G.BRANCH_ID LEFT JOIN dbo.TL_USER U ON U.TLNANME =A.USER_REQUEST LEFT JOIN dbo.TL_USER UMS ON UMS.TLNANME =A.USER_DVMS LEFT JOIN dbo.CM_BRANCH DVMS ON DVMS.BRANCH_ID=A.BRANCH_DVMS LEFT JOIN dbo.CM_BRANCH DVC ON DVC.BRANCH_ID=A.BRANCH_CREATE LEFT JOIN dbo.CM_DEPARTMENT CDC ON CDC.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TR_REQUEST_DOC APR ON APR.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.TL_USER UM ON UM.TLNANME=A.MAKER_ID LEFT JOIN ( SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM dbo.PL_REQUEST_PROCESS GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES ) RPN ON RPN.REQ_ID=A.REQ_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R') LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN ( SELECT DMMS_ID,DEP_NAME+'-'+BRANCH_NAME AS DMMS_NAME FROM dbo.CM_DMMS LEFT JOIN dbo.CM_BRANCH ON CM_BRANCH.BRANCH_ID=CM_DMMS.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT ON CM_DEPARTMENT.DEP_ID = CM_DMMS.DEP_ID UNION ALL SELECT DVDM_ID AS DMMS_ID ,DVDM_NAME AS DMMS_NAME FROM dbo.CM_DVDM )CMS ON CMS.DMMS_ID=A.DMMS_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND A.PL_REQ_ID=@p_PL_REQ_ID ORDER BY A.CREATE_DT DESC -- PAGING END END -- NEU LA LINK PYCMS ELSE IF(@p_TYPE='LINK_TTCT' ) BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT, A.REQ_TYPE,A.IS_KT, A.REQ_REASON, A.REQ_CONTENT,A.PL_REQ_ID,A.TOTAL_AMT AS TOTAL_AMT, A.NOTES, A.RECORD_STATUS,A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS,A.CHECKER_ID,A.APPROVE_DT,A.BRANCH_DO, A.PROCESS_ID,A.BRANCH_CREATE, A.USER_REQUEST,U.TLFullName AS USER_REQUEST_NAME, D.AUTH_STATUS_NAME,UDV.TLFullName AS CHECKER_NAME,UMS.TLFullName AS USER_DVMS_NAME,UM.TLFullName AS MAKER_NAME, CMS.DMMS_NAME,A.DMMS_ID, RP.NOTES AS PROCESS_STATUS,RP.APPROVE_DT AS PROCESS_APP_DT,UP.TLFullName AS PROCESS_CHECKER_NAME, RP.ROLE_USER, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_PROCESS_NAME, RPN.NOTES AS PROCESS_STATUS_NEXT ,G.BRANCH_NAME AS BRANCH_DO_NAME,G.BRANCH_CODE AS BRANCH_DO_CODE,PLRD.REQ_CODE AS PL_REQ_CODE, DVMS.BRANCH_CODE AS BRANCH_CODE_DVMS,DVMS.BRANCH_NAME AS BRANCH_NAME_DVMS,DVC.BRANCH_CODE AS BRANCH_CREATE_CODE, DVC.BRANCH_NAME AS BRANCH_CREATE_NAME, PLRD.REQ_NAME AS PL_REQ_NAME,'' TYPE_JOB,'' AS USER_JOB,'' AS USER_JOB_NAME,'' AS TRANSFER_MAKER,CAST(NULL AS DATETIME) AS TRANFER_DT , '' AS TRANSFER_MAKER_ID,'' AS TYPE_JOB_XL,'' AS USER_JOB_XL,PLRD.REQ_CODE AS SO_TT_CT, PLRD.REQ_DT AS NGAY_NHAN_TT, PLRD.EFFEC_DT NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME, '' AS NCC_ADDR,RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB,A.REQ_PARENT_ID,A.DEP_CREATE,APR.REQ_CODE AS REQ_PARENT_CODE,CDC.DEP_NAME AS DEP_CREATE_NAME,CDC.DEP_CODE AS DEP_CREATE_CODE,A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'PYC-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY -- SELECT END FROM TR_REQUEST_DOC A LEFT JOIN dbo.PL_REQUEST_DOC PLRD ON A.PL_REQ_ID=PLRD.REQ_ID LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_DO=G.BRANCH_ID LEFT JOIN dbo.TL_USER U ON U.TLNANME =A.USER_REQUEST LEFT JOIN dbo.TL_USER UMS ON UMS.TLNANME =A.USER_DVMS LEFT JOIN dbo.CM_BRANCH DVMS ON DVMS.BRANCH_ID=A.BRANCH_DVMS LEFT JOIN dbo.CM_BRANCH DVC ON DVC.BRANCH_ID=A.BRANCH_CREATE LEFT JOIN dbo.CM_DEPARTMENT CDC ON CDC.DEP_ID=A.DEP_CREATE LEFT JOIN dbo.TR_REQUEST_DOC APR ON APR.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.TL_USER UM ON UM.TLNANME=A.MAKER_ID LEFT JOIN ( SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM dbo.PL_REQUEST_PROCESS GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES ) RPN ON RPN.REQ_ID=A.REQ_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R') LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN ( SELECT DMMS_ID,DEP_NAME+'-'+BRANCH_NAME AS DMMS_NAME FROM dbo.CM_DMMS LEFT JOIN dbo.CM_BRANCH ON CM_BRANCH.BRANCH_ID=CM_DMMS.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT ON CM_DEPARTMENT.DEP_ID = CM_DMMS.DEP_ID UNION ALL SELECT DVDM_ID AS DMMS_ID ,DVDM_NAME AS DMMS_NAME FROM dbo.CM_DVDM )CMS ON CMS.DMMS_ID=A.DMMS_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND A.PL_REQ_ID=@p_PL_REQ_ID ORDER BY A.CREATE_DT DESC -- PAGING END END-- END LUCTV END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[RET_REPAIR_Upd]' GO /* [dbo].[CAR_OFFER_Upd] 'CARO00000000002','CARM00000000035','ASS000000000029','','','13/10/2013','13/10/2013','','','',NULL,'','','','','13/10/2013','',NULL,'','','','','','','','13/10/2013','','','13/10/2013' INSERT INTO SYS_ERROR(ErrorCode,ErrorDesc,Form) Values ('CARO-00001','Mã sữa chữa không tồn tại','CAR') select * from SYS_ERROR SELECT * FROM CAR_OFFER */ ALTER PROCEDURE [dbo].[RET_REPAIR_Upd] @p_RET_REPAIR_ID varchar(15) = null , @p_RET_ID varchar(15) = NULL , @p_ASSET_ID varchar(15) = NULL , @p_ASSET_NAME nvarchar(200) = NULL , @p_OFFER_NO nvarchar(50) = NULL , @p_OFFER_DT VARCHAR(20) = NULL, @p_FINISH_DT VARCHAR(20) = NULL, @p_OFFER_REP_DIVISION nvarchar(200) = NULL , @p_OFFER_BRANCH varchar(15) = NULL , @p_OFFER_PERSON varchar(15) = NULL , @p_OFFER_AMT decimal(17) = NULL , @p_OFFER_REASON nvarchar(1000) = NULL , @p_OFFER_CONTENT nvarchar(1000) = NULL , @p_OFFER_NOTE nvarchar(1000) = NULL , @p_OFFER_STATUS varchar(1) = NULL , @p_REPAIR_DT VARCHAR(20) = NULL, @p_REPAIR_DIVISION Nvarchar(200) = NULL , @p_REPAIR_AMT decimal(17) = NULL , @p_REPAIR_CONTENT nvarchar(1000) = NULL , @p_REPAIR_NOTE nvarchar(1000) = NULL , @p_ISLEAF varchar(1) = NULL , @p_PARENT_ID varchar(15) = 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_PERFORMANCE VARCHAR(1) = NULL, ----BAODNQ 15/2/2022: Thêm cột vào bảng RET_REPAIR------ @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL, @p_SIGN_USER VARCHAR(15) = NULL, @p_SIGN_DT VARCHAR(20) = NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM RET_REPAIR WHERE RP_ID = @P_RET_REPAIR_ID)) SET @ERRORSYS = 'RETR-00001' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' RP_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END IF(EXISTS(SELECT * FROM RET_REPAIR WHERE RP_ID = @p_RET_REPAIR_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U')) BEGIN SELECT '-1' AS Result, '' RET_ID, N'Không thể chỉnh sửa. Thông tin sửa chữa BĐS đã được gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF (CONVERT(DATETIME, @p_FINISH_DT, 103) < CONVERT(DATETIME, @p_OFFER_DT, 103)) BEGIN SELECT '-1' AS Result, '' RET_REPAIR_ID, N'Thông tin đề xuất sửa chữa : Ngày dự kiến sửa xong không được nhỏ hơn ngày đề xuất' ErrorDesc RETURN '-1' END IF (CONVERT(DATETIME, @p_REPAIR_DT, 103) < CONVERT(DATETIME, @p_OFFER_DT, 103)) BEGIN SELECT '-1' AS Result, '' RET_REPAIR_ID, N'Thông tin sửa chữa thực tế : Ngày sửa chữa không được nhỏ hơn ngày đề xuất' ErrorDesc RETURN '-1' END DECLARE @p_RET_NAME NVARCHAR(1000) = (SELECT TOP 1 ASS_NAME FROM RET_MASTER WHERE RET_ID = @p_RET_ID) IF(EXISTS(SELECT RP_ID FROM RET_REPAIR WHERE RP_ID = @p_RET_REPAIR_ID AND MAKER_ID <> @p_MAKER_ID)) BEGIN SELECT '-1' AS Result, '' RET_REPAIR_ID, N'Không thể chỉnh sửa. Chỉ có người tạo thông tin sửa chữa BĐS: ' +@p_RET_NAME+ N' mới được phép chỉnh sửa. Bạn không phải là người tạo thông tin sửa chữa BĐS này' ErrorDesc RETURN '-1' END BEGIN TRANSACTION IF(EXISTS (SELECT * FROM RET_REPAIR WHERE RP_ID = @p_RET_REPAIR_ID AND AUTH_STATUS = 'A')) BEGIN --------------------CẬP NHẬT LẠI SAU KHI ĐÃ DUYỆT---------------- SET @p_CHECKER_ID = NULL SET @p_APPROVE_DT = NULL SET @p_SEND_APPR_DT = NULL SET @p_SIGN_DT = NULL END UPDATE RET_REPAIR SET [RET_ID] = @p_RET_ID, [ASSET_ID] = @p_ASSET_ID, [ASSET_NAME] = @p_ASSET_NAME, [OFFER_NO] = @p_OFFER_NO, [OFFER_DT] = CONVERT(DATETIME, @p_OFFER_DT, 103), [FINISH_DT] = CONVERT(DATETIME, @p_FINISH_DT, 103), [OFFER_REP_DIVISION] = @p_OFFER_REP_DIVISION, [OFFER_BRANCH] = @p_OFFER_BRANCH, [OFFER_PERSON] = @p_OFFER_PERSON, [OFFER_AMT] = @p_OFFER_AMT, [OFFER_REASON] = @p_OFFER_REASON, [OFFER_CONTENT] = @p_OFFER_CONTENT, [OFFER_NOTE] = @p_OFFER_NOTE, [OFFER_STATUS] = '1', [REPAIR_DT] = CONVERT(DATETIME, @p_REPAIR_DT, 103), [REPAIR_DIVISION] = @p_REPAIR_DIVISION, [REPAIR_AMT] = @p_REPAIR_AMT, [REPAIR_CONTENT] = @p_REPAIR_CONTENT, [REPAIR_NOTE] = @p_REPAIR_NOTE, [ISLEAF] = @p_ISLEAF, [PARENT_ID] = @p_PARENT_ID, [NOTES] = @p_NOTES, [RECORD_STATUS] = @p_RECORD_STATUS, ------Store Upd ko cập nhật lại MAKER_ID--------- --[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), [PERFORMANCE] = @p_PERFORMANCE, [IS_SEND_APPR] = @p_IS_SEND_APPR, [SEND_APPR_DT] = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), [SIGN_USER] = @p_SIGN_USER, [SIGN_DT] = CONVERT(DATETIME, @p_SIGN_DT, 103) WHERE RP_ID = @p_RET_REPAIR_ID IF @@Error <> 0 GOTO ABORT ---------------BAODNQ : TH NGƯỜI TẠO CẬP NHẬT NHIỀU LẦN THÌ CHỈ LƯU LỊCH SỬ XỬ LÝ CẬP NHẬT GẦN NHẤT---------------- IF((SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID = @p_RET_REPAIR_ID ORDER BY APPROVE_DT DESC) = 'UPDATE') BEGIN WITH RESULT AS( SELECT TOP 1 * FROM PL_PROCESS WHERE REQ_ID = @p_RET_REPAIR_ID ORDER BY APPROVE_DT DESC ) DELETE FROM RESULT END --------BAODNQ 15/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_RET_REPAIR_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Cập nhật thông tin sửa chữa BĐS thành công' , N'Cập nhật thông tin sửa chữa BĐS' ) IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_RET_REPAIR_ID RP_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RP_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_MASTER_App]' GO ALTER PROCEDURE [dbo].[BUD_MASTER_App] @p_BUILDING_ID varchar(15), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) AS /* DECLARE @aStatus VARCHAR(1) DECLARE @sErrorCode VARCHAR(20) SET @sErrorCode = '' SELECT @aStatus = [AUTH_STATUS] FROM BUD_MASTER WHERE BUILDING_ID=@p_BUILDING_ID IF @aStatus = 'A' SET @sErrorCode = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, ''BUILDING_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END*/ IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Phê duyệt thất bại. Thông tin trụ sở đang bị trả về' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Phê duyệt thất bại. Thông tin trụ sở đã được phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT BUILDING_ID FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Phê duyệt thất bại. Thông tin trụ sở đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT BUILDING_ID FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND AUTH_STATUS = 'U' AND IS_SEND_APPR = 'Y' AND (SIGN_USER IS NOT NULL AND SIGN_USER <> '') AND(SIGN_DT IS NULL OR SIGN_DT = '') ) ) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Phê duyệt thất bại. Thông tin trụ sở đang chờ cấp phê duyệt trung gian xác nhận. Vui lòng đợi cấp phê duyệt trung gian xác nhận' ErrorDesc RETURN '-1' END BEGIN TRANSACTION UPDATE BUD_MASTER SET AUTH_STATUS = 'A', CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE BUILDING_ID=@p_BUILDING_ID IF @@Error <> 0 GOTO ABORT -- 29/12/2021:datmq Insert to table PL_PROCESS INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_BUILDING_ID, 'APPROVE', @p_CHECKER_ID, GETDATE(), N'Trưởng đơn vị phê duyệt thành công' , N'Trưởng đơn vị phê duyệt' ) COMMIT TRANSACTION SELECT '0' as Result, @p_BUILDING_ID BUILDING_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUILDING_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_DOC_Upd]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_Upd] @p_REQ_ID varchar(15), @p_REQ_CODE nvarchar(100) = NULL, @p_REQ_NAME nvarchar(200) = NULL, @p_REQ_DT varchar(30) = NULL,--CONVERT(DATETIME, @p_REQ_DT, 103) @p_REQ_TYPE int = NULL, @p_REQ_CONTENT NVARCHAR(1000)=NULL, @p_REQ_REASON NVARCHAR(500)=NULL, @p_PL_REQ_ID VARCHAR(15), @p_TOTAL_AMT decimal(18,2) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(12) = NULL, @p_CREATE_DT varchar(30) = NULL,--CONVERT(DATETIME, @p_CREATE_DT, 103) @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(12) = NULL, @p_APPROVE_DT varchar(30) = NULL,--CONVERT(DATETIME, @p_APPROVE_DT, 103) @p_BRANCH_DO VARCHAR(15)=NULL, @p_BRANCH_CREATE VARCHAR(15)=NULL, @p_DEP_CREATE VARCHAR(20)=NULL, @p_REQ_PARENT_ID VARCHAR(20)=NULL, @p_USER_REQUEST VARCHAR(15)=NULL, @p_SIGN_USER VARCHAR(15)=NULL, @p_Record_ID_1 VARCHAR(15)=NULL, @p_Record_ID_2 VARCHAR(15)=NULL, @p_Record_ID_3 VARCHAR(15)=NULL, @p_ListGood XML, @p_ListTrREQFile XML, @p_ListPlGood XML AS DECLARE @TEMP TABLE ( [KEY] varchar(15), [REF_ID] varchar(15), [TYPE] varchar(50) ) IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='') BEGIN SELECT 'REQ-00002' Result, '' REQ_ID, N'Mã phiếu yêu cầu bắt buộc nhập' ErrorDesc RETURN '0' END --IF NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID) --BEGIN -- --SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00002' -- SELECT 'REQ-00002' Result, '' REQ_ID, N'Mã phiếu yêu cầu mua sắm chưa tồn tại trong hệ thống' ErrorDesc -- RETURN '0' --END DECLARE @sErrorCode VARCHAR(20) BEGIN TRANSACTION UPDATE dbo.TR_REQUEST_DOC SET REQ_CODE=@p_REQ_CODE,REQ_NAME=@p_REQ_NAME,REQ_DT=CONVERT(DATETIME, @p_REQ_DT, 103),REQ_CONTENT=@p_REQ_CONTENT,REQ_REASON=@p_REQ_REASON, RECORD_STATUS=@p_RECORD_STATUS,PL_REQ_ID=@p_PL_REQ_ID,MAKER_ID=@p_MAKER_ID,TOTAL_AMT=@p_TOTAL_AMT,NOTES=@p_NOTES,CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),USER_REQUEST=@p_USER_REQUEST,DEP_CREATE=@p_DEP_CREATE,REQ_PARENT_ID=@p_REQ_PARENT_ID, SIGN_USER =@p_SIGN_USER, BRANCH_DO = @p_BRANCH_DO WHERE REQ_ID=@p_REQ_ID -- UPDATE TOTAL_AMT MASTER UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT=(SELECT SUM(ISNULL(TOTAL_AMT,0)) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID) WHERE REQ_ID =@p_REQ_ID IF @@Error <> 0 GOTO ABORT DELETE FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID = @p_REQ_ID DELETE FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID DELETE FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID -- LƯỚI HÀNG HÓA THEO TỜ TRÌNH DECLARE @lstPLDT TABLE( REQPL_DT_ID VARCHAR(15), REQ_DOC_ID VARCHAR(15), PL_REQDT_ID VARCHAR(15), GD_ID VARCHAR(15), SUP_ID VARCHAR(15), HH_ID VARCHAR(15), TRAN_TYPE_ID VARCHAR(15), DES_GOOD NVARCHAR(500), QUANTITY_PL DECIMAL(18, 0), PRICE_PL DECIMAL(18, 2), CURRENCY NVARCHAR(50), EXCHANGE_RATE DECIMAL(18, 2), TAXES DECIMAL(18, 2), TOTAL_AMT_ETM DECIMAL(18, 2), REASON_CDT NVARCHAR(500), REQ_DT VARCHAR(30), NOTES NVARCHAR(500) ) DECLARE @doc INT Exec sp_xml_preparedocument @doc Output,@p_ListPlGood INSERT INTO @lstPLDT SELECT * FROM OPENXML(@doc,'/Root/ListPlGood',2) WITH ( REQPL_DT_ID VARCHAR(15), REQ_DOC_ID VARCHAR(15), PL_REQDT_ID VARCHAR(15), GD_ID VARCHAR(15), SUP_ID VARCHAR(15), HH_ID VARCHAR(15), TRAN_TYPE_ID VARCHAR(15), DES_GOOD NVARCHAR(500), QUANTITY_PL DECIMAL(18, 0), PRICE_PL DECIMAL(18, 2), CURRENCY NVARCHAR(50), EXCHANGE_RATE DECIMAL(18, 2), TAXES DECIMAL(18, 2), TOTAL_AMT_ETM DECIMAL(18, 2), REASON_CDT NVARCHAR(500), REQ_DT VARCHAR(30), NOTES NVARCHAR(500) ) DECLARE PlGoodsCur CURSOR FOR SELECT * FROM @lstPLDT OPEN PlGoodsCur DECLARE @pl_REQPL_DT_ID VARCHAR(15), @pl_REQ_DOC_ID VARCHAR(15), @pl_PL_REQDT_ID VARCHAR(15), @pl_GD_ID VARCHAR(15), @pl_SUP_ID VARCHAR(15), @pl_HH_ID VARCHAR(15), @pl_TRAN_TYPE_ID VARCHAR(15), @pl_DES_GOOD NVARCHAR(500), @pl_QUANTITY_PL DECIMAL(18, 0), @pl_PRICE_PL DECIMAL(18, 2), @pl_CURRENCY NVARCHAR(50), @pl_EXCHANGE_RATE DECIMAL(18, 2), @pl_TAXES DECIMAL(18, 2), @pl_TOTAL_AMT_ETM DECIMAL(18, 2), @pl_REASON_CDT NVARCHAR(500), @pl_REQ_DT VARCHAR(30), @pl_NOTES NVARCHAR(500) FETCH NEXT FROM PlGoodsCur INTO @pl_REQPL_DT_ID, @pl_REQ_DOC_ID, @pl_PL_REQDT_ID, @pl_GD_ID, @pl_SUP_ID, @pl_HH_ID, @pl_TRAN_TYPE_ID, @pl_DES_GOOD, @pl_QUANTITY_PL, @pl_PRICE_PL, @pl_CURRENCY, @pl_EXCHANGE_RATE, @pl_TAXES, @pl_TOTAL_AMT_ETM, @pl_REASON_CDT, @pl_REQ_DT, @pl_NOTES WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_PLDT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_PL_DT', @l_PLDT_ID out IF @l_PLDT_ID='' OR @l_PLDT_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQUEST_DOC_PL_DT ( REQPL_DT_ID, REQ_DOC_ID, PL_REQDT_ID, GD_ID, SUP_ID, HH_ID, TRAN_TYPE_ID, MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID,APPROVE_DT,DES_GOOD,QUANTITY_PL,PRICE_PL,CURRENCY,EXCHANGE_RATE,TAXES,TOTAL_AMT_ETM, REASON_CDT,REQ_DT,NOTES, RECORD_STATUS ) VALUES ( @l_PLDT_ID, -- REQPL_DT_ID - varchar(15) -- primary key @p_REQ_ID, -- REQ_DOC_ID - varchar(15) @pl_PL_REQDT_ID, -- PL_REQDT_ID - varchar(15) -- chi tiết hàng hóa trong tờ trình @pl_GD_ID, -- GD_ID - varchar(15) @pl_SUP_ID, -- SUP_ID - varchar(15) @pl_HH_ID, -- HH_ID - varchar(15) @pl_TRAN_TYPE_ID, -- TRAN_TYPE_ID - varchar(15) @p_MAKER_ID, -- MAKER_ID - varchar(15) CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime @p_AUTH_STATUS, -- AUTH_STATUS - varchar(50) @p_CHECKER_ID, -- CHECKER_ID - varchar(15) CONVERT(DATETIME, @p_APPROVE_DT, 103), -- APPROVE_DT - datetime @pl_DES_GOOD, -- DES_GOOD - nvarchar(500) @pl_QUANTITY_PL, -- QUANTITY_PL - decimal(18, 0) @pl_PRICE_PL, -- PRICE_PL - decimal(18, 2) @pl_CURRENCY, -- CURRENCY - nvarchar(50) @pl_EXCHANGE_RATE, -- EXCHANGE_RATE - decimal(18, 2) @pl_TAXES, -- TAXES - decimal(18, 2) @pl_TOTAL_AMT_ETM, -- TOTAL_AMT_ETM - decimal(18, 2) @pl_REASON_CDT, -- REASON_CDT - nvarchar(500) CONVERT(DATETIME, @pl_REQ_DT, 103), -- REQ_DT - datetime @pl_NOTES, -- NOTES - nvarchar(500) @p_RECORD_STATUS -- RECORD_STATUS - varchar(1) ) IF @@ERROR <> 0 GOTO ABORT1 FETCH NEXT FROM PlGoodsCur INTO @pl_REQPL_DT_ID, @pl_REQ_DOC_ID, @pl_PL_REQDT_ID, @pl_GD_ID, @pl_SUP_ID, @pl_HH_ID, @pl_TRAN_TYPE_ID, @pl_DES_GOOD, @pl_QUANTITY_PL, @pl_PRICE_PL, @pl_CURRENCY, @pl_EXCHANGE_RATE, @pl_TAXES, @pl_TOTAL_AMT_ETM, @pl_REASON_CDT, @pl_REQ_DT, @pl_NOTES END CLOSE PlGoodsCur DEALLOCATE PlGoodsCur --Insert into TABLE PL_REQUEST_DOC_DT DECLARE @lstTRDT TABLE( REQDT_ID varchar(15) , PL_REQDT_ID varchar(15) , GOODS_ID varchar(15) , [DESCRIPTION] nvarchar(500), QUANTITY decimal(18,0) , PRICE decimal(18,2) , TOTAL_AMT decimal(18,2), NOTES nvarchar(1000), REQ_DT varchar(30), AMORT_MONTH DECIMAL(18,2), TRADE_TYPE_ID varchar(15), SUP_ID varchar(15), HH_ID VARCHAR(20), CURRENCY nvarchar(50), EXCHANGE_RATE decimal(18, 2), TAXES decimal(18, 2), DVDM_ID VARCHAR(20), UNIT_NAME NVARCHAR(100) ) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_ListGood INSERT INTO @lstTRDT SELECT REQDT_ID , PL_REQDT_ID, GOODS_ID , [DESCRIPTION], QUANTITY, PRICE , TOTAL_AMT, NOTES, Convert(Datetime,REQ_DT,103), AMORT_MONTH, TRADE_TYPE_ID, SUP_ID, HH_ID, CURRENCY, EXCHANGE_RATE, TAXES, DVDM_ID, UNIT_NAME FROM OPENXML(@hDoc,'/Root/ListGood',2) WITH ( REQDT_ID varchar(15) , PL_REQDT_ID varchar(15) , GOODS_ID varchar(15) , [DESCRIPTION] nvarchar(500), QUANTITY decimal(18,0) , PRICE decimal(18,2) , TOTAL_AMT decimal(18,2), NOTES nvarchar(1000), REQ_DT varchar(30), AMORT_MONTH DECIMAL(18,2), TRADE_TYPE_ID varchar(15), SUP_ID varchar(15), HH_ID VARCHAR(20), CURRENCY nvarchar(50), EXCHANGE_RATE decimal(18, 2), TAXES decimal(18, 2), DVDM_ID VARCHAR(20), UNIT_NAME NVARCHAR(100) ) DECLARE @p_REQ_DOC_DT_ROW_NUM INT = 0 DECLARE ListGoods CURSOR FOR SELECT * FROM @lstTRDT OPEN ListGoods Declare @REQDT_ID varchar(15) , @PL_REQDT_ID varchar(15), @SUP_ID varchar(15), @GOODS_ID varchar(15), @DESCRIPTION nvarchar(500), @QUANTITY decimal(18,0), @PRICE decimal(18,2), @TOTAL_AMT decimal(18,2), @NOTES nvarchar(1000), @TRADE_TYPE_ID varchar(15), @AMORT_MONTH DECIMAL(18,2), @RED_DT DATETIME, @HH_ID VARCHAR(20), @CURRENCY nvarchar(50), @EXCHANGE_RATE decimal(18, 2), @TAXES decimal(18, 2), @DVDM_ID VARCHAR(20), @UNIT_NAME NVARCHAR(100) FETCH NEXT FROM ListGoods INTO @REQDT_ID, @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT, @NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID,@UNIT_NAME WHILE @@FETCH_STATUS = 0 BEGIN SET @p_REQ_DOC_DT_ROW_NUM = @p_REQ_DOC_DT_ROW_NUM + 1 --------------Mô tả hàng hóa dịch vụ----------- IF(@DESCRIPTION IS NULL OR @DESCRIPTION = '') BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS Result, N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM) + N'. Mô tả hàng hóa/ dịch vụ không được để trống' AS ErrorDesc RETURN '-1' END ---------------Đơn vị tính---------------- IF(@UNIT_NAME IS NULL OR @UNIT_NAME = '') BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS Result, N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM) + N'. Đơn vị tính không được để trống' AS ErrorDesc RETURN '-1' END ---------------Số lượng--------------- IF(@QUANTITY IS NULL) BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS Result, N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM) + N'. Số lượng không được để trống' AS ErrorDesc RETURN '-1' END --------------Đơn giá------------------- IF(@PRICE IS NULL) BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS Result, N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM) + N'. Đơn giá không được để trống' AS ErrorDesc RETURN '-1' END --------------Loại tiền tệ--------------- IF(@CURRENCY IS NULL OR @CURRENCY = '') BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS Result, N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM) + N'. Loại tiền tệ không được để trống' AS ErrorDesc RETURN '-1' END ----------------Thuế NTNN--------------- IF(@TAXES IS NULL) BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS Result, N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM) + N'. Thuế NTNN không được để trống' AS ErrorDesc RETURN '-1' END --------------Tỷ giá quy đổi----------- IF(@EXCHANGE_RATE IS NULL) BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS Result, N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM) + N'. Tỷ giá quy đổi không được để trống' AS ErrorDesc RETURN '-1' END -------------Ngày cần-------------- IF(@RED_DT IS NULL OR @RED_DT = '') BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS Result, N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM) + N'. Ngày cần không được để trống' AS ErrorDesc RETURN '-1' END DECLARE @l_REQDT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_DT', @l_REQDT_ID out IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT SET @TOTAL_AMT= (@QUANTITY * @PRICE + @TAXES) * @EXCHANGE_RATE INSERT INTO dbo.TR_REQUEST_DOC_DT ( REQDT_ID, [REQPL_DT_ID], REQ_DOC_ID, PL_REQDT_ID, GD_ID, TRAN_TYPE_ID, SUP_ID, DESCRIPTION, QUANTITY, PRICE, PRICE_ETM, TOTAL_AMT, TOTAL_AMT_ETM, REQ_DT, AMORT_MONTH, NOTES, RECORD_STATUS, MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, HANGHOA_ID, CURRENCY, EXCHANGE_RATE, TAXES, DVDM_ID, UNIT_NAME ) VALUES ( @l_REQDT_ID, -- REQDT_ID - varchar(15) (SELECT TOP 1 REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID = @p_REQ_ID AND PL_REQDT_ID = @PL_REQDT_ID), @p_REQ_ID, -- REQ_ID - varchar(15) @PL_REQDT_ID, -- PLAN_ID - varchar(15) @GOODS_ID, -- GOODS_ID - varchar(15) @TRADE_TYPE_ID, @SUP_ID, -- NAME - nvarchar(200) @DESCRIPTION, -- DESCRIPTION - nvarchar(500) @QUANTITY, -- QUANTITY - decimal(18, 0) @PRICE, @PRICE,-- PRICE - decimal(18, 0) ROUND(@TOTAL_AMT,0), ROUND(@TOTAL_AMT,0), CONVERT(DATETIME, @RED_DT, 103), @AMORT_MONTH, @NOTES, -- TOTAL_AMT - decimal(18, 0) @p_RECORD_STATUS, -- RECORD_STATUS - varchar(1) @p_MAKER_ID, -- MAKER_ID - varchar(15) CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime @p_AUTH_STATUS, -- AUTH_STATUS - varchar(50) @p_CHECKER_ID, -- CHECKER_ID - varchar(15) CONVERT(DATETIME, @p_APPROVE_DT, 103), @HH_ID, @CURRENCY, @EXCHANGE_RATE, @TAXES, @DVDM_ID, -- APPROVE_DT - datetime @UNIT_NAME ) IF @@ERROR <> 0 GOTO ABORT1 -- next Group_Id FETCH NEXT FROM ListGoods INTO @REQDT_ID,@PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT, @NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID,@UNIT_NAME END CLOSE ListGoods DEALLOCATE ListGoods UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT=(SELECT SUM(TOTAL_AMT_ETM) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID IF @@Error <> 0 GOTO ABORT DECLARE @COST_ID VARCHAR(20) DECLARE lstCostCenter CURSOR FOR SELECT COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_PL_REQ_ID GROUP BY COST_ID OPEN lstCostCenter FETCH NEXT FROM lstCostCenter INTO @COST_ID WHILE @@FETCH_STATUS=0 BEGIN DECLARE @l_REQ_COST_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQUEST_COSTCENTER ( REQ_COST_ID, COST_ID, REQ_ID, NOTES, AUTH_STATUS, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT ) VALUES ( @l_REQ_COST_ID, -- REQ_COST_ID - varchar(15) @COST_ID, -- COST_ID - varchar(15) @p_REQ_ID, -- REQ_ID - varchar(15) N'', -- NOTES - nvarchar(500) '', -- AUTH_STATUS - varchar(1) @p_MAKER_ID, -- MAKER_ID - varchar(15) NULL, -- CREATE_DT - datetime '', -- CHECKER_ID - varchar(15) NULL -- APPROVE_DT - datetime ) FETCH NEXT FROM lstCostCenter INTO @COST_ID END CLOSE lstCostCenter DEALLOCATE lstCostCenter IF @@Error <> 0 GOTO ABORT --Insert into TABLE TR_REQUEST_DOC_FILE DECLARE @tableTrREQFile TABLE( TR_REQUEST_DOC_FILE_ID varchar(20) , IS_VIEW bit, REQ_ID varchar(20), NOTES nvarchar(200) ) Declare @fdoc INT Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile INSERT INTO @tableTrREQFile SELECT * FROM OPENXML(@fDoc,'/Root/ListTrREQ',2) WITH ( TR_REQUEST_DOC_FILE_ID varchar(20) , IS_VIEW bit, REQ_ID varchar(20), NOTES nvarchar(200) ) --delete TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID not in (select TR_REQUEST_DOC_FILE_ID from @tableTrREQFile) and REQ_ID = @p_REQ_ID ------------BAODNQ 11/11/2022 : DELETE TR_REQUEST_DOC_FILE---------- DELETE FROM TR_REQUEST_DOC_FILE WHERE REQ_ID = @p_REQ_ID DECLARE ListTrREQFile CURSOR FOR SELECT * FROM @tableTrREQFile OPEN ListTrREQFile Declare @TR_REQUEST_DOC_FILE_ID varchar(20) , @IS_VIEW bit, @REQ_ID varchar(20), @_NOTES nvarchar(200) FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_REQFile_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out --select @l_REQFile_ID --select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523' IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE') IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0 begin update TR_REQUEST_DOC_FILE set IS_VIEW=isnull(@IS_VIEW,0),REQ_ID = @p_REQ_ID,NOTES=@_NOTES where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID end else begin INSERT INTO dbo.TR_REQUEST_DOC_FILE ( [TR_REQUEST_DOC_FILE_ID] ,[IS_VIEW] ,[REQ_ID] ,[NOTES] ) VALUES ( @l_REQFile_ID ,isnull(@IS_VIEW,0) ,@p_REQ_ID, @_NOTES ) end FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES END CLOSE ListTrREQFile DEALLOCATE ListTrREQFile IF @@Error <> 0 GOTO ABORT if(select count(*) from @TEMP) = 0 begin INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE') end COMMIT TRANSACTION --Cuong LX 17/11/2021 --IF(@p_Record_ID_1 is null OR @p_Record_ID_1 = '')--Xóa biên bản xét giá --BEGIN -- DELETE TR_REQ_DOC_XETGIA_DUOI_100M_DT WHERE RECORD_MASTER_ID = (SELECT TOP(1)RECORD_ID FROM TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID) -- DELETE TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID --END --IF(@p_Record_ID_2 is null OR @p_Record_ID_2 = '')--Xóa biên bản xét giá --BEGIN -- DELETE TR_REQ_DOC_XETGIA_100M_500M_DT_DGC WHERE RECORD_MASTER_ID = (SELECT TOP(1)RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID) -- DELETE TR_REQ_DOC_XETGIA_100M_500M_DT_XG WHERE RECORD_MASTER_ID = (SELECT TOP(1)RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID) -- DELETE TR_REQ_DOC_XETGIA_100M_500M_XH WHERE RECORD_MASTER_ID = (SELECT TOP(1)RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID) -- DELETE TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID --END SELECT '0' as Result, @p_REQ_ID REQ_ID,[REF_ID], [TYPE] , @p_REQ_CODE REQ_CODE, '' AS ErrorDesc from @TEMP RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result RETURN '-1' End ABORT1: BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS Result RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_ROLE_NOTIFI_ID]' GO ALTER PROCEDURE [dbo].[TR_ROLE_NOTIFI_ID] @PO_ID varchar(500), @TYPE VARCHAR(100) AS DECLARE @BRANCH_CREATE VARCHAR(15), @DEP_CREATE VARCHAR(15), @BRANCH_TYPE VARCHAR(15), @FATHER_ID VARCHAR(15), --@FLAG VARCHAR(1), -- FLAG = 1: THANH TOÁN / TẠM ỨNG ---------BAODNQ 26/10/2022 : TĂNG KÍCH THƯỚC BIẾN @FLAG @FLAG VARCHAR(5), -- FLAG = 1: THANH TOÁN / TẠM ỨNG @AUTH_STATUS VARCHAR(10), @PROCESS VARCHAR(10), @MAKER_ID VARCHAR(15), @DEP_CODE VARCHAR(15), @NV_XL_MS VARCHAR(15) DECLARE @ROLE_CURRENT VARCHAR(50), @USER_RECIVE_MAIL VARCHAR(15), @REQ_TYPE VARCHAR(15) DECLARE @SYS_PREFIX VARCHAR(15),@PAGE NVARCHAR(200) DECLARE @l_LST_REQ_ID TABLE ( [ID] [int] IDENTITY(1,1) NOT NULL, [REQ_PAY_ID] [VARCHAR](50) NULL) INSERT INTO @l_LST_REQ_ID SELECT VALUE FROM WSISPLIT(@PO_ID,',') DECLARE @LST_POID TABLE(ID VARCHAR(15)) DECLARE @LST_USER_RECIVE TABLE (TLNAME VARCHAR(20)) --- DECLARE TABLE NHAN DU LIEU LA USER NAME DANG O BUOC PHE DUYET HIEN TAI DECLARE @PL_PROCESS_CURRENT_SEARCH_TEMP TABLE ( REQ_ID varchar(15), PROCESS_ID varchar(10), DVDM_NAME nvarchar(500), TLNAME nvarchar(255), TLFullName nvarchar(255), NOTES nvarchar(500) ) -----BAODNQ 5/1/2021 : Thêm gửi mail cho GDDV, TP, PP---------- DECLARE @p_MAKER_ID VARCHAR(15), @p_ROLE_ID VARCHAR(15), @p_ROLE_NAME VARCHAR(15) DECLARE @LST_ROLE TABLE(ROLE_ID VARCHAR(15), ROLE_NAME VARCHAR(15)) ---------BAODNQ 2/11/2022 : Lấy mã code phòng ban tạo------------- DECLARE @p_DEP_CREATE_CODE VARCHAR(15) -------------------------- IF @TYPE = 'PO' BEGIN INSERT INTO @LST_POID VALUES(@PO_ID) SET @FLAG = 0 END ELSE IF @TYPE = 'USE' BEGIN INSERT INTO @LST_POID SELECT B.PO_ID FROM ASS_MASTER_PO B WHERE B.ASSET_ID = (SELECT A.ASSET_ID FROM ASS_USE A WHERE A.USE_ID = @PO_ID) SET @FLAG = 0 END ELSE IF @TYPE = 'USE_MUILT' BEGIN INSERT INTO @LST_POID SELECT B.PO_ID FROM ASS_MASTER_PO B WHERE B.ASSET_ID IN (SELECT A.ASSET_ID FROM ASS_USE_MULTI_DT A WHERE A.USER_MASTER_ID = @PO_ID) GROUP BY B.PO_ID SET @FLAG = 0 END ELSE IF @TYPE = 'USE_ADDNEW' BEGIN INSERT INTO @LST_POID SELECT B.PO_ID FROM ASS_ADDNEW_PO B WHERE B.ADDNEW_ID = @PO_ID SET @FLAG = 0 END -- Tạm ứng ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_SEND_APR') BEGIN SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND (TRASFER_USER_RECIVE IS NOT NULL AND TRASFER_USER_RECIVE <>''))) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TRASFER_USER_RECIVE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) END ELSE BEGIN SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) IF(@BRANCH_TYPE = 'PGD' ) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @FATHER_ID AND ( RoleName IN ('TPGD','PP') OR TLNANME IN ( SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('TPGD','PP') AND RECORD_STATUS = 1 AND BRANCH_ID = @FATHER_ID 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 ='') ) ) END ELSE IF(@BRANCH_TYPE = 'CN' ) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND (RoleName IN ('GDDV','PGD') OR TLNANME IN ( SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PGD') AND RECORD_STATUS = 1 AND BRANCH_ID = @BRANCH_CREATE 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 ='') ) ) END ELSE IF(@BRANCH_TYPE = 'HS' ) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND SECUR_CODE = @DEP_CREATE AND (RoleName IN ('GDDV','PP') OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PP') AND RECORD_STATUS = 1 AND BRANCH_ID =@BRANCH_CREATE AND DEP_ID =@DEP_CREATE 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 ='') ) ) END END SET @FLAG = 1 END ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_CONFIRM') BEGIN SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @REQ_TYPE =(SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@PO_ID) SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_CREATE) IF(@BRANCH_TYPE = 'PGD' ) BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000015')) -- KHOI HO TRO BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='tunt') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000016')) -- KHOI QUAN LY RUI RO BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='linhvtk') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000017')) -- KHOI TAI CHINH BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='nhalc') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000018')) -- KHOI CNTT BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='haipv') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000020')) -- KHOI CNTT BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='tuvm') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000022')) -- KHOI KHCN - KHACH HANG CA NHAN BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='sangnm1') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000022')) -- KHOI KHCN - KHACH HANG CA NHAN BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='nhannt') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END -- PTGD ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000019')) -- KHOI VAN HANH BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='muoilvb') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000014')) -- KHOI TRUC THUOC TGD BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='tupa') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @FATHER_ID AND (RoleName IN ('TPGD','PP') OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('TPGD','PP') AND RECORD_STATUS = 1 AND BRANCH_ID =@FATHER_ID 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 =''))) END END ELSE IF(@BRANCH_TYPE = 'CN' ) BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000015')) -- KHOI HO TRO BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='tunt') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000016')) -- KHOI QUAN LY RUI RO BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='linhvtk') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000017')) -- KHOI TAI CHINH BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='nhalc') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000018')) -- KHOI CNTT BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='haipv') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000020')) -- KHOI CNTT BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='tuvm') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000022')) -- KHOI KHCN - KHACH HANG CA NHAN BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='sangnm1') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000022')) -- KHOI KHCN - KHACH HANG CA NHAN BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='nhannt') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END -- PTGD ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000019')) -- KHOI VAN HANH BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='muoilvb') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000014')) -- KHOI TRUC THUOC TGD BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='tupa') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND (RoleName IN ('GDDV','PGD') OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PGD') AND RECORD_STATUS = 1 AND BRANCH_ID =@BRANCH_CREATE 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 =''))) END END ELSE IF(@BRANCH_TYPE = 'HS' ) BEGIN IF(EXISTS(SELECT PROCESS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND (PROCESS ='' OR PROCESS IS NULL))) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND SECUR_CODE = @DEP_CREATE AND (RoleName IN ('GDDV','PP') OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PP') AND RECORD_STATUS = 1 AND BRANCH_ID =@BRANCH_CREATE AND DEP_ID =@DEP_CREATE 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 =''))) END ELSE BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I')) BEGIN IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='tunt') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF((@DEP_CODE LIKE'%06907%')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='linhvtk') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF((@DEP_CODE LIKE'%06908%')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='nhalc') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF((@DEP_CODE LIKE'%06909%')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='haipv') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF((@DEP_CODE LIKE'%06921%')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='sangnm1') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END END -- NEU CAP TIEP THEO LA PTGD ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I')) BEGIN /* IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='hantt') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END */ IF(@DEP_CODE ='0690405') BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='tupa') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ---- LUCTV 24.11.2022 BO SUNG GUI MAIL PTGD KHOI VAN HANH IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000019') OR EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='muoilvb') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END END -- NEU CAP TIEP THEO LA TKTGD ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TKTGD' AND @REQ_TYPE ='I')) BEGIN INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD' END -- NEU CAP TIEP THEO LA TKHDQT ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TKHDQT' AND @REQ_TYPE ='I')) BEGIN INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT' END -- NEU CAP TIEP THEO LA TGD ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TGD' AND @REQ_TYPE ='I')) BEGIN INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TGD' END -- NEU CAP TIEP THEO LA HDQT ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='HDQT' AND @REQ_TYPE ='I')) BEGIN INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='HDQT' END END END SET @FLAG = 1 END ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_APR') BEGIN SET @REQ_TYPE =(SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@PO_ID) --SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_CREATE = (SELECT TOP 1 BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @DEP_CREATE = (SELECT TOP 1 DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_CREATE) /* IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TKTGD' AND @REQ_TYPE ='I')) BEGIN INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TKHDQT' AND @REQ_TYPE ='I')) BEGIN INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TGD' AND @REQ_TYPE ='I')) BEGIN --SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='TGD') --INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TGD' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='HDQT' AND @REQ_TYPE ='I')) BEGIN --SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='TGD') --INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='HDQT' END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I')) BEGIN IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='tunt') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF((@DEP_CODE LIKE'%06907%')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='linhvtk') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF((@DEP_CODE LIKE'%06908%')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='nhalc') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF((@DEP_CODE LIKE'%06909%')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='haipv') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ELSE IF((@DEP_CODE LIKE'%06921%')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='sangnm1') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END END IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I')) BEGIN /* IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605')) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='hantt') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END */ IF( @DEP_CODE ='0690405') BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='tupa') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END ---- LUCTV 24.11.2022 BO SUNG GUI MAIL PTGD KHOI VAN HANH ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000019') OR EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I') ) BEGIN SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='muoilvb') INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL) END END */ IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND AUTH_STATUS ='A')) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TOP 1 MAKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND (RoleName = 'KSV' AND TLSUBBRID = 'DV0001' AND SECUR_CODE ='DEP000000000022') --OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='KSV' AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL) AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL) AND RECORD_STATUS = 1) END SET @FLAG = 1 END -- Điều phối tạm ứng/ thanh toán PL_REQUEST_PROCESS_CHILD ELSE IF (@TYPE = 'TR_REQ_PAYMENT_TRANSFER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID) AND TYPE_JOB = 'XL' AND STATUS_JOB ='C' SET @FLAG = 1 END -- ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_SEND_APR') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @PO_ID AND TYPE_JOB = 'KS' SET @FLAG = 1 END ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_SEND_SUG') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @PO_ID AND TYPE_JOB = 'KS' SET @FLAG = 1 END ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_APPR') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TOP 1 MAKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TOP 1 MAKER_ID_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID SET @FLAG = 1 END -- Thanh toán ELSE IF (@TYPE = 'TR_REQ_PAYMENT_SEND_APR') BEGIN SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND (TRASFER_USER_RECIVE IS NOT NULL AND TRASFER_USER_RECIVE <>''))) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TRASFER_USER_RECIVE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) END ELSE BEGIN SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) IF(@BRANCH_TYPE = 'PGD' ) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND (RoleName IN ('TPGD','PP') OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('TPGD','PP') AND RECORD_STATUS = 1 AND BRANCH_ID =@BRANCH_CREATE 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 =''))) END ELSE IF(@BRANCH_TYPE = 'CN' ) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND (RoleName IN ('GDDV','PGD') OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PGD') AND RECORD_STATUS = 1 AND BRANCH_ID =@BRANCH_CREATE 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 =''))) END ELSE IF(@BRANCH_TYPE = 'HS' ) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND SECUR_CODE = @DEP_CREATE AND (RoleName IN ('GDDV','PP') OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PP') AND RECORD_STATUS = 1 AND BRANCH_ID =@BRANCH_CREATE AND DEP_ID =@DEP_CREATE 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 =''))) END END SET @FLAG = 1 END ELSE IF(@TYPE = 'TR_REQ_PAYMENT_APR') BEGIN SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) IF(@AUTH_STATUS = 'A') BEGIN SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TOP 1 MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND (RoleName = 'KSV' OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW = 'KSV' AND RECORD_STATUS = 1 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 =''))) AND TLSUBBRID = 'DV0001' AND SECUR_CODE ='DEP000000000022' SET @FLAG = 1 END END ELSE IF(@TYPE = 'TR_REQ_PAYMENT_CONFIRM') BEGIN SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @PROCESS = ( SELECT TOP 1 PROCESS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) IF(@AUTH_STATUS = 'U' AND @PROCESS = '0') BEGIN SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) IF(@BRANCH_TYPE = 'PGD' ) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND (RoleName IN ('TPGD','PP') OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('TPGD','PP') AND RECORD_STATUS = 1 AND BRANCH_ID = @BRANCH_CREATE 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 =''))) END ELSE IF(@BRANCH_TYPE = 'CN' ) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND (RoleName IN ('GDDV','PGD') OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PGD') AND RECORD_STATUS = 1 AND BRANCH_ID = @BRANCH_CREATE 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 =''))) END ELSE IF(@BRANCH_TYPE = 'HS' ) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND SECUR_CODE = @DEP_CREATE AND (RoleName IN ('GDDV','PP') OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PP') AND RECORD_STATUS = 1 AND BRANCH_ID =@BRANCH_CREATE AND DEP_ID =@DEP_CREATE 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 =''))) END SET @FLAG = 1 END END ELSE IF(@TYPE = 'TR_REQ_PAYMENT_KT_SEND_APR') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @PO_ID AND TYPE_JOB = 'KS' SET @FLAG = 1 END ELSE IF (@TYPE = 'TR_REQ_PAYMENT_KT_SEND_SUG') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @PO_ID AND TYPE_JOB = 'KS' SET @FLAG = 1 END ELSE IF(@TYPE = 'TR_REQ_PAYMENT_KT_APR') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TOP 1 MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TOP 1 MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID SET @FLAG = 1 END -- Tờ trình chủ trương ELSE IF(@TYPE = 'PL_SEND_APP' OR @TYPE ='PL_REQUEST_DOC_App' OR @TYPE ='REQ_PROCESS_CHILD_Upd' OR @TYPE='REQ_PROCESS_CHILD_App') BEGIN SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID) INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD' SET @FLAG = 2 END ELSE IF(@TYPE='PL_REQ_PROCESS_CHILD_Ins') BEGIN DECLARE @PLREQ_ID VARCHAR(15) WHILE((SELECT COUNT(*) FROM @l_LST_REQ_ID) >0) BEGIN SET @PLREQ_ID =(SELECT TOP 1 REQ_PAY_ID FROM @l_LST_REQ_ID) SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID) INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PLREQ_ID,@MAKER_ID,'TTCT-DVKD' DELETE FROM @l_LST_REQ_ID WHERE REQ_PAY_ID =@PLREQ_ID END SET @FLAG = 2 END ELSE IF(@TYPE='REQUEST_DOC_PROCESS_Approve') BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='APPROVE')) BEGIN IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='TGD')) BEGIN SET @FLAG = 2 --SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID) INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD' END ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='TGD')) BEGIN SET @FLAG = 2 --SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID) INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD' --INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP (REQ_ID,TLNAME) SELECT @PO_ID, TLNANME FROM TL_USER WHERE RoleName ='TGD' END ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='HDQT')) BEGIN SET @FLAG = 2 --SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID) INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD' --INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP (REQ_ID,TLNAME) SELECT @PO_ID, TLNANME FROM TL_USER WHERE RoleName ='TKTGD' END END ELSE BEGIN SET @FLAG = 3 SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID) --INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP --EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @REQ_ID,@MAKER_ID,'TTCT-DVKD' END END ELSE IF(@TYPE='RESEND_REQUEST_DOC_PROCESS_Approve') --- LUCTV 28.11.2022 BO SUNG THEM 1 TYPE DE ANH BAOTQ GUI MAIL VE THU KY TGD DE THU KY TGD COPY LINK GUI CEO TRONG TRUONG HOP CEO MISS MAIL BEGIN IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='TGD')) BEGIN SET @FLAG = 2 INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP (REQ_ID,TLNAME) SELECT @PO_ID, TLNANME FROM TL_USER WHERE RoleName ='TKTGD' END ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='HDQT')) BEGIN SET @FLAG = 2 INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP (REQ_ID,TLNAME) SELECT @PO_ID, TLNANME FROM TL_USER WHERE RoleName ='TKHDQT' END END --- LUCTV 28.11.2022 ------------------------------------------------------------------------------------------------------- ----- PHIẾU YÊU CẦU MUA SẮM -------------- ELSE IF(@TYPE = 'TR_REQUEST_DOC_SendApp' OR @TYPE ='TR_REQUEST_DOC_App' OR @TYPE ='TR_REQ_PROCESS_CHILD_App' OR @TYPE ='TR_REQ_PROCESS_CHILD_Upd' OR @TYPE='REQ_PROCESS_CHILD_App') BEGIN -------------------Nếu PYCMS chưa hoàn tất------------------- IF(NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='APPROVE')) BEGIN SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID) INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'PYCMS-DVKD' SET @FLAG = 2 END -------------------Nếu PYCMS hoàn tất------------------- ELSE BEGIN SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID) SET @NV_XL_MS =(SELECT TOP 1 USER_DVMS FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID) SET @FLAG = 4 END END ELSE IF(@TYPE='TR_REQ_PROCESS_CHILD_Ins') BEGIN DECLARE @REQ_DOC_ID VARCHAR(15) WHILE((SELECT COUNT(*) FROM @l_LST_REQ_ID) >0) BEGIN SET @REQ_DOC_ID =(SELECT TOP 1 REQ_PAY_ID FROM @l_LST_REQ_ID) SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID) INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @REQ_DOC_ID,@MAKER_ID,'PYCMS-DVKD' DELETE FROM @l_LST_REQ_ID WHERE REQ_PAY_ID =@REQ_DOC_ID END SET @FLAG = 2 END ELSE IF(@TYPE='TR_REQUEST_DOC_PROCESS_Approve') BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='APPROVE')) BEGIN --SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID) INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'PYCMS-DVKD' SET @FLAG = 3 END ELSE BEGIN SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID) SET @NV_XL_MS =(SELECT TOP 1 USER_DVMS FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID) SET @FLAG = 4 END END ----------------BAODNQ 20/10/2022 ; LẮP MAIL GỬI KHI CHUYỂN PYCMS CHO DVCM----------------- ELSE IF(@TYPE = 'TR_REQUEST_DOC_MOVE_DVCM') BEGIN SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID) INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'PYCMS-DVKD' SET @FLAG = 2 END ---------------ENDBAODNQ----------------------------- ------BAODNQ 4/1/2022: -------------- -----Khai báo DTSD nội bộ - gửi YC phê duyệt------- ELSE IF @TYPE='BUD_CONTRACT_MASTER_SEND_APPROVE' BEGIN -----Có cấp phê duyệt trung gian------- IF (EXISTS (SELECT*FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID AND SIGN_USER IS NOT NULL)) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.SIGN_USER FROM BUD_CONTRACT_MASTER A WHERE A.CONTRACT_ID = @PO_ID) END ELSE -----Ko có cấp phê duyệt trung gian------- BEGIN SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PPGD')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END END SET @FLAG = 5 END -----Khai báo DTSD nội bộ - trung gian duyệt thành công------- ELSE IF @TYPE='BUD_CONTRACT_MASTER_CONFIRM' BEGIN SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PPGD')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END SET @FLAG = 5 END -----Khai báo DTSD nội bộ - trưởng đơn vị đã duyệt, trả mail về cho ng tạo------- ELSE IF @TYPE='BUD_CONTRACT_MASTER_APPROVED' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM BUD_CONTRACT_MASTER A WHERE A.CONTRACT_ID = @PO_ID) SET @FLAG = 5 END ---Quản lý hợp đồng khách thuê - gửi YC phê duyệt----- ELSE IF @TYPE='BUD_CONTRACT_CUST_MASTER_SEND_APPROVE' BEGIN -----Có cấp phê duyệt trung gian------- IF (EXISTS (SELECT*FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID AND SIGN_USER IS NOT NULL)) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.SIGN_USER FROM BUD_CONTRACT_CUST_MASTER A WHERE A.CONTRACT_ID = @PO_ID) END ELSE -----Ko có cấp phê duyệt trung gian------- BEGIN SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END END SET @FLAG = 5 END ---Quản lý hợp đồng khách thuê - trung gian duyệt thành công----- ELSE IF @TYPE='BUD_CONTRACT_CUST_MASTER_CONFIRM' BEGIN SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END SET @FLAG = 5 END ---Quản lý hợp đồng khách thuê - trưởng đơn vị đã duyệt, trả mail về cho ng tạo----- ELSE IF @TYPE='BUD_CONTRACT_CUST_MASTER_APPROVED' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM BUD_CONTRACT_CUST_MASTER A WHERE A.CONTRACT_ID = @PO_ID) SET @FLAG = 5 END ------datmq 7/1/2022: -------------- -----Quản lý trụ sở - gửi YC phê duyệt------- ELSE IF @TYPE='BUD_MASTER_SEND_APPROVE' BEGIN -----Có cấp phê duyệt trung gian------- IF (EXISTS (SELECT*FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID AND SIGN_USER IS NOT NULL)) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.SIGN_USER FROM BUD_MASTER A WHERE A.BUILDING_ID = @PO_ID) END ELSE -----Ko có cấp phê duyệt trung gian------- BEGIN SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END END SET @FLAG = 6 END -----Quản lý trụ sở - trung gian duyệt thành công------- ELSE IF @TYPE='BUD_MASTER_CONFIRM' BEGIN SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PPGD')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END SET @FLAG = 6 END ---Quản lý trụ sở - trưởng đơn vị đã duyệt, trả mail về cho ng tạo----- ELSE IF @TYPE='BUD_MASTER_APPROVED' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM BUD_MASTER A WHERE A.BUILDING_ID = @PO_ID) SET @FLAG = 6 END -----PhongNT 15/9/2022: Quản lý TSCĐ/CCLĐ-------- -- Thêm mới tài sản HCQT ELSE IF @TYPE = 'ASS_SEND_TDV' BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val )x) SELECT @PAGE = sp.ID FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX -- SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID) --SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) --SET @p_MAKER_ID = (SELECT MAKER_ID FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID) --SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@PAGE='ASS_ADDNEW') BEGIN SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID FROM (SELECT MAKER_ID FROM ASS_ADDNEW WHERE ADDNEW_ID =@PO_ID) A LEFT JOIN TL_USER B ON B.TLNANME = A.MAKER_ID END ELSE IF(@PAGE='ASS_COLLECT_MULTI_MASTER') BEGIN SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID FROM (SELECT MAKER_ID FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID =@PO_ID) A LEFT JOIN TL_USER B ON B.TLNANME = A.MAKER_ID END ELSE IF(@PAGE='ASS_TRANSFER_MULTI_MASTER') BEGIN SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID FROM (SELECT MAKER_ID FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID =@PO_ID) A LEFT JOIN TL_USER B ON B.TLNANME = A.MAKER_ID END ELSE IF(@PAGE='ASS_USE_MULTI_MASTER') BEGIN SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID FROM (SELECT MAKER_ID FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID =@PO_ID) A LEFT JOIN TL_USER B ON B.TLNANME = A.MAKER_ID END ELSE IF(@PAGE='ASS_LIQUIDATION') BEGIN SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID FROM (SELECT MAKER_ID FROM ASS_LIQUIDATION WHERE LIQ_ID =@PO_ID) A LEFT JOIN TL_USER B ON B.TLNANME = A.MAKER_ID END ELSE IF(@PAGE='ASS_INVENTORY_MASTER') BEGIN IF((SELECT SIGN_USER FROM ASS_INVENTORY_MASTER WHERE INVENT_ID = @PO_ID) IS NOT NULL) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT SIGN_USER FROM ASS_INVENTORY_MASTER WHERE INVENT_ID = @PO_ID) END ELSE BEGIN SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID FROM (SELECT MAKER_ID FROM ASS_INVENTORY_MASTER WHERE INVENT_ID =@PO_ID) A LEFT JOIN TL_USER B ON B.TLNANME = A.MAKER_ID END END IF (@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND SECUR_CODE = @DEP_CREATE AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TP')) UNION ALL SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING WHERE 1=1 AND BRANCH_ID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND ROLE_NEW IN ('GDDV','TP') 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 ='')) END ELSE IF(@BRANCH_TYPE IS NOT NULL) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TPGD')) UNION ALL SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING WHERE 1=1 AND BRANCH_ID = @BRANCH_CREATE AND ROLE_NEW IN ('GDDV','TPGD') 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 ='')) END SET @FLAG = 6 END ELSE IF @TYPE = 'ASS_SEND_GDV' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE('GDV','DV0001','DEP000000000022')) SET @FLAG = 6 END ELSE IF @TYPE = 'ASS_REJECT_GDV' BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val )x) SELECT @PAGE = sp.ID FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX IF(@PAGE='ASS_ADDNEW') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) ( SELECT MAKER_ID_KT FROM ASS_ADDNEW WHERE ADDNEW_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_COLLECT_MULTI_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) ( SELECT MAKER_ID_KT FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_TRANSFER_MULTI_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) ( SELECT MAKER_ID_KT FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_USE_MULTI_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) ( SELECT MAKER_ID_KT FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_LIQUIDATION') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) ( SELECT MAKER_ID_KT FROM ASS_LIQUIDATION WHERE LIQ_ID = @PO_ID ) END SET @FLAG = 6 END ELSE IF @TYPE = 'ASS_SEND_KSV' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE('KSV','DV0001','DEP000000000022')) SET @FLAG = 6 END ELSE IF @TYPE = 'ASS_APPROVED' BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val )x) SELECT @PAGE = sp.ID FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX IF(@PAGE='ASS_ADDNEW') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_ADDNEW WHERE ADDNEW_ID = @PO_ID UNION SELECT MAKER_ID_KT FROM ASS_ADDNEW WHERE ADDNEW_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_COLLECT_MULTI_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID = @PO_ID UNION SELECT MAKER_ID_KT FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_TRANSFER_MULTI_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @PO_ID UNION SELECT MAKER_ID_KT FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_USE_MULTI_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID UNION SELECT MAKER_ID_KT FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_LIQUIDATION') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_LIQUIDATION WHERE LIQ_ID = @PO_ID UNION SELECT MAKER_ID_KT FROM ASS_LIQUIDATION WHERE LIQ_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_UPDATE') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_UPDATE au WHERE au.UPDATE_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_INVENTORY_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_INVENTORY_MASTER au WHERE au.INVENT_ID = @PO_ID ) END SET @FLAG = 6 END ELSE IF @TYPE = 'ASS_SEND_NT' BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val )x) SELECT @PAGE = sp.ID FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX IF(@PAGE='ASS_ADDNEW') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_ADDNEW WHERE ADDNEW_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_COLLECT_MULTI_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_TRANSFER_MULTI_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_USE_MULTI_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_LIQUIDATION') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_LIQUIDATION WHERE LIQ_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_UPDATE') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_UPDATE au WHERE UPDATE_ID = @PO_ID ) END ELSE IF(@PAGE='ASS_COST_ALLOCATION') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM ASS_COST_ALLOCATION au WHERE au.COS_ID = @PO_ID ) END ELSE IF(@PAGE='CON_MASTER') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM CON_MASTER CM WHERE CM.CONSTRUCT_ID = @PO_ID ) END ELSE IF(@PAGE='CON_LAYOUT_BLUEPRINT') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM CON_LAYOUT_BLUEPRINT CM WHERE CM.CON_LAYOUT_BLUEPRINT_ID = @PO_ID ) END SET @FLAG = 6 END ELSE IF @TYPE = 'ASS_SEND_CONFIRM' BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val )x) SELECT @PAGE = sp.ID FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX DECLARE @BRANCH_ID VARCHAR(20),@DEP_ID VARCHAR(20) IF(@PAGE='ASS_COLLECT_MULTI_MASTER') BEGIN SELECT TOP 1 @BRANCH_CREATE = A.BRANCH_ID,@DEP_CREATE = A.DEPT_ID_USE,@BRANCH_TYPE = B.BRANCH_TYPE FROM dbo.ASS_COLLECT_MULTI_DT A LEFT JOIN dbo.CM_BRANCH B ON A.BRANCH_ID =B.BRANCH_ID WHERE COL_MULTI_MASTER_ID = @PO_ID ORDER BY COLLECT_MULTI_ID ASC END ELSE IF(@PAGE='ASS_USE_MULTI_MASTER') BEGIN SELECT TOP 1 @BRANCH_CREATE = A.BRANCH_ID, @DEP_CREATE = DEPT_ID,@BRANCH_TYPE = B.BRANCH_TYPE FROM dbo.ASS_USE_MULTI_DT A LEFT JOIN dbo.CM_BRANCH B ON A.BRANCH_ID =B.BRANCH_ID WHERE A.USER_MASTER_ID = @PO_ID ORDER BY USE_MULTI_ID ASC END IF (@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND SECUR_CODE = @DEP_CREATE AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TP')) UNION ALL SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING WHERE 1=1 AND ((BRANCH_ID = @BRANCH_ID AND DEP_ID = @DEP_ID) OR (BRANCH_ID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE)) AND ROLE_NEW IN ('GDDV','TP') 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 ='')) END ELSE BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TPGD')) UNION ALL SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING WHERE 1=1 AND ((BRANCH_ID = @BRANCH_ID) OR (BRANCH_ID = @BRANCH_CREATE)) AND ROLE_NEW IN ('GDDV','TPGD') 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 ='')) END SET @FLAG =6 END ELSE IF @TYPE ='ASS_TRANSFER_CONFIRM_HANDOVER' BEGIN SELECT TOP 1 @BRANCH_CREATE=A.BRANCH_ID_OLD,@DEP_CREATE =DEPT_ID_OLD,@BRANCH_TYPE =b.BRANCH_TYPE FROM dbo.ASS_TRANSFER_MULTI_DT A LEFT JOIN dbo.CM_BRANCH B ON B.BRANCH_ID = A.BRANCH_ID_OLD WHERE A.TRANS_MULTI_MASTER_ID = @PO_ID ORDER BY TRANSFER_MULTI_ID ASC IF (@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND SECUR_CODE = @DEP_CREATE AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TP')) UNION ALL SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING WHERE 1=1 AND ((BRANCH_ID = @BRANCH_ID AND DEP_ID = @DEP_ID) OR (BRANCH_ID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE)) AND ROLE_NEW IN ('GDDV','TP') 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 ='')) END ELSE BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TPGD')) UNION ALL SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING WHERE 1=1 AND ((BRANCH_ID = @BRANCH_ID) OR (BRANCH_ID = @BRANCH_CREATE)) AND ROLE_NEW IN ('GDDV','TPGD') 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 ='')) END SET @FLAG =6 END ELSE IF @TYPE ='ASS_TRANSFER_CONFIRM_RECEIVER' BEGIN SELECT TOP 1 @BRANCH_CREATE =A.BRANCH_ID,@DEP_CREATE = DEPT_ID,@BRANCH_TYPE =b.BRANCH_TYPE FROM dbo.ASS_TRANSFER_MULTI_DT A LEFT JOIN dbo.CM_BRANCH B ON B.BRANCH_ID = A.BRANCH_ID WHERE A.TRANS_MULTI_MASTER_ID = @PO_ID ORDER BY TRANSFER_MULTI_ID ASC IF (@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND SECUR_CODE = @DEP_CREATE AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TP')) UNION ALL SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING WHERE 1=1 AND ((BRANCH_ID = @BRANCH_ID AND DEP_ID = @DEP_ID) OR (BRANCH_ID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE)) AND ROLE_NEW IN ('GDDV','TP') 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 ='')) END ELSE BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TPGD')) UNION ALL SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING WHERE 1=1 AND ((BRANCH_ID = @BRANCH_ID) OR (BRANCH_ID = @BRANCH_CREATE)) AND ROLE_NEW IN ('GDDV','TPGD') 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 ='')) END SET @FLAG =6 END ELSE IF @TYPE ='ASS_INVENTORY_RECIVE_MAIL' BEGIN IF(EXISTS(SELECT 1 FROM ASS_INVENTORY_MASTER WHERE SIGN_USER IS NOT NULL AND CHECKER_ID_DVKD IS NULL AND INVENT_ID=@PO_ID)) BEGIN SELECT @BRANCH_CREATE =BRANCH_ID,@DEP_ID = DEPT_ID FROM dbo.ASS_INVENTORY_MASTER WHERE INVENT_ID=@PO_ID INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE('GDDV',@BRANCH_CREATE,@DEP_ID)) END ELSE BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT PARTY_NAME FROM dbo.ASS_INVENTORY_PARTY_DT WHERE IS_RECIVE_MAIL =1 AND INVENT_ID =@PO_ID) END SET @FLAG =6 END ELSE IF @TYPE ='ASS_INVENTORY_MAIN' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT PARTY_NAME FROM dbo.ASS_INVENTORY_PARTY_DT WHERE IS_MAIN = 1 AND INVENT_ID =@PO_ID) SET @FLAG =6 END ----------BAODNQ :15/2/2022 --Xử lý gửi mail cho phân hệ Quản lý BDS--------- ---Quản lý BDS- gửi YC phê duyệt----- ELSE IF @TYPE='RET_MASTER_SEND_APPROVE' BEGIN -----Có cấp phê duyệt trung gian------- IF (EXISTS (SELECT * FROM RET_MASTER WHERE RET_ID = @PO_ID AND SIGN_USER IS NOT NULL)) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.SIGN_USER FROM RET_MASTER A WHERE A.RET_ID = @PO_ID) END ELSE -----Ko có cấp phê duyệt trung gian------- BEGIN SET @BRANCH_CREATE = (SELECT B.BRANCH_ID FROM RET_MASTER A LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID WHERE RET_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM RET_MASTER WHERE RET_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END END SET @FLAG = 7 END ---Quản lý BDS - trung gian duyệt thành công----- ELSE IF @TYPE='RET_MASTER_CONFIRM' BEGIN SET @BRANCH_CREATE = (SELECT B.BRANCH_ID FROM RET_MASTER A LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID WHERE RET_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM RET_MASTER WHERE RET_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END SET @FLAG = 7 END ---Quản lý BDS - trưởng đơn vị đã duyệt, trả mail về cho ng tạo----- ELSE IF @TYPE='RET_MASTER_APPROVED' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM RET_MASTER A WHERE A.RET_ID = @PO_ID) SET @FLAG = 7 END ---Thông tin sửa chữa BDS- gửi YC phê duyệt----- ELSE IF @TYPE='RET_REPAIR_SEND_APPROVE' BEGIN -----Có cấp phê duyệt trung gian------- IF (EXISTS (SELECT*FROM RET_REPAIR WHERE RP_ID = @PO_ID AND SIGN_USER IS NOT NULL)) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.SIGN_USER FROM RET_REPAIR A WHERE A.RP_ID = @PO_ID) END ELSE -----Ko có cấp phê duyệt trung gian------- BEGIN SET @BRANCH_CREATE = (SELECT OFFER_BRANCH FROM RET_REPAIR WHERE RP_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM RET_REPAIR WHERE RP_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END END SET @FLAG = 7 END ---Thông tin sửa chữa BDS - trung gian duyệt thành công----- ELSE IF @TYPE='RET_REPAIR_CONFIRM' BEGIN SET @BRANCH_CREATE = (SELECT OFFER_BRANCH FROM RET_REPAIR WHERE RP_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM RET_REPAIR WHERE RP_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END SET @FLAG = 7 END ---Thông tin sửa chữa BDS - trưởng đơn vị đã duyệt, trả mail về cho ng tạo----- ELSE IF @TYPE='RET_REPAIR_APPROVED' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM RET_REPAIR A WHERE A.RP_ID = @PO_ID) SET @FLAG = 7 END ---BDS thuê làm trụ sở CN/PGD - gửi YC phê duyệt----- ELSE IF @TYPE='REAL_ESTATE_R_H_SEND_APPROVE' BEGIN -----Có cấp phê duyệt trung gian------- IF (EXISTS (SELECT*FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @PO_ID AND SIGN_USER IS NOT NULL)) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.SIGN_USER FROM REAL_ESTATE_R_H A WHERE A.RET_R_H_ID = @PO_ID) END ELSE -----Ko có cấp phê duyệt trung gian------- BEGIN SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END END SET @FLAG = 7 END ---BDS thuê làm trụ sở CN/PGD - trung gian duyệt thành công----- ELSE IF @TYPE='REAL_ESTATE_R_H_CONFIRM' BEGIN SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END SET @FLAG = 7 END ---BDS thuê làm trụ sở CN/PGD - trưởng đơn vị đã duyệt, trả mail về cho ng tạo----- ELSE IF @TYPE='REAL_ESTATE_R_H_APPROVED' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM REAL_ESTATE_R_H A WHERE A.RET_R_H_ID = @PO_ID) SET @FLAG = 7 END ---BDS đang hoàn thiện thủ tục pháp lý - gửi YC phê duyệt----- ELSE IF @TYPE='REAL_ESTATE_L_C_SEND_APPROVE' BEGIN -----Có cấp phê duyệt trung gian------- IF (EXISTS (SELECT*FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @PO_ID AND SIGN_USER IS NOT NULL)) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.SIGN_USER FROM REAL_ESTATE_L_C A WHERE A.RET_L_C_ID = @PO_ID) END ELSE -----Ko có cấp phê duyệt trung gian------- BEGIN SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP') SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END END SET @FLAG = 7 END ---BDS đang hoàn thiện thủ tục pháp lý - trung gian duyệt thành công----- ELSE IF @TYPE='REAL_ESTATE_L_C_CONFIRM' BEGIN SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT MAKER_ID FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @PO_ID) SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('TPGD', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF(@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND RoleName IN ('GDDV', 'PDG')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF(@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) --(SELECT TLNANME FROM TL_USER --WHERE 1=1 --AND TLSUBBRID = @BRANCH_CREATE --AND DEP_ID = @DEP_CREATE --AND RoleName IN ('GDDV', 'PP')) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) END SET @FLAG = 7 END ---BDS đang hoàn thiện thủ tục pháp lý - trưởng đơn vị đã duyệt, trả mail về cho ng tạo----- ELSE IF @TYPE='REAL_ESTATE_L_C_APPROVED' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM REAL_ESTATE_L_C A WHERE A.RET_L_C_ID = @PO_ID) SET @FLAG = 7 END --PHONGNT 24/2/2022 PHIẾU YÊU CẦU CÔNG TÁC-- ---PHIẾU YÊU CẦU CÔNG TÁC - gửi YC cho cấp phê duyệt trung gian--- ELSE IF @TYPE='TR_REQUEST_JOB_FORM_SEND' BEGIN DECLARE @SIGN_USER VARCHAR(20) SET @SIGN_USER = (SELECT SIGN_USER FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @PO_ID) PRINT @SIGN_USER IF (@SIGN_USER ='TKTGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE(@SIGN_USER,'','') END ELSE IF (@SIGN_USER IS NOT NULL) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.SIGN_USER FROM TR_REQUEST_JOB_FORM A WHERE A.REQ_ID = @PO_ID) END SET @FLAG = 7 END ELSE IF @TYPE='TR_REQUEST_JOB_FORM_SIGN' BEGIN DECLARE @DVCM_ID VARCHAR(50) SELECT TOP 1 @ROLE_CURRENT = Temp.ROLE_USER, @DVCM_ID=Temp.DVDM_ID,@BRANCH_ID =Temp.BRANCH_ID,@DEP_ID=Temp.DEP_ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=@PO_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') IF(@ROLE_CURRENT IN ('GDK','PTGD')) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM dbo.FN_GET_USER_MANAGER_BY_DVCM(@ROLE_CURRENT,@DVCM_ID)) END ELSE IF (@ROLE_CURRENT IS NOT NULL) BEGIN IF(EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE(@ROLE_CURRENT,@BRANCH_ID,@DEP_ID))) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE(@ROLE_CURRENT,@BRANCH_ID,@DEP_ID)) END END SET @FLAG = 7 END ---Phiếu yêu cầu công tác - trưởng đơn vị đã duyệt, trả mail về cho ng tạo----- ELSE IF @TYPE='TR_REQUEST_JOB_FORM_SEND_EMP_NT' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM TR_REQUEST_JOB_FORM A WHERE A.REQ_ID = @PO_ID) UNION ALL (SELECT A.EMP_ID FROM TR_REQUEST_JOB_FORM A WHERE A.REQ_ID = @PO_ID) SET @FLAG = 7 END ELSE IF @TYPE='TR_REQUEST_JOB_FORM_SEND_NVDV' BEGIN SET @BRANCH_ID = (SELECT B.TLSUBBRID FROM dbo.TR_REQUEST_JOB_FORM A JOIN dbo.TL_USER B ON A.MAKER_ID=B.TLNANME WHERE a.REQ_ID=@PO_ID) INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE('NVDV','DV0001','')) SET @FLAG = 7 END ELSE IF @TYPE='TR_REQUEST_JOB_FORM_APPROVED' BEGIN SET @BRANCH_ID = (SELECT B.TLSUBBRID FROM dbo.TR_REQUEST_JOB_FORM A JOIN dbo.TL_USER B ON A.MAKER_ID=B.TLNANME WHERE a.REQ_ID=@PO_ID) INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM TR_REQUEST_JOB_FORM A WHERE A.REQ_ID = @PO_ID) UNION ALL (SELECT A.EMP_ID FROM TR_REQUEST_JOB_FORM A WHERE A.REQ_ID = @PO_ID) UNION ALL (SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE('NVDV',@BRANCH_ID,'')) SET @FLAG = 7 END ELSE IF @TYPE='TR_REQUEST_JOB_FORM_CANCEL' BEGIN SET @BRANCH_ID = (SELECT B.TLSUBBRID FROM dbo.TR_REQUEST_JOB_FORM A JOIN dbo.TL_USER B ON A.MAKER_ID=B.TLNANME WHERE a.REQ_ID=@PO_ID) INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM TR_REQUEST_JOB_FORM A WHERE A.REQ_ID = @PO_ID) UNION ALL (SELECT A.EMP_ID FROM TR_REQUEST_JOB_FORM A WHERE A.REQ_ID = @PO_ID) UNION ALL (SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE('NVDV',@BRANCH_ID,'')) SET @FLAG = 7 END --PHONGNT 24/2/2022 PHIẾU YÊU CẦU XE-- ---PHIẾU YÊU CẦU XE - gửi YC phê duyệt--- --ELSE IF @TYPE='TR_REQUEST_CAR_SEND_TDV' --BEGIN -- SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQUEST_CAR WHERE REQ_ID = @PO_ID) -- SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) -- SET @p_MAKER_ID = (SELECT MAKER_ID FROM TR_REQUEST_CAR WHERE REQ_ID = @PO_ID) -- SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) -- IF(@BRANCH_TYPE = 'PGD') -- BEGIN -- INSERT INTO @LST_USER_RECIVE (TLNAME) -- SELECT TLNANME FROM TL_USER A -- JOIN AbpUserRoles B ON B.UserId = A.ID -- JOIN AbpRoles C ON C.Id=B.RoleId -- WHERE 1=1 -- AND A.TLSUBBRID = @BRANCH_CREATE -- AND C.DisplayName IN ('TPGD', 'PPGD') -- END -- ELSE IF(@BRANCH_TYPE = 'CN') -- BEGIN -- INSERT INTO @LST_USER_RECIVE (TLNAME) -- SELECT TLNANME FROM TL_USER A -- JOIN AbpUserRoles B ON B.UserId = A.ID -- JOIN AbpRoles C ON C.Id=B.RoleId -- WHERE 1=1 -- AND A.TLSUBBRID = @BRANCH_CREATE -- AND RoleName IN ('GDDV', 'PDG') -- END -- ELSE IF(@BRANCH_TYPE = 'HS') -- BEGIN -- INSERT INTO @LST_USER_RECIVE (TLNAME) -- SELECT TLNANME FROM TL_USER A -- JOIN AbpUserRoles B ON B.UserId = A.ID -- JOIN AbpRoles C ON C.Id=B.RoleId -- WHERE 1=1 -- AND A.TLSUBBRID = @BRANCH_CREATE -- AND A.DEP_ID = @DEP_CREATE -- AND RoleName IN ('GDDV', 'TP','TBP','PP') -- END -- SET @FLAG = 7 --END -----Phiếu yêu cầu xe - gửi mail cho người cập nhật phiếu----- --ELSE IF @TYPE='TR_REQUEST_CAR_SEND_USERUPD' --BEGIN -- INSERT INTO @LST_USER_RECIVE (TLNAME) -- (SELECT USER_UPDATE FROM TR_REQUEST_CAR WHERE REQ_ID = @PO_ID) -- SET @FLAG = 7 --END -----Phiếu yêu cầu xe - gửi mail cho CVĐĐ Xe----- --ELSE IF @TYPE='TR_REQUEST_CAR_SEND_CV' --BEGIN -- INSERT INTO @LST_USER_RECIVE (TLNAME) -- (SELECT * FROM dbo.TR_REQUEST_CAR) -- SET @FLAG = 7 --END ELSE IF @TYPE='TR_REQUEST_CAR' BEGIN SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID) INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,'','PYC-XE' SET @FLAG = 2 END ---Phiếu yêu cầu xe - gửi mail cho người tạo----- ELSE IF @TYPE='TR_REQUEST_CAR_SEND_MAKER' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM TR_REQUEST_CAR WHERE REQ_ID = @PO_ID) SET @FLAG = 7 END ---Phiếu yêu cầu xe - CVĐĐ Xe đã duyệt, gửi mail cho Lãnh Đạo HC HO----- --ELSE IF @TYPE='TR_REQUEST_CAR_COST_CV_App' --BEGIN -- SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQUEST_CAR WHERE REQ_ID = @PO_ID) -- INSERT INTO @LST_USER_RECIVE (TLNAME) -- (SELECT TLNANME FROM TL_USER -- WHERE 1=1 -- AND TLSUBBRID = @BRANCH_CREATE -- AND RoleName IN ('GDDV', 'PP')) -- SET @FLAG = 7 --END ---Phiếu yêu cầu xe - Gửi CV và người tạo----- --ELSE IF @TYPE='TR_REQUEST_CAR_SEND_CV_USER' --BEGIN -- INSERT INTO @LST_USER_RECIVE (TLNAME) -- (SELECT MAKER_ID FROM TR_REQUEST_CAR WHERE REQ_ID = @PO_ID) -- INSERT INTO @LST_USER_RECIVE (TLNAME) -- (SELECT USER_UPDATE FROM TR_REQUEST_CAR WHERE REQ_ID = @PO_ID) -- SET @FLAG = 7 --END -- Kho vật liệu ELSE IF (@TYPE = 'MW_IN_KT_APPR') BEGIN IF(EXISTS(SELECT * FROM MW_IN_MASTER WHERE IN_ID = @PO_ID AND AUTH_STATUS = 'A' AND AUTH_STATUS_KT = 'A')) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM MW_IN_MASTER WHERE IN_ID = @PO_ID) END SET @FLAG = 8 END ELSE IF (@TYPE = 'MW_OUT_KT_APPR') BEGIN IF(EXISTS(SELECT * FROM MW_OUT WHERE OUT_ID = @PO_ID AND AUTH_STATUS = 'A' AND KT_AUTH_STATUS = 'A')) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM MW_OUT WHERE OUT_ID = @PO_ID) END SET @FLAG = 8 END ELSE IF (@TYPE = 'MW_TRANSFER_KT_APPR') BEGIN IF(EXISTS(SELECT * FROM MW_TRANSFER WHERE TRANSFER_ID = @PO_ID AND AUTH_STATUS = 'A' AND KT_AUTH_STATUS = 'A')) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM MW_TRANSFER WHERE TRANSFER_ID = @PO_ID) END SET @FLAG = 8 END ELSE IF (@TYPE = 'MW_LIQUID_KT_APPR') BEGIN IF(EXISTS(SELECT * FROM MW_LIQ_MASTER WHERE LIQ_ID = @PO_ID AND AUTH_STATUS = 'A' AND KT_AUTH_STATUS = 'A')) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM MW_LIQ_MASTER WHERE LIQ_ID = @PO_ID) END SET @FLAG = 8 END ELSE IF @TYPE = 'TR_REJECT_GDV' BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val )x) SELECT @PAGE = sp.ID FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX IF(@PAGE='TR_REQ_PAYMENT') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) ( SELECT MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID ) END ELSE IF(@PAGE='TR_REQ_ADVANCE_PAMENT') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) ( SELECT MAKER_ID_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID ) END SET @FLAG = 6 END ELSE IF @TYPE = 'TR_REJECT_NT' BEGIN --cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from( SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val )x) SELECT @PAGE = sp.ID FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX IF(@PAGE='TR_REQ_PAYMENT') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID ) END ELSE IF(@PAGE='TR_REQ_ADVANCE_PAMENT') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID ) END SET @FLAG = 6 END ----------------BAODNQ 26/10/2022 : GỬI MAIL QUẢN LÝ HỢP ĐỒNG------------------- --------------------NG TẠO GỬI YÊU CẦU PHÊ DUYỆT HỢP ĐỒNG-------------------- ELSE IF (@TYPE = 'TR_CONTRACT_SEND_APP') BEGIN DECLARE @p_MAKER_BRANCH_CREATE VARCHAR(15), @p_MAKER_BRANCH_TYPE VARCHAR(15), @p_MAKER_DEP_CREATE VARCHAR(15) SET @p_MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @PO_ID) SET @p_MAKER_BRANCH_CREATE = (SELECT TOP 1 TLSUBBRID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) SET @p_MAKER_BRANCH_TYPE = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_MAKER_BRANCH_CREATE) SET @p_MAKER_DEP_CREATE =(SELECT TOP 1 DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) SET @p_DEP_CREATE_CODE = (SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @p_MAKER_DEP_CREATE) IF(@p_MAKER_BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @p_MAKER_BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF (@p_MAKER_BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @p_MAKER_BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF (@p_MAKER_BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @p_MAKER_BRANCH_CREATE AND DEP_ID = @p_MAKER_DEP_CREATE AND( (------------Nếu là phòng hành chính, k gửi mail cho GDDV------------- @p_DEP_CREATE_CODE = '0690604' AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TBP', 'TP', 'PP')) ) OR(------------Các phòng ban khác gửi mail bth------------- @p_DEP_CREATE_CODE <> '0690604' AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) ) ) END SET @FLAG = 9 END --------------------TRƯỞNG ĐV ĐÃ DUYỆT, TRẢ MAIL VỀ CHO NG TẠO--------------------- ELSE IF (@TYPE = 'TR_CONTRACT_APPROVE') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM TR_CONTRACT A WHERE A.CONTRACT_ID = @PO_ID) SET @FLAG = 9 END ----------------BAODNQ 26/10/2022 : GỬI MAIL QUẢN LÝ PO------------------- --------------------NG TẠO GỬI YÊU CẦU PHÊ DUYỆT PO-------------------- ELSE IF(@TYPE = 'TR_PO_MASTER_SEND_APP') BEGIN SET @BRANCH_CREATE = (SELECT TOP 1 BRANCH_ID FROM TR_PO_MASTER WHERE PO_ID = @PO_ID) SET @BRANCH_TYPE = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE) SET @p_MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_PO_MASTER WHERE PO_ID = @PO_ID) SET @DEP_CREATE = (SELECT TOP 1 DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID) SET @p_DEP_CREATE_CODE = (SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @DEP_CREATE) IF(@BRANCH_TYPE = 'PGD') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD')) END ELSE IF (@BRANCH_TYPE = 'CN') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD')) END ELSE IF (@BRANCH_TYPE = 'HS') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM TL_USER WHERE 1=1 AND TLSUBBRID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE AND( (------------Nếu là phòng hành chính, k gửi mail cho GDDV------------- @p_DEP_CREATE_CODE = '0690604' AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TBP', 'TP', 'PP')) ) OR(------------Các phòng ban khác gửi mail bth------------- @p_DEP_CREATE_CODE <> '0690604' AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) ) ) END SET @FLAG = 10 END --------------------TRƯỞNG ĐV ĐÃ DUYỆT, TRẢ MAIL VỀ CHO NG TẠO--------------------- ELSE IF(@TYPE = 'TR_PO_MASTER_APPROVE') BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT A.MAKER_ID FROM TR_PO_MASTER A WHERE A.PO_ID = @PO_ID) SET @FLAG = 10 END ------------------END BAODNQ-------------------- ----- END PYC MUA SẮM -------------------- ----------------BAODNQ 30/11/2022 : GỬI MAIL ĐÁNH GIÁ NCC------------------------------ ---------------Ng tạo gửi phê duyệt, cấp trung gian duyệt, trưởng đơn vị duyệt--------------------- ---------------NVXL ĐMMS gửi phê duyệt, KSV/trưởng đơn vị ĐMMS duyệt, lãnh đạo khối/GDK hỗ trợ duyệt, điều phối xử lý--------------------------- ELSE IF(@TYPE = 'TR_RATE_SUPPLIER_MASTER_SendAppr' OR @TYPE = 'TR_RATE_SUPPLIER_MASTER_Confirm' OR @TYPE = 'TR_RATE_SUPPLIER_MASTER_App' OR @TYPE = 'TR_RATE_SUPPLIER_PROCESS_CHILD_Upd' OR @TYPE = 'TR_RATE_SUPPLIER_PROCESS_CHILD_App' OR @TYPE = 'TR_RATE_SUPPLIER_MASTER_PROCESS_App' OR @TYPE = 'TR_RATE_SUPPLIER_PROCESS_CHILD_Ins') BEGIN SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_RATE_SUPPLIER_MASTER WHERE RATE_ID =@PO_ID) --------------Nếu phiếu chưa hoàn tất, gửi mail cho ng xử lý kế tiếp----------------- IF(NOT EXISTS(SELECT RATE_ID FROM TR_RATE_SUPPLIER_MASTER WHERE RATE_ID = @PO_ID AND PROCESS_STATUS = 'APPROVE')) BEGIN INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'RATE_SUP' SET @FLAG = 11 END --------------Nếu đã hoàn tất, gửi mail cho ng tạo----------------- ELSE BEGIN INSERT INTO @LST_USER_RECIVE(TLNAME) SELECT @MAKER_ID SET @FLAG = 12 END END ---START hieuhm 09/11/2022 Gửi phê duyệt công trình, gửi mail cho người duyệt----- ELSE IF @TYPE='CON_MASTER_SendApp' BEGIN DECLARE @BRANCH_ID_CONMASTER VARCHAR(15) = '', @DEP_ID_CONMASTER VARCHAR(15) ='' --SELECT @BRANCH_ID_CONMASTER = BRANCH_ID, @DEP_ID_CONMASTER = DEP_CREATE FROM CON_MASTER WHERE CONSTRUCT_ID = @PO_ID INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM [dbo].[FN_GET_USER_BY_ROLE] ('GDDV',@BRANCH_ID_CONMASTER,@DEP_ID_CONMASTER)) SET @FLAG = 6 END ---END hieuhm 09/11/2022 Gửi phê duyệt công trình, gửi mail cho người duyệt----- ---START hieuhm 11/11/2022 Phê duyệt công trình, gửi mail cho người tạo----- ELSE IF @TYPE='CON_MASTER_APP' BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM CON_MASTER CM WHERE CM.CONSTRUCT_ID = @PO_ID) SET @FLAG = 6 END ---END hieuhm 11/11/2022 Phê duyệt công trình, gửi mail cho người tạo----- ---START hieuhm 16/11/2022 Gửi phê duyệt layout bản vẽ, gửi mail cho người duyệt----- ELSE IF (@TYPE='CON_LAYOUT_BLUEPRINT_App' OR @TYPE ='CON_LAYOUT_BLUEPRINT_SendApp') BEGIN IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = @PO_ID AND [STATUS] = 'C' AND PROCESS_ID <> 'APPROVE')) BEGIN DECLARE @BRANCH_ID_CONLB VARCHAR(15) = '', @DEP_ID_CONLB VARCHAR(15) ='', @ROLE_CONLB VARCHAR(15) ='',@PROCESS_ID_CONLB VARCHAR(15) ='',@DVDM_ID_CONLB VARCHAR(15) ='' SELECT @BRANCH_ID_CONLB = BRANCH_ID,@DEP_ID_CONLB = DEP_ID,@ROLE_CONLB = ROLE_USER,@PROCESS_ID_CONLB = PROCESS_ID,@DVDM_ID_CONLB = DVDM_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @PO_ID AND [STATUS] = 'C' IF(@PROCESS_ID_CONLB NOT IN ('GDK_HT','PTGD_TC','PTGD_VH')) BEGIN INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT DISTINCT TLNANME FROM [dbo].[FN_GET_USER_BY_ROLE] (@ROLE_CONLB,@BRANCH_ID_CONLB,@DEP_ID_CONLB)) END ELSE BEGIN DECLARE @BRANCH_TYPE_CONLB VARCHAR(15) = (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID_CONLB) INSERT INTO @LST_USER_RECIVE (TLNAME) SELECT TLNANME FROM ( SELECT TU.TLNANME, TU.TLFullName, TU.TLSUBBRID AS BRANCH_ID, TU.SECUR_CODE AS DEP_ID, R.DisplayName AS ROLE_OLD, TRM.ROLE_NEW,NULL AS EFF_DATE, NULL AS EXP_DATE FROM dbo.TL_USER TU LEFT JOIN dbo.AbpUserRoles UR ON TU.ID = UR.UserId INNER JOIN dbo.AbpRoles R ON R.Id = UR.RoleId LEFT JOIN (SELECT * FROM dbo.TL_SYS_ROLE_MAPPING RM WHERE RM.TLNAME IS NULL OR RM.TLNAME = '') TRM ON (TRM.ROLE_OLD = R.DisplayName) UNION ALL SELECT TU.TLNANME, TU.TLFullName, RM.BRANCH_ID, RM.DEP_ID, RM.ROLE_OLD, RM.ROLE_NEW, RM.EFF_DATE,RM.EXP_DATE FROM dbo.TL_USER TU LEFT JOIN dbo.TL_SYS_ROLE_MAPPING RM ON TU.TLNANME = RM.TLNAME WHERE CAST(RM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TMP WHERE 1 = 1 AND ((TMP.ROLE_OLD = @ROLE_CONLB OR TMP.ROLE_NEW = @ROLE_CONLB ) OR @ROLE_CONLB IS NULL OR @ROLE_CONLB = '') AND ((TMP.BRANCH_ID IN (SELECT BRANCH_ID FROM PL_COSTCENTER_DT WHERE COST_ID IN (select COST_ID from PL_COSTCENTER where DVDM_ID = @DVDM_ID_CONLB)) AND TMP.DEP_ID IN (SELECT DEP_ID FROM PL_COSTCENTER_DT WHERE COST_ID IN (select COST_ID from PL_COSTCENTER where DVDM_ID = @DVDM_ID_CONLB))) OR (NOT EXISTS(SELECT * FROM PL_COSTCENTER_DT WHERE COST_ID IN (select COST_ID from PL_COSTCENTER where DVDM_ID = @DVDM_ID_CONLB))) ) END END SET @FLAG = 6 END -----END hieuhm 16/11/2022 Gửi phê duyệt layout bản vẽ, gửi mail cho người duyệt----- IF(@FLAG = 0) BEGIN SELECT A.*,B.TLFullName,B.EMAIL FROM TL_ROLE_NOTIFICATION A LEFT JOIN TL_USER B ON A.TL_NAME=B.TLNANME WHERE EXISTS(SELECT * FROM @LST_POID WHERE ID = A.PO_ID) END ELSE IF(@FLAG = 1) BEGIN SELECT B.*,A.TLFullName,A.EMAIL FROM TL_USER A LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1 >2 WHERE (A.TLNANME IN (SELECT * FROM @LST_USER_RECIVE)) --AND A.TLNANME NOT IN ('trungnq1','taila') END -- NEU LA TO TRINH CHU TRUONG, PYC MS THÌ TRA VE FLAG =2 ELSE IF(@FLAG = 2) BEGIN SELECT B.*,A.TLFullName,A.EMAIL FROM TL_USER A LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1>2 WHERE (A.TLNANME IN (SELECT TLNAME FROM @PL_PROCESS_CURRENT_SEARCH_TEMP)) --AND A.TLNANME NOT IN ('trungnq1','taila') END -- SAU KHI TT CHU TRUONG DUOC PHE DUYET THI THONG BAO CHO NGUOI TAO TO TRINH ELSE IF(@FLAG = 3) BEGIN SELECT B.*,A.TLFullName,A.EMAIL FROM TL_USER A LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1>2 WHERE (A.TLNANME =@MAKER_ID OR A.TLNANME IN (SELECT TLNAME FROM @PL_PROCESS_CURRENT_SEARCH_TEMP)) --AND A.TLNANME NOT IN ('trungnq1','taila') END -- SAU KHI PYCMS DUOC PHE DUYET THI THONG BAO CHO NGUOI TAO VA NGUOI XU LY ELSE IF(@FLAG = 4) BEGIN SELECT B.*,A.TLFullName,A.EMAIL FROM TL_USER A LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1>2 WHERE (A.TLNANME =@MAKER_ID OR A.TLNANME =@NV_XL_MS) --AND A.TLNANME NOT IN ('trungnq1','taila') END -----------Quản lý cho thuê---------------- ELSE IF(@FLAG = 5) BEGIN SELECT TLFullName, EMAIL AS Email, ID as [USER_ID] FROM TL_USER WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE)) END ELSE IF(@FLAG = 6) BEGIN SELECT TLFullName, EMAIL AS Email, ID as [USER_ID] FROM TL_USER WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE)) END --------------BAODNQ 15/2/2022: Quản lý BDS-------------------- ELSE IF(@FLAG = 7) BEGIN SELECT TLFullName, EMAIL AS Email, ID as [USER_ID] FROM TL_USER WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE)) END --------------QUẢN LÝ THANH TOÁN TẠM ỨNG------------------ ELSE IF(@FLAG = 8) BEGIN SELECT TLFullName, EMAIL AS Email, ID as [USER_ID] FROM TL_USER WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE)) END --------------BAODNQ 26/10/2022 QUẢN LÝ HỢP ĐỒNG MUA SẮM------------------- ELSE IF (@FLAG = 9) BEGIN SELECT TLFullName, EMAIL AS Email, ID as [USER_ID] FROM TL_USER WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE)) END --------------BAODNQ 26/10/2022 QUẢN LÝ PO------------------- ELSE IF (@FLAG = 10) BEGIN SELECT TLFullName, EMAIL AS Email, ID as [USER_ID] FROM TL_USER WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE)) END --------------BAODNQ 30/11/2022 ĐÁNH GIÁ NCC------------------ -------------Nếu phiếu chưa hoàn tất--------------- ELSE IF(@FLAG = 11) BEGIN SELECT TU.TLFullName, TU.EMAIL AS Email, TU.ID AS [USER_ID] FROM TL_USER TU WHERE TU.TLNANME IN (SELECT TLNAME FROM @PL_PROCESS_CURRENT_SEARCH_TEMP) END -------------Nếu phiếu đã hoàn tất--------------- ELSE IF(@FLAG = 12) BEGIN SELECT TLFullName, EMAIL AS Email, ID as [USER_ID] FROM TL_USER WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE)) END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_MASTER_Ins]' GO ALTER PROCEDURE [dbo].[BUD_MASTER_Ins] @p_ASSET_ID varchar(15) = NULL, @p_RET_ID VARCHAR(15) = NULL, @p_BUILDING_NAME nvarchar(1000) = NULL, @p_BRANCH_ID varchar(15) = NULL, @p_ADDRESS nvarchar(800) = NULL, @p_OWNER_OR_RENT varchar(1) = NULL, @p_NUM_FLOOR int = NULL, @p_AREA numeric(18,2) = NULL, @p_TOTAL_AREA numeric(18,2) = NULL, @p_RENT_TOTAL_AREA numeric(18,2) = NULL, @p_UTILZED_AREA numeric(18,2) = NULL, @p_NOTES ntext = 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_XML_TEMP xml = NULL, @p_RENT_AMT DECIMAL(18,0) =NULL, @p_DEPOSITS_AMT DECIMAL(18,0) =NULL, @p_RENT_TIME int, @p_IS_SEND_APPR VARCHAR(15), @p_SEND_APPR_DT VARCHAR(20), @p_SIGN_USER VARCHAR(15), @p_SIGN_DT VARCHAR(15), @p_CONTRACT_ID VARCHAR(15) = NULL, @p_SUP_ID VARCHAR(15) = NULL, @p_VAT INT = 0, @p_LENGTH DECIMAL(18,2) = NULL, @p_WIDTH DECIMAL(18,2) = NULL, @p_BRANCH_USE_ID VARCHAR(15) = NULL AS /* --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM BUD_MASTER WHERE BUILDING_ID=@p_BUILDING_ID SET @ERRORSYS = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' BUILDING_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END */ IF(EXISTS(SELECT BUILDING_ID FROM BUD_MASTER WHERE BUILDING_NAME = @p_BUILDING_NAME)) BEGIN SELECT '-1' AS Result, '' BUILDING_ID, N'Thêm mới thất bại. Tên trụ sở đã tồn tại trong hệ thống. Vui lòng chọn tên trụ sở khác.' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @p_ROW_NUM INT = 0 DECLARE @l_BUILDING_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'BUD_MASTER', @l_BUILDING_ID out IF @l_BUILDING_ID='' OR @l_BUILDING_ID IS NULL GOTO ABORT INSERT INTO BUD_MASTER([BUILDING_ID],[ASSET_ID],[RET_ID],[BUILDING_NAME],[BRANCH_ID],[BRANCH_USE_ID],[ADDRESS],[OWNER_OR_RENT], [NUM_FLOOR],[AREA],[TOTAL_AREA],[RENT_TOTAL_AREA],[UTILZED_AREA],[NOTES],[RECORD_STATUS], [AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[XML_TEMP],[RENT_AMT],[DEPOSITS_AMT],[RENT_TIME],[IS_SEND_APPR],[SEND_APPR_DT], [SIGN_USER], [SIGN_DT], [CONTRACT_ID], [SUP_ID], [VAT], [LENGTH], [WIDTH] ) VALUES(@l_BUILDING_ID ,@p_ASSET_ID, @p_RET_ID,@p_BUILDING_NAME ,@p_BRANCH_ID, @p_BRANCH_USE_ID, @p_ADDRESS , @p_OWNER_OR_RENT ,@p_NUM_FLOOR ,@p_AREA ,@p_TOTAL_AREA ,@p_RENT_TOTAL_AREA ,0 , @p_NOTES ,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) , @p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_XML_TEMP,@p_RENT_AMT,@p_DEPOSITS_AMT,@p_RENT_TIME,@p_IS_SEND_APPR , @p_SEND_APPR_DT ,@p_SIGN_USER,@p_SIGN_DT, @p_CONTRACT_ID, @p_SUP_ID, @p_VAT, @p_LENGTH, @p_WIDTH) IF @@Error <> 0 GOTO ABORT -----------BAODNQ 10/3/2022 : Kiểm tra danh sách tầng phải khớp với số tầng của trụ sở --DECLARE @p_XML_TOTAL_COUNT INT --SET @p_XML_TOTAL_COUNT = ( -- SELECT @p_XML_TEMP.value('count(/Root/XmlData1/BUILDING_AREA_ID)', 'INT') as 'COUNT' --) --PRINT @p_XML_TOTAL_COUNT --IF(@p_NUM_FLOOR <> @p_XML_TOTAL_COUNT) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' BUILDING_ID, -- N'Số tầng trên lưới danh sách phải khớp với số tầng của trụ sở' ErrorDesc -- RETURN '-1' --END ------------CHECK TỔNG DT CÁC TẦNG PHẢI = DT TRỤ SỞ--------- --DECLARE @p_XML_TOTAL_FLOOR_AREA NUMERIC(18, 2) --SET @p_XML_TOTAL_FLOOR_AREA = ( -- SELECT @p_XML_TEMP.value('sum(/Root/XmlData1/FLOOR_AREA)', 'NUMERIC(18,2)') AS 'SUM' --) --PRINT @p_XML_TOTAL_FLOOR_AREA --IF(@p_XML_TOTAL_FLOOR_AREA <> @p_TOTAL_AREA) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' BUILDING_ID, -- N'Tổng diện tích các tầng phải bằng diện tích trụ sở' ErrorDesc -- RETURN '-1' --END ----------------CHECK TỔNG DT CÁC TẦNG KO DC LỚN HƠN DT TRỤ SỞ-------- DECLARE @p_XML_TOTAL_FLOOR_AREA NUMERIC(18, 2) SET @p_XML_TOTAL_FLOOR_AREA = ( SELECT @p_XML_TEMP.value('sum(/Root/XmlData1/FLOOR_AREA)', 'NUMERIC(18,2)') AS 'SUM' ) PRINT @p_XML_TOTAL_FLOOR_AREA IF(@p_XML_TOTAL_FLOOR_AREA > @p_TOTAL_AREA) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result, '' BUILDING_ID, N'Tổng diện tích các tầng không được lớn hơn tổng diện tích trụ sở' ErrorDesc RETURN '-1' END ---------------------INSERT DT---------------------- Declare @hdoc1 INT DECLARE @d_BUILDING_AREA_ID VARCHAR(15), @d_FLOOR_NO INT, @d_FLOOR_AREA decimal(18,2), @d_INTERNAL_AREA decimal(18,2), @d_RENT_AREA decimal(18,2), @d_UTILZED_AREA decimal(18,2), @d_NOTES NVARCHAR(1000) Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP DECLARE XmlDataDoc CURSOR FOR SELECT * FROM OPENXML(@hdoc1,'/Root/XmlData1',2) WITH ( BUILDING_AREA_ID VARCHAR(15), FLOOR_NO INT, FLOOR_AREA decimal(18,2), INTERNAL_AREA decimal(18,2), RENT_AREA decimal(18,2), UTILZED_AREA decimal(18,2), NOTES NVARCHAR(1000) ) OPEN XmlDataDoc FETCH NEXT FROM XmlDataDoc INTO @d_BUILDING_AREA_ID , @d_FLOOR_NO , @d_FLOOR_AREA , @d_INTERNAL_AREA , @d_RENT_AREA , @d_UTILZED_AREA , @d_NOTES WHILE @@FETCH_STATUS = 0 BEGIN SET @p_ROW_NUM = @p_ROW_NUM + 1 IF(LEN( @d_BUILDING_AREA_ID)=0) EXEC SYS_CodeMasters_Gen 'BUD_AREA_DT', @d_BUILDING_AREA_ID out IF @d_BUILDING_AREA_ID='' OR @d_BUILDING_AREA_ID IS NULL GOTO ABORT -------CHECK TỔNG DT CHO THUÊ VÀ SỬ DỤNG PH NHỎ HƠN HOẶC BẰNG DT TẦNG-------- IF(@d_FLOOR_AREA - (@d_INTERNAL_AREA + @d_UTILZED_AREA) < 0) BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUILDING_ID, '' BUILDING_NAME, N'Lưới danh sách các tầng của trụ sở, dòng ' + CONVERT(NVARCHAR,@p_ROW_NUM) + N': Tổng diện tích sử dụng và diện tích cho thuê phải nhỏ hơn hoặc bằng diện tích tầng' ErrorDesc RETURN '-1' END -------------BAODNQ 12/9/2022 : CHECK DT MỖI TẦNG KO DC LỚN HƠN DT MẶT SÀN------ IF(@d_FLOOR_AREA > @p_AREA) BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUILDING_ID, '' BUILDING_NAME, N'Lưới danh sách các tầng của trụ sở, dòng ' + CONVERT(NVARCHAR,@p_ROW_NUM) + N': Diện tích tầng không được lớn hơn diện tích mặt sàn' ErrorDesc RETURN '-1' END INSERT INTO BUD_AREA_DT([BUILDING_AREA_ID],[BUILD_ID],[FLOOR_NO],[FLOOR_AREA],[INTERNAL_AREA], [RENT_AREA],[UTILZED_AREA],[NOTES],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT]) VALUES(@d_BUILDING_AREA_ID ,@l_BUILDING_ID ,@d_FLOOR_NO ,@d_FLOOR_AREA ,@d_INTERNAL_AREA ,@d_RENT_AREA , @d_UTILZED_AREA ,@d_NOTES,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM XmlDataDoc INTO @d_BUILDING_AREA_ID , @d_FLOOR_NO , @d_FLOOR_AREA , @d_INTERNAL_AREA , @d_RENT_AREA , @d_UTILZED_AREA , @d_NOTES END CLOSE XmlDataDoc DEALLOCATE XmlDataDoc -----**** UPDATE ------ --8/12/2021,datmq thêm UTILZED_AREA=(SELECT SUM(UTILZED_AREA))---- --UPDATE BUD_MASTER --SET TOTAL_AREA = (SELECT SUM(FLOOR_AREA) FROM BUD_AREA_DT WHERE BUILD_ID=@l_BUILDING_ID) --WHERE BUILDING_ID=@l_BUILDING_ID -- 29/12/2021:datmq Insert to table PL_PROCESS INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @l_BUILDING_ID, 'INSERT', @p_MAKER_ID, GETDATE(), N'Thêm mới thông tin trụ sở thành công' , N'Thêm mới thông tin trụ sở' ) COMMIT TRANSACTION SELECT '0' as Result, @l_BUILDING_ID BUILDING_ID, @p_BUILDING_NAME BUILDING_NAME, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUILDING_ID, '' BUILDING_NAME,'' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_MASTER_Search]' GO ALTER PROCEDURE [dbo].[BUD_MASTER_Search] @p_BUILDING_ID varchar(15) = NULL, @p_ASSET_ID varchar(15) = NULL, @p_BUILDING_NAME nvarchar(1000) = NULL, --Đơn vị quản lý --@p_BRANCH_ID varchar(15) = NULL, --Đơn vị sử dụng @p_BRANCH_USE_ID VARCHAR(15) = NULL, @p_ADDRESS nvarchar(800) = NULL, @p_OWNER_OR_RENT varchar(1) = NULL, @p_NUM_FLOOR int = NULL, @p_AREA numeric(18) = NULL, @p_TOTAL_AREA numeric(18) = NULL, @p_RENT_TOTAL_AREA numeric(18) = NULL, @p_UTILZED_AREA numeric(18) = NULL, @p_NOTES nvarchar(MAX) = 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_XML_TEMP xml = NULL, @p_RENT_AMT DECIMAL(18,0) =NULL, @p_DEPOSITS_AMT DECIMAL(18,0) =NULL, @p_RENT_TIME int = NULL, @p_TOP INT = 10, @p_FROM_FLOOR int= NULL, @p_TO_FLOOR int = NULL, @p_FROMDATE VARCHAR(20) = NULL, @p_TODATE VARCHAR(20)= NULL, --@p_LEVEL VARCHAR(15)='ALL', @p_CUSTOMER_ID VARCHAR(15) = NULL, @p_USER_LOGIN VARCHAR(15) AS --datmq:Thêm cấu trúc phân trang--- ---BAODNQ: Thêm tham số tìm kiếm theo CUSTOMER_ID + kết bảng TR_CONTRACT, LS_CUSTOMER-- BEGIN -- PAGING DECLARE @p_BRANCH_LOGIN VARCHAR(15) = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME = @p_USER_LOGIN) --set @p_BRANCH_LOGIN = (select TLSUBBRID from TL_USER where TLNANME=@p_USER_LOGIN) --SET @p_BRANCH_LOGIN = @p_BRANCH_ID --IF @p_BRANCH_ID IS NOT NULL AND @p_BRANCH_ID <> '' --SET @p_BRANCH_LOGIN = @p_BRANCH_ID --DECLARE @p_USER_LOGIN_ROLE VARCHAR(50) --SET @p_USER_LOGIN_ROLE = (SELECT RoleName FROM TL_USER WHERE TLNANME = @p_USER_LOGIN) DECLARE @t_USER_LOGIN_ROLE_TABLE TABLE (BRANCH_ID VARCHAR(20), DEPT_ID VARCHAR(15), ROLE_ID VARCHAR(20)) INSERT INTO @t_USER_LOGIN_ROLE_TABLE(BRANCH_ID, DEPT_ID, ROLE_ID) SELECT * FROM [dbo].[TL_USER_GET_ROLES](@p_USER_LOGIN) DECLARE @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN) IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*,B.AUTH_STATUS_NAME,''HINHTHUC_SOHUU, (SELECT SUM(DT.INTERNAL_AREA) FROM BUD_AREA_DT DT WHERE A.BUILDING_ID= DT.BUILD_ID) INTERNAL_ARE, D.CONTRACT_CODE, D.CONTRACT_NAME, E.CUSTOMER_NAME,F.TLFullName AS SIGN_USER_FULLNAME, CHK.TLFullName AS CHECKER_NAME, G.CURRENT_STATE AS CURRENT_STATE, TUM.TLFullName AS MAKER_NAME, C.BRANCH_NAME,-- Đơn vị quản lý CBU.BRANCH_NAME AS BRANCH_USE_NAME, -- Đơn vị sử dụng AM.ASSET_CODE -- SELECT END FROM BUD_MASTER A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID LEFT JOIN TR_CONTRACT D ON A.CONTRACT_ID = D.CONTRACT_ID LEFT JOIN LS_CUSTOMER E ON D.CUST_ID = E.CUSTOMER_ID LEFT JOIN TL_USER F ON A.SIGN_USER = F.TLNANME LEFT JOIN RET_MASTER G ON A.ASSET_ID = G.ASSET_ID LEFT JOIN TL_USER TUM ON A.MAKER_ID = TUM.TLNANME LEFT JOIN CM_BRANCH CBU ON A.BRANCH_USE_ID = CBU.BRANCH_ID -------------Lấy thông tin xuất báo cáo------------------- LEFT JOIN TL_USER CHK ON A.CHECKER_ID = CHK.TLNANME LEFT JOIN ASS_MASTER AM ON G.ASSET_ID = AM.ASSET_ID WHERE 1 = 1 AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '') AND (A.ASSET_ID LIKE '%' + @p_ASSET_ID + '%' OR @p_ASSET_ID IS NULL OR @p_ASSET_ID = '') AND (A.BUILDING_NAME LIKE '%' + @p_BUILDING_NAME + '%' OR @p_BUILDING_NAME IS NULL OR @p_BUILDING_NAME = '') --AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.BRANCH_USE_ID LIKE '%' + @p_BRANCH_USE_ID + '%' OR @p_BRANCH_USE_ID IS NULL OR @p_BRANCH_USE_ID = '') AND (A.ADDRESS LIKE '%' + @p_ADDRESS + '%' OR @p_ADDRESS IS NULL OR @p_ADDRESS = '') AND (A.OWNER_OR_RENT LIKE '%' + @p_OWNER_OR_RENT + '%' OR @p_OWNER_OR_RENT IS NULL OR @p_OWNER_OR_RENT = '') AND (A.NUM_FLOOR >= @p_FROM_FLOOR OR @p_FROM_FLOOR IS NULL OR @p_FROM_FLOOR = 0) AND (A.NUM_FLOOR <= @p_TO_FLOOR OR @p_TO_FLOOR IS NULL OR @p_TO_FLOOR = 0) AND (A.AREA = @p_AREA OR @p_AREA IS NULL OR @p_AREA = '') AND (A.TOTAL_AREA = @p_TOTAL_AREA OR @p_TOTAL_AREA IS NULL OR @p_TOTAL_AREA = '') AND (A.RENT_TOTAL_AREA = @p_RENT_TOTAL_AREA OR @p_RENT_TOTAL_AREA IS NULL OR @p_RENT_TOTAL_AREA = '') AND (A.UTILZED_AREA = @p_UTILZED_AREA OR @p_UTILZED_AREA IS NULL OR @p_UTILZED_AREA = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND ( A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR ( @p_AUTH_STATUS = 'S' AND A.AUTH_STATUS = 'U' AND A.IS_SEND_APPR = 'Y' AND (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <> '') AND (A.SIGN_DT IS NULL OR A.SIGN_DT = '') ) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '' ) AND (A.CREATE_DT =CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (A.APPROVE_DT =CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') --AND ( -- @p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp) -- OR @p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_LOGIN --) AND (D.CUST_ID LIKE '%' + @p_CUSTOMER_ID + '%' OR @p_CUSTOMER_ID IS NULL OR @p_CUSTOMER_ID = '') --AND (A.MAKER_ID = @p_USER_LOGIN -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') -- OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD', 'TBP')) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- (ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL ))) -- ) -- ) --) --AND (A.MAKER_ID = @p_USER_LOGIN ---- user login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- user login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ( -- --user login là trưởng ĐV và đã gửi YC phê duyệt -- ( -- ------user login là trưởng ĐV ở hội sở-------- -- ( -- EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) -- = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) -- ) -- ------user login là trưởng ĐV ở CN/PGD -- OR -- ( -- NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND A.BRANCH_ID = (SELECT TOP 1 BRANCH_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'PGD', 'TPGD', 'PPGD')) -- ) -- ) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) --) -----------BAODNQ: NẾU Ở HỘI SỞ TÌM THẤY NHỮNG PHIẾU THEO PHÒNG BAN------------------ ----------------NẾU Ở DVKD TÌM THẤY PHIẾU THEO ĐƠN VỊ-------------------- AND( A.BRANCH_ID = @p_BRANCH_LOGIN AND( (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE) OR(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN) <> 'HS' ) ) ORDER BY A.CREATE_DT DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(CONVERT(INT,@P_TOP))A.*,B.AUTH_STATUS_NAME,''HINHTHUC_SOHUU, (SELECT SUM(DT.INTERNAL_AREA) FROM BUD_AREA_DT DT WHERE A.BUILDING_ID= DT.BUILD_ID) INTERNAL_ARE, D.CONTRACT_CODE, D.CONTRACT_NAME, E.CUSTOMER_NAME,F.TLFullName AS SIGN_USER_FULLNAME, CHK.TLFullName AS CHECKER_NAME, G.CURRENT_STATE AS CURRENT_STATE, TUM.TLFullName AS MAKER_NAME, C.BRANCH_NAME,-- Đơn vị quản lý CBU.BRANCH_NAME AS BRANCH_USE_NAME, -- Đơn vị sử dụng AM.ASSET_CODE -- SELECT END FROM BUD_MASTER A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID LEFT JOIN TR_CONTRACT D ON A.CONTRACT_ID = D.CONTRACT_ID LEFT JOIN LS_CUSTOMER E ON D.CUST_ID = E.CUSTOMER_ID LEFT JOIN TL_USER F ON A.SIGN_USER = F.TLNANME LEFT JOIN RET_MASTER G ON A.ASSET_ID = G.ASSET_ID LEFT JOIN TL_USER TUM ON A.MAKER_ID = TUM.TLNANME LEFT JOIN CM_BRANCH CBU ON A.BRANCH_USE_ID = CBU.BRANCH_ID -------------Lấy thông tin xuất báo cáo------------------- LEFT JOIN TL_USER CHK ON A.CHECKER_ID = CHK.TLNANME LEFT JOIN ASS_MASTER AM ON G.ASSET_ID = AM.ASSET_ID WHERE 1 = 1 AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '') AND (A.ASSET_ID LIKE '%' + @p_ASSET_ID + '%' OR @p_ASSET_ID IS NULL OR @p_ASSET_ID = '') AND (A.BUILDING_NAME LIKE N'%' + @p_BUILDING_NAME + '%' OR @p_BUILDING_NAME IS NULL OR @p_BUILDING_NAME = '') AND (A.BRANCH_USE_ID LIKE '%' + @p_BRANCH_USE_ID + '%' OR @p_BRANCH_USE_ID IS NULL OR @p_BRANCH_USE_ID = '') AND (A.ADDRESS LIKE '%' + @p_ADDRESS + '%' OR @p_ADDRESS IS NULL OR @p_ADDRESS = '') AND (A.OWNER_OR_RENT LIKE '%' + @p_OWNER_OR_RENT + '%' OR @p_OWNER_OR_RENT IS NULL OR @p_OWNER_OR_RENT = '') AND (A.NUM_FLOOR >= @p_FROM_FLOOR OR @p_FROM_FLOOR IS NULL OR @p_FROM_FLOOR = 0) AND (A.NUM_FLOOR <= @p_TO_FLOOR OR @p_TO_FLOOR IS NULL OR @p_TO_FLOOR = 0) AND (A.AREA = @p_AREA OR @p_AREA IS NULL OR @p_AREA = 0) AND (A.TOTAL_AREA = @p_TOTAL_AREA OR @p_TOTAL_AREA IS NULL OR @p_TOTAL_AREA = 0) AND (A.RENT_TOTAL_AREA = @p_RENT_TOTAL_AREA OR @p_RENT_TOTAL_AREA IS NULL OR @p_RENT_TOTAL_AREA = 0) AND (A.UTILZED_AREA = @p_UTILZED_AREA OR @p_UTILZED_AREA IS NULL OR @p_UTILZED_AREA = 0) AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND ( A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR ( @p_AUTH_STATUS = 'S' AND A.AUTH_STATUS = 'U' AND A.IS_SEND_APPR = 'Y' AND (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <> '') AND (A.SIGN_DT IS NULL OR A.SIGN_DT = '') ) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '' ) AND (A.CREATE_DT = CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND(A.CREATE_DT >= CONVERT(DATETIME, @p_FROMDATE, 103) OR @p_FROMDATE IS NULL OR @p_FROMDATE = '') AND(A.CREATE_DT <= CONVERT(DATETIME, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (A.APPROVE_DT = CONVERT(DATE, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (D.CUST_ID LIKE '%' + @p_CUSTOMER_ID + '%' OR @p_CUSTOMER_ID IS NULL OR @p_CUSTOMER_ID = '') --AND ( -- @p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp) -- OR @p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_LOGIN --) --AND (A.MAKER_ID = @p_USER_LOGIN -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') -- OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD', 'TBP')) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- (ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL ))) -- ) -- ) --) --AND (A.MAKER_ID = @p_USER_LOGIN ---- user login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- user login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ( -- --user login là trưởng ĐV và đã gửi YC phê duyệt -- ( -- ------user login là trưởng ĐV ở hội sở-------- -- ( -- EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) -- = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) -- ) -- ------user login là trưởng ĐV ở CN/PGD -- OR -- ( -- NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND A.BRANCH_ID = (SELECT TOP 1 BRANCH_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'PGD', 'TPGD', 'PPGD')) -- ) -- ) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) --) -----------BAODNQ: NẾU Ở HỘI SỞ TÌM THẤY NHỮNG PHIẾU THEO PHÒNG BAN------------------ ----------------NẾU Ở DVKD TÌM THẤY PHIẾU THEO ĐƠN VỊ-------------------- AND( A.BRANCH_ID = @p_BRANCH_LOGIN AND( (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE) OR(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN) <> 'HS' ) ) ORDER BY A.CREATE_DT DESC -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_REQUEST_DOC_Search]' GO ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_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)= NULL, @p_TYPE VARCHAR(15) = NULL, @p_YEAR INT = NULL, @p_TOP INT = 10 , @p_IS_TRANSFER VARCHAR(10) = NULL, @p_NGUOIXULY NVARCHAR(15) = 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) 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) 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) ---- 16.11.22 LUCTV BO SUNG UNION NHUNG PHONG BAN CON CUA PHONG BAN DUOC KIEM NHIEM 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 CM_DEPARTMENT DP ON DP.FATHER_ID = TU.DEP_ID LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=DP.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 TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU LEFT JOIN CM_DEPARTMENT DP ON DP.FATHER_ID = TU.SECUR_CODE LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=DP.DEP_ID LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID WHERE TU.TLNANME=@p_TLNAME_USER --- END LUCTV 16.11.2022 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 ---- NGUOI XU lY TIEP THEO 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,TempU.TLNANME AS TLNAME,TempU.TLFullName,PL.NOTES FROM ( SELECT REQ_ID,PROCESS_ID,NOTES,ROLE_USER,BRANCH_ID,DEP_ID,STATUS,DVDM_ID FROM dbo.PL_REQUEST_PROCESS PRC WHERE PRC.STATUS = 'C' AND EXISTS(SELECT PLRD.REQ_ID FROM dbo.PL_REQUEST_DOC PLRD WHERE PLRD.REQ_ID=PRC.REQ_ID) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID <>'SIGN' 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 ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TempU ON (TempU.RoleName=PL.ROLE_USER OR EXISTS(SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE PL.ROLE_USER = TM.ROLE_NEW AND 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 ='') LEFT JOIN dbo.PL_REQUEST_DOC RD ON RD.REQ_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID 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 REQ_ID,PROCESS_ID,NOTES,ROLE_USER,BRANCH_ID,DEP_ID,STATUS,DVDM_ID FROM dbo.PL_REQUEST_PROCESS PRC WHERE PRC.STATUS = 'C' AND --GIANT 23/12/2021 EXISTS(SELECT PLRD.REQ_ID FROM dbo.PL_REQUEST_DOC PLRD WHERE PLRD.REQ_ID=PRC.REQ_ID ) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID ='SIGN' 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 ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 EXISTS(SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE PL.ROLE_USER = TM.ROLE_NEW AND TM.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 ='') LEFT JOIN dbo.PL_REQUEST_DOC RD ON RD.REQ_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID WHERE STATUS='C' AND (PL.PROCESS_ID = 'SIGN' AND TempU.TLNANME = RD.SIGN_USER) 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 REQ_ID,PROCESS_ID,NOTES,ROLE_USER,BRANCH_ID,DEP_ID,STATUS,IS_HAS_CHILD,DVDM_ID,ID FROM dbo.PL_REQUEST_PROCESS PRC WHERE EXISTS(SELECT PLRD.REQ_ID FROM dbo.PL_REQUEST_DOC PLRD WHERE PLRD.REQ_ID=PRC.REQ_ID ) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID <>'SIGN' 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 dbo.TL_USER 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 UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TempU ON (TempU.RoleName=PL.ROLE_USER OR EXISTS(SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE PL.ROLE_USER = TM.ROLE_NEW AND 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' ----- GIANT 23/12/2021 IF(@p_FR_DATE IS NULL) BEGIN SET @p_FR_DATE = GETDATE() SET @p_FR_DATE = DATEADD(YEAR,-1,@p_FR_DATE) END ----- IF(@p_TYPE='DVKD') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, --D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, --CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' --WHEN A.PROCESS_ID<> 'APPROVE' AND A.AUTH_STATUS='A' THEN N'Chờ duyệt' ELSE D.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME, CASE WHEN A.PROCESS_ID='APPROVE' OR A.AUTH_STATUS ='A' THEN N'Đã duyệt' ELSE D.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME, G.BRANCH_CODE, CASE WHEN A.BRANCH_CREATE <> 'DV0001' THEN G.BRANCH_NAME ELSE G.BRANCH_NAME+' - ' + DEP.DEP_NAME END AS BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, A.PL_BASED_ID, PL_B.REQ_CODE AS PL_BASED_CODE, PL_B.REQ_CONTENT AS PL_BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY NXL.NGUOIXULY AS NGUOIXULY, A.TK_HDQT_NOTES, A.TK_TGD_NOTES, A.OTHER_NOTES -- SELECT END FROM PL_REQUEST_DOC A --LEFT JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <>'U' LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN dbo.PL_REQUEST_DOC PL_B ON PL_B.REQ_ID=A.PL_BASED_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) AND A.RECORD_STATUS = '1' AND( @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL OR ( @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) OR ( @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) ) AND (A.MAKER_ID=@p_TLNAME_USER OR (A.PROCESS_ID ='APPROVE' AND A.BRANCH_CREATE=@p_BRANCH_LOGIN AND (A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE<>'HS')) OR EXISTS(SELECT ID FROM dbo.PL_ROLE_DATA_CONFIG PLRDC WHERE PLRDC.ROLE_TYPE='PL_REQUEST_DOC_ALL' AND (PLRDC.BRANCH_ID=@p_TLNAME_USER OR (PLRDC.BRANCH_ID = @p_BRANCH_LOGIN AND PLRDC.DEP_ID = @DEP_ID))) OR EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS PLRP WHERE PLRP.PROCESS_ID='APPNEW' AND PLRP.REQ_ID=A.REQ_ID AND EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND AUTH.BRANCH_ID=PLRP.BRANCH_ID AND(PLRP.DEP_ID=AUTH.DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID ='') )) -- --OR (EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS PLRP WHERE A.REQ_ID=PLRP.REQ_ID AND PLRP.PROCESS_ID='APPNEW' -- AND PLRP.ROLE_USER IN (SELECT ROLE_ID FROM @TABLE_ROLE) AND PLRP.BRANCH_ID=@p_BRANCH_LOGIN -- AND (PLRP.DEP_ID=@DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID =''))) -- OR(A.SIGN_USER IS NOT NULL AND A.SIGN_USER <>'' AND A.SIGN_USER =@p_TLNAME_USER AND A.AUTH_STATUS<>'E')) -- --AND (( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') OR( @p_AUTH_STATUS IN('U','R','E') AND (A.PROCESS_ID <> 'APPROVE' OR A.PROCESS_ID IS NULL)) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') --AND ((A.AUTH_STATUS='E' AND A.MAKER_ID=@p_TLNAME_USER) OR (A.AUTH_STATUS <> 'E' AND (A.MAKER_ID=@p_TLNAME_USER OR (PLRP.PROCESS_ID='DVKD' AND PLRP.ROLE_USER=@p_ROLE_USER AND PLRP.BRANCH_ID=@p_BRANCH_LOGIN AND (PLRP.DEP_ID=@DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID =''))))) -- --AND (A.AUTH_STATUS = @p_AUTH_STATUS OR @p_AUTH_STATUS ='' OR @p_AUTH_STATUS IS NULL) AND( (@p_AUTH_STATUS ='A' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='APPNEW' AND STATUS ='P')) OR (@p_AUTH_STATUS ='E' AND A.AUTH_STATUS =@p_AUTH_STATUS) OR (@p_AUTH_STATUS ='R' AND A.AUTH_STATUS =@p_AUTH_STATUS) OR (@p_AUTH_STATUS ='W' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='SIGN' AND STATUS ='C')) OR (@p_AUTH_STATUS ='G' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='SIGN' AND STATUS ='P')) OR (@p_AUTH_STATUS ='U' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='APPNEW' AND STATUS ='C')) OR (@p_AUTH_STATUS ='' OR @p_AUTH_STATUS IS NULL) ) 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(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) -- AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' -- OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') -- GIANT 26/10/2021 AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID)) --HUYHT 10/05/2022 TÌM KIẾM THEO BƯỚC XỬ LÝ TIẾP THEO AND (A.PROCESS_ID = @p_PROCESS_ID OR (@p_PROCESS_ID IS NULL OR @p_PROCESS_ID = '')) ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='PDTT') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RPN.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, RPC.TYPE_JOB AS TYPE_JOB, RPC.TLNAME AS USER_JOB, TU.TLFullName AS USER_JOB_NAME, TFM.TLNANME AS TRANSFER_MAKER, RPC.TRANFER_DT AS TRANFER_DT , RPC.MAKER_ID AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, --RP.ID AS REF_ID, ISNULL(RP.ID,1) AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <>'U' 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (@p_REQ_CODE IS NULL OR @p_REQ_CODE = '' OR A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%') AND (@p_REQ_ID IS NULL OR @p_REQ_ID = '' OR A.REQ_ID LIKE '%' + @p_REQ_ID + '%') AND (@p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '' OR A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%') AND (@p_REQ_REASON IS NULL OR @p_REQ_REASON = '' OR A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%') AND (@p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0 OR A.TOTAL_AMT=@p_TOTAL_AMT) AND (@p_REQ_NAME IS NULL OR @p_REQ_NAME = '' OR A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%') -- AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID = '' OR A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%') AND (@p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '' OR A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (@p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1 OR A.REQ_TYPE = @p_REQ_TYPE) --AND (@p_RECEIVE_BRANCH IS NULL OR A.PO_ID IN (SELECT PO_ID FROM TR_PO_DETAIL WHERE RECEIVE_BRANCH=@p_RECEIVE_BRANCH)) AND A.RECORD_STATUS = '1' -- AND(@p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL -- OR(@p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)) -- OR(@p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)) -- ) AND 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.ROLE_USER IN (SELECT ROLE_ID FROM @TABLE_ROLE) --AND ( -- (PLRP.PROCESS_ID='DVDC' AND PLRP.BRANCH_ID=@p_BRANCH_LOGIN AND (PLRP.DEP_ID=@DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID='')) --OR ( PLRP.DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID)) --OR --( (PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL) AND (PLRP.BRANCH_ID IS NULL OR PLRP.BRANCH_ID='')) --) AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND (PLRP.IS_HAS_CHILD=0 OR PLRP.IS_HAS_CHILD IS NULL) AND (( @p_AUTH_STATUS='A' AND PLRP.STATUS='P') OR( @p_AUTH_STATUS='U' AND (PLRP.STATUS='C')) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') 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( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' -- OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) --AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') --AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') -- GIANT 26/10/2021 AND (EXISTS (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID)) AND (A.PROCESS_ID IN ('GDK_TT','PTGDK_TT','TGD','HDQT','GDK_DC','APPROVE','GDK_TC')) -- LUCTV 24.11.2022 BO SUNG DIEU KIEN DE CHAN KHONG CHO LANH DAO TIM KIEM NEU PHIEU CHUA TOI ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='TFJOB') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, PLRP.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , PLRP.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, CASE WHEN RPC.TYPE_JOB IS NULL OR RPC.TYPE_JOB ='' THEN 'TP' ELSE RPC.TYPE_JOB END AS TYPE_JOB, RPC.TLNAME AS USER_JOB, TU.TLFullName AS USER_JOB_NAME, TFM.TLNANME AS TRANSFER_MAKER, RPC.TRANFER_DT AS TRANFER_DT , RPC.MAKER_ID AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, PLRP.ID AS REF_ID, PLRP.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFULLNAME AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY -- dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES,A.TK_HDQT_NOTES, A.OTHER_NOTES --PLQ.TLFullName CHECKER_NAME_DV -- 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' AND PLRP.IS_HAS_CHILD=1 --LEFT JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS = 'C' AND PLRP.IS_HAS_CHILD=1 -- 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT MAX(B.ID) FROM PL_REQUEST_PROCESS B WHERE B.REQ_ID=A.REQ_ID AND B.PROCESS_ID=PLRP.PARENT_PROCESS_ID) LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID -- GIANT --LEFT JOIN ( -- SELECT AB.ID,AB.REQ_ID,AB.PROCESS_ID,BC.TLFullName,AB.TLNAME FROM PL_REQUEST_PROCESS_CHILD AB LEFT JOIN TL_USER BC ON AB.TLNAME = BC.TLNANME --) PLQ ON A.REQ_ID = PLQ.REQ_ID WHERE 1 = 1 AND (@p_REQ_CODE IS NULL OR @p_REQ_CODE = '' OR A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%') AND (@p_REQ_ID IS NULL OR @p_REQ_ID = '' OR A.REQ_ID LIKE '%' + @p_REQ_ID + '%') AND (@p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '' OR A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%') AND (@p_REQ_REASON IS NULL OR @p_REQ_REASON = '' OR A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%') AND (@p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0 OR A.TOTAL_AMT=@p_TOTAL_AMT) AND (@p_REQ_NAME IS NULL OR @p_REQ_NAME = '' OR A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%') -- AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID = '' OR A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%') AND (@p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '' OR A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (@p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1 OR A.REQ_TYPE = @p_REQ_TYPE) --AND (@p_RECEIVE_BRANCH IS NULL OR A.PO_ID IN (SELECT PO_ID FROM TR_PO_DETAIL WHERE RECEIVE_BRANCH=@p_RECEIVE_BRANCH)) AND A.RECORD_STATUS = '1' -- -- -- AND(@p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL -- OR(@p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)) -- OR(@p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)) -- ) -- -- -- AND((EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND TYPE_JOB='KS' AND PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID)) 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(@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(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR ) AND (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '' OR (@p_AUTH_STATUS='A' AND PLRP.STATUS='P') OR( @p_AUTH_STATUS='U' AND (PLRP.STATUS='C')) ) AND (NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD PRRC WHERE PRRC.PROCESS_ID=PLRP.ID AND PRRC.STATUS_JOB='C' AND PRRC.TYPE_JOB='TP')) AND (@p_IS_TRANSFER = '' OR @p_IS_TRANSFER IS NULL OR (((RPC.REQ_ID IS NOT NULL AND RPC.REQ_ID <> '' AND (RPC.MAKER_ID =@p_TLNAME_USER OR @p_ROLE_USER ='KSV')) OR (EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND CHECKER_ID=@p_TLNAME_USER))) AND @p_IS_TRANSFER = 'Y') --- LUCTV 22-10-2022 LUCTV DIEU CHINH CACH XAC ĐỊNH ĐÃ ĐIỀU PHỐI / CHƯA ĐIỀU PHỐI OR ( (@p_ROLE_USER ='KSV' AND ISNULL(RPC.REQ_ID,'') = '') OR (@p_ROLE_USER<> 'KSV' AND (ISNULL(RPC.REQ_ID,'') = '' OR (ISNULL(RPC.REQ_ID,'') <> '' AND RPC.MAKER_ID <> @p_TLNAME_USER))) AND @p_IS_TRANSFER = 'N') ) -- AND(@p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' -- OR NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' -- OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%' -- ) ---- GIANT 26/10/2021 AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID)) ---- GIANT --AND (A.BRANCH_CREATE = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') --AND (A.DEP_CREATE = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='XLTT') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, CASE WHEN A.BRANCH_CREATE <> 'DV0001' THEN G.BRANCH_NAME ELSE G.BRANCH_NAME+' - ' + DEP.DEP_NAME END AS BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RPN.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, RPC.TYPE_JOB AS TYPE_JOB, RPC.TLNAME AS USER_JOB, TU.TLFullName AS USER_JOB_NAME, TFM.TLNANME AS TRANSFER_MAKER, RPC.TRANFER_DT AS TRANFER_DT , RPC.MAKER_ID AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, PLRP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, PLRP.STATUS AS STATUS_CURR, RPC.STATUS_JOB AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <> 'U' AND PLRP.IS_HAS_CHILD=1 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC) LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (@p_REQ_CODE IS NULL OR @p_REQ_CODE = '' OR A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%') AND (@p_REQ_ID IS NULL OR @p_REQ_ID = '' OR A.REQ_ID LIKE '%' + @p_REQ_ID + '%') AND (@p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '' OR A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%') AND (@p_REQ_REASON IS NULL OR @p_REQ_REASON = '' OR A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%') AND (@p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0 OR A.TOTAL_AMT=@p_TOTAL_AMT) AND (@p_REQ_NAME IS NULL OR @p_REQ_NAME = '' OR A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%') -- AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID = '' OR A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%') AND (@p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '' OR A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (@p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1 OR A.REQ_TYPE = @p_REQ_TYPE) --AND (@p_RECEIVE_BRANCH IS NULL OR A.PO_ID IN (SELECT PO_ID FROM TR_PO_DETAIL WHERE RECEIVE_BRANCH=@p_RECEIVE_BRANCH)) AND A.RECORD_STATUS = '1' -- AND(@p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL -- OR(@p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)) -- OR(@p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)) -- ) AND(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID) 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(@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(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '' OR ( @p_AUTH_STATUS='TDV_APPROVED' AND PLRP.STATUS='P') OR (@p_AUTH_STATUS = 'NV_XL' AND EXISTS(SELECT X.ID FROM dbo.PL_REQUEST_PROCESS_CHILD X WHERE X.PROCESS_ID = PLRP.ID AND X.TYPE_JOB = 'XL' AND X.STATUS_JOB = 'C')) OR (@p_AUTH_STATUS = 'KSV_APPROVE' AND EXISTS(SELECT X.ID FROM dbo.PL_REQUEST_PROCESS_CHILD X WHERE X.PROCESS_ID = PLRP.ID AND X.TYPE_JOB = 'KS' AND X.STATUS_JOB = 'C')) OR (@p_AUTH_STATUS = 'TDV_APPROVE' AND EXISTS(SELECT X.ID FROM dbo.PL_REQUEST_PROCESS_CHILD X WHERE X.PROCESS_ID = PLRP.ID AND X.TYPE_JOB = 'TP' AND X.STATUS_JOB = 'C')) ) -- AND(@p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' -- OR NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' -- OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%' -- ) --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) -- AND (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR A.BRANCH_ID = @p_BRANCH_ID ) AND (@p_DEP_ID IS NULL OR @p_DEP_ID = '' OR A.DEP_ID = @p_DEP_ID ) -- LUCTV 10 03 2021 BO SUNG DIEU KIENN NEU PHIEU CHUA DUOC DIEU PHOI THI SE KHONG TIM THAY O MAN HINH DVCM AND((EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD C WHERE A.REQ_ID=C.REQ_ID AND C.PROCESS_ID=PLRP.ID AND C.TLNAME =@p_TLNAME_USER AND C.STATUS_JOB IN ('C','P'))) OR (@p_NGUOIXULY IS NOT NULL AND @p_NGUOIXULY <> '')) -- GIANT 26/10/2021 AND (EXISTS (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID)) ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='DVKD_PARENT') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' WHEN A.PROCESS_ID<> 'APPROVE' AND A.AUTH_STATUS='A' THEN N'Chờ duyệt' ELSE D.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME, --CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' --ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, --RP.ID AS REF_ID, 0 AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.BASED_CONTENT, A.IS_CHECKALL, -- GIANT 23/12/2021 A.PL_BASED_ID, PL_B.REQ_CODE AS PL_BASED_CODE, PL_B.REQ_CONTENT AS PL_BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES, (SELECT TOP 1 BB.YEAR FROM PL_REQUEST_DOC_DT AA LEFT JOIN PL_MASTER BB ON AA.PLAN_ID = BB.PLAN_ID WHERE AA.REQ_ID = A.REQ_ID) AS NAMNGANSACH -- SELECT END FROM PL_REQUEST_DOC A LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID -- GIANT 23/12/2021 LEFT JOIN dbo.PL_REQUEST_DOC PL_B ON PL_B.REQ_ID=A.PL_BASED_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 --AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') --AND ((A.BRANCH_CREATE = @p_BRANCH_LOGIN AND( A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE <>'HS')) OR A.IS_CHECKALL=1) --AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) --AND (ISNULL(A.PROCESS_ID,'') ='APPROVE') --AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') --AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') --AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') --AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) --AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') --AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') --AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') --AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') --AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) --AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) --AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) --AND A.RECORD_STATUS = '1' AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) AND( @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL OR ( @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) OR ( @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) ) ----AND ( (A.BRANCH_CREATE = @p_BRANCH_LOGIN AND( A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE <>'HS')) OR A.IS_CHECKALL=1) --AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103)) --AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103)) --AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) --AND(A.REQ_PARENT_ID IS NULL OR A.REQ_PARENT_ID='') --AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' -- OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) --AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') --AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') --AND (A.MAKER_ID = @p_TLNAME_USER) 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.BRANCH_CREATE = @p_BRANCH_LOGIN AND( A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE <>'HS' OR A.BRANCH_ID =@p_BRANCH_ID OR A.BRANCH_CREATE =@p_BRANCH_ID OR A.BRANCH_CREATE =@p_BRANCH_LOGIN )) OR A.IS_CHECKALL=1 OR A.MAKER_ID =@p_TLNAME_USER) ----------BAODNQ 25/10/2022 : FIX POPUP TÌM KIẾM TTCT Ở PYCMS-------------------- ----------NẾU KO PH TT TOÀN HÀNG THÌ CHỈ TÌM KIẾM DC TTCT THEO PHÒNG BAN NẾU Ở HỘI SỞ----- AND ( (A.BRANCH_CREATE = @p_BRANCH_LOGIN AND( A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE <>'HS') ) OR A.IS_CHECKALL=1 OR A.MAKER_ID =@p_TLNAME_USER OR A.MAKER_ID =@p_MAKER_ID --- LUCTV 02.11.2022 HOTFIX LỖI KHÔNG SEARCH ĐC TTCT DO CODE KHÔNG TRUYỀN @p_TLNAME_USER XUỐNG ) ---------------------------------END BAODNQ------------------------- AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103)) AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103)) AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND (ISNULL(A.PROCESS_ID,'') ='APPROVE') ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='DVKD_ISALL') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) AND A.RECORD_STATUS = '1' AND( @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL OR ( @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) OR ( @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) ) AND A.IS_CHECKALL=1 AND A.PROCESS_ID='APPROVE' AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103)) AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103)) AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND(A.REQ_PARENT_ID IS NULL OR A.REQ_PARENT_ID='') AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) --AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') --AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') -- GIANT 26/10/2021 AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID)) ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='TTCT_DVCM') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '') AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '') AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0) AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0) AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) AND A.RECORD_STATUS = '1' AND( @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL OR ( @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) OR ( @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) ) AND ( EXISTS (SELECT * FROM dbo.PL_REQUEST_COSTCENTER PC WHERE PC.REQ_ID=A.REQ_ID AND EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.DVDM_ID=PC.COST_ID) ) ) AND A.PROCESS_ID='APPROVE' AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103)) AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103)) AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND(A.REQ_PARENT_ID IS NULL OR A.REQ_PARENT_ID='') AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '' OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%') --AND( -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') -- OR -- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '') --) --AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') --AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') -- GIANT 26/10/2021 AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID)) ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='REQ_PARENT') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY ,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND A.REQ_PARENT_ID =@p_REQ_ID ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='LINK_TTCT') BEGIN -- PAGING BEGIN -- đoạn dưới chưa làm SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, RP.ID AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.IS_CHECKALL, A.BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY ,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES -- SELECT END FROM PL_REQUEST_DOC A LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID WHERE 1 = 1 AND A.REQ_PARENT_ID =@p_REQ_ID ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE IF(@p_TYPE='DVKD_XDCB') BEGIN -- PAGING BEGIN SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID, A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID, UDV.TLFullName AS CHECKER_NAME_DV, A.APPROVE_DT, A.PROCESS_ID, D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV, CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' WHEN A.PROCESS_ID<> 'APPROVE' AND A.AUTH_STATUS='A' THEN N'Chờ duyệt' ELSE D.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME, --CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt' --ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME, G.BRANCH_CODE, G.BRANCH_NAME, UP.TLFullName AS CHECKER_NAME_PROCESS, RP.APPROVE_DT AS APPROVE_DT_PROCESS, UC.TLFullName AS MAKER_NAME, RPN.PROCESS_ID AS PROCESS_ID_NEXT, RP.ROLE_USER, RP.NOTES AS PROCESS_STATUS , RPN.NOTES AS PROCESS_STATUS_NEXT, A.DVDM_APP_ID, CD.DVDM_NAME AS DVDM_APP_NAME, A.REQ_PARENT_ID, PARENT.REQ_NAME AS REQ_PARENT_NAME, PARENT.REQ_CODE AS REQ_PARENT_CODE, PARENT.TOTAL_AMT AS REQ_PARENT_AMT, A.BRANCH_FEE, A.DEP_ID, A.DEP_FEE, DEP.DEP_NAME, DEP.DEP_CODE, BF.BRANCH_NAME AS BRANCH_FEE_NAME, BF.BRANCH_CODE AS BRANCH_FEE_CODE, DF.DEP_NAME AS DEP_FEE_NAME, DF.DEP_CODE AS DEP_FEE_CODE, '' AS BRANCH_DEP, '' AS BRANCH_DEP_FEE, '' AS TYPE_JOB, '' AS USER_JOB, '' AS USER_JOB_NAME, '' AS TRANSFER_MAKER, A.CREATE_DT AS TRANFER_DT , '' AS TRANSFER_MAKER_ID, A.EFFEC_DT,A.IS_BACKDAY, '' AS TYPE_JOB_XL, '' AS USER_JOB_XL, --RP.ID AS REF_ID, 0 AS REF_ID, RPN.STATUS AS STATUS_NEXT, RP.STATUS AS STATUS_CURR, '' AS STATUS_JOB, A.BRANCH_CREATE, A.DEP_CREATE, A.REQ_LINE, A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME, A.KT_NOTES, A.BASED_CONTENT, A.IS_CHECKALL, -- GIANT 23/12/2021 A.PL_BASED_ID, PL_B.REQ_CODE AS PL_BASED_CODE, PL_B.REQ_CONTENT AS PL_BASED_CONTENT, '' AS IS_TRANSFER, --NGUOI XU LY --dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES, (SELECT TOP 1 BB.YEAR FROM PL_REQUEST_DOC_DT AA LEFT JOIN PL_MASTER BB ON AA.PLAN_ID = BB.PLAN_ID WHERE AA.REQ_ID = A.REQ_ID) AS NAMNGANSACH -- SELECT END FROM PL_REQUEST_DOC A LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID 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') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID) LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID -- GIANT 23/12/2021 LEFT JOIN dbo.PL_REQUEST_DOC PL_B ON PL_B.REQ_ID=A.PL_BASED_ID LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID=A.REQ_ID 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.BRANCH_CREATE = @p_BRANCH_LOGIN AND( A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE <>'HS')) OR A.IS_CHECKALL=1) AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103)) AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103)) AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR) AND (ISNULL(A.PROCESS_ID,'') ='APPROVE') AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1) AND( @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL OR ( @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) OR ( @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID) ) ) AND (EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = A.REQ_ID)) ORDER BY A.CREATE_DT DESC -- PAGING END END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_REQUEST_TRANSFER_DT_ByID]' GO ALTER PROCEDURE [dbo].[PL_REQUEST_TRANSFER_DT_ByID] @P_REQ_ID varchar(15), @p_TYPE VARCHAR(15), @p_TLNAME VARCHAR(20) AS DECLARE @listTRADE TABLE ( GOODS_ID VARCHAR(20), TRADE_ID VARCHAR(20), PLAN_ID VARCHAR(20), AMT_APP DECIMAL(18,2), AMT_EXE DECIMAL (18,2), AMT_ETM DECIMAL (18,2), AMT_TF DECIMAL (18,2), AMT_RECEIVE_TF DECIMAL (18,2), NOTES NVARCHAR(1000), AMT_ETM_TMP DECIMAL(18,2) ) -- IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID='APPROVE')) -- BEGIN -- IF(EXISTS(SELECT * FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@P_REQ_ID)) -- BEGIN -- INSERT INTO @listTRADE -- ( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES) -- SELECT GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@P_REQ_ID -- END -- ELSE -- BEGIN -- INSERT INTO @listTRADE -- ( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES) -- SELECT PT.GOODS_ID,PT.TRADE_ID,PT.PLAN_ID,PT.AMT_APP,PT.AMT_EXE,PT.AMT_ETM-PLDT.TOTAL_AMT,PT.AMT_TF-PLFT.TOTAL_AMT,PT.AMT_RECEIVE_TF-PLTT.TOTAL_AMT, PT.NOTES FROM dbo.PL_TRADEDETAIL PT -- LEFT JOIN -- ( -- SELECT TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM -- dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID -- GROUP BY TRADE_ID -- ) PLDT ON PLDT.TRADE_ID = PT.TRADE_ID -- LEFT JOIN -- ( -- SELECT FR_TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM -- dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID -- GROUP BY FR_TRADE_ID -- ) PLFT ON PLFT.FR_TRADE_ID = PT.TRADE_ID -- -- LEFT JOIN -- ( -- SELECT TO_TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM -- dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID -- GROUP BY TO_TRADE_ID -- ) PLTT ON PLTT.TO_TRADE_ID = PT.TRADE_ID -- WHERE (PT.TRADE_ID IN (SELECT TRADE_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) OR PT.TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)) -- END -- END -- ELSE -- BEGIN -- INSERT INTO @listTRADE -- ( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES) -- SELECT GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES FROM dbo.PL_TRADEDETAIL WHERE (TRADE_ID IN (SELECT TO_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID) OR TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)) -- END DECLARE @DEP_FEE_ID VARCHAR(15), @DEP_FEE_NAME NVARCHAR(1000), @BRANCH_FEE_ID VARCHAR(15), @BRANCH_FEE_NAME NVARCHAR(1000), @DVCCP NVARCHAR(1000) SET @DEP_FEE_ID =(SELECT DEP_FEE FROM PL_REQUEST_DOC WHERE REQ_ID =@P_REQ_ID) SET @DEP_FEE_NAME =(SELECT DEP_NAME FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_FEE_ID) SET @BRANCH_FEE_ID =(SELECT BRANCH_FEE FROM PL_REQUEST_DOC WHERE REQ_ID =@P_REQ_ID) SET @BRANCH_FEE_NAME =(SELECT BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_FEE_ID) IF(@BRANCH_FEE_ID ='DV0001') BEGIN SET @DVCCP =@BRANCH_FEE_NAME + ' - '+ @DEP_FEE_NAME END ELSE BEGIN SET @DVCCP =@BRANCH_FEE_NAME; END IF (EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID IN ('','SIGN','APPNEW','REJECT'))) BEGIN INSERT INTO @listTRADE ( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,NOTES,AMT_ETM_TMP) SELECT GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,NOTES, (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND DDT.TRADE_ID = PL.TRADE_ID AND DOC.REQ_ID <> @p_REQ_ID) + (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND DDT.FR_TRADE_ID = PL.TRADE_ID AND DOC.REQ_ID <> @p_REQ_ID) AS AMT_ETM_TMP FROM dbo.PL_TRADEDETAIL PL WHERE (TRADE_ID IN (SELECT TO_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID) OR TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)) END ELSE BEGIN INSERT INTO @listTRADE ( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,NOTES,AMT_ETM_TMP) SELECT * FROM ( SELECT DISTINCT GOODS_ID,TRADE_ID,PLAN_ID,ISNULL(AMT_APP,0) AS AMT_APP,ISNULL(AMT_EXE,0) AS AMT_EXE,ISNULL(AMT_ETM,0) AS AMT_ETM,ISNULL(AMT_TF,0) AS AMT_TF,ISNULL(AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,'' NOTES,ISNULL(AMT_ETM_TMP,0) AS AMT_ETM_TMP FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID UNION ALL SELECT DISTINCT FR_GOOD_ID GOODS_ID,FR_TRADE_ID TRADE_ID,FR_PLAN_ID PLAN_ID,ISNULL(FR_AMT_APP,0) AMT_APP,ISNULL(FR_AMT_EXE,0) AMT_EXE,ISNULL(FR_AMT_ETM,0) AMT_ETM,ISNULL(FR_AMT_TF,0) AMT_TF,ISNULL(FR_AMT_RECEIVE_TF,0) AMT_RECEIVE_TF,'' NOTES,ISNULL(FR_AMT_ETM_TMP,0) AMT_ETM_TMP FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID UNION ALL SELECT DISTINCT TO_GOOD_ID GOODS_ID,TO_TRADE_ID TRADE_ID,TO_PLAN_ID PLAN_ID,ISNULL(TO_AMT_APP,0) AMT_APP,ISNULL(TO_AMT_EXE,0) AMT_EXE,ISNULL(TO_AMT_ETM,0) AMT_ETM,ISNULL(TO_AMT_TF,0) AMT_TF,ISNULL(TO_AMT_RECEIVE_TF,0) AMT_RECEIVE_TF,'' NOTES,ISNULL(TO_AMT_ETM_TMP,0) AMT_ETM_TMP FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID ) T GROUP BY GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,NOTES,AMT_ETM_TMP END DECLARE @COST_ID TABLE ( COST_ID VARCHAR(15) ) DECLARE @DVDM_ID TABLE ( DVDM_ID VARCHAR(15) ) DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID VARCHAR(15),@ROLE VARCHAR(15),@IS_ALL BIT SET @IS_ALL=0 SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME) SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME) IF(EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_MASTER' AND BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID)) SET @IS_ALL=1 SET @ROLE=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME) INSERT INTO @COST_ID SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID 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 IF(@p_TYPE='DVKD') BEGIN SELECT DISTINCT A.*,FB.BRANCH_CODE AS FR_BRANCH_CODE, FB.BRANCH_NAME AS FR_BRANCH_NAME,TB.BRANCH_CODE AS TO_BRANCH_CODE, ISNULL(FG.GD_CODE,LF_DT.GOOD_CODE) AS FR_GD_CODE,ISNULL(FG.GD_NAME,LF_DT.GOOD_NAME) AS FR_GD_NAME, ISNULL(TG.GD_CODE,LT_DT.GOOD_CODE) AS TO_GD_CODE,ISNULL(TG.GD_NAME,LT_DT.GOOD_NAME) AS TO_GD_NAME, CASE WHEN A.AUTH_STATUS='A' THEN N'Đã xác nhận' ELSE N'Chưa xác nhận' END AS STATUS_NAME, DMF.DVDM_CODE AS FR_DVDM_CODE, DMF.DVDM_NAME AS FR_DVDM_NAME, DMT.DVDM_CODE AS TO_DVDM_CODE, DMT.DVDM_NAME AS TO_DVDM_NAME, CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME, FD.DEP_NAME AS FR_DEP_NAME,FD.DEP_CODE AS FR_DEP_CODE,TD.DEP_NAME AS TO_DEP_NAME,TD.DEP_CODE AS TO_DEP_CODE, ISNULL(PLF.AMT_APP,0) AS FR_AMT_APP, ISNULL(PLF.AMT_APP,0) + ISNULL(PLF.AMT_RECEIVE_TF,0) - ISNULL(PLF.AMT_TF,0) - ISNULL(PLF.AMT_ETM,0) - ISNULL(PLF.AMT_ETM_TMP,0) AS FR_AMT_REMAIN_ETM, ISNULL(PLT.AMT_APP,0) AS TO_AMT_APP, ISNULL(PLT.AMT_APP,0) + ISNULL(PLT.AMT_RECEIVE_TF,0) - ISNULL(PLT.AMT_TF,0) - ISNULL(PLT.AMT_ETM,0) - ISNULL(PLT.AMT_ETM_TMP,0) AS TO_AMT_REMAIN_ETM, ISNULL(PLF.AMT_EXE,0) AS AMT_EXE, ISNULL(PLF.AMT_ETM,0) AS AMT_ETM, ISNULL(PLF.AMT_TF,0) AS AMT_TF, ISNULL(PLF.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF, ISNULL(PLF.AMT_APP,0) + ISNULL(PLF.AMT_RECEIVE_TF,0) - ISNULL(PLF.AMT_TF,0) - ISNULL(PLF.AMT_EXE,0) AS AMT_REMAIN, ISNULL(PLF.AMT_APP,0) + ISNULL(PLF.AMT_RECEIVE_TF,0) - ISNULL(PLF.AMT_TF,0) - ISNULL(PLF.AMT_ETM,0) -(SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND DDT.TRADE_ID = PLF.TRADE_ID AND DOC.REQ_ID <> A.REQ_DOC_ID) AS AMT_REMAIN_ETM, ISNULL(PLF.AMT_APP,0) + ISNULL(PLF.AMT_RECEIVE_TF,0) - ISNULL(PLF.AMT_TF,0) - ISNULL(PLF.AMT_ETM,0) - ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER Temp WHERE Temp.REQ_DOC_ID=@P_REQ_ID AND Temp.FR_TRADE_ID= A.FR_TRADE_ID AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <> 'APPROVE' ) GROUP BY Temp.FR_TRADE_ID ),0)AS AMT_REMAIN_ETM_TF, ISNULL(PLT.AMT_APP,0) + ISNULL(PLT.AMT_RECEIVE_TF,0) - ISNULL(PLT.AMT_TF,0) - ISNULL(PLT.AMT_ETM,0) AS AMT_REMAIN_ETM_TO, GTF.GD_TYPE_NAME AS FR_GD_TYPE_NAME,GTF.GD_TYPE_CODE AS FR_GD_TYPE_CODE,GTF.GD_TYPE_ID AS FR_GD_TYPE_ID, GTT.GD_TYPE_NAME AS TO_GD_TYPE_NAME,GTT.GD_TYPE_CODE AS TO_GD_TYPE_CODE,GTT.GD_TYPE_ID AS TO_GD_TYPE_ID, --GIANT 22/10/2021 CASE WHEN A.FR_DEP_ID <> '' THEN FD.DEP_NAME + N' - ' + FB.BRANCH_NAME ELSE FB.BRANCH_NAME END AS FR_BRANCH_NAME, --CASE WHEN A.FR_PLAN_ID IS NOT NULL AND A.FR_PLAN_ID <> '' --THEN ISNULL(AD1.DEP_NAME + ' - ','') + AC1.BRANCH_NAME --ELSE ISNULL(FD.DEP_NAME + N' - ','') + FB.BRANCH_NAME END AS FR_BRANCH_NAME, --- LUCTV 25.11.2022 DON VI CHUYEN LOAD DON VI DANG QUAN LY NGAN SACH CASE --WHEN A.TO_DEP_ID <> '' AND A.TO_BRN_ID ='DV0001' THEN TD.DEP_NAME + N' - ' + TB.BRANCH_NAME --- LUCTV 14.11.2022 FIX CACH SHOW DON VI NHAN NEU HOI SO MOI SHOW PHONG BAN --WHEN A.TO_BRN_ID <> '' AND (A.TO_DEP_ID ='' OR A.TO_BRN_ID <>'DV0001') THEN TB.BRANCH_NAME --- LUCTV 14.11.2022 FIX CACH SHOW DON VI NHAN WHEN ISNULL(A.TO_TRADE_ID,'') <> '' THEN ISNULL(AD2.DEP_NAME + ' - ','') + AC2.BRANCH_NAME --WHEN ISNULL(A.TO_DEP_ID,'') ='' AND ISNULL(A.TO_BRN_ID,'') ='' THEN @DVCCP WHEN ISNULL(A.TO_TRADE_ID,'')='' THEN @DVCCP END AS TO_BRANCH_NAME, --A.FR_AMT_FINAL + A.TOTAL_AMT AS FR_AMT_REMAIN, --A.TO_AMT_FINAL - A.TOTAL_AMT AS TO_AMT_REMAIN A.FR_AMT_FINAL - A.TOTAL_AMT AS FR_AMT_REMAIN, A.TO_AMT_FINAL + A.TOTAL_AMT AS TO_AMT_REMAIN, FPM.YEAR AS fR_GD_YEAR, TPM.YEAR AS tO_GD_YEAR, ISNULL(AD1.DEP_NAME + ' - ','') + AC1.BRANCH_NAME AS FR_BRANCH_FEE_FULL FROM dbo.PL_REQUEST_TRANSFER A LEFT JOIN dbo.CM_BRANCH FB ON FB.BRANCH_ID=A.FR_BRN_ID LEFT JOIN dbo.CM_BRANCH TB ON TB.BRANCH_ID=A.TO_BRN_ID LEFT JOIN dbo.CM_DEPARTMENT FD ON FD.DEP_ID=A.FR_DEP_ID LEFT JOIN dbo.CM_DEPARTMENT TD ON TD.DEP_ID=A.TO_DEP_ID LEFT JOIN dbo.CM_GOODS FG ON FG.GD_ID=A.FR_GOOD_ID LEFT JOIN dbo.CM_GOODS TG ON TG.GD_ID=A.TO_GOOD_ID LEFT JOIN dbo.PL_IMPORT_DT LF_DT ON LF_DT.TRADE_ID=A.FR_TRADE_ID AND( LF_DT.TRADE_ID IS NOT NULL AND LF_DT.TRADE_ID<>'') LEFT JOIN dbo.PL_IMPORT_DT LT_DT ON LT_DT.TRADE_ID=A.TO_TRADE_ID AND( LT_DT.TRADE_ID IS NOT NULL AND LT_DT.TRADE_ID<>'') LEFT JOIN dbo.CM_DVDM DMF ON DMF.DVDM_ID=A.FR_DVDM_ID LEFT JOIN dbo.CM_DVDM DMT ON DMT.DVDM_ID=A.TO_DVDM_ID LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.FR_KHOI_ID --INNER JOIN @listTRADE PLF ON PLF.TRADE_ID=A.FR_TRADE_ID --INNER JOIN @listTRADE PLT ON PLT.TRADE_ID=A.TO_TRADE_ID LEFT JOIN @listTRADE PLF ON PLF.TRADE_ID=A.FR_TRADE_ID LEFT JOIN @listTRADE PLT ON PLT.TRADE_ID=A.TO_TRADE_ID LEFT JOIN dbo.CM_GOODSTYPE GTF ON FG.GD_CODE LIKE '%.' + GTF.GD_TYPE_CODE +'.%' LEFT JOIN dbo.CM_GOODSTYPE GTT ON TG.GD_CODE LIKE '%.' + GTT.GD_TYPE_CODE +'.%' LEFT JOIN dbo.PL_MASTER FPM ON FPM.PLAN_ID = A.FR_PLAN_ID LEFT JOIN dbo.PL_MASTER TPM ON TPM.PLAN_ID = A.TO_PLAN_ID LEFT JOIN CM_BRANCH AC1 ON AC1.BRANCH_ID = FPM.BRANCH_ID LEFT JOIN CM_DEPARTMENT AD1 ON AD1.DEP_ID = FPM.DEPT_ID LEFT JOIN CM_BRANCH AC2 ON AC2.BRANCH_ID = TPM.BRANCH_ID LEFT JOIN CM_DEPARTMENT AD2 ON AD2.DEP_ID = TPM.DEPT_ID WHERE A.REQ_DOC_ID=@P_REQ_ID ORDER BY A.REQ_TRANSFER_ID END ELSE IF(@p_TYPE='PDTT') BEGIN SELECT A.*,FB.BRANCH_CODE AS FR_BRANCH_CODE, FB.BRANCH_NAME AS FR_BRANCH_NAME,TB.BRANCH_CODE AS TO_BRANCH_CODE, TB.BRANCH_NAME AS TO_BRANCH_NAME, ISNULL(FG.GD_CODE,LF_DT.GOOD_CODE) AS FR_GD_CODE,ISNULL(FG.GD_NAME,LT_DT.GOOD_NAME) AS FR_GD_NAME, ISNULL(TG.GD_CODE,LT_DT.GOOD_CODE) AS TO_GD_CODE,ISNULL(TG.GD_NAME,LT_DT.GOOD_NAME) AS TO_GD_NAME, CASE WHEN A.AUTH_STATUS='A' THEN N'Đã xác nhận' ELSE N'Chưa xác nhận' END AS STATUS_NAME ,DM.DVDM_CODE,DM.DVDM_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,FD.DEP_NAME AS FR_DEP_NAME,FD.DEP_CODE AS FR_DEP_CODE,TD.DEP_NAME AS TO_DEP_NAME,TD.DEP_CODE AS TO_DEP_CODE, (ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)) AS AMT_APP,ISNULL(PL.AMT_EXE,0) AS AMT_EXE, ISNULL(PL.AMT_ETM,0) AS AMT_ETM,ISNULL(PL.AMT_TF,0) AS AMT_TF, ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF, ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN, ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM, ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_ETM,0) - ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER Temp WHERE Temp.REQ_DOC_ID=@P_REQ_ID AND Temp.FR_TRADE_ID= A.FR_TRADE_ID AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <> 'APPROVE' ) GROUP BY Temp.FR_TRADE_ID ),0)AS AMT_REMAIN_ETM_TF,GTF.GD_TYPE_NAME AS FR_GD_TYPE_NAME,GTF.GD_TYPE_CODE AS FR_GD_TYPE_CODE,GTF.GD_TYPE_ID AS FR_GD_TYPE_ID, GTT.GD_TYPE_NAME AS TO_GD_TYPE_NAME,GTT.GD_TYPE_CODE AS TO_GD_TYPE_CODE,GTT.GD_TYPE_ID AS TO_GD_TYPE_ID FROM dbo.PL_REQUEST_TRANSFER A LEFT JOIN dbo.CM_BRANCH FB ON FB.BRANCH_ID=A.FR_BRN_ID LEFT JOIN dbo.CM_BRANCH TB ON TB.BRANCH_ID=A.TO_BRN_ID LEFT JOIN dbo.CM_DEPARTMENT FD ON FD.DEP_ID=A.FR_DEP_ID LEFT JOIN dbo.CM_DEPARTMENT TD ON TD.DEP_ID=A.TO_DEP_ID LEFT JOIN dbo.CM_GOODS FG ON FG.GD_ID=A.FR_GOOD_ID LEFT JOIN dbo.CM_GOODS TG ON TG.GD_ID=A.TO_GOOD_ID LEFT JOIN dbo.PL_IMPORT_DT LF_DT ON LF_DT.TRADE_ID=A.FR_TRADE_ID AND( LF_DT.TRADE_ID IS NOT NULL AND LF_DT.TRADE_ID<>'') LEFT JOIN dbo.PL_IMPORT_DT LT_DT ON LT_DT.TRADE_ID=A.TO_TRADE_ID AND( LT_DT.TRADE_ID IS NOT NULL AND LT_DT.TRADE_ID<>'') LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.FR_DVDM_ID LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.FR_KHOI_ID LEFT JOIN @listTRADE PL ON PL.TRADE_ID=A.FR_TRADE_ID LEFT JOIN dbo.CM_GOODSTYPE GTF ON FG.GD_CODE LIKE '%.' + GTF.GD_TYPE_CODE +'.%' LEFT JOIN dbo.CM_GOODSTYPE GTT ON TG.GD_CODE LIKE '%.' + GTT.GD_TYPE_CODE +'.%' WHERE A.REQ_DOC_ID=@P_REQ_ID ORDER BY A.REQ_TRANSFER_ID --AND (@ROLE='TGD' OR @IS_ALL=1 OR @ROLE='HDQT' OR EXISTS(SELECT * FROM @DVDM_ID WHERE DVDM_ID=A.FR_DVDM_ID OR DVDM_ID=A.FR_KHOI_ID OR --A.TO_DVDM_ID=DVDM_ID OR A.TO_KHOI_ID=DVDM_ID --)) END ELSE IF(@p_TYPE='XLTT' OR @p_TYPE='TFJOB') BEGIN SELECT A.*,FB.BRANCH_CODE AS FR_BRANCH_CODE, FB.BRANCH_NAME AS FR_BRANCH_NAME,TB.BRANCH_CODE AS TO_BRANCH_CODE, TB.BRANCH_NAME AS TO_BRANCH_NAME, ISNULL(FG.GD_CODE,LF_DT.GOOD_CODE) AS FR_GD_CODE,ISNULL(FG.GD_NAME,LT_DT.GOOD_NAME) AS FR_GD_NAME, ISNULL(TG.GD_CODE,LT_DT.GOOD_CODE) AS TO_GD_CODE,ISNULL(TG.GD_NAME,LT_DT.GOOD_NAME) AS TO_GD_NAME, CASE WHEN A.AUTH_STATUS='A' THEN N'Đã xác nhận' ELSE N'Chưa xác nhận' END AS STATUS_NAME ,DM.DVDM_CODE,DM.DVDM_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,FD.DEP_NAME AS FR_DEP_NAME,FD.DEP_CODE AS FR_DEP_CODE,TD.DEP_NAME AS TO_DEP_NAME,TD.DEP_CODE AS TO_DEP_CODE, (ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)) AS AMT_APP,ISNULL(PL.AMT_EXE,0) AS AMT_EXE, ISNULL(PL.AMT_ETM,0) AS AMT_ETM,ISNULL(PL.AMT_TF,0) AS AMT_TF, ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF, ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN, ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM, ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_ETM,0) - ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER Temp WHERE Temp.REQ_DOC_ID=@P_REQ_ID AND Temp.FR_TRADE_ID= A.FR_TRADE_ID AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <> 'APPROVE' ) GROUP BY Temp.FR_TRADE_ID ),0)AS AMT_REMAIN_ETM_TF,GTF.GD_TYPE_NAME AS FR_GD_TYPE_NAME,GTF.GD_TYPE_CODE AS FR_GD_TYPE_CODE,GTF.GD_TYPE_ID AS FR_GD_TYPE_ID, GTT.GD_TYPE_NAME AS TO_GD_TYPE_NAME,GTT.GD_TYPE_CODE AS TO_GD_TYPE_CODE,GTT.GD_TYPE_ID AS TO_GD_TYPE_ID FROM dbo.PL_REQUEST_TRANSFER A LEFT JOIN dbo.CM_BRANCH FB ON FB.BRANCH_ID=A.FR_BRN_ID LEFT JOIN dbo.CM_BRANCH TB ON TB.BRANCH_ID=A.TO_BRN_ID LEFT JOIN dbo.CM_DEPARTMENT FD ON FD.DEP_ID=A.FR_DEP_ID LEFT JOIN dbo.CM_DEPARTMENT TD ON TD.DEP_ID=A.TO_DEP_ID LEFT JOIN dbo.CM_GOODS FG ON FG.GD_ID=A.FR_GOOD_ID LEFT JOIN dbo.CM_GOODS TG ON TG.GD_ID=A.TO_GOOD_ID LEFT JOIN dbo.PL_IMPORT_DT LF_DT ON LF_DT.TRADE_ID=A.FR_TRADE_ID AND( LF_DT.TRADE_ID IS NOT NULL AND LF_DT.TRADE_ID<>'') LEFT JOIN dbo.PL_IMPORT_DT LT_DT ON LT_DT.TRADE_ID=A.TO_TRADE_ID AND( LT_DT.TRADE_ID IS NOT NULL AND LT_DT.TRADE_ID<>'') LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.FR_DVDM_ID LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.FR_KHOI_ID LEFT JOIN @listTRADE PL ON PL.TRADE_ID=A.FR_TRADE_ID LEFT JOIN dbo.CM_GOODSTYPE GTF ON FG.GD_CODE LIKE '%.' + GTF.GD_TYPE_CODE +'.%' LEFT JOIN dbo.CM_GOODSTYPE GTT ON TG.GD_CODE LIKE '%.' + GTT.GD_TYPE_CODE +'.%' WHERE A.REQ_DOC_ID=@P_REQ_ID ORDER BY A.REQ_TRANSFER_ID --AND (A.FR_BRN_ID=@BRANCH_ID AND( A.FR_DEP_ID=@DEP_ID OR A.FR_DEP_ID IS NULL OR A.FR_DEP_ID='')OR @ROLE='TGD' OR @IS_ALL=1 OR @ROLE='HDQT') END --EXEC TR_PO_DETAIL_ById 'TRPM00000000001', 'DV0001' GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_MASTER_Upd]' GO ALTER PROCEDURE [dbo].[BUD_MASTER_Upd] @p_BUILDING_ID varchar(15) = null , @p_ASSET_ID varchar(15) = NULL , @p_RET_ID VARCHAR(15) = NULL, @p_BUILDING_NAME nvarchar(1000) = NULL , @p_BRANCH_ID varchar(15) = NULL , @p_ADDRESS nvarchar(800) = NULL , @p_OWNER_OR_RENT varchar(1) = NULL , @p_NUM_FLOOR int = NULL, @p_AREA numeric(18,2) = NULL , @p_TOTAL_AREA numeric(18,2) = NULL , @p_RENT_TOTAL_AREA numeric(18,2) = NULL , @p_UTILZED_AREA numeric(18,2) = 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_XML_TEMP xml = NULL, @p_RENT_AMT DECIMAL(18,0) =NULL, @p_DEPOSITS_AMT DECIMAL(18,0) =NULL, @p_RENT_TIME int, @p_IS_SEND_APPR VARCHAR(15), @p_SEND_APPR_DT VARCHAR(20), @p_SIGN_USER VARCHAR(15), @p_SIGN_DT VARCHAR(15), @p_CONTRACT_ID VARCHAR(15) = NULL, @p_SUP_ID VARCHAR(15) = NULL, @p_VAT INT = 0, @p_LENGTH DECIMAL(18,2) = NULL, @p_WIDTH DECIMAL(18,2) = NULL, @p_BRANCH_USE_ID VARCHAR(15) = NULL AS /* --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM BUD_MASTER WHERE BUILDING_ID=@p_BUILDING_ID SET @ERRORSYS = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, ''BUILDING_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END */ IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U')) BEGIN SET @p_IS_SEND_APPR = (SELECT IS_SEND_APPR FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID) SELECT '-1' as Result, '' BUILDING_ID, @p_IS_SEND_APPR IS_SEND_APPR, N'Không thể chỉnh sửa. Thông tin trụ sở đã được gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM BUD_MASTER WHERE BUILDING_NAME = @p_BUILDING_NAME AND BUILDING_ID <> @p_BUILDING_ID)) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Không thể chỉnh sửa. Tên trụ sở đã tồn tại trong hệ thống. Vui lòng chọn tên trụ sở khác.' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT BUILDING_ID FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND MAKER_ID <> @p_MAKER_ID)) BEGIN SELECT '-1' as Result, '' BUILDING_ID, N'Không thể chỉnh sửa. Chỉ có người tạo thông tin trụ sở: ' +@p_BUILDING_NAME+ N' mới được phép chỉnh sửa. Bạn không phải là người tạo thông tin trụ sở này' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @p_ROW_NUM INT = 0 IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND AUTH_STATUS = 'A')) BEGIN ---------------CẬP NHẬT LẠI SAU KHI ĐÃ DUYỆT------------ SET @p_CHECKER_ID = NULL SET @p_APPROVE_DT = NULL SET @p_SIGN_DT = NULL SET @p_SEND_APPR_DT = NULL END UPDATE BUD_MASTER SET [ASSET_ID] = @p_ASSET_ID, [RET_ID] = @p_RET_ID, [BUILDING_NAME] = @p_BUILDING_NAME, [BRANCH_ID] = @p_BRANCH_ID, [BRANCH_USE_ID] = @p_BRANCH_USE_ID, [ADDRESS] = @p_ADDRESS, [OWNER_OR_RENT] = @p_OWNER_OR_RENT,[NUM_FLOOR] = @p_NUM_FLOOR, [AREA] = @p_AREA,[TOTAL_AREA] = @p_TOTAL_AREA, [RENT_TOTAL_AREA] = @p_RENT_TOTAL_AREA, [UTILZED_AREA] = @p_UTILZED_AREA,[NOTES] = @p_NOTES, [RECORD_STATUS] = @p_RECORD_STATUS,[AUTH_STATUS] = @p_AUTH_STATUS, [MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103), [CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103), [XML_TEMP] = @p_XML_TEMP, [RENT_AMT]=@p_RENT_AMT, [DEPOSITS_AMT] =@p_DEPOSITS_AMT, [RENT_TIME] =@p_RENT_TIME, [IS_SEND_APPR] = @p_IS_SEND_APPR, [SEND_APPR_DT] = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), [SIGN_USER] = @p_SIGN_USER, [SIGN_DT]= CONVERT(DATETIME, @p_SIGN_DT, 103), [CONTRACT_ID] = @p_CONTRACT_ID, [SUP_ID] = @p_SUP_ID, [VAT] = @p_VAT, [LENGTH] = @p_LENGTH, [WIDTH] = @p_WIDTH WHERE BUILDING_ID= @p_BUILDING_ID IF @@Error <> 0 GOTO ABORT DELETE FROM BUD_AREA_DT WHERE BUILD_ID =@p_BUILDING_ID -----------BAODNQ 10/3/2022 : Kiểm tra danh sách tầng phải khớp với số tầng của trụ sở --DECLARE @p_XML_TOTAL_COUNT INT --SET @p_XML_TOTAL_COUNT = ( -- SELECT @p_XML_TEMP.value('count(/Root/XmlData1/BUILDING_AREA_ID)', 'INT') as 'COUNT' --) --PRINT @p_XML_TOTAL_COUNT --IF(@p_NUM_FLOOR <> @p_XML_TOTAL_COUNT) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' BUILDING_ID, -- N'Số tầng trên lưới danh sách phải khớp với số tầng của trụ sở' ErrorDesc -- RETURN '-1' --END ------------CHECK TỔNG DT CÁC TẦNG KHÔNG DC LỚN HƠN DT TRỤ SỞ--------- DECLARE @p_XML_TOTAL_FLOOR_AREA NUMERIC(18,2) SET @p_XML_TOTAL_FLOOR_AREA = ( SELECT @p_XML_TEMP.value('sum(/Root/XmlData1/FLOOR_AREA)', 'DECIMAL(18,2)') AS 'SUM' ) PRINT @p_XML_TOTAL_FLOOR_AREA IF(@p_XML_TOTAL_FLOOR_AREA > @p_TOTAL_AREA) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUILDING_ID, N'Tổng diện tích các tầng không được vượt quá diện tích trụ sở' ErrorDesc RETURN '-1' END Declare @hdoc1 INT DECLARE @d_BUILDING_AREA_ID VARCHAR(15), @d_FLOOR_NO INT, @d_FLOOR_AREA decimal(18,2), @d_INTERNAL_AREA decimal(18,2), @d_RENT_AREA decimal(18,2), @d_UTILZED_AREA decimal(18,2), @d_NOTES NVARCHAR(1000) Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP DECLARE XmlDataDoc CURSOR FOR SELECT * FROM OPENXML(@hdoc1,'/Root/XmlData1',2) WITH ( BUILDING_AREA_ID VARCHAR(15), FLOOR_NO INT, FLOOR_AREA decimal(18,2), INTERNAL_AREA decimal(18,2), RENT_AREA decimal(18,2), UTILZED_AREA decimal(18,2), NOTES NVARCHAR(1000) ) OPEN XmlDataDoc FETCH NEXT FROM XmlDataDoc INTO @d_BUILDING_AREA_ID , @d_FLOOR_NO , @d_FLOOR_AREA , @d_INTERNAL_AREA , @d_RENT_AREA , @d_UTILZED_AREA , @d_NOTES WHILE @@FETCH_STATUS = 0 BEGIN SET @p_ROW_NUM = @p_ROW_NUM + 1 IF(LEN( @d_BUILDING_AREA_ID)=0) EXEC SYS_CodeMasters_Gen 'BUD_AREA_DT', @d_BUILDING_AREA_ID out IF @d_BUILDING_AREA_ID='' OR @d_BUILDING_AREA_ID IS NULL GOTO ABORT -------CHECK TỔNG DT CHO THUÊ VÀ SỬ DỤNG PH NHỎ HƠN HOẶC BẰNG DT TẦNG-------- IF(@d_FLOOR_AREA - (@d_INTERNAL_AREA + @d_UTILZED_AREA) < 0) BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUILDING_ID, '' BUILDING_NAME, N'Lưới danh sách các tầng của trụ sở, dòng ' + CONVERT(NVARCHAR,@p_ROW_NUM) + N': Tổng diện tích sử dụng và diện tích cho thuê phải nhỏ hơn hoặc bằng diện tích tầng' ErrorDesc RETURN '-1' END -------------BAODNQ 12/9/2022 : CHECK DT MỖI TẦNG KO DC LỚN HƠN DT MẶT SÀN------ IF(@d_FLOOR_AREA > @p_AREA) BEGIN CLOSE XmlDataDoc DEALLOCATE XmlDataDoc ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUILDING_ID, '' BUILDING_NAME, N'Lưới danh sách các tầng của trụ sở, dòng ' + CONVERT(NVARCHAR,@p_ROW_NUM) + N': Diện tích tầng không được lớn hơn diện tích mặt sàn' ErrorDesc RETURN '-1' END INSERT INTO BUD_AREA_DT([BUILDING_AREA_ID],[BUILD_ID],[FLOOR_NO],[FLOOR_AREA],[INTERNAL_AREA], [RENT_AREA],[UTILZED_AREA],[NOTES],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT]) VALUES(@d_BUILDING_AREA_ID ,@p_BUILDING_ID ,@d_FLOOR_NO ,@d_FLOOR_AREA ,@d_INTERNAL_AREA ,0 , @d_UTILZED_AREA ,@d_NOTES,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM XmlDataDoc INTO @d_BUILDING_AREA_ID , @d_FLOOR_NO , @d_FLOOR_AREA , @d_INTERNAL_AREA , @d_RENT_AREA , @d_UTILZED_AREA , @d_NOTES END CLOSE XmlDataDoc DEALLOCATE XmlDataDoc -----**** UPDATE ---- --8/12/2021,datmq thêm UTILZED_AREA=(SELECT SUM(UTILZED_AREA))---- UPDATE BUD_MASTER SET TOTAL_AREA = (SELECT SUM(FLOOR_AREA) FROM BUD_AREA_DT WHERE BUILD_ID=@p_BUILDING_ID),UTILZED_AREA=(SELECT SUM(UTILZED_AREA) FROM BUD_AREA_DT WHERE BUILD_ID=@p_BUILDING_ID) WHERE BUILDING_ID=@p_BUILDING_ID -- 29/12/2021:datmq Insert to table PL_PROCESS ---------------BAODNQ : TH NGƯỜI TẠO CẬP NHẬT NHIỀU LẦN THÌ CHỈ LƯU LỊCH SỬ XỬ LÝ CẬP NHẬT GẦN NHẤT---------------- IF((SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID = @p_BUILDING_ID ORDER BY APPROVE_DT DESC) = 'UPDATE') BEGIN WITH RESULT AS( SELECT TOP 1 * FROM PL_PROCESS WHERE REQ_ID = @p_BUILDING_ID ORDER BY APPROVE_DT DESC ) DELETE FROM RESULT END INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_BUILDING_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Cập nhật thông tin trụ sở thành công' , N'Cập nhật thông tin trụ sở' ) COMMIT TRANSACTION SELECT '0' as Result, @p_BUILDING_ID BUILDING_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUILDING_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[rpt_PL_REQUEST_DOC_DT_ById]' GO ALTER PROCEDURE [dbo].[rpt_PL_REQUEST_DOC_DT_ById] @P_REQ_ID varchar(50) AS DECLARE @l_QUANTITY numeric(18,0)=0, @l_QUANTITY_EXE decimal(18,0)=0, @l_QUANTITY_REMAIN decimal(18,0)=0, @l_AMT numeric(18,0)=0, @l_AMT_EXE decimal(18,0)=0, @l_AMT_REMAIN decimal(18,0)=0 DECLARE @APP_DATE DATETIME = (SELECT APPROVE_DT FROM TR_REQUEST_DOC WHERE REQ_ID = @P_REQ_ID) DECLARE @listTRADE TABLE ( GOODS_ID VARCHAR(20), TRADE_ID VARCHAR(20), PLAN_ID VARCHAR(20), AMT_APP DECIMAL(18,2), AMT_EXE DECIMAL (18,2), AMT_ETM DECIMAL (18,2), AMT_TF DECIMAL (18,2), AMT_RECEIVE_TF DECIMAL (18,2), NOTES NVARCHAR(1000), AMT_ETM_TMP DECIMAL (18,2) ) IF (EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID IN ('','SIGN','APPNEW','REJECT'))) BEGIN INSERT INTO @listTRADE ( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,NOTES,AMT_ETM_TMP) SELECT DISTINCT GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,NOTES, (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND DDT.TRADE_ID = PL.TRADE_ID AND DOC.REQ_ID <> @p_REQ_ID) + (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT') AND DDT.FR_TRADE_ID = PL.TRADE_ID AND DOC.REQ_ID <> @p_REQ_ID) AS AMT_ETM_TMP FROM dbo.PL_TRADEDETAIL PL WHERE (TRADE_ID IN (SELECT TRADE_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) OR TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)) END ELSE BEGIN INSERT INTO @listTRADE (GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,NOTES,AMT_ETM_TMP) SELECT * FROM ( SELECT DISTINCT GOODS_ID,TRADE_ID,PLAN_ID,ISNULL(AMT_APP,0) AS AMT_APP,ISNULL(AMT_EXE,0) AS AMT_EXE,ISNULL(AMT_ETM,0) AS AMT_ETM,ISNULL(AMT_TF,0) AS AMT_TF,ISNULL(AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,'' NOTES,ISNULL(AMT_ETM_TMP,0) AS AMT_ETM_TMP FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID UNION ALL SELECT DISTINCT FR_GOOD_ID GOODS_ID,FR_TRADE_ID TRADE_ID,FR_PLAN_ID PLAN_ID,ISNULL(FR_AMT_APP,0) AMT_APP,ISNULL(FR_AMT_EXE,0) AMT_EXE,ISNULL(FR_AMT_ETM,0) AMT_ETM,ISNULL(FR_AMT_TF,0) AMT_TF,ISNULL(FR_AMT_RECEIVE_TF,0) AMT_RECEIVE_TF,'' NOTES,ISNULL(FR_AMT_ETM_TMP,0) AMT_ETM_TMP FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID AND ISNULL(FR_GOOD_ID,'') <> '' UNION ALL SELECT DISTINCT TO_GOOD_ID GOODS_ID,TO_TRADE_ID TRADE_ID,TO_PLAN_ID PLAN_ID,ISNULL(TO_AMT_APP,0) AMT_APP,ISNULL(TO_AMT_EXE,0) AMT_EXE,ISNULL(TO_AMT_ETM,0) AMT_ETM,ISNULL(TO_AMT_TF,0) AMT_TF,ISNULL(TO_AMT_RECEIVE_TF,0) AMT_RECEIVE_TF,'' NOTES,ISNULL(TO_AMT_ETM_TMP,0) AMT_ETM_TMP FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID ) T GROUP BY GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,NOTES,AMT_ETM_TMP END SELECT ROW_NUMBER() OVER (ORDER BY PLDT.REQDT_ID) AS STT, HH.HH_NAME,PLDT.DESCRIPTION,PLDT.CURRENCY,PLDT.UNIT_NAME, FORMAT(ISNULL(PLDT.QUANTITY,0), '#,#') AS QUANTITY, FORMAT(ISNULL(PLDT.PRICE,0), '#,#.##') AS PRICE, FORMAT(ISNULL(PLDT.QUANTITY,0) * ISNULL(PLDT.PRICE,0), '#,#') AS TOTAL_AMT_NT, FORMAT(ISNULL(PLDT.TAXES,0), '#,#') AS TAXES, FORMAT(ISNULL(PLDT.EXCHANGE_RATE,1), '#,#') AS EXCHANGE_RATE, FORMAT(ISNULL(PLDT.QUANTITY,0) * ISNULL(PLDT.PRICE,0)+ISNULL(PLDT.TAXES,0), '#,#') AS TOTAL_AMT_TAX, FORMAT((ISNULL(PLDT.QUANTITY,0) * ISNULL(PLDT.PRICE,0)+ISNULL(PLDT.TAXES,0)) * ISNULL(PLDT.EXCHANGE_RATE,1), '#,#') AS TOTAL_AMT_EXC, CASE WHEN PLDT.TRADE_TYPE='VCCB' THEN N'Theo quy định của BVB' ELSE N'Chỉ định' END AS HTMS, PLDT.NAME AS REASON, CASE WHEN PLDT.TRADE_TYPE='VCCB' THEN '' ELSE CS.SUP_NAME END SUP_NAME, CG.GD_NAME FROM dbo.PL_REQUEST_DOC_DT PLDT LEFT JOIN dbo.CM_HANGHOA HH ON PLDT.HANGHOA_ID=HH.HH_ID LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=PLDT.GOODS_ID LEFT JOIN dbo.CM_UNIT CU ON CU.UNIT_ID=HH.UNIT_ID LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=PLDT.SUP_ID WHERE PLDT.REQ_ID=@P_REQ_ID --- THÔNG TIN HẠNG MỤC NGÂN SÁCH SELECT ROW_NUMBER() OVER (ORDER BY PLDT.TRADE_ID) AS STT ,ISNULL(CG.GD_NAME,LOG_DT.GOOD_NAME) AS GD_NAME,ISNULL(ISNULL(cd.DEP_NAME + ' - ','') + cb.BRANCH_NAME,'') AS BRANCH_NAME, FORMAT(ISNULL(PT.AMT_APP,0),'#,0') AS AMT_APP, FORMAT(ISNULL(PT.AMT_ETM,0) + ISNULL(PT.AMT_ETM_TMP,0),'#,0') AS AMT_ETM, --CASE WHEN (ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)-ISNULL(PT.AMT_TF,0) -ISNULL(PT.AMT_ETM,0)) < 0 THEN (ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)-ISNULL(PT.AMT_TF,0)-SUM(ISNULL(PLDT.TOTAL_AMT,0))) -- ELSE ISNULL(PT.AMT_ETM,0) END AS AMT_EXE, FORMAT(ISNULL(PT.AMT_RECEIVE_TF,0),'#,0') AS AMT_RECEIVE_TF, FORMAT(ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)- ISNULL(PT.AMT_TF,0)-ISNULL(PT.AMT_ETM,0) - ISNULL(PT.AMT_ETM_TMP,0),'#,0') AS AMT_REMAIN_ETM, --CASE WHEN (ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)-ISNULL(PT.AMT_TF,0)-ISNULL(PT.AMT_ETM,0)) < 0 THEN 0 ELSE (ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)-ISNULL(PT.AMT_TF,0)-ISNULL(PT.AMT_ETM,0)) END AS AMT_REMAIN, FORMAT(SUM(ISNULL(PLDT.TOTAL_AMT,0)),'#,0') AS TOTAL_AMT, FORMAT(ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)- ISNULL(PT.AMT_TF,0)-ISNULL(PT.AMT_ETM,0) - ISNULL(PT.AMT_ETM_TMP,0) -SUM(ISNULL(PLDT.TOTAL_AMT,0)),'#,0') AS TOTAL_AMT_ETM_FN, --CASE WHEN (ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)-ISNULL(PT.AMT_TF,0)-ISNULL(PT.AMT_ETM,0)) < 0 THEN 0 -- ELSE (ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)-ISNULL(PT.AMT_TF,0)-ISNULL(PT.AMT_ETM,0) -SUM(ISNULL(PLDT.TOTAL_AMT,0))) END AS TOTAL_AMT_FN, CASE WHEN PL.PROCESS_ID='APPROVE' THEN USC.TLFullName ELSE N'' END AS CHECKER_NAME, '' AS XN_NAME FROM dbo.PL_REQUEST_DOC_DT PLDT LEFT JOIN ( SELECT A.TRADE_ID, ISNULL(SUM(A.TOTAL_AMT),0) AS AMT_EXE FROM PL_REQUEST_DOC_DT A INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID AND B.AUTH_STATUS = 'A' WHERE A.REQ_ID <> @P_REQ_ID AND A.APPROVE_DT <= @APP_DATE AND A.TRADE_ID IN (SELECT TRADE_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @P_REQ_ID AND TRADE_ID IS NOT NULL AND TRADE_ID <> '' GROUP BY TRADE_ID) GROUP BY A.TRADE_ID ) AS TR_AMT ON TR_AMT.TRADE_ID = PLDT.TRADE_ID LEFT JOIN @listTRADE PT ON PT.TRADE_ID=PLDT.TRADE_ID LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PLDT.PLAN_ID LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=PLDT.GOODS_ID LEFT JOIN dbo.PL_IMPORT_DT LOG_DT ON LOG_DT.TRADE_ID=PLDT.TRADE_ID LEFT JOIN dbo.TL_USER USC ON USC.TLNANME=PLDT.CHECKER_ID LEFT JOIN dbo.PL_REQUEST_DOC PL ON PL.REQ_ID=PLDT.REQ_ID LEFT JOIN CM_BRANCH cb ON PM.BRANCH_ID = CB.BRANCH_ID LEFT JOIN CM_DEPARTMENT cd ON PM.DEPT_ID = cd.DEP_ID WHERE PLDT.REQ_ID=@P_REQ_ID GROUP BY PT.GOODS_ID,PT.AMT_APP,/*PT.AMT_EXE*/TR_AMT.AMT_EXE,PT.AMT_RECEIVE_TF,PT.AMT_TF,PT.AMT_ETM,CG.GD_NAME,PLDT.REQ_ID, USC.TLFullName,PL.PROCESS_ID,LOG_DT.GOOD_NAME, PLDT.TRADE_ID,PT.AMT_ETM_TMP,cd.DEP_NAME,cb.BRANCH_NAME ----- IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID ='APPNEW' AND STATUS ='P' AND CONVERT(DATE, APPROVE_DT,103) <='2022-9-1')) BEGIN SELECT ROW_NUMBER() OVER (ORDER BY PLTF.REQ_TRANSFER_ID ASC) AS STT, ISNULL(CGF.GD_NAME,LF_DT.GOOD_NAME) AS FR_GD_NAME, --CASE WHEN CB1.BRANCH_TYPE = 'HS' THEN ISNULL(CD1.DEP_NAME + ' - ' + CB1.BRANCH_NAME,'') ELSE ISNULL(CB1.BRANCH_NAME,'') END AS FR_BRANCH_NAME, ISNULL(AD1.DEP_NAME + ' - ','') + AC1.BRANCH_NAME AS FR_BRANCH_NAME, --- LUCTV 27.11.2022 DIEU CHINH CACH HIEN THI DON VI CHUYEN SẼ LAY THEO DON VI CHIU CHI PHI FORMAT(ISNULL(PTF.AMT_APP,0),'#,0') AS FR_AMT_APP, -- được duyệt (ngân sách trước khi điều chuyển) FORMAT(ISNULL(PTF.AMT_ETM,0),'#,0') AS FR_AMT_EXE, FORMAT(ISNULL(PTF.AMT_APP,0) + ISNULL(PTF.AMT_RECEIVE_TF,0)- ISNULL(PTF.AMT_TF,0)-ISNULL(PTF.AMT_ETM,0) - ISNULL(PTF.AMT_ETM_TMP,0),'#,0') AS FR_AMT_REMAIN_ETM, -- còn lại (ngân sách trước khi điều chuyển) ISNULL(CGT.GD_NAME,LT_DT.GOOD_NAME) AS TO_GD_NAME, --CASE WHEN CB2.BRANCH_TYPE = 'HS' THEN ISNULL(CD2.DEP_NAME + ' - ' + CB2.BRANCH_NAME,'') ELSE ISNULL(CB2.BRANCH_NAME,'') END AS TO_BRANCH_NAME, CASE WHEN ISNULL(PLTF.TO_TRADE_ID,'') <> '' THEN ISNULL(AD2.DEP_NAME + ' - ','') + AC2.BRANCH_NAME WHEN ISNULL(PLTF.TO_TRADE_ID,'') ='' THEN ISNULL(CD2.DEP_NAME + ' - ','') + CB2.BRANCH_NAME END AS TO_BRANCH_NAME, FORMAT(ISNULL(PTT.AMT_APP,0),'#,0') AS TO_AMT_APP, FORMAT(ISNULL(PTT.AMT_ETM,0),'#,0') AS TO_AMT_EXE, FORMAT(ISNULL(PTT.AMT_APP,0) + ISNULL(PTT.AMT_RECEIVE_TF,0)- ISNULL(PTT.AMT_TF,0)-ISNULL(PTT.AMT_ETM,0) - ISNULL(PTT.AMT_ETM_TMP,0),'#,0') AS TO_AMT_REMAIN_ETM, FORMAT(ISNULL(PLTF.TOTAL_AMT,0),'#,0') AS TOTAL_AMT, FORMAT(ISNULL(PTF.AMT_APP, 0) + ISNULL(PTF.AMT_RECEIVE_TF,0)-ISNULL(PTF.AMT_TF,0) - ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.FR_TRADE_ID=PLTF.FR_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0),'#,0') AS FR_AMT_APP_FINAL, FORMAT(ISNULL(PTF.AMT_APP,0) + ISNULL(PTF.AMT_RECEIVE_TF,0)- ISNULL(PTF.AMT_TF,0)-ISNULL(PTF.AMT_ETM,0) - ISNULL(PTF.AMT_ETM_TMP,0) - ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.FR_TRADE_ID=PLTF.FR_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0),'#,0') AS FR_AMT_REMAIN_ETM_FINAL, CASE WHEN ISNULL(PLTF.TO_TRADE_ID,'') <> '' THEN FORMAT(ISNULL(PTT.AMT_APP,0) + ISNULL(PTT.AMT_RECEIVE_TF,0)-ISNULL(PTT.AMT_TF,0)-ISNULL(PTT.AMT_ETM,0) + ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.TO_TRADE_ID=PLTF.TO_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0),'#,0') ELSE FORMAT(ISNULL(PLTF.TOTAL_AMT, 0),'#,0') END AS TO_AMT_APP_FINAL, CASE WHEN ISNULL(PLTF.TO_TRADE_ID,'') <> '' THEN ISNULL(PLDT.TOTAL_AMT, 0) ELSE PLDT.TOTAL_AMT END AS TOTAL_AMT_SIGN, -- Số tiền trình sử dụng CASE WHEN ISNULL(PLTF.TO_TRADE_ID,'') <> '' THEN FORMAT(ISNULL(PTT.AMT_APP,0) + ISNULL(PTT.AMT_RECEIVE_TF,0)- ISNULL(PTT.AMT_TF,0)-ISNULL(PTT.AMT_ETM,0) - ISNULL(PTT.AMT_ETM_TMP,0) + ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.TO_TRADE_ID=PLTF.TO_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0) --- ISNULL(PLTF.TOTAL_AMT, 0),'#,0') - ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT T WHERE T.TRADE_ID=PLTF.TO_TRADE_ID AND T.REQ_ID=PLTF.REQ_DOC_ID), 0),'#,0') -- LUCTV 1-11-2022 DOI CONG THUC TINH NGAN SACH CON LAI SAU KHI DIEU CHUYEN ELSE FORMAT(0,'#,0') END AS TOTAL_AMT_SIGN_FN, FORMAT(ISNULL(PTT.AMT_APP,0) + ISNULL(PTT.AMT_RECEIVE_TF,0)- ISNULL(PTT.AMT_TF,0)-ISNULL(PTT.AMT_ETM,0) - ISNULL(PTT.AMT_ETM_TMP,0) + ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.TO_TRADE_ID=PLTF.TO_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0),'#,0') AS TO_AMT_REMAIN_ETM_FINAL, PR.APPROVE_DT, US.TLFullName AS TC_NAME, CASE WHEN PL.PROCESS_ID='APPROVE' THEN USC.TLFullName ELSE N'' END AS CHECKER_NAME FROM dbo.PL_REQUEST_TRANSFER PLTF LEFT JOIN @listTRADE PTF ON PTF.TRADE_ID=PLTF.FR_TRADE_ID LEFT JOIN @listTRADE PTT ON PTT.TRADE_ID=PLTF.TO_TRADE_ID LEFT JOIN dbo.CM_GOODS CGF ON CGF.GD_ID=PLTF.FR_GOOD_ID LEFT JOIN dbo.CM_GOODS CGT ON CGT.GD_ID=PLTF.TO_GOOD_ID LEFT JOIN dbo.PL_IMPORT_DT LF_DT ON LF_DT.TRADE_ID=PLTF.FR_TRADE_ID LEFT JOIN dbo.PL_IMPORT_DT LT_DT ON LT_DT.TRADE_ID=PLTF.TO_TRADE_ID LEFT JOIN dbo.PL_REQUEST_PROCESS PR ON PR.REQ_ID=PLTF.REQ_DOC_ID AND PR.PROCESS_ID='TC' LEFT JOIN dbo.TL_USER US ON US .TLNANME=PR.CHECKER_ID LEFT JOIN dbo.TL_USER USC ON USC.TLNANME=PLTF.CHECKER_ID LEFT JOIN dbo.PL_REQUEST_DOC PL ON PL.REQ_ID=PLTF.REQ_DOC_ID LEFT JOIN CM_BRANCH cb1 ON cb1.BRANCH_ID = PLTF.FR_BRN_ID LEFT JOIN CM_DEPARTMENT cd1 ON cd1.DEP_ID = PLTF.FR_DEP_ID LEFT JOIN CM_BRANCH cb2 ON cb2.BRANCH_ID = PLTF.TO_BRN_ID LEFT JOIN CM_DEPARTMENT cd2 ON cd2.DEP_ID = PLTF.TO_DEP_ID LEFT JOIN dbo.PL_MASTER FPM ON FPM.PLAN_ID = PLTF.FR_PLAN_ID LEFT JOIN dbo.PL_MASTER TPM ON TPM.PLAN_ID = PLTF.TO_PLAN_ID LEFT JOIN CM_BRANCH AC1 ON AC1.BRANCH_ID = FPM.BRANCH_ID LEFT JOIN CM_DEPARTMENT AD1 ON AD1.DEP_ID = FPM.DEPT_ID LEFT JOIN CM_BRANCH AC2 ON AC2.BRANCH_ID = TPM.BRANCH_ID LEFT JOIN CM_DEPARTMENT AD2 ON AD2.DEP_ID = TPM.DEPT_ID LEFT JOIN ( SELECT GOODS_ID,REQ_ID, TRADE_ID, SUM(TOTAL_AMT) AS TOTAL_AMT FROM ---LUCTV: 02082022 BO SUNG GROUP BY THEO TRADE_ID dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID GROUP BY GOODS_ID,REQ_ID,TRADE_ID ) PLDT ON PLDT.REQ_ID = PL.REQ_ID AND PLDT.GOODS_ID = PLTF.TO_GOOD_ID AND PLDT.TRADE_ID =PLTF.TO_TRADE_ID WHERE PLTF.REQ_DOC_ID=@P_REQ_ID END ELSE --- NGƯỢC LẠI SAU NGÀY 1-9 BEGIN --Điều chuyển ngân sách SELECT ROW_NUMBER() OVER (ORDER BY PLTF.REQ_TRANSFER_ID ASC) AS STT, ISNULL(CGF.GD_NAME,LF_DT.GOOD_NAME) AS FR_GD_NAME, --CASE WHEN CB1.BRANCH_TYPE = 'HS' THEN ISNULL(CD1.DEP_NAME + ' - ' + CB1.BRANCH_NAME,'') ELSE ISNULL(CB1.BRANCH_NAME,'') END AS FR_BRANCH_NAME, ISNULL(AD1.DEP_NAME + ' - ','') + AC1.BRANCH_NAME AS FR_BRANCH_NAME, --- LUCTV 27.11.2022 DIEU CHINH CACH HIEN THI DON VI CHUYEN SẼ LAY THEO DON VI CHIU CHI PHI FORMAT(ISNULL(PLTF.FR_AMT_APP,0),'#,0') AS FR_AMT_APP, -- được duyệt (ngân sách trước khi điều chuyển) FORMAT(ISNULL(PLTF.FR_AMT_ETM,0),'#,0') AS FR_AMT_EXE, FORMAT(ISNULL(PLTF.FR_AMT_APP,0) + ISNULL(PLTF.FR_AMT_RECEIVE_TF,0)- ISNULL(PLTF.FR_AMT_TF,0)-ISNULL(PLTF.FR_AMT_ETM,0) -ISNULL(PLTF.FR_AMT_ETM_TMP,0),'#,0') AS FR_AMT_REMAIN_ETM, -- còn lại (ngân sách trước khi điều chuyển) FORMAT(ISNULL(PLTF.FR_AMT_APP,0) + ISNULL(PLTF.FR_AMT_RECEIVE_TF,0)- ISNULL(PLTF.FR_AMT_TF,0)-ISNULL(PLTF.FR_AMT_ETM,0) -ISNULL(PLTF.FR_AMT_ETM_TMP,0) - ISNULL(PLTF.TOTAL_AMT,0),'#,0') AS FR_AMT_REMAIN_ETM_FINAL, ISNULL(CGT.GD_NAME,LT_DT.GOOD_NAME) AS TO_GD_NAME, --CASE WHEN CB2.BRANCH_TYPE = 'HS' THEN ISNULL(CD2.DEP_NAME + ' - ' + CB2.BRANCH_NAME,'') ELSE ISNULL(CB2.BRANCH_NAME,'') END AS TO_BRANCH_NAME, CASE WHEN ISNULL(PLTF.TO_TRADE_ID,'') <> '' THEN ISNULL(AD2.DEP_NAME + ' - ','') + AC2.BRANCH_NAME WHEN ISNULL(PLTF.TO_TRADE_ID,'') ='' THEN ISNULL(CD2.DEP_NAME + ' - ','') + CB2.BRANCH_NAME END AS TO_BRANCH_NAME, FORMAT(ISNULL(PLTF.TO_AMT_APP,0),'#,0') AS TO_AMT_APP, FORMAT(ISNULL(PLTF.TO_AMT_ETM,0),'#,0') AS TO_AMT_EXE, FORMAT(ISNULL(PLTF.TO_AMT_APP,0) + ISNULL(PLTF.TO_AMT_RECEIVE_TF,0)- ISNULL(PLTF.TO_AMT_TF,0)-ISNULL(PLTF.TO_AMT_ETM,0) -ISNULL(PLTF.TO_AMT_ETM_TMP,0),'#,0') AS TO_AMT_REMAIN_ETM, -- NS NHẬN TRƯỚC KHI NHẬN TIỀN FORMAT(ISNULL(PLTF.TO_AMT_APP,0) + ISNULL(PLTF.TO_AMT_RECEIVE_TF,0)- ISNULL(PLTF.TO_AMT_TF,0)-ISNULL(PLTF.TO_AMT_ETM,0) -ISNULL(PLTF.TO_AMT_ETM_TMP,0) +ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.TO_TRADE_ID=PLTF.TO_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0),'#,0') AS TO_AMT_REMAIN_ETM_FINAL, FORMAT(ISNULL(PLTF.TOTAL_AMT,0),'#,0') AS TOTAL_AMT, FORMAT(ISNULL(PLTF.FR_AMT_FINAL,0),'#,0') AS FR_AMT_APP_FINAL, FORMAT(ISNULL(PLTF.TO_AMT_FINAL,0),'#,0') AS TO_AMT_APP_FINAL, CASE WHEN ISNULL(PLTF.TO_TRADE_ID,'') <> '' THEN ISNULL(PLDT.TOTAL_AMT, 0) ELSE PLDT.TOTAL_AMT END AS TOTAL_AMT_SIGN, -- Số tiền trình sử dụng FORMAT(ISNULL(PLTF.TO_AMT_APP,0) + ISNULL(PLTF.TO_AMT_RECEIVE_TF,0)- ISNULL(PLTF.TO_AMT_TF,0) -ISNULL(PLTF.TO_AMT_ETM,0) -ISNULL(PLTF.TO_AMT_ETM_TMP,0) +ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.TO_TRADE_ID=PLTF.TO_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0) -CASE WHEN ISNULL(PLTF.TO_TRADE_ID,'') <> '' THEN ISNULL(PLDT.TOTAL_AMT, 0) ELSE PLDT.TOTAL_AMT END,'#,0') AS TOTAL_AMT_SIGN_FN, PR.APPROVE_DT, US.TLFullName AS TC_NAME, CASE WHEN PL.PROCESS_ID='APPROVE' THEN USC.TLFullName ELSE N'' END AS CHECKER_NAME FROM dbo.PL_REQUEST_TRANSFER PLTF --LEFT JOIN @listTRADE PTF ON PTF.TRADE_ID=PLTF.FR_TRADE_ID --LEFT JOIN @listTRADE PTT ON PTT.TRADE_ID=PLTF.TO_TRADE_ID LEFT JOIN dbo.CM_GOODS CGF ON CGF.GD_ID=PLTF.FR_GOOD_ID LEFT JOIN dbo.CM_GOODS CGT ON CGT.GD_ID=PLTF.TO_GOOD_ID LEFT JOIN dbo.PL_IMPORT_DT LF_DT ON LF_DT.TRADE_ID=PLTF.FR_TRADE_ID LEFT JOIN dbo.PL_IMPORT_DT LT_DT ON LT_DT.TRADE_ID=PLTF.TO_TRADE_ID LEFT JOIN dbo.PL_REQUEST_PROCESS PR ON PR.REQ_ID=PLTF.REQ_DOC_ID AND PR.PROCESS_ID='TC' LEFT JOIN dbo.TL_USER US ON US .TLNANME=PR.CHECKER_ID LEFT JOIN dbo.TL_USER USC ON USC.TLNANME=PLTF.CHECKER_ID LEFT JOIN dbo.PL_REQUEST_DOC PL ON PL.REQ_ID=PLTF.REQ_DOC_ID LEFT JOIN CM_BRANCH cb1 ON cb1.BRANCH_ID = PLTF.FR_BRN_ID LEFT JOIN CM_DEPARTMENT cd1 ON cd1.DEP_ID = PLTF.FR_DEP_ID LEFT JOIN CM_BRANCH cb2 ON cb2.BRANCH_ID = PLTF.TO_BRN_ID LEFT JOIN CM_DEPARTMENT cd2 ON cd2.DEP_ID = PLTF.TO_DEP_ID LEFT JOIN dbo.PL_MASTER FPM ON FPM.PLAN_ID = PLTF.FR_PLAN_ID LEFT JOIN dbo.PL_MASTER TPM ON TPM.PLAN_ID = PLTF.TO_PLAN_ID LEFT JOIN CM_BRANCH AC1 ON AC1.BRANCH_ID = FPM.BRANCH_ID LEFT JOIN CM_DEPARTMENT AD1 ON AD1.DEP_ID = FPM.DEPT_ID LEFT JOIN CM_BRANCH AC2 ON AC2.BRANCH_ID = TPM.BRANCH_ID LEFT JOIN CM_DEPARTMENT AD2 ON AD2.DEP_ID = TPM.DEPT_ID LEFT JOIN ( SELECT GOODS_ID,REQ_ID, TRADE_ID, SUM(TOTAL_AMT) AS TOTAL_AMT FROM ---LUCTV: 02082022 BO SUNG GROUP BY THEO TRADE_ID dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID GROUP BY GOODS_ID,REQ_ID,TRADE_ID ) PLDT ON PLDT.REQ_ID = PL.REQ_ID AND PLDT.GOODS_ID = PLTF.TO_GOOD_ID AND PLDT.TRADE_ID =PLTF.TO_TRADE_ID WHERE PLTF.REQ_DOC_ID=@P_REQ_ID END DECLARE @TABLE TABLE(ID INT, POS_NAME NVARCHAR(100)) INSERT INTO @TABLE SELECT F1.ID , '- ' + ca.CONTENT + ISNULL(' '+ cd.DVDM_NAME,'') + ';' AS NAME FROM PL_REQUEST_PROCESS F1 --LEFT JOIN TL_USER F2 ON F1.CHECKER_ID = F2.TLNANME LEFT JOIN CM_ALLCODE ca ON ca.CDNAME = 'PROCESS_ID' AND ca.CDTYPE = 'REQ' AND ca.CDVAL = F1.ROLE_USER LEFT JOIN CM_DVDM cd ON F1.DVDM_ID = cd.DVDM_ID AND cd.IS_KHOI = 1 --LEFT JOIN CM_EMPLOYEE_LOG F3 ON F3.USER_DOMAIN = F2.TLNANME WHERE (1=1) AND F1.REQ_ID = @P_REQ_ID AND F1.ROLE_USER in ('HDQT', 'TGD', 'PTGD', 'GDK') AND ((F1.STATUS='C' AND F1.PROCESS_ID <>'APPROVE') OR (F1.PROCESS_ID = (SELECT T.PARENT_PROCESS_ID FROM dbo.PL_REQUEST_PROCESS T WHERE T.REQ_ID=@P_REQ_ID AND T.PROCESS_ID='APPROVE' AND T.STATUS='C'))) UPDATE @TABLE SET POS_NAME = REPLACE(POS_NAME,';','.') WHERE POS_NAME =(SELECT TOP 1 POS_NAME AS NAME FROM @TABLE ORDER BY POS_NAME DESC) SELECT POS_NAME AS NAME FROM @TABLE ORDER BY ID DESC SELECT NULL --SELECT ROW_NUMBER() OVER (ORDER BY CGF.GD_NAME) AS STT ,CGF.GD_NAME AS GD_NAME_ADD, --ISNULL(PTF.AMT_APP,0) AS FR_AMT_APP_ADD, --ISNULL(PTF.AMT_EXE,0) AS FR_AMT_EXE_ADD, --ISNULL(PTF.AMT_APP,0)-ISNULL(PTF.AMT_EXE,0) AS FR_AMT_REMAIN_ADD, --ISNULL(PTT.AMT_APP,0) AS TO_AMT_APP_ADD, --ISNULL(PTT.AMT_EXE,0) AS TO_AMT_EXE_ADD, --ISNULL(PTT.AMT_APP,0)-ISNULL(PTT.AMT_EXE,0) AS TO_AMT_REMAIN_ADD, --ISNULL(PLTF.TOTAL_AMT,0) AS TOTAL_AMT_ADD, --PR.APPROVE_DT, --US.TLFullName AS TC_NAME, --CASE -- WHEN PL.PROCESS_ID='APPROVE' THEN USC.TLFullName -- ELSE N'' --END AS CHECKER_NAME --FROM dbo.PL_REQUEST_TRANSFER PLTF --LEFT JOIN dbo.PL_TRADEDETAIL PTF ON PTF.TRADE_ID=PLTF.FR_TRADE_ID --LEFT JOIN dbo.PL_TRADEDETAIL PTT ON PTT.TRADE_ID=PLTF.TO_TRADE_ID --LEFT JOIN dbo.CM_GOODS CGF ON CGF.GD_ID=PLTF.FR_GOOD_ID --LEFT JOIN dbo.CM_GOODS CGT ON CGT.GD_ID=PLTF.TO_GOOD_ID --LEFT JOIN dbo.PL_REQUEST_PROCESS PR ON PR.REQ_ID=PLTF.REQ_DOC_ID AND PR.PROCESS_ID='TC' --LEFT JOIN dbo.TL_USER US ON US .TLNANME=PR.CHECKER_ID --LEFT JOIN dbo.TL_USER USC ON USC.TLNANME=PLTF.CHECKER_ID --LEFT JOIN dbo.PL_REQUEST_DOC PL ON PL.REQ_ID=PLTF.REQ_DOC_ID --WHERE PLTF.REQ_DOC_ID=@P_REQ_ID -- LAY THONG TIN CAP PHE DUYET IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @P_REQ_ID )) BEGIN DECLARE @TABLE_RETURN_05 TABLE (APPR NVARCHAR(250),APPR1 NVARCHAR(250),APPR2 NVARCHAR(250),APPR3 NVARCHAR(250)) DECLARE @APPR VARCHAR(15),@APPR1 VARCHAR(15),@APPR2 VARCHAR(15),@APPR3 VARCHAR(15) DECLARE @POS NVARCHAR(50),@POS1 NVARCHAR(50),@POS2 NVARCHAR(50),@POS3 NVARCHAR(50) DECLARE @DATE NVARCHAR(50),@DATE1 NVARCHAR(50),@DATE2 NVARCHAR(50),@DATE3 NVARCHAR(50) IF((SELECT COUNT(*) FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='GDK' AND CHECKER_ID IS NOT NULL AND CHECKER_ID <>'' AND REQ_ID =@P_REQ_ID) =1) BEGIN IF((SELECT COUNT(*) FROM PL_REQUEST_PROCESS WHERE ROLE_USER ='PTGD' AND CHECKER_ID IS NOT NULL AND CHECKER_ID <>'' AND REQ_ID =@P_REQ_ID) =1) BEGIN SET @APPR =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME WHERE A.REQ_ID= @P_REQ_ID AND A.ROLE_USER ='GDK' ) SET @POS =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR) SET @DATE =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME WHERE A.REQ_ID= @P_REQ_ID AND A.ROLE_USER ='GDK') SET @APPR1 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.ROLE_USER ='PTGD' WHERE A.REQ_ID= @P_REQ_ID) SET @POS1 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR1) SET @DATE1 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.ROLE_USER ='PTGD' WHERE A.REQ_ID= @P_REQ_ID) SET @APPR2 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND B.RoleName ='TGD' AND A.ROLE_USER ='TGD' WHERE A.REQ_ID= @P_REQ_ID AND 1> 2) SET @POS2 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR2) SET @DATE2 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND B.RoleName ='TGD' WHERE A.REQ_ID= @P_REQ_ID AND 1 > 2) SET @APPR3 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND B.RoleName ='HDQT' AND A.ROLE_USER ='HDQT' WHERE A.REQ_ID= @P_REQ_ID AND 1> 2) SET @POS3 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR3) SET @DATE3 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND B.RoleName ='HDQT' WHERE A.REQ_ID= @P_REQ_ID AND 1> 2) END ELSE BEGIN SET @APPR =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME WHERE A.REQ_ID= @P_REQ_ID AND A.ROLE_USER ='GDK' ) SET @POS =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR) SET @DATE =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME WHERE A.REQ_ID= @P_REQ_ID AND A.ROLE_USER ='GDK') SET @APPR1 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.ROLE_USER ='PTGD' WHERE A.REQ_ID= @P_REQ_ID) SET @POS1 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR1) SET @DATE1 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.ROLE_USER='PTGD' WHERE A.REQ_ID= @P_REQ_ID) SET @APPR2 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.ROLE_USER ='PTGD' AND A.CHECKER_ID <>@APPR1 WHERE A.REQ_ID= @P_REQ_ID) SET @POS2 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR2) SET @DATE2 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.ROLE_USER ='PTGD' AND A.CHECKER_ID <>@APPR1 WHERE A.REQ_ID= @P_REQ_ID) SET @APPR3 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND B.RoleName ='TGD' AND A.ROLE_USER ='TGD' WHERE A.REQ_ID= @P_REQ_ID AND 1> 2) SET @POS3 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR3) SET @DATE3 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND B.RoleName ='TGD' WHERE A.REQ_ID= @P_REQ_ID AND 1> 2) END BEGIN INSERT INTO @TABLE_RETURN_05 VALUES ( (SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR), (SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR1), (SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR2), (SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR3) ) INSERT INTO @TABLE_RETURN_05 VALUES (@POS,@POS1,@POS2,@POS3) INSERT INTO @TABLE_RETURN_05 VALUES ((CASE WHEN @DATE IS NOT NULL AND @DATE <>'' THEN N'Đã chấp thuận lúc: '+@DATE ELSE '' END), (CASE WHEN @DATE1 IS NOT NULL AND @DATE1 <>'' THEN N'Đã chấp thuận lúc: '+@DATE1 ELSE '' END), (CASE WHEN @DATE2 IS NOT NULL AND @DATE2 <>'' THEN N'Đã chấp thuận lúc: '+@DATE2 ELSE '' END), (CASE WHEN @DATE3 IS NOT NULL AND @DATE3 <>'' THEN N'Đã chấp thuận lúc: '+@DATE3 ELSE '' END)) END END ELSE BEGIN SET @APPR =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME WHERE A.REQ_ID= @P_REQ_ID AND A.ROLE_USER ='GDK' ) SET @POS =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR) SET @DATE =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME WHERE A.REQ_ID= @P_REQ_ID AND A.ROLE_USER ='GDK') -- VAN CON LA GDK SET @APPR1 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.CHECKER_ID <> @APPR WHERE A.REQ_ID= @P_REQ_ID AND A.ROLE_USER ='GDK') SET @POS1 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR1) SET @DATE1 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.CHECKER_ID <> @APPR WHERE A.REQ_ID= @P_REQ_ID AND A.ROLE_USER ='GDK') -- PHO TONG --SET @APPR1 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND B.RoleName ='PTGD' AND A.ROLE_USER ='PTGD' --WHERE A.REQ_ID= @P_REQ_ID) --SET @POS1 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR1) --SET @DATE1 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND B.RoleName ='PTGD' --WHERE A.REQ_ID= @P_REQ_ID) SET @APPR2 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.ROLE_USER ='PTGD' WHERE A.REQ_ID= @P_REQ_ID) SET @POS2 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR2) SET @DATE2 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.ROLE_USER ='PTGD' WHERE A.REQ_ID= @P_REQ_ID) --SET @APPR3 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND B.RoleName ='TGD' AND A.ROLE_USER ='TGD' --WHERE A.REQ_ID= @P_REQ_ID AND 1> 2) --SET @POS3 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR3) --SET @DATE3 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A --INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND B.RoleName ='TGD' --WHERE A.REQ_ID= @P_REQ_ID AND 1 > 2) --- LUCTV: 20211012 BO SUN CHU KY GDK TAI CHINH SET @APPR3 =(SELECT TOP 1 A. CHECKER_ID FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.CHECKER_ID ='nhalc' AND A.CHECKER_ID NOT IN (@APPR, @APPR1) WHERE A.REQ_ID= @P_REQ_ID) SET @POS3 =(SELECT TOP 1 POS_NAME FROM CM_EMPLOYEE_LOG WHERE USER_DOMAIN =@APPR3) SET @DATE3 =(SELECT TOP 1 ISNULL( FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_REQUEST_PROCESS A INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME AND A.CHECKER_ID ='nhalc' AND A.CHECKER_ID NOT IN (@APPR, @APPR1) WHERE A.REQ_ID= @P_REQ_ID) BEGIN INSERT INTO @TABLE_RETURN_05 VALUES ( (SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR), (SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR1), (SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR2), (SELECT TLFULLNAME FROM TL_USER WHERE TLNANME = @APPR3) ) INSERT INTO @TABLE_RETURN_05 VALUES (@POS,@POS1,@POS2,@POS3) INSERT INTO @TABLE_RETURN_05 VALUES ((CASE WHEN @DATE IS NOT NULL AND @DATE <>'' THEN N'Đã chấp thuận lúc: '+@DATE ELSE '' END), (CASE WHEN @DATE1 IS NOT NULL AND @DATE1 <>'' THEN N'Đã chấp thuận lúc: '+@DATE1 ELSE '' END), (CASE WHEN @DATE2 IS NOT NULL AND @DATE2 <>'' THEN N'Đã chấp thuận lúc: '+@DATE2 ELSE '' END), (CASE WHEN @DATE3 IS NOT NULL AND @DATE3 <>'' THEN N'Đã chấp thuận lúc: '+@DATE3 ELSE '' END)) END END END SELECT * FROM @TABLE_RETURN_05 GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_COSTCENTER_Upd]' GO ALTER PROCEDURE [dbo].[PL_COSTCENTER_Upd] @p_COST_ID VARCHAR(15)=NULL, @p_COST_CODE varchar(15) = NULL, @p_COST_NAME NVARCHAR(300) = NULL, @p_PLAN_TYPE_ID varchar(15) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(20) = NULL, @p_EDIT_DT DATETIME = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(20) = NULL, @p_APPROVE_DT DATETIME = NULL, @p_XMLData XML=NULL AS BEGIN TRANSACTION --Validation is here --DECLARE @ERRORSYS NVARCHAR(15) = '' -- IF ( EXISTS ( SELECT * FROM dbo.PL_COSTCENTER WHERE COST_CODE =@p_COST_CODE AND COST_ID<>@p_COST_ID)) -- SET @ERRORSYS = 'CODE-0001' --IF @ERRORSYS <> '' --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, @p_COST_ID COST_ID, N'Mã đơn vị đầu mối :' +@p_COST_ID+ N' đã tồn tại trong hệ thống' ErrorDesc -- RETURN '-1' --END DECLARE @DVDM_ID VARCHAR(20), @KHOI_ID VARCHAR(15) SET @DVDM_ID = (SELECT TOP(1) cd.DVDM_ID FROM CM_DVDM cd WHERE cd.DVDM_CODE =@p_COST_CODE AND cd.IS_DVDM=1) UPDATE dbo.PL_COSTCENTER SET COST_CODE=@p_COST_CODE, [PLAN_TYPE_ID] = @p_PLAN_TYPE_ID, [COST_NAME] = @p_COST_NAME, [NOTES] = @p_NOTES, [RECORD_STATUS] = @p_RECORD_STATUS, [EDITER_ID] = @p_MAKER_ID, [EDIT_DT] = CONVERT(DATETIME, @p_EDIT_DT, 103), [AUTH_STATUS] = @p_AUTH_STATUS, [CHECKER_ID] = @p_CHECKER_ID, [APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103), DVDM_ID =@DVDM_ID WHERE COST_ID = @p_COST_ID IF @@Error <> 0 GOTO ABORT Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output, @p_XMLData DECLARE CostDT CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/COSTDT',2) WITH ( BRANCH_ID VARCHAR(15), DEP_ID varchar(15), NOTES NVARCHAR(1000) ) OPEN CostDT DECLARE @BRANCH_ID VARCHAR(15),@DEP_ID varchar(15),@NOTES NVARCHAR(1000) DELETE FROM dbo.PL_COSTCENTER_DT WHERE COST_ID=@p_COST_ID FETCH NEXT FROM CostDT INTO @BRANCH_ID, @DEP_ID,@NOTES WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_COSTDT_ID VARCHAR(20) EXEC SYS_CodeMasters_Gen 'PL_COSTCENTER_DT', @l_COSTDT_ID out IF @l_COSTDT_ID='' OR @l_COSTDT_ID IS NULL GOTO ABORT INSERT INTO dbo.PL_COSTCENTER_DT ( COSTDT_ID, COST_ID, BRANCH_ID, DEP_ID, NOTES, RECORD_STATUS, MAKER_ID, CREATE_DT ) VALUES ( @l_COSTDT_ID, -- COSTDT_ID - varchar(20) @p_COST_ID, -- COST_ID - varchar(20) @BRANCH_ID, -- BRANCH_ID - varchar(15) @DEP_ID, -- DEP_ID - varchar(15) @NOTES, -- NOTES - nvarchar(1000) '1', -- RECORD_STATUS - varchar(1) @p_MAKER_ID, -- MAKER_ID - varchar(15) @p_EDIT_DT -- CREATE_DT - datetime ) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM CostDT INTO @BRANCH_ID, @DEP_ID,@NOTES PRINT @l_COSTDT_ID END CLOSE CostDT DEALLOCATE CostDT COMMIT TRANSACTION SELECT '0' as Result, @p_COST_ID COST_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' COST_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAYMENT_Ins]' GO ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Ins] @p_REQ_PAY_ID varchar(15)= NULL, @p_REQ_PAY_CODE varchar(50) = NULL, @p_REQ_DT VARCHAR(20)= NULL, @p_BRANCH_ID varchar(15) = NULL, @p_DEP_ID varchar(15) = NULL, @p_REQ_REASON nvarchar(MAX) = NULL, @p_REQ_TYPE varchar(15) = NULL, @P_REQ_ENTRIES nvarchar(MAX) = NULL, @p_REQ_DESCRIPTION nvarchar(MAX) = NULL, @p_REF_ID varchar(15) = NULL, @p_RECEIVER_PO nvarchar(250) = NULL, @p_REQ_PAY_TYPE varchar(15) = NULL, @p_REQ_TYPE_CURRENCY nvarchar(50) = NULL, @p_REQ_AMT decimal(18, 2) = NULL, @p_REQ_TEMP_AMT decimal(18, 0) = NULL, @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT varchar(25) = NULL, @p_EDITOR_ID varchar(15) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT varchar(25) = NULL, @p_CREATE_DT_KT varchar(25) = NULL, @p_MAKER_ID_KT varchar(15) = NULL, @p_AUTH_STATUS_KT varchar(1) = NULL, @p_CHECKER_ID_KT varchar(1) = NULL, @p_APPROVE_DT_KT varchar(25)= null, @p_CONFIRM_NOTE nvarchar(500) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_NOTES varchar(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_TRANSFER_MAKER nvarchar(50) = NULL, @p_TRANSFER_DT varchar(25) = NULL, @p_TRASFER_USER_RECIVE varchar(15) = NULL, @p_PROCESS varchar(15) = NULL, @p_PAY_PHASE NVARCHAR(255) = NULL, @p_RATE DECIMAL(18,2) = 0, @p_IS_PERIOD VARCHAR(5) = NULL, @p_TYPE_FUNCTION VARCHAR(15) = NULL, @p_AMT_PAY decimal(18, 0) = NULL, @p_XMP_TEMP XML = NULL, @p_XMP_TEMP_2 XML = NULL, @p_XMP_TEMP_METHOD XML = NULL, @p_XMP_TEMP_BUDGET XML = NULL, @p_XMP_TEMP_SERVICE XML = NULL, @p_XMP_TEMP_ATTACH XML = NULL, @p_XMP_TEMP_INVOICE XML = NULL, @p_XMP_TEMP_PO XML = NULL, @p_XMP_TEMP_SCHEDULE XML = NULL, @p_XMP_TEMP_PERIOD XML = NULL, @p_XMP_ADVANCE_DT XML = NULL, --doanptt 15/02/2022 @p_XMP_TEMP_PAY_JOB XML = NULL, @p_XMP_TEMP_PAY_JOB_DT XML = NULL, --doanptt 17/02/2022 @p_XMP_TEMP_PAY_DRIVE XML = NULL, @p_XMP_TEMP_PAY_DRIVE_DT XML = NULL AS BEGIN TRANSACTION DECLARE @ROLE_KI_NHAY VARCHAR(50) SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE) IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC')) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_PAY_ID, @p_REQ_PAY_CODE AS REQ_PAY_CODE, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc RETURN '-1' END 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(500) = NULL,@TAX_NO NVARCHAR(15) = NULL,@GOODS_NAME NVARCHAR(500) = NULL, @PRICE DECIMAL(18, 0) = NULL,@TAX DECIMAL(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE DECIMAL(18,2), @REF_ID VARCHAR(15),@IS_CLOSED VARCHAR(1), @ACC_NO VARCHAR(25),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250),@ISSUED_DT VARCHAR(20),@CURRENCY VARCHAR(15)= NULL,@RATE DECIMAL(18,2),@TYPE_TRANSFER VARCHAR(15), @TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15),@REASON NVARCHAR(1000),@REF_TYPE VARCHAR(15), @TRN_DATE VARCHAR(15), @PAY_ADV_ID VARCHAR(15), @REQ_PAY_ADV_CODE VARCHAR(15), @AMT_ADVANCED DECIMAL(18,2),@AMT_DO DECIMAL(18,2), @AMT_REMAIN DECIMAL(18,2),@AMT_PAY DECIMAL(18,2), @AMT_USE DECIMAL(18,2),@AMT_REVERT DECIMAL(18,2), @AMT_ADD DECIMAL(18,2), @TOTAL_SCHEDULE_AMT DECIMAL(18,2) =0, @INDEX_PO INT =0, @INDEX_AD INT =0, @INDEX_IV INT=0, @INDEX_NS INT =0, @INDEX_INVOICE INT = 0, @TYPE_COST VARCHAR(15), @FR_LEVEL INT ,@TO_LEVEL INT DECLARE @hdoc INT, @hDoc2 INT, @hDocMeThod INT, @hdocBudget INT, @hdocService INT, @hdocAttach INT, @hdocInvoice INT, @hdocPO INT, @hdocSchedule INT, @hdocPeriod INT, @hdocRecurring INT, @hdocJob INT, @hdocJobDT INT, @hdocDrive INT, @hdocDriveDT INT EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP; -- THONG TIN PHIEU DE NGHI TAM UNG EXEC sp_xml_preparedocument @hDoc2 OUTPUT, @p_XMP_TEMP_2; -- THONG TIN PHUONG THUC THANH TOAN EXEC sp_xml_preparedocument @hDocMeThod OUTPUT, @p_XMP_TEMP_METHOD; -- THONG TIN HANG MUC NGAN SACH VA CHI PHI EXEC sp_xml_preparedocument @hdocBudget OUTPUT, @p_XMP_TEMP_BUDGET; -- THONG TIN CAC DICH VU THANH TOAN EXEC sp_xml_preparedocument @hdocService OUTPUT, @p_XMP_TEMP_SERVICE; -- THONG TIN HOP DONG, CHUNG TU DINH KEM EXEC sp_xml_preparedocument @hdocAttach OUTPUT, @p_XMP_TEMP_ATTACH; -- THONG TIN HOA DON DINH KEM EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE; -- THONG TIN PO/ HOP DONG EXEC sp_xml_preparedocument @hdocPO OUTPUT, @p_XMP_TEMP_PO; -- THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG EXEC sp_xml_preparedocument @hdocSchedule OUTPUT, @p_XMP_TEMP_SCHEDULE; -- THONG TIN HOP DONG DINH KY EXEC sp_xml_preparedocument @hdocRecurring OUTPUT, @p_XMP_ADVANCE_DT; -- THONG TIN DINH KY TAM UNG EXEC sp_xml_preparedocument @hdocPeriod OUTPUT, @p_XMP_TEMP_PERIOD; -- THONG TIN THANH TOAN CHI PHI DI CONG TAC EXEC sp_xml_preparedocument @hdocJob OUTPUT, @p_XMP_TEMP_PAY_JOB; -- CHI TIET CHI PHI DI CONG TAC EXEC sp_xml_preparedocument @hdocJobDT OUTPUT, @p_XMP_TEMP_PAY_JOB_DT; -- THONG TIN THANH TOAN CHI PHI VAN HANH XE EXEC sp_xml_preparedocument @hdocDrive OUTPUT, @p_XMP_TEMP_PAY_DRIVE; -- BANG KE CHI PHI SU DUNG NHIEN LIEU EXEC sp_xml_preparedocument @hdocDriveDT OUTPUT, @p_XMP_TEMP_PAY_DRIVE_DT; -- BEGIN VALIDATE CAC DANH SACH /* IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='N' AND NOT EXISTS(SELECT * FROM OPENXML(@hdocPO, '/Root/XmlDataPO', 2) WITH(REQ_PAY_ID varchar(15)))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách PO/ hợp đồng không được để trống' ErrorDesc RETURN '-1' END IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='N' AND NOT EXISTS(SELECT * FROM OPENXML(@hdocSchedule, '/Root/XmlDataSchedule', 2) WITH(REQ_PAY_ID varchar(15)))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin chi tiết lịch thanh toán PO/ hợp đồng không được để trống' ErrorDesc RETURN '-1' END IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD='Y' OR @p_IS_PERIOD IS NULL) AND NOT EXISTS(SELECT * FROM OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2) WITH(REQ_PAY_ID varchar(15)))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin hợp đồng định kì không được phép để trống' ErrorDesc RETURN '-1' END IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD='Y' OR @p_IS_PERIOD IS NULL) AND NOT EXISTS(SELECT * FROM OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2) WITH(REQ_PAY_ID varchar(15)))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin định kỳ tạm ứng không được phép để trống' ErrorDesc RETURN '-1' END */ -- END VALIDATE CAC DANH SACH DECLARE @REQ_PAY_SERVICE_NAME nvarchar(100),@RECEIVE_ID_SERVICE varchar(15),@RECEIVE_NAME_SERVICE nvarchar(100),@REQ_PAY_REASON_SERVICE nvarchar(MAX), @TOTAL_AMT_SERVICE decimal(18,2), @REQ_PAY_TYPE_SERVICE varchar(1),@REQ_PAY_DESC_SERVICE nvarchar(MAX),@REQ_PAY_ENTRIES_SERVICE nvarchar(MAX),@DEPT_ID_SRV VARCHAR(15) DECLARE XmlDataService CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocService, 'Root/XmlDataService',2) WITH(REQ_PAY_SERVICE_NAME nvarchar(100),RECEIVE_ID_SERVICE varchar(15),RECEIVE_NAME_SERVICE nvarchar(100),REQ_PAY_REASON_SERVICE nvarchar(MAX), TOTAL_AMT_SERVICE decimal(18,2),REQ_PAY_TYPE_SERVICE varchar(1),REQ_PAY_DESC_SERVICE nvarchar(MAX),REQ_PAY_ENTRIES_SERVICE nvarchar(MAX), DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2)) OPEN XmlDataService --THIEUVQ 281119--- -- GEN MA SO PHIEU TU DONG EXEC [dbo].[PAY_CODE_GenKey] 'TR_REQ_PAYMENT', '','', @p_REQ_PAY_CODE out DECLARE @INDEX INT = 0 IF (@p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_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 WHERE REQ_PAY_CODE = @p_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', @p_REQ_PAY_ID out IF @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL GOTO ABORT INSERT INTO [dbo].[TR_REQ_PAYMENT] ([REQ_PAY_ID] ,[REQ_PAY_CODE],[REQ_DT] ,[BRANCH_ID] ,[DEP_ID] ,[REQ_REASON] ,[REQ_TYPE],REQ_ENTRIES, [REQ_DESCRIPTION] ,REF_ID, RECEIVER_PO ,[REQ_PAY_TYPE] ,[REQ_TYPE_CURRENCY] ,[REQ_AMT] ,[REQ_TEMP_AMT] ,[MAKER_ID] ,[CREATE_DT] ,[EDITOR_ID] ,[AUTH_STATUS] ,[CHECKER_ID] ,[APPROVE_DT] ,[CREATE_DT_KT] ,[MAKER_ID_KT] ,[AUTH_STATUS_KT] ,[CHECKER_ID_KT] ,[APPROVE_DT_KT] ,[CONFIRM_NOTE] ,[BRANCH_CREATE] ,[NOTES],RECORD_STATUS,TRANSFER_MAKER,TRANSFER_DT,TRASFER_USER_RECIVE,PROCESS, PAY_PHASE,IS_PERIOD, RATE, AMT_PAY) VALUES (@p_REQ_PAY_ID, @p_REQ_PAY_CODE,CONVERT(DATE,GETDATE(),103), @p_BRANCH_ID, @p_DEP_ID, @p_REQ_REASON, @p_REQ_TYPE, @P_REQ_ENTRIES, @p_REQ_DESCRIPTION, @p_REF_ID, @p_RECEIVER_PO, @p_REQ_PAY_TYPE, @p_REQ_TYPE_CURRENCY, @p_REQ_AMT, @p_REQ_TEMP_AMT, @p_MAKER_ID, GETDATE(), @p_EDITOR_ID, 'E', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, @p_BRANCH_CREATE, @p_NOTES,@p_RECORD_STATUS, @p_TRANSFER_MAKER, NULL, @p_TRASFER_USER_RECIVE, NULL,@p_PAY_PHASE,ISNULL(@p_IS_PERIOD,'N'), @p_RATE, @p_AMT_PAY) IF @@Error <> 0 GOTO ABORT --- INSERT LICH THANH TOAN DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2), @REQ_PAY_TYPE varchar(1),@REQ_PAY_DESC nvarchar(MAX),@REQ_PAY_ENTRIES nvarchar(MAX),@CHECK_IN VARCHAR(15), @BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME NVARCHAR(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 SET @INDEX = 0 FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@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_TYPE_FUNCTION ='SEND') BEGIN SET @INDEX_INVOICE = @INDEX_INVOICE+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_INVOICE)+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_INVOICE)+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 ----------------------- end validate -------------------------- END IF(@REQ_PAY_TYPE<>'1') BEGIN SET @ISSUED_DT = NULL END --IF(@p_REQ_TYPE<>'I') --BEGIN --SET @TYPE_TRANSFER = '' --END IF(@TYPE_TRANSFER IS NULL OR @TYPE_TRANSFER ='') BEGIN SET @TYPE_TRANSFER ='A' END SET @INDEX = @INDEX +1 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,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',@p_MAKER_ID,GETDATE(),@ACC_NO, @ACC_NAME,@ISSUED_BY,CONVERT(DATE,@ISSUED_DT,103), @p_REQ_TYPE_CURRENCY ,@p_RATE,@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_METHOD,@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; ------------------------- -- INSERT CHUNG TU DINH KEM --CatCursor DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000), @CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20), @LICENSE_DT VARCHAR(15) DECLARE XmlAttach CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocAttach, 'Root/XmlAttach',2) WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000), CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20), LICENSE_DT VARCHAR(15)) OPEN XmlAttach FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC, @CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT WHILE @@fetch_status=0 BEGIN IF (@REF_DT='') BEGIN SET @REF_DT = NULL END EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT; IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT, LICENSE_DT) VALUES(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103), CONVERT(DATE, @LICENSE_DT,103)) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT, @REF_DT, @LICENSE_DT END CLOSE XmlAttach; DEALLOCATE XmlAttach; ----END --Insert XmlData DECLARE XmlData CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocInvoice, '/Root/XmlData', 2) WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(500),TAX_NO nvarchar(15),GOODS_NAME nvarchar(500) , PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15)) OPEN XmlData; FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER , @TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC WHILE @@fetch_status=0 BEGIN -- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN SET @INDEX_IV = @INDEX_IV+1 IF(LEN(@INVOICE_NO) < 1) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' không được để trống' ErrorDesc RETURN '-1' END IF(LEN(@INVOICE_NO) > 8) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' phải bé hơn 9 ký tự' ErrorDesc RETURN '-1' END --IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND --INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'A')) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc -- RETURN '-1' --END IF(EXISTS( SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS <> 'E') )) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc RETURN '-1' END IF(@GOODS_NAME IS NULL OR @GOODS_NAME ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Tên mặt hàng trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- TÊN NGƯỜI BÀN IF(@SELLER IS NULL OR @SELLER ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Người bán trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- MÃ SỐ THUẾ -- TÊN NGƯỜI BÀN IF(@TAX_NO IS NULL OR @TAX_NO ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Mã số thuế trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- NGÀY HÓA ĐƠN IF(@INVOICE_DT IS NULL OR @INVOICE_DT ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Ngày hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- SỐ HÓA ĐƠN IF(@INVOICE_NO IS NULL OR @INVOICE_NO ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- KÍ HIỆU HÓA ĐƠN IF(@INVOICE_NO_SIGN IS NULL OR @INVOICE_NO_SIGN ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Kí hiệu số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- KÍ HIỆU HÓA ĐƠN IF(@PRICE IS NULL OR @PRICE =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số tiền hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END END SET @INDEX = @INDEX +1 DECLARE @p_REQ_INV_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT; IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , NULL ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,UPPER(([dbo].[RemoveVietNamese](@SELLER))) ,@TAX_NO ,UPPER(([dbo].[RemoveVietNamese](@GOODS_NAME))) ,@PRICE ,@TAX,@VAT,@NOTES, @p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, 'VND', 1,@PRICE,@VAT,@PRICE+@VAT,@TYPE_VAT,@TYPE_FUNC) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC END; CLOSE XmlData; DEALLOCATE XmlData; --- INSERT CAC HANG MUC NGAN SACH DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15),@AMT_APP decimal(18,2),@AMT_EXE decimal(18,2), @AMT_REMAIN_GD decimal(18,2), @MONTH_RATE VARCHAR(4), @YEAR_RATE VARCHAR(4), --doanptt 180622 @BUDGET_TYPE VARCHAR(20), @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20), @MONTH VARCHAR(20), @YEAR VARCHAR(20), @BRANCH_TYPE VARCHAR(20), @KHOI_ID VARCHAR(20), @TLNAME VARCHAR(20), @RoleName VARCHAR(20), @BRANCH_TAKE_COST_ID VARCHAR(20), @DEP_TAKE_COST_ID VARCHAR(20), @KHOI_TAKE_COST_ID VARCHAR(20) DECLARE XmlDataGood CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocBudget, 'Root/XmlDataGood',2) WITH(TRADE_ID varchar(15),GD_ID varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2),AMT_EXE decimal(18,2), AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),REASON NVARCHAR(1000),TYPE_COST VARCHAR(15), FR_LEVEL INT ,TO_LEVEL INT, MONTH_RATE VARCHAR(4), YEAR_RATE VARCHAR(4), BUDGET_TYPE VARCHAR(20), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), MONTH VARCHAR(20), YEAR VARCHAR(20), BRANCH_TYPE VARCHAR(20), KHOI_ID VARCHAR(20), TLNAME VARCHAR(20), RoleName VARCHAR(20), BRANCH_TAKE_COST_ID VARCHAR(20), DEP_TAKE_COST_ID VARCHAR(20), KHOI_TAKE_COST_ID VARCHAR(20)) OPEN XmlDataGood FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID , @DEP_ID, @MONTH, @YEAR, @BRANCH_TYPE, @KHOI_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID WHILE @@fetch_status=0 BEGIN --- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI SET @INDEX_NS = @INDEX_NS +1 --KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(ISNULL(@AMT_EXE,0) =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc RETURN '-1' END IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc RETURN '-1' END END IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE())) AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc RETURN '-1' END 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 ) VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_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) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID , @DEP_ID, @MONTH, @YEAR, @BRANCH_TYPE, @KHOI_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID END; CLOSE XmlDataGood; DEALLOCATE XmlDataGood; --- END INSERT NGAN SACH --------------------------- --Luanlt-- ------------------------ IF(@p_REQ_TYPE = 'I') BEGIN DECLARE XmlDataPay CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDoc2, '/Root/XmlDataPay', 2) WITH(PAY_ADV_ID nvarchar(50),AMT_ADVANCED decimal(18, 0),AMT_DO decimal(18,2), AMT_REMAIN decimal(18,2),AMT_PAY decimal(18,2),AMT_USE decimal(18,2),AMT_REVERT DECIMAL(18,2), AMT_ADD DECIMAL(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), TRN_DATE VARCHAR(15)) OPEN XmlDataPay; DECLARE @SUM_TTCT_LINK DECIMAL(18,0), @SUM_TT_CT DECIMAL(18,0), @SUM_KUY_KE_TT DECIMAL(18,0),@SUM_PYCMS_LINK DECIMAL(18,0), @PYCMS_CODE_LIST VARCHAR(250), @PDNTT_CODE_LIST VARCHAR(250) FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE WHILE @@fetch_status=0 BEGIN SET @REQ_PAY_ADV_CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID) SET @INDEX_AD = @INDEX_AD +1 SET @SUM_PYCMS_LINK =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE AND AUTH_STATUS IN ('U','A')),0) SET @SUM_TT_CT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE) SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@RECEIVE_ID_SERVICE) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) --IF(@RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '') --BEGIN -- SET @SUM_PYCMS_LINK = @SUM_PYCMS_LINK +@TOTAL_AMT_SERVICE --END --SET @SUM_KUY_KE_TT = @SUM_KUY_KE_TT + @TOTAL_AMT_SERVICE SET @SUM_TTCT_LINK =(SELECT SUM(TOTAL_AMT*ISNULL(RATE,1)) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT) AND REQ_PAY_ID <> @p_REQ_PAY_ID AND EMP_ID =@RECEIVE_ID_SERVICE) IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(((ISNULL(@SUM_TTCT_LINK,0) +ISNULL(@SUM_PYCMS_LINK,0) + ISNULL(@TOTAL_AMT_SERVICE,0)) > ISNULL(@SUM_TT_CT,0)) AND @RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+N': Thông tin chi tiết về hạn mức sử dụng của tờ trình số: '+(SELECT TOP 1 ISNULL(REQ_CODE,'') FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)+N' như sau:' + CHAR(10) + N'* Số tiền các phiếu yêu cầu mua sắm số:'+ISNULL(@PYCMS_CODE_LIST,'')+N' đã sử dụng: '+FORMAT(ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND'+ + CHAR(10) +N'* Số tiền ở các phiếu thanh toán số: '+ISNULL(@PDNTT_CODE_LIST,'')+N' đã sử dụng: '+ FORMAT(ISNULL(@SUM_TTCT_LINK,0),'#,#', 'vi-VN') +' VND'+ + CHAR(10) +N'* Số tiền còn lại được phép thanh toán là: '+FORMAT(ISNULL(@SUM_TT_CT,0) -ISNULL(@SUM_TTCT_LINK,0) -ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND' ErrorDesc RETURN '-1' END END -- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN -- KIEM TRA XEM CO PHIEU NAO DANG DUOC THANH TOAN HOAN TAM UNG MA CHUA DUYET HAY CHUA --IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS_KT <>'A' OR AUTH_STATUS_KT IS NULL)) AND PAY_ID <>@p_REQ_PAY_ID)) IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS ='A' AND ISNULL(AUTH_STATUS_KT,'') <> 'A')) AND PAY_ID <>@p_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng số '+@REQ_PAY_ADV_CODE+ N' đang được thanh toán hoàn tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc RETURN '-1' END -- KIEM TRA NEU SO TIEN DE NGHI HOAN TAM ƯNG LON HON SO TIEN CON LAI CAN PHAI TAM UNG IF(@AMT_REVERT>(@AMT_REMAIN -@AMT_USE) AND @AMT_REVERT >0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Số tiền hoàn ứng không được vượt quá '+FORMAT((@AMT_REMAIN -@AMT_USE),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END DECLARE @p_REQ_PAYDT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT_DT', @p_REQ_PAYDT_ID OUT; IF @p_REQ_PAYDT_ID='' OR @p_REQ_PAYDT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAYMENT_DT VALUES (@p_REQ_PAYDT_ID,@PAY_ADV_ID,@p_REQ_PAY_ID , ISNULL(@AMT_ADVANCED,0) ,ISNULL(@AMT_DO,0),ISNULL(@AMT_REMAIN,0), ISNULL(ISNULL(@AMT_USE,0) + ISNULL(@AMT_REVERT,0) - ISNULL(@AMT_ADD,0), 0) ,ISNULL(@AMT_USE,0) ,ISNULL(@AMT_REVERT,0), ISNULL(@AMT_ADD,0), CONVERT(DATE,@TRN_DATE,103) ,@p_MAKER_ID ,GETDATE() ,NULL ,NULL,'U' ,NULL ,NULL ,NULL ,NULL,NULL,@p_REQ_TYPE_CURRENCY,@p_RATE) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE END CLOSE XmlDataPay; DEALLOCATE XmlDataPay; --INSERT FROM CatCursor --CatCursor DECLARE @REQ_ADV_ID varchar(15),@CAT_NAME nvarchar(100),@TOTAL_AMT_CAT decimal(18,2), @DEPT_ID VARCHAR(15) DECLARE XmlDataCat CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdoc, 'Root/XmlDataCat',2) WITH(REQ_ADV_ID VARCHAR(15),CAT_NAME nvarchar(100),TOTAL_AMT decimal(18,2), DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2)) OPEN XmlDataCat SET @INDEX = 0 FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE WHILE @@fetch_status=0 BEGIN SET @INDEX = @INDEX +1 DECLARE @p_REQ_PAY_CAT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_CAT', @p_REQ_PAY_CAT_ID OUT; IF @p_REQ_PAY_CAT_ID='' OR @p_REQ_PAY_CAT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_CAT VALUES (@p_REQ_PAY_CAT_ID,@p_REQ_PAY_ID,@REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@p_MAKER_ID,GETDATE(),@p_REQ_TYPE_CURRENCY,@p_RATE) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE END CLOSE XmlDataCat; DEALLOCATE XmlDataCat; END IF(@p_REQ_TYPE = 'D' OR @p_REQ_TYPE='I') BEGIN ---------------------------- --INSERT FROM ServiceCursor SET @INDEX = 0 FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE, @REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE WHILE @@fetch_status=0 BEGIN -- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN SET @INDEX = @INDEX +1 --------------- begin validate-------------- --IF(@p_TYPE_FUNCTION ='SEND' AND @p_REQ_TYPE ='D') --BEGIN IF(@DEPT_ID_SRV IS NULL OR @DEPT_ID_SRV ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phòng ban chịu chi phí không được để trống' ErrorDesc RETURN '-1' END IF(@TOTAL_AMT_SERVICE IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không được để trống' ErrorDesc RETURN '-1' END IF(@TOTAL_AMT_SERVICE < 0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không thể nhỏ hơn 0' ErrorDesc RETURN '-1' END --END --------------- end validate ---------------- END DECLARE @p_REQ_PAY_SERVICE_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SERVICE', @p_REQ_PAY_SERVICE_ID OUT; IF @p_REQ_PAY_SERVICE_ID='' OR @p_REQ_PAY_SERVICE_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_SERVICE(SERVICE_ID,REQ_PAY_ID,[SERVICE_NAME],EMP_ID,REQ_PAY_REASON,TOTAL_AMT,REQ_PAY_TYPE,REQ_PAY_DESC,REQ_PAY_ENTRIES,MAKER_ID,CREATE_DT,DEPT_ID,CURRENCY,RATE) VALUES (@p_REQ_PAY_SERVICE_ID,@p_REQ_PAY_ID,@REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE, @REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@p_MAKER_ID,GETDATE(),@DEPT_ID_SRV,@p_REQ_TYPE_CURRENCY,@p_RATE) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,@REQ_PAY_TYPE_SERVICE, @REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE END CLOSE XmlDataService; DEALLOCATE XmlDataService; END -- INSERT PO/ HỢP ĐỒNG IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE ='I') BEGIN DECLARE XmlDataPO CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocPO, '/Root/XmlDataPO', 2) WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15)) OPEN XmlDataPO; SET @INDEX_PO = 0 FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE WHILE @@fetch_status=0 BEGIN SET @INDEX_PO = @INDEX_PO +1 ---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL))) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc -- RETURN '-1' --END ---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL))) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc -- RETURN '-1' --END -- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH -- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+ (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc RETURN '-1' END -- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+ (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc RETURN '-1' END -- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+ (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc RETURN '-1' END -- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+ (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc RETURN '-1' END --- KIEM TRA XEM PO NAY DUOC THANH TOAN HAY CHUA IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED ='Y' ))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+ (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để thanh toán hoặc xóa bản nháp này!' ErrorDesc RETURN '-1' END END DECLARE @REQ_PAYDTID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT; IF @REQ_PAYDTID='' OR @REQ_PAYDTID 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) VALUES (@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE END CLOSE XmlDataPO; DEALLOCATE XmlDataPO; --- CUSOR DANH SACH LICH THANH TOAN PO - HD ---------------------------- --INSERT FROM ScheduleCursor --ScheduleCursor DECLARE @PO_ID varchar(15), @PAY_PHASE NVARCHAR(250), @AMT_ADVANCE decimal(18,2), @REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),@AMT_PAY_REAL DECIMAL(18,2), @AMT_PAY_DO DECIMAL(18,2) DECLARE XmlDataSchedule CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocSchedule, 'Root/XmlDataSchedule',2) WITH(PO_ID varchar(15), PAY_PHASE varchar(15),AMT_PAY decimal(18,2),REQ_ADV_ID varchar(15),AMT_ADVANCE decimal(18,2), AMT_REMAIN decimal(18,2),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),REQ_PAY_DESC NVARCHAR(250), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),AMT_PAY_DO DECIMAL(18,2),AMT_PAY_REAL DECIMAL(18,2)) OPEN XmlDataSchedule SET @INDEX_PO = 0 FETCH NEXT FROM XmlDataSchedule INTO @PO_ID, @PAY_PHASE,@AMT_PAY,@REQ_ADV_ID, @AMT_ADVANCE,@AMT_REMAIN,@REQ_AD_DT, @PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL WHILE @@fetch_status=0 BEGIN --IF(@AMT_REMAIN =0) --BEGIN -- SET @PROCESS ='3' --END --IF(@PROCESS <>'2') --BEGIN -- SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +@AMT_REMAIN --END ---- SET @INDEX_PO = @INDEX_PO +1 --IF(@p_TYPE_FUNCTION ='SEND') --BEGIN -- IF(ISNULL(@AMT_PAY_REAL,0) >ISNULL(@AMT_REMAIN,1)) -- BEGIN -- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Số tiền thanh toán không được vượt quá số tiền còn lại của kì thanh toán' ErrorDesc -- RETURN '-1' -- END --END SET @TOTAL_SCHEDULE_AMT =@TOTAL_SCHEDULE_AMT+(@AMT_PAY - @AMT_ADVANCE -@AMT_PAY_DO) DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT; IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_SCHEDULE (SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID, CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL) VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID, @AMT_PAY, @PAY_PHASE,@REQ_ADV_ID, @AMT_ADVANCE, --IIF(@PROCESS<>'2',(@AMT_PAY-@AMT_ADVANCE),0), @AMT_PAY_DO, @AMT_REMAIN,GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),@PROCESS,@p_MAKER_ID,GETDATE(),'U','','PAY', @REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@p_REQ_TYPE_CURRENCY,@p_RATE,@AMT_PAY_REAL) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataSchedule INTO @PO_ID, @PAY_PHASE, @AMT_PAY, @REQ_ADV_ID, @AMT_ADVANCE,@AMT_REMAIN,@REQ_AD_DT, @PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL END CLOSE XmlDataSchedule; DEALLOCATE XmlDataSchedule; -- VALIDATE DANH SACH HOAN UNG -- LUCTV BO SUNG 19-11-2019. CHUA BIET CO VALIDATE HAY KHONG NEN VALIDATE DUOI STORE --IF(@INDEX_PO =0) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Danh sách các khoản hoàn tạm ứng không được phép trống' ErrorDesc -- RETURN '-1' --END -- VALIDATE SO TIEN --IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc -- RETURN '-1' --END ---- END -- THANH TOAN HOP DONG DINH KY IF((@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y') OR @p_REQ_TYPE ='I') BEGIN /*DECLARE XmlDataPO CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocPO, '/Root/XmlDataPO', 2) WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15)) OPEN XmlDataPO; SET @INDEX_PO = 0 FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE WHILE @@fetch_status=0 BEGIN SET @INDEX_PO = @INDEX_PO +1 DECLARE @REQ_PAYDTID_C VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT; IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C 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) VALUES (@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE END CLOSE XmlDataPO; DEALLOCATE XmlDataPO; --- CUSOR DANH SACH LICH THANH TOAN PO - HD */ ---------------------------- -- INSERT PRIOD DECLARE @INDEX_PERIOD INT, @CONTRACT_PERIOD_ID VARCHAR(15),@IS_PERIOD_CLOSED VARCHAR(1), @DELIVERY_DT VARCHAR(20) DECLARE XmlDataRecurring CURSOR FOR SELECT * FROM OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2) WITH(CONTRACT_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15), DELIVERY_DT VARCHAR(20)) OPEN XmlDataRecurring; SET @INDEX_PERIOD = 0 FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE, @DELIVERY_DT WHILE @@fetch_status=0 BEGIN 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,@p_REQ_PAY_ID,@CONTRACT_PERIOD_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_PERIOD_CLOSED,'C', CONVERT(DATE,@DELIVERY_DT,103)) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE, @DELIVERY_DT END CLOSE XmlDataRecurring; DEALLOCATE XmlDataRecurring; --INSERT DETAIL PERIOD DECLARE XmlDataPeriod CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2) WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5), OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), RATE DECIMAL(18,0), FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20),AD_PAY_ID VARCHAR(15), PROCESS VARCHAR(5), PARENT_ID VARCHAR(15), PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000),TYPE_COST VARCHAR(15), FR_LEVEL INT,TO_LEVEL INT) OPEN XmlDataPeriod; DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5), @OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2), @FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@AD_PAY_ID VARCHAR(15), @_PROCESS VARCHAR(5),@PARENT_ID VARCHAR(15), @REASON_TTDK NVARCHAR(2000) FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE , @OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE, @AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK,@TYPE_COST, @FR_LEVEL ,@TO_LEVEL WHILE @@fetch_status=0 BEGIN -- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(@NEW_INDEX <=@OLD_INDEX AND (@NEW_INDEX >0 AND @OLD_INDEX >0) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc RETURN '-1' END IF(@PROCESS ='2' AND (@AD_PAY_ID IS NULL OR @AD_PAY_ID ='')) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_PAY_ID,N'Lưới chi tiết thanh toán định kì: Tại hình thức thanh toán Hoàn ứng, số phiếu tạm ứng không được phép để trống' ErrorDesc RETURN '-1' END IF( @PAY_ADV_ID IS NOT NULL AND @PAY_ADV_ID <> '' AND (SELECT ISNULL(REQ_AMT,0.00) - ISNULL(PAY_AMT,0.00) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID) <=0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Bạn không được phép hoàn tạm ứng cho phiếu đã được hoàn ứng xong! Vui lòng gỡ khỏi danh sách kì thanh toán & hoàn ứng' ErrorDesc RETURN '-1' END -- NEU LÀ DINH KI THI HD PHAI KHAC NULL IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' ) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc RETURN '-1' END -- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG IF(@CONTRACT_ID IS NOT NULL AND @CONTRACT_ID <> '' ) BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc RETURN '-1' END END END IF(@PROCESS ='2' AND (@AD_PAY_ID IS NULL OR @AD_PAY_ID ='')) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_PAY_ID,N'Lưới chi tiết thanh toán định kì: Tại hình thức thanh toán Hoàn ứng, số phiếu tạm ứng không được phép để trống' ErrorDesc RETURN '-1' END IF( @PAY_ADV_ID IS NOT NULL AND @PAY_ADV_ID <> '' AND (SELECT ISNULL(REQ_AMT,0.00) - ISNULL(PAY_AMT,0.00) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID) <=0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Bạn không được phép hoàn tạm ứng cho phiếu đã được hoàn ứng xong! Vui lòng gỡ khỏi danh sách kì thanh toán & hoàn ứng' ErrorDesc RETURN '-1' END 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,@p_REQ_PAY_ID,'PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',@p_REQ_TYPE_CURRENCY, @p_RATE,CONVERT(DATE,@FROM_DATE,103), CONVERT(DATE,@TO_DATE,103),@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK,@TYPE_COST, @FR_LEVEL ,@TO_LEVEL ) -- LUCTV 16 03 2021 BO SUNG BANG LOG DE FIX LOI HOÀN TẠM ỨNG ĐỊNH KỲ NHƯNG SỐ PHIẾU BỊ TRỐNG INSERT INTO TR_REQ_PAY_PER_LOG VALUES (@p_REQ_PAY_ID, @PAY_ADV_ID) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE , @OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK,@TYPE_COST, @FR_LEVEL , @TO_LEVEL END CLOSE XmlDataPeriod; DEALLOCATE XmlDataPeriod; END --doanptt 15/02/2022 -- INSERT JOB -- DS PHIEU YEU CAU CONG TAC DECLARE @REQ_PAY_JOB_ID varchar(15) ,@REQ_PAY_ID varchar(15),@REQ_ID varchar(15), @REQ_CODE varchar(15), @MAKER_ID varchar(15), @CREATE_DT varchar(15), @PAY_TYPE_J VARCHAR(5), @PAY_PHASE_J NVARCHAR(250), @PAY_AMT DECIMAL(18,0), @PAY_DESC NVARCHAR(1000) , @AUTH_STATUS VARCHAR(1), @AUTH_STATUS_KT VARCHAR(1) DECLARE XmlDataJob CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocJob, 'Root/XmlDataJob',2) WITH(REQ_PAY_JOB_ID varchar(15) ,REQ_PAY_ID varchar(15),REQ_ID varchar(15), REQ_CODE varchar(15), MAKER_ID varchar(15),CREATE_DT varchar(15), PAY_TYPE VARCHAR(5), PAY_PHASE NVARCHAR(250), PAY_AMT DECIMAL(18,0), PAY_DESC NVARCHAR(1000), AUTH_STATUS VARCHAR(1), AUTH_STATUS_KT VARCHAR(1)) OPEN XmlDataJob --- INSERT PHIEU YEU CAU CONG TAC FETCH NEXT FROM XmlDataJob INTO @REQ_PAY_JOB_ID ,@REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , @CREATE_DT , @PAY_TYPE_J , @PAY_PHASE_J , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT WHILE @@fetch_status=0 BEGIN /*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI SET @INDEX_NS = @INDEX_NS +1 --KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(ISNULL(@AMT_EXE,0) =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc RETURN '-1' END IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc RETURN '-1' END END IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE())) AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc RETURN '-1' END*/ DECLARE @p_REQ_JOB_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_JOB', @p_REQ_JOB_ID OUT; IF @p_REQ_JOB_ID='' OR @p_REQ_JOB_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_JOB(REQ_PAY_JOB_ID ,REQ_PAY_ID ,REQ_ID , REQ_CODE, MAKER_ID, CREATE_DT , PAY_TYPE , PAY_PHASE , PAY_AMT , PAY_DESC, AUTH_STATUS , AUTH_STATUS_KT) VALUES (@p_REQ_JOB_ID ,@p_REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , GETDATE() , @PAY_TYPE_J , @PAY_PHASE_J , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataJob INTO @REQ_PAY_JOB_ID ,@REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , @CREATE_DT , @PAY_TYPE_J , @PAY_PHASE_J, @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT END; CLOSE XmlDataJob; DEALLOCATE XmlDataJob; --- END INSERT PHIEU YEU CAU CONG TAC -- INSERT JOB DT -- DS CHI TIET PHIEU YEU CAU CONG TAC DECLARE @REQ_PAY_JOB_DT_ID varchar(15) , @REQ_PAY_ID_DT varchar(15), @REQ_ID_DT varchar(15), @REQ_CODE_DT varchar(15), @MAKER_ID_DT varchar(15), @CREATE_DT_DT varchar(15), @FULLNAME_DT NVARCHAR(250), @TLNAME_DT VARCHAR(15), @JOB_PLACE_DT VARCHAR(15), @FRMDATE_DT VARCHAR(15), @TODATE_DT VARCHAR(15), @NUMBER_DAY_DT decimal(18,0), @DAY_RATE_DT decimal(18,0), @JOB_COST_DT decimal(18,0), @TYPE_TRANS_DT varchar(250), @COST_MOVE_DT decimal(18,0), @COST_RESIDENCE_DT decimal(18,0), @COST_OTHER_DT decimal(18,0), @COST_AMT_DT decimal(18,0), @AUTH_STATUS_DT VARCHAR(1), @AUTH_STATUS_KT_DT VARCHAR(1) DECLARE XmlDataJobDT CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocJobDT, 'Root/XmlDataJobDT',2) WITH(REQ_PAY_JOB_DT_ID varchar(15), REQ_PAY_ID varchar(15), REQ_ID varchar(15), REQ_CODE varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(15), FULLNAME nvarchar(250), TLNAME_DT VARCHAR(15), JOB_PLACE varchar(15), FRMDATE varchar(15), TODATE varchar(15),NUMBER_DAY decimal(18,0), DAY_RATE decimal(18,0), JOB_COST decimal(18,0), TYPE_TRANS varchar(15), COST_MOVE decimal(18,0), COST_RESIDENCE decimal(18,0), COST_OTHER decimal(18,0), COST_AMT decimal(18,0) , AUTH_STATUS varchar(1), AUTH_STATUS_KT varchar(1)) OPEN XmlDataJobDT --- INSERT CHI TIÊT PHIEU YEU CAU CONG TAC FETCH NEXT FROM XmlDataJobDT INTO @REQ_PAY_JOB_DT_ID , @REQ_PAY_ID_DT, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT, @CREATE_DT_DT , @FULLNAME_DT , @TLNAME_DT, @JOB_PLACE_DT , @FRMDATE_DT , @TODATE_DT , @NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, @COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT WHILE @@fetch_status=0 BEGIN /*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI SET @INDEX_NS = @INDEX_NS +1 --KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(ISNULL(@AMT_EXE,0) =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc RETURN '-1' END IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc RETURN '-1' END END IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE())) AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc RETURN '-1' END*/ DECLARE @p_REQ_JOB_DT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_JOB_DT', @p_REQ_JOB_DT_ID OUT; IF @p_REQ_JOB_DT_ID='' OR @p_REQ_JOB_DT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_JOB_DT(REQ_PAY_JOB_DT_ID , REQ_PAY_ID , REQ_ID , REQ_CODE, MAKER_ID , CREATE_DT , FULLNAME, TLNAME, JOB_PLACE , FRMDATE , TODATE ,NUMBER_DAY , DAY_RATE , JOB_COST , TYPE_TRANS , COST_MOVE , COST_RESIDENCE , COST_OTHER , COST_AMT , AUTH_STATUS, AUTH_STATUS_KT) VALUES (@p_REQ_JOB_DT_ID , @p_REQ_PAY_ID, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT, GETDATE() , @FULLNAME_DT ,@TLNAME_DT, @JOB_PLACE_DT , CONVERT(DATE,@FRMDATE_DT,103) , CONVERT(DATE,@TODATE_DT,103) , @NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, @COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataJobDT INTO @REQ_PAY_JOB_DT_ID , @REQ_PAY_ID_DT, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT, @CREATE_DT_DT , @FULLNAME_DT , @TLNAME_DT, @JOB_PLACE_DT , @FRMDATE_DT , @TODATE_DT , @NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, @COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT END; CLOSE XmlDataJobDT; DEALLOCATE XmlDataJobDT; --- END INSERT CHI TIET PHIEU YEU CAU CONG TAC --doanptt 17/02/2022 -- INSERT DRIVE -- DS PHIEU YEU CAU CONG TAC DECLARE @REQ_PAY_DRIVE_ID varchar(15), @CAR_ID varchar(15), @CAR_PLATE varchar(15), @RATE_GAS_100KM decimal(18,0), @CAR_TYPE VARCHAR(15) DECLARE XmlDataDrive CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocDrive, 'Root/XmlDataDrive',2) WITH(REQ_PAY_DRIVE_ID varchar(15) ,REQ_PAY_ID varchar(15), CAR_ID varchar(15), CAR_PLATE varchar(15), MAKER_ID varchar(15),CREATE_DT varchar(15), PAY_TYPE VARCHAR(5), PAY_PHASE NVARCHAR(250), PAY_AMT DECIMAL(18,0), PAY_DESC NVARCHAR(1000), AUTH_STATUS VARCHAR(1), AUTH_STATUS_KT VARCHAR(1), RATE_GAS_100KM decimal(18,0), CAR_TYPE VARCHAR(15)) OPEN XmlDataDrive --- INSERT PHIEU YEU CAU CONG TAC FETCH NEXT FROM XmlDataDrive INTO @REQ_PAY_DRIVE_ID ,@REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , @CREATE_DT , @PAY_TYPE , @PAY_PHASE, @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE WHILE @@fetch_status=0 BEGIN /*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI SET @INDEX_NS = @INDEX_NS +1 --KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(ISNULL(@AMT_EXE,0) =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc RETURN '-1' END IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc RETURN '-1' END END IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE())) AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc RETURN '-1' END*/ DECLARE @p_REQ_DRIVE_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_DRIVE', @p_REQ_DRIVE_ID OUT; IF @p_REQ_DRIVE_ID='' OR @p_REQ_DRIVE_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_DRIVE(REQ_PAY_DRIVE_ID ,REQ_PAY_ID ,CAR_ID , CAR_PLATE , MAKER_ID, CREATE_DT , PAY_TYPE , PAY_PHASE , PAY_AMT , PAY_DESC, AUTH_STATUS , AUTH_STATUS_KT, RATE_GAS_100KM, CAR_TYPE) VALUES (@p_REQ_DRIVE_ID ,@p_REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , GETDATE() , @PAY_TYPE , @PAY_PHASE , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataDrive INTO @REQ_PAY_DRIVE_ID ,@REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , @CREATE_DT , @PAY_TYPE , @PAY_PHASE, @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE END; CLOSE XmlDataDrive; DEALLOCATE XmlDataDrive; --- END INSERT PHIEU YEU CAU CONG TAC -- INSERT DRIVE DT -- DS CHI TIET PHIEU YEU CAU CONG TAC DECLARE @REQ_PAY_DRIVE_DT_ID varchar(15), @FULLNAME NVARCHAR(250), @BRANCH_REQ VARCHAR(15), @KM_START decimal(18,0), @KM_END varchar(250), @KM_USED decimal(18,0), @RATE_GAS decimal(18,0), @REAL_GAS decimal(18,0), @REDUNDANCY_GAS decimal(18,0), @INVENTORY_GAS decimal(18,0), @COST_INCURRED decimal(18,0), @CREATE_SCHEDULE NVARCHAR(250), @TRUONGDONVI VARCHAR(15) DECLARE XmlDataDriveDT CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocDriveDT, 'Root/XmlDataDriveDT',2) WITH(REQ_PAY_DRIVE_ID varchar(15), REQ_PAY_ID varchar(15), CAR_ID varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(15), BRANCH_REQ varchar(15), PAY_PHASE NVARCHAR(250), CAR_TYPE Nvarchar(250), CAR_PLATE varchar(15),RATE_GAS_100KM decimal(18,0), KM_START decimal(18,0), KM_END decimal(18,0), KM_USED varchar(15), RATE_GAS decimal(18,0), REAL_GAS decimal(18,0), REDUNDANCY_GAS decimal(18,0), INVENTORY_GAS decimal(18,0), NOTES NVARCHAR(MAX), COST_INCURRED decimal(18,0), CREATE_SCHEDULE NVARCHAR(250), TRUONGDONVI VARCHAR(15) , AUTH_STATUS varchar(1), AUTH_STATUS_KT varchar(1)) OPEN XmlDataDriveDT --- INSERT CHI TIÊT PHIEU YEU CAU CONG TAC FETCH NEXT FROM XmlDataDriveDT INTO @REQ_PAY_DRIVE_ID , @REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, @RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @NOTES, @COST_INCURRED, @CREATE_SCHEDULE, @TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT WHILE @@fetch_status=0 BEGIN /*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI SET @INDEX_NS = @INDEX_NS +1 --KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(ISNULL(@AMT_EXE,0) =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc RETURN '-1' END IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc RETURN '-1' END END IF(NOT EXISTS(SELECT * FROM PL_IMPORT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE())) AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc RETURN '-1' END*/ DECLARE @p_REQ_DRIVE_DT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_DRIVE_DT', @p_REQ_DRIVE_DT_ID OUT; IF @p_REQ_DRIVE_DT_ID='' OR @p_REQ_DRIVE_DT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_DRIVE_DT(REQ_PAY_DRIVE_DT_ID, REQ_PAY_ID, CAR_ID, MAKER_ID, CREATE_DT, BRANCH_REQ, PAY_PHASE, CAR_TYPE, CAR_PLATE, RATE_GAS_100KM, KM_START, KM_END, KM_USED, RATE_GAS, REAL_GAS, REDUNDANCY_GAS, INVENTORY_GAS, COST_INCURRED, NOTES, CREATE_SCHEDULE, TRUONGDONVI, AUTH_STATUS, AUTH_STATUS_KT) VALUES (@p_REQ_DRIVE_DT_ID , @p_REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, @RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @COST_INCURRED, @NOTES, @CREATE_SCHEDULE, @TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataDriveDT INTO @REQ_PAY_DRIVE_ID , @REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, @RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @NOTES, @COST_INCURRED, @CREATE_SCHEDULE, @TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT END; CLOSE XmlDataDriveDT; DEALLOCATE XmlDataDriveDT; --- END INSERT CHI TIET PHIEU YEU CAU CONG TAC --IF(1=1) --GOTO ABORT COMMIT TRANSACTION IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP BEGIN DECLARE @BRANCH_TYPE_CR VARCHAR(15) SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE) DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0, @SUM_NGAN_SACH DECIMAL(18,2) =0, @SUM_USE_REAL DECIMAL(18,2), @SUM_SERVICE DECIMAL(18,0), @SUM_SCHEDULE DECIMAL(18,0), @SUM_PERIOD DECIMAL(18,0), @SUM_PAY_BACK DECIMAL(18,0) =0, @SUM_ADD DECIMAL(18,0) SET @SUM_THANH_TOAN =(SELECT ISNULL(SUM(REQ_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) SET @SUM_PHUONG_THUC =ABS((SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND (TYPE_TRANSFER ='A' OR TYPE_TRANSFER IS NULL OR TYPE_TRANSFER ='')) - (SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='R')) SET @SUM_NGAN_SACH =(SELECT ISNULL(SUM(AMT_EXE * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID) SET @SUM_SERVICE =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) SET @SUM_PERIOD =(SELECT ISNULL(SUM(AMT_PAY * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID) SET @SUM_SCHEDULE =(SELECT ISNULL(SUM(AMT_PAY_REAL * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) IF(@p_REQ_TYPE ='I') BEGIN SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_USE*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID) SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_REVERT*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID) SET @SUM_ADD =(SELECT ISNULL(SUM(AMT_ADD*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID) SET @SUM_PHUONG_THUC =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='A') - (SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='R') END IF(@p_REQ_TYPE ='P' AND @p_IS_PERIOD ='Y' AND @p_IS_PERIOD <>'' AND @p_IS_PERIOD IS NOT NULL) BEGIN SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID) --SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND PROCESS <> '0') END IF(@p_REQ_TYPE ='P' AND (@p_IS_PERIOD ='N' OR (@p_IS_PERIOD ='' OR @p_IS_PERIOD IS NULL))) BEGIN SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY_REAL*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_ADVANCE*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) END IF(@p_REQ_TYPE ='D') BEGIN SET @SUM_USE_REAL =(SELECT ISNULL(SUM(TOTAL_AMT*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) END IF(@p_REQ_TYPE = 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_THANH_TOAN,0)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END IF(@p_REQ_TYPE <> 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn sử dụng thực tế là: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD') BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Cấp độ phòng giao dịch vui lòng không được chọn cấp phê duyệt trung gian' ErrorDesc RETURN '-1' END IF(@p_REQ_TYPE <> 'I') BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc RETURN '-1' END IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END ELSE BEGIN IF(ISNULL(@SUM_USE_REAL,0) >0) BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc RETURN '-1' END IF(ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END IF(ISNULL(@SUM_USE_REAL,0) <> (ISNULL(@SUM_SERVICE,0) + ISNULL(@SUM_PERIOD,0) + ISNULL(@SUM_SCHEDULE,0))) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng số tiền thanh toán dịch vụ, thanh toán nhà cung cấp, thanh toán định kì phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') + ' ' + FORMAT(SUM(@SUM_SERVICE),'#,#', 'vi-VN') + ' ' + FORMAT(SUM(@SUM_PERIOD),'#,#', 'vi-VN') + ' ' + FORMAT(SUM(@SUM_SCHEDULE),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END --IF(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC) IF(((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán (hiệu số thanh toán và trích từ tai khoản) tương ứng với số tiền chi bổ sung trừ số tiền hoàn tạm ứng: ' + FORMAT(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS='U')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc RETURN '-1' END -- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL,CREATE_DT = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu thanh toán và gửi phê duyệt') --- Luu log chinh sua INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID ----- UPDATE TR_REQ_PAY_SCHEDULE SET AMT_REMAIN =0.00 WHERE AMT_REMAIN <0 UPDATE TR_REQ_PAY_BUDGET SET AMT_APP= ROUND(AMT_APP,0), AMT_REMAIN = ROUND(AMT_REMAIN,0) IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_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 '4' END ELSE BEGIN SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc RETURN '4' END END SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, @p_REQ_PAY_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, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[rpt_BDS_BC02_Excel]' GO ALTER PROCEDURE [dbo].[rpt_BDS_BC02_Excel] @p_Fromdate varchar(20) = null, @p_Todate varchar(20) = null, @p_BRANCH_LOGIN VARCHAR(15) = NULL, @P_BRANCH_ID VARCHAR(15) = NULL, --Đơn vị sử dụng @P_LEVEL VARCHAR(15) = 'ALL' AS BEGIN DECLARE @FROM_DT DATETIME = CONVERT(DATE,@p_Fromdate,103) DECLARE @TO_DT DATETIME = CONVERT(DATE, @p_Todate, 103) declare @tmp table(BRANCH_ID varchar(15)) if(@P_LEVEL = 'ALL') BEGIN insert into @tmp select * from CM_BRANCH_GETCHILDID(@P_BRANCH_ID) END ELSE BEGIN INSERT INTO @tmp SELECT @P_BRANCH_ID AS BRANCH_ID END --;WITH RET AS( -- SELECT BRMN.BRANCH_NAME AS BRANCH_MANAGE_NAME, R.BRANCH_USE AS BRANCH_USE_NAME, R.ADDR, R.LAND_SQUARE, r.CONSTRUCT_SQUARE, '' AS NOTES -- FROM RET_MASTER R -- INNER JOIN ASS_MASTER A -- ON R.ASSET_ID = A.ASSET_ID -- INNER JOIN @tmp T ON A.BRANCH_ID = T.BRANCH_ID -- LEFT JOIN CM_BRANCH BRMN ON A.BRANCH_ID = BRMN.BRANCH_ID -- WHERE R.RECORD_STATUS = '1' AND R.AUTH_STATUS = 'A' AND A.BRANCH_ID IS NOT NULL -- AND (@p_Fromdate IS NULL OR @p_Fromdate = '' OR R.BUY_DT <= @FROM_DT) -- AND R.USE_STATUS = 'D' --), --RET_LC AS( -- SELECT BRMN.BRANCH_NAME AS BRANCH_MANAGE_NAME, R.BRANCH_USE AS BRANCH_USE_NAME, R.RET_ADDR AS ADDR, AREA AS LAND_SQUARE, CONTRUCT_AREA AS CONSTRUCT_SQUARE, N'Chưa hoàn thiện pháp lý' as NOTES -- FROM REAL_ESTATE_L_C R -- INNER JOIN @tmp T ON R.BRANCH_MANAGE = T.BRANCH_ID -- LEFT JOIN CM_BRANCH BRMN ON R.BRANCH_MANAGE = BRMN.BRANCH_ID -- WHERE R.RECORD_STATUS = '1' AND R.AUTH_STATUS = 'A' -- AND (@p_Fromdate IS NULL OR @p_Fromdate = '' OR R.BUY_DT <= @FROM_DT) --) --select ROW_NUMBER() OVER (ORDER BY(SELECT 1)) AS STT,A.* from --( --SELECT * FROM RET --UNION ALL (SELECT * FROM RET_LC)) A ;WITH RET AS( SELECT A.RET_ID AS REAL_ESTATE_ID, B.BRANCH_CREATE AS BRANCH_ID, BRCR.BRANCH_NAME AS BRANCH_MANAGE, BRUS.BRANCH_NAME AS BRANCH_USE, A.ADDR AS ADDRESS, A.LAND_SQUARE AS LAND_AREA, A.CONSTRUCT_SQUARE AS CONST_AREA, ST.CONTENT AS LC_STATUS, CASE WHEN B.GROUP_ID IN ('ASG000000001360', 'ASG000000001361', 'ASG000000001362') THEN B.BUY_PRICE ELSE NULL END AS LAND_PRICE, --Giá trị QSDĐ CASE WHEN B.GROUP_ID IN ('ASG000000001195', 'ASG000000001196', 'ASG000000001197', 'ASG000000001198') THEN B.BUY_PRICE ELSE NULL END AS BUY_PRICE, --Giá trị TS trên đất --B.BUY_PRICE AS TOTAL_PRICE, ( --SELECT ISNULL(SUM(AAV.AMORT_AMT),0) --FROM ASS_AMORT_VIEW AAV --WHERE AAV.ASSET_ID = B.ASSET_ID --AND (AAV.EXECUTE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') SELECT ISNULL(SUM(AAD.AMORT_AMT),0) FROM ASS_AMORT_DT AAD WHERE AAD.ASSET_ID = B.ASSET_ID AND (AMORT_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') ) AS AMORTIZED_AMT, -- Giá trị đã khấu hao ISNULL( B.AMORT_AMT - --( -- SELECT ISNULL(SUM(AAV.AMORT_AMT),0) -- FROM ASS_AMORT_VIEW AAV -- WHERE AAV.ASSET_ID = B.ASSET_ID -- AND (AAV.EXECUTE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') --), ( SELECT ISNULL(SUM(AAD.AMORT_AMT),0) FROM ASS_AMORT_DT AAD WHERE AAD.ASSET_ID = B.ASSET_ID AND (AMORT_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') ), 0) AS REMAIN_AMORT, --- Giá trị còn lại 0 AS MARKET_PRICE, ( SELECT ISNULL(SUM(RR.TOTAL_AMT_CONSTRUCT),0) FROM RET_REPAIR_SUGGEST RR WHERE RR.RET_ID = A.RET_ID ) AS CONSTRUCT, ( SELECT ISNULL(SUM(RR.TOTAL_AMT_REPAIR),0) FROM RET_REPAIR_SUGGEST RR WHERE RR.RET_ID = A.RET_ID ) AS REPAIR, ( SELECT ISNULL(SUM(RTS.TOTAL_AMT), NULL) FROM RET_TAX_SCHEDULE RTS WHERE RTS.RET_ID = A.RET_ID ) AS LAND_TAX, CASE WHEN A.CONST_STATUS = 'XD/SC' THEN N'Đang XD/SC' ELSE '' END AS REPAIR_CONSTRUCT, B.AMORT_START_DATE, --CONVERT(VARCHAR(20), DATEDIFF( -- month, -- B.AMORT_START_DATE, -- ( -- SELECT TOP 1 AAV.EXECUTE_DT -- FROM ASS_AMORT_VIEW AAV -- WHERE AAV.ASSET_ID = B.ASSET_ID -- AND (AAV.EXECUTE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') -- ORDER BY AAV.EXECUTE_DT DESC -- ) --)) + N' tháng' --AS AMORTIZED_DURATION, ------------Thời gian đã khấu hao(tháng)-------------- CONVERT(VARCHAR(20), CAST(ROUND(B.AMORTIZED_MONTH - ISNULL(AMT.ST_KH_PD_TAM,0), 0) AS INT) ) + N' tháng' AS AMORTIZED_DURATION, CONVERT(VARCHAR, CAST(B.AMORT_MONTH AS INT)) + N' tháng' AS DURATION FROM RET_MASTER A INNER JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID LEFT JOIN CM_BRANCH BRCR ON A.BRANCH_CREATE = BRCR.BRANCH_ID LEFT JOIN CM_BRANCH BRUS ON A.BRANCH_USE_ID = BRUS.BRANCH_ID LEFT JOIN CM_ALLCODE ST ON A.STATUS = ST.CDVAL AND ST.CDTYPE = 'RET' AND CDNAME = 'RET_STATUS' -- TINH SO THANG DA KHAU HAO = AMORTED_MONTH - SỐ THÁNG ĐÃ KHẤU HAO : AMORT_DT > TO_DATE 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 SELECT AM_DT.ASSET_ID, ISNULL(COUNT (*),0) AS ST_KH_PD_TAM FROM ASS_AMORT_DT AM_DT WHERE AM_DT.CRDR='C' --AND (CONVERT(DATE,AM_DT.AMORT_DT) > CONVERT(DATE,@TO_DT,103) OR @TO_DT IS NULL OR @TO_DT = '') AND (CONVERT(DATE,AM_DT.AMORT_DT) <= CONVERT(DATE,@TO_DT,103) OR @TO_DT IS NULL OR @TO_DT = '') GROUP BY AM_DT.ASSET_ID ) AMT ON AMT.ASSET_ID = A.ASSET_ID WHERE A.AUTH_STATUS = 'A' AND A.RECORD_STATUS = '1' --AND ( -- B.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp) -- OR A.BRANCH_USE_ID IN (SELECT BRANCH_ID FROM @tmp) -- ) AND ( A.BRANCH_USE_ID IN (SELECT BRANCH_ID FROM @tmp) OR A.BRANCH_USE_ID IS NULL OR A.BRANCH_USE_ID = '' ) AND (A.BUY_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') AND (A.BUY_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') ), RET_LC AS( SELECT B.RET_ID AS REAL_ESTATE_ID, A.BRANCH_CREATE AS BRANCH_ID, BRCR.BRANCH_NAME AS BRANCH_MANAGE, BRUS.BRANCH_NAME AS BRANCH_USE, A.RET_ADDR AS ADDRESS, A.AREA AS LAND_AREA, A.CONTRUCT_AREA AS CONST_AREA, N'Chưa hoàn thiện pháp lý' AS LC_STATUS, ISNULL(A.LAND_USE_RIGHTS_PRICE,0) AS LAND_PRICE, ISNULL(A.ASSET_PRICE,0) AS BUY_PRICE, --ISNULL(A.LAND_USE_RIGHTS_PRICE, 0) + ISNULL(A.ASSET_PRICE, 0) AS TOTAL_PRICE, NULL AS AMORTIZED_AMT, NULL AS REMAIN_AMORT, ISNULL(A.MARKET_PRICE,0) AS MARKET_PRICE, ( SELECT ISNULL(SUM(RR.TOTAL_AMT_CONSTRUCT),0) FROM RET_REPAIR_SUGGEST RR WHERE RR.RET_ID = B.RET_ID ) AS CONSTRUCT, ( SELECT ISNULL(SUM(RR.TOTAL_AMT_REPAIR),0) FROM RET_REPAIR_SUGGEST RR WHERE RR.RET_ID = B.RET_ID ) AS REPAIR, ( SELECT ISNULL(SUM(RTS.TOTAL_AMT), NULL) FROM RET_TAX_SCHEDULE RTS WHERE RTS.RET_ID = B.RET_ID ) AS LAND_TAX, CASE WHEN B.CONST_STATUS = 'XD/SC' THEN N'Đang XD/SC' ELSE '' END AS REPAIR_CONSTRUCT, NULL AS AMORT_START_DATE, NULL AS AMORTIZED_DURATION, NULL AS DURATION FROM REAL_ESTATE_L_C A LEFT JOIN CM_BRANCH BRCR ON A.BRANCH_MANAGE = BRCR.BRANCH_ID LEFT JOIN CM_BRANCH BRUS ON A.BRANCH_USE = BRUS.BRANCH_ID LEFT JOIN RET_MASTER B ON A.RET_ID = B.RET_ID WHERE A.AUTH_STATUS = 'A' AND A.RECORD_STATUS = '1' AND (A.BRANCH_USE IN (SELECT BRANCH_ID FROM @tmp) OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = '' ) AND (A.BUY_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') AND (A.BUY_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') -------------chỉ lấy những BĐS chưa là tài sản ngân hàng-------------- AND (B.ASSET_ID IS NULL OR B.ASSET_ID = '') AND A.FINISH_DT_REAL IS NULL ) SELECT ROW_NUMBER() OVER (ORDER BY(SELECT 1)) AS STT, RESULT.*, --ISNULL((RESULT.LAND_PRICE + RESULT.BUY_PRICE),0) AS TOTAL_PRICE ISNULL(RESULT.LAND_PRICE,0) + ISNULL(RESULT.BUY_PRICE,0) AS TOTAL_PRICE FROM ( SELECT * FROM RET UNION ALL (SELECT * FROM RET_LC) ) AS RESULT END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CON_LAYOUT_BLUEPRINT_UPD]' GO ALTER PROC [dbo].[CON_LAYOUT_BLUEPRINT_UPD] @p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15) = NULL, @p_LAYOUT_NAME NVARCHAR(500) = NULL, @p_CONSTRUCT_ID VARCHAR(15) = NULL, @p_CONSTRUCT_NAME VARCHAR(500) = NULL, @p_LAYOUT_TYPE VARCHAR(15) = NULL, @p_NOTES NVARCHAR(4000) = 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 AS BEGIN TRANSACTION UPDATE [dbo].[CON_LAYOUT_BLUEPRINT] SET [LAYOUT_NAME] = @p_LAYOUT_NAME, [CONSTRUCT_ID] = @p_CONSTRUCT_ID, [CONSTRUCT_NAME] = @p_CONSTRUCT_NAME, [LAYOUT_TYPE] = @p_LAYOUT_TYPE, [NOTES] = @p_NOTES, [RECORD_STATUS] = @p_RECORD_STATUS, [AUTH_STATUS] = @p_AUTH_STATUS, [MAKER_ID] = @p_MAKER_ID, [CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103), [CHECKER_ID] = @p_CHECKER_ID, [APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CON_LAYOUT_BLUEPRINT_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Chỉnh sửa layout bản vẽ thành công' , N'Chỉnh sửa layout bản vẽ' ) IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT 0 as Result, @p_CON_LAYOUT_BLUEPRINT_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'Altering [dbo].[TR_REQ_PAYMENT_KT_Appr]' GO ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_KT_Appr] --Luanlt 2019/17/10 - Sửa params @p_REQ_PAY_ID varchar(15)= NULL, @p_CHECKER_ID_KT varchar(15) = NULL AS --Luanlt 2019/10/17 Validate CORE NOTE không được rỗng --IF ((SELECT CORE_NOTE FROM TR_REQUEST_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) IS NULL OR (SELECT CORE_NOTE FROM TR_REQUEST_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = '') --Luanlt 2019/10/29 Sửa lại validate tồn tại diễn giải hạch toán từ REQUEST_ENTRIES_POST --IF (NOT EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID)) --BEGIN -- SELECT '-1' Result,'' REQ_PAY_ID,N'Chưa cập nhật thông tin hạch toán' ErrorDesc -- RETURN '-1' --END -- BEGIN VALIDATE IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE MAKER_ID_KT = @p_CHECKER_ID_KT AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị thanh toán này! Giao dịch viên không có quyền duyệt phiếu đề nghị thanh toán' ErrorDesc RETURN '-1' END IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_CHECKER_ID_KT AND TYPE_JOB = 'KS')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị thanh toán này. Phiếu đề nghị thanh toán đang được kiểm soát viên khác xử lý' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được kiểm soát viên phê duyệt trước đó' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về giao dịch viên. Vui lòng kiểm tra lại thông tin' ErrorDesc RETURN '-1' END -- CHAN CUOI IF (EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT <> 'P' AND AUTH_STATUS_KT <> 'S' AND REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' chưa được gửi phê duyệt. Vui lòng đợi người tạo gửi phê duyệt trước khi phê duyệt phiếu' ErrorDesc RETURN '-1' END -- VALIDATE LUOI HACH TOAN DECLARE @REQ_PAY_ID varchar(15), @ET_ID varchar(15), @AMT_ET DECIMAL(18,0), @ACC_ET varchar(25), @DRCR_ET varchar(25), @SUM_ET DECIMAL(18,0) = 0 DECLARE cursorProduct CURSOR LOCAL FOR SELECT REQ_PAY_ID,ENTRY_PAIR,AMT,ACCT,DR_CR FROM TR_REQ_PAY_ENTRIES A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID Open cursorProduct FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET WHILE @@FETCH_STATUS = 0 BEGIN IF(@DRCR_ET='C' AND EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET)) BEGIN SET @SUM_ET =(SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ACCT =@ACC_ET) IF(ISNULL(@SUM_ET,0) <> (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N' Số tiền hạch toán có của tài khoản: '+@ACC_ET + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACC_ET AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###') ErrorDesc RETURN '-1' END END -- KIEM TRA SO TIEN NO CO IF (ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ENTRY_PAIR =@ET_ID),0) <> ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D' AND ENTRY_PAIR =@ET_ID),0)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N' Số tiền bút toán Nợ phải bằng với số tiền bút toán Có' ErrorDesc RETURN '-1' END FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET END -- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN DECLARE @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2) SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0) SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0) IF(@SUM_CR <> @SUM_DR) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có' ErrorDesc RETURN '-1' END END -- END VALIDATE BEGIN TRANSACTION DECLARE @p_MAKER_ID VARCHAR(15) SET @p_MAKER_ID=(SELECT MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID) -- CAC BUOC DUYET DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT SET @LEVEL_JOB =(SELECT TOP 1 LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TYPE_JOB='KS') SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1 --- DECLARE @INDEX1 INT =0, @INDEX INT =0, @INDEX_AD INT =0 DECLARE @REQ_TYPE VARCHAR(15),@PAY_ADVANCE_ID VARCHAR(15),@AMT_PAY DECIMAL(18,0) DECLARE @PAY_ID VARCHAR(15),@PAY_PHASE VARCHAR(15), @AMT_ADVANCE DECIMAL(18,0),@SCHEDULE_ID VARCHAR(15),@AMT_PAY_REAL DECIMAL(18,2), @AMT_REMAIN DECIMAL(18,2),@REF_ID VARCHAR(15), @TRADED_ID VARCHAR(15), @AMT_EXE DECIMAL(18,2), @AMT_EXE_REMAIN DECIMAL(18,2), @AMT_ADD DECIMAL(18,2), @AMT_REVERT DECIMAL(18,2), @AD_PAY_ID VARCHAR(15),@PARENT_ID VARCHAR(15), @REASON_TTDK NVARCHAR(2000), @GD_ID VARCHAR(15) SET @REQ_TYPE =(SELECT REQ_TYPE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID) --- KIEM TRA XEM CO PHAI BUOC DUYET CUOI CUNG CHUA IF(@LEVEL_JOB='1') BEGIN ---TRU NGAN SACH DECLARE CURS_TRADE CURSOR FOR SELECT A.TRADE_ID, A.AMT_EXE,A.GD_ID FROM TR_REQ_PAY_BUDGET A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID OPEN CURS_TRADE FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE,@GD_ID WHILE @@FETCH_STATUS = 0 BEGIN IF(@REQ_TYPE <> 'P') BEGIN SET @INDEX = @INDEX +1 --IF(EXISTS(SELECT * FROM CM_GOODS WHERE GD_ID =@GD_ID AND GD_TYPE_ID ='NS')) --BEGIN -- SET @AMT_EXE_REMAIN =(SELECT A.AMT_APP - A.AMT_EXE FROM PL_TRADEDETAIL A WHERE A.TRADE_ID = @TRADED_ID) -- --KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET -- IF((@AMT_EXE_REMAIN -@AMT_EXE)<0) -- BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Ngân sách sử dụng thực tế đã vượt mức ngân sách sử dụng còn lại: '+ FORMAT(@AMT_EXE_REMAIN,'#,#', 'vi-VN') ErrorDesc -- RETURN '-1' -- END --END END UPDATE PL_TRADEDETAIL SET AMT_EXE = ISNULL(AMT_EXE,0) + @AMT_EXE*(SELECT TOP 1 RATE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) WHERE TRADE_ID =@TRADED_ID FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE,@GD_ID END CLOSE CURS_TRADE DEALLOCATE CURS_TRADE ---- IF(@REQ_TYPE ='I') BEGIN DECLARE CURS CURSOR FOR SELECT A.PAY_ADV_ID,A.AMT_USE,A.AMT_ADD,A.AMT_REVERT FROM TR_REQ_PAYMENT_DT A WHERE A.PAY_ID =@p_REQ_PAY_ID OPEN CURS FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT WHILE @@FETCH_STATUS = 0 BEGIN SET @INDEX_AD = @INDEX_AD +1 --KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADVANCE_ID)<=0) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng này đã được hoàn tạm ứng xong. Vui lòng xóa khỏi danh sách hoàn tạm ứng' ErrorDesc RETURN '-1' END UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT = ISNULL(PAY_AMT,0)+@AMT_PAY +@AMT_REVERT-@AMT_ADD WHERE REQ_PAY_ID=@PAY_ADVANCE_ID -- NEU HOAN UNG PDN TAM UNG HD DINH KI THI CUNG PHAI UPDATE --UPDATE TR_REQ_PAY_PERIOD SET PROCESS ='2' WHERE REQ_PAY_ID =@PAY_ADVANCE_ID UPDATE TR_REQ_PAY_SCHEDULE SET PROCESS ='2' WHERE REQ_PAY_ID =@PAY_ADVANCE_ID -- UPDATE PDN TAM UNG THANH PROCESS = 2 ==> DA HOAN UNG DECLARE @PAY_AMOUNT_I DECIMAL(18,0),@PAY_DT_I DATETIME,@l_CONTRACT_ID_I VARCHAR(15), @OLD_INDEX_I DECIMAL(18, 0), @NEW_INDEX_I DECIMAL(18, 0), @PARENT_ID_I VARCHAR(15), @PAY_PHASE_I VARCHAR(15), @AD_PAY_ID_I VARCHAR(15), @PROCESS_I VARCHAR(15), @REASON_TTDK_I VARCHAR(15) DECLARE CURS_PERIOD_I CURSOR FOR SELECT A.AMT_PAY,A.PAY_DT_REAL,A.CONTRACT_ID,A.PAY_PHASE,A.AD_PAY_ID,A.PROCESS,A.PARENT_ID,A.REASON, A.OLD_INDEX, A.NEW_INDEX FROM TR_REQ_PAY_PERIOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID ORDER BY A.CONTRACT_ID OPEN CURS_PERIOD_I FETCH NEXT FROM CURS_PERIOD_I INTO @PAY_AMOUNT_I ,@PAY_DT_I ,@l_CONTRACT_ID_I,@PAY_PHASE_I,@AD_PAY_ID_I, @PROCESS_I,@PARENT_ID_I,@REASON_TTDK_I, @OLD_INDEX_I, @NEW_INDEX_I WHILE @@FETCH_STATUS = 0 BEGIN UPDATE TR_REQ_PAY_PERIOD SET PROCESS ='2' WHERE (PERIOD_ID =@PARENT_ID_I OR AD_PAY_ID =@PARENT_ID_I) AND PAY_TYPE ='ADV_PAY' AND PAY_PHASE = @PAY_PHASE_I AND CONTRACT_ID = @l_CONTRACT_ID_I AND OLD_INDEX = @OLD_INDEX_I AND NEW_INDEX = @NEW_INDEX_I IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM CURS_PERIOD_I INTO @PAY_AMOUNT_I ,@PAY_DT_I ,@l_CONTRACT_ID_I,@PAY_PHASE_I,@AD_PAY_ID_I, @PROCESS_I,@PARENT_ID_I,@REASON_TTDK_I, @OLD_INDEX_I, @NEW_INDEX_I END CLOSE CURS_PERIOD_I DEALLOCATE CURS_PERIOD_I FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT END CLOSE CURS DEALLOCATE CURS END -- KIEM TRA NEU LA THANH TOAN PO ELSE IF((@REQ_TYPE ='P' AND ((SELECT IS_PERIOD FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) <>'Y' OR (SELECT IS_PERIOD FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) IS NULL )) OR (@REQ_TYPE ='I')) BEGIN DECLARE @PROCESS VARCHAR(15), @PDN_TAM_UNG VARCHAR(15), @SO_TIEN_TAM_UNG DECIMAL(18,0) DECLARE CURS_AD CURSOR FOR SELECT A.SCHEDULE_ID,A.AMT_PAY_DO,A.PAY_ID,A.PAY_PHASE,A.AMT_ADVANCE,A.AMT_PAY_REAL, A.AMT_REMAIN,A.REF_ID,A.PROCESS FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID OPEN CURS_AD FETCH NEXT FROM CURS_AD INTO @SCHEDULE_ID,@AMT_PAY,@PAY_ID,@PAY_PHASE,@AMT_ADVANCE,@AMT_PAY_REAL, @AMT_REMAIN,@REF_ID,@PROCESS WHILE @@FETCH_STATUS = 0 BEGIN SET @INDEX1 = @INDEX1 +1 -- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET --IF((SELECT MIN(A.AMT_REMAIN) FROM TR_REQ_PAY_SCHEDULE A WHERE A.PAY_ID = @PAY_ID GROUP BY A.PAY_ID )=0) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX1)+ N':Kì '+ @PAY_PHASE+N' đã thanh toán xong' ErrorDesc -- RETURN '-1' --END IF(@AMT_ADVANCE >0 AND @AMT_PAY=0) BEGIN UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTU' WHERE SCHEDULE_ID=@SCHEDULE_ID END ELSE IF(@AMT_PAY_REAL>0) BEGIN UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTT' WHERE SCHEDULE_ID=@SCHEDULE_ID END ELSE IF(@AMT_PAY=0 AND @AMT_ADVANCE =0 AND @AMT_PAY_REAL =0) BEGIN UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='CTT' WHERE SCHEDULE_ID=@SCHEDULE_ID END ELSE IF(@AMT_REMAIN =0) BEGIN UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='TTX' WHERE SCHEDULE_ID=@SCHEDULE_ID END -- HOAN TAM UNG 100% CHO 1 DOT THANH TOAN PO NAO DO IF(@PROCESS ='2') BEGIN SET @PDN_TAM_UNG = (SELECT TOP 1 REQ_PAY_ID FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' ORDER BY SCHEDULE_ID) SET @SO_TIEN_TAM_UNG =(SELECT TOP 1 AMT_PAY_REAL FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' ORDER BY SCHEDULE_ID) UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT =ISNULL(PAY_AMT,0) + @SO_TIEN_TAM_UNG WHERE REQ_PAY_ID =@PDN_TAM_UNG -- CAP NHAT DOT TAM UNG VE TINH TRANG LA DA HOAN TAM UNG UPDATE TR_REQ_PAY_SCHEDULE SET PROCESS ='2' WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' AND REQ_PAY_ID=@PDN_TAM_UNG END IF(@PROCESS ='0') BEGIN SET @PDN_TAM_UNG = (SELECT TOP 1 REQ_PAY_ID FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' ORDER BY SCHEDULE_ID) SET @SO_TIEN_TAM_UNG =(SELECT TOP 1 AMT_PAY_REAL FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' ORDER BY SCHEDULE_ID) UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT =ISNULL(PAY_AMT,0) + @SO_TIEN_TAM_UNG WHERE REQ_PAY_ID =@PDN_TAM_UNG -- CAP NHAT DOT TAM UNG VE TINH TRANG LA DA HOAN TAM UNG UPDATE TR_REQ_PAY_SCHEDULE SET PROCESS ='2' WHERE PAY_ID =@PAY_ID AND TRN_TYPE ='ADV_PAY' AND REQ_PAY_ID=@PDN_TAM_UNG END --UPDATE TR_REQ_ADVANCE_PAYMENT --SET PAY_AMT = ISNULL(PAY_AMT,0)+@AMT_PAY FETCH NEXT FROM CURS_AD INTO @SCHEDULE_ID,@AMT_PAY,@PAY_ID,@PAY_PHASE,@AMT_ADVANCE,@AMT_PAY_REAL, @AMT_REMAIN,@REF_ID,@PROCESS END CLOSE CURS_AD DEALLOCATE CURS_AD DECLARE @IS_CLOSED VARCHAR(1) DECLARE CURS_PO CURSOR FOR SELECT A.REF_ID, A.IS_CLOSED FROM TR_REQ_ADVANCE_DT A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID OPEN CURS_PO FETCH NEXT FROM CURS_PO INTO @REF_ID , @IS_CLOSED WHILE @@FETCH_STATUS = 0 BEGIN -- BAT DAU KIEM TRA DONG PO IF(@IS_CLOSED ='Y') BEGIN IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@REF_ID)) BEGIN UPDATE TR_CONTRACT SET IS_CLOSED='Y' WHERE CONTRACT_ID =@REF_ID END ELSE BEGIN UPDATE TR_PO_MASTER SET IS_CLOSED='Y' WHERE PO_ID =@REF_ID END END ELSE BEGIN DECLARE @TOAL_PAY_REAL DECIMAL(18,2) =0,@TOAL_PAY_DK DECIMAL(18,2) =0, @TOTAL_AMT_BACK DECIMAL(18,2) -- TONG SO TIEN THANH TOAN VA HOAN UNG SET @TOAL_PAY_REAL =(SELECT SUM(AMT_PAY_REAL) FROM TR_REQ_PAY_SCHEDULE WHERE REF_ID=@REF_ID) -- @TOTAL_AMT_BACK: TONG SO TIEN CON LAI CAN THANH TOAN SET @TOTAL_AMT_BACK =(SELECT SUM(AMT_REMAIN) FROM TR_REQ_PAY_SCHEDULE WHERE REF_ID=@REF_ID AND REQ_ADV_ID IS NOT NULL) IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@REF_ID)) BEGIN -- @TOAL_PAY_DK: TONG SO TIEN TAT CA KY THANH TOAN SET @TOAL_PAY_DK =(SELECT SUM(AMOUNT) FROM TR_CONTRACT_PAYMENT WHERE CONTRACT_ID=@REF_ID) IF((@TOAL_PAY_DK-@TOAL_PAY_REAL-@TOTAL_AMT_BACK)=0) BEGIN UPDATE TR_CONTRACT SET IS_CLOSED='Y' WHERE CONTRACT_ID =@REF_ID END END BEGIN SET @TOAL_PAY_DK =(SELECT SUM(AMOUNT) FROM TR_PO_PAYMENT WHERE PO_ID=@REF_ID) IF((@TOAL_PAY_DK- @TOAL_PAY_REAL-@TOTAL_AMT_BACK)=0) BEGIN UPDATE TR_PO_MASTER SET IS_CLOSED='Y' WHERE PO_ID =@REF_ID END END END FETCH NEXT FROM CURS_PO INTO @REF_ID , @IS_CLOSED END -- KET THUC KIEM TRA DONG PO CLOSE CURS_PO DEALLOCATE CURS_PO END -- KET THUC KIEM TRA NEU LA THANH TOAN PO --- KIEM TRA NEU LA THANH TOAN CAC HOP DONG DINH KI ELSE IF((@REQ_TYPE ='P' AND (SELECT IS_PERIOD FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ='Y') OR (@REQ_TYPE ='I')) BEGIN UPDATE TR_REQ_PAY_PERIOD SET PAY_DT_REAL = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID DECLARE @PAY_AMOUNT DECIMAL(18,0),@PAY_DT DATETIME,@l_CONTRACT_ID VARCHAR(15), @OLD_INDEX DECIMAL(18, 0), @NEW_INDEX DECIMAL(18, 0) DECLARE CURS_PERIOD CURSOR FOR SELECT A.AMT_PAY,A.PAY_DT_REAL,A.CONTRACT_ID,A.PAY_PHASE,A.AD_PAY_ID,A.PROCESS,A.PARENT_ID,A.REASON, A.OLD_INDEX, A.NEW_INDEX FROM TR_REQ_PAY_PERIOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID ORDER BY A.CONTRACT_ID OPEN CURS_PERIOD FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@PAY_PHASE,@AD_PAY_ID, @PROCESS,@PARENT_ID,@REASON_TTDK, @OLD_INDEX, @NEW_INDEX WHILE @@FETCH_STATUS = 0 BEGIN IF(@PROCESS ='1') BEGIN DECLARE @l_PAY_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],[PAY_DT], [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT]) VALUES(@PAY_AMOUNT,CONVERT(DATE,@PAY_DT,103), @l_PAY_ID ,@l_CONTRACT_ID ,@PAY_PHASE ,CONVERT(DATE,@PAY_DT,103),100,@PAY_AMOUNT,'1',@REASON_TTDK ,'1' ,@p_MAKER_ID ,GETDATE() ,'A' ,@p_CHECKER_ID_KT,GETDATE()) END ELSE BEGIN IF(@PROCESS ='2' AND (@AD_PAY_ID IS NULL OR @AD_PAY_ID ='')) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_PAY_ID,N'Lưới chi tiết thanh toán định kì: Tại hình thức thanh toán Hoàn ứng, số phiếu tạm ứng không được phép để trống' ErrorDesc RETURN '-1' END UPDATE TR_REQ_PAY_PERIOD SET PROCESS ='2' WHERE (PERIOD_ID =@PARENT_ID OR AD_PAY_ID =@PARENT_ID) AND PAY_TYPE ='ADV_PAY' AND PAY_PHASE = @PAY_PHASE AND CONTRACT_ID = @l_CONTRACT_ID AND OLD_INDEX = @OLD_INDEX AND NEW_INDEX = @NEW_INDEX UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT = ISNULL(PAY_AMT, 0) + @PAY_AMOUNT WHERE REQ_PAY_ID =@AD_PAY_ID END IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@PAY_PHASE,@AD_PAY_ID, @PROCESS,@PARENT_ID,@REASON_TTDK, @OLD_INDEX, @NEW_INDEX END CLOSE CURS_PERIOD DEALLOCATE CURS_PERIOD END ---END UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT='A', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT = GETDATE() WHERE REQ_PAY_ID = @p_REQ_PAY_ID -- DOANPTT 291222: THEM LOG KPI UPDATE TR_REQ_KPI SET AUTH_STATUS_KT ='A', APPROVE_DT_KT = GETDATE(),CHECKER_ID_KT = @p_CHECKER_ID_KT, REQ_STATUS = 'APP' WHERE REQ_ID = @p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P' ---UPDATE DETAIL UPDATE TR_REQ_PAYMENT_DT SET AUTH_STATUS_KT='A',CHECKER_ID_KT =@p_CHECKER_ID_KT,APPROVE_DT_KT = GETDATE() WHERE PAY_ID =@p_REQ_PAY_ID -- UPDATE SCHEDULE UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID -- UPDATE PERIOD UPDATE TR_REQ_PAY_PERIOD SET AUTH_STATUS_KT='A' WHERE REQ_PAY_ID =@p_REQ_PAY_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_ID,'APP',@p_CHECKER_ID_KT,GETDATE(), N'Kiểm soát viên phê duyệt phiếu',N'Kế toán duyệt phiếu') IF @@Error <> 0 GOTO ABORT UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TYPE_JOB ='KS' AND LEVEL_JOB =@LEVEL_JOB --thieuvq ban vao core - 171219 BEGIN DECLARE @MAKER VARCHAR(15) = (SELECT MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) DECLARE @RES VARCHAR(10) --- BAN BUT TOAN VAO CORE EXEC [dbo].[PAY_ENTRIES_POST_SetApp] @p_REQ_PAY_ID,@MAKER,@p_CHECKER_ID_KT, @RES OUT --END END ELSE BEGIN -- CAP NHAT C CHO CAP CHA UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_CHECKER_ID_KT UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV) SELECT '2' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Xác nhận phiếu thành công' ErrorDesc RETURN '2' END COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được 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'Altering [dbo].[CON_LAYOUT_BLUEPRINT_SendApp]' GO ALTER PROC [dbo].[CON_LAYOUT_BLUEPRINT_SendApp] @p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(20), @p_PROCESS_ID VARCHAR(20), @p_TLNAME VARCHAR(20), @p_MAKER_ID VARCHAR(20) AS BEGIN TRANSACTION IF(NOT EXISTS(SELECT * FROM CM_ATTACH_FILE WHERE REF_ID = @p_CON_LAYOUT_BLUEPRINT_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Vui lòng đính kèm file pdf bản vẽ' ErrorDesc RETURN -1 END DECLARE @BRANCH_ID VARCHAR(15),@DEP_ID VARCHAR(15) SET @BRANCH_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME = @p_TLNAME) SET @DEP_ID = (SELECT SECUR_CODE FROM TL_USER WHERE TLNANME = @p_TLNAME) -- KIỂM TRA XEM CÓ CẤP PHÊ DUYỆT TRUNG GIAN HAY KHÔNG IF(EXISTS(SELECT * FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>'')) BEGIN DELETE PL_REQUEST_PROCESS WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID DECLARE @BRANCH_SIGN_ID VARCHAR(20),@DEP_SIGN_ID VARCHAR(20),@BRANCH_SIGN_TYPE VARCHAR(10),@ROLE_SIGN VARCHAR(20) SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID ) INSERT INTO dbo.PL_REQUEST_PROCESS(REQ_ID,PROCESS_ID,[STATUS], ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'SIGN','C',@ROLE_SIGN,@BRANCH_SIGN_ID,CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END,'',NULL,'','N','','',N'Chờ cấp phê duyệt trung gian xác nhận phiếu',NULL) INSERT INTO dbo.PL_REQUEST_PROCESS(REQ_ID,PROCESS_ID,[STATUS], ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'APPNEW','U','GDDV',@BRANCH_ID,@DEP_ID,'',NULL,'SIGN','N','','',N'Chờ trưởng đơn vị phê duyệt',NULL) -- SET CHỜ DUYỆT UPDATE CON_LAYOUT_BLUEPRINT SET AUTH_STATUS = 'U',PROCESS_ID = 'SIGN' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID END ELSE BEGIN DELETE PL_REQUEST_PROCESS WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID INSERT INTO dbo.PL_REQUEST_PROCESS(REQ_ID,PROCESS_ID,[STATUS], ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'APPNEW','C','GDDV',@BRANCH_ID,@DEP_ID,'',NULL,'','N','','',N'Chờ trưởng đơn vị phê duyệt',NULL) -- SET CHỜ DUYỆT UPDATE CON_LAYOUT_BLUEPRINT SET AUTH_STATUS = 'U',PROCESS_ID = 'APPNEW' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID END -- KIỂM TRA LOẠI LAYOUT IF ((SELECT LAYOUT_TYPE FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID) = 'PGD') BEGIN -- GĐK HỖ TRỢ INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'GDK_HT','U', 'GDK','','','',NULL,'APPNEW','N','','DM0000000000015', N'Chờ GĐK hỗ trợ phê duyệt',NULL) --start hieuhm 1/12/2022 duyệt bỏ qua PTGD TC -- PTGD KHỐI TÀI CHÍNH --INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) --VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_TC','U', 'PTGD','','','',NULL,'GDK_HT','N','','DM0000000000017', N'Chờ PTGĐ Khối tài chính phê duyệt',NULL) --end hieuhm 1/12/2022 duyệt bỏ qua PTGD TC -- PTGD KHỐI VẬN HÀNH INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_VH','U', 'PTGD','','','',NULL,'GDK_HT','N','','DM0000000000019', N'Chờ PTGĐ Khối vận hành phê duyệt',NULL) -- PTGD KHỐI HỖ TRỢ - LUCTV FIX 10.11.2022 DO KHOI HO TRO KHONG CON PTGD --INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) --VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_HT','U', 'PTGD','','','',NULL,'PTGD_VH','N','','DM0000000000015', N'Chờ PTGĐ Khối hỗ trợ phê duyệt',NULL) -- HOÀN THÀNH INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'APPROVE','U', '','','','',NULL,'PTGD_VH','','','', N'Hoàn tất',NULL) END ELSE BEGIN -- GĐK HỖ TRỢ INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'GDK_HT','U', 'GDK','','','',NULL,'APPNEW','N','','DM0000000000015', N'Chờ GĐK hỗ trợ phê duyệt',NULL) --start hieuhm 1/12/2022 duyệt bỏ qua PTGD TC -- PTGD KHỐI TÀI CHÍNH --INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) --VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_TC','U', 'PTGD','','','',NULL,'GDK_HT','N','','DM0000000000017', N'Chờ PTGĐ Khối tài chính phê duyệt',NULL) --end hieuhm 1/12/2022 duyệt bỏ qua PTGD TC -- PTGD KHỐI VẬN HÀNH INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_VH','U', 'PTGD','','','',NULL,'GDK_HT','N','','DM0000000000019', N'Chờ PTGĐ Khối vận hành phê duyệt',NULL) -- PTGD KHỐI HỖ TRỢ --INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) --VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_HT','U', 'PTGD','','','',NULL,'PTGD_VH','N','','DM0000000000015', N'Chờ PTGĐ Khối hỗ trợ phê duyệt',NULL) --- THU KY TONG GIAM DOC -- LUCTV 10.11.2022 INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'TKTGD','U', 'TKTGD','','','',NULL,'PTGD_VH','N','','', N'Chờ Thư Ký TGĐ xác nhận',NULL) -- TỔNG GIẢM ĐÓC INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'TGD','U', 'TGD','','','',NULL,'TKTGD','N','','', N'Chờ Tổng giám đốc phê duyệt',NULL) -- HOÀN THÀNH INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD) VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'APPROVE','U', '','','','',NULL,'TGD','','','', N'Hoàn tất',NULL) END INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CON_LAYOUT_BLUEPRINT_ID, 'SEND', @p_MAKER_ID, GETDATE(), N'Gửi phê duyệt layout bản vẽ thành công' , N'Gửi phê duyệt layout bản vẽ' ) COMMIT TRANSACTION SELECT '0' as Result, N'GỬI PHÊ DUYỆT THÀNH CÔNG' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION; SELECT '-1' AS Result, '' ROLE_NOTIFI, '' ErrorDesc; RETURN '-1'; END; GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[rpt_BDS_BC03_Excel]' GO --BAO CAO BAT DONG SAN DA SU DUNG HAY CHUA SU DUNG ALTER PROCEDURE [dbo].[rpt_BDS_BC03_Excel] @p_Fromdate varchar(20) = null, @p_Todate varchar(20) = null, @P_USE_STATUS varchar(15)= null, @p_BRANCH_LOGIN VARCHAR(15) = NULL, @P_BRANCH_ID VARCHAR(15) = NULL, @P_LEVEL VARCHAR(15) = 'ALL' AS BEGIN DECLARE @FROM_DT DATETIME = CONVERT(DATE,@p_Fromdate,103) DECLARE @TO_DT DATETIME = CONVERT(DATE, @p_Todate, 103) declare @tmp table(BRANCH_ID varchar(15)) if(@P_LEVEL = 'ALL') BEGIN insert into @tmp select * from CM_BRANCH_GETCHILDID(@P_BRANCH_ID) END ELSE BEGIN INSERT INTO @tmp SELECT @P_BRANCH_ID AS BRANCH_ID END --SELECT --ROW_NUMBER() OVER (ORDER BY RET.ASSET_ID ASC) AS STT, --BRANCH_USE AS BRANCH_USE_NAME, --BRMN.BRANCH_NAME AS BRANCH_MANAGE_NAME, --RET.ADDR, LAND_SQUARE, CONSTRUCT_SQUARE, FLOORS, TOTAL_SQUARE, W_USE_CON --FROM RET_MASTER RET --INNER JOIN ASS_MASTER ASS ON RET.ASSET_ID = ASS.ASSET_ID --LEFT JOIN CM_BRANCH BRMN ON ASS.BRANCH_ID = BRMN.BRANCH_ID --INNER JOIN @tmp T ON ASS.BRANCH_ID = T.BRANCH_ID --WHERE RET.USE_STATUS = @P_USE_STATUS --AND (@p_Fromdate IS NULL OR @p_Fromdate = '' OR RET.BUY_DT <= @FROM_DT) -- AND ASS.BRANCH_ID IS NOT NULL -- AND RET.AUTH_STATUS = 'A' AND RET.RECORD_STATUS = '1' -- AND ASS.BRANCH_ID IS NOT NULL ------------BAODNQ 4/4/2022------------------------ SELECT ROW_NUMBER() OVER (ORDER BY A.RET_ID ASC) AS STT, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE_ID,'KV') AS KHU_VUC, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE_ID,'CN') AS CHI_NHANH, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE_ID,'PGD') AS CHI_NHANH_PGD, CRU.REGION_NAME AS KHU_VUC, CBU.BRANCH_NAME AS CHI_NHANH_PGD, [dbo].[FN_GET_CITY_FROM_BRANCH](A.BRANCH_USE_ID) AS THANH_PHO, A.RET_ID, A.ADDR AS ADDRESS, --[dbo].[FN_GET_CHINHANH](A.BRANCH_USE_ID,'PGD') AS PGD, A.LAND_SQUARE AS LAND_SQUARE, OT.CONTENT AS OWNER_TYPE, A.TOTAL_SQUARE, CASE WHEN A.USE_PERIOD = 0 THEN 'Lâu dài' ELSE CONVERT(VARCHAR(20), A.USE_PERIOD_DT, 103) END AS USE_PERIOD, A.CURRENT_STATE, CASE WHEN B.GROUP_ID IN ('ASG000000001195', 'ASG000000001196', 'ASG000000001197', 'ASG000000001198') THEN B.BUY_PRICE ELSE NULL END AS BUY_PRICE, --Giá trị TS trên đất CASE WHEN B.GROUP_ID IN ('ASG000000001360', 'ASG000000001361', 'ASG000000001362') THEN B.BUY_PRICE ELSE NULL END AS QSDD, --Giá trị QSDĐ ( --SELECT ISNULL(SUM(AAV.AMORT_AMT),0) --FROM ASS_AMORT_VIEW AAV --WHERE AAV.ASSET_ID = B.ASSET_ID --AND (AAV.EXECUTE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') SELECT ISNULL(SUM(AAD.AMORT_AMT),0) FROM ASS_AMORT_DT AAD WHERE AAD.ASSET_ID = B.ASSET_ID AND (AMORT_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') ) AS AMORTIZED_AMT, ISNULL( B.AMORT_AMT - --( -- SELECT ISNULL(SUM(AAV.AMORT_AMT),0) -- FROM ASS_AMORT_VIEW AAV -- WHERE AAV.ASSET_ID = B.ASSET_ID -- AND (AAV.EXECUTE_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') --), ( SELECT ISNULL(SUM(AAD.AMORT_AMT),0) FROM ASS_AMORT_DT AAD WHERE AAD.ASSET_ID = B.ASSET_ID AND (AMORT_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') ), 0) AS REMAIN_AMORT, --'' AS MARKET_PRICE, ( SELECT ISNULL(SUM(RR.TOTAL_AMT_CONSTRUCT),NULL) FROM RET_REPAIR_SUGGEST RR WHERE RR.RET_ID = A.RET_ID ) AS CONSTRUCT, ( SELECT ISNULL(SUM(RR.TOTAL_AMT_REPAIR),NULL) FROM RET_REPAIR_SUGGEST RR WHERE RR.RET_ID = A.RET_ID ) AS REPAIR, ( SELECT ISNULL(SUM(RTS.TOTAL_AMT), NULL) FROM RET_TAX_SCHEDULE RTS WHERE RTS.RET_ID = A.RET_ID ) AS LAND_TAX, CASE WHEN A.CONST_STATUS = 'XD/SC' THEN N'Đang XD/SC' ELSE '' END AS REPAIR_CONSTRUCT, B.BUY_DATE, --B.AMORT_START_DATE, ------------Thời gian đã khấu hao(tháng)-------------- CONVERT(VARCHAR(20), CAST(ROUND(B.AMORTIZED_MONTH - ISNULL(AMT.ST_KH_PD_TAM,0), 0) AS INT) ) + N' tháng' AS AMORTIZED_DURATION, CONVERT(VARCHAR, CAST(B.AMORT_MONTH AS INT)) + N' tháng' AS DURATION FROM RET_MASTER A INNER JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID LEFT JOIN CM_BRANCH D ON B.BRANCH_ID = D.BRANCH_ID LEFT JOIN CM_ALLCODE OT ON A.OWNER_TYPE = OT.CDVAL AND OT.CDTYPE = 'RET' AND OT.CDNAME = 'OWNER_TYPE' --LEFT JOIN RET_REPAIR E ON A.RET_ID = E.RET_ID LEFT JOIN CM_BRANCH CBU ON A.BRANCH_USE_ID = CBU.BRANCH_ID --đơn vị sử dụng LEFT JOIN CM_REGIONS CRU ON CBU.REGION_ID = CRU.REGION_ID -- khu vực -- TINH SO THANG DA KHAU HAO = AMORTED_MONTH - SỐ THÁNG ĐÃ KHẤU HAO : AMORT_DT > TO_DATE 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 SELECT AM_DT.ASSET_ID, ISNULL(COUNT (*),0) AS ST_KH_PD_TAM FROM ASS_AMORT_DT AM_DT WHERE AM_DT.CRDR='C' --AND (CONVERT(DATE,AM_DT.AMORT_DT) > CONVERT(DATE,@TO_DT,103) OR @TO_DT IS NULL OR @TO_DT = '') AND (CONVERT(DATE,AM_DT.AMORT_DT) <= CONVERT(DATE,@TO_DT,103) OR @TO_DT IS NULL OR @TO_DT = '') GROUP BY AM_DT.ASSET_ID ) AMT ON AMT.ASSET_ID = A.ASSET_ID WHERE A.USE_STATUS = @P_USE_STATUS AND (A.BUY_DT >= @FROM_DT OR @FROM_DT IS NULL OR @FROM_DT = '') AND (A.BUY_DT <= @TO_DT OR @TO_DT IS NULL OR @TO_DT = '') AND A.AUTH_STATUS = 'A' AND A.RECORD_STATUS = '1' AND A.BRANCH_CREATE IS NOT NULL AND (A.BRANCH_USE_ID IN (SELECT BRANCH_ID FROM @tmp) OR A.BRANCH_USE_ID IS NULL OR A.BRANCH_USE_ID = '' ) END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CAR_DRIVE_Appr]' GO ALTER PROCEDURE [dbo].[CAR_DRIVE_Appr] @p_CAR_DR_ID VARCHAR(15) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(15) = NULL AS DECLARE @sErrorCode VARCHAR(20) DECLARE @aStatus VARCHAR(1) --Put validation here SET @sErrorCode = '' SELECT @aStatus = [AUTH_STATUS] FROM CAR_DRIVE WHERE CAR_DR_ID = @p_CAR_DR_ID IF @aStatus = 'A' SET @sErrorCode = 'CARD-00002' IF @sErrorCode <> '' BEGIN SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode RETURN 0 END DECLARE @Error NVARCHAR(MAX) SET @Error = (SELECT stuff((SELECT ',' + A.REQ_CODE FROM (SELECT * FROM TR_REQUEST_CAR A WHERE A.IS_CAR_DRIVE = 0) A JOIN (SELECT tmp.CAR_ID,tmp.REQ_CAR_ID,tmp1.START_TIME_TRIP FROM CAR_DRIVE tmp JOIN TR_REQUEST_CAR tmp1 ON tmp.REQ_CAR_ID = tmp1.REQ_ID WHERE tmp.CAR_DR_ID = @p_CAR_DR_ID) B ON (A.START_TIME_TRIP '' BEGIN SELECT '-1' Result, @Error +N'. Cần tạo và phê duyệt vận hành trước khi phê duyệt phiếu vận hành hiện tại' ErrorDesc RETURN '-1' END SET @Error = (SELECT stuff((SELECT ',' + A.REQ_CODE FROM (SELECT * FROM TR_REQUEST_CAR A WHERE A.IS_CAR_DRIVE = 0) A JOIN (SELECT tmp.CAR_ID,tmp.REQ_CAR_ID,tmp1.START_TIME_TRIP FROM CAR_DRIVE tmp JOIN TR_REQUEST_CAR tmp1 ON tmp.REQ_CAR_ID = tmp1.REQ_ID WHERE tmp.CAR_DR_ID = @p_CAR_DR_ID) B ON (A.START_TIME_TRIP'A' FOR XML PATH ('') ), 1, 1, '')) IF @Error <> '' BEGIN SELECT '-1' Result, @Error +N'. Cần phê duyệt vận hành trước khi phê duyệt phiếu vận hành hiện tại' ErrorDesc RETURN '-1' END BEGIN TRANSACTION BEGIN UPDATE CAR_DRIVE SET AUTH_STATUS = @p_AUTH_STATUS, CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(datetime, @p_APPROVE_DT, 103) WHERE CAR_DR_ID = @p_CAR_DR_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'Altering [dbo].[TR_REQ_PAYMENT_KT_Upd]' GO ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_KT_Upd] @p_REQ_PAY_ID varchar(15)= NULL, @p_REQ_PAY_CODE varchar(50) = NULL, @p_REQ_DT VARCHAR(20)= NULL, @p_BRANCH_ID varchar(15) = NULL, @p_DEP_ID varchar(15) = NULL, @p_REQ_REASON nvarchar(MAX) = NULL, @p_REQ_TYPE varchar(15) = NULL, @P_REQ_ENTRIES nvarchar(MAX) = NULL, @p_REQ_DESCRIPTION nvarchar(MAX) = NULL, @p_REF_ID varchar(15) = NULL, @p_RECEIVER_PO nvarchar(250) = NULL, @p_REQ_PAY_TYPE varchar(15) = NULL, @p_REQ_TYPE_CURRENCY nvarchar(50) = NULL, @p_RATE DECIMAL(18,2) = NULL, @p_REQ_AMT decimal(18, 0) = NULL, @p_REQ_TEMP_AMT decimal(18, 0) = NULL, @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT varchar(25) = NULL, @p_EDITOR_ID varchar(15) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT varchar(25) = NULL, @p_CREATE_DT_KT varchar(25) = NULL, @p_MAKER_ID_KT varchar(15) = NULL, @p_AUTH_STATUS_KT varchar(1) = NULL, @p_CHECKER_ID_KT varchar(1) = NULL, @p_APPROVE_DT_KT varchar(25)= null, @p_CONFIRM_NOTE nvarchar(500) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_NOTES varchar(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_TRANSFER_MAKER nvarchar(50) = NULL, @p_TRANSFER_DT varchar(25) = NULL, @p_TRASFER_USER_RECIVE varchar(15) = NULL, @p_PROCESS varchar(15) = NULL, @p_PAY_PHASE VARCHAR(15) = NULL, @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_XMP_TEMP_DATA_ENTRIES XML = NULL, @p_XMP_TEMP_INVOICE XML = NULL, @p_XMP_TEMP_VAT_INVOICE XML = NULL, --doanptt 14/03/2022 @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_TRANS XML = NULL, @p_XMP_TEMP_DATA_TRANSFER_OUTSIDE_REC XML = NULL AS -- BEGIN VALIDATE UPDATE IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_MAKER_ID_KT AND TYPE_JOB = 'XL')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị thanh toán này. Phiếu đề nghị thanh toán đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc RETURN '-1' END IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R') BEGIN SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị thanh toán đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt thành công trước đó!' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt kế toán thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc RETURN '-1' END -- END VALIDATE UPDATE 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) DECLARE @hdoc INT; DECLARE @hdocInvoice INT; DECLARE @hdocVATInvoice INT; EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP_DATA_ENTRIES; EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE; EXEC sp_xml_preparedocument @hdocVATInvoice OUTPUT, @p_XMP_TEMP_VAT_INVOICE; --hoa don khong co VAT DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdocInvoice, '/Root/XmlData', 2) WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15), GOODS_NAME nvarchar(250), PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,0), VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15)) OPEN XmlData DECLARE @INDEX INT =0, @INDEX_IV INT =0, @INDEX_VAT INT =0, @INDEX_REC INT = 0; BEGIN TRANSACTION -- KHAI BAO CAC BUOC DUYET- XAC NHAN DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT AND STATUS_JOB='C') SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1 UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT,CHECKER_ID_KT=NULL,APPROVE_DT_KT = NULL, CONFIRM_NOTE=@p_CONFIRM_NOTE WHERE REQ_PAY_ID =@p_REQ_PAY_ID -- DOANPTT 291222: THEM LOG KPI UPDATE TR_REQ_KPI SET AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTE, REQ_REASON = @p_REQ_REASON WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' ------------------------------------------------------------------------- BEGIN LUOI HACH TOAN ----------------------------------------------------------------------- IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL) BEGIN -- hach toan 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_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID 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 print '@ENTRY_PAIR: ' + @ENTRY_PAIR print 'req_pay_id: ' + @p_REQ_PAY_ID 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 --IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ISNULL(TAX,0) >0 AND ISNULL(VAT,0) >0 AND TYPE_FUNC ='KT')) --BEGIN -- IF(@ACCT ='353200002' OR @ACCT ='353200001') -- BEGIN -- SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán, dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Bạn không được phép hạch toán tài khoản 353200002,353200001 giao dịch không chứa các hóa đơn có VAT do kế toán lưu trữ ' ErrorDesc -- RETURN '-1' -- END --END select * from TR_REQ_PAY_ENTRIES --doanptt 20/04/2022 IF(@ACCT = '353200002') BEGIN IF(NOT EXISTS(SELECT * FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2))) 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': Lưới hóa đơn đính kèm không có hóa đơn chứa VAT. Vui lòng xóa tài khoản nợ 353200002 trước khi gửi phê duyệt' ErrorDesc RETURN '-1' END END /* -- DOANPTT 11/11/22: BỔ SUNG TRƯỜNG HỢP BỊ KHUẤT CHÂN NỢ HOẶC CHÂN CÓ IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') >= 1 AND (SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') = 0) BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Nợ - 0 Có)' ErrorDesc RETURN '-1' END IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') = 0 AND (SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') >= 1) BEGIN ROLLBACK TRANSACTION CLOSE XmlDataEntries; DEALLOCATE XmlDataEntries; SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - 0 Nợ)' ErrorDesc RETURN '-1' END */ END -- END IF VALIDATE /* IF(@ACCT = '353200002') BEGIN DECLARE @SUMVAT DECIMAL(18,0) = 0 DECLARE @SUM3532 DECIMAL(18,0) = 0 DECLARE @tmp3532 TABLE( AMT DECIMAL(18,0), ACCT VARCHAR(20) ) INSERT INTO @tmp3532 SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(AMT DECIMAL(18, 0), ACCT VARCHAR(20)) SET @SUM3532 = (SELECT SUM(AMT) FROM @tmp3532 WHERE ACCT = '353200002') SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0))) IF(@SUM3532 <> @SUMVAT) 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ổng số tiền thuế GTGT ở lưới hóa đơn đính kèm có VAT không bằng tổng số tiền tài khoản nợ 353200002 ở lưới hạch toán : Tổng tiền thuế GTGT: ' + FORMAT(@SUMVAT,'#,#', 'vi-VN') + N',Tổng tiền tài khoản 3532: ' + FORMAT(@SUM3532,'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END */ DECLARE @p_ET_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT; IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_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_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT, '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 --UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE), CREATE_DT = GETDATE() --WHERE ACC_NO=@ACCT 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--END LUOI HACH TOAN ------------------------------------------------------------------------------------------ END LUOI HACH TOAN -------------------------------------------------------------------- --INSERT XMLDATAENTRIES -- CAP NHAT TAI KHOAN GL --UPDATE TR_REQ_PAY_ENTRIES SET ACCT_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(ACCT_NAME)) WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM PAY_ENTRIES_POST WHERE ISNULL(REF_NO,'') ='') -- CAP NHAT TAI KHOAN GL -- INSERT LUOI HOA DON KHONG VAT DECLARE @PDN_TT_LIST_INVOICE NVARCHAR(1000) DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID= @p_REQ_PAY_ID FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER , @TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC WHILE @@FETCH_STATUS=0 BEGIN SET @INDEX_IV = @INDEX_IV+1 IF(@TYPE_FUNC ='HC') BEGIN SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'D' AND TYPE_FUNC ='HC' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='HC' AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))) IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='HC' AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))) BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' REQ_PAY_ID,N'Thông tin hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống. Số phiếu: '+ISNULL(@PDN_TT_LIST_INVOICE,'') ErrorDesc RETURN '-1' END END DECLARE @p_REQ_INV_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT; IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID, AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN, VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103) ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES, @p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, @p_REQ_TYPE_CURRENCY, @p_RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,'HC') IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE , @TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC END; CLOSE XmlData; DEALLOCATE XmlData; -- BEGIN HOA DON CO VAT IF(@p_XMP_TEMP_VAT_INVOICE IS NOT NULL) BEGIN -- hoa don co VAT DECLARE XmlVATInvoice CURSOR FOR SELECT * FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) , PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,0),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15)) OPEN XmlVATInvoice -- CAP NHAT HOA DON CO VAT FETCH NEXT FROM XmlVATInvoice INTO @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER , @TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC WHILE @@fetch_status=0 BEGIN SET @INDEX_VAT = @INDEX_VAT+1 SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'D' AND TYPE_FUNC ='KT' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='KT' AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))) --IF(@TYPE_FUNC ='KT') --BEGIN IF(EXISTS(SELECT REQ_PAYDT_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC = 'KT' AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')) ) ) BEGIN ROLLBACK TRANSACTION CLOSE XmlVATInvoice; DEALLOCATE XmlVATInvoice; SELECT '-1' as Result, '' REQ_PAY_ID,N'Thông tin hóa đơn đính kèm có VAT, dòng ' + CONVERT(VARCHAR(5),@INDEX_VAT)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống. Số phiếu: '+ISNULL(@PDN_TT_LIST_INVOICE,'') ErrorDesc RETURN '-1' END --END --doanptt 20/04/2022 /* IF(NOT EXISTS(SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2)) WHERE ACCT = '353200002')) BEGIN ROLLBACK TRANSACTION CLOSE XmlVATInvoice; DEALLOCATE XmlVATInvoice; SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hóa đơn đính kèm có VAT, nhưng lưới hạch toán không có tài khoản nợ 353200002. Vui lòng thêm tài khoản nợ 353200002 trước khi gửi phê duyệt' ErrorDesc RETURN '-1' END */ DECLARE @p_REQ_INV_VAT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_VAT_ID OUT; IF @p_REQ_INV_VAT_ID='' OR @p_REQ_INV_VAT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID, AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT, TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) VALUES (@p_REQ_INV_VAT_ID,@p_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103) ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE , @TAX,@VAT,@NOTES, @p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, @p_REQ_TYPE_CURRENCY, @p_RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT, @TYPE_VAT,'KT') IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlVATInvoice INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE , @TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC END; CLOSE XmlVATInvoice; DEALLOCATE XmlVATInvoice; END -- END HOA DON CO VAT -- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị chuyển DECLARE @hdocOutsideTrans INT EXEC sp_xml_preparedocument @hdocOutsideTrans OUTPUT, @p_XMP_TEMP_DATA_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) -- BEGIN INSERT đơn vị chuyển DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_TRANS WHERE REQ_PAY_ID = @p_REQ_PAY_ID 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 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 --IF(@p_REQ_PAY_ID <> NULL) --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 ,@p_REQ_PAY_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) --END 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 -- doanptt 12/03/2022 thêm lưới chuyển tiền ngoài hệ thống - đơn vị nhận -- BEGIN INSERT đơn vị nhận DECLARE @hdocOutsideRec INT EXEC sp_xml_preparedocument @hdocOutsideRec OUTPUT, @p_XMP_TEMP_DATA_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 DELETE FROM TR_REQ_PAY_TRANS_OUTSIDE_REC WHERE REQ_PAY_ID = @p_REQ_PAY_ID 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 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 SET @INDEX_REC = @INDEX_REC+1 IF(@p_IS_SEND_APPR = 'Y') BEGIN 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_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, @p_REQ_PAY_ID, @p_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, @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 --- Luu log chinh sua select * from TR_REQ_PAY_INVOICE INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID ----- --- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN COMMIT TRANSACTION -- BEGIN VALIDATE SEND APRROVE IF(@p_IS_SEND_APPR = 'Y') BEGIN -- BEGIN VALIDATE RIGHT IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_MAKER_ID_KT AND TYPE_JOB = 'XL')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép gửi phê duyêt phiếu đề nghị thanh toán này. Phiếu đề nghị thanh toán đang được điều phối cho giao dịch viên khác xử lý' ErrorDesc RETURN '-1' END IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R') BEGIN SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị thanh toán đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc RETURN '-1' END IF ( EXISTS (SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND AUTH_STATUS <> 'A')) BEGIN SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng đang ở cấp độ đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt thành công trước đó!' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt kế toán thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc RETURN '-1' END -- END VALIDATE RIGHT DECLARE @SUMVAT DECIMAL(18,0) = 0 DECLARE @SUM3532 DECIMAL(18,0) = 0 DECLARE @tmp3532 TABLE( AMT DECIMAL(18,0), ACCT VARCHAR(20) ) INSERT INTO @tmp3532 SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(AMT DECIMAL(18, 0), ACCT VARCHAR(20)) IF(EXISTS(SELECT * FROM @tmp3532 WHERE ACCT = '353200002')) BEGIN SET @SUM3532 = (SELECT SUM(AMT) FROM @tmp3532 WHERE ACCT = '353200002') SET @SUMVAT = (SELECT SUM(VAT) FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2) WITH(VAT DECIMAL(18, 0))) IF(@SUM3532 <> @SUMVAT) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hạch toán dòng ' + CONVERT(VARCHAR(5),@INDEX) + N': Tổng số tiền thuế GTGT ở lưới hóa đơn đính kèm có VAT không bằng tổng số tiền tài khoản nợ 353200002 ở lưới hạch toán : Tổng tiền thuế GTGT: ' + FORMAT(@SUMVAT,'#,#', 'vi-VN') + N',Tổng tiền tài khoản 3532: ' + FORMAT(@SUM3532,'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END DECLARE @REQ_PAY_ID varchar(15), @ET_ID varchar(15), @AMT_ET DECIMAL(18,0), @ACC_ET varchar(25), @DRCR_ET varchar(25), @SUM_ET DECIMAL(18,0) = 0 DECLARE cursorProduct CURSOR LOCAL FOR SELECT REQ_PAY_ID,ENTRY_PAIR,AMT,ACCT,DR_CR FROM TR_REQ_PAY_ENTRIES A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID Open cursorProduct FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET WHILE @@FETCH_STATUS = 0 BEGIN --LUCTV 19-07-2021: MỖI MÃ BÚT TOÁN PHẢI THEO NGUYÊN TẮC 1 NỢ NHIỀU CÓ HOẶC 1 CÓ NHIỀU NỢ IF ( (SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ET_ID AND DR_CR ='D') > 1 AND (SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ET_ID AND DR_CR ='C')> 1 ) BEGIN CLOSE cursorProduct; DEALLOCATE cursorProduct; SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ET_ID+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - Nhiều Nợ)' ErrorDesc RETURN '-1' END ELSE BEGIN print 'sai'+@ENTRY_PAIR END IF(@DRCR_ET='C' AND EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET)) BEGIN SET @SUM_ET =(SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ACCT =@ACC_ET) IF(ISNULL(@SUM_ET,0) <> (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N' Số tiền hạch toán có của tài khoản: '+@ACC_ET + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACC_ET AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###') ErrorDesc RETURN '-1' END END -- KIEM TRA SO TIEN NO CO IF (ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ENTRY_PAIR =@ET_ID),0) <> ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D' AND ENTRY_PAIR =@ET_ID),0)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N' Số tiền bút toán Nợ phải bằng với số tiền bút toán Có' ErrorDesc RETURN '-1' END FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc RETURN '-1' END -- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN DECLARE @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2) SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0) SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0) IF(@SUM_CR <> @SUM_DR) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có' ErrorDesc RETURN '-1' END END UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV) -- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT = GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID -- DOANPTT 291222: THEM LOG KPI UPDATE TR_REQ_KPI SET AUTH_STATUS_KT ='P', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT, CORE_NOTE = @p_CONFIRM_NOTE, REQ_REASON = @p_REQ_REASON WHERE REQ_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'U' INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID_KT,GETDATE(), N'Giao dịch viên gửi phê duyệt',N'Giao dịch viên cập nhật thông tin') SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được gửi phê duyệt thành công! Vui lòng đợi kiểm soát viên phê duyệt phiếu' ErrorDesc RETURN '4' END -- END VALIDATE SEND APPROVE SELECT '0' as Result, @p_REQ_PAY_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'Altering [dbo].[CON_LAYOUT_BLUEPRINT_BYID]' GO ALTER PROC [dbo].[CON_LAYOUT_BLUEPRINT_BYID] @p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15) = NULL AS SELECT B.*, U .TLFullName AS SIGN_USER_NAME FROM CON_LAYOUT_BLUEPRINT B LEFT JOIN TL_USER U ON B.SIGN_USER = U.TLNANME WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_JOB_TRIP_Search]' GO ALTER PROC [dbo].[TR_REQ_JOB_TRIP_Search] @p_TRIP_ID varchar(15) = NULL, @p_REQ_ID varchar(15) = NULL, @p_TIME_TRIP INT = NULL, @p_DAY_TRIP varchar(20) = NULL, @p_FROM_TRIP nvarchar(MAX) = NULL, @p_TO_TRIP nvarchar(MAX) = NULL, @p_NOTES nvarchar(MAX) = NULL, @p_AUTH_STATUS varchar(15) = NULL, @p_TOP INT = 10 AS BEGIN -- PAGING IF(@p_TOP = NULL OR @p_TOP = '' OR @p_TOP = 0) BEGIN -- PAGING BEGIN SELECT A.* -- SELECT END FROM TR_REQ_JOB_TRIP A WHERE 1 = 1 AND (A.TRIP_ID LIKE '%' + @p_TRIP_ID + '%' OR @p_TRIP_ID IS NULL OR @p_TRIP_ID = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.TIME_TRIP = @p_TIME_TRIP OR @p_TIME_TRIP IS NULL OR @p_TIME_TRIP = '') AND (DATEDIFF(DAYOFYEAR,A.DAY_TRIP,CONVERT(DATETIME, @p_DAY_TRIP, 103)) = 0 OR @p_DAY_TRIP IS NULL OR @p_DAY_TRIP = '') AND (A.FROM_TRIP LIKE '%' + @p_FROM_TRIP + '%' OR @p_FROM_TRIP IS NULL OR @p_FROM_TRIP = '') AND (A.TO_TRIP LIKE '%' + @p_TO_TRIP + '%' OR @p_TO_TRIP IS NULL OR @p_TO_TRIP = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND RECORD_STATUS='1' -- PAGING END END ELSE BEGIN -- PAGING BEGIN SELECT TOP(@p_TOP) A.* -- SELECT END FROM TR_REQ_JOB_TRIP A WHERE 1 = 1 AND (A.TRIP_ID LIKE '%' + @p_TRIP_ID + '%' OR @p_TRIP_ID IS NULL OR @p_TRIP_ID = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.TIME_TRIP = @p_TIME_TRIP OR @p_TIME_TRIP IS NULL OR @p_TIME_TRIP = '') AND (DATEDIFF(DAYOFYEAR,A.DAY_TRIP,CONVERT(DATETIME, @p_DAY_TRIP, 103)) = 0 OR @p_DAY_TRIP IS NULL OR @p_DAY_TRIP = '') AND (A.FROM_TRIP LIKE '%' + @p_FROM_TRIP + '%' OR @p_FROM_TRIP IS NULL OR @p_FROM_TRIP = '') AND (A.TO_TRIP LIKE '%' + @p_TO_TRIP + '%' OR @p_TO_TRIP IS NULL OR @p_TO_TRIP = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND RECORD_STATUS='1' END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CAR_DRIVE_Ins]' GO /* SELECT * FROM ASS_MASTER SELECT * FROM CAR_MASTER WHERE CAR_ID = 'CARM00000000003' SELECT * FROM CAR_DRIVE SELECT * FROM CAR_DRIVE_DT DELETE FROM CAR_DRIVE WHERE CAR_ID = 'CARM00000000001' CAR_DRIVE_Ins 'CARM00000000001','ASS000000000001','',0,0,0,0,0,0,'','','','','','','','','','', ' 1234567 20/11/2013 2000000 ' */ ALTER PROCEDURE [dbo].[CAR_DRIVE_Ins] @p_CAR_ID varchar(15) = NULL, @p_ASSET_ID varchar(15) = NULL, @p_ASSET_NAME nvarchar(200) = NULL, @p_OLD_INDEX_NUMBER decimal(18) = NULL, @p_NEW_INDEX_NUMBER decimal(18) = NULL, @p_INDEX_NUMBER decimal(18) = NULL, @p_POWER_RATE decimal(18,2) = NULL, @p_POWER_RATE_INDEX decimal(18,2) = NULL, @p_CURR_POWER_RATE decimal(18,2) = NULL, @p_INPUT_DT VARCHAR(20) = NULL, @p_ISLEAF varchar(1) = NULL, @p_PARENT_ID varchar(15) = 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_DR_ROUTE nvarchar(200) = NULL, --vietpq hieu chinh URD 09/12/2019 -- doanptt 14/02/2022 @p_REQ_PAY_ID VARCHAR(15) = NULL, @p_NEW_FUEL_NUMBER DECIMAL(18,2) = NULL, --PhongNT 13/05/2022 Bổ sung nhiên liệu @p_OLD_FUEL_NUMBER DECIMAL(18,2) = NULL, @p_REQ_CAR_ID VARCHAR(15) =NULL, -- PYC XE @p_DRIVE_DETAIL XML = NULL AS -- DECLARE @ERRORSYS NVARCHAR(15) -- IF ( EXISTS ( SELECT * FROM CAR_DRIVE WHERE CAR_ID = @p_CAR_ID)) -- BEGIN -- --kiem tra trang thai truoc do da suyet hay chua -- IF(NOT EXISTS(SELECT * FROM CAR_DRIVE A WHERE A.AUTH_STATUS='A' AND A.ISLEAF = 'Y' AND (A.CAR_ID = @p_CAR_ID OR @p_CAR_ID IS NULL OR @p_CAR_ID=''))) -- SET @ERRORSYS='CARD-00003' -- END -- -- IF( @ERRORSYS <> '' ) -- BEGIN -- SELECT ErrorCode Result, '' CAR_DR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS -- RETURN '-1' -- END -- -- IF ( EXISTS ( SELECT 1 FROM CAR_DRIVE WHERE REQ_CAR_ID = @p_REQ_CAR_ID)) -- BEGIN -- SELECT '-1' Result, '' CAR_DR_ID, N'Thêm mới thất bại! Phiếu yêu cầu xe đã tồn tại trong thông tin vận hành xe' ErrorDesc -- RETURN '-1' -- END DECLARE @ERRORSYS NVARCHAR(MAX) select @ERRORSYS = STUFF(( SELECT ', ' + REQ_CODE FROM TR_REQUEST_CAR WHERE START_TIME_TRIP<(SELECT START_TIME_TRIP FROM dbo.TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_CAR_ID) AND CAR_ID = @p_CAR_ID AND REQ_ID NOT IN (SELECT REQ_CAR_ID FROM dbo.CAR_DRIVE A WHERE CAR_ID=@p_CAR_ID) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') --KIỂM TRA CÁC PHIẾU XE TRƯỚC THỜI ĐIỂM ĐI ĐÃ ĐƯỢC TẠO IF (@ERRORSYS IS NOT NULL) BEGIN SELECT '-1' Result, N'Bạn cần tạo vận hành cho các phiếu yêu cầu sau: '+ @ERRORSYS ErrorDesc RETURN '-1' END IF (EXISTS(SELECT * FROM CAR_DRIVE cd WHERE REQ_CAR_ID=@p_REQ_CAR_ID)) BEGIN SELECT '-1' Result, N'Phiếu yêu cầu xe tồn tại ở phiếu vận hành số '+(SELECT TOP(1) cd.CAR_DR_ID FROM CAR_DRIVE cd WHERE REQ_CAR_ID=@p_REQ_CAR_ID) ErrorDesc RETURN '-1' END Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_DRIVE_DETAIL DECLARE DriveDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/DriveDetail',2) WITH ( INVOICE_NO nvarchar(100), INVOICE_DT VARCHAR(20), INVOICE_AMT DECIMAL(18,0), CAR_DR_TYPE nvarchar(200), --vietpq hieu chinh URD 09/12/2019 NOTES nvarchar(MAX) --vietpq hieu chinh URD 09/12/2019 ) OPEN DriveDetail BEGIN TRANSACTION DECLARE @l_CAR_DR_ID VARCHAR(15) IF @p_INPUT_DT = '' SET @p_INPUT_DT = NULL IF @p_CREATE_DT = '' SET @p_CREATE_DT = NULL IF @p_APPROVE_DT = '' SET @p_APPROVE_DT = NULL EXEC SYS_CodeMasters_Gen 'CAR_DRIVE', @l_CAR_DR_ID out IF @l_CAR_DR_ID='' OR @l_CAR_DR_ID IS NULL GOTO ABORT PRINT @l_CAR_DR_ID --Tren truyen mac dinh ISLEAF=Y DECLARE @PARENT VARCHAR(15) = NULL SELECT @PARENT = [CAR_DR_ID] FROM CAR_DRIVE WHERE CAR_ID = @p_CAR_ID AND ISLEAF = 'Y' AND RECORD_STATUS = '1' UPDATE CAR_DRIVE SET ISLEAF = 'N' WHERE [CAR_DR_ID] = @PARENT INSERT INTO CAR_DRIVE([CAR_DR_ID],[CAR_ID],[ASSET_ID],[ASSET_NAME],[OLD_INDEX_NUMBER],[NEW_INDEX_NUMBER],[INDEX_NUMBER],[POWER_RATE],[POWER_RATE_INDEX],[CURR_POWER_RATE],[DR_ROUTE], [INPUT_DT],[ISLEAF],[PARENT_ID],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[REQ_PAY_ID],[REQ_CAR_ID],[OLD_FUEL_NUMBER],[NEW_FUEL_NUMBER]) VALUES(@l_CAR_DR_ID ,@p_CAR_ID ,@p_ASSET_ID ,@p_ASSET_NAME ,@p_OLD_INDEX_NUMBER, @p_NEW_INDEX_NUMBER ,@p_INDEX_NUMBER ,@p_POWER_RATE ,@p_POWER_RATE_INDEX , @p_CURR_POWER_RATE , @p_DR_ROUTE, CONVERT(DATETIME, @p_INPUT_DT, 103) ,'Y' ,@PARENT , @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_REQ_PAY_ID,@p_REQ_CAR_ID,@p_OLD_FUEL_NUMBER,@p_NEW_FUEL_NUMBER) IF @@Error <> 0 GOTO ABORT --INSERT CAR DRIVE DETAIL DECLARE @INVOICE_NO nvarchar(100), @INVOICE_DT VARCHAR(20), @INVOICE_AMT DECIMAL(18,0), @CAR_DR_TYPE nvarchar(200), --vietpq hieu chinh URD 09/12/2019 @NOTES nvarchar(MAX) --vietpq hieu chinh URD 09/12/2019 PRINT 'INSERT MASTER SUCCESS' FETCH NEXT FROM DriveDetail INTO @INVOICE_NO,@INVOICE_DT,@INVOICE_AMT,@CAR_DR_TYPE,@NOTES PRINT 'FETCH FIRST ROW' WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'CAR_DRIVE_DT', @l_ID out IF @l_ID='' OR @l_ID IS NULL GOTO ABORT IF @INVOICE_DT = '' SET @INVOICE_DT = NULL PRINT 'INSERT FIRST ROW' INSERT INTO CAR_DRIVE_DT VALUES(@l_ID ,@l_CAR_DR_ID ,@INVOICE_NO,CONVERT(DATETIME,@INVOICE_DT,103),@INVOICE_AMT, @CAR_DR_TYPE, @NOTES) FETCH NEXT FROM DriveDetail INTO @INVOICE_NO,@INVOICE_DT,@INVOICE_AMT,@CAR_DR_TYPE,@NOTES END CLOSE DriveDetail DEALLOCATE DriveDetail COMMIT TRANSACTION SELECT '0' as Result, @l_CAR_DR_ID CAR_DR_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CAR_DR_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAYMENT_Search]' GO ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Search] @p_REQ_PAY_ID varchar(15)= NULL, @p_REQ_PAY_CODE varchar(50) = NULL, @p_REQ_DT VARCHAR(20)= NULL, @p_BRANCH_ID varchar(15) = NULL, @p_DEP_ID varchar(15) = NULL, @p_REQ_REASON nvarchar(MAX) = NULL, @p_REQ_TYPE varchar(15) = NULL, @P_REQ_ENTRIES nvarchar(MAX) = NULL, @p_REQ_DESCRIPTION nvarchar(MAX) = NULL, @p_REF_ID varchar(15) = NULL, @p_RECEIVER_PO nvarchar(250) = NULL, @p_REQ_PAY_TYPE varchar(15) = NULL, @p_REQ_TYPE_CURRENCY nvarchar(50) = NULL, @p_REQ_AMT decimal(18, 0) = NULL, @p_REQ_TEMP_AMT decimal(18, 0) = NULL, @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT varchar(25) = NULL, @p_EDITOR_ID varchar(15) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT varchar(25) = NULL, @p_CREATE_DT_KT varchar(25) = NULL, @p_MAKER_ID_KT varchar(15) = NULL, @p_AUTH_STATUS_KT varchar(1) = NULL, @p_CHECKER_ID_KT nvarchar(20) = NULL, @p_EXEC_USER_KT nvarchar(20) = NULL, @p_APPROVE_DT_KT varchar(25)= null, @p_CONFIRM_NOTE nvarchar(500) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_NOTES varchar(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_TRANSFER_MAKER nvarchar(50) = NULL, @p_TRANSFER_DT varchar(25) = NULL, @p_TRASFER_USER_RECIVE varchar(15) = NULL, @p_PROCESS varchar(15) = NULL, @p_PAY_PHASE VARCHAR(15) = NULL, @p_TOP INT = 300, @p_LEVEL varchar(10) = NULL, @p_FRMDATE VARCHAR(20)= NULL, @p_TODATE VARCHAR(20) = NULL, @p_BRANCH_LOGIN VARCHAR(15) = NULL, @p_IS_UPDATE_KT VARCHAR(15) = NULL, @P_IS_TRANSFER VARCHAR(15) = NULL, @p_TERM_ID VARCHAR(15) = NULL, @P_USER_LOGIN VARCHAR(15)= NULL, @p_FUNCTION VARCHAR(15) = NULL, @p_TYPE_SEARCH VARCHAR(15) = NULL AS BEGIN -- PAGING --SET @p_TOP = NULL declare @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID) declare @tmp_Login table(BRANCH_ID varchar(15)) insert into @tmp_Login SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN) DECLARE @ROLE_ID VARCHAR(20) , @DEP_ID_LG VARCHAR(15) = NULL, @COST_LG VARCHAR(15), @DVDM_ID VARCHAR(15) 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_ID)) SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_USER_LOGIN) SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_USER_LOGIN) DECLARE @TMP_DEP TABLE(DEP_ID VARCHAR(15)) SET @COST_LG =(SELECT TOP 1 COST_ID FROM PL_COSTCENTER_DT WHERE DEP_ID =@DEP_ID_LG) SET @DVDM_ID =(SELECT TOP 1 DVDM_ID FROM PL_COSTCENTER WHERE COST_ID =@COST_LG) INSERT INTO @TMP_DEP SELECT B.DEP_ID FROM PL_COSTCENTER_DT B WHERE COST_ID =@COST_LG DECLARE @BRANCH_TYPE_LG VARCHAR(15) SET @BRANCH_TYPE_LG = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN) -- KHAI BAO NHUNG PHONG BAN MA 1 USER KIEM NHIEM 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 ='') DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15)) INSERT INTO @DEP_AUTH VALUES (@DEP_ID_LG) INSERT INTO @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) --- LUCTV 19.10.2022 BO SUNG THEM PHONG BAN CHA SE THAY DANH SACH PHONG BAN CON INSERT INTO @DEP_AUTH SELECT DEP_ID FROM CM_DEPARTMENT WHERE FATHER_ID =@DEP_ID_LG -- KHAI BAO PHẦN ỦY QUYỀN ĐƠN VỊ DECLARE @BRANCH_AUTH TABLE (BRN_AUTH VARCHAR(15)) INSERT INTO @BRANCH_AUTH VALUES (@p_BRANCH_LOGIN) INSERT INTO @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) --- 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_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 --DECLARE @MONTH INT, @YEAR INT --SET @MONTH = MONTH(GETDATE()) -1 --SET @YEAR = YEAR(GETDATE()) --BEGIN -- SET @p_FRMDATE ='01/'+CONVERT(VARCHAR,@MONTH,5) +'/'+ CONVERT(VARCHAR,@YEAR,5) --END SET @DATE = CONVERT(DATE,GETDATE(),103) SET @DATE = DATEADD(MONTH,-2,@DATE) END ELSE BEGIN SET @DATE = CONVERT(DATE,@p_FRMDATE,103) END -- HẾT KHAI BÁO SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) IF(@ROLE_ID IS NOT NULL AND @ROLE_ID <>'' AND @ROLE_ID IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC','PPGD')) BEGIN PRINT @ROLE_ID END ELSE BEGIN SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_USER_LOGIN) IF(@ROLE_ID IS NULL OR @ROLE_ID ='') BEGIN SET @ROLE_ID =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_USER_LOGIN)) END END INSERT INTO @TABLE_ROLE VALUES (@ROLE_ID)--2021823 --SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_USER_LOGIN) IF(@p_TOP IS NULL OR @p_TOP=0) BEGIN -- PAGING BEGIN SELECT A.*,B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME, C.AUTH_STATUS_KT_DESC, TL1.TLFullName APPROVE_FULLNAME, CASE WHEN ISNULL(TL2.TLFullName,'') <>'' THEN TL2.TLFullName ELSE TL8.TLFullName END AS CREATE_FULLNAME_KT, TL3.TLFullName APPROVE_FULLNAME_KT, CASE WHEN ISNULL(A.IS_PERIOD,'') <> '' AND A.IS_PERIOD ='Y' AND EXISTS (SELECT TOP 1 X.* FROM TR_REQ_ADVANCE_DT X INNER JOIN TR_CONTRACT CT ON X.REF_ID = CT.CONTRACT_ID WHERE X.REQ_PAY_ID = A.REQ_PAY_ID AND CT.BRANCH_ID <> @p_BRANCH_LOGIN AND CT.BRANCH_ID IS NOT NULL AND CT.BRANCH_ID <> '') THEN BR.BRANCH_NAME + ISNULL(' - '+ (SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =(SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID IN (SELECT TOP 1 REF_ID FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID))),'') ELSE BR.BRANCH_NAME END BRANCH_NAME_REQ, --BR.BRANCH_NAME AS BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ, --Luanlt--2019/10/15-Sửa AL,AL1 BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME, ISNULL((A.REQ_AMT -H.SOTIEN_TT),0) AS TOTAL_AMT_TEMP, ISNULL(H.SOTIEN_TT,0) TOTAL_AMT_PAY_HIS, TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,'' EMP_FULLNAME,PO.PO_CODE, PO.PO_NAME, S.SUP_NAME,S.TAX_NO SUP_TAX_NO, PC3.LEVEL_JOB, PC3.STATUS_JOB,PC3.TYPE_JOB, --CASE WHEN PC3.TLNAME IS NOT NULL AND PC3.TLNAME <>'' THEN @P_USER_LOGIN ELSE PC3.TLNAME END AS EXEC_USER, @p_TYPE_SEARCH AS TYPE_SEARCH,SR.ROLE_ID AS ROLE_ID_CRE,CASE WHEN BR1.BRANCH_TYPE <> 'PGD'THEN BR1.BRANCH_TYPE ELSE 'CN' END AS BRANCH_TYPE_CR, BR_CORE.BRANCH_CODE AS BRANCH_CODE_CORE, BR_CORE.BRANCH_NAME AS BRANCH_NAME_CORE,'' AS BRANCH_CODE_CONTRACT, ISNULL((SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =(SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID IN (SELECT TOP 1 REF_ID FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID))),'') AS BRANCH_NAME_CONTRACT, --doanptt 300622 CASE WHEN PC3.TLNAME IS NOT NULL THEN PC3.TLNAME WHEN PC3.TLNAME <>'' THEN PC3.TLNAME ELSE TL2.TLNANME END AS EXEC_USER, dbo.FN_DATEDIFF_WITHOUT_WEEKEND(A.TRANSFER_DT, GETDATE()) AS NUMBER_OF_TRANSFER, PC3.TLNAME AS EXEC_USER_KT, CASE WHEN ISNULL(A.CREATE_DT_KT, '') <> '' AND A.AUTH_STATUS_KT IN('P', 'S') THEN dbo.FN_DATEDIFF_WITHOUT_WEEKEND(A.CREATE_DT_KT, GETDATE()) ELSE 0 END AS NUMBER_OF_SEND_APPR -- SELECT END FROM TR_REQ_PAYMENT A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID --Luanlt--2019/10/15-Sửa AL,AL1 LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='PAY_TYPE' AND AL.CDTYPE = 'REQ' LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL1.CDTYPE ='REQ' LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME LEFT JOIN ( SELECT PAY_ADV_ID, SUM(AMT_PAY) SOTIEN_TT FROM TR_REQ_PAYMENT_DT WHERE AUTH_STATUS_KT ='A' GROUP BY PAY_ADV_ID ) H ON A.REQ_PAY_ID =H.PAY_ADV_ID LEFT JOIN TR_PO_MASTER PO ON A.REF_ID = PO.PO_ID AND A.REQ_TYPE='P' LEFT JOIN CM_SUPPLIER S ON S.SUP_ID = PO.SUP_ID AND A.REQ_TYPE='P' LEFT JOIN PL_REQUEST_PROCESS_CHILD PC3 ON PC3.REQ_ID = A.REQ_PAY_ID AND PC3.STATUS_JOB ='C' LEFT JOIN PL_REQUEST_PROCESS_CHILD PC4 ON PC4.REQ_ID = A.REQ_PAY_ID AND PC4.STATUS_JOB ='C' LEFT JOIN PL_REQUEST_PROCESS_CHILD PC5 ON PC5.REQ_ID = A.REQ_PAY_ID AND PC5.TYPE_JOB ='XL' LEFT JOIN TL_USER TL8 ON PC5.TLNAME = TL8.TLNANME LEFT JOIN TL_SYSROLE SR ON TL.RoleName = SR.ROLE_ID LEFT JOIN CM_BRANCH BR_CORE ON TL2.TLSUBBRID = BR_CORE.BRANCH_ID WHERE 1=1 AND(A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL) AND( A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS='' OR @p_AUTH_STATUS IS NULL OR ( @p_AUTH_STATUS = 'G' AND ISNULL(A.PROCESS, '') = '0' AND A.AUTH_STATUS = 'U' AND @P_USER_LOGIN = A.TRASFER_USER_RECIVE ) OR ( @p_AUTH_STATUS = 'W' AND ISNULL(A.PROCESS, '') = '' AND A.AUTH_STATUS = 'U' AND @P_USER_LOGIN = A.TRASFER_USER_RECIVE ) ) AND(A.MAKER_ID =@p_MAKER_ID OR @p_MAKER_ID='' OR @p_MAKER_ID IS NULL) AND(A.MAKER_ID_KT = @p_MAKER_ID_KT OR @p_MAKER_ID_KT = '' OR @p_MAKER_ID_KT IS NULL OR PC3.TLNAME = @p_MAKER_ID_KT) AND(PC3.TLNAME = @p_EXEC_USER_KT OR @p_EXEC_USER_KT = '' OR @p_EXEC_USER_KT IS NULL OR PC3.TLNAME = '' OR PC3.TLNAME IS NULL) AND(A.DEP_ID=@p_DEP_ID OR @p_DEP_ID='' OR @p_DEP_ID IS NULL) AND ( ( @p_LEVEL='ALL' AND ( A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp) OR A.BRANCH_CREATE IN (SELECT * FROM @BRANCH_AUTH) ) ) -- LUCTV 20211012: BO SUNG CAU HINH DE XU LY UY QUYEN KIEM NHIEM OR ( ( @p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID ) OR(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL) OR ( @BRANCH_TYPE_LG <> 'HS' AND EXISTS ( SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE BRANCH_ID =@p_BRANCH_LOGIN) AND AUTH_STATUS_KT ='A' ) ) ) ) AND ( ( @p_LEVEL='ALL' AND ( A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp) OR A.BRANCH_CREATE IN (SELECT * FROM @BRANCH_AUTH) ) ) -- - LUCTV 20211012: BO SUNG CAU HINH DE XU LY UY QUYEN KIEM NHIEM OR ( ( @p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID ) OR ( @p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL ) OR ( @BRANCH_TYPE_LG <> 'HS' AND EXISTS ( SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE BRANCH_ID =@p_BRANCH_LOGIN) AND AUTH_STATUS_KT ='A' ) ) ) ) AND ( ( A.MAKER_ID_KT IS NOT NULL AND @p_IS_UPDATE_KT='Y' ) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat OR ( ( A.MAKER_ID_KT IS NULL AND @p_IS_UPDATE_KT='N' ) ) OR @p_IS_UPDATE_KT IS NULL OR @p_IS_UPDATE_KT='') AND(A.NOTES LIKE N'%'+@p_NOTES+'%' OR @p_NOTES='' OR @p_NOTES IS NULL) --Luanlt-2019/10/14-Thêm Filter REQ_TYPE,FROMDATE TODATE REF_ID AND(A.REQ_TYPE LIKE N'%'+@p_REQ_TYPE+'%' OR @p_REQ_TYPE = '' OR @p_REQ_TYPE IS NULL) AND(CONVERT(DATE, A.CREATE_DT)>=CONVERT(DATE, @DATE, 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) --Luanlt-2019/10/17-Thêm Filter REQ_PAY_CODE REQ_PAY_NAME BRANCH_ID DEP_ID KT_AUTH AND(A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' or @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL) AND(A.REQ_REASON LIKE N'%'+@p_REQ_REASON+'%' or @p_REQ_REASON='' OR @p_REQ_REASON IS NULL) --AND(A.TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE or @p_TRASFER_USER_RECIVE='' OR @p_TRASFER_USER_RECIVE IS NULL OR A.MAKER_ID_KT IS NOT NULL OR A.MAKER_ID_KT <>'') AND ( (@p_BRANCH_ID <> @p_BRANCH_LOGIN AND A.BRANCH_ID = @p_BRANCH_ID) OR @p_BRANCH_ID = @p_BRANCH_LOGIN OR @p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL ) AND(A.DEP_ID = @p_DEP_ID or @p_DEP_ID='' OR @p_DEP_ID IS NULL) AND ( ( A.AUTH_STATUS_KT=@p_AUTH_STATUS_KT OR @p_AUTH_STATUS_KT='' OR @p_AUTH_STATUS_KT IS NULL ) OR (@p_AUTH_STATUS_KT ='P' AND A.AUTH_STATUS_KT IN ('P','S')) ) AND(A.REF_ID =@p_REF_ID OR @p_REF_ID='' OR @p_REF_ID IS NULL) --AND((A.TRANSFER_MAKER IS NOT NULL AND @p_IS_TRANSFER='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat --OR((A.TRANSFER_MAKER IS NULL AND @p_IS_TRANSFER='N'))OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='') -- Neu ben phan he ke toan thi chi lay nhung user co maker_id khac null AND ( ( @p_FUNCTION ='KT' AND ( EXISTS(SELECT TOP 1 * FROM PL_REQUEST_PROCESS_CHILD X WHERE REQ_ID = A.REQ_PAY_ID AND ( X.TLNAME= @p_USER_LOGIN OR X.TLNAME =@p_EXEC_USER_KT) ) ) OR (A.MAKER_ID_KT = @p_MAKER_ID_KT OR PC3.TLNAME = @p_MAKER_ID_KT) OR A.CHECKER_ID_KT ='admin' OR A.AUTH_STATUS_KT='A' ) OR @p_FUNCTION ='' OR @p_FUNCTION IS NULL OR @p_FUNCTION ='TF' ) AND(PC4.TLNAME = @p_TRASFER_USER_RECIVE OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE ='' OR A.MAKER_ID_KT =@p_TRASFER_USER_RECIVE) -- AND ((@p_FUNCTION ='KT' AND A.MAKER_ID_KT IS NOT NULL AND A.MAKER_ID_KT ='') OR @p_FUNCTION IS NULL OR @p_FUNCTION ='') AND ( ( @p_IS_TRANSFER='Y' AND ( EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID) OR A.AUTH_STATUS_KT ='A' ) ) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat OR ( ( @p_IS_TRANSFER='N' AND ( NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID )) AND A.AUTH_STATUS_KT <>'A' ) ) OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='' ) AND ( /*0*/ A.MAKER_ID =@p_USER_LOGIN OR ( A.TRASFER_USER_RECIVE = @P_USER_LOGIN AND A.AUTH_STATUS NOT IN ('E','R') ) OR ( @P_USER_LOGIN = 'xuanpt' --DOANPTT 20/12/22: CHO A XUAN XEM TOAN BO PHIEU THUOC PHONG HANH CHINH AND A.DEP_ID = 'DEP000000000014' AND A.BRANCH_ID = 'DV0001' AND A.AUTH_STATUS IN ('U','R', 'A') AND @p_TYPE_SEARCH ='HC' ) OR ( A.AUTH_STATUS <>'E' /*1*/ AND (/*2*/ ( @p_TYPE_SEARCH ='HC' /*3*/ AND @BRANCH_TYPE_LG ='HS' AND (/*4*/A.TRASFER_USER_RECIVE = @p_USER_LOGIN OR (/*5*/ EXISTS ( SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDDV','GDK','KTT','TPTC','TP','PP','TC') ) AND ( ( A.BRANCH_ID =@p_BRANCH_LOGIN OR A.BRANCH_ID IN (SELECT * FROM @BRANCH_AUTH) ) AND ( A.DEP_ID = @DEP_ID_LG OR ( A.DEP_ID IN ('DEP000000000051','DEP000000000733') AND @p_USER_LOGIN ='cuongpv2' ) OR A.DEP_ID IN ( SELECT * FROM @DEP_AUTH ) ) ) AND ( A.TRASFER_USER_RECIVE IS NULL OR A.TRASFER_USER_RECIVE ='' OR ( A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' AND A.PROCESS IS NOT NULL AND A.PROCESS <>'' ) ) )/*5*/ )/*4*/ )/*3*/ OR(/*trong 2*/ @p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'CN' AND ( @ROLE_ID IN ('GDDV','PGD','TPGD','PPGD') AND A.BRANCH_ID =@p_BRANCH_LOGIN AND ( ( A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' AND A.PROCESS IS NOT NULL AND A.PROCESS <>'' ) OR A.TRASFER_USER_RECIVE ='' OR A.TRASFER_USER_RECIVE IS NULL ) OR ( ( A.BRANCH_CREATE <> @p_BRANCH_LOGIN AND A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' ) OR A.BRANCH_CREATE = @p_BRANCH_LOGIN ) AND A.BRANCH_ID =@p_BRANCH_ID ) ) OR ( @p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'PGD' AND ( @ROLE_ID IN ('GDDV','TPGD','PPGD','PGD') AND A.BRANCH_ID =@p_BRANCH_LOGIN ) ) OR ( @p_TYPE_SEARCH ='HC' AND( @ROLE_ID IN ('KSV','GDV','NVTC') OR @DEP_ID_LG ='DEP000000000022' ) AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login) ) OR ( @p_TYPE_SEARCH='KT' AND @p_BRANCH_LOGIN ='DV0001' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login) ) OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH ='' )/*2*/ )/*1*/ OR ( ( @ROLE_ID IN ('KSV','GDV','NVTC') OR @DEP_ID_LG ='DEP000000000022' ) AND @p_BRANCH_LOGIN ='DV0001' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login) ) -- NEU DUOC UY QUYEN DUYỆT CHO 1 ĐƠN VỊ KHÁC HỘI SỞ THÌ CHỈ SETUP ĐƠN VỊ, KHÔNG CẦN SETUP PHÒNG BAN OR( @p_TYPE_SEARCH ='HC' AND A.BRANCH_CREATE <> 'DV0001' AND A.BRANCH_ID IN (SELECT * FROM @BRANCH_AUTH) ) -- LUCTV 25 05 BO SUNG CAU HINH CHO PHEP DVKD DUOC THAY NHUNG PDN THANH TOAN DO HO TẠO OR ( @p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG <> 'HS' AND EXISTS ( SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN ( SELECT CONTRACT_ID FROM TR_CONTRACT WHERE BRANCH_ID =@p_BRANCH_LOGIN ) AND AUTH_STATUS_KT ='A' ) ) )/*0*/ ORDER BY A.CREATE_DT DESC -- PAGING END END; ELSE BEGIN -- PAGING BEGIN SELECT TOP(CONVERT(INT,@p_TOP)) A.*,B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME, C.AUTH_STATUS_KT_DESC, TL1.TLFullName APPROVE_FULLNAME, CASE WHEN ISNULL(TL2.TLFullName,'') <>'' THEN TL2.TLFullName ELSE TL8.TLFullName END AS CREATE_FULLNAME_KT, TL3.TLFullName APPROVE_FULLNAME_KT, CASE WHEN ISNULL(A.IS_PERIOD,'') <> '' AND A.IS_PERIOD ='Y' AND EXISTS (SELECT TOP 1 X.* FROM TR_REQ_ADVANCE_DT X INNER JOIN TR_CONTRACT CT ON X.REF_ID = CT.CONTRACT_ID WHERE X.REQ_PAY_ID = A.REQ_PAY_ID AND CT.BRANCH_ID <> @p_BRANCH_LOGIN AND CT.BRANCH_ID IS NOT NULL AND CT.BRANCH_ID <> '') THEN BR.BRANCH_NAME + ISNULL(' - '+ (SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =(SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID IN (SELECT TOP 1 REF_ID FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID))),'') ELSE BR.BRANCH_NAME END BRANCH_NAME_REQ, --BR.BRANCH_NAME AS BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ, --Luanlt--2019/10/15-Sửa AL,AL1 BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME, ISNULL((A.REQ_AMT -H.SOTIEN_TT),0) AS TOTAL_AMT_TEMP, ISNULL(H.SOTIEN_TT,0) TOTAL_AMT_PAY_HIS, TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,'' EMP_FULLNAME,PO.PO_CODE, PO.PO_NAME, S.SUP_NAME,S.TAX_NO SUP_TAX_NO, PC3.LEVEL_JOB, PC3.STATUS_JOB,PC3.TYPE_JOB, --CASE WHEN PC3.TLNAME IS NOT NULL AND PC3.TLNAME <>'' THEN @P_USER_LOGIN ELSE PC3.TLNAME END AS EXEC_USER, @p_TYPE_SEARCH AS TYPE_SEARCH,SR.ROLE_ID AS ROLE_ID_CRE,CASE WHEN BR1.BRANCH_TYPE <> 'PGD'THEN BR1.BRANCH_TYPE ELSE 'CN' END AS BRANCH_TYPE_CR, BR_CORE.BRANCH_CODE AS BRANCH_CODE_CORE, BR_CORE.BRANCH_NAME AS BRANCH_NAME_CORE,'' AS BRANCH_CODE_CONTRACT, ISNULL((SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =(SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID IN (SELECT TOP 1 REF_ID FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID))),'') AS BRANCH_NAME_CONTRACT, --doanptt 300622 CASE WHEN PC3.TLNAME IS NOT NULL THEN PC3.TLNAME WHEN PC3.TLNAME <>'' THEN PC3.TLNAME ELSE TL2.TLNANME END AS EXEC_USER, dbo.FN_DATEDIFF_WITHOUT_WEEKEND(A.TRANSFER_DT, GETDATE()) AS NUMBER_OF_TRANSFER, PC3.TLNAME AS EXEC_USER_KT, CASE WHEN ISNULL(A.CREATE_DT_KT, '') <> '' AND A.AUTH_STATUS_KT IN('P', 'S') THEN dbo.FN_DATEDIFF_WITHOUT_WEEKEND(A.CREATE_DT_KT, GETDATE()) ELSE 0 END AS NUMBER_OF_SEND_APPR -- SELECT END FROM TR_REQ_PAYMENT A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID --Luanlt--2019/10/15-Sửa AL,AL1 LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='PAY_TYPE' AND AL.CDTYPE = 'REQ' LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL1.CDTYPE = 'REQ' LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME LEFT JOIN ( SELECT PAY_ADV_ID, SUM(AMT_PAY) SOTIEN_TT FROM TR_REQ_PAYMENT_DT WHERE AUTH_STATUS_KT ='A' GROUP BY PAY_ADV_ID ) H ON A.REQ_PAY_ID =H.PAY_ADV_ID LEFT JOIN TR_PO_MASTER PO ON A.REF_ID = PO.PO_ID AND A.REQ_TYPE='P' LEFT JOIN CM_SUPPLIER S ON S.SUP_ID = PO.SUP_ID AND A.REQ_TYPE='P' LEFT JOIN PL_REQUEST_PROCESS_CHILD PC3 ON PC3.REQ_ID = A.REQ_PAY_ID AND PC3.STATUS_JOB ='C' LEFT JOIN PL_REQUEST_PROCESS_CHILD PC4 ON PC4.REQ_ID = A.REQ_PAY_ID AND PC4.STATUS_JOB ='C' LEFT JOIN PL_REQUEST_PROCESS_CHILD PC5 ON PC5.REQ_ID = A.REQ_PAY_ID AND PC5.TYPE_JOB ='XL' LEFT JOIN TL_USER TL8 ON PC5.TLNAME = TL8.TLNANME LEFT JOIN TL_SYSROLE SR ON TL.RoleName = SR.ROLE_ID LEFT JOIN CM_BRANCH BR_CORE ON TL2.TLSUBBRID = BR_CORE.BRANCH_ID WHERE 1=1 AND(A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL) AND( A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS='' OR @p_AUTH_STATUS IS NULL OR ( @p_AUTH_STATUS = 'G' AND ISNULL(A.PROCESS, '') = '0' AND A.AUTH_STATUS = 'U' AND @P_USER_LOGIN = A.TRASFER_USER_RECIVE ) OR ( @p_AUTH_STATUS = 'W' AND ISNULL(A.PROCESS, '') = '' AND A.AUTH_STATUS = 'U' AND @P_USER_LOGIN = A.TRASFER_USER_RECIVE ) ) AND(A.MAKER_ID =@p_MAKER_ID OR @p_MAKER_ID='' OR @p_MAKER_ID IS NULL) AND(A.MAKER_ID_KT = @p_MAKER_ID_KT OR @p_MAKER_ID_KT = '' OR @p_MAKER_ID_KT IS NULL OR PC3.TLNAME = @p_MAKER_ID_KT) AND(PC3.TLNAME = @p_EXEC_USER_KT OR @p_EXEC_USER_KT = '' OR @p_EXEC_USER_KT IS NULL OR PC3.TLNAME = '' OR PC3.TLNAME IS NULL) AND(A.DEP_ID=@p_DEP_ID OR @p_DEP_ID='' OR @p_DEP_ID IS NULL) AND ( ( @p_LEVEL='ALL' AND ( A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp) OR A.BRANCH_CREATE IN (SELECT * FROM @BRANCH_AUTH) ) ) -- LUCTV 20211012: BO SUNG CAU HINH DE XU LY UY QUYEN KIEM NHIEM OR ( ( @p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID ) OR(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL) OR ( @BRANCH_TYPE_LG <> 'HS' AND EXISTS ( SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE BRANCH_ID =@p_BRANCH_LOGIN) AND AUTH_STATUS_KT ='A' ) ) ) ) AND ( ( @p_LEVEL='ALL' AND ( A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp) OR A.BRANCH_CREATE IN (SELECT * FROM @BRANCH_AUTH) ) ) -- - LUCTV 20211012: BO SUNG CAU HINH DE XU LY UY QUYEN KIEM NHIEM OR ( ( @p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID ) OR ( @p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL ) OR ( @BRANCH_TYPE_LG <> 'HS' AND EXISTS ( SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE BRANCH_ID =@p_BRANCH_LOGIN) AND AUTH_STATUS_KT ='A' ) ) ) ) AND ( ( A.MAKER_ID_KT IS NOT NULL AND @p_IS_UPDATE_KT='Y' ) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat OR ( ( A.MAKER_ID_KT IS NULL AND @p_IS_UPDATE_KT='N' ) ) OR @p_IS_UPDATE_KT IS NULL OR @p_IS_UPDATE_KT='') AND(A.NOTES LIKE N'%'+@p_NOTES+'%' OR @p_NOTES='' OR @p_NOTES IS NULL) --Luanlt-2019/10/14-Thêm Filter REQ_TYPE,FROMDATE TODATE REF_ID AND(A.REQ_TYPE LIKE N'%'+@p_REQ_TYPE+'%' OR @p_REQ_TYPE = '' OR @p_REQ_TYPE IS NULL) AND(CONVERT(DATE, A.CREATE_DT)>=CONVERT(DATE, @DATE, 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) --Luanlt-2019/10/17-Thêm Filter REQ_PAY_CODE REQ_PAY_NAME BRANCH_ID DEP_ID KT_AUTH AND(A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' or @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL) AND(A.REQ_REASON LIKE N'%'+@p_REQ_REASON+'%' or @p_REQ_REASON='' OR @p_REQ_REASON IS NULL) --AND(A.TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE or @p_TRASFER_USER_RECIVE='' OR @p_TRASFER_USER_RECIVE IS NULL OR A.MAKER_ID_KT IS NOT NULL OR A.MAKER_ID_KT <>'') AND ( (@p_BRANCH_ID <> @p_BRANCH_LOGIN AND A.BRANCH_ID = @p_BRANCH_ID) OR @p_BRANCH_ID = @p_BRANCH_LOGIN OR @p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL ) AND(A.DEP_ID = @p_DEP_ID or @p_DEP_ID='' OR @p_DEP_ID IS NULL) AND ( ( A.AUTH_STATUS_KT=@p_AUTH_STATUS_KT OR @p_AUTH_STATUS_KT='' OR @p_AUTH_STATUS_KT IS NULL ) OR (@p_AUTH_STATUS_KT ='P' AND A.AUTH_STATUS_KT IN ('P','S')) ) AND(A.REF_ID =@p_REF_ID OR @p_REF_ID='' OR @p_REF_ID IS NULL) --AND((A.TRANSFER_MAKER IS NOT NULL AND @p_IS_TRANSFER='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat --OR((A.TRANSFER_MAKER IS NULL AND @p_IS_TRANSFER='N'))OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='') -- Neu ben phan he ke toan thi chi lay nhung user co maker_id khac null AND ( ( @p_FUNCTION ='KT' AND ( EXISTS(SELECT TOP 1 * FROM PL_REQUEST_PROCESS_CHILD X WHERE REQ_ID = A.REQ_PAY_ID AND ( X.TLNAME= @p_USER_LOGIN OR X.TLNAME =@p_EXEC_USER_KT) ) ) OR (A.MAKER_ID_KT = @p_MAKER_ID_KT OR PC3.TLNAME = @p_MAKER_ID_KT) OR A.CHECKER_ID_KT ='admin' OR A.AUTH_STATUS_KT='A' ) OR @p_FUNCTION ='' OR @p_FUNCTION IS NULL OR @p_FUNCTION ='TF' ) AND(PC4.TLNAME = @p_TRASFER_USER_RECIVE OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE ='' OR A.MAKER_ID_KT =@p_TRASFER_USER_RECIVE) -- AND ((@p_FUNCTION ='KT' AND A.MAKER_ID_KT IS NOT NULL AND A.MAKER_ID_KT ='') OR @p_FUNCTION IS NULL OR @p_FUNCTION ='') AND ( ( @p_IS_TRANSFER='Y' AND ( EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID) OR A.AUTH_STATUS_KT ='A' ) ) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat OR ( ( @p_IS_TRANSFER='N' AND ( NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID )) AND A.AUTH_STATUS_KT <>'A' ) ) OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='' ) AND ( /*0*/ A.MAKER_ID =@p_USER_LOGIN OR ( A.TRASFER_USER_RECIVE = @P_USER_LOGIN AND A.AUTH_STATUS NOT IN ('E','R') ) OR ( @P_USER_LOGIN = 'xuanpt' --DOANPTT 20/12/22: CHO A XUAN XEM TOAN BO PHIEU THUOC PHONG HANH CHINH AND A.DEP_ID = 'DEP000000000014' AND A.BRANCH_ID = 'DV0001' AND A.AUTH_STATUS IN ('U','R', 'A') AND @p_TYPE_SEARCH ='HC' ) OR ( A.AUTH_STATUS <>'E' /*1*/ AND (/*2*/ ( @p_TYPE_SEARCH ='HC' /*3*/ AND @BRANCH_TYPE_LG ='HS' AND (/*4*/A.TRASFER_USER_RECIVE = @p_USER_LOGIN OR (/*5*/ EXISTS ( SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDDV','GDK','KTT','TPTC','TP','PP','TC') ) AND ( ( A.BRANCH_ID =@p_BRANCH_LOGIN OR A.BRANCH_ID IN (SELECT * FROM @BRANCH_AUTH) ) AND ( A.DEP_ID = @DEP_ID_LG OR ( A.DEP_ID IN ('DEP000000000051','DEP000000000733') AND @p_USER_LOGIN ='cuongpv2' ) OR A.DEP_ID IN ( SELECT * FROM @DEP_AUTH ) ) ) AND ( A.TRASFER_USER_RECIVE IS NULL OR A.TRASFER_USER_RECIVE ='' OR ( A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' AND A.PROCESS IS NOT NULL AND A.PROCESS <>'' ) ) )/*5*/ )/*4*/ )/*3*/ OR(/*trong 2*/ @p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'CN' AND ( @ROLE_ID IN ('GDDV','PGD','TPGD','PPGD') AND A.BRANCH_ID =@p_BRANCH_LOGIN AND ( ( A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' AND A.PROCESS IS NOT NULL AND A.PROCESS <>'' ) OR A.TRASFER_USER_RECIVE ='' OR A.TRASFER_USER_RECIVE IS NULL ) OR ( ( A.BRANCH_CREATE <> @p_BRANCH_LOGIN AND A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' ) OR A.BRANCH_CREATE = @p_BRANCH_LOGIN ) AND A.BRANCH_ID =@p_BRANCH_ID ) ) OR ( @p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'PGD' AND ( @ROLE_ID IN ('GDDV','TPGD','PPGD','PGD') AND A.BRANCH_ID =@p_BRANCH_LOGIN ) ) OR ( @p_TYPE_SEARCH ='HC' AND( @ROLE_ID IN ('KSV','GDV','NVTC') OR @DEP_ID_LG ='DEP000000000022' ) AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login) ) OR ( @p_TYPE_SEARCH='KT' AND @p_BRANCH_LOGIN ='DV0001' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login) ) OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH ='' )/*2*/ )/*1*/ OR ( ( @ROLE_ID IN ('KSV','GDV','NVTC') OR @DEP_ID_LG ='DEP000000000022' ) AND @p_BRANCH_LOGIN ='DV0001' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login) ) -- NEU DUOC UY QUYEN DUYỆT CHO 1 ĐƠN VỊ KHÁC HỘI SỞ THÌ CHỈ SETUP ĐƠN VỊ, KHÔNG CẦN SETUP PHÒNG BAN OR( @p_TYPE_SEARCH ='HC' AND A.BRANCH_CREATE <> 'DV0001' AND A.BRANCH_ID IN (SELECT * FROM @BRANCH_AUTH) ) -- LUCTV 25 05 BO SUNG CAU HINH CHO PHEP DVKD DUOC THAY NHUNG PDN THANH TOAN DO HO TẠO OR ( @p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG <> 'HS' AND EXISTS ( SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN ( SELECT CONTRACT_ID FROM TR_CONTRACT WHERE BRANCH_ID =@p_BRANCH_LOGIN ) AND AUTH_STATUS_KT ='A' ) ) )/*0*/ ORDER BY A.CREATE_DT DESC -- PAGING END END; END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_JOB_TRIP_ById]' GO ALTER proc [dbo].[TR_REQ_JOB_TRIP_ById] @p_REQ_ID varchar(15) =NULL as begin select * from TR_REQ_JOB_TRIP where REQ_ID=@p_REQ_ID AND RECORD_STATUS='1' end GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_BUDGET_CHECK_LIMIT_YEAR_Byid]' GO -- Stored Procedure ALTER PROCEDURE [dbo].[TR_BUDGET_CHECK_LIMIT_YEAR_Byid] @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_BUDGET_LIMIT_CURRENT decimal(18,0) OUT, @p_BUDGET_USED_CURRENT decimal(18,0) OUT AS -- validation 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) IF(ISNULL(@p_ROLENAME, '') = '') BEGIN -- duyet moi kiem tra han muc IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT where GD_ID = @p_GD_ID and DEP_ID = @p_DEP_ID AND BRANCH_ID = @p_BRANCH_ID AND AUTH_STATUS = 'A' AND BUDGET_YEAR = @p_YEAR)) BEGIN --Validation is here /* NSCP theo định mức năm sẽ được tính bằng lũy kế. Ban đầu, sẽ có 1 ngân sách năm được cấp, nhưng chỉ là dự kiến(hứa sẽ cấp), còn ngân sách thật sự sẽ được chia từng tháng. VD: Ngân sách năm được cấp 1 tỷ. Nhưng 1 tỷ này sẽ chia ra cho 12 tháng. T1 được cấp 100tr, nếu dùng quá định mức sẽ báo. */ -- Lấy hạn mức lũy kế theo tháng hiện tại SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE WHEN MONTH(GETDATE()) = 1 then M1 WHEN MONTH(GETDATE()) = 2 then M2 WHEN MONTH(GETDATE()) = 3 then M3 WHEN MONTH(GETDATE()) = 4 then M4 WHEN MONTH(GETDATE()) = 5 then M5 WHEN MONTH(GETDATE()) = 6 then M6 WHEN MONTH(GETDATE()) = 7 then M7 WHEN MONTH(GETDATE()) = 8 then M8 WHEN MONTH(GETDATE()) = 9 then M9 WHEN MONTH(GETDATE()) = 10 then M10 WHEN MONTH(GETDATE()) = 11 then M11 WHEN MONTH(GETDATE()) = 12 then M12 ELSE M1 END FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND DEP_ID = @p_DEP_ID AND BUDGET_YEAR = @p_YEAR),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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 ISNULL(ROLENAME, '') = '' 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 SET @p_BUDGET_LIMIT_CURRENT = @l_BUDGET_LIMIT_CURRENT; SET @p_BUDGET_USED_CURRENT = @l_BUDGET_USED_CURRENT; -- CHECK NEU KHONG AP DUNG TINH HAN MUC THI BYPASS IF(ISNULL((SELECT BUDGET_LIMIT_AMT FROM TR_REQ_BUDGET_YEAR_LIMIT 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 ISNULL(ROLENAME, '') = '' ),0) > 0) BEGIN IF(@l_BUDGET_USED_CURRENT > @l_BUDGET_LIMIT_CURRENT) BEGIN RETURN '-1' END ELSE BEGIN RETURN '0' END END ELSE BEGIN RETURN '1' END END ELSE BEGIN RETURN '1' END END ELSE BEGIN print 'tlname' -- duyet moi kiem tra han muc IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT where GD_ID = @p_GD_ID AND KHOI_ID = @p_KHOI_ID AND BRANCH_ID = @p_BRANCH_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR AND AUTH_STATUS = 'A')) BEGIN print 'da duyet' --Validation is here /* NSCP theo định mức năm sẽ được tính bằng lũy kế. Ban đầu, sẽ có 1 ngân sách năm được cấp, nhưng chỉ là dự kiến(hứa sẽ cấp), còn ngân sách thật sự sẽ được chia từng tháng. VD: Ngân sách năm được cấp 1 tỷ. Nhưng 1 tỷ này sẽ chia ra cho 12 tháng. T1 được cấp 100tr, nếu dùng quá định mức sẽ báo. */ -- Lấy hạn mức lũy kế theo tháng hiện tại SET @l_BUDGET_LIMIT_CURRENT = ISNULL((SELECT BUDGET_LIMIT_CURRENT = CASE WHEN MONTH(GETDATE()) = 1 then M1 WHEN MONTH(GETDATE()) = 2 then M2 WHEN MONTH(GETDATE()) = 3 then M3 WHEN MONTH(GETDATE()) = 4 then M4 WHEN MONTH(GETDATE()) = 5 then M5 WHEN MONTH(GETDATE()) = 6 then M6 WHEN MONTH(GETDATE()) = 7 then M7 WHEN MONTH(GETDATE()) = 8 then M8 WHEN MONTH(GETDATE()) = 9 then M9 WHEN MONTH(GETDATE()) = 10 then M10 WHEN MONTH(GETDATE()) = 11 then M11 WHEN MONTH(GETDATE()) = 12 then M12 ELSE M1 END FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND TLNAME = @p_TLNAME AND BUDGET_YEAR = @p_YEAR),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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR 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 SET @p_BUDGET_LIMIT_CURRENT = @l_BUDGET_LIMIT_CURRENT; SET @p_BUDGET_USED_CURRENT = @l_BUDGET_USED_CURRENT; print @p_BUDGET_LIMIT_CURRENT print @p_BUDGET_USED_CURRENT -- CHECK NEU KHONG AP DUNG TINH HAN MUC THI BYPASS IF(ISNULL((SELECT BUDGET_LIMIT_AMT FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE 1=1 AND GD_ID = @p_GD_ID AND BRANCH_ID = @p_BRANCH_ID AND KHOI_ID = @p_KHOI_ID AND ROLENAME = @p_ROLENAME AND BUDGET_YEAR = @p_YEAR ),0) > 0) BEGIN IF(@l_BUDGET_USED_CURRENT > @l_BUDGET_LIMIT_CURRENT) BEGIN RETURN '-1' END ELSE BEGIN RETURN '0' END END ELSE BEGIN RETURN '1' END END ELSE BEGIN RETURN '1' END END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAYMENT_Upd]' GO ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Upd] @p_REQ_PAY_ID varchar(15)= NULL, @p_REQ_PAY_CODE varchar(50) = NULL, @p_REQ_DT VARCHAR(20)= NULL, @p_BRANCH_ID varchar(15) = NULL, @p_DEP_ID varchar(15) = NULL, @p_REQ_REASON nvarchar(MAX) = NULL, @p_REQ_TYPE varchar(15) = NULL, @P_REQ_ENTRIES nvarchar(MAX) = NULL, @p_REQ_DESCRIPTION nvarchar(MAX) = NULL, @p_REF_ID varchar(15) = NULL, @p_RECEIVER_PO nvarchar(250) = NULL, @p_REQ_PAY_TYPE varchar(15) = NULL, @p_REQ_TYPE_CURRENCY nvarchar(50) = NULL, @p_REQ_AMT decimal(18, 2) = NULL, @p_REQ_TEMP_AMT decimal(18, 0) = NULL, @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT varchar(25) = NULL, @p_EDITOR_ID varchar(15) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT varchar(25) = NULL, @p_CREATE_DT_KT varchar(25) = NULL, @p_MAKER_ID_KT varchar(15) = NULL, @p_AUTH_STATUS_KT varchar(1) = NULL, @p_CHECKER_ID_KT varchar(1) = NULL, @p_APPROVE_DT_KT varchar(25)= null, @p_CONFIRM_NOTE nvarchar(500) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_NOTES varchar(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_TRANSFER_MAKER nvarchar(50) = NULL, @p_TRANSFER_DT varchar(25) = NULL, @p_TRASFER_USER_RECIVE varchar(15) = NULL, @p_PROCESS varchar(15) = NULL, @p_PAY_PHASE NVARCHAR(255) = NULL, @p_RATE DECIMAL(18,2) = 0, @p_IS_PERIOD VARCHAR(5) = NULL, @p_AMT_PAY decimal(18, 0) = NULL, @p_XMP_TEMP XML = NULL, @p_XMP_TEMP_2 XML = NULL, @p_XMP_TEMP_METHOD XML = NULL, @p_XMP_TEMP_BUDGET XML = NULL, @p_XMP_TEMP_SERVICE XML = NULL, @p_XMP_TEMP_ATTACH XML = NULL, @p_XMP_TEMP_INVOICE XML = NULL, @p_TYPE_FUNCTION VARCHAR(15) = NULL, @p_XMP_TEMP_PO XML = NULL, @p_XMP_TEMP_SCHEDULE XML = NULL, @p_XMP_TEMP_PERIOD XML = NULL, @p_XMP_ADVANCE_DT XML = NULL, --doanptt 15/02/2022 @p_XMP_TEMP_PAY_JOB XML = NULL, @p_XMP_TEMP_PAY_JOB_DT XML = NULL, --doanptt 17/02/2022 @p_XMP_TEMP_PAY_DRIVE XML = NULL, @p_XMP_TEMP_PAY_DRIVE_DT XML = NULL AS -- BEGIN VALIDATE UPDATE IF(@p_TYPE_FUNCTION <> 'SEND') BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT where MAKER_ID = @p_MAKER_ID )) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị thanh toán này. Chỉ người tạo phiếu mới được cập nhật phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS ='U')) BEGIN SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó. Bạn không được quyền chỉnh sửa' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND PROCESS IS NOT NULL AND PROCESS <>'')) BEGIN SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc RETURN '-1' END IF (@p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE ='') BEGIN SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được phép để trống' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS <> 'E' AND AUTH_STATUS <> 'R' AND ISNULL(AUTH_STATUS, '') <> '')) BEGIN SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc RETURN '-1' END END IF(@p_TYPE_FUNCTION = 'SEND') BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT where MAKER_ID = @p_MAKER_ID )) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị tạm ứng này. Chỉ người tạo phiếu mới được cập nhật phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS ='U')) BEGIN SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó. Bạn không được quyền chỉnh sửa' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt. Bạn không được quyền chỉnh sửa' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A')) BEGIN SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kiểm soát viên phê duyệt. Bạn không được quyền chỉnh sửa' ErrorDesc RETURN '-1' END IF (ISNULL(@p_REQ_PAY_CODE, '')='' OR ISNULL(@p_REQ_TYPE, '')='' OR ISNULL(@p_MAKER_ID, '')='' OR ISNULL(@p_BRANCH_ID, '')='' OR ISNULL(@p_DEP_ID, '')='' OR ISNULL(@p_REQ_REASON, '')='') BEGIN SELECT '-1' Result, '' REQ_PAY_ID, N'Các trường dữ liệu không được phép để trống: mã số phiếu, loại thanh toán, người đề nghị thanh toán, đơn vị đề nghị thanh toán, phòng ban đề nghị, số tiền thanh toán, lý do thanh toán. Vui lòng kiểm tra lại thông tin' ErrorDesc RETURN '-1' END IF(@p_MAKER_ID <> (SELECT TOP 1 MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Gửi phê duyệt thất bại! Bạn không được quyền gửi phê duyệt phiếu đề nghị thanh toán của người khác' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS='U')) BEGIN --doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT where AUTH_STATUS <> 'E' AND ISNULL(AUTH_STATUS, '') <> '' AND REQ_PAY_ID = @p_REQ_PAY_ID )) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó hoặc đang bị từ chối! Vui lòng kiểm tra lại thông tin' ErrorDesc RETURN '-1' END END -- END VALIDATE UPDATE --IF EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID) --BEGIN -- SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc -- RETURN '-1' --END -- doanppt IF(@p_REQ_TYPE = 'D') BEGIN DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID END IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y') BEGIN DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID END IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD='N' OR @p_IS_PERIOD IS NULL)) BEGIN DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID END DECLARE @ROLE_KI_NHAY VARCHAR(50) SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE) IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <>'' AND @ROLE_KI_NHAY IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC')) BEGIN PRINT @ROLE_KI_NHAY END ELSE BEGIN SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE) IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='') BEGIN SET @ROLE_KI_NHAY =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_TRASFER_USER_RECIVE)) END END --SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE) IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC','TPGD')) BEGIN SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc RETURN '-1' END BEGIN TRANSACTION -- DECLARE 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(500) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(500) = NULL, @PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL, @NOTES NVARCHAR(MAX) = NULL,@VAT_RATE DECIMAL(18,0),@ACC_NO VARCHAR(50),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CURRENCY VARCHAR(15)= NULL,@RATE DECIMAL(18,2), @TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @PAY_ADV_ID VARCHAR(15),@TYPE_TRANSFER VARCHAR(15),@REQ_PAY_ADV_CODE VARCHAR(15),@REASON NVARCHAR(1000), @REF_TYPE VARCHAR(15), @TRN_DATE VARCHAR(15), @AMT_ADVANCED DECIMAL(18,0),@AMT_DO DECIMAL(18,0), @AMT_REMAIN DECIMAL(18,0),@AMT_PAY DECIMAL(18,0),@AMT_USE DECIMAL(18,2),@AMT_REVERT DECIMAL(18,2), @AMT_ADD DECIMAL(18,2), @TOTAL_SCHEDULE_AMT DECIMAL(18,0) =0 DECLARE @INDEX_AD INT =0, @INDEX_SV INT =0,@INDEX INT =0, @INDEX_IV INT =0, @INDEX_NS INT =0, @INDEX_INVOICE INT = 0, @INDEX_METHOD INT = 0 DECLARE @hdoc INT, @hDoc2 INT, @hDocMeThod INT, @hdocBudget INT, @hdocService INT, @hdocAttach INT, @hdocInvoice INT, @hdocPO INT, @hdocSchedule INT, @hdocPeriod INT, @hdocRecurring INT, @hdocJob INT, @hdocJobDT INT, @hdocDrive INT, @hdocDriveDT INT -- EXEC XMP EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP; EXEC sp_xml_preparedocument @hDoc2 OUTPUT, @p_XMP_TEMP_2; EXEC sp_xml_preparedocument @hDocMeThod OUTPUT, @p_XMP_TEMP_METHOD; EXEC sp_xml_preparedocument @hdocBudget OUTPUT, @p_XMP_TEMP_BUDGET; EXEC sp_xml_preparedocument @hdocService OUTPUT, @p_XMP_TEMP_SERVICE; EXEC sp_xml_preparedocument @hdocAttach OUTPUT, @p_XMP_TEMP_ATTACH; EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE; EXEC sp_xml_preparedocument @hdocPO OUTPUT, @p_XMP_TEMP_PO; EXEC sp_xml_preparedocument @hdocSchedule OUTPUT, @p_XMP_TEMP_SCHEDULE; EXEC sp_xml_preparedocument @hdocPeriod OUTPUT, @p_XMP_TEMP_PERIOD; EXEC sp_xml_preparedocument @hdocRecurring OUTPUT, @p_XMP_ADVANCE_DT; --doanptt 15/02/2022 EXEC sp_xml_preparedocument @hdocJob OUTPUT, @p_XMP_TEMP_PAY_JOB; EXEC sp_xml_preparedocument @hdocJobDT OUTPUT, @p_XMP_TEMP_PAY_JOB_DT; --doanptt 17/02/2022 EXEC sp_xml_preparedocument @hdocDrive OUTPUT, @p_XMP_TEMP_PAY_DRIVE; EXEC sp_xml_preparedocument @hdocDriveDT OUTPUT, @p_XMP_TEMP_PAY_DRIVE_DT; -- BEGIN THONG TIN LUOI MASTER UPDATE TR_REQ_PAYMENT SET REF_ID = @p_REF_ID, DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,REQ_AMT = @p_REQ_AMT, NOTES= @p_NOTES, REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION, RECEIVER_PO = @p_RECEIVER_PO,TRANSFER_MAKER =@p_TRANSFER_MAKER, REQ_TEMP_AMT=@p_REQ_TEMP_AMT,REQ_ENTRIES = @P_REQ_ENTRIES,BRANCH_ID = @p_BRANCH_ID, AUTH_STATUS='E', IS_PERIOD =@p_IS_PERIOD, TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE, RATE = @p_RATE, AMT_PAY = @p_AMT_PAY, AUTH_STATUS_KT = NULL, REQ_TYPE_CURRENCY = @p_REQ_TYPE_CURRENCY WHERE REQ_PAY_ID =@p_REQ_PAY_ID -- BUA DOAN NAY DE XU LY LOI KHONG TIM DUOC NHA CUNG CAP UPDATE CM_SUPPLIER SET ACC_NUM ='' WHERE ACC_NUM IS NULL UPDATE CM_SUPPLIER SET ACC_NUM_OUT ='' WHERE ACC_NUM_OUT IS NULL -- UPDATE TR_REQ_PAY_SERVICE SET REQ_PAY_ID= 'XX'+ RIGHT(REQ_PAY_ID,13) WHERE REQ_PAY_ID NOT IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_TYPE IN ('I','D')) -- UPDATE TR_REQ_PAY_SCHEDULE SET REQ_PAY_ID= 'XX'+ RIGHT(REQ_PAY_ID,13) WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_TYPE ='P' AND IS_PERIOD IS NOT NULL AND IS_PERIOD <>'' AND IS_PERIOD='Y') AND TRN_TYPE ='PAY' AND REQ_PAY_ID =@p_REQ_PAY_ID IF @@Error <> 0 GOTO ABORT -- END THONG TIN LUOI MASTER -- BEGIN THONG TIN HOA DON DINH KEM DECLARE @PDN_TT_LIST_INVOICE NVARCHAR(1000) DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdocInvoice, '/Root/XmlData', 2) WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(500),TAX_NO nvarchar(15), GOODS_NAME nvarchar(500), PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),TYPE_VAT VARCHAR(15),TYPE_FUNC VARCHAR(15)) OPEN XmlData; FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER , @TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC WHILE @@fetch_status=0 BEGIN -- SET SET @INDEX_IV = @INDEX_IV +1 -- BEGIN VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(LEN(@INVOICE_NO) < 1) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' không được để trống' ErrorDesc RETURN '-1' END IF(LEN(@INVOICE_NO) > 8) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' phải bé hơn 9 ký tự' ErrorDesc RETURN '-1' END IF(EXISTS( SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))) BEGIN ---- 19.10.2022 LUCTV DIEU CHINH TAI VI TRI VALIDATE SO HOA DON SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống. Danh sách những phiếu đề nghị thanh toán đã sử dụng: '+ ISNULL(@PDN_TT_LIST_INVOICE,'') ErrorDesc RETURN '-1' END END IF(@GOODS_NAME IS NULL OR @GOODS_NAME ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Tên mặt hàng trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- TÊN NGƯỜI BÀN IF(@SELLER IS NULL OR @SELLER ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Người bán trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END IF(@TAX_NO IS NULL OR @TAX_NO ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Mã số thuế trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- NGÀY HÓA ĐƠN IF(@INVOICE_DT IS NULL OR @INVOICE_DT ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Ngày hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- SỐ HÓA ĐƠN IF(@INVOICE_NO IS NULL OR @INVOICE_NO ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- KÍ HIỆU HÓA ĐƠN IF(@INVOICE_NO_SIGN IS NULL OR @INVOICE_NO_SIGN ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Kí hiệu số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END -- KÍ HIỆU HÓA ĐƠN IF(@PRICE IS NULL OR @PRICE =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số tiền hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc RETURN '-1' END END -- END VALIDATE DECLARE @p_REQ_INV_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT; IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS, CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , NULL ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,UPPER(([dbo].[RemoveVietNamese](@SELLER))),@TAX_NO ,UPPER(([dbo].[RemoveVietNamese](@GOODS_NAME))) , @PRICE ,@TAX,@VAT,@NOTES, @p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, 'VND' , 1,@PRICE,@VAT,@PRICE+@VAT,@TYPE_VAT,@TYPE_FUNC) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC END; CLOSE XmlData; DEALLOCATE XmlData; -- END THONG TIN HOA DON DINH KEM -- BEGIN THONG TIN HANG MUC NGAN SACH VA CHI PHI -- DELETE DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID=@p_REQ_PAY_ID DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID=@p_REQ_PAY_ID DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID=@p_REQ_PAY_ID -- DECLARE DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15), @GD_CODE varchar(15), @AMT_APP decimal(18,2),@AMT_EXE decimal(18,2), @AMT_REMAIN_GD decimal(18,2),@TYPE_COST VARCHAR(15), @FR_LEVEL INT , @TO_LEVEL INT, @MONTH_RATE VARCHAR(4), @YEAR_RATE VARCHAR(4), @BUDGET_TYPE VARCHAR(20), @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20), @MONTH VARCHAR(20), @YEAR VARCHAR(20), @BRANCH_TYPE VARCHAR(20), @KHOI_ID VARCHAR(20), @TLNAME VARCHAR(20), @RoleName VARCHAR(20), @BRANCH_TAKE_COST_ID VARCHAR(20), @DEP_TAKE_COST_ID VARCHAR(20), @KHOI_TAKE_COST_ID VARCHAR(20) -- DECLARE CURSOR DECLARE XmlDataGood CURSOR FOR SELECT * FROM OPENXML(@hdocBudget, 'Root/XmlDataGood',2) WITH(TRADE_ID varchar(15),GD_ID varchar(15),GD_CODE varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2), AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), REASON NVARCHAR(1000),TYPE_COST VARCHAR(15), FR_LEVEL INT ,TO_LEVEL INT, MONTH_RATE VARCHAR(4), YEAR_RATE VARCHAR(4), BUDGET_TYPE VARCHAR(20), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), MONTH VARCHAR(20), YEAR VARCHAR(20), BRANCH_TYPE VARCHAR(20), KHOI_ID VARCHAR(20), TLNAME VARCHAR(20), RoleName VARCHAR(20), BRANCH_TAKE_COST_ID VARCHAR(20), DEP_TAKE_COST_ID VARCHAR(20), KHOI_TAKE_COST_ID VARCHAR(20)) -- BEGIN CURSOR THONG TIN HANG MUC NGAN SACH VA CHI PHI OPEN XmlDataGood FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID , @GD_CODE, @AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY, @RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID , @DEP_ID, @MONTH, @YEAR, @BRANCH_TYPE, @KHOI_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID WHILE @@fetch_status=0 BEGIN -- SET SET @INDEX_NS = @INDEX_NS +1 -- BEGIN VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(ISNULL(@AMT_EXE,0) =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc RETURN '-1' END /* IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc RETURN '-1' END */ IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE())) AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc RETURN '-1' END --doanptt 180622 ghi log NSCP -- BEGIN CHECK HAN MUC CHI PHI THEO NAM IF(@BUDGET_TYPE = 'nam') BEGIN IF(@YEAR_RATE = '' OR @YEAR_RATE IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Năm định mức không được để trống' ErrorDesc RETURN '-1' END SET @MONTH_RATE = 'M' + CONVERT(VARCHAR(20), MONTH(GETDATE())); DECLARE @l_BUDGET_LIMIT_YEAR_DETAIL_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_YEAR_DETAIL', @l_BUDGET_LIMIT_YEAR_DETAIL_ID OUT; IF(@MONTH_RATE = 'M1') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID, DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M2') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M3') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M4') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE,0,0,0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M5') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M6') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID, DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M7') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M8') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, '', '', '', '', '', '', '', @AMT_EXE, '', '', '', '', @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M9') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M10') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE,0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M11') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M12') BEGIN INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END -- CHECK HẠN MỨC DECLARE @l_HAVE_BUDGET_LIMIT_YEAR decimal(18,0), @l_BUDGET_LIMIT_CURRENT_YEAR decimal(18,0) =0, @l_BUDGET_USED_CURRENT_YEAR decimal(18,0) =0 , @l_BRANCH_TYPE_YEAR VARCHAR(20) = ''; EXEC TR_BUDGET_CHECK_LIMIT_YEAR_Byid @GD_ID, @GD_CODE ,@BRANCH_ID, @DEP_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @MONTH_RATE, @YEAR_RATE, @l_BUDGET_LIMIT_CURRENT_YEAR out, @l_BUDGET_USED_CURRENT_YEAR out IF(@l_BUDGET_LIMIT_CURRENT_YEAR < @l_BUDGET_USED_CURRENT_YEAR) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng ngân sách vượt quá định mức ngân sách. Hạn mức hiện tại là ' + FORMAT(@l_BUDGET_LIMIT_CURRENT_YEAR,'#,#', 'vi-VN') + N', số tiền đã sử dụng đến hiện tại là ' + FORMAT(@l_BUDGET_USED_CURRENT_YEAR,'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END-- END CHECK HAN MUC NGAN SACH CHI PHI THEO NAM ELSE IF(@BUDGET_TYPE = 'thang') BEGIN -- BEGIN CHECK HAN MUC NGAN SACH CHI PHI THEO THANG -- BEGIN KIỂM TRA HẠN MỨC DECLARE @l_HAVE_BUDGET_LIMIT decimal(18,0), @l_BUDGET_LIMIT_CURRENT decimal(18,0) =0, @l_BUDGET_USED_CURRENT decimal(18,0) =0 , @l_BRANCH_TYPE VARCHAR(20) = ''; -- lấy loại đơn vị SET @l_BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID) IF(@l_BRANCH_TYPE = 'HS') BEGIN SET @l_BRANCH_TYPE = 'ho' END ELSE BEGIN SET @l_BRANCH_TYPE = 'dvkd' END DECLARE @l_BUDGET_LIMIT_MONTH_DETAIL_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_MONTH_DETAIL', @l_BUDGET_LIMIT_MONTH_DETAIL_ID OUT; IF(@MONTH_RATE = '' OR @MONTH_RATE IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Tháng định mức không được để trống' ErrorDesc RETURN '-1' END IF(@YEAR_RATE = '' OR @YEAR_RATE IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Năm định mức không được để trống' ErrorDesc RETURN '-1' END -- END KIỂM TRA HẠN MỨC -- BEGIN VALIDATE IF(@MONTH_RATE = 'M1') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M2') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M3') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M4') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE,0,0,0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M5') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M6') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID, DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M7') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M8') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, '', '', '', '', '', '', '', @AMT_EXE, '', '', '', '', @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M9') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M10') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE,0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M11') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END IF(@MONTH_RATE = 'M12') BEGIN INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT) VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL ) END -- END VALIDATE -- CHECK HẠN MỨC EXEC TR_BUDGET_CHECK_LIMIT_MONTH_Byid @GD_ID, @GD_CODE ,@l_BRANCH_TYPE, @YEAR_RATE , @MONTH_RATE, @l_BUDGET_LIMIT_CURRENT out, @l_BUDGET_USED_CURRENT out IF(@l_BUDGET_LIMIT_CURRENT < @l_BUDGET_USED_CURRENT) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng ngân sách vượt quá định mức ngân sách. Hạn mức hiện tại là ' + FORMAT(@l_BUDGET_LIMIT_CURRENT,'#,#', 'vi-VN') + N', số tiền đã sử dụng đến hiện tại là ' + FORMAT(@l_BUDGET_USED_CURRENT,'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END --END CHECK HAN MUC NGAN SACH CHI PHI THEO THANG END -- END VALIDATE 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) VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_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) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID , @GD_CODE, @AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY, @RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID , @DEP_ID, @MONTH, @YEAR, @BRANCH_TYPE, @KHOI_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID END; CLOSE XmlDataGood; DEALLOCATE XmlDataGood; -- END THONG TIN HAMG MUC NGAN SACH VA CHI PHI -- BEGIN THONG TIN PHUONG THUC THANH TOAN -- DELETE DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID --DECLARE DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2), @REQ_PAY_TYPE varchar(1),@REQ_PAY_DESC nvarchar(MAX), @REQ_PAY_ENTRIES nvarchar(MAX),@CHECK_IN VARCHAR(15), @BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME VARCHAR(250), @SUB_ISSUED_BY NVARCHAR(250), @RECEIVER_DEBIT VARCHAR(20) -- SET SET @INDEX = 0 -- DECLARE CURSOR DECLARE XmlDataMethod CURSOR 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(250), 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 NVARCHAR(250), SUB_ISSUED_BY NVARCHAR(250), RECEIVER_DEBIT NVARCHAR(20)) -- BEGIN CURSOR THONG TIN PHUONG THUC THANH TOAN OPEN XmlDataMethod FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@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 -- SET SET @INDEX_METHOD = @INDEX_METHOD+1 -- BEGIN VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN 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((@BANKCODE IS NULL OR @BANKCODE = '') AND @CHECK_IN = 'O') 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': Loại tài khoản là ngoài hệ thống! Vui lòng chọn lại Tên ngân hàng/nơi cấp CMND từ danh sách!' 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(@ISSUED_BY = '' OR @ISSUED_BY 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': Tên ngân hàng/nơi cấp CMND '+ N' không được để trống' ErrorDesc RETURN '-1' END IF(@ACC_NAME = '' OR @ACC_NAME 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': Tên tài khoản/người nhận '+ N' không được để trống' ErrorDesc RETURN '-1' END END -- END VALIDATE 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_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,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',@p_MAKER_ID,GETDATE(),@ACC_NO, @ACC_NAME,@ISSUED_BY,CONVERT(DATE,@ISSUED_DT,103), @p_REQ_TYPE_CURRENCY , @p_RATE,@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_METHOD,@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; -- END CURSOR THONG TIN PHUONG THUC THANH TOAN -- END THONG TIN PHUONG THUC THANH TOAN -- BEGIN THONG TIN HOP DONG DINH KEM & THONG TIN CHUNG TU KHAC DINH KEM -- DELETE DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID -- DECLARE DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000), @CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20), @LICENSE_DT VARCHAR(15) -- DECLARE CURSOR DECLARE XmlAttach CURSOR FOR SELECT * FROM OPENXML(@hdocAttach, 'Root/XmlAttach',2) WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000), CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20), LICENSE_DT VARCHAR(15)) -- BEGIN CURSOR THONG TIN CHUNG TU KHAC DINH KEM OPEN XmlAttach FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT WHILE @@fetch_status=0 BEGIN IF (@REF_DT='') BEGIN SET @REF_DT = NULL END EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT; IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],[AMT],REF_DT, LICENSE_DT) VALUES (@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,CONVERT(DATE,@REF_DT,103) ,CONVERT(DATE, @LICENSE_DT,103)) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT END CLOSE XmlAttach; DEALLOCATE XmlAttach; -- END THONG TIN HOP DONG DINH KEM & THONG TIN CHUNG TU KHAC DINH KEM ------------------------ -- NEU LA THANH TOAN HOAN TAM UNG IF(@p_REQ_TYPE = 'I') BEGIN -- DELETE DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID DECLARE XmlDataPay CURSOR FOR SELECT * FROM OPENXML(@hDoc2, '/Root/XmlDataPay', 2) WITH(PAY_ADV_ID nvarchar(50),AMT_ADVANCED decimal(18, 0),AMT_DO decimal(18,2), AMT_REMAIN decimal(18,2),AMT_PAY decimal(18,2),AMT_USE decimal(18,2),AMT_REVERT DECIMAL(18,0),AMT_ADD DECIMAL(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), TRN_DATE VARCHAR(15)) -- BEGIN CURSOR THONG TIN PHIEU DE NGHI TAM UNG OPEN XmlDataPay; FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE WHILE @@fetch_status=0 BEGIN SET @INDEX_AD = @INDEX_AD +1 SET @REQ_PAY_ADV_CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID) -- BEGIN VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN -- KIEM TRA XEM CO PHIEU NAO DANG DUOC THANH TOAN HOAN TAM UNG MA CHUA DUYET HAY CHUA --IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS_KT <>'A' OR AUTH_STATUS_KT IS NULL)) AND PAY_ID <> @p_REQ_PAY_ID)) IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS ='A' AND ISNULL(AUTH_STATUS_KT,'') <> 'A')) AND PAY_ID <> @p_REQ_PAY_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng số '+@REQ_PAY_ADV_CODE+ N' đang được thanh toán hoàn tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc RETURN '-1' END -- KIEM TRA NEU SO TIEN DE NGHI HOAN TAM ƯNG LON HON SO TIEN CON LAI CAN PHAI TAM UNG IF(@AMT_REVERT>(@AMT_REMAIN -@AMT_USE) AND @AMT_REVERT >0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Số tiền hoàn ứng không được vượt quá '+FORMAT((@AMT_REMAIN -@AMT_USE),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END --KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADV_ID)<=0) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng này đã được hoàn tạm ứng xong. Vui lòng xóa khỏi danh sách hoàn tạm ứng' ErrorDesc RETURN '-1' END END -- END VALIDATE DECLARE @p_REQ_PAYDT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT_DT', @p_REQ_PAYDT_ID OUT; IF @p_REQ_PAYDT_ID='' OR @p_REQ_PAYDT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAYMENT_DT VALUES (@p_REQ_PAYDT_ID,@PAY_ADV_ID,@p_REQ_PAY_ID , ISNULL(@AMT_ADVANCED,0) ,ISNULL(@AMT_DO,0),ISNULL(@AMT_REMAIN,0), ISNULL(ISNULL(@AMT_USE,0) + ISNULL(@AMT_REVERT,0) - ISNULL(@AMT_ADD,0),0) ,ISNULL(@AMT_USE,0) ,ISNULL(@AMT_REVERT,0), ISNULL(@AMT_ADD,0), CONVERT(DATE,@TRN_DATE,103) ,@p_MAKER_ID ,GETDATE() ,NULL ,NULL,'U' ,NULL ,NULL ,NULL ,NULL,NULL, @p_REQ_TYPE_CURRENCY , @p_RATE) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE END CLOSE XmlDataPay; DEALLOCATE XmlDataPay; --END CURSOR THONG TIN PHIEU DE NGHI TAM UNG -------------------------------------------------------------------------------------------------------------------- --INSERT FROM CatCursor --DELETE DELETE FROM TR_REQ_PAY_CAT WHERE REQ_PAY_ID = @p_REQ_PAY_ID --CatCursor DECLARE @REQ_ADV_ID varchar(15),@CAT_NAME nvarchar(100),@TOTAL_AMT_CAT decimal(18,2), @DEPT_ID VARCHAR(15) DECLARE XmlDataCat CURSOR FOR SELECT * FROM OPENXML(@hdoc, 'Root/XmlDataCat',2) WITH(REQ_ADV_ID VARCHAR(15),CAT_NAME nvarchar(100),TOTAL_AMT decimal(18,2), DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2)) OPEN XmlDataCat FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE WHILE @@fetch_status=0 BEGIN SET @INDEX = @INDEX +1 DECLARE @p_REQ_PAY_CAT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_CAT', @p_REQ_PAY_CAT_ID OUT; IF @p_REQ_PAY_CAT_ID='' OR @p_REQ_PAY_CAT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_CAT VALUES (@p_REQ_PAY_CAT_ID,@p_REQ_PAY_ID,@REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@p_MAKER_ID,GETDATE(), @p_REQ_TYPE_CURRENCY , @p_RATE) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE END CLOSE XmlDataCat; DEALLOCATE XmlDataCat; END -- NEU LA THANH TOAN KHAC IF(@p_REQ_TYPE = 'D' OR @p_REQ_TYPE ='I') BEGIN -- DELETE DELETE FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID -- DECLARE DECLARE @SUM_TTCT_LINK DECIMAL(18,0), @SUM_TT_CT DECIMAL(18,0), @SUM_KUY_KE_TT DECIMAL(18,0),@SUM_PYCMS_LINK DECIMAL(18,0), @PYCMS_CODE_LIST VARCHAR(250), @PYCMS_CODE_DRAFT_LIST VARCHAR(250), @PDNTT_CODE_LIST VARCHAR(250) DECLARE @REQ_PAY_SERVICE_NAME nvarchar(100),@RECEIVE_ID_SERVICE varchar(15),@RECEIVE_NAME_SERVICE nvarchar(100),@REQ_PAY_REASON_SERVICE nvarchar(MAX), @TOTAL_AMT_SERVICE decimal(18,2), @REQ_PAY_TYPE_SERVICE varchar(1),@REQ_PAY_DESC_SERVICE nvarchar(MAX),@REQ_PAY_ENTRIES_SERVICE nvarchar(MAX),@DEPT_ID_SRV VARCHAR(15) -- SET SET @SUM_KUY_KE_TT=0 SET @INDEX = 0 -- DECLARE CURSOR DECLARE XmlDataService CURSOR FOR SELECT * FROM OPENXML(@hdocService, 'Root/XmlDataService',2) WITH(REQ_PAY_SERVICE_NAME nvarchar(100),RECEIVE_ID_SERVICE varchar(15),RECEIVE_NAME_SERVICE nvarchar(100),REQ_PAY_REASON_SERVICE nvarchar(MAX), TOTAL_AMT_SERVICE decimal(18,2),REQ_PAY_TYPE_SERVICE varchar(1),REQ_PAY_DESC_SERVICE nvarchar(MAX),REQ_PAY_ENTRIES_SERVICE nvarchar(MAX), DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2)) -- BEGIN CURSOR THONG TIN CAC DICH VU THANH TOAN OPEN XmlDataService FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE, @REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE WHILE @@fetch_status=0 BEGIN SET @INDEX = @INDEX +1 SET @SUM_TTCT_LINK =(SELECT SUM(TOTAL_AMT*ISNULL(RATE,1)) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT) AND REQ_PAY_ID <> @p_REQ_PAY_ID AND EMP_ID =@RECEIVE_ID_SERVICE) SET @SUM_PYCMS_LINK =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE),0) SET @SUM_TT_CT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE) SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) SET @PYCMS_CODE_DRAFT_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE AND AUTH_STATUS = 'E' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@RECEIVE_ID_SERVICE) AND REQ_PAY_ID <> @p_REQ_PAY_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) --------------- BEGIN VALIDATE -------------- IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(@DEPT_ID_SRV IS NULL OR @DEPT_ID_SRV ='') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phòng ban chịu chi phí không được để trống' ErrorDesc RETURN '-1' END IF(@TOTAL_AMT_SERVICE IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không được để trống' ErrorDesc RETURN '-1' END IF(@TOTAL_AMT_SERVICE < 0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không thể nhỏ hơn 0' ErrorDesc RETURN '-1' END IF(((ISNULL(@SUM_TTCT_LINK,0) +ISNULL(@SUM_PYCMS_LINK,0) + ISNULL(@TOTAL_AMT_SERVICE,0)) > ISNULL(@SUM_TT_CT,0)) AND @RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+N': Thông tin chi tiết về hạn mức sử dụng của tờ trình số: '+(SELECT TOP 1 ISNULL(REQ_CODE,'') FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)+N' như sau:' + CHAR(10) + N'
* Số tiền các phiếu yêu cầu mua sắm số:'+ISNULL(@PYCMS_CODE_LIST,'')+N' đã sử dụng: '+FORMAT(ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND'+ + CHAR(10) + N'
* Số tiền ở các phiếu thanh toán số: '+ISNULL(@PDNTT_CODE_LIST,'')+N' đã sử dụng: '+ FORMAT(ISNULL(@SUM_TTCT_LINK,0),'#,#', 'vi-VN') +' VND' + CHAR(10) + N'
* Bạn đang thanh toán cho phiếu này với số tiền: '+ FORMAT(ISNULL(@TOTAL_AMT_SERVICE,0),'#,#', 'vi-VN') +' VND' + CHAR(10) + N'
* Số tiền còn lại được phép thanh toán là: '+FORMAT(ISNULL(@SUM_TT_CT,0) -ISNULL(@SUM_TTCT_LINK,0) -ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND' + CHAR(10) + N'
* Chú ý những PYCMS sau đang lưu nháp & ăn ngân sách, vui lòng kiểm tra và xóa PYCMS: ' + ISNULL(@PYCMS_CODE_DRAFT_LIST,'') ErrorDesc RETURN '-1' END END --------------- END VALIDATE ---------------- --IF(@RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '') --BEGIN -- SET @SUM_PYCMS_LINK = @SUM_PYCMS_LINK +@TOTAL_AMT_SERVICE --END --SET @SUM_KUY_KE_TT = @SUM_KUY_KE_TT + @TOTAL_AMT_SERVICE DECLARE @p_REQ_PAY_SERVICE_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SERVICE', @p_REQ_PAY_SERVICE_ID OUT; IF @p_REQ_PAY_SERVICE_ID='' OR @p_REQ_PAY_SERVICE_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_SERVICE(SERVICE_ID,REQ_PAY_ID,[SERVICE_NAME],EMP_ID,REQ_PAY_REASON,TOTAL_AMT,REQ_PAY_TYPE,REQ_PAY_DESC,REQ_PAY_ENTRIES,MAKER_ID,CREATE_DT,DEPT_ID,CURRENCY,RATE) VALUES (@p_REQ_PAY_SERVICE_ID,@p_REQ_PAY_ID,@REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE, @REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@p_MAKER_ID,GETDATE(),@DEPT_ID_SRV, @p_REQ_TYPE_CURRENCY , @p_RATE) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,@REQ_PAY_TYPE_SERVICE, @REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE END CLOSE XmlDataService; DEALLOCATE XmlDataService; -- BEGIN CURSOR THONG TIN CAC DICH VU THANH TOAN END IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR (@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') OR @p_REQ_TYPE ='I') BEGIN DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID END -- NEU LA THANH TOAN PO HOP DONG IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE ='I') BEGIN -- DELETE --DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID /* IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) BEGIN DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID END */ -- DECLARE DECLARE @INDEX_PO INT, @REF_ID VARCHAR(15),@IS_CLOSED VARCHAR(1) --SET SET @INDEX_PO = 0 -- DECLARE CURSOR DECLARE XmlDataPO CURSOR FOR SELECT * FROM OPENXML(@hdocPO, '/Root/XmlDataPO', 2) WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15)) -- BEGIN CURSOR THÔNG TIN PO/ HOP DONG OPEN XmlDataPO; FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE WHILE @@fetch_status=0 BEGIN -- SET SET @INDEX_PO = @INDEX_PO +1 -- BEGIN VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN DECLARE @PDN_TAMUNG_LIST VARCHAR(4000) --- LUCTV 19.10.2022 -- KIEM TRA PO DUOC DUYET HAY CHUA --IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@REF_ID AND AUTH_STATUS <>'A')) --BEGIN --ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+ -- (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' chưa được phê duyệt. Vui lòng phê duyệt PO trước khi tạo phiếu thanh toán' ErrorDesc -- RETURN '-1' --END ---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' --AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL))) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+ -- (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc -- RETURN '-1' --END ---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' --AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID)) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+ -- (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc -- RETURN '-1' --END ---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' --AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL))) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+ -- (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc -- RETURN '-1' --END ---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y'))) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+ -- (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc -- RETURN '-1' --END -- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID --IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL))) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+ -- (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc -- RETURN '-1' --END ---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH --IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID)) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+ -- (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc -- RETURN '-1' --END --IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REF_ID =@REF_ID AND PAY_ID =@PAY_ID AND -- REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID)) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+ -- (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc -- RETURN '-1' --END -- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH SET @PDN_TAMUNG_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P') AND ISNULL(AUTH_STATUS_KT,'') NOT IN ('A','E','R') FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) --- VALIDATE PO DANG TRONG QUA TRINH TAM UNG IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+ (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất.Danh sách phiếu tạm ứng đang sử dụng: '+ ISNULL(@PDN_TAMUNG_LIST,'') ErrorDesc RETURN '-1' END -- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+ (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc RETURN '-1' END END -- END VALIDATE DECLARE @REQ_PAYDTID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT; IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT; IF(LEFT(@REF_ID, 3) = 'TRC') BEGIN INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES (@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED, 'C') END ELSE BEGIN INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES (@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED, 'P') END IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE END CLOSE XmlDataPO; DEALLOCATE XmlDataPO; -- END CURSOR THÔNG TIN PO/ HOP DONG -- DELETE DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID -- DECLARE DECLARE @PO_ID VARCHAR(15), @PAY_PHASE NVARCHAR(250), @AMT_ADVANCE DECIMAL(18,2), @REQ_AD_DT VARCHAR(20),@PROCESS VARCHAR(15),@PAY_ID VARCHAR(15),@AMT_PAY_DO DECIMAL(18,2),@AMT_PAY_REAL DECIMAL(18,2) -- DECLARE CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG DECLARE XmlDataSchedule CURSOR FOR SELECT * FROM OPENXML(@hdocSchedule, 'Root/XmlDataSchedule',2) WITH(PO_ID VARCHAR(15),PAY_PHASE VARCHAR(15),AMT_PAY DECIMAL(18,2),REQ_ADV_ID VARCHAR(15), AMT_ADVANCE DECIMAL(18,2), AMT_REMAIN DECIMAL(18,2),REQ_AD_DT VARCHAR(20),PROCESS VARCHAR(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),REQ_PAY_DESC NVARCHAR(250), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),AMT_PAY_DO DECIMAL(18,2),AMT_PAY_REAL DECIMAL(18,2)) -- BEGIN CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG OPEN XmlDataSchedule SET @INDEX_PO = 0 FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@PAY_PHASE,@AMT_PAY, @REQ_ADV_ID,@AMT_ADVANCE,@AMT_REMAIN,@REQ_AD_DT, @PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL WHILE @@fetch_status=0 BEGIN --IF(@AMT_REMAIN =0) --BEGIN -- SET @PROCESS ='3' --END --IF(@PROCESS <>'2') --BEGIN -- SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +@AMT_REMAIN --END SET @INDEX_PO = @INDEX_PO +1 SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +(@AMT_PAY - @AMT_ADVANCE -@AMT_PAY_DO) -- BEGIN VALIDATE IF(@p_TYPE_FUNCTION ='SEND' AND @p_REQ_TYPE ='P') BEGIN IF(ISNULL(@AMT_PAY_REAL,0) < ISNULL(@AMT_ADVANCE ,0)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Số tiền thanh toán thực tế tối thiểu phải bằng số tiền đã tạm ứng : ' +FORMAT(SUM(@AMT_ADVANCE),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END -- END VALIDATE DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT; IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_SCHEDULE (SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID, CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL) VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID, @AMT_PAY, @PAY_PHASE, @REQ_ADV_ID, @AMT_ADVANCE, @AMT_PAY_DO, @AMT_REMAIN, --IIF(@PROCESS<>'2',(@AMT_PAY-@AMT_ADVANCE),0), GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),@PROCESS,@p_MAKER_ID,GETDATE(),'U','','PAY',@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES, @p_REQ_TYPE_CURRENCY , @p_RATE,@AMT_PAY_REAL) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataSchedule INTO @PO_ID, @PAY_PHASE, @AMT_PAY, @REQ_ADV_ID, @AMT_ADVANCE,@AMT_REMAIN,@REQ_AD_DT, @PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL END CLOSE XmlDataSchedule; DEALLOCATE XmlDataSchedule; -- END CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG ---- VALIDATE SO TIEN --IF(@p_REQ_AMT > ISNULL(@TOTAL_SCHEDULE_AMT,0)) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+ FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc -- RETURN '-1' --END ------ END -- NEU LA THANH TOAN CAC HOP DONG DINH KY IF((@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') OR @p_REQ_TYPE='I') BEGIN -- DELETE --DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID /* IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') BEGIN DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID END */ -- DECLARE DECLARE @CONTRACT_PERIOD_ID VARCHAR(15),@IS_PERIOD_CLOSED VARCHAR(1), @DELIVERY_DT VARCHAR(20) --DECLARE CURSOR THONG TIN HOP DONG DINH KY DECLARE XmlDataRecurring CURSOR FOR SELECT * FROM OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2) WITH(CONTRACT_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15), DELIVERY_DT VARCHAR(20)) -- BEGIN CURSOR THONG TIN HOP DONG DINH KY OPEN XmlDataRecurring; FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE, @DELIVERY_DT WHILE @@fetch_status = 0 BEGIN -- SET SET @INDEX_PO = @INDEX_PO +1 -- BEGIN VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@REF_ID AND AUTH_STATUS <>'A')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+ (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' chưa được phê duyệt. Vui lòng phê duyệt PO trước khi tạo phiếu thanh toán' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+ (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc RETURN '-1' END -- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+ (SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc RETURN '-1' END END -- END VALIDATE 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,@p_REQ_PAY_ID,@CONTRACT_PERIOD_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_PERIOD_CLOSED,'C', CONVERT(DATE,@DELIVERY_DT,103)) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE, @DELIVERY_DT END CLOSE XmlDataRecurring; DEALLOCATE XmlDataRecurring; -- END CURSOR THONG TIN HOP DONG DINH KY -- DECLARE DECLARE @INDEX_PERIOD INT --SET SET @INDEX_PERIOD = 0 -- DELETE DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID -- DECLARE DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5), @OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2), @FROM_DATE VARCHAR(20), @TO_DATE VARCHAR(20),@AD_PAY_ID VARCHAR(15), @_PROCESS VARCHAR(15),@PARENT_ID VARCHAR(15),@REASON_TTDK NVARCHAR(2000) -- DECLARE CURSOR DECLARE XmlDataPeriod CURSOR FOR SELECT * FROM OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2) WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5), OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), RATE DECIMAL(18,0),FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20), AD_PAY_ID VARCHAR(15), PROCESS VARCHAR(5),PARENT_ID VARCHAR(15),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000)) -- BEGIN CURSOR THONG TIN THANH TOAN HOP DONG DINH KY OPEN XmlDataPeriod; FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE, @OLD_INDEX , @NEW_INDEX , @AMT_PAY_PERIOD, @CURRENCY, @RATE, @FROM_DATE, @TO_DATE, @AD_PAY_ID, @_PROCESS, @PARENT_ID, @PAY_PHASE, @REASON_TTDK WHILE @@fetch_status=0 BEGIN -- SET SET @INDEX_PERIOD = @INDEX_PERIOD +1 -- BEGIN VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(@NEW_INDEX <=@OLD_INDEX AND (@NEW_INDEX >0 AND @OLD_INDEX >0) ) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì: Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc RETURN '-1' END -- NEU LÀ DINH KI THI HD PHAI KHAC NULL IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' ) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc RETURN '-1' END -- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG IF(@CONTRACT_ID IS NOT NULL AND @CONTRACT_ID <> '' ) BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc RETURN '-1' END END IF(ISNULL(@PARENT_ID, '') = '' AND @_PROCESS = '2') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì: Không được để trống cột số phiếu tạm ứng.' + CHAR(10) + N'
Nếu hợp đồng định kỳ này có kỳ tạm ứng, vui lòng làm như sau để hoàn ứng: ' + CHAR(10) + N'
Bước 1: Tại lưới thông tin hợp đồng định kỳ, xóa dòng hợp động kịnh kỳ cần hoàn ứng( hợp đồng có ID hợp đồng(hệ thống): ' + @CONTRACT_ID + + CHAR(10) + N'
Bước2: Tại lưới thông tin hợp đồng định kỳ, chọn lại hợp đồng cần hoàn ứng( hợp đồng có ID hợp đồng(hệ thống): ' + @CONTRACT_ID ErrorDesc RETURN '-1' END END -- END VALIDATE 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) VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103), @OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U', @p_REQ_TYPE_CURRENCY , @p_RATE, CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE, @OLD_INDEX , @NEW_INDEX , @AMT_PAY_PERIOD, @CURRENCY, @RATE, @FROM_DATE, @TO_DATE, @AD_PAY_ID, @_PROCESS, @PARENT_ID, @PAY_PHASE, @REASON_TTDK END CLOSE XmlDataPeriod; DEALLOCATE XmlDataPeriod; END -- END CURSOR THONG TIN THANH TOAN HOP DONG DINH KY --doanptt 15/02/2022 -- INSERT JOB -- DS PHIEU YEU CAU CONG TAC DELETE FROM TR_REQ_PAY_JOB WHERE REQ_PAY_ID = @p_REQ_PAY_ID DECLARE @REQ_PAY_JOB_ID varchar(15) ,@REQ_PAY_ID varchar(15),@REQ_ID varchar(15), @REQ_CODE varchar(15), @MAKER_ID varchar(15), @CREATE_DT varchar(15), @PAY_TYPE_J VARCHAR(5), @PAY_PHASE_J NVARCHAR(250), @PAY_AMT DECIMAL(18,0), @PAY_DESC NVARCHAR(1000) , @AUTH_STATUS VARCHAR(1), @AUTH_STATUS_KT VARCHAR(1) DECLARE XmlDataJob CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocJob, 'Root/XmlDataJob',2) WITH(REQ_PAY_JOB_ID varchar(15) ,REQ_PAY_ID varchar(15),REQ_ID varchar(15), REQ_CODE varchar(15), MAKER_ID varchar(15),CREATE_DT varchar(15), PAY_TYPE VARCHAR(5), PAY_PHASE NVARCHAR(250), PAY_AMT DECIMAL(18,0), PAY_DESC NVARCHAR(1000), AUTH_STATUS VARCHAR(1), AUTH_STATUS_KT VARCHAR(1)) OPEN XmlDataJob --- INSERT PHIEU YEU CAU CONG TAC FETCH NEXT FROM XmlDataJob INTO @REQ_PAY_JOB_ID ,@REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , @CREATE_DT , @PAY_TYPE_J , @PAY_PHASE_J , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT WHILE @@fetch_status=0 BEGIN /*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI SET @INDEX_NS = @INDEX_NS +1 --KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(ISNULL(@AMT_EXE,0) =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc RETURN '-1' END IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc RETURN '-1' END END IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE())) AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc RETURN '-1' END*/ DECLARE @p_REQ_JOB_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_JOB', @p_REQ_JOB_ID OUT; IF @p_REQ_JOB_ID='' OR @p_REQ_JOB_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_JOB(REQ_PAY_JOB_ID ,REQ_PAY_ID ,REQ_ID , REQ_CODE, MAKER_ID, CREATE_DT , PAY_TYPE , PAY_PHASE , PAY_AMT , PAY_DESC, AUTH_STATUS , AUTH_STATUS_KT) VALUES (@p_REQ_JOB_ID ,@p_REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , GETDATE() , @PAY_TYPE_J , @PAY_PHASE_J , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataJob INTO @REQ_PAY_JOB_ID ,@REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , @CREATE_DT , @PAY_TYPE_J , @PAY_PHASE_J, @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT END; CLOSE XmlDataJob; DEALLOCATE XmlDataJob; --- END INSERT PHIEU YEU CAU CONG TAC -- INSERT JOB DT -- DS CHI TIET PHIEU YEU CAU CONG TAC DELETE FROM TR_REQ_PAY_JOB_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID DECLARE @REQ_PAY_JOB_DT_ID varchar(15) , @REQ_PAY_ID_DT varchar(15), @REQ_ID_DT varchar(15), @REQ_CODE_DT varchar(15), @MAKER_ID_DT varchar(15), @CREATE_DT_DT varchar(15), @FULLNAME_DT NVARCHAR(250), @TLNAME_DT VARCHAR(15), @JOB_PLACE_DT VARCHAR(15), @FRMDATE_DT VARCHAR(15), @TODATE_DT VARCHAR(15), @NUMBER_DAY_DT decimal(18,0), @DAY_RATE_DT decimal(18,0), @JOB_COST_DT decimal(18,0), @TYPE_TRANS_DT varchar(250), @COST_MOVE_DT decimal(18,0), @COST_RESIDENCE_DT decimal(18,0), @COST_OTHER_DT decimal(18,0), @COST_AMT_DT decimal(18,0), @AUTH_STATUS_DT VARCHAR(1), @AUTH_STATUS_KT_DT VARCHAR(1) DECLARE XmlDataJobDT CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocJobDT, 'Root/XmlDataJobDT',2) WITH(REQ_PAY_JOB_DT_ID varchar(15), REQ_PAY_ID varchar(15), REQ_ID varchar(15), REQ_CODE varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(15), FULLNAME nvarchar(250), TLNAME_DT VARCHAR(15), JOB_PLACE varchar(15), FRMDATE varchar(15), TODATE varchar(15),NUMBER_DAY decimal(18,0), DAY_RATE decimal(18,0), JOB_COST decimal(18,0), TYPE_TRANS varchar(15), COST_MOVE decimal(18,0), COST_RESIDENCE decimal(18,0), COST_OTHER decimal(18,0), COST_AMT decimal(18,0) , AUTH_STATUS varchar(1), AUTH_STATUS_KT varchar(1)) OPEN XmlDataJobDT --- INSERT CHI TIÊT PHIEU YEU CAU CONG TAC FETCH NEXT FROM XmlDataJobDT INTO @REQ_PAY_JOB_DT_ID , @REQ_PAY_ID_DT, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT, @CREATE_DT_DT , @FULLNAME_DT , @TLNAME_DT, @JOB_PLACE_DT , @FRMDATE_DT , @TODATE_DT , @NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, @COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT WHILE @@fetch_status=0 BEGIN /*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI SET @INDEX_NS = @INDEX_NS +1 --KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(ISNULL(@AMT_EXE,0) =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc RETURN '-1' END IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc RETURN '-1' END END IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE())) AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc RETURN '-1' END*/ DECLARE @p_REQ_JOB_DT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_JOB_DT', @p_REQ_JOB_DT_ID OUT; IF @p_REQ_JOB_DT_ID='' OR @p_REQ_JOB_DT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_JOB_DT(REQ_PAY_JOB_DT_ID , REQ_PAY_ID , REQ_ID , REQ_CODE, MAKER_ID , CREATE_DT , FULLNAME, TLNAME, JOB_PLACE , FRMDATE , TODATE ,NUMBER_DAY , DAY_RATE , JOB_COST , TYPE_TRANS , COST_MOVE , COST_RESIDENCE , COST_OTHER , COST_AMT , AUTH_STATUS, AUTH_STATUS_KT) VALUES (@p_REQ_JOB_DT_ID , @p_REQ_PAY_ID, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT, GETDATE() , @FULLNAME_DT ,@TLNAME_DT, @JOB_PLACE_DT , CONVERT(DATE,@FRMDATE_DT,103) , CONVERT(DATE,@TODATE_DT,103) , @NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, @COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataJobDT INTO @REQ_PAY_JOB_DT_ID , @REQ_PAY_ID_DT, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT, @CREATE_DT_DT , @FULLNAME_DT , @TLNAME_DT, @JOB_PLACE_DT , @FRMDATE_DT , @TODATE_DT , @NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, @COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT END; CLOSE XmlDataJobDT; DEALLOCATE XmlDataJobDT; --- END INSERT CHI TIET PHIEU YEU CAU CONG TAC --doanptt 17/02/2022 -- INSERT DRIVE -- DS PHIEU YEU CAU CONG TAC DELETE FROM TR_REQ_PAY_DRIVE WHERE REQ_PAY_ID = @p_REQ_PAY_ID DECLARE @REQ_PAY_DRIVE_ID varchar(15), @CAR_ID varchar(15), @CAR_PLATE varchar(15), @RATE_GAS_100KM decimal(18,0), @CAR_TYPE VARCHAR(15) DECLARE XmlDataDrive CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocDrive, 'Root/XmlDataDrive',2) WITH(REQ_PAY_DRIVE_ID varchar(15) ,REQ_PAY_ID varchar(15), CAR_ID varchar(15), CAR_PLATE varchar(15), MAKER_ID varchar(15),CREATE_DT varchar(15), PAY_TYPE VARCHAR(5), PAY_PHASE NVARCHAR(250), PAY_AMT DECIMAL(18,0), PAY_DESC NVARCHAR(1000), AUTH_STATUS VARCHAR(1), AUTH_STATUS_KT VARCHAR(1), RATE_GAS_100KM decimal(18,0), CAR_TYPE VARCHAR(15)) OPEN XmlDataDrive --- INSERT PHIEU YEU CAU CONG TAC FETCH NEXT FROM XmlDataDrive INTO @REQ_PAY_DRIVE_ID ,@REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , @CREATE_DT , @PAY_TYPE , @PAY_PHASE, @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE WHILE @@fetch_status=0 BEGIN /*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI SET @INDEX_NS = @INDEX_NS +1 --KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(ISNULL(@AMT_EXE,0) =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc RETURN '-1' END IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc RETURN '-1' END END IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE())) AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc RETURN '-1' END*/ DECLARE @p_REQ_DRIVE_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_DRIVE', @p_REQ_DRIVE_ID OUT; IF @p_REQ_DRIVE_ID='' OR @p_REQ_DRIVE_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_DRIVE(REQ_PAY_DRIVE_ID ,REQ_PAY_ID ,CAR_ID , CAR_PLATE , MAKER_ID, CREATE_DT , PAY_TYPE , PAY_PHASE , PAY_AMT , PAY_DESC, AUTH_STATUS , AUTH_STATUS_KT, RATE_GAS_100KM, CAR_TYPE) VALUES (@p_REQ_DRIVE_ID ,@p_REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , GETDATE() , @PAY_TYPE , @PAY_PHASE , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataDrive INTO @REQ_PAY_DRIVE_ID ,@REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , @CREATE_DT , @PAY_TYPE , @PAY_PHASE, @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE END; CLOSE XmlDataDrive; DEALLOCATE XmlDataDrive; --- END INSERT PHIEU YEU CAU CONG TAC -- INSERT DRIVE DT -- DS CHI TIET PHIEU YEU CAU CONG TAC DELETE FROM TR_REQ_PAY_DRIVE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID DECLARE @REQ_PAY_DRIVE_DT_ID varchar(15), @FULLNAME NVARCHAR(250), @BRANCH_REQ VARCHAR(15), @KM_START decimal(18,0), @KM_END varchar(250), @KM_USED decimal(18,0), @RATE_GAS decimal(18,0), @REAL_GAS decimal(18,0), @REDUNDANCY_GAS decimal(18,0), @INVENTORY_GAS decimal(18,0), @COST_INCURRED decimal(18,0), @CREATE_SCHEDULE NVARCHAR(250), @TRUONGDONVI VARCHAR(15) DECLARE XmlDataDriveDT CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocDriveDT, 'Root/XmlDataDriveDT',2) WITH(REQ_PAY_DRIVE_ID varchar(15), REQ_PAY_ID varchar(15), CAR_ID varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(15), BRANCH_REQ varchar(15), PAY_PHASE NVARCHAR(250), CAR_TYPE Nvarchar(250), CAR_PLATE varchar(15),RATE_GAS_100KM decimal(18,0), KM_START decimal(18,0), KM_END decimal(18,0), KM_USED varchar(15), RATE_GAS decimal(18,0), REAL_GAS decimal(18,0), REDUNDANCY_GAS decimal(18,0), INVENTORY_GAS decimal(18,0), NOTES NVARCHAR(MAX), COST_INCURRED decimal(18,0), CREATE_SCHEDULE NVARCHAR(250), TRUONGDONVI VARCHAR(15) , AUTH_STATUS varchar(1), AUTH_STATUS_KT varchar(1)) OPEN XmlDataDriveDT --- INSERT CHI TIÊT PHIEU YEU CAU CONG TAC FETCH NEXT FROM XmlDataDriveDT INTO @REQ_PAY_DRIVE_ID , @REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, @RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @NOTES, @COST_INCURRED, @CREATE_SCHEDULE, @TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT WHILE @@fetch_status=0 BEGIN /*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI SET @INDEX_NS = @INDEX_NS +1 --KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE IF(@p_TYPE_FUNCTION ='SEND') BEGIN IF(ISNULL(@AMT_EXE,0) =0) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc RETURN '-1' END IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc RETURN '-1' END END IF(NOT EXISTS(SELECT * FROM PL_IMPORT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE())) AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc RETURN '-1' END*/ DECLARE @p_REQ_DRIVE_DT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_DRIVE_DT', @p_REQ_DRIVE_DT_ID OUT; IF @p_REQ_DRIVE_DT_ID='' OR @p_REQ_DRIVE_DT_ID IS NULL GOTO ABORT; INSERT INTO TR_REQ_PAY_DRIVE_DT(REQ_PAY_DRIVE_DT_ID, REQ_PAY_ID, CAR_ID, MAKER_ID, CREATE_DT, BRANCH_REQ, PAY_PHASE, CAR_TYPE, CAR_PLATE, RATE_GAS_100KM, KM_START, KM_END, KM_USED, RATE_GAS, REAL_GAS, REDUNDANCY_GAS, INVENTORY_GAS, COST_INCURRED, NOTES, CREATE_SCHEDULE, TRUONGDONVI, AUTH_STATUS, AUTH_STATUS_KT) VALUES (@p_REQ_DRIVE_DT_ID , @p_REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, @RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @COST_INCURRED, @NOTES, @CREATE_SCHEDULE, @TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataDriveDT INTO @REQ_PAY_DRIVE_ID , @REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, @RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @NOTES, @COST_INCURRED, @CREATE_SCHEDULE, @TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT END; CLOSE XmlDataDriveDT; DEALLOCATE XmlDataDriveDT; --- END INSERT CHI TIET PHIEU YEU CAU CONG TAC COMMIT TRANSACTION -- BEIGN VALIDATE SEND APPROVE IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP BEGIN -- VALIDATE CAC LUOI THANH TOAN IF((SELECT COUNT(*) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = 0 AND @p_REQ_TYPE = 'D') BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới thông tin các dịch vụ thanh toán không được để trống' ErrorDesc RETURN '-1' END /* ELSE IF((SELECT COUNT(*) FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = 0 AND @p_REQ_TYPE = 'P' AND @p_IS_PERIOD <> 'Y') BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới thông tin PO/ hợp đồng không được để trống' ErrorDesc RETURN '-1' END ELSE IF((SELECT COUNT(*) FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = 0 AND @p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới thông tin hợp đồng định kỳ không được để trống' ErrorDesc RETURN '-1' END */ -- DECLARE DECLARE @BRANCH_TYPE_CR VARCHAR(15) DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0, @SUM_NGAN_SACH DECIMAL(18,2) =0, @SUM_USE_REAL DECIMAL(18,2), @SUM_SERVICE DECIMAL(18,0), @SUM_SCHEDULE DECIMAL(18,0), @SUM_PERIOD DECIMAL(18,0), @SUM_PAY_BACK DECIMAL(18,0) =0, @SUM_ADD DECIMAL(18,0) -- SET SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE) SET @SUM_THANH_TOAN =(SELECT ISNULL(SUM(REQ_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) SET @SUM_PHUONG_THUC =ABS((SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND (TYPE_TRANSFER ='A' OR TYPE_TRANSFER IS NULL OR TYPE_TRANSFER ='')) - (SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='R')) SET @SUM_NGAN_SACH =(SELECT ISNULL(SUM(AMT_EXE * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID) SET @SUM_SERVICE =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) SET @SUM_PERIOD =(SELECT ISNULL(SUM(AMT_PAY * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID) SET @SUM_SCHEDULE =(SELECT ISNULL(SUM(AMT_PAY_REAL * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) IF(@p_REQ_TYPE ='I') BEGIN SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_USE*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID) SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_REVERT*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID) SET @SUM_ADD =(SELECT ISNULL(SUM(AMT_ADD*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID) SET @SUM_PHUONG_THUC =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='A') - (SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='R') END IF(@p_REQ_TYPE ='P' AND @p_IS_PERIOD ='Y' AND @p_IS_PERIOD <>'' AND @p_IS_PERIOD IS NOT NULL) BEGIN SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID) --SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND PROCESS <> '0') END IF(@p_REQ_TYPE ='P' AND (@p_IS_PERIOD ='N' OR (@p_IS_PERIOD ='' OR @p_IS_PERIOD IS NULL))) BEGIN SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY_REAL*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_ADVANCE*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) END IF(@p_REQ_TYPE ='D') BEGIN SET @SUM_USE_REAL =(SELECT ISNULL(SUM(TOTAL_AMT*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) END IF(@p_REQ_TYPE = 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_THANH_TOAN,0)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END IF(ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn sử dụng thực tế là: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD') BEGIN --doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID SELECT '-1' as Result, '' REQ_PAY_ID, N'Cấp độ phòng giao dịch vui lòng không được chọn cấp phê duyệt trung gian' ErrorDesc RETURN '-1' END IF(@p_REQ_TYPE <> 'I') BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN --doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc RETURN '-1' END --IF(ISNULL(@SUM_USE_REAL,0) - ISNULL(@SUM_PAY_BACK,0) <> @SUM_PHUONG_THUC) --BEGIN -- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán tương ứng với số tiền thanh toán trừ số tiền hoàn tạm ứng: ' + FORMAT((ISNULL(@SUM_USE_REAL,0) - ISNULL(@SUM_PAY_BACK,0)),'#,#', 'vi-VN') ErrorDesc -- RETURN '-1' --END IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0)) BEGIN --doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(ISNULL(@SUM_THANH_TOAN, 0),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END ELSE BEGIN IF(ISNULL(@SUM_USE_REAL,0) >0) BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN --doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc RETURN '-1' END IF(ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0)) BEGIN --doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END IF(ISNULL(@SUM_USE_REAL,0) <> (ISNULL(@SUM_SERVICE,0) + ISNULL(@SUM_PERIOD,0) + ISNULL(@SUM_SCHEDULE,0))) BEGIN --doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng số tiền thanh toán dịch vụ, thanh toán nhà cung cấp, thanh toán định kì phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc RETURN '-1' END END --IF(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC) IF(((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC) BEGIN --doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán (hiệu số thanh toán và trích từ tai khoản) tương ứng với số tiền chi bổ sung trừ số tiền hoàn tạm ứng: ' + FORMAT(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))),'#,#', 'vi-VN') + ' ' + CAST(@SUM_PHUONG_THUC as nvarchar) ErrorDesc RETURN '-1' END END -- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY IF(ISNULL(@p_TRASFER_USER_RECIVE, '') <> '') BEGIN UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='W', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID END ELSE BEGIN UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID END INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu thanh toán và gửi phê duyệt') --- Luu log chinh sua INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID ----- UPDATE TR_REQ_PAY_SCHEDULE SET AMT_REMAIN =0.00 WHERE AMT_REMAIN <0 UPDATE TR_REQ_PAY_BUDGET SET AMT_APP= ROUND(AMT_APP,0), AMT_REMAIN = ROUND(AMT_REMAIN,0) IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_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 '4' END ELSE BEGIN SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc RETURN '4' END END -- END VALIDATE SEND APPROVE SELECT '0' as Result, @p_REQ_PAY_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'Altering [dbo].[PL_IMPORT_App]' GO ALTER PROCEDURE [dbo].[PL_IMPORT_App] @P_IMPORT_ID VARCHAR(15), @P_AUTH_STATUS VARCHAR(1), @P_CHECKER_ID VARCHAR(12), @P_APPROVE_DT VARCHAR(20) = NULL AS BEGIN TRY BEGIN TRANSACTION; DECLARE @IS_UPDATE BIT SET @IS_UPDATE = (SELECT IS_UPDATE FROM dbo.PL_IMPORT WHERE IMPORT_ID=@P_IMPORT_ID ) --VALIDATE dữ liệu DECLARE @IMPORT_YEAR VARCHAR(4) SET @IMPORT_YEAR=(SELECT CAST(IMP_YEAR AS VARCHAR(4)) FROM dbo.PL_IMPORT WHERE IMPORT_ID=@P_IMPORT_ID) IF(EXISTS(SELECT *FROM dbo.PL_IMPORT_DT WHERE IMPORT_ID=@P_IMPORT_ID AND IMP_YEAR <> @IMPORT_YEAR)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Duyệt nhật thất bại,tồn tại hạn mục sai năm kế hoạch' ErrorDesc RETURN '-1' END IF(@IS_UPDATE=0) BEGIN IF(EXISTS( SELECT DT.TRADE_ID FROM dbo.PL_MASTER PM LEFT JOIN dbo.PL_TRADEDETAIL DT ON PM.PLAN_ID=DT.PLAN_ID WHERE PM.YEAR=@IMPORT_YEAR AND (EXISTS( SELECT Tmp.GOOD_ID FROM PL_IMPORT_DT Tmp WHERE (Tmp.IMP_YEAR=PM.YEAR AND Tmp.PLAN_TYPE_ID=PM.PLAN_TYPE_ID AND Tmp.COST_ID=PM.COST_ID AND Tmp.BRANCH_ID=PM.BRANCH_ID AND Tmp.DEP_ID=PM.DEPT_ID AND Tmp.GOOD_ID=DT.GOODS_ID) AND( (Tmp.QTY < ISNULL(DT.QUANTITY_EXE,0) AND ISNULL(DT.QUANTITY_EXE,0) >0) OR (Tmp.TOTAL_AMT< ISNULL(DT.AMT_EXE,0) AND ISNULL(DT.AMT_EXE,0) >0) ) ) OR (NOT EXISTS(SELECT Tmp.GOOD_ID FROM PL_IMPORT_DT Tmp WHERE (Tmp.IMP_YEAR=PM.YEAR AND Tmp.PLAN_TYPE_ID=PM.PLAN_TYPE_ID AND Tmp.COST_ID=PM.COST_ID AND Tmp.BRANCH_ID=PM.BRANCH_ID AND Tmp.DEP_ID=PM.DEPT_ID AND Tmp.GOOD_ID=DT.GOODS_ID) ) AND( ISNULL(DT.QUANTITY_EXE,0) > 0 OR ISNULL(DT.AMT_EXE,0) >0) )))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Hạn mục chỉnh sửa đã sử dụng vượt hạn mức chỉnh sửa' ErrorDesc RETURN '-1' END END -- Delete dữ liệu ko có trong import hiện tại. IF(@IS_UPDATE=0) BEGIN UPDATE dbo.PL_TRADEDETAIL SET RECORD_STATUS=0 WHERE NOT EXISTS(SELECT DT.IMP_DT_ID FROM dbo.PL_IMPORT_DT DT WHERE DT.TRADE_ID=PL_TRADEDETAIL.TRADE_ID) AND PL_TRADEDETAIL.PLAN_ID IN (SELECT PLAN_ID FROM dbo.PL_MASTER WHERE YEAR=@IMPORT_YEAR) UPDATE dbo.PL_MASTER SET RECORD_STATUS=0 WHERE YEAR=@IMPORT_YEAR AND NOT EXISTS(SELECT DT.IMP_DT_ID FROM dbo.PL_IMPORT_DT DT WHERE DT.PLAN_ID=PL_MASTER.PLAN_ID) END DECLARE @PLAN_CODE VARCHAR(20), @PLAN_NAME NVARCHAR(200), @YEAR INT, @PLAN_TYPE_ID VARCHAR(15), @COST_ID VARCHAR(15), @BRANCH_ID VARCHAR(15), @BRANCH_CODE VARCHAR(15), @DEP_ID VARCHAR(15), @DEP_CODE VARCHAR(15), @GOOD_ID VARCHAR(15), @QTY INT, @TOTAL_AMT DECIMAL(18, 2), @AMT_ETM DECIMAL(18, 2), @AMT_EXE DECIMAL(18, 2), @AMT_TF DECIMAL(18, 2), @AMT_RECIVE_TF DECIMAL(18, 2), @NOTES NVARCHAR(1000), @IMP_AMT NUMERIC(18, 2), @IMP_QTY NUMERIC(18, 0), @MARKER_ID VARCHAR(15), @EDIT_DT DATETIME, @PLAN_ID VARCHAR(15), @TRADE_ID VARCHAR(15), @REF_CODE VARCHAR(20), @REF_NAME NVARCHAR(200), @IMP_DT_ID VARCHAR(20) SELECT @MARKER_ID=MAKER_ID,@EDIT_DT=EDIT_DT FROM dbo.PL_IMPORT WHERE IMPORT_ID=@P_IMPORT_ID DECLARE Plan_Master CURSOR LOCAL FOR SELECT IM.PLAN_CODE,IM.IMP_NAME,IM.IMP_YEAR,SUM(ISNULL(IMDT.QTY,0)) AS QTY,SUM(ISNULL(IMDT.TOTAL_AMT,0)) AS AMT, IMDT.PLAN_TYPE_ID, IMDT.COST_ID,IMDT.BRANCH_ID,IMDT.DEP_ID, IMDT.PLAN_ID,IMDT.BRANCH_CODE,IMDT.DEP_CODE FROM dbo.PL_IMPORT IM LEFT JOIN dbo.PL_IMPORT_DT IMDT ON IM.IMPORT_ID=IMDT.IMPORT_ID WHERE IM.IMPORT_ID = @P_IMPORT_ID AND IMDT.IS_UPDATE=1 GROUP BY IM.PLAN_CODE,IM.IMP_NAME,IM.IMP_YEAR,IMDT.PLAN_TYPE_ID,IMDT.COST_ID,IMDT.BRANCH_ID,IMDT.DEP_ID,IMDT.PLAN_ID,IMDT.BRANCH_CODE,IMDT.DEP_CODE OPEN Plan_Master; FETCH NEXT FROM Plan_Master INTO @PLAN_CODE,@PLAN_NAME,@YEAR,@IMP_QTY,@IMP_AMT, @PLAN_TYPE_ID,@COST_ID,@BRANCH_ID,@DEP_ID,@PLAN_ID,@BRANCH_CODE,@DEP_CODE WHILE @@FETCH_STATUS = 0 BEGIN SET @PLAN_NAME=N'KẾ HOẠCH NGÂN SÁCH '+ CAST( @YEAR AS VARCHAR(10)) SET @PLAN_CODE= @DEP_CODE+(SELECT RIGHT(CAST( @YEAR AS VARCHAR(10)),2)) IF(NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_CODE IN ('069','799','899') AND BRANCH_ID =@BRANCH_ID)) -- LUCTV 23.11.2022 BO SUNG KIEM TRA NEU Ở DVKD THI KHONG PHAN BO CHI PHI VE PHONG BAN BEGIN SET @DEP_ID='' END --- END LUCTV 23.11.2022 IF(@PLAN_ID IS NULL OR @PLAN_ID='' ) BEGIN EXEC SYS_CodeMasters_Gen 'PL_MASTER', @PLAN_ID out IF @PLAN_ID='' OR @PLAN_ID IS NULL GOTO ABORT INSERT INTO dbo.PL_MASTER ( PLAN_ID, PLAN_CODE,PLAN_NAME,BRANCH_ID,DEPT_ID,EFFECT_DT,PLAN_TYPE,TOTAL_AMT,APPROVE_VALUE, VERSON,YEAR,STATUS,NOTES,RECORD_STATUS, MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,PLAN_TYPE_ID,COST_ID) VALUES ( @PLAN_ID,@PLAN_CODE,@PLAN_NAME,@BRANCH_ID,@DEP_ID,GETDATE(),'',@IMP_AMT, @IMP_AMT, 1,@YEAR,'1', N'','1', @MARKER_ID,@EDIT_DT,@P_AUTH_STATUS, @P_CHECKER_ID, CONVERT(DATETIME,@P_APPROVE_DT,103), @PLAN_TYPE_ID,@COST_ID ) END ELSE BEGIN UPDATE dbo.PL_MASTER SET MAKER_ID=@MARKER_ID,CREATE_DT=@EDIT_DT,AUTH_STATUS=@P_AUTH_STATUS,CHECKER_ID=@P_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME,@P_APPROVE_DT,103) ,TOTAL_AMT=@IMP_AMT,APPROVE_VALUE=@IMP_AMT,VERSON=VERSON+1,PLAN_CODE=@PLAN_CODE,PLAN_NAME=@PLAN_NAME WHERE PLAN_ID=@PLAN_ID END DECLARE Plan_Detail CURSOR FOR SELECT IMP_DT_ID,GOOD_ID,QTY,TOTAL_AMT,NOTES,TRADE_ID,REF_CODE,REF_NAME,AMT_ETM,AMT_EXE,AMT_TF,AMT_RECEIVE_TF FROM dbo.PL_IMPORT_DT WHERE IMPORT_ID = @P_IMPORT_ID AND IS_UPDATE=1 AND PLAN_TYPE_ID=@PLAN_TYPE_ID AND ISNULL(COST_ID,'')=ISNULL(@COST_ID,'') AND BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID OPEN Plan_Detail FETCH NEXT FROM Plan_Detail INTO @IMP_DT_ID,@GOOD_ID,@QTY,@TOTAL_AMT,@NOTES,@TRADE_ID,@REF_CODE,@REF_NAME,@AMT_ETM,@AMT_EXE,@AMT_TF,@AMT_RECIVE_TF WHILE @@FETCH_STATUS = 0 BEGIN IF(@TRADE_ID IS NULL OR @TRADE_ID='') BEGIN EXEC SYS_CodeMasters_Gen 'PL_TRADEDETAIL', @TRADE_ID out IF @TRADE_ID='' OR @TRADE_ID IS NULL GOTO ABORT DELETE FROM dbo.PL_TRADE_REF WHERE TRADE_ID=@TRADE_ID INSERT INTO dbo.PL_TRADEDETAIL ( TRADE_ID, PLAN_ID, GOODS_ID, QUANTITY, AMT_APP, NOTES, RECORD_STATUS, MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, AMT_ETM, AMT_EXE, AMT_TF, AMT_RECEIVE_TF ) VALUES ( @TRADE_ID, -- TRADE_ID - varchar(15) @PLAN_ID, -- PLAN_ID - varchar(15) @GOOD_ID, -- GOODS_ID - varchar(15) @QTY, -- QUANTITY - decimal(18, 0) @TOTAL_AMT, -- PRICE - decimal(18, 0) @NOTES, -- NOTES - nvarchar(1000) '1', -- RECORD_STATUS - varchar(1) @MARKER_ID, -- MAKER_ID - varchar(12) CAST( @EDIT_DT AS DATE), -- CREATE_DT - datetime @P_AUTH_STATUS, -- AUTH_STATUS - varchar(50) @P_CHECKER_ID, -- CHECKER_ID - varchar(12) CONVERT(DATETIME,@P_APPROVE_DT,103), -- APPROVE_DT - datetime @AMT_ETM, @AMT_EXE, @AMT_TF, @AMT_RECIVE_TF ) INSERT INTO dbo.PL_TRADE_REF ( TRADE_ID, REF_CODE, REF_NAME ) VALUES ( @TRADE_ID, -- TRADE_ID - varchar(15) @REF_CODE, -- REF_CODE - varchar(50) @REF_NAME -- REF_NAME - nvarchar(500) ) END ELSE BEGIN UPDATE dbo.PL_TRADEDETAIL SET QUANTITY=@QTY, AMT_APP=@TOTAL_AMT, NOTES=@NOTES, MAKER_ID=@MARKER_ID, CREATE_DT=CAST(@EDIT_DT AS DATE), AUTH_STATUS=@P_AUTH_STATUS, CHECKER_ID= @P_CHECKER_ID, APPROVE_DT= CONVERT(DATETIME,@P_APPROVE_DT,103) -- AMT_ETM=@AMT_ETM, -- AMT_EXE=@AMT_EXE, -- AMT_TF=@AMT_TF, -- AMT_RECEIVE_TF=@AMT_RECIVE_TF WHERE TRADE_ID=@TRADE_ID END UPDATE dbo.PL_IMPORT_DT SET PLAN_ID=@PLAN_ID,TRADE_ID=@TRADE_ID WHERE IMP_DT_ID=@IMP_DT_ID FETCH NEXT FROM Plan_Detail INTO @IMP_DT_ID,@GOOD_ID,@QTY,@TOTAL_AMT,@NOTES,@TRADE_ID,@REF_CODE,@REF_NAME,@AMT_ETM,@AMT_EXE,@AMT_TF,@AMT_RECIVE_TF END CLOSE Plan_Detail DEALLOCATE Plan_Detail FETCH NEXT FROM Plan_Master INTO @PLAN_CODE,@PLAN_NAME,@YEAR,@IMP_QTY,@IMP_AMT, @PLAN_TYPE_ID,@COST_ID,@BRANCH_ID,@DEP_ID,@PLAN_ID,@BRANCH_CODE,@DEP_CODE END CLOSE Plan_Master; DEALLOCATE Plan_Master; UPDATE dbo.PL_IMPORT SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE IMPORT_ID = @P_IMPORT_ID; UPDATE dbo.PL_IMPORT_LOG SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) WHERE IMP_ID = @P_IMPORT_ID AND IMP_LOG_CODE= (SELECT TOP (1) IMP_LOG_CODE FROM dbo.PL_IMPORT_LOG WHERE IMP_ID=@P_IMPORT_ID ORDER BY IMP_LOG_ID DESC) UPDATE dbo.PL_TRADEDETAIL SET PRICE = AMT_APP/ QUANTITY WHERE QUANTITY <> 0 OR QUANTITY IS NULL UPDATE dbo.PL_TRADEDETAIL SET PRICE = AMT_APP WHERE QUANTITY = 0 --UPDATE dbo.LIMIT_ACCUMULATE SET MAX_AMT=ISNULL(( --SELECT TEMP.AMT_APP FROM (SELECT CD.DVDM_ID,SUM(ISNULL(PT.AMT_APP,0)) AS AMT_APP FROM dbo.CM_DVDM CD --LEFT JOIN dbo.CM_GOOD_DVDM CGD ON CGD.KHOI_ID=CD.DVDM_ID --LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.GOODS_ID=CGD.GD_ID --WHERE CD.IS_KHOI=1 AND PT.PLAN_ID IN (SELECT PLAN_ID FROM dbo.PL_MASTER WHERE YEAR=@IMPORT_YEAR) --GROUP BY CD.DVDM_ID --)TEMP WHERE TEMP.DVDM_ID=LIMIT_ACCUMULATE.DVDM_ID --),0) * (SELECT LIMIT_PERCENT FROM dbo.TL_SYSROLE_LIMIT WHERE TL_SYSROLE_LIMIT.ROLE_ID=LIMIT_ACCUMULATE.ROLE_ID AND LIMIT_TYPE='DCNS')/100 DECLARE @KHOI_ID VARCHAR(20),@AMT_APP DECIMAL(18,2),@LIMIT_PERCENT DECIMAL(18,2),@LIMIT_ID VARCHAR(20) --SET @LIMIT_PERCENT =(SELECT LIMIT_PERCENT FROM dbo.TL_SYSROLE_LIMIT WHERE TL_SYSROLE_LIMIT.ROLE_ID=LIMIT_ACCUMULATE.ROLE_ID AND LIMIT_TYPE='DCNS')/100 DECLARE lstDATA CURSOR LOCAL FOR SELECT CDK.KHOI_ID,SUM(PT.AMT_APP) AMT_APP FROM dbo.PL_MASTER PM LEFT JOIN dbo.PL_TRADEDETAIL PT ON PM.PLAN_ID = PT.PLAN_ID LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=PT.GOODS_ID LEFT JOIN dbo.CM_DVDM_KHOI CDK ON CDK.DVDM_ID=PM.COST_ID WHERE PM.YEAR=@IMPORT_YEAR AND PT.RECORD_STATUS=1 --AND CG.GD_TYPE_ID='NS' GROUP BY CDK.KHOI_ID OPEN lstDATA FETCH NEXT FROM lstDATA INTO @KHOI_ID,@AMT_APP WHILE @@FETCH_STATUS=0 BEGIN SET @LIMIT_PERCENT =(SELECT LIMIT_PERCENT FROM dbo.TL_SYSROLE_LIMIT WHERE TL_SYSROLE_LIMIT.ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')/100 IF(EXISTS(SELECT * FROM dbo.LIMIT_ACCUMULATE WHERE DVDM_ID=@KHOI_ID AND ROLE_ID='GDK')) UPDATE dbo.LIMIT_ACCUMULATE SET MAX_AMT=@AMT_APP*@LIMIT_PERCENT WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID ELSE BEGIN EXEC dbo.SYS_CodeMasters_Gen @p_Kind = 'LIMIT_ACCUMULATE', -- varchar(100) @p_KeyGen = @LIMIT_ID OUTPUT -- varchar(15) INSERT INTO dbo.LIMIT_ACCUMULATE ( LIMIT_ID, ROLE_ID, TOTAL_APP_AMT, MAX_AMT, DVDM_ID, BRANCH_ID ) VALUES ( @LIMIT_ID, -- LIMIT_ID - varchar(20) 'GDK', -- ROLE_ID - varchar(20) NULL, -- TOTAL_APP_AMT - decimal(18, 2) (@AMT_APP*@LIMIT_PERCENT), -- MAX_AMT - decimal(18, 2) @KHOI_ID, -- DVDM_ID - varchar(20) '' -- BRANCH_ID - varchar(20) ) END IF(EXISTS(SELECT * FROM dbo.LIMIT_ACCUMULATE WHERE DVDM_ID=@KHOI_ID AND ROLE_ID='PTGD')) UPDATE dbo.LIMIT_ACCUMULATE SET MAX_AMT=@AMT_APP*@LIMIT_PERCENT WHERE ROLE_ID='PTGD' AND DVDM_ID=@KHOI_ID ELSE BEGIN EXEC dbo.SYS_CodeMasters_Gen @p_Kind = 'LIMIT_ACCUMULATE', -- varchar(100) @p_KeyGen = @LIMIT_ID OUTPUT -- varchar(15) INSERT INTO dbo.LIMIT_ACCUMULATE ( LIMIT_ID, ROLE_ID, TOTAL_APP_AMT, MAX_AMT, DVDM_ID, BRANCH_ID ) VALUES ( @LIMIT_ID, -- LIMIT_ID - varchar(20) 'PTGD', -- ROLE_ID - varchar(20) NULL, -- TOTAL_APP_AMT - decimal(18, 2) (@AMT_APP*@LIMIT_PERCENT), -- MAX_AMT - decimal(18, 2) @KHOI_ID, -- DVDM_ID - varchar(20) '' -- BRANCH_ID - varchar(20) ) END FETCH NEXT FROM lstDATA INTO @KHOI_ID,@AMT_APP END CLOSE lstDATA DEALLOCATE lstDATA DECLARE lstDATA CURSOR LOCAL FOR SELECT PM.BRANCH_ID,SUM(PT.AMT_APP) AMT_APP FROM dbo.PL_MASTER PM LEFT JOIN dbo.PL_TRADEDETAIL PT ON PM.PLAN_ID = PT.PLAN_ID LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=PT.GOODS_ID WHERE PM.YEAR=@IMPORT_YEAR AND PT.RECORD_STATUS=1 --AND CG.GD_TYPE_ID='NS' GROUP BY PM.BRANCH_ID --OPEN lstDATA --FETCH NEXT FROM lstDATA INTO @BRANCH_ID,@AMT_APP --WHILE @@FETCH_STATUS=0 --BEGIN --SET @LIMIT_PERCENT =(SELECT LIMIT_PERCENT FROM dbo.TL_SYSROLE_LIMIT WHERE TL_SYSROLE_LIMIT.ROLE_ID='GDDV' AND LIMIT_TYPE='DCNS')/100 --IF(EXISTS(SELECT * FROM dbo.LIMIT_ACCUMULATE WHERE BRANCH_ID=@BRANCH_ID AND ROLE_ID='GDDV')) -- UPDATE dbo.LIMIT_ACCUMULATE SET MAX_AMT=@AMT_APP*@LIMIT_PERCENT WHERE ROLE_ID='GDDV' AND BRANCH_ID=@BRANCH_ID --ELSE -- BEGIN -- EXEC dbo.SYS_CodeMasters_Gen @p_Kind = 'LIMIT_ACCUMULATE', -- varchar(100) -- @p_KeyGen = @LIMIT_ID OUTPUT -- varchar(15) -- INSERT INTO dbo.LIMIT_ACCUMULATE -- ( -- LIMIT_ID, -- ROLE_ID, -- TOTAL_APP_AMT, -- MAX_AMT, -- DVDM_ID, -- BRANCH_ID -- ) -- VALUES -- ( @LIMIT_ID, -- LIMIT_ID - varchar(20) -- 'GDDV', -- ROLE_ID - varchar(20) -- NULL, -- TOTAL_APP_AMT - decimal(18, 2) -- (@AMT_APP*@LIMIT_PERCENT), -- MAX_AMT - decimal(18, 2) -- '', -- DVDM_ID - varchar(20) -- @BRANCH_ID -- BRANCH_ID - varchar(20) -- ) -- END --FETCH NEXT FROM lstDATA INTO @BRANCH_ID,@AMT_APP --END --CLOSE lstDATA --DEALLOCATE lstDATA COMMIT TRANSACTION; SELECT '0' AS Result, '' ErrorDesc; RETURN '0'; END TRY BEGIN CATCH ROLLBACK TRANSACTION; SELECT '-1' AS Result, ERROR_MESSAGE() ErrorDesc; RETURN '-1'; END CATCH ABORT: BEGIN ROLLBACK TRANSACTION; SELECT '-1' AS Result, ERROR_MESSAGE() ErrorDesc; RETURN '-1'; END; GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_JOB_RETURN_TRIP_Search]' GO ALTER PROC [dbo].[TR_REQ_JOB_RETURN_TRIP_Search] @p_RETURN_ID varchar(15) = NULL, @p_REQ_ID varchar(15) = NULL, @p_TIME_RETURN INT = NULL, @p_DAY_RETURN varchar(20) = NULL, @p_FROM_RETURN nvarchar(MAX) = NULL, @p_TO_RETURN nvarchar(MAX) = NULL, @p_NOTES nvarchar(MAX) = NULL, @p_AUTH_STATUS varchar(15) = NULL, @p_TOP INT = 10 AS BEGIN -- PAGING IF(@p_TOP = NULL OR @p_TOP = '' OR @p_TOP = 0) BEGIN -- PAGING BEGIN SELECT A.* -- SELECT END FROM TR_REQ_JOB_RETURN_TRIP A WHERE 1 = 1 AND (A.RETURN_ID LIKE '%' + @p_RETURN_ID + '%' OR @p_RETURN_ID IS NULL OR @p_RETURN_ID = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.TIME_RETURN = @p_TIME_RETURN OR @p_TIME_RETURN IS NULL OR @p_TIME_RETURN = '') AND (DATEDIFF(DAYOFYEAR,A.DAY_RETURN,CONVERT(DATETIME, @p_DAY_RETURN, 103)) = 0 OR @p_DAY_RETURN IS NULL OR @p_DAY_RETURN = '') AND (A.FROM_RETURN LIKE '%' + @p_FROM_RETURN + '%' OR @p_FROM_RETURN IS NULL OR @p_FROM_RETURN = '') AND (A.TO_RETURN LIKE '%' + @p_TO_RETURN + '%' OR @p_TO_RETURN IS NULL OR @p_TO_RETURN = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND RECORD_STATUS='1' -- PAGING END END ELSE BEGIN -- PAGING BEGIN SELECT TOP(@p_TOP) A.* -- SELECT END FROM TR_REQ_JOB_RETURN_TRIP A WHERE 1 = 1 AND (A.RETURN_ID LIKE '%' + @p_RETURN_ID + '%' OR @p_RETURN_ID IS NULL OR @p_RETURN_ID = '') AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '') AND (A.TIME_RETURN = @p_TIME_RETURN OR @p_TIME_RETURN IS NULL OR @p_TIME_RETURN = '') AND (DATEDIFF(DAYOFYEAR,A.DAY_RETURN,CONVERT(DATETIME, @p_DAY_RETURN, 103)) = 0 OR @p_DAY_RETURN IS NULL OR @p_DAY_RETURN = '') AND (A.FROM_RETURN LIKE '%' + @p_FROM_RETURN + '%' OR @p_FROM_RETURN IS NULL OR @p_FROM_RETURN = '') AND (A.TO_RETURN LIKE '%' + @p_TO_RETURN + '%' OR @p_TO_RETURN IS NULL OR @p_TO_RETURN = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND RECORD_STATUS='1' END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_JOB_RETURN_TRIP_ById]' GO ALTER proc [dbo].[TR_REQ_JOB_RETURN_TRIP_ById] @p_REQ_ID varchar(15) =NULL as begin select * from TR_REQ_JOB_RETURN_TRIP where REQ_ID=@p_REQ_ID AND RECORD_STATUS='1' end GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CON_MASTER_Search]' GO ALTER PROCEDURE [dbo].[CON_MASTER_Search] @p_CONSTRUCT_ID varchar(15)=NULL, @p_CONSTRUCT_CODE varchar(15)=NULL, @p_CONSTRUCT_NAME nvarchar(100)=NULL, @p_PLAN_ID varchar(15)=NULL, @p_DIVI_ID varchar(15)=NULL, @p_CONST_NAME nvarchar(50) = NULL, @p_CONSTRUCT_ADDR nvarchar(200)=NULL, @p_LENGTH decimal=NULL, @p_WIDTH decimal=NULL, @p_CONSTRUCT_AREA decimal=NULL, @p_FLOORS int=NULL, @p_FLOORS_AREA decimal=NULL, @p_YEAR_EXE varchar(4)=NULL, @p_CONSTRUCT_TYPE varchar(15)=NULL, @p_TOTAL_AMT decimal=NULL, @p_COST_ESTIMATE decimal=NULL, @p_COST_EXE decimal=NULL, @p_COST_INCURRED decimal=NULL, @p_CONST_PURPOSE varchar(15)=NULL, @p_DESCRIPTION nvarchar(2000)=NULL, @p_START_DT VARCHAR(20)=NULL, @p_END_DT VARCHAR(20)=NULL, @p_DATE_EXE VARCHAR(20)=NULL, @p_COMPLETION_DT VARCHAR(20)=NULL, @p_IS_FINISH varchar(1)=NULL, @p_CONSTRUCT_PROGRESS decimal=NULL, @p_RECORD_STATUS varchar(1)=NULL, @p_MAKER_ID varchar(15)=NULL, @p_CREATE_DT VARCHAR(20)=NULL, @p_AUTH_STATUS varchar(1)=NULL, @p_CHECKER_ID varchar(15)=NULL, @p_APPROVE_DT VARCHAR(20)=NULL, @p_CONST_ID varchar(15)=NULL, @p_REQUEST_ID varchar(15)=NULL, @p_REQ_CODE varchar(15)=NULL, @p_BRANCH_ID varchar(15)=NULL, @p_STREET nvarchar(200)=NULL, @p_LOCATION varchar(15)=NULL, @p_SCALE nvarchar(1000)=NULL, @p_ENGINEER nvarchar(500)=NULL, @p_BRANCH_NAME_ETX nvarchar(500)=NULL, @p_LEVEL varchar(10), @p_MaxResultCount int = NULL, @p_SkipCount int = NULL, @p_Sorting varchar(100) = NULL, @p_TotalCount int = NULL AS BEGIN -- PAGING declare @tmp table(BRANCH_ID varchar(15)) IF(@p_LEVEL = 'ALL') BEGIN insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID) END -- PAGING BEGIN SELECT A.*, dbo.FN_GET_CHINHANH(A.BRANCH_ID,'KV') KHU_VUC, dbo.FN_GET_CHINHANH(A.BRANCH_ID,'CN') CHI_NHANH, case when A.BRANCH_NAME_ETX IS NULL OR A.BRANCH_NAME_ETX = '' THEN BBB.BRANCH_NAME ELSE A.BRANCH_NAME_ETX END AS CONST_NAME, --C.REQ_DT, CON_HQ_T.CONTENT AS CONS_HQ_TYPE_NAME, REQ_AMT.TOTAL_AMT AS CP_DUOC_DUYET, BID.CONTRACT_VALUE, BID.TOTAL_AMT_KT, BID.PAID_VALUE, BID.OUTSTANDINGVALUE, CASE WHEN TOTAL_EMPTY_AMT_KT = 0 THEN N'Quyết toán' ELSE '' END AS CONST_NOTE, BID.SUM_ARISE_VALUE, AU.AUTH_STATUS_NAME, BBB.BRANCH_CODE, AA.CONTENT CONST_TYPE_NAME, (dbo.TR_REQ_PAY_BY_CONSTRUCT(A.CONSTRUCT_ID)) AS PAYMENT_STATUS, (SELECT TOP 1 REQ_CONTENT FROM dbo.PL_REQUEST_DOC WHERE REQ_ID IN (SELECT REQ_ID FROM dbo.CON_REQUEST_DOC WHERE CONSTRUCT_ID = A.CONSTRUCT_ID)) AS CONTENT -- SELECT END FROM CON_MASTER A -- GIANT 06/12/2021 LEFT JOIN CM_ALLCODE AA ON AA.CDVAL = A.CONST_TYPE AND CDNAME = 'REQ_CON_TYPE' AND CDTYPE = 'CON' LEFT JOIN CM_BRANCH BBB ON BBB.BRANCH_ID = A.BRANCH_ID --INNER JOIN CON_REQUEST_DOC_PARENT_VIEW C ON A.REQUEST_ID = C.CON_REQUEST_DOC_ID LEFT JOIN CM_ALLCODE CON_HQ_T ON CON_HQ_T.CDNAME='REQ_HQ_TYPE' AND CON_HQ_T.CDType='CON' AND A.HQ_TYPE = CON_HQ_T.CDVAL LEFT JOIN ( SELECT REQUEST_ID, 0 AS CONTRACT_VALUE, 0 AS TOTAL_AMT_KT, 0 AS PAID_VALUE, 0 AS OUTSTANDINGVALUE, 0 AS SUM_ARISE_VALUE, 0 AS TOTAL_EMPTY_AMT_KT FROM BID_MASTER GROUP BY(REQUEST_ID) ) BID ON A.REQUEST_ID = BID.REQUEST_ID LEFT JOIN ( SELECT REQ_ID, SUM(TOTAL_AMT) AS TOTAL_AMT FROM CON_REQUEST_DOC GROUP BY REQ_ID ) REQ_AMT ON REQ_AMT.REQ_ID = A.REQUEST_ID LEFT JOIN CM_AUTH_STATUS AU ON A.AUTH_STATUS=AU.AUTH_STATUS WHERE (@p_CONSTRUCT_ID IS NULL OR @p_CONSTRUCT_ID='' OR A.CONSTRUCT_ID = @p_CONSTRUCT_ID) AND (@p_CONSTRUCT_CODE IS NULL OR @p_CONSTRUCT_CODE='' OR CONSTRUCT_CODE = @p_CONSTRUCT_CODE) AND (@p_CONSTRUCT_NAME IS NULL OR @p_CONSTRUCT_NAME='' OR CONSTRUCT_NAME = @p_CONSTRUCT_NAME) AND (@p_PLAN_ID IS NULL OR @p_PLAN_ID='' OR PLAN_ID = @p_PLAN_ID) AND (@p_DIVI_ID IS NULL OR @p_DIVI_ID='' OR DIVI_ID = @p_DIVI_ID) AND (@p_CONSTRUCT_ADDR IS NULL OR @p_CONSTRUCT_ADDR='' OR CONSTRUCT_ADDR = @p_CONSTRUCT_ADDR) AND (@p_LENGTH IS NULL OR LENGTH = @p_LENGTH) AND (@p_WIDTH IS NULL OR WIDTH = @p_WIDTH) AND (@p_CONSTRUCT_AREA IS NULL OR CONSTRUCT_AREA = @p_CONSTRUCT_AREA) AND (@p_FLOORS IS NULL OR FLOORS = @p_FLOORS) AND (@p_FLOORS_AREA IS NULL OR FLOORS_AREA = @p_FLOORS_AREA) AND (@p_YEAR_EXE IS NULL OR @p_YEAR_EXE='' OR YEAR_EXE = @p_YEAR_EXE) AND (@p_CONSTRUCT_TYPE IS NULL OR @p_CONSTRUCT_TYPE='' OR HQ_TYPE = @p_CONSTRUCT_TYPE) AND (@p_TOTAL_AMT IS NULL OR A.TOTAL_AMT = @p_TOTAL_AMT) AND (@p_COST_ESTIMATE IS NULL OR COST_ESTIMATE = @p_COST_ESTIMATE) AND (@p_COST_EXE IS NULL OR COST_EXE = @p_COST_EXE) AND (@p_COST_INCURRED IS NULL OR COST_INCURRED = @p_COST_INCURRED) AND (@p_CONST_PURPOSE IS NULL OR @p_CONST_PURPOSE='' OR CONST_PURPOSE = @p_CONST_PURPOSE) AND (@p_DESCRIPTION IS NULL OR @p_DESCRIPTION='' OR DESCRIPTION = @p_DESCRIPTION) AND (@p_START_DT IS NULL OR DATEDIFF(DAYOFYEAR,START_DT,CONVERT(datetime, @p_START_DT,103)) = 0) AND (@p_END_DT IS NULL OR DATEDIFF(DAYOFYEAR,END_DT,CONVERT(datetime, @p_END_DT,103)) = 0) AND (@p_DATE_EXE IS NULL OR DATEDIFF(DAYOFYEAR,DATE_EXE,CONVERT(datetime, @p_DATE_EXE,103)) = 0) AND (@p_COMPLETION_DT IS NULL OR DATEDIFF(DAYOFYEAR,COMPLETION_DT,CONVERT(datetime, @p_COMPLETION_DT,103)) = 0) AND (@p_IS_FINISH IS NULL OR @p_IS_FINISH='' OR IS_FINISH = @p_IS_FINISH) AND (@p_CONSTRUCT_PROGRESS IS NULL OR CONSTRUCT_PROGRESS = @p_CONSTRUCT_PROGRESS) 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 = @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 (@p_CONST_ID IS NULL OR @p_CONST_ID='' OR CONST_ID = @p_CONST_ID) AND (@p_REQUEST_ID IS NULL OR @p_REQUEST_ID='' OR A.REQUEST_ID = @p_REQUEST_ID) AND (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID='' OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_ID) OR (@p_LEVEL = 'ALL' AND EXISTS(SELECT * FROM @tmp T WHERE T.BRANCH_ID = A.BRANCH_ID))) AND (@p_STREET IS NULL OR @p_STREET='' OR STREET = @p_STREET) AND (@p_LOCATION IS NULL OR @p_LOCATION='' OR LOCATION = @p_LOCATION) AND (@p_SCALE IS NULL OR @p_SCALE='' OR SCALE = @p_SCALE) AND (@p_ENGINEER IS NULL OR @p_ENGINEER='' OR ENGINEER = @p_ENGINEER) AND (@p_BRANCH_NAME_ETX IS NULL OR @p_BRANCH_NAME_ETX='' OR BRANCH_NAME_ETX = @p_BRANCH_NAME_ETX) AND (@p_CONST_NAME IS NULL OR @p_CONST_NAME = '' OR ISNULL(A.BRANCH_NAME_ETX, BBB.BRANCH_NAME) LIKE '%' + @p_CONST_NAME + '%') AND (@p_REQ_CODE IS NULL OR @p_REQ_CODE = '' OR (EXISTS(SELECT * FROM CON_REQUEST_DOC CC WHERE CC.REQUEST_PARENT = A.REQUEST_ID AND CC.REQ_CODE = @p_REQ_CODE))) AND A.RECORD_STATUS = '1' ORDER BY A.CREATE_DT DESC -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CON_REQUEST_DOC_App]' GO /* CON_MASTER_Upd 'CON000000000001','CT012013','CONG TRINH XAY DUNG CO SO 1','','','','',100000,'','',100000,100000,100000,10000,'','','','','',100,'','','','','','' */ ALTER PROCEDURE [dbo].[CON_REQUEST_DOC_App] @p_CONST_ID varchar(15) = null , @p_AUTH_STATUS varchar(1) = NULL , @p_CHECKER_ID varchar(15) = NULL , @p_APPROVE_DT VARCHAR(20) = NULL AS DECLARE @sErrorCode VARCHAR(20) = '' IF(EXISTS(SELECT * FROM CON_MASTER WHERE CONSTRUCT_ID = @p_CONST_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' as Result, '' CON_ID, '' ErrorDesc RETURN '-1' END ----Neu ton tai Hop dong NÀO ĐÓ da link den HO SO THAU nay --IF not EXISTS(SELECT * FROM CON_REQUEST_DOC A WHERE A.[REQ_ID] = @p_REQ_ID) --BEGIN -- SET @sErrorCode = 'CON-00001' --END --IF @sErrorCode <> '' --BEGIN -- SELECT ErrorCode Result, '' CONSTRUCT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode -- RETURN '0' --END BEGIN TRANSACTION UPDATE CON_MASTER SET [AUTH_STATUS] = @p_AUTH_STATUS,[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE CONSTRUCT_ID = @p_CONST_ID IF @@Error <> 0 GOTO ABORT UPDATE CON_REQUEST_DOC SET [AUTH_STATUS] = @p_AUTH_STATUS,[CHECKER_ID] = @p_CHECKER_ID WHERE CONSTRUCT_ID = @p_CONST_ID IF @@Error <> 0 GOTO ABORT -- start hieuhm 09/11/2022 thêm lịch sử xử lí INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONST_ID, 'APP', @p_CHECKER_ID, GETDATE(), N'Duyệt công trình thành công' , N'Trưởng đơn duyệt công trình' ) -- end hieuhm 09/11/2022 thêm lịch sử xử lí COMMIT TRANSACTION SELECT '0' as Result, @p_CONST_ID CON_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CON_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PROCESS_CHILD_App]' GO ALTER PROCEDURE [dbo].[TR_REQ_PROCESS_CHILD_App] @p_REQ_ID VARCHAR(20), @p_PROCESS_ID VARCHAR(20), @p_TLNAME VARCHAR(20), @p_MAKER_ID VARCHAR(20), @p_TYPE_JOB VARCHAR(20), @p_PROCESS_DES NVARCHAR(500), @p_REF_ID INT, @p_XMLDATA XML AS BEGIN TRANSACTION -- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC --IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID=@p_PROCESS_ID)) --BEGIN -- SELECT 1 as Result, '' ErrorDesc -- RETURN 0 --END -- BO SUNG NHUNG PHONG BAN DO USER NAY KIEM NHIẸM DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15)) INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@p_MAKER_ID AND 1=1 AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL) AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL) IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DMMS')) BEGIN --IF(EXISTS( --SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR --LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID --WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C')) --BEGIN -- ROLLBACK TRANSACTION -- SELECT -1 Result, N'Tại đầu mối mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc -- RETURN -1 --END --IF(NOT EXISTS( --SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR --LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID --WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' )) --BEGIN -- ROLLBACK TRANSACTION -- SELECT -1 Result, N'Tại đầu mối mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng điều phối nhân viên xử lý phiếu!' ErrorDesc -- RETURN -1 --END IF(EXISTS( SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C' AND PRC.PROCESS_ID =@p_REF_ID)) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tại đơn vị mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc RETURN -1 END IF(NOT EXISTS( SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.PROCESS_ID =@p_REF_ID )) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tại đơn vị mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng điều phối nhân viên xử lý phiếu!' ErrorDesc RETURN -1 END END --- 16 04 2021 LUCTV BO SUNG VALIDATE --IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DMMS')) --BEGIN -- IF(EXISTS( -- SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR -- LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID -- WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C' AND PRC.ID =@p_REF_ID)) -- BEGIN -- ROLLBACK TRANSACTION -- SELECT -1 Result, N'Tại đầu mối mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc -- RETURN -1 -- END -- IF(NOT EXISTS( -- SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR -- LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID -- WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.ID =@p_REF_ID )) -- BEGIN -- ROLLBACK TRANSACTION -- SELECT -1 Result, N'Tại đầu mối mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng điều phối nhân viên xử lý phiếu!' ErrorDesc -- RETURN -1 -- END --END --- NEU BUOC XU LY LA DVCM --- 16 04 2021 LUCTV BO SUNG VALIDATE IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM')) BEGIN IF(EXISTS( SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID WHERE PR.PROCESS_ID='DVCM' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C' AND PRC.PROCESS_ID =@p_REF_ID)) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tại đơn vị chuyên môn. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc RETURN -1 END IF(NOT EXISTS( SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID WHERE PR.PROCESS_ID='DVCM' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.PROCESS_ID =@p_REF_ID )) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tại đơn vị chuyên môn. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng điều phối nhân viên xử lý phiếu!' ErrorDesc RETURN -1 END END --- ---------------BAODNQ 22/12/2022: Nếu PYCMS đã qua bước trưởng đơn vị ĐMMS duyệt thì k cho ấn duyệt lại-------------------------- IF(EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'DMMS' AND STATUS = 'P' AND (CHECKER_ID IS NOT NULL AND CHECKER_ID <> ''))) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Tại đầu mối mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) + N' đã được trưởng đơn vị đầu mối mua sắm phê duyệt. Vui lòng chờ đợi bước xử lý tiếp theo xử lý phiếu' ErrorDesc RETURN -1 END DECLARE @IS_KT VARCHAR(15) SET @IS_KT =(SELECT TOP 1 IS_KT FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) --- END LUCTV 08122020 IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R')) OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R'))) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc RETURN -1 END Declare @hdoc INT EXEC sp_xml_preparedocument @hdoc Output,@p_XMLDATA DECLARE @lstFILE TABLE( ATTACH_ID VARCHAR(20), IS_READ BIT ) INSERT INTO @lstFILE SELECT * FROM OPENXML(@hDoc,'/Root/ATTACH_FILE',2) WITH ( ATTACH_ID VARCHAR(20), IS_READ BIT ) IF(EXISTS(SELECT TR_REQUEST_DOC_FILE_ID FROM dbo.TR_REQUEST_DOC_FILE WHERE REQ_ID=@p_REQ_ID AND IS_VIEW=1 AND EXISTS(SELECT ATTACH_ID FROM @lstFILE WHERE [@lstFILE].ATTACH_ID=TR_REQUEST_DOC_FILE.ATTACH_ID AND IS_READ=0))) BEGIN ROLLBACK TRANSACTION SELECT -1 Result, N'File đinh kèm bắt buộc đọc' ErrorDesc RETURN 0 END DECLARE @LEVEL INT, @TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100) UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB ORDER BY LEVEL_JOB DESC),0) UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1) SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@p_TYPE_JOB) SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME ) INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) @p_PROCESS_ID, -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE() , -- APPROVE_DT - datetime @p_PROCESS_DES , @TYPE_JOB_NAME+ N' đã phê duyệt' -- PROCESS_DESC - nvarchar(1000) ) IF(NOT EXISTS (SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P')) BEGIN IF(@p_PROCESS_ID='DMMS') BEGIN DECLARE @PROCESS_PARENT VARCHAR(20) SET @PROCESS_PARENT='DMMS' UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE(),NOTES=N'Đầu mối mua sắm đã phê duyệt' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_PROCESS_ID DECLARE @LIMIT_VALUE_KT DECIMAL(18,0),@ROLE_KT VARCHAR(20),@DVDM_KT VARCHAR(20),@NOTES_KT NVARCHAR(200),@TOTAL_AMT_REQ DECIMAL(18,0) SET @LIMIT_VALUE_KT = (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT') SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT') SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT') SET @TOTAL_AMT_REQ =(SELECT SUM(((PRICE * QUANTITY) + ISNULL(TAXES,0))* ISNULL(EXCHANGE_RATE,1)) AS TOTAL_AMT FROM dbo.TR_REQUEST_DOC_DT --WHERE REQ_DOC_ID=@p_REQ_ID AND TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK' OR NOTES ='CDT')) WHERE REQ_DOC_ID=@p_REQ_ID) --IF(@TOTAL_AMT_REQ > @LIMIT_VALUE_KT AND @IS_KT ='1') -- CODE CŨ CHẶN K QUA KẾ TOÁN ----------BAODNQ 6/5/2022: THÊM ĐOẠN CODE ĐI QUA PHÒNG KẾ TOÁN----------- -------------Nếu PYCMS > 100tr và có BB xét giá 100-500tr hoặc trên 500tr IF(@TOTAL_AMT_REQ >= 100000000 AND ( EXISTS(SELECT* FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID) OR EXISTS (SELECT * FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID) ) ) --------------Nếu đã tồn tại DVCM kế toán thì k thêm vào----------------- AND NOT EXISTS(SELECT REQ_COST_ID FROM TR_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID AND COST_ID = @DVDM_KT) BEGIN SET @IS_KT = '1' --------------END BAODNQ-------------------------- DECLARE @l_REQ_COST_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out INSERT dbo.TR_REQUEST_COSTCENTER ( REQ_COST_ID, COST_ID, REQ_ID, NOTES, AUTH_STATUS, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT ) VALUES ( @l_REQ_COST_ID, -- REQ_COST_ID - varchar(15) @DVDM_KT, -- COST_ID - varchar(15) @p_REQ_ID, -- REQ_ID - varchar(15) N'', -- NOTES - nvarchar(500) 'U', -- AUTH_STATUS - varchar(1) @p_MAKER_ID, -- MAKER_ID - varchar(15) GETDATE(), -- CREATE_DT - datetime '', -- CHECKER_ID - varchar(15) NULL -- APPROVE_DT - datetime ) END --------------------BAODNQ 18/7/2022: Nếu có DVCM trùng DMMS thì xác nhận luôn-------- DECLARE @p_DVDM_DMMS_ID VARCHAR(15) = ( SELECT CDV.DVDM_ID FROM CM_DMMS CD LEFT JOIN PL_COSTCENTER_DT PCD ON CD.BRANCH_ID = PCD.BRANCH_ID AND CD.DEP_ID = PCD.DEP_ID LEFT JOIN PL_COSTCENTER PC ON PCD.COST_ID = PC.COST_ID LEFT JOIN CM_DVDM CDV ON PC.DVDM_ID = CDV.DVDM_ID WHERE CD.DMMS_ID = (SELECT DVDM_ID FROM PL_REQUEST_PROCESS WHERE PROCESS_ID = 'DMMS' AND REQ_ID = @p_REQ_ID) AND CDV.IS_DVCM = 1 ) IF(EXISTS(SELECT*FROM TR_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID AND COST_ID = @p_DVDM_DMMS_ID)) BEGIN UPDATE TR_REQUEST_COSTCENTER SET AUTH_STATUS='A', APPROVE_DT=GETDATE(), CHECKER_ID=@p_MAKER_ID, NOTES = N'Xác nhận' WHERE REQ_ID = @p_REQ_ID AND COST_ID = @p_DVDM_DMMS_ID END IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID) AND EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK' ))) BEGIN DECLARE @COST_ID VARCHAR(20) DECLARE lstCostCenter CURSOR FOR SELECT COST_ID FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID OPEN lstCostCenter FETCH NEXT FROM lstCostCenter INTO @COST_ID WHILE @@FETCH_STATUS = 0 BEGIN IF(NOT EXISTS(SELECT * FROM TR_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID AND COST_ID = @COST_ID AND AUTH_STATUS = 'A')) BEGIN IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER='GDDV' OR ROLE_USER IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') )AND ( DVDM_ID=@COST_ID OR @COST_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) )) BEGIN IF(@COST_ID=@DVDM_KT AND @IS_KT ='1') BEGIN INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'DVCM', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'KSV', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @COST_ID , N'Chờ đơn vị chuyên môn xác nhận' , 1 -- DVDM_ID - varchar(15) ) END ELSE BEGIN INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'DVCM', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) 'GDDV', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @COST_ID , N'Chờ đơn vị chuyên môn xác nhận' , 1 -- DVDM_ID - varchar(15) ) END END END FETCH NEXT FROM lstCostCenter INTO @COST_ID END CLOSE lstCostCenter DEALLOCATE lstCostCenter END ----------------BAODNQ 6/7/2022: Nếu có BB xét giá trên 500tr và có check chọn qua GDK TC---------- IF(EXISTS(SELECT * FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID AND HAS_GDK_TC = 'Y')) BEGIN IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM')) BEGIN SET @PROCESS_PARENT='DVCM' END DECLARE @p_ROLE_ID VARCHAR(20), @p_DVDM_ID VARCHAR(15) SET @p_ROLE_ID = 'GDK' SET @p_DVDM_ID = 'DM0000000000017' --- PHÒNG TÀI CHÍNH INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'GDK_TC', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) @p_ROLE_ID, -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10) '', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @p_DVDM_ID, -- DVDM_ID - varchar(15) N'Chờ Giám đốc khối Tài Chính phê duyệt', -- NOTES - nvarchar(500) 0 -- IS_HAS_CHILD - bit ) SET @PROCESS_PARENT= 'GDK_TC' END ---------------END BAODNQ 6/7/2022-------------------------- DECLARE @TOTAL_AMT DECIMAL(18,2),@ROLE_PDTH VARCHAR(20) ,@LIMIT_VALUE DECIMAL(18,2) ,@IS_NEXT BIT,@PROCESS_ID VARCHAR(5),@ROLE_ID VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTES NVARCHAR(50),@DVDM_NAME NVARCHAR(200) --IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM')) -- SET @PROCESS_PARENT='DVCM' IF(NOT EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'GDK_TC') AND EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'DVCM')) BEGIN SET @PROCESS_PARENT='DVCM' END SET @IS_NEXT=(SELECT dbo.FN_CHECK_LIMIT_TR_REQ(@p_REQ_ID,'GDDV')) --SET @IS_NEXT=1 IF(@IS_NEXT =1 AND EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK' ))) BEGIN SET @DVDM_ID=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC') SET @ROLE_ID=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC') SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID=@ROLE_ID) SET @DVDM_NAME= (SELECT DVDM_NAME FROM dbo.CM_DVDM WHERE DVDM_ID=@DVDM_ID) SET @NOTES = @NOTES + ' ' + @DVDM_NAME INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'GDK_PYC', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) @ROLE_ID, -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10) '', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @DVDM_ID, -- DVDM_ID - varchar(15) N'Chờ ' +@NOTES+N' phê duyệt', -- NOTES - nvarchar(500) 0 -- IS_HAS_CHILD - bit ) SET @PROCESS_PARENT= 'GDK_PYC' END ----------------BAODNQ 11/6/2022 PYCMS CÓ TỜ TRÌNH CĐT------------------------ IF(EXISTS (SELECT * FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID AND TYPE_PL <> 'TTCP')) BEGIN DECLARE @p_LIMIT_PTGDK_HT DECIMAL(18,0), @p_LIMIT_TGD DECIMAL(18,0), @p_TOTAL_AMT_REQ_DOC DECIMAL(18,0) = ( SELECT TOTAL_AMT FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID ) ----------------Set hạng mức------------------ DECLARE @t_HANGHOA_TABLE TABLE(HH_ID VARCHAR(15), HH_CODE VARCHAR(100)) INSERT INTO @t_HANGHOA_TABLE SELECT TRDT.HANGHOA_ID, CH.HH_CODE FROM TR_REQUEST_DOC_DT TRDT LEFT JOIN CM_HANGHOA CH ON TRDT.HANGHOA_ID = CH.HH_ID WHERE TRDT.REQ_DOC_ID = @p_REQ_ID IF(EXISTS(SELECT * FROM @t_HANGHOA_TABLE WHERE HH_CODE IN ('HCQT-003-000007', 'SPMKT-001-000007'))) BEGIN SET @p_LIMIT_PTGDK_HT = 300000000 SET @p_LIMIT_TGD = 500000000 END ELSE IF(EXISTS(SELECT * FROM @t_HANGHOA_TABLE WHERE HH_CODE IN ('THQHCC-001-000003'))) BEGIN SET @p_LIMIT_PTGDK_HT = 50000000 SET @p_LIMIT_TGD = 300000000 END ELSE BEGIN SET @p_LIMIT_PTGDK_HT = 100000000 SET @p_LIMIT_TGD = 300000000 END ------------ PCYMS CÓ TỜ TRÌNH CĐT VƯỢT HẠN MỨC PTGDK HỖ TRỢ------- IF(@p_TOTAL_AMT_REQ_DOC > @p_LIMIT_PTGDK_HT) BEGIN SET @DVDM_ID = 'DM0000000000015' ---PHÒNG HỖ TRỢ SET @ROLE_ID = 'PTGD' -- PHÓ TỔNG GIÁM ĐỐC KHỐI INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'PTGDK_CDT', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) @ROLE_ID, -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10) '', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @DVDM_ID, -- DVDM_ID - varchar(15) N'Chờ Phó Tổng Giám đốc khối Hỗ Trợ phê duyệt', -- NOTES - nvarchar(500) 0 -- IS_HAS_CHILD - bit ) SET @PROCESS_PARENT= 'PTGDK_CDT' END -------------------TỜ TRÌNH CĐT CÓ CHECK GDK TÀI CHÍNH----------- IF(EXISTS (SELECT * FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID AND TYPE_PL <> 'TTCP' AND HAS_GDK_TC = 'Y')) BEGIN SET @DVDM_ID = 'DM0000000000017' --- PHÒNG TÀI CHÍNH SET @ROLE_ID = 'GDK' INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'GDK_CDT_TC', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) @ROLE_ID, -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10) '', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @DVDM_ID, -- DVDM_ID - varchar(15) N'Chờ Giám đốc khối Tài Chính phê duyệt', -- NOTES - nvarchar(500) 0 -- IS_HAS_CHILD - bit ) SET @PROCESS_PARENT= 'GDK_CDT_TC' END -------------------PCYMS CÓ TỜ TRÌNH CĐT VƯỢT HẠN MỨC TGD------- IF(@p_TOTAL_AMT_REQ_DOC > @p_LIMIT_TGD) BEGIN ----------------Qua thư ký TGĐ trc----------------- --SET @DVDM_ID = 'DM0000000000013' SET @DVDM_ID = NULL SET @ROLE_ID = 'TKTGD' INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'TKTGD_CDT', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) @ROLE_ID, -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10) '', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @DVDM_ID, -- DVDM_ID - varchar(15) N'Chờ Thư ký Tổng Giám đốc phê duyệt', -- NOTES - nvarchar(500) 0 -- IS_HAS_CHILD - bit ) SET @PROCESS_PARENT= 'TKTGD_CDT' ---------------Qua TGĐ------------------ --SET @DVDM_ID = 'DM0000000000013' SET @DVDM_ID = NULL SET @ROLE_ID = 'TGD' INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'TGD_CDT', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) @ROLE_ID, -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10) '', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) @DVDM_ID, -- DVDM_ID - varchar(15) N'Chờ Tổng Giám đốc phê duyệt', -- NOTES - nvarchar(500) 0 -- IS_HAS_CHILD - bit ) SET @PROCESS_PARENT= 'TGD_CDT' END END ----------------------------END BAODNQ 11/6/2022------------------ INSERT INTO dbo.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_ID, -- REQ_ID - varchar(15) 'APPROVE', -- PROCESS_ID - varchar(10) 'U', -- STATUS - varchar(5) '', -- ROLE_USER - varchar(50) '', -- BRANCH_ID - varchar(15) '', -- CHECKER_ID - varchar(15) NULL, -- APPROVE_DT - datetime @PROCESS_PARENT, -- PARENT_PROCESS_ID - varchar(10) 'N', -- IS_LEAF - varchar(1) '', -- COST_ID - varchar(15) '', -- DVDM_ID - varchar(15) N'Hoàn tất', -- NOTES - nvarchar(500) NULL -- IS_HAS_CHILD - bit ) DECLARE @PROCESS_NEXT_ID VARCHAR(10) SET @PROCESS_NEXT_ID = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID) UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT_ID WHERE REQ_ID=@p_REQ_ID END -- KET THUC DMMS ELSE IF(@p_PROCESS_ID='DVCM') BEGIN DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID VARCHAR(15),@PROCESS_NEXT VARCHAR(10) SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID) SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID) SET @ROLE_ID=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID) -- LUCTV 07082020 KIEM TRA NEU ROLE KHAC ROLE GDDV THI PHAI CHUYEN ROLE THANH GDDV --IF(@ROLE_ID ='KTT') --BEGIN -- SET @ROLE_ID ='GDDV' --END SET @PROCESS_NEXT = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID) UPDATE dbo.TR_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID AND COST_ID IN (SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID WHERE BRANCH_ID=@BRANCH_ID AND (DEP_ID=@DEP_ID OR DEP_ID IN (SELECT * FROM @DEP_AUTH))) UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_MAKER_ID, APPROVE_DT=GETDATE() ,NOTES=N'Đơn vị chuyên môn xác nhận' WHERE REQ_ID=@p_REQ_ID AND( ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID))AND DVDM_ID IN (SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID WHERE BRANCH_ID=@BRANCH_ID AND (DEP_ID=@DEP_ID OR DEP_ID IN (SELECT * FROM @DEP_AUTH))) IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@p_PROCESS_ID AND REQ_ID=@p_REQ_ID AND STATUS='C')) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID ----------------BAODNQ 6/7/2022----------------- IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = @PROCESS_NEXT AND STATUS = 'C' AND (NOTES IS NULL OR NOTES = ''))) BEGIN DECLARE @p_PROCESS_NOTES NVARCHAR(MAX) IF(@PROCESS_NEXT = 'GDK_TC') BEGIN SET @p_PROCESS_NOTES = N'Chờ Giám đốc khối Tài Chính phê duyệt' END ELSE IF(@PROCESS_NEXT = 'GDK_PYC') BEGIN SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID='GDK') SET @p_PROCESS_NOTES = N'Chờ ' +@NOTES+N' phê duyệt' END UPDATE PL_REQUEST_PROCESS SET NOTES = @p_PROCESS_NOTES WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = @PROCESS_NEXT END ----------------END BAODNQ 6/7/2022----------------- END END --IF(@PROCESS_NEXT='APPROVE') IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE PROCESS_ID ='APPROVE' AND REQ_ID =@p_REQ_ID)) BEGIN DECLARE @TempTB TABLE ( TOTAL_AMT DECIMAL(18,2), TRADE_ID VARCHAR(20), PLAN_ID VARCHAR(20) ) INSERT INTO @TempTB SELECT SUM(DT.TOTAL_AMT) TOTAL_AMT,PLDT.TRADE_ID,PLDT.PLAN_ID FROM dbo.TR_REQUEST_DOC_DT DT LEFT JOIN dbo.PL_REQUEST_DOC_DT PLDT ON DT.PL_REQDT_ID=PLDT.REQDT_ID WHERE TRAN_TYPE_ID IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK') AND DT.REQ_DOC_ID=@p_REQ_ID GROUP BY PLDT.TRADE_ID,PLDT.PLAN_ID UPDATE dbo.PL_TRADEDETAIL SET AMT_EXE =AMT_EXE + (SELECT TOTAL_AMT FROM @TempTB WHERE [@TempTB].TRADE_ID=PL_TRADEDETAIL.TRADE_ID AND PL_TRADEDETAIL.PLAN_ID=[@TempTB].PLAN_ID) WHERE PL_TRADEDETAIL.TRADE_ID IN (SELECT TRADE_ID FROM @TempTB) IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK'))) EXEC dbo.TR_REQ_DOC_Ins_To_PO @p_TR_REQ_ID = @p_REQ_ID -- varchar(15) ------------BAODNQ 26/3/2022: Duyệt bb xét giá khi duyệt PYCMS hoàn tất------------ DECLARE @p_TR_REQUEST_DOC_TOTAL_AMT DECIMAL(18,0), @p_RECORD_ID_100 VARCHAR(15), --bb xét giá dưới 100 @p_RECORD_ID_100_500 VARCHAR(15), -- bb xét giá 100-500 @p_RECORD_ID_500 VARCHAR(15) --bb xét giá trên 500 SET @p_TR_REQUEST_DOC_TOTAL_AMT = ( SELECT TOTAL_AMT FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID ) SET @p_RECORD_ID_100 = (SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID) SET @p_RECORD_ID_100_500 = (SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID) SET @p_RECORD_ID_500 = (SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID) ----------TH BB XÉT GIÁ DƯỚI 100TR------ --IF(@p_TR_REQUEST_DOC_TOTAL_AMT < 100000000) --BEGIN -- SET @p_RECORD_ID = ( -- SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID -- ) -- IF(@p_RECORD_ID IS NULL OR @p_RECORD_ID = '') -- BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, N'Biên bản xét giá không tồn tại' ErrorDesc -- RETURN '-1' -- END -- -------DUYỆT BB XÉT GIÁ--------- -- UPDATE TR_REQ_DOC_XETGIA_DUOI_100M SET -- AUTH_STATUS = 'A', -- CHECKER_ID = @p_TLNAME, -- APPROVE_DT = GETDATE() -- WHERE RECORD_ID = @p_RECORD_ID -- IF @@ERROR <> 0 GOTO ABORT --END IF(@p_RECORD_ID_100 IS NOT NULL AND @p_RECORD_ID_100 <> '') BEGIN -------DUYỆT BB XÉT GIÁ--------- UPDATE TR_REQ_DOC_XETGIA_DUOI_100M SET AUTH_STATUS = 'A', CHECKER_ID = @p_TLNAME, APPROVE_DT = GETDATE() WHERE RECORD_ID = @p_RECORD_ID_100 IF @@ERROR <> 0 GOTO ABORT END ----------TH BB XÉT GIÁ TỪ 100TR - 500TR------ --ELSE IF (@p_TR_REQUEST_DOC_TOTAL_AMT >= 100000000 AND @p_TR_REQUEST_DOC_TOTAL_AMT < 500000000) --BEGIN -- SET @p_RECORD_ID = ( -- SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID -- ) -- IF(@p_RECORD_ID IS NULL OR @p_RECORD_ID = '') -- BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, N'Biên bản xét giá không tồn tại' ErrorDesc -- RETURN '-1' -- END -- -------DUYỆT BB XÉT GIÁ--------- -- UPDATE TR_REQ_DOC_XETGIA_100M_500M SET -- AUTH_STATUS = 'A', -- CHECKER_ID = @p_TLNAME, -- APPROVE_DT = GETDATE() -- WHERE RECORD_ID = @p_RECORD_ID -- IF @@ERROR <> 0 GOTO ABORT --END ELSE IF (@p_RECORD_ID_100_500 IS NOT NULL AND @p_RECORD_ID_100_500 <> '') BEGIN -----DUYỆT BB XÉT GIÁ--------- UPDATE TR_REQ_DOC_XETGIA_100M_500M SET AUTH_STATUS = 'A', CHECKER_ID = @p_TLNAME, APPROVE_DT = GETDATE() WHERE RECORD_ID = @p_RECORD_ID_100_500 IF @@ERROR <> 0 GOTO ABORT END ----------TH BB XÉT GIÁ TRÊN 500TR------ --ELSE --BEGIN -- SET @p_RECORD_ID = ( -- SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID -- ) -- IF(@p_RECORD_ID IS NULL OR @p_RECORD_ID = '') -- BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, N'Biên bản xét giá không tồn tại' ErrorDesc -- RETURN '-1' -- END -- -------DUYỆT BB XÉT GIÁ--------- -- UPDATE TR_REQ_DOC_XETGIA_TREN_500M SET -- AUTH_STATUS = 'A', -- CHECKER_ID = @p_TLNAME, -- APPROVE_DT = GETDATE() -- WHERE RECORD_ID = @p_RECORD_ID -- IF @@ERROR <> 0 GOTO ABORT --END ELSE IF (@p_RECORD_ID_500 IS NOT NULL AND @p_RECORD_ID_500 <> '') BEGIN -------DUYỆT BB XÉT GIÁ--------- UPDATE TR_REQ_DOC_XETGIA_TREN_500M SET AUTH_STATUS = 'A', CHECKER_ID = @p_TLNAME, APPROVE_DT = GETDATE() WHERE RECORD_ID = @p_RECORD_ID_500 IF @@ERROR <> 0 GOTO ABORT END --------------END BAODNQ 26/3/2022---------------- END END 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'Altering [dbo].[MW_IN_KT_Upd]' GO /*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('MW_IN_MASTER','MINM','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('MINM','1','1')*/ ALTER PROCEDURE [dbo].[MW_IN_KT_Upd] @p_IN_ID varchar(15), @p_TRN_Date VARCHAR(25) = NULL, @p_GROUP_ID varchar(15) = NULL, @p_MATERIAL_NAME nvarchar(1000) = NULL, @p_MATERIAL_DESC nvarchar(MAX) = NULL, @p_MAKER_ID_KT varchar(15) = NULL, @p_MATERIAL_ID varchar(15) = NULL, @p_CHECKER_ID_KT varchar(15) = NULL, @p_BRANCH_ID varchar(15) = NULL, @p_DEPT_ID varchar(15) = NULL, @p_CREATE_DT_KT VARCHAR(25) = NULL, @p_AUTH_STATUS_KT varchar(1) = NULL, @p_QTY DECIMAL(18, 2) = NULL, @p_PO_CODE nvarchar(200) = 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(25) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(25) = NULL, @p_APPROVE_DT_KT VARCHAR(25) = NULL, @p_TRN_TIME varchar(50) = NULL, @p_BUY_PRICE DECIMAL(18, 2) = NULL, @p_TOTAL_AMT DECIMAL(18, 2) = NULL, @p_VAT decimal(18, 2) = NULL, @p_PRICE_VAT decimal(18, 0) = NULL, @p_IS_PROMO varchar(1) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_INVOICE_NO NVARCHAR(200) = NULL, @p_INVOICE_DT VARCHAR(25) = NULL, @p_DIVISION_ID VARCHAR(15) = NULL, @p_ENTRY_BOOKED varchar(1) = NULL, @p_CORE_NOTE nvarchar(500) = NULL, @p_IN_CODE NVARCHAR(100) = NULL, @p_WARE_HOUSE VARCHAR(15) = NULL, @p_PO_ID varchar(20) = NULL, @p_XmlData XML = NULL AS DECLARE @sErrorCode VARCHAR(20) = '' DECLARE @l_IN_ID VARCHAR(15) DECLARE @l_IN_DT_ID VARCHAR(15) --- KHAI BAO BIEN CURSOR DECLARE @IN_ID VARCHAR(15) = NULL, @GROUP_ID VARCHAR(15) = NULL, @MATERIAL_ID VARCHAR(15) = NULL, @MATERIAL_NAME NVARCHAR(200) = NULL, @QTY DECIMAL(18, 2) = NULL, @VAT DECIMAL(18, 2) = NULL, @TOTAL_AMT DECIMAL(18, 2) = NULL, @NOTES NVARCHAR(1000) = NULL, @IS_PROMO VARCHAR(1) = NULL, @PRICE_VAT DECIMAL(18, 2) = NULL, @MATERIAL_ACCTNO VARCHAR(25) DECLARE @hdoc INT; --- EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData; DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML (@hdoc, '/Root/ADDNEWDT', 2) WITH ( IN_ID VARCHAR(15), GROUP_ID VARCHAR(15), MATERIAL_ID VARCHAR(15), MATERIAL_NAME NVARCHAR(200), QTY DECIMAL(18, 2), VAT DECIMAL(18, 2), TOTAL_AMT DECIMAL(18, 2), NOTES NVARCHAR(1000), IS_PROMO VARCHAR(1), PRICE_VAT DECIMAL(18, 2), MATERIAL_ACCTNO VARCHAR(25)); OPEN XmlData; BEGIN TRANSACTION --LUCTV: NGAY 07 -06 2019. BO SUNG RANG BUOC NEU DANG TRA VE CHO HANH CHINH THI KHONG DUOC PHEP CAP NHAT THONG TIN DELETE FROM MW_IN WHERE IN_MASTER_ID =@p_IN_ID IF( (SELECT AUTH_STATUS FROM MW_IN_MASTER WHERE IN_ID = @p_IN_ID)<>'A') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Thông tin nhập mới vật liệu đang bị trả về bộ phận hành chính. Vui lòng chờ bộ phận hành chính kiểm duyệt' ErrorDesc RETURN '-1' END -- UPDATE MASTER UPDATE [dbo].[MW_IN_MASTER] SET --[TOTAL_AMT] = @p_BUY_PRICE, --[BUY_PRICE] = @p_BUY_PRICE/@p_QTY, --[TRN_Date] = @p_TRN_Date, --[GROUP_ID] = @p_GROUP_ID, --[MATERIAL_NAME] = @p_MATERIAL_NAME, [MATERIAL_DESC] = @p_MATERIAL_DESC, [MAKER_ID_KT] = @p_MAKER_ID_KT, --[MATERIAL_ID] = @p_MATERIAL_ID, [CHECKER_ID_KT] = @p_CHECKER_ID_KT, [BRANCH_ID] = @p_BRANCH_ID, [DEPT_ID] = @p_DEPT_ID, [CREATE_DT_KT] = CONVERT(DATETIME,@p_CREATE_DT_KT, 103) , [AUTH_STATUS_KT] = 'U', --[QTY] = @p_QTY, [PO_CODE] = @p_PO_CODE, [PO_ID] = @p_PO_ID, [NOTES] = @p_NOTES, [RECORD_STATUS] = @p_RECORD_STATUS, --[AUTH_STATUS] = @p_AUTH_STATUS, --[MAKER_ID] = @p_MAKER_ID, --[CREATE_DT] = @p_CREATE_DT, --[CHECKER_ID] = @p_CHECKER_ID, --[APPROVE_DT] = @p_APPROVE_DT, --[APPROVE_DT_KT] = @p_APPROVE_DT_KT, --[TRN_TIME] = @p_TRN_TIME, --[VAT] = @p_VAT, --[PRICE_VAT] = @p_PRICE_VAT, [IS_PROMO] = @p_IS_PROMO, [BRANCH_CREATE] = @p_BRANCH_CREATE , [INVOICE_NO] = @p_INVOICE_NO , [INVOICE_DT] = CONVERT(DATETIME,@p_INVOICE_DT, 103) , [DIVISION_ID] = @p_DIVISION_ID , [ENTRY_BOOKED] = @p_ENTRY_BOOKED, [CORE_NOTE] =@p_CORE_NOTE,WARE_HOUSE =@p_WARE_HOUSE WHERE IN_ID = @p_IN_ID ----------- UPDATE MW_IN_MASTER SET @p_PO_CODE =@p_PO_CODE, [MAKER_ID] = @p_MAKER_ID,INVOICE_NO= @p_INVOICE_NO,[NOTES] = @p_NOTES, [INVOICE_DT]= CONVERT(DATETIME,@p_INVOICE_DT, 103) , @p_PO_ID = @p_PO_ID WHERE IN_ID =@p_IN_ID -- INSERT DETAIL FETCH NEXT FROM XmlData INTO @IN_ID,@GROUP_ID ,@MATERIAL_ID ,@MATERIAL_NAME,@QTY,@VAT,@TOTAL_AMT,@NOTES,@IS_PROMO,@PRICE_VAT, @MATERIAL_ACCTNO WHILE @@FETCH_STATUS = 0 BEGIN ---------------------------------------- IF(@PRICE_VAT IS NULL) BEGIN SET @PRICE_VAT = 0; END EXEC SYS_CodeMasters_Gen 'MW_IN', @l_IN_DT_ID out IF @l_IN_DT_ID='' OR @l_IN_DT_ID IS NULL GOTO ABORT --SET @p_TOTAL_AMT = @p_BUY_PRICE --SET @p_BUY_PRICE = ROUND(@p_TOTAL_AMT/@p_QTY,0) INSERT INTO dbo.MW_IN ( IN_MASTER_ID,IN_ID,TRN_Date, GROUP_ID,MATERIAL_NAME, MATERIAL_DESC,MAKER_ID_KT,MATERIAL_ID,CHECKER_ID_KT, BRANCH_ID, DEPT_ID,CREATE_DT_KT,AUTH_STATUS_KT,QTY,PO_CODE,NOTES,RECORD_STATUS, AUTH_STATUS,MAKER_ID,CREATE_DT,CHECKER_ID,APPROVE_DT,APPROVE_DT_KT,TRN_TIME, BUY_PRICE,TOTAL_AMT,VAT,PRICE_VAT,IS_PROMO,BRANCH_CREATE,INVOICE_NO, INVOICE_DT,DIVISION_ID,ENTRY_BOOKED,CORE_NOTE, PO_ID, MATERIAL_ACCTNO ) VALUES ( @p_IN_ID, @l_IN_DT_ID, CONVERT(DATETIME,@p_TRN_Date, 103), @GROUP_ID,@MATERIAL_NAME, @NOTES, @p_MAKER_ID_KT, @MATERIAL_ID,@p_CHECKER_ID_KT, @p_BRANCH_ID,@p_DEPT_ID, CONVERT(DATETIME,@p_CREATE_DT_KT, 103) , @p_AUTH_STATUS_KT, @QTY,@p_PO_CODE, @NOTES,@p_RECORD_STATUS,@p_AUTH_STATUS, @p_MAKER_ID, CONVERT(DATETIME,@p_CREATE_DT, 103),@p_CHECKER_ID, CONVERT(DATETIME,@p_APPROVE_DT, 103), CONVERT(DATETIME,@p_APPROVE_DT_KT, 103),@p_TRN_TIME, ROUND(@TOTAL_AMT/@QTY,0), @TOTAL_AMT, @VAT,@PRICE_VAT, @IS_PROMO,@p_BRANCH_CREATE,@p_INVOICE_NO, CONVERT(DATETIME,@p_INVOICE_DT, 103),@p_DIVISION_ID,@p_ENTRY_BOOKED,@p_CORE_NOTE, @p_PO_ID, @MATERIAL_ACCTNO ) ---------------------------------------- IF @@Error <> 0 GOTO ABORT; FETCH NEXT FROM XmlData INTO @IN_ID,@GROUP_ID ,@MATERIAL_ID ,@MATERIAL_NAME,@QTY,@VAT,@TOTAL_AMT,@NOTES,@IS_PROMO,@PRICE_VAT, @MATERIAL_ACCTNO END CLOSE XmlData; DEALLOCATE XmlData; -- doanptt 07/06/2022: Thêm process DELETE dbo.PL_PROCESS WHERE REQ_ID = @p_IN_ID AND PROCESS_ID = 'UPDATE_KT' INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_IN_ID, -- REQ_ID - varchar(15) 'UPDATE_KT', -- PROCESS_ID - varchar(10) @p_MAKER_ID_KT, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Cập nhật phiếu nhập mới vật liệu kế toán thành công' , N'Cập nhật phiếu nhập mới vật liệu kế toán' -- PROCESS_DESC - nvarchar(1000) ) COMMIT TRANSACTION SELECT '0' as Result, @l_IN_ID IN_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlData; DEALLOCATE XmlData; ROLLBACK TRANSACTION SELECT '-1' as Result, '' IN_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PROCESS_CHILD_Ins]' GO ALTER PROCEDURE [dbo].[TR_REQ_PROCESS_CHILD_Ins] @p_MAKER_ID VARCHAR(20), @p_XMLData XML AS BEGIN TRANSACTION --- KHAI BAO CHUOI ID DECLARE @ID_RETURN_FOR_EMAIL VARCHAR(500) ='' ----------------------------------------------------- DECLARE @p_ROW_NUM INT = 0 DECLARE @p_REQ_CODE VARCHAR(50) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XMLData DECLARE ListREQ CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListREQ',2) WITH ( REQ_ID varchar(20) , PROCESS_ID varchar(20), TLNAME VARCHAR(20), TYPE_JOB VARCHAR(20), REF_ID INT ) OPEN ListREQ DECLARE @LEVEL INT,@REQ_ID VARCHAR(20),@PROCESS_ID VARCHAR(20),@TYPE_JOB VARCHAR(20),@TLNAME VARCHAR(20),@REF_ID INT, @TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100) FETCH NEXT FROM ListREQ INTO @REQ_ID,@PROCESS_ID,@TLNAME,@TYPE_JOB,@REF_ID WHILE @@FETCH_STATUS=0 BEGIN SET @p_ROW_NUM = @p_ROW_NUM + 1 SET @p_REQ_CODE = (SELECT TOP 1 REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID = @REQ_ID) IF(@TLNAME IS NULL OR @TLNAME = '') BEGIN CLOSE ListREQ DEALLOCATE ListREQ ROLLBACK TRANSACTION SELECT '-1' as Result, N'Điều phối phiếu yêu cầu số ' +@p_REQ_CODE+ N'. Vui lòng chọn tên người được giao xử lý' ErrorDesc RETURN '-1' END -- BAT DAU GAN GIA TRI SET @ID_RETURN_FOR_EMAIL = @ID_RETURN_FOR_EMAIL +','+@REQ_ID --NEU LA DVKD THI MAC DINH LA CAP XU LY PHIEU - LUCTV -- XOA QUYEN CU CUA USER DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_ID AND TLNAME =@TLNAME AND (STATUS_JOB ='C' OR PROCESS_ID =@REF_ID) IF(EXISTS(SELECT * FROM CM_DMMS WHERE BRANCH_ID <> 'DV0001' AND DMMS_ID =(SELECT TOP 1 DMMS_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@REQ_ID))) BEGIN IF(@TYPE_JOB ='KS') BEGIN SET @TYPE_JOB ='XL' END END ----------------------------------------------------------- SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID ORDER BY LEVEL_JOB DESC),0) IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB=@TYPE_JOB )) BEGIN IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB=@TYPE_JOB AND TLNAME <> @TLNAME )) BEGIN UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET TLNAME=@TLNAME,MAKER_ID=@p_MAKER_ID,TRANFER_DT=GETDATE() WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB=@TYPE_JOB SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL = @TYPE_JOB) SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@TLNAME) INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @REQ_ID, -- REQ_ID - varchar(15) @PROCESS_ID, -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Nhân viên tiếp nhận ' + @FULLNAME + ' - ' + @TLNAME, -- PROCESS_DESC - nvarchar(1000) N'Điều phối '+@TYPE_JOB_NAME -- NOTES - nvarchar(1000) ) END END ELSE BEGIN IF(@LEVEL=0) BEGIN SET @LEVEL=@LEVEL +1 INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD ( REQ_ID, PROCESS_ID, TLNAME, TYPE_JOB, LEVEL_JOB, STATUS_JOB, RECORD_STATUS ) VALUES ( @REQ_ID, -- REQ_ID - varchar(20) @REF_ID, -- PROCESS_ID - varchar(20) @p_MAKER_ID, -- TLNAME - varchar(50) 'TP', -- TYPE_JOB - varchar(50) @LEVEL, -- LEVEL_JOB - int 'U', -- STATUS_JOB - varchar(10) '1' -- RECORD_STATUS - varchar(15) ) END IF(@TYPE_JOB='KS' AND EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB='XL')) BEGIN UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET LEVEL_JOB=@LEVEL + 1 WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB='XL' SET @LEVEL=@LEVEL-1 UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='U' WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND LEVEL_JOB=@LEVEL IF (EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB='XL' AND STATUS_JOB='C')) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD ( REQ_ID, PROCESS_ID, TLNAME, TYPE_JOB, LEVEL_JOB, STATUS_JOB, RECORD_STATUS, MAKER_ID, TRANFER_DT ) VALUES ( @REQ_ID, -- REQ_ID - varchar(20) @REF_ID, -- PROCESS_ID - varchar(20) @TLNAME, -- TLNAME - varchar(50) @TYPE_JOB, -- TYPE_JOB - varchar(50) @LEVEL + 1, -- LEVEL_JOB - int 'U', -- STATUS_JOB - varchar(10) '1' , -- RECORD_STATUS - varchar(15) @p_MAKER_ID, GETDATE() ) END ELSE BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD ( REQ_ID, PROCESS_ID, TLNAME, TYPE_JOB, LEVEL_JOB, STATUS_JOB, RECORD_STATUS, MAKER_ID, TRANFER_DT ) VALUES ( @REQ_ID, -- REQ_ID - varchar(20) @REF_ID, -- PROCESS_ID - varchar(20) @TLNAME, -- TLNAME - varchar(50) @TYPE_JOB, -- TYPE_JOB - varchar(50) @LEVEL + 1, -- LEVEL_JOB - int 'C', -- STATUS_JOB - varchar(10) '1' , -- RECORD_STATUS - varchar(15) @p_MAKER_ID, GETDATE() ) END END ELSE BEGIN UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='U' WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND LEVEL_JOB=@LEVEL INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD ( REQ_ID, PROCESS_ID, TLNAME, TYPE_JOB, LEVEL_JOB, STATUS_JOB, RECORD_STATUS, MAKER_ID, TRANFER_DT ) VALUES ( @REQ_ID, -- REQ_ID - varchar(20) @REF_ID, -- PROCESS_ID - varchar(20) @TLNAME, -- TLNAME - varchar(50) @TYPE_JOB, -- TYPE_JOB - varchar(50) @LEVEL + 1, -- LEVEL_JOB - int 'C', -- STATUS_JOB - varchar(10) '1' , -- RECORD_STATUS - varchar(15) @p_MAKER_ID, GETDATE() ) END SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@TYPE_JOB) SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@TLNAME) INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @REQ_ID, -- REQ_ID - varchar(15) @PROCESS_ID, -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Nhân viên tiếp nhận ' + @FULLNAME + ' - ' + @TLNAME, -- PROCESS_DESC - nvarchar(1000) N'Điều phối '+@TYPE_JOB_NAME -- NOTES - nvarchar(1000) ) END FETCH NEXT FROM ListREQ INTO @REQ_ID,@PROCESS_ID,@TLNAME,@TYPE_JOB,@REF_ID END CLOSE ListREQ DEALLOCATE ListREQ IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT 0 as Result, @ID_RETURN_FOR_EMAIL 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'Altering [dbo].[REAL_ESTATE_L_C_ById]' GO ALTER PROCEDURE [dbo].[REAL_ESTATE_L_C_ById] @p_RET_L_C_ID varchar(15)=NULL AS BEGIN SELECT A.RET_L_C_ID, --CASE -- WHEN RM.ASSET_ID IS NOT NULL AND RM.ASSET_ID <> '' THEN RM.ASS_NAME -- ELSE A.RET_NAME --END --AS RET_NAME, RM.ASS_NAME AS REAL_ESTATE_NAME, A.RET_ADDR, A.RET_DESC, A.REASON, A.PROC_EXE, A.PROC_NEXT, A.END_DT, A.NOTES, A.BRANCH_ID, A.BRANCH_CREATE, A.RECORD_STATUS, A.AUTH_STATUS, A.MAKER_ID, A.CREATE_DT, A.CHECKER_ID, A.APPROVE_DT, A.BRANCH_USE, A.BRANCH_MANAGE, A.BUY_DT, A.AREA, A.CONTRUCT_AREA, A.IS_SEND_APPR, A.SEND_APPR_DT, A.SIGN_USER, A.SIGN_DT, A.RET_ID, CASE WHEN RM.ASSET_ID IS NOT NULL AND RM.ASSET_ID <> '' THEN RM.ASSET_PRICE ELSE A.ASSET_PRICE END AS ASSET_PRICE, A.LAND_USE_RIGHTS_PRICE, A.MARKET_PRICE, A.FINISH_DT_REAL, BRNC.BRANCH_NAME BRANCH_CREATE_NAME, BRNU.BRANCH_NAME BRANCH_USE_NAME, AUTH.AUTH_STATUS_NAME, US.TLFullName AS SIGN_USER_FULLNAME, CASE WHEN (RM.ASSET_ID IS NOT NULL OR RM.ASSET_ID <> '') AND (A.FINISH_DT_REAL IS NULL OR A.FINISH_DT_REAL = '') THEN RM.APPROVE_DT ELSE NULL END AS REAL_ESTATE_ASSET_DT FROM REAL_ESTATE_L_C AS A LEFT JOIN dbo.CM_BRANCH BRNC ON BRNC.BRANCH_ID = A.BRANCH_CREATE LEFT JOIN dbo.CM_BRANCH BRNU ON BRNU.BRANCH_ID = A.BRANCH_ID LEFT JOIN dbo.CM_AUTH_STATUS AUTH ON AUTH.AUTH_STATUS = A.AUTH_STATUS --------BAODNQ 15/2/2022: Kết thêm bảng TL_USER LEFT JOIN TL_USER US ON A.SIGN_USER = US.TLNANME LEFT JOIN RET_MASTER RM ON RM.RET_ID = A.RET_ID WHERE A.RET_L_C_ID = @p_RET_L_C_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[RET_MASTER_SendAppr]' GO /* [dbo].[RET_MASTER_App] '','','' */ ALTER PROCEDURE [dbo].[RET_MASTER_SendAppr] @p_RET_ID VARCHAR(15), @p_USER_LOGIN VARCHAR(15), @p_SEND_APPR_DT VARCHAR(20) = NULL AS IF(EXISTS (SELECT * FROM RET_MASTER WHERE RET_ID = @p_RET_ID AND IS_SEND_APPR = 'Y')) BEGIN SELECT '-1' as Result, '' RET_ID, '' IS_SEND_APPR, N'Gửi phê duyệt thất bại. Thông tin bất động sản đã được gửi yêu cầu phê duyệt trước đó' ErrorDesc RETURN '-1' END BEGIN TRANSACTION UPDATE RET_MASTER SET IS_SEND_APPR = 'Y', SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), SIGN_DT = NULL, AUTH_STATUS = 'U' WHERE RET_ID = @p_RET_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @p_IS_SEND_APPR VARCHAR(15) = (SELECT IS_SEND_APPR FROM RET_MASTER WHERE RET_ID = @p_RET_ID) DECLARE @p_MESSAGE NVARCHAR(500) DECLARE @p_RET_NAME NVARCHAR(1000) = ( SELECT CASE WHEN RM.ASSET_ID IS NULL OR RM.ASSET_ID = '' THEN RM.ASS_NAME ELSE AM.ASSET_NAME END FROM RET_MASTER RM LEFT JOIN ASS_MASTER AM ON RM.ASSET_ID = AM.ASSET_ID WHERE RM.RET_ID = @p_RET_ID ) --------------------------TH gửi phê duyệt có cấp phê duyệt trung gian--------------- IF(EXISTS(SELECT * FROM RET_MASTER WHERE RET_ID = @p_RET_ID AND SIGN_USER IS NOT NULL)) BEGIN SET @p_MESSAGE = N'Thông tin bất động sản: '+@p_RET_NAME+ N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' END ------------------TH gửi phê duyệt ko có cấp phê duyệt trung gian(gửi thẳng trưởng DV)-------------- ELSE BEGIN SET @p_MESSAGE = N'Thông tin bất động sản: '+@p_RET_NAME+ N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' END --------BAODNQ 16/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_RET_ID, 'SEND', @p_USER_LOGIN, GETDATE(), N'Người tạo gửi phê duyệt thành công' , N'Người tạo gửi phê duyệt' ) IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_RET_ID RET_ID, @p_IS_SEND_APPR IS_SEND_APPR ,@p_MESSAGE ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RET_ID, '' IS_SEND_APPR,'' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CON_LAYOUT_BLUEPRINT_SEARCH]' GO ALTER PROC [dbo].[CON_LAYOUT_BLUEPRINT_SEARCH] @p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15) = NULL, @p_LAYOUT_NAME NVARCHAR(500) = NULL, @p_CONSTRUCT_ID VARCHAR(15) = NULL, @p_CONSTRUCT_NAME NVARCHAR(500) = NULL, @p_LAYOUT_TYPE VARCHAR(15) = NULL, @p_NOTES VARCHAR(15) = 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_TLNAME_USER VARCHAR(15), @p_TOP INT = 1000 AS BEGIN -- PAGING DECLARE @AUTHOR_DVDM TABLE ( ROLE_ID VARCHAR(100), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), DVDM_ID VARCHAR(20) ) -- INSERT LIST DVDM 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) ----NGUOI XU lY TIEP THEO 15112022 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,TempU.TLNANME AS TLNAME,TempU.TLFullName,PL.NOTES FROM ( SELECT REQ_ID,PROCESS_ID,NOTES,ROLE_USER,BRANCH_ID,DEP_ID,STATUS,DVDM_ID FROM dbo.PL_REQUEST_PROCESS PRC WHERE PRC.STATUS = 'C' AND EXISTS(SELECT PLRD.CON_LAYOUT_BLUEPRINT_ID FROM dbo.CON_LAYOUT_BLUEPRINT PLRD WHERE PLRD.CON_LAYOUT_BLUEPRINT_ID=PRC.REQ_ID) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID <>'SIGN' 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 ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TempU ON (TempU.RoleName=PL.ROLE_USER OR EXISTS(SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE PL.ROLE_USER = TM.ROLE_NEW AND 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 ='') LEFT JOIN dbo.CON_LAYOUT_BLUEPRINT RD ON RD.CON_LAYOUT_BLUEPRINT_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID 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 REQ_ID,PROCESS_ID,NOTES,ROLE_USER,BRANCH_ID,DEP_ID,STATUS,DVDM_ID FROM dbo.PL_REQUEST_PROCESS PRC WHERE PRC.STATUS = 'C' AND EXISTS(SELECT PLRD.CON_LAYOUT_BLUEPRINT_ID FROM dbo.CON_LAYOUT_BLUEPRINT PLRD WHERE PLRD.CON_LAYOUT_BLUEPRINT_ID=PRC.REQ_ID ) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID ='SIGN' 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 ( SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER 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 EXISTS(SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE PL.ROLE_USER = TM.ROLE_NEW AND TM.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 ='') LEFT JOIN dbo.CON_LAYOUT_BLUEPRINT RD ON RD.CON_LAYOUT_BLUEPRINT_ID = PL.REQ_ID LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID WHERE STATUS='C' AND (PL.PROCESS_ID = 'SIGN' AND TempU.TLNANME = RD.SIGN_USER) 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 REQ_ID,PROCESS_ID,NOTES,ROLE_USER,BRANCH_ID,DEP_ID,STATUS,IS_HAS_CHILD,DVDM_ID,ID FROM dbo.PL_REQUEST_PROCESS PRC WHERE EXISTS(SELECT PLRD.CON_LAYOUT_BLUEPRINT_ID FROM dbo.CON_LAYOUT_BLUEPRINT PLRD WHERE PLRD.CON_LAYOUT_BLUEPRINT_ID=PRC.REQ_ID ) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID <>'SIGN' 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 dbo.TL_USER 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 UNION ALL SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME 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.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE) ) TempU ON (TempU.RoleName=PL.ROLE_USER OR EXISTS(SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE PL.ROLE_USER = TM.ROLE_NEW AND 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' ----NGUOI XU lY TIEP THEO 15112022 IF(@P_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*,(CASE WHEN A.RECORD_STATUS = 1 THEN N'Hoạt động' END) AS RECORD_STATUS_NAME, AU.AUTH_STATUS_NAME, NXL.NGUOIXULY AS 'PROCESS_PERSON_NEXT', RP.NOTES AS 'PROCESS_STATUS', RPN.NOTES AS 'PROCESS_STATUS_NEXT' -- SELECT END FROM CON_LAYOUT_BLUEPRINT A LEFT JOIN CM_AUTH_STATUS AU ON AU.AUTH_STATUS = A.AUTH_STATUS --LEFT JOIN PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID = A.CON_LAYOUT_BLUEPRINT_ID AND PLRP.STATUS <> 'U' 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.CON_LAYOUT_BLUEPRINT_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.CON_LAYOUT_BLUEPRINT_ID) LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID = A.CON_LAYOUT_BLUEPRINT_ID WHERE 1 = 1 AND (A.CON_LAYOUT_BLUEPRINT_ID LIKE '%' + @p_CON_LAYOUT_BLUEPRINT_ID + '%' OR @p_CON_LAYOUT_BLUEPRINT_ID IS NULL OR @p_CON_LAYOUT_BLUEPRINT_ID = '') AND (A.LAYOUT_NAME LIKE '%' + @p_LAYOUT_NAME + '%' OR @p_LAYOUT_NAME IS NULL OR @p_LAYOUT_NAME = '') AND (A.CONSTRUCT_ID LIKE '%' + @p_CONSTRUCT_ID + '%' OR @p_CONSTRUCT_ID IS NULL OR @p_CONSTRUCT_ID = '') AND (A.CONSTRUCT_NAME LIKE '%' + @p_CONSTRUCT_NAME + '%' OR @p_CONSTRUCT_NAME IS NULL OR @p_CONSTRUCT_NAME = '') AND (A.LAYOUT_TYPE LIKE '%' + @p_LAYOUT_TYPE + '%' OR @p_LAYOUT_TYPE IS NULL OR @p_LAYOUT_TYPE = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') --AND (EXISTS(SELECT AUTH.ROLE_ID -- FROM @AUTHOR_DVDM AUTH -- WHERE AUTH.ROLE_ID=PLRP.ROLE_USER -- AND (PLRP.DVDM_ID=AUTH.DVDM_ID -- OR PLRP.DVDM_ID ='' -- OR PLRP.DVDM_ID IS NULL) -- OR A.MAKER_ID = @p_TLNAME_USER -- OR (ISNULL(A.SIGN_USER,'') <> '' -- AND A.SIGN_USER = @p_TLNAME_USER -- AND A.AUTH_STATUS NOT IN ('E','R')))) AND (EXISTS(SELECT * FROM PL_REQUEST_PROCESS PLRP WHERE PLRP.REQ_ID = A.CON_LAYOUT_BLUEPRINT_ID AND PLRP.[STATUS] <> 'U' AND EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID = PLRP.ROLE_USER AND (PLRP.DVDM_ID=AUTH.DVDM_ID OR PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL)) OR A.MAKER_ID = @p_TLNAME_USER OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_USER = @p_TLNAME_USER AND A.AUTH_STATUS NOT IN ('E','R')))) ORDER BY A.CREATE_DT DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(@P_TOP) A.*,(CASE WHEN A.RECORD_STATUS = 1 THEN N'Hoạt động' END) AS RECORD_STATUS_NAME, AU.AUTH_STATUS_NAME ,NXL.NGUOIXULY AS 'PROCESS_PERSON_NEXT', RP.NOTES AS 'PROCESS_STATUS', RPN.NOTES AS 'PROCESS_STATUS_NEXT' -- SELECT END FROM CON_LAYOUT_BLUEPRINT A LEFT JOIN CM_AUTH_STATUS AU ON AU.AUTH_STATUS = A.AUTH_STATUS 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.CON_LAYOUT_BLUEPRINT_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') ) LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.CON_LAYOUT_BLUEPRINT_ID) LEFT JOIN ( SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY, STUFF((select ', ' + RE.TLNAME FROM @lstREQUEST RE WHERE RE.REQ_ID=Results.REQ_ID FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME FROM @lstREQUEST Results GROUP BY REQ_ID ) NXL ON NXL.REQ_ID = A.CON_LAYOUT_BLUEPRINT_ID WHERE 1 = 1 AND (A.CON_LAYOUT_BLUEPRINT_ID LIKE '%' + @p_CON_LAYOUT_BLUEPRINT_ID + '%' OR @p_CON_LAYOUT_BLUEPRINT_ID IS NULL OR @p_CON_LAYOUT_BLUEPRINT_ID = '') AND (A.LAYOUT_NAME LIKE '%' + @p_LAYOUT_NAME + '%' OR @p_LAYOUT_NAME IS NULL OR @p_LAYOUT_NAME = '') AND (A.CONSTRUCT_ID LIKE '%' + @p_CONSTRUCT_ID + '%' OR @p_CONSTRUCT_ID IS NULL OR @p_CONSTRUCT_ID = '') AND (A.CONSTRUCT_NAME LIKE '%' + @p_CONSTRUCT_NAME + '%' OR @p_CONSTRUCT_NAME IS NULL OR @p_CONSTRUCT_NAME = '') AND (A.LAYOUT_TYPE LIKE '%' + @p_LAYOUT_TYPE + '%' OR @p_LAYOUT_TYPE IS NULL OR @p_LAYOUT_TYPE = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (EXISTS(SELECT * FROM PL_REQUEST_PROCESS PLRP WHERE PLRP.REQ_ID = A.CON_LAYOUT_BLUEPRINT_ID AND PLRP.[STATUS] <> 'U' AND EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID = PLRP.ROLE_USER AND (PLRP.DVDM_ID=AUTH.DVDM_ID OR PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL)) OR A.MAKER_ID = @p_TLNAME_USER OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_USER = @p_TLNAME_USER AND A.AUTH_STATUS NOT IN ('E','R')))) --AND (A.MAKER_ID = @p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') ORDER BY A.CREATE_DT DESC -- PAGING END END -- PAGING select *from PL_REQUEST_PROCESS where REQ_ID ='CLB000000000036' GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[RET_MASTER_Confirm]' GO /* [dbo].[RET_MASTER_App] '','','' */ ALTER PROCEDURE [dbo].[RET_MASTER_Confirm] @p_RET_ID VARCHAR(15), @p_SIGN_USER VARCHAR(15), @p_SIGN_DT VARCHAR(20) = NULL AS IF(EXISTS (SELECT * FROM RET_MASTER WHERE RET_ID = @p_RET_ID AND IS_SEND_APPR = 'Y' AND (SIGN_DT IS NOT NULL OR SIGN_DT <> ''))) BEGIN SELECT '-1' as Result, '' RET_ID, N'Xác nhận thất bại. Thông tin bất động sản đã được cấp trung gian xác nhận trước đó' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM RET_MASTER WHERE RET_ID = @p_RET_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' as Result, '' RET_ID, N'Xác nhận thất bại. Thông tin bất động sản đang bị trả về' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT RET_ID FROM RET_MASTER WHERE RET_ID = @p_RET_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' as Result, '' RET_ID, N'Xác nhận thất bại. Thông tin bất động sản đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END BEGIN TRANSACTION -------------------------- UPDATE RET_MASTER SET AUTH_STATUS = 'U', SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103) WHERE RET_ID = @p_RET_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @p_RET_NAME NVARCHAR(1000) = ( SELECT CASE WHEN RM.ASSET_ID IS NULL OR RM.ASSET_ID = '' THEN RM.ASS_NAME ELSE AM.ASSET_NAME END FROM RET_MASTER RM LEFT JOIN ASS_MASTER AM ON RM.ASSET_ID = AM.ASSET_ID WHERE RM.RET_ID = @p_RET_ID ) DECLARE @p_MESSAGE NVARCHAR(500) = N' Thông tin bất động sản: ' +@p_RET_NAME+ N' đã được xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' --------BAODNQ 16/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_RET_ID, 'APPROVE', @p_SIGN_USER, GETDATE(), N'Cấp trung gian xác nhận thành công' , N'Cấp trung gian xác nhận' ) IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_RET_ID RET_ID, @p_MESSAGE ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' RET_ID,'' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_IMPORT_DT_ById]' GO /* [CM_SUPPLIER_ById] 'CMS000000000001','NCC_NOKIA_01' SELECT * FROM CM_SUPPLIER */ ALTER PROCEDURE [dbo].[PL_IMPORT_DT_ById] @p_IMPORT_ID varchar(15) AS SELECT Row_number() over(order by DT.IMP_DT_ID) AS STT,DT.*, pi.IMP_YEAR, YEAR(pi.EDIT_DT) AS EDIT_DT FROM dbo.PL_IMPORT_DT DT LEFT JOIN PL_IMPORT pi ON DT.IMPORT_ID = pi.IMPORT_ID WHERE DT.IMPORT_ID=@p_IMPORT_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_IMPORT_Ins]' GO ALTER PROCEDURE [dbo].[PL_IMPORT_Ins] @p_PLAN_CODE VARCHAR(20), @p_IMP_YEAR INT = NULL, @p_IMP_NAME NVARCHAR(200), @p_FILE_NAME NVARCHAR(200) = NULL, @p_TOTAL_QTY NUMERIC(18,0) = NULL, @p_TOTAL_ATM NUMERIC(18,0) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(20) = NULL, @p_CREATE_DT nvarchar(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(20) = NULL, @p_APPROVE_DT nvarchar(20) = NULL, @p_XMLData XML=NULL AS BEGIN TRANSACTION DECLARE @TableTmp TABLE( IMP_YEAR VARCHAR(4), PLAN_TYPE_ID VARCHAR(15), PLAN_TYPE_CODE VARCHAR(15), PLAN_TYPE_NAME NVARCHAR(200), COST_ID VARCHAR(15), COST_CODE VARCHAR(100), COST_NAME NVARCHAR(200), BRANCH_ID VARCHAR(15), BRANCH_CODE VARCHAR(15), BRANCH_NAME NVARCHAR(200), DEP_ID varchar(15), DEP_CODE VARCHAR(15), DEP_NAME NVARCHAR(200), REF_ID INT, REF_CODE VARCHAR(20), REF_NAME NVARCHAR(200), GOOD_ID varchar(15), GOOD_CODE VARCHAR(20), GOOD_NAME NVARCHAR(200), QTY INT, TOTAL_AMT DECIMAL(18,2), NOTES NVARCHAR(1000), AMT_EMT DECIMAL(18,2), AMT_EXE DECIMAL(18,2), AMT_TF DECIMAL(18,2), AMT_RECEIVE_TF DECIMAL(18,2) ); Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output, @p_XMLData INSERT INTO @TableTmp SELECT * FROM OPENXML(@hDoc,'/Root/XmlData',2) WITH ( IMP_YEAR VARCHAR(4), PLAN_TYPE_ID VARCHAR(15), PLAN_TYPE_CODE VARCHAR(15), PLAN_TYPE_NAME NVARCHAR(200), COST_ID VARCHAR(15), COST_CODE VARCHAR(100), COST_NAME NVARCHAR(200), BRANCH_ID VARCHAR(15), BRANCH_CODE VARCHAR(15), BRANCH_NAME NVARCHAR(200), DEP_ID varchar(15), DEP_CODE VARCHAR(15), DEP_NAME NVARCHAR(200), REF_ID INT, REF_CODE VARCHAR(20), REF_NAME NVARCHAR(200), GOOD_ID varchar(15), GOOD_CODE VARCHAR(20), GOOD_NAME NVARCHAR(200), QTY INT, TOTAL_AMT DECIMAL(18,2), NOTES NVARCHAR(1000), AMT_EMT DECIMAL(18,2), AMT_EXE DECIMAL(18,2), AMT_TF DECIMAL(18,2), AMT_RECEIVE_TF DECIMAL(18,2) ) --Update ID UPDATE @TableTmp SET BRANCH_ID=(SELECT TOP 1 BRANCH_ID FROM dbo.CM_BRANCH WHERE dbo.CM_BRANCH.BRANCH_CODE=[@TableTmp].BRANCH_CODE), DEP_ID=(SELECT TOP 1 DEP_ID FROM dbo.CM_DEPARTMENT WHERE dbo.CM_DEPARTMENT.DEP_CODE=[@TableTmp].DEP_CODE AND dbo.CM_DEPARTMENT.BRANCH_ID = (SELECT TOP 1 BRANCH_ID FROM dbo.CM_BRANCH WHERE dbo.CM_BRANCH.BRANCH_CODE=[@TableTmp].BRANCH_CODE)), COST_ID=(SELECT TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE dbo.CM_DVDM.DVDM_CODE=[@TableTmp].COST_CODE AND IS_DVDM=1 ), PLAN_TYPE_ID=(SELECT TOP 1 PLAN_TYPE_ID FROM dbo.CM_PLAN_TYPE WHERE dbo.CM_PLAN_TYPE.PLAN_TYPE_CODE=[@TableTmp].PLAN_TYPE_CODE), GOOD_ID=(SELECT TOP 1 GD_ID FROM dbo.CM_GOODS WHERE dbo.CM_GOODS.GD_CODE=[@TableTmp].GOOD_CODE) -- GIANT UPDATE NAME --Update ID UPDATE @TableTmp SET BRANCH_NAME=(SELECT TOP 1 BRANCH_NAME FROM dbo.CM_BRANCH WHERE dbo.CM_BRANCH.BRANCH_CODE=[@TableTmp].BRANCH_CODE), DEP_NAME=(SELECT TOP 1 DEP_NAME FROM dbo.CM_DEPARTMENT WHERE dbo.CM_DEPARTMENT.DEP_CODE=[@TableTmp].DEP_CODE), COST_NAME=(SELECT TOP 1 DVDM_NAME FROM dbo.CM_DVDM WHERE dbo.CM_DVDM.DVDM_CODE=[@TableTmp].COST_CODE AND IS_DVDM=1 ), PLAN_TYPE_NAME=(SELECT TOP 1 PLAN_TYPE_NAME FROM dbo.CM_PLAN_TYPE WHERE dbo.CM_PLAN_TYPE.PLAN_TYPE_CODE=[@TableTmp].PLAN_TYPE_CODE), GOOD_NAME=(SELECT TOP 1 GD_NAME FROM dbo.CM_GOODS WHERE dbo.CM_GOODS.GD_CODE=[@TableTmp].GOOD_CODE) DECLARE @Error NVARCHAR(MAX) --- Validate dữ liệu IF(EXISTS(SELECT BRANCH_ID FROM @TableTmp WHERE BRANCH_ID IS NULL OR BRANCH_ID='')) BEGIN SET @Error=(select STUFF( (select ';' + BRANCH_CODE from @TableTmp WHERE BRANCH_ID IS NULL OR BRANCH_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Mã đơn vị chưa tồn tại trên hệ thống: '+ @Error ErrorDesc RETURN '-1' END IF(EXISTS(SELECT DEP_ID FROM @TableTmp WHERE BRANCH_CODE IN ('069','799','899') AND ( DEP_ID IS NULL OR DEP_ID=''))) BEGIN SET @Error=(select STUFF( (select ';' + DEP_CODE from @TableTmp WHERE DEP_ID IS NULL OR DEP_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Mã phòng ban chưa tồn tại trên hệ thống: '+@Error ErrorDesc RETURN '-1' END IF(EXISTS(SELECT COST_ID FROM @TableTmp WHERE (COST_ID IS NULL OR COST_ID='') AND COST_CODE IS NOT NULL AND COST_CODE <>'')) BEGIN SET @Error=(select STUFF( (select ';' + COST_CODE from @TableTmp WHERE COST_ID IS NULL OR COST_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Mã đơn vị đầu mối chưa tồn tại trên hệ thống: '+@Error ErrorDesc RETURN '-1' END IF(EXISTS(SELECT PLAN_TYPE_ID FROM @TableTmp WHERE PLAN_TYPE_ID IS NULL OR PLAN_TYPE_ID='')) BEGIN SET @Error=(select STUFF( (select ';' + PLAN_TYPE_CODE from @TableTmp WHERE PLAN_TYPE_ID IS NULL OR PLAN_TYPE_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Mã loại ngân sách chưa tồn tại trên hệ thống: '+@Error ErrorDesc RETURN '-1' END IF(EXISTS(SELECT GOOD_ID FROM @TableTmp WHERE GOOD_ID IS NULL OR GOOD_ID='')) BEGIN SET @Error=(select STUFF( (select ';' + GOOD_CODE from @TableTmp WHERE GOOD_ID IS NULL OR GOOD_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Mã hạng mục ngân sách chưa tồn tại trên hệ thống: '+@Error ErrorDesc RETURN '-1' END --Validate hạn mục --IF(EXISTS(SELECT * FROM dbo.PL_MASTER WHERE [YEAR]= CAST(@p_IMP_YEAR AS VARCHAR(4)))) -- IF(EXISTS( -- SELECT DT.TRADE_ID FROM dbo.PL_MASTER PM LEFT JOIN dbo.PL_TRADEDETAIL DT ON PM.PLAN_ID=DT.PLAN_ID -- WHERE EXISTS( SELECT Tmp.GOOD_ID FROM @TableTmp Tmp -- WHERE (Tmp.IMP_YEAR=PM.[YEAR] AND Tmp.PLAN_TYPE_ID=PM.PLAN_TYPE_ID AND Tmp.COST_ID=PM.COST_ID -- AND Tmp.BRANCH_ID=PM.BRANCH_ID -- AND Tmp.DEP_ID=PM.DEPT_ID -- AND Tmp.GOOD_ID=DT.GOODS_ID) -- AND( (Tmp.QTY < ISNULL(DT.QUANTITY_ETM,0) -- AND ISNULL(DT.QUANTITY_ETM,0) >0) -- OR (Tmp.TOTAL_AMT< (ISNULL(DT.AMT_ETM,0) + ISNULL(DT.AMT_TF,0) - ISNULL(DT.AMT_RECEIVE_TF,0)) -- AND (ISNULL(DT.AMT_ETM,0) + ISNULL(DT.AMT_TF,0) - ISNULL(DT.AMT_RECEIVE_TF,0)) >0) ) -- ) OR (NOT EXISTS(SELECT Tmp.GOOD_ID FROM @TableTmp Tmp WHERE (Tmp.IMP_YEAR=PM.[YEAR] -- AND Tmp.PLAN_TYPE_ID=PM.PLAN_TYPE_ID -- AND Tmp.COST_ID=PM.COST_ID AND Tmp.BRANCH_ID=PM.BRANCH_ID -- AND Tmp.DEP_ID=PM.DEPT_ID AND Tmp.GOOD_ID=DT.GOODS_ID) ) -- AND( ISNULL(DT.QUANTITY_ETM,0) > 0 OR (ISNULL(DT.AMT_ETM,0) + ISNULL(DT.AMT_TF,0) - ISNULL(DT.AMT_RECEIVE_TF,0)) >0)))) -- BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' IMPORT_ID, N'Hạn mục chỉnh sửa đã sử dụng vượt hạn mức chỉnh sửa' ErrorDesc -- RETURN '-1' -- END DECLARE @l_IMPORT_ID VARCHAR(15) IF(EXISTS(SELECT IMPORT_ID FROM dbo.PL_IMPORT WHERE IMP_YEAR=@p_IMP_YEAR )) BEGIN SET @l_IMPORT_ID=(SELECT IMPORT_ID FROM PL_IMPORT WHERE IMP_YEAR=@p_IMP_YEAR ) UPDATE dbo.PL_IMPORT_DT SET IS_UPDATE=0 WHERE IMPORT_ID= @l_IMPORT_ID UPDATE dbo.PL_IMPORT SET PLAN_CODE=@p_PLAN_CODE,IMP_NAME=@p_IMP_NAME,FILE_NAME=@p_FILE_NAME,IMP_YEAR=@p_IMP_YEAR,IMP_QTY=@p_TOTAL_QTY, IMP_ATM=@p_TOTAL_ATM,NOTES=@p_NOTES,EDITER_ID=@p_MAKER_ID,EDIT_DT= CONVERT(DATETIME, @p_CREATE_DT,103),CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME,@p_APPROVE_DT,103),AUTH_STATUS=@p_AUTH_STATUS,IS_UPDATE=0 WHERE IMPORT_ID=@l_IMPORT_ID END ELSE BEGIN EXEC SYS_CodeMasters_Gen 'PL_IMPORT', @l_IMPORT_ID out IF @l_IMPORT_ID='' OR @l_IMPORT_ID IS NULL GOTO ABORT INSERT INTO dbo.PL_IMPORT ( IMPORT_ID, PLAN_CODE, IMP_NAME, FILE_NAME, IMP_YEAR, IMP_QTY, IMP_ATM, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, EDITER_ID, EDIT_DT, CHECKER_ID, APPROVE_DT,IS_UPDATE ) VALUES ( @l_IMPORT_ID, -- IMPORT_ID - varchar(20) @l_IMPORT_ID, @p_IMP_NAME, -- IMP_NAME - nvarchar(500) @p_FILE_NAME, -- FILE_NAME - nvarchar(200) --@p_IMP_YEAR, -- IMP_YEAR - int -- LUCTV 06052021 ẨN ĐI, THAY BẰNG PARAMATER MỚI CONVERT(INT,(SELECT TOP 1 IMP_YEAR FROM @TableTmp WHERE ISNULL(IMP_YEAR,'') <>'')),-- LUCTV 06 - 05 - 2021: IMPORT NGÀY THI LAY NGÀY NAM TRONG FILE IMPORT @p_TOTAL_QTY, -- IMP_QTY - numeric(18, 0) @p_TOTAL_ATM, -- IMP_ATM - numeric(18, 2) @p_NOTES, -- NOTES - nvarchar(1000) @p_RECORD_STATUS, -- RECORD_STATUS - varchar(1) @p_AUTH_STATUS, -- AUTH_STATUS - varchar(1) @p_MAKER_ID, -- MAKER_ID - varchar(15) CONVERT(DATETIME,@p_CREATE_DT,103), -- CREATE_DT - datetime @p_MAKER_ID, -- EDITER_ID - varchar(15) CONVERT(DATETIME,@p_CREATE_DT,103), -- EDIT_DT - datetime @p_CHECKER_ID, -- CHECKER_ID - varchar(15) CONVERT(DATETIME,@p_APPROVE_DT,103),0 -- APPROVE_DT - datetime ) END DECLARE ImportDT CURSOR FOR SELECT IMP_YEAR, PLAN_TYPE_ID, PLAN_TYPE_CODE, PLAN_TYPE_NAME, COST_ID, COST_CODE, COST_NAME, BRANCH_ID, BRANCH_CODE, BRANCH_NAME, DEP_ID, DEP_CODE, DEP_NAME, GOOD_ID, GOOD_CODE, GOOD_NAME, QTY, TOTAL_AMT, NOTES,REF_CODE,REF_NAME,AMT_EMT,AMT_EXE,AMT_TF,AMT_RECEIVE_TF FROM @TableTmp OPEN ImportDT DECLARE @IMP_YEAR VARCHAR(4), @PLAN_TYPE_ID VARCHAR(15), @PLAN_TYPE_CODE VARCHAR(15), @PLAN_TYPE_NAME NVARCHAR(200), @COST_ID VARCHAR(15), @COST_CODE VARCHAR(15), @COST_NAME NVARCHAR(200), @BRANCH_ID VARCHAR(15), @BRANCH_CODE VARCHAR(15), @BRANCH_NAME NVARCHAR(200), @DEP_ID varchar(15), @DEP_CODE VARCHAR(15), @DEP_NAME NVARCHAR(200), @REF_ID INT, @REF_CODE VARCHAR(20), @REF_NAME NVARCHAR(200), @GOOD_ID varchar(15), @GODD_CODE VARCHAR(20), @GOOD_NAME NVARCHAR(200),@QTY INT,@TOTAL_AMT DECIMAL(18,2),@NOTES NVARCHAR(1000),@AMT_EMT DECIMAL(18,2), @AMT_EXE DECIMAL(18,2), @AMT_TF DECIMAL(18,2), @AMT_RECEIVE_TF DECIMAL(18,2) ,@IMP_LOG_CODE VARCHAR(15) EXEC SYS_CodeMasters_Gen 'IMP_LOG_CODE', @IMP_LOG_CODE out IF @IMP_LOG_CODE='' OR @IMP_LOG_CODE IS NULL GOTO ABORT DECLARE @count int = 1 FETCH NEXT FROM ImportDT INTO @IMP_YEAR, @PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE, @BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME,@QTY,@TOTAL_AMT,@NOTES,@REF_CODE,@REF_NAME,@AMT_EMT,@AMT_EXE,@AMT_TF,@AMT_RECEIVE_TF WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_IMPORTDT_ID VARCHAR(20) SET @l_IMPORTDT_ID= (SELECT TOP 1 IMP_DT_ID FROM PL_IMPORT_DT WHERE IMPORT_ID=@l_IMPORT_ID AND ISNULL(PLAN_TYPE_ID,'')=ISNULL(@PLAN_TYPE_ID,'') AND ISNULL(COST_ID,'')=ISNULL(@COST_ID,'') AND BRANCH_ID=@BRANCH_ID AND ISNULL(REF_CODE,'')= ISNULL(@REF_CODE,'') AND ISNULL(DEP_ID,'')=ISNULL(@DEP_ID,'') AND ISNULL(GOOD_ID,'')=ISNULL(@GOOD_ID,'')) IF(@l_IMPORTDT_ID IS NULL OR @l_IMPORTDT_ID='') BEGIN -- GIANT IF( NOT EXISTS(SELECT * FROM CM_DEPARTMENT A WHERE A.DEP_ID = @DEP_ID AND A.BRANCH_ID = @BRANCH_ID ) AND EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_CODE IN ('069','799','899') AND BRANCH_ID = @BRANCH_ID)) BEGIN SET @Error= N'Dòng: ' + CAST(@count AS VARCHAR(10)) + N' Mã phòng ban ' + @DEP_CODE + N' không thuộc Mã đơn vị thực hiện ' + @BRANCH_CODE ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, @Error ErrorDesc RETURN '-1' END SET @count = @count + 1 EXEC SYS_CodeMasters_Gen 'IMPORT_DT', @l_IMPORTDT_ID out IF @l_IMPORTDT_ID='' OR @l_IMPORTDT_ID IS NULL GOTO ABORT INSERT INTO dbo.PL_IMPORT_DT ( IMP_DT_ID, IMPORT_ID, PLAN_TYPE_ID, PLAN_TYPE_CODE, PLAN_TYPE_NAME, COST_ID, COST_CODE, COST_NAME, BRANCH_ID, BRANCH_CODE, BRANCH_NAME, DEP_ID, DEP_CODE, DEP_NAME, REF_CODE, REF_NAME, GOOD_ID, GOOD_CODE, GOOD_NAME, QTY, TOTAL_AMT, NOTES, IMP_YEAR, IS_UPDATE ) VALUES ( @l_IMPORTDT_ID, -- IMP_DT_ID - varchar(20) @l_IMPORT_ID, -- IMPORT_ID - varchar(20) @PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE, @BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME,@QTY,@TOTAL_AMT,@NOTES,@IMP_YEAR,1 ) END ELSE BEGIN UPDATE dbo.PL_IMPORT_DT SET QTY=@QTY,TOTAL_AMT=@TOTAL_AMT,REF_NAME=@REF_NAME,IS_UPDATE=1 WHERE IMP_DT_ID=@l_IMPORTDT_ID END INSERT INTO dbo.PL_IMPORT_LOG ( IMP_LOG_CODE, IMP_ID, FILE_NAME, IMP_YEAR, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, EDITER_ID, EDIT_DT, CHECKER_ID, APPROVE_DT, PLAN_TYPE_ID, PLAN_TYPE_CODE, PLAN_TYPE_NAME, COST_ID, COST_CODE, COST_NAME, BRANCH_ID, BRANCH_CODE, BRANCH_NAME, DEP_ID, DEP_CODE, DEP_NAME, REF_CODE, REF_NAME, GOOD_ID, GOOD_CODE, GOOD_NAME, QTY, TOTAL_AMT ) VALUES ( @IMP_LOG_CODE, @l_IMPORT_ID, -- IMP_ID_OLD - varchar(20) @p_FILE_NAME, -- FILE_NAME - nvarchar(200) @p_IMP_YEAR, -- IMP_YEAR - int @p_NOTES, -- NOTES - nvarchar(1000) @p_RECORD_STATUS, -- RECORD_STATUS - varchar(1) @p_AUTH_STATUS, -- AUTH_STATUS - varchar(1) @p_MAKER_ID, -- MAKER_ID - varchar(15) CONVERT(DATETIME,@p_CREATE_DT,103), -- CREATE_DT - datetime @p_MAKER_ID, -- EDITER_ID - varchar(15) CONVERT(DATETIME,@p_CREATE_DT,103), -- EDIT_DT - datetime @p_CHECKER_ID, -- CHECKER_ID - varchar(15) CONVERT(DATETIME, @p_APPROVE_DT,103), -- APPROVE_DT - datetime @PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE, @BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME, @QTY, -- QTY - int @TOTAL_AMT -- TOTAL_AMT - numeric(18, 2) ) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM ImportDT INTO @IMP_YEAR, @PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE, @BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME,@QTY,@TOTAL_AMT,@NOTES,@REF_CODE,@REF_NAME,@AMT_EMT,@AMT_EXE,@AMT_TF,@AMT_RECEIVE_TF END CLOSE ImportDT DEALLOCATE ImportDT SET @p_TOTAL_ATM=(SELECT SUM(ISNULL(TOTAL_AMT,0)) FROM dbo.PL_IMPORT_DT WHERE IMPORT_ID=@l_IMPORT_ID) SELECT @p_TOTAL_QTY=(SELECT SUM(ISNULL(QTY,0)) FROM dbo.PL_IMPORT_DT WHERE IMPORT_ID=@l_IMPORT_ID) UPDATE dbo.PL_IMPORT SET IMP_QTY=@p_TOTAL_QTY,IMP_ATM=@p_TOTAL_ATM WHERE IMPORT_ID=@l_IMPORT_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @l_IMPORT_ID IMPORT_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_ATTACH_FILE_By_RefMaster]' GO ALTER proc [dbo].[CM_ATTACH_FILE_By_RefMaster] @p_REF_MASTER varchar(15) as begin select * from CM_ATTACH_FILE where REF_MASTER = @p_REF_MASTER OR REF_ID = @p_REF_MASTER end GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CON_REQUEST_DOC_InsXml]' GO ALTER PROCEDURE [dbo].[CON_REQUEST_DOC_InsXml] @p_CONSTRUCT_CODE varchar(15) = NULL, @p_CONSTRUCT_NAME nvarchar(100) = NULL, @p_PLAN_ID varchar(15) = NULL, @p_CONST_ID varchar(15) = NULL, @p_DIVI_ID varchar(15) = NULL, @p_CONSTRUCT_ADDR nvarchar(200) = NULL, @p_LENGTH decimal(18, 2) = NULL, @p_WIDTH decimal(18, 2) = NULL, @p_CONSTRUCT_AREA decimal(18) = NULL, @p_FLOORS int = NULL, @p_FLOORS_AREA decimal(18, 2) = NULL, @p_TOTAL_AREA_USE decimal(18, 2) = NULL, -- GIANT @p_UNUSED_AREA decimal(18, 2) = NULL, @p_TOTAL_COST decimal(18, 2) = NULL,-- GIANT @p_UNIT_PRICE decimal(18, 2) = NULL,-- GIANT @p_YEAR_EXE varchar(4) = NULL, @p_CONST_TYPE varchar(15) = NULL, @p_HQ_TYPE varchar(15) = NULL, @p_TOTAL_AMT decimal(18) = NULL, @p_COST_ESTIMATE decimal(18) = NULL, @p_COST_EXE decimal(18) = NULL, @p_COST_INCURRED decimal(18) = NULL, @p_CONST_PURPOSE varchar(15) = NULL, @p_ENGINEER nvarchar(500) = NULL, @p_BRANCH_NAME_ETX nvarchar(500) = NULL, @p_DESCRIPTION nvarchar(2000) = NULL, @p_START_DT VARCHAR(20) = NULL, @p_END_DT VARCHAR(20) = NULL, @p_DATE_EXE VARCHAR(20) = NULL, @p_COMPLETION_DT VARCHAR(20) = NULL, @p_CONSTRUCT_PROGRESS decimal(18) = NULL, @p_RECORD_STATUS varchar(1) = '1', @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS varchar(1) = 'N', @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_REQUEST_ID VARCHAR(15) = NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_STREET NVARCHAR(200) = NULL, @p_LOCATION VARCHAR(15) = NULL, @p_SCALE NVARCHAR(1000) = NULL, @p_UPD_DT varchar(20) = NULL, @p_APPROVE_VALUE decimal(18) = NULL, @P_ListRequestDoc XML = NULL, -- THONG TIN VE TO TRINH @P_ListBid XML = NULL, -- CHI PHI SUA CHUA @P_ListContract_DT XML = NULL, -- DANH SACH HO SO THI CONG @P_ListPayment XML = NULL, -- CAC DOT THANH TOAN @P_ListBid_DT XML = NULL, -- DANH SACH CHI TIET DON VI THAM GIA THAU @P_ListContractorArise XML = NULL, -- DANH SACH CHI TIET PHAT SINH TANG GIAM @P_ListReviewXML XML = NULL, -- ĐÁNH GIÁ NCC @P_ListConsProcessXML XML = NULL, -- TIẾN ĐỘ CÔNG TRÌNH @P_ListConsHHXML XML = NULL -- DANH SÁCH HÀNG HÓA AS DECLARE @sErrorCode VARCHAR(20),@DEP_CREATE VARCHAR(15) = NULL SELECT @DEP_CREATE = DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID Declare @hdoc INT -- THONG TIN VE TO TRINH Exec sp_xml_preparedocument @hdoc Output,@P_ListRequestDoc DECLARE ListRequestDoc CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListRequestDoc',2) WITH ( CON_REQUEST_DOC_ID varchar(15), REQ_ID varchar(15), REQ_CODE nvarchar(100), REQ_NAME nvarchar(200), REQ_DT VARCHAR(20), REQ_CONTENT nvarchar(1000), CONSTRUCT_ID varchar(15), TOTAL_AMT decimal(18), BRANCH_ID varchar(15), PLAN_TYPE VARCHAR(1), IS_PARENT VARCHAR(1), IS_ARISE VARCHAR(1), BUDGET varchar(15), YEAR_BUDGET int, REQUEST_PARENT VARCHAR(15), APPROVE_DT VARCHAR(20) ) OPEN ListRequestDoc -- DANH SACH HO SO THI CONG (HOP DONG) Exec sp_xml_preparedocument @hdoc Output,@P_ListContract_DT DECLARE ListContract_DT CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListContract_DT',2) WITH ( CONTRACT_ID varchar(15), CONTRACT_CODE varchar(15), [CONTRACT_NAME] nvarchar(200), CONTRACT_TYPE varchar(15), BID_ID nvarchar(200), TOTAL_AMT DECIMAL(18), IS_PARENT varchar(1), REQUEST_ID varchar(15), REQDT_ID VARCHAR(15) ) OPEN ListContract_DT -- CHI TIET PHAT SINH TANG GIAM Exec sp_xml_preparedocument @hdoc Output,@P_ListContractorArise DECLARE ListContractorArise CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListContractorArise',2) WITH ( ARISE_ID VARCHAR(15), BID_ID varchar(15), BID_CODE varchar(15), SUPPLIER nvarchar(200), IS_BID_WIN varchar(1), BEGIN_VALUE decimal(18,2), CHECKED_VALUE decimal(18,2) ) OPEN ListContractorArise -- DANH SÁCH HÀNG HÓA Exec sp_xml_preparedocument @hdoc Output,@P_ListConsHHXML DECLARE ListHH CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListHH',2) WITH ( CON_REQ_HH_ID VARCHAR(15), REQ_CODE VARCHAR(50), REQ_ID VARCHAR(15), SUP_ID VARCHAR(15), SELLTEMENT_AMT DECIMAL(18,2), [DESCRIPTION] NVARCHAR(4000), -- KHOONG SU DUNG HH_ID VARCHAR(15), ESTIMATES_AMT DECIMAL(18,2), BRANCH_DO VARCHAR(15), CONS_DOCUMENT_ID VARCHAR(15), BID_ID VARCHAR(15), BID_CODE VARCHAR(50), REQDT_ID VARCHAR(15) ) OPEN ListHH -- ĐÁNH GIÁ NCC Exec sp_xml_preparedocument @hdoc Output,@P_ListReviewXML DECLARE ListReview CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListReview',2) WITH ( CON_REQ_REVIEW_ID VARCHAR(15), SUP_ID VARCHAR(15), QCKT_REVIEW NVARCHAR(4000), CONS_PROCESS VARCHAR(15), MAINTENANCE VARCHAR(15), REPORT_PLAN_EDIT VARCHAR(15), CONS_QUALITY VARCHAR(15), BEAUTY_IMAGE VARCHAR(15), REQ_ID VARCHAR(15), REQ_CODE VARCHAR(50), SUP_NAME NVARCHAR(1000), HANGHOA_ID VARCHAR(15) ) OPEN ListReview -- TIẾN ĐỘ CÔNG TRÌNH Exec sp_xml_preparedocument @hdoc Output,@P_ListConsProcessXML DECLARE ListConsProcess CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListConsProcess',2) WITH ( CON_REQ_PROCESS_ID VARCHAR(15), DATE_REPORT VARCHAR(50), PERCENT_COMPLETED DECIMAL(18,2), PERCENT_REMAIN DECIMAL(18,2), DEADLINE VARCHAR(50), ITEM_JOB NVARCHAR(MAX), NOTES NVARCHAR(MAX), DEADLINE_CON VARCHAR(50) ) OPEN ListConsProcess BEGIN TRANSACTION -- THONG TIN VE TO TRINH -- insert zô bảng tài liệu ---TAO BANG TAM DECLARE @TEMP TABLE ( [KEY] varchar(15), [REF_ID] varchar(15), [TYPE] varchar(50) ) -- THEM THONG TIN TO TRINH --KHAI BAO TOAN BO BIEN TRUOC KHI FETCH DATA DECLARE @INDEX int = 0, @IS_PARENT VARCHAR(1), @IS_ARISE VARCHAR(1), @PLAN_TYPE VARCHAR(1), @REQ_BUDGET varchar(15), @REQ_YEAR_BUDGET int, @REQUEST_PARENT VARCHAR(15), @APPROVE_DT VARCHAR(20), @CON_REQUEST_DOC_ID varchar(15), @REQ_ID varchar(15), @REQ_CODE nvarchar(100), @REQ_NAME nvarchar(200), @REQ_DT VARCHAR(20), @REQ_CONTENT nvarchar(1000), @CONSTRUCT_ID varchar(15), @TOTAL_AMT decimal(18,2), @BRANCH_ID varchar(15), @DOC_REQUEST_TOTAL_AMT DECIMAL(18,2) = 0 --INSERT ListBid DETAIL FETCH NEXT FROM ListRequestDoc INTO @CON_REQUEST_DOC_ID,@REQ_ID, @REQ_CODE, @REQ_NAME, @REQ_DT, @REQ_CONTENT, @CONSTRUCT_ID, @TOTAL_AMT, @BRANCH_ID, @PLAN_TYPE, @IS_PARENT,@IS_ARISE, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @APPROVE_DT WHILE @@FETCH_STATUS = 0 BEGIN --25/12/2014 Anh Ai yeu cau khong kiem tra trung to trinh - mot to trinh dung cho nhieu cong trinh ---- KIEM TRA SO TO TRINH CO TRUNG HAY KHONG --IF EXISTS(SELECT * FROM CON_REQUEST_DOC WHERE [REQ_CODE]= @REQ_CODE) --BEGIN -- SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'CON-0001' -- GOTO ABORT --END EXEC SYS_CodeMasters_Gen 'CON_REQUEST_DOC', @CON_REQUEST_DOC_ID out IF @CON_REQUEST_DOC_ID='' OR @CON_REQUEST_DOC_ID IS NULL GOTO ABORT SET @INDEX = @INDEX + 1 IF (@INDEX = 1) -- TRA VE SO TO TRINH DAU TIEN BEGIN --SET @P_REQUEST_ID = @REQ_ID SET @P_REQUEST_ID = @CON_REQUEST_DOC_ID END SET @REQUEST_PARENT = @P_REQUEST_ID INSERT INTO CON_REQUEST_DOC([CON_REQUEST_DOC_ID],[REQ_ID], [REQ_CODE], [REQ_NAME], [REQ_DT], [REQ_CONTENT], [CONSTRUCT_ID], [TOTAL_AMT], [NOTES], [RECORD_STATUS], [MAKER_ID], [CREATE_DT], [AUTH_STATUS], [CHECKER_ID], [APPROVE_DT], [BRANCH_ID], [PLAN_TYPE], [IS_PARENT] , [BUDGET], [YEAR_BUDGET], [REQUEST_PARENT], [IS_ARISE]) VALUES(@CON_REQUEST_DOC_ID,@REQ_ID, @REQ_CODE, @REQ_NAME, CONVERT(DATETIME, @REQ_DT, 103), @REQ_CONTENT, @CONSTRUCT_ID, @TOTAL_AMT, '', @p_RECORD_STATUS, @P_MAKER_ID, CONVERT(DATETIME, @P_CREATE_DT , 103), @P_AUTH_STATUS, @P_CHECKER_ID, CONVERT(DATETIME, @APPROVE_DT, 103), @BRANCH_ID, @PLAN_TYPE, @IS_PARENT, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @IS_ARISE) INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@CON_REQUEST_DOC_ID, 'CON_REQUEST_DOC') SET @DOC_REQUEST_TOTAL_AMT += @TOTAL_AMT PRINT @@ERROR IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM ListRequestDoc INTO @CON_REQUEST_DOC_ID,@REQ_ID, @REQ_CODE, @REQ_NAME, @REQ_DT, @REQ_CONTENT, @CONSTRUCT_ID, @TOTAL_AMT, @BRANCH_ID, @PLAN_TYPE, @IS_PARENT,@IS_ARISE, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @APPROVE_DT END CLOSE ListRequestDoc DEALLOCATE ListRequestDoc DECLARE @OLD_REQUEST_PARENT VARCHAR(15) = @REQUEST_PARENT SET @REQUEST_PARENT = (SELECT TOP(1) CON_REQUEST_DOC_ID FROM CON_REQUEST_DOC WHERE REQUEST_PARENT = @OLD_REQUEST_PARENT ORDER BY TOTAL_AMT DESC) UPDATE CON_REQUEST_DOC SET IS_PARENT = (CASE WHEN CON_REQUEST_DOC_ID = @REQUEST_PARENT THEN '1' ELSE '0' END), REQUEST_PARENT = @REQUEST_PARENT WHERE REQUEST_PARENT = @OLD_REQUEST_PARENT SET @p_REQUEST_ID = @REQUEST_PARENT -- THEM THONG TIN CONG TRINH IF @p_TOTAL_COST > @DOC_REQUEST_TOTAL_AMT BEGIN DECLARE @ERRORSYS NVARCHAR(200) = N'Tổng chi phí xây dựng không lớn hơn tổng giá trị các tờ trình ('+ cast(format(@DOC_REQUEST_TOTAL_AMT, 'N', 'en-US') AS VARCHAR(20)) +')' ROLLBACK TRANSACTION SELECT '-1' as Result, @ERRORSYS ErrorDesc RETURN '-1' END DECLARE @l_CONSTRUCT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'CON_MASTER', @l_CONSTRUCT_ID out IF @l_CONSTRUCT_ID='' OR @l_CONSTRUCT_ID IS NULL GOTO ABORT INSERT INTO CON_MASTER([IS_FINISH],[CONSTRUCT_ID],[CONSTRUCT_CODE],[CONSTRUCT_NAME],[PLAN_ID],[DIVI_ID],[CONSTRUCT_ADDR],[LENGTH],[WIDTH], [CONSTRUCT_AREA], [FLOORS],[FLOORS_AREA],[YEAR_EXE],[HQ_TYPE],[CONST_TYPE],[TOTAL_AMT],[COST_ESTIMATE],[COST_EXE],[COST_INCURRED],[CONST_PURPOSE], [DESCRIPTION],[START_DT],[END_DT],[DATE_EXE],[COMPLETION_DT],[CONSTRUCT_PROGRESS],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[CONST_ID], [REQUEST_ID], [BRANCH_ID], [STREET], [LOCATION], [SCALE], [ENGINEER], [BRANCH_NAME_ETX],UPD_DT, APPROVE_VALUE,TOTAL_AREA_USE,TOTAL_COST,UNIT_PRICE,UNUSED_AREA, [DEP_CREATE]) VALUES('N',@l_CONSTRUCT_ID ,@l_CONSTRUCT_ID ,@p_CONSTRUCT_NAME ,@p_PLAN_ID ,@p_DIVI_ID ,@p_CONSTRUCT_ADDR ,@p_LENGTH, @p_WIDTH, @p_CONSTRUCT_AREA ,@p_FLOORS, @p_FLOORS_AREA, @p_YEAR_EXE ,@p_HQ_TYPE ,@p_CONST_TYPE ,@p_TOTAL_AMT ,@p_COST_ESTIMATE ,@p_COST_EXE ,@p_COST_INCURRED , @p_CONST_PURPOSE, @p_DESCRIPTION ,CONVERT(DATETIME, @p_START_DT, 103) , CONVERT(DATETIME, @p_END_DT, 103) ,CONVERT(DATETIME, @p_DATE_EXE, 103) ,CONVERT(DATETIME, @p_COMPLETION_DT, 103),@p_CONSTRUCT_PROGRESS ,@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_CONST_ID, @p_REQUEST_ID, @p_BRANCH_ID, @p_STREET, @p_LOCATION, @p_SCALE, @p_ENGINEER, @p_BRANCH_NAME_ETX , CONVERT(DATETIME, @p_UPD_DT, 103), @p_APPROVE_VALUE,@p_TOTAL_AREA_USE,@p_TOTAL_COST,@p_UNIT_PRICE,@p_UNUSED_AREA, @DEP_CREATE) IF @@Error <> 0 GOTO ABORT -- UPDATE CONSTRUCT ID CON_REQUEST_DOC UPDATE CON_REQUEST_DOC SET CONSTRUCT_ID = @l_CONSTRUCT_ID WHERE REQUEST_PARENT = @p_REQUEST_ID INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_CONSTRUCT_ID, 'CON_MASTER') -- DANH SÁCH HÀNG HÓA DECLARE @CON_REQ_HH_ID VARCHAR(15), @SUP_ID VARCHAR(15), @SELLTEMENT_AMT DECIMAL(18,2), @DESCRIPTION NVARCHAR(4000), @HH_ID VARCHAR(15), @ESTIMATES_AMT DECIMAL(18,2), @BRANCH_DO VARCHAR(15), @CONS_DOCUMENT_ID VARCHAR(15), @BID_ID varchar(15), @BID_CODE VARCHAR(15), @REQDT_ID VARCHAR(15) FETCH NEXT FROM ListHH INTO @CON_REQ_HH_ID,@REQ_CODE, @REQ_ID, @SUP_ID, @SELLTEMENT_AMT, @DESCRIPTION, @HH_ID, @ESTIMATES_AMT,@BRANCH_DO,@CONS_DOCUMENT_ID,@BID_ID,@BID_CODE,@REQDT_ID WHILE @@FETCH_STATUS = 0 BEGIN EXEC SYS_CodeMasters_Gen 'CON_REQUEST_HH_DT', @CON_REQ_HH_ID out IF @CON_REQ_HH_ID='' OR @CON_REQ_HH_ID IS NULL GOTO ABORT SET @DESCRIPTION = (SELECT [DESCRIPTION] FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID) print @BID_CODE print @REQDT_ID INSERT INTO [dbo].[CON_REQUEST_HH_DT] ( [CON_REQ_HH_ID], [SUP_ID], [SELLTEMENT_AMT], [DESCRIPTION], [HH_ID], [REQ_ID], [ESTIMATES_AMT], [BRANCH_DO], [CONS_DOCUMENT_ID], [BID_ID], [REQ_CODE], [CONSTRUCT_ID], [REQDT_ID], [BID_CODE] ) VALUES ( @CON_REQ_HH_ID, @SUP_ID, @SELLTEMENT_AMT, @DESCRIPTION, @HH_ID, @REQ_ID, @ESTIMATES_AMT, @BRANCH_DO, @CONS_DOCUMENT_ID, @BID_ID, @REQ_CODE, @l_CONSTRUCT_ID, @REQDT_ID, @BID_CODE ) INSERT INTO @TEMP([KEY],[REF_ID],[TYPE]) VALUES (@REQDT_ID, @CON_REQ_HH_ID, 'CON_REQUEST_HH_DT') FETCH NEXT FROM ListHH INTO @CON_REQ_HH_ID,@REQ_CODE, @REQ_ID, @SUP_ID, @SELLTEMENT_AMT, @DESCRIPTION, @HH_ID, @ESTIMATES_AMT,@BRANCH_DO,@CONS_DOCUMENT_ID,@BID_ID,@BID_CODE,@REQDT_ID END CLOSE ListHH DEALLOCATE ListHH -- THEM CHI TIET THONG TIN HO SO THI CONG -- HOP DONG & PHU LUC HOP DONG DECLARE @CDT_INDEX int = 0, @CDT_CONTRACT_ID varchar(15), @CONTRACT_CODE varchar(15), @CONTRACT_NAME nvarchar(200), @CONTRACT_TYPE varchar(1), @CDT_BID_ID nvarchar(200), @CDT_TOTAL_AMT decimal(18), @CDT_IS_PARENT varchar(1), @CDT_REQUEST_ID varchar(15), @CDT_CONTRACT_PARENT varchar(15), @CDT_REQDT_ID VARCHAR(15) -- DANH SACH HO SO THI CONG (HOP DONG) --INSERT ListContract_DT DETAIL FETCH NEXT FROM ListContract_DT INTO @CDT_CONTRACT_ID, @CONTRACT_CODE, @CONTRACT_NAME, @CONTRACT_TYPE, @CDT_BID_ID, @CDT_TOTAL_AMT, @CDT_IS_PARENT, @CDT_REQUEST_ID, @CDT_REQDT_ID WHILE @@FETCH_STATUS = 0 BEGIN ---- KIEM TRA SO HOP DONG CO TRUNG HAY KHONG --IF EXISTS(SELECT * FROM TR_CONTRACT WHERE REQUEST_ID = @P_REQUEST_ID AND [CONTRACT_CODE]= @CONTRACT_CODE AND @CONTRACT_CODE<>'' AND @CONTRACT_CODE IS NOT NULL) --BEGIN -- SELECT ErrorCode Result, @l_CONSTRUCT_ID CONSTRUCT_ID, '' REF_ID, '' [TYPE], ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'CTRC-0001' -- GOTO ABORT --END --SELECT @BID_ID = REF_ID FROM @TEMP where [TYPE]='BID_MASTER' AND [KEY] = @CDT_BID_ID DECLARE @l_CON_REQUEST_CONTRACT_ID VARCHAR(15), @CDT_CON_REQ_HH_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'CON_REQUEST_CONTRACT', @l_CON_REQUEST_CONTRACT_ID out IF @l_CON_REQUEST_CONTRACT_ID='' OR @l_CON_REQUEST_CONTRACT_ID IS NULL GOTO ABORT SET @CDT_CON_REQ_HH_ID = (SELECT REF_ID FROM @TEMP WHERE [KEY] = @CDT_REQDT_ID) INSERT INTO CON_REQUEST_CONTRACT([CON_REQUEST_CONTRACT_ID],[CON_REQ_HH_ID],[CONTRACT_ID],[TOTAL_AMT],[REQDT_ID]) VALUES (@l_CON_REQUEST_CONTRACT_ID,@CDT_CON_REQ_HH_ID,@CDT_CONTRACT_ID,@CDT_TOTAL_AMT,@CDT_REQDT_ID) INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_CON_REQUEST_CONTRACT_ID, 'CON_REQUEST_CONTRACT') IF @@Error <> 0 GOTO ABORT --INSERT INTO @TEMP([KEY],[REF_ID],[TYPE]) VALUES (@CONTRACT_CODE, @l_CONTRACT_ID, 'TR_CONTRACT') FETCH NEXT FROM ListContract_DT INTO @CDT_CONTRACT_ID, @CONTRACT_CODE, @CONTRACT_NAME, @CONTRACT_TYPE, @CDT_BID_ID, @CDT_TOTAL_AMT, @CDT_IS_PARENT, @CDT_REQUEST_ID, @CDT_REQDT_ID END CLOSE ListContract_DT DEALLOCATE ListContract_DT -- ĐÁNH GIÁ NCC DECLARE @CON_REQ_REVIEW_ID VARCHAR(15), @QCKT_REVIEW NVARCHAR(4000), @CONS_PROCESS VARCHAR(15), @MAINTENANCE VARCHAR(15), @REPORT_PLAN_EDIT VARCHAR(15), @CONS_QUALITY VARCHAR(15), @BEAUTY_IMAGE VARCHAR(15), @SUP_NAME NVARCHAR(1000), @HANGHOA_ID VARCHAR(15) FETCH NEXT FROM ListReview into @CON_REQ_REVIEW_ID,@SUP_ID, @QCKT_REVIEW, @CONS_PROCESS, @MAINTENANCE, @REPORT_PLAN_EDIT, @CONS_QUALITY, @BEAUTY_IMAGE, @REQ_ID, @REQ_CODE, @SUP_NAME, @HANGHOA_ID WHILE @@FETCH_STATUS = 0 BEGIN EXEC SYS_CodeMasters_Gen 'CON_REQUEST_REVIEW_DT', @CON_REQ_REVIEW_ID out IF @CON_REQ_REVIEW_ID='' OR @CON_REQ_REVIEW_ID IS NULL GOTO ABORT INSERT INTO [dbo].[CON_REQUEST_REVIEW_DT] ( [CON_REQ_REVIEW_ID], [SUP_ID], [CONS_PROCESS], [MAINTENANCE], [REPORT_PLAN_EDIT], [CONS_QUALITY], [BEAUTY_IMAGE], [CONSTRUCT_ID], [QCKT_REVIEW], [SUP_NAME], [REQ_CODE], [REQ_ID], [HANGHOA_ID] ) VALUES ( @CON_REQ_REVIEW_ID, @SUP_ID, @CONS_PROCESS, @MAINTENANCE, @REPORT_PLAN_EDIT, @CONS_QUALITY, @BEAUTY_IMAGE, @l_CONSTRUCT_ID, @QCKT_REVIEW, @SUP_NAME, @REQ_CODE, @REQ_ID, @HANGHOA_ID ) INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@CON_REQ_REVIEW_ID, 'CON_REQUEST_REVIEW_DT') FETCH NEXT FROM ListReview INTO @CON_REQ_REVIEW_ID,@SUP_ID, @QCKT_REVIEW, @CONS_PROCESS, @MAINTENANCE, @REPORT_PLAN_EDIT, @CONS_QUALITY, @BEAUTY_IMAGE, @REQ_ID, @REQ_CODE, @SUP_NAME, @HANGHOA_ID END CLOSE ListReview DEALLOCATE ListReview -- TIẾN ĐỘ CÔNG TRÌNH DECLARE @CON_REQ_PROCESS_ID VARCHAR(15), @DATE_REPORT VARCHAR(50), @PERCENT_COMPLETED DECIMAL(18,2), @PERCENT_REMAIN DECIMAL(18,2), @DEADLINE VARCHAR(50), @ITEM_JOB NVARCHAR(MAX), @NOTES NVARCHAR(MAX), @DEADLINE_CON VARCHAR(50) FETCH NEXT FROM ListConsProcess into @CON_REQ_PROCESS_ID,@DATE_REPORT, @PERCENT_COMPLETED, @PERCENT_REMAIN, @DEADLINE, @ITEM_JOB, @NOTES, @DEADLINE_CON WHILE @@FETCH_STATUS = 0 BEGIN EXEC SYS_CodeMasters_Gen 'CON_REQUEST_PROCESS_DT', @CON_REQ_PROCESS_ID out IF @CON_REQ_PROCESS_ID='' OR @CON_REQ_PROCESS_ID IS NULL GOTO ABORT INSERT INTO [dbo].[CON_REQUEST_PROCESS_DT] ( [CON_REQ_PROCESS_ID], [DATE_REPORT], [PERCENT_COMPLETED], [PERCENT_REMAIN], [DEADLINE], [CONSTRUCT_ID], [ITEM_JOB], [NOTES], [DEADLINE_CON] ) VALUES ( @CON_REQ_PROCESS_ID, CONVERT(DATETIME, @DATE_REPORT, 103), @PERCENT_COMPLETED, @PERCENT_REMAIN, CASE WHEN @DEADLINE IS NULL OR @DEADLINE = '' THEN NULL ELSE CONVERT(DATETIME, @DEADLINE, 103) END, @l_CONSTRUCT_ID, @ITEM_JOB, @NOTES, CASE WHEN @DEADLINE_CON IS NULL OR @DEADLINE_CON = '' THEN NULL ELSE CONVERT(DATETIME, @DEADLINE_CON, 103) END ) INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@CON_REQ_PROCESS_ID, 'CON_REQUEST_PROCESS_DT') FETCH NEXT FROM ListConsProcess INTO @CON_REQ_PROCESS_ID,@DATE_REPORT, @PERCENT_COMPLETED, @PERCENT_REMAIN, @DEADLINE, @ITEM_JOB, @NOTES, @DEADLINE_CON END CLOSE ListConsProcess DEALLOCATE ListConsProcess -- start hieuhm 09/11/2022 thêm lịch sử xử lí INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @l_CONSTRUCT_ID, 'INS', @p_MAKER_ID, GETDATE(), N'Tạo mới công trình thành công' , N'Đơn vị tạo mới công trình' ) -- end hieuhm 09/11/2022 thêm lịch sử xử lí COMMIT TRANSACTION BEGIN SELECT '0' as Result, @l_CONSTRUCT_ID CONSTRUCT_ID, [REF_ID], [TYPE], '' ErrorDesc FROM @TEMP RETURN '0' END ABORT: BEGIN CLOSE ListRequestDoc DEALLOCATE ListRequestDoc CLOSE ListConsProcess DEALLOCATE ListConsProcess CLOSE ListReview DEALLOCATE ListReview CLOSE ListContract_DT DEALLOCATE ListContract_DT CLOSE ListHH DEALLOCATE ListHH ROLLBACK TRANSACTION SELECT '-1' as Result, @l_CONSTRUCT_ID CONSTRUCT_ID, '' [REF_ID], '' [TYPE], @sErrorCode ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[DB_STATUS_ASSET_STATUS_PIE]' GO -- BIEU DO O1 TINH TRANG TAI SAN ALTER PROC [dbo].[DB_STATUS_ASSET_STATUS_PIE] @p_USER_LOGIN VARCHAR(250) = NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_YEAR VARCHAR(15) = NULL AS BEGIN --DECLARE @DEP_ID_LOG VARCHAR(15) =(SELECT DEP_ID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --DECLARE @BRN_ID_LOG VARCHAR(15) =(SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --DECLARE @DEP_ID_LOGIN VARCHAR(15), @DEP_GROUP VARCHAR(15),@p_BRANCH_LOGIN VARCHAR(15) --SET @DEP_ID_LOGIN =(SELECT DEP_ID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --SET @DEP_GROUP =(SELECT GROUP_ID FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID_LOGIN) --SET @p_BRANCH_LOGIN =(SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --DECLARE @TABLE_ROLE TABLE (ROLENAME NVARCHAR(100)) --DECLARE @USERID INT --SET @USERID =(SELECT ID FROM TL_USER WHERE TLNANME = 'tscd_hoiso'@p_USER_LOGIN) ----- --INSERT INTO @TABLE_ROLE SELECT B.DisplayName FROM AbpUserRoles A -- INNER JOIN ABPROLES B ON A.RoleId = B.Id -- WHERE A.UserId = '13922'@USERID --DECLARE @tmp TABLE(BRANCH_ID VARCHAR(15)) --DECLARE @tmp_DEP TABLE(DEP_ID VARCHAR(15)) --INSERT INTO @tmp_DEP SELECT @DEP_ID_LOGIN --IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Admin')) --BEGIN -- insert into @tmp SELECT BRANCH_ID FROM [dbo].CM_BRANCH -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT --END ----- KIEM TRA NEU STAFF THI CHI THAY DEP_ID CUA MINH --IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Staff') OR @p_USER_LOGIN ='' OR @p_USER_LOGIN IS NULL) --BEGIN -- DELETE FROM @tmp -- INSERT INTO @tmp SELECT @p_BRANCH_LOGIN -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE GROUP_ID =@DEP_GROUP -- --SET @p_BRANCH_ID =@p_BRANCH_LOGIN --END --IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Manager') OR @p_USER_LOGIN ='' OR @p_USER_LOGIN IS NULL) --BEGIN -- DELETE FROM @tmp -- INSERT INTO @tmp SELECT BRANCH_ID FROM CM_BRANCH -- --SET @p_BRANCH_ID =@p_BRANCH_LOGIN -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE BRANCH_ID =@p_BRANCH_LOGIN -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE GROUP_ID =@DEP_GROUP --END -----END CAU HINH WORKFLOW ----- TIENLEE 03/03/2022 -- USING = DKH, CKH -- INVENTORY = VNM -- COLLECT = DTL, KHX, KKH DECLARE @RESULT TABLE ( AMORT_STATUS VARCHAR(15), TOTAL_COUNT FLOAT ) INSERT INTO @RESULT SELECT A.AMORT_STATUS AS AMORT_STATUS, COUNT(A.AMORT_STATUS) AS TOTAL_COUNT FROM ASS_MASTER A WHERE 1=1 --AND (A.AMORT_STATUS = 'DKH' OR A.AMORT_STATUS = 'CKH' OR A.AMORT_STATUS = 'VNM' --OR (A.AMORT_STATUS <> 'DKH' OR A.AMORT_STATUS <> 'CKH' OR A.AMORT_STATUS <> 'VNM')) --AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') --AND (YEAR(A.BUY_DATE_KT) = @p_YEAR OR @p_YEAR IS NULL OR @p_YEAR = '' ) GROUP BY A.AMORT_STATUS ------------- Tài sản chờ thu hồi----------------------------- DECLARE @TOTAL_COUNT_CTH INT = 0 SELECT @TOTAL_COUNT_CTH = COUNT(*) FROM ASS_MASTER A INNER JOIN ASS_COLLECT_MULTI_DT B ON A.ASSET_ID = B.ASSET_ID INNER JOIN ASS_COLLECT_MULTI_MASTER C ON B.COL_MULTI_MASTER_ID = C.COL_MULTI_MASTER_ID WHERE C.AUTH_STATUS_KT <> 'A' AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (YEAR(A.BUY_DATE_KT) = @p_YEAR OR @p_YEAR IS NULL OR @p_YEAR = '' ) ------------- Tài sản chờ thu hồi----------------------------- ------------- Tài sản đang sử dụng----------------------------- DECLARE @TOTAL_COUNT_DSD INT = 0 SELECT @TOTAL_COUNT_DSD = SUM(TOTAL_COUNT) FROM @RESULT WHERE AMORT_STATUS IN ('KHX','DKH','CKH','NKH','KKH') ------------- Tài sản đang sử dụng----------------------------- ------------- Tài sản tồn kho----------------------------- DECLARE @TOTAL_COUNT_TK INT = 0 SELECT @TOTAL_COUNT_TK = SUM(TOTAL_COUNT) FROM @RESULT WHERE AMORT_STATUS IN ('VNM') ------------- Tài sản tồn kho----------------------------- DELETE FROM @RESULT INSERT INTO @RESULT( AMORT_STATUS, TOTAL_COUNT) VALUES('CTH', @TOTAL_COUNT_CTH) INSERT INTO @RESULT( AMORT_STATUS, TOTAL_COUNT) VALUES('DSD', @TOTAL_COUNT_DSD) INSERT INTO @RESULT( AMORT_STATUS, TOTAL_COUNT) VALUES('TK', @TOTAL_COUNT_TK) -------Chuyển từ số lượng sang % ------------- DECLARE @SUM_TOTAL_COUNT INT = 0 SELECT @SUM_TOTAL_COUNT = SUM(TOTAL_COUNT) FROM @RESULT UPDATE @RESULT SET TOTAL_COUNT = ROUND(TOTAL_COUNT * 100 / @SUM_TOTAL_COUNT, 2) -------Chuyển từ số lượng sang % ------------- SELECT * FROM @RESULT ------------------------ END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[DB_STATUS_ASSET_QUANTITY_PIE]' GO -- BIEU DO O1 TINH TRANG TAI SAN ALTER PROC [dbo].[DB_STATUS_ASSET_QUANTITY_PIE] @p_USER_LOGIN VARCHAR(250) = NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_YEAR VARCHAR(15) = NULL AS BEGIN --DECLARE @DEP_ID_LOG VARCHAR(15) =(SELECT DEP_ID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --DECLARE @BRN_ID_LOG VARCHAR(15) =(SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --DECLARE @DEP_ID_LOGIN VARCHAR(15), @DEP_GROUP VARCHAR(15),@p_BRANCH_LOGIN VARCHAR(15) --SET @DEP_ID_LOGIN =(SELECT DEP_ID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --SET @DEP_GROUP =(SELECT GROUP_ID FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID_LOGIN) --SET @p_BRANCH_LOGIN =(SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --DECLARE @TABLE_ROLE TABLE (ROLENAME NVARCHAR(100)) --DECLARE @USERID INT --SET @USERID =(SELECT ID FROM TL_USER WHERE TLNANME = 'tscd_hoiso'@p_USER_LOGIN) ----- --INSERT INTO @TABLE_ROLE SELECT B.DisplayName FROM AbpUserRoles A -- INNER JOIN ABPROLES B ON A.RoleId = B.Id -- WHERE A.UserId = '13922'@USERID --DECLARE @tmp TABLE(BRANCH_ID VARCHAR(15)) --DECLARE @tmp_DEP TABLE(DEP_ID VARCHAR(15)) --INSERT INTO @tmp_DEP SELECT @DEP_ID_LOGIN --IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Admin')) --BEGIN -- insert into @tmp SELECT BRANCH_ID FROM [dbo].CM_BRANCH -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT --END ----- KIEM TRA NEU STAFF THI CHI THAY DEP_ID CUA MINH --IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Staff') OR @p_USER_LOGIN ='' OR @p_USER_LOGIN IS NULL) --BEGIN -- DELETE FROM @tmp -- INSERT INTO @tmp SELECT @p_BRANCH_LOGIN -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE GROUP_ID =@DEP_GROUP -- --SET @p_BRANCH_ID =@p_BRANCH_LOGIN --END --IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Manager') OR @p_USER_LOGIN ='' OR @p_USER_LOGIN IS NULL) --BEGIN -- DELETE FROM @tmp -- INSERT INTO @tmp SELECT BRANCH_ID FROM CM_BRANCH -- --SET @p_BRANCH_ID =@p_BRANCH_LOGIN -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE BRANCH_ID =@p_BRANCH_LOGIN -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE GROUP_ID =@DEP_GROUP --END -----END CAU HINH WORKFLOW ----- TIENLEE 03/03/2022 -- USING = DKH, CKH -- INVENTORY = VNM -- COLLECT = DTL, KHX, KKH DECLARE @RESULT TABLE ( TYPE_ID VARCHAR(15), TOTAL_COUNT FLOAT ) INSERT INTO @RESULT SELECT A.TYPE_ID AS TYPE_ID, COUNT(A.TYPE_ID) AS TOTAL_COUNT FROM ASS_MASTER A WHERE 1=1 AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') AND (YEAR(A.BUY_DATE_KT) = @p_YEAR OR @p_YEAR IS NULL OR @p_YEAR = '' ) GROUP BY A.TYPE_ID ------------------------ -------Chuyển từ số lượng sang % ------------- DECLARE @SUM_TOTAL_COUNT INT = 0 SELECT @SUM_TOTAL_COUNT = SUM(TOTAL_COUNT) FROM @RESULT UPDATE @RESULT SET TOTAL_COUNT = ROUND(TOTAL_COUNT * 100 / @SUM_TOTAL_COUNT, 2) -------Chuyển từ số lượng sang % ------------- SELECT * FROM @RESULT END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_CAR_Upd]' GO ALTER PROC [dbo].[TR_REQUEST_CAR_Upd] @p_REQ_ID varchar(15) =NULL, @p_REQ_CODE varchar(150) = NULL, @p_EMP_ID varchar(15) = NULL, @p_BRANCH_ID varchar(15) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_DEP_ID varchar(15) = NULL, @p_DEP_CREATE varchar(15) = NULL, @p_ORIGN nvarchar(100) = NULL, @p_DESTINATION nvarchar(100) = NULL, @p_IS_SEND_APPR varchar(15) = NULL, @p_SEND_APPR_DT varchar(20) = NULL, @p_SIGN_USER varchar(15) = NULL, @p_SIGN_DT varchar(20) = NULL, @p_FROM_DATE varchar(20) = NULL, @p_REQ_DT varchar(20) = NULL, @p_TO_DATE varchar(20) = NULL, @p_NOTES nvarchar(MAX) = NULL, @p_CAR_ID varchar(15) = NULL, @p_DRIVER_ID varchar(15) = NULL, @p_DRIVER_PHONE varchar(15) = NULL, @p_QUANTITY_TRIP int = NULL, @p_NOTES_TRIP nvarchar(MAX) = NULL, @p_UNIT_TRIP varchar(5) = NULL, @p_TO_TRIP nvarchar(100) = NULL, @p_FROM_TRIP nvarchar(100) = NULL, @p_MILRAGE_TRIP int = NULL, @p_START_TIME_TRIP varchar(20) = NULL, @p_QUANTITY_RETURN_TRIP int = NULL, @p_NOTES_RETURN_TRIP varchar(MAX) = NULL, @p_UNIT_RETURN_TRIP varchar(5) = NULL, @p_TO_RETURN_TRIP nvarchar(100) = NULL, @p_FROM_RETURN_TRIP nvarchar(100) = NULL, @p_MILRAGE_RETURN_TRIP int = NULL, @p_START_TIME_RETURN_TRIP varchar(20) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_APPROVE_DT varchar(20) = NULL, @p_CREATE_DT varchar(20) = NULL, @p_MAKER_ID varchar(20) = NULL, @p_MAKER_PHONE varchar(15) = NULL, @p_ListCarDT xml, @p_USER_LOGIN varchar(20) = NULL, @p_USER_UPDATE varchar(20) = NULL, @p_IS_CHANGE_USER_UPD varchar(20) = NULL, @p_N_PLATE varchar(20) = NULL, @p_MO_NAME varchar(20) = NULL, @p_LAST_BALANCE decimal(18,2)= NULL, @p_FIRST_BALANCE decimal(18,2)= NULL, @p_CURRENT_POWER_RATE decimal(18,2)= NULL, @p_POWER_RATE decimal(18,2)= NULL, @p_ListFuel xml, @p_IS_CONTRACT_CAR varchar(1) = NULL, @p_OLD_FUEL_NUMBER DECIMAL(18,2) = NULL AS BEGIN TRANSACTION IF NOT EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID <> @p_REQ_ID) BEGIN SELECT '0' Result, '' REQ_ID, N'Mã phiếu yêu cầu xe chưa tồn tại trong hệ thống' ErrorDesc RETURN '0' END DECLARE @IS_SEND_APPR VARCHAR(1),@AUTH_STATUS VARCHAR(1),@IS_CV BIT,@PROCESS_CURR VARCHAR(15), @IS_USER_UPD BIT SET @IS_CV = ISNULL((SELECT TOP(1) 1 FROM dbo.TL_USER_GET_ROLES (@p_USER_LOGIN)fgubr WHERE fgubr.ROLE_ID='CVDDX'),0) SET @IS_USER_UPD = ISNULL((SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID =@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN),0) IF(EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID IN ('REJECT','INSERT'))) BEGIN UPDATE TR_REQUEST_CAR SET EMP_ID=@p_EMP_ID,MAKER_PHONE=@p_MAKER_PHONE,BRANCH_ID=@p_BRANCH_ID,DEP_ID=@p_DEP_ID,ORIGN=@p_ORIGN,DESTINATION=@p_DESTINATION,AUTH_STATUS='U',REQ_DT=CONVERT(DATETIME,@p_REQ_DT,104),IS_SEND_APPR='N',FROM_DATE=CONVERT(DATETIME,@p_FROM_DATE,104),TO_DATE=CONVERT(DATETIME,@p_TO_DATE,104),NOTES=@p_NOTES, QUANTITY_TRIP=@p_QUANTITY_TRIP,NOTES_TRIP=@p_NOTES_TRIP,UNIT_TRIP=@p_UNIT_TRIP,TO_TRIP=@p_TO_TRIP,FROM_TRIP=@p_FROM_TRIP,START_TIME_TRIP=CONVERT(DATETIME,@p_START_TIME_TRIP, 104) WHERE REQ_ID =@p_REQ_ID SET @IS_SEND_APPR='N' SET @AUTH_STATUS='U' DELETE PL_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE' INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'UPDATE',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),104),N'Cập nhật PYC xe thành công',N'Cập nhật PYC xe' ) END ELSE IF(@IS_CV=1 OR @IS_USER_UPD=1) BEGIN -- update master UPDATE dbo.TR_REQUEST_CAR SET CAR_ID=@p_CAR_ID,DRIVER_ID=@p_DRIVER_ID,DRIVER_PHONE=@p_DRIVER_PHONE,QUANTITY_TRIP=@p_QUANTITY_TRIP,NOTES_TRIP=@p_NOTES_TRIP,UNIT_TRIP=@p_UNIT_TRIP,TO_TRIP=@p_TO_TRIP,FROM_TRIP=@p_FROM_TRIP,MILRAGE_TRIP=@p_MILRAGE_TRIP,START_TIME_TRIP=CONVERT(DATETIME, @p_START_TIME_TRIP, 104),MO_NAME=@p_MO_NAME,N_PLATE=@p_N_PLATE, QUANTITY_RETURN_TRIP=@p_QUANTITY_RETURN_TRIP,NOTES_RETURN_TRIP=@p_NOTES_RETURN_TRIP,UNIT_RETURN_TRIP=@p_UNIT_RETURN_TRIP,TO_RETURN_TRIP=@p_TO_RETURN_TRIP,FROM_RETURN_TRIP=@p_FROM_RETURN_TRIP,MILRAGE_RETURN_TRIP=@p_MILRAGE_RETURN_TRIP,START_TIME_RETURN_TRIP=CONVERT(DATETIME, @p_START_TIME_RETURN_TRIP, 104), IS_CONTRACT_CAR=@p_IS_CONTRACT_CAR,AUTH_STATUS='U',POWER_RATE=@p_POWER_RATE,FIRST_BALANCE=@p_FIRST_BALANCE,LAST_BALANCE=@p_LAST_BALANCE,CURRENT_POWER_RATE=@p_CURRENT_POWER_RATE,USER_UPDATE = @p_USER_UPDATE,OLD_FUEL_NUMBER=@p_OLD_FUEL_NUMBER WHERE REQ_ID=@p_REQ_ID IF @@Error <> 0 GOTO ABORT DELETE FROM dbo.TR_REQUEST_CAR_DETAIL WHERE REQ_ID = @p_REQ_ID DELETE FROM dbo.TR_REQ_CAR_FUEL WHERE REQ_ID = @p_REQ_ID -- LƯỚI CẬP NHẬT CHI PHÍ DECLARE @lstCDT TABLE( REQ_DT_ID VARCHAR(15), REQ_ID VARCHAR(15), FEE_TYPE NVARCHAR(100), AMOUNT decimal(18, 0), QUANTITY decimal(18, 2), NOTES NVARCHAR(MAX), UNIT NVARCHAR(20) ) DECLARE @doc INT Exec sp_xml_preparedocument @doc Output,@p_ListCarDT INSERT INTO @lstCDT SELECT * FROM OPENXML(@doc,'/Root/ListCarDetail',2) WITH ( REQ_DT_ID VARCHAR(15), REQ_ID VARCHAR(15), FEE_TYPE NVARCHAR(100), AMOUNT decimal(18, 0), QUANTITY decimal(18, 2), NOTES NVARCHAR(MAX), UNIT NVARCHAR(20) ) DECLARE CarDTCur CURSOR FOR SELECT REQ_DT_ID,REQ_ID,QUANTITY,FEE_TYPE,AMOUNT,NOTES,UNIT FROM @lstCDT OPEN CarDTCur DECLARE @pl_REQ_DT_ID VARCHAR(15), @pl_REQ_ID VARCHAR(15), @pl_FEE_TYPE NVARCHAR(100), @pl_QUANTITY decimal(18, 2), @pl_AMOUNT decimal(18, 0), @pl_NOTES NVARCHAR(MAX), @pl_UNIT NVARCHAR(20) FETCH NEXT FROM CarDTCur INTO @pl_REQ_DT_ID,@pl_REQ_ID,@pl_QUANTITY,@pl_FEE_TYPE,@pl_AMOUNT,@pl_NOTES,@pl_UNIT WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_CarDT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_CAR_DETAIL', @l_CarDT_ID out IF @l_CarDT_ID='' OR @l_CarDT_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQUEST_CAR_DETAIL ( REQ_DT_ID,REQ_ID,QUANTITY,FEE_TYPE,AMOUNT,NOTES,UNIT ) VALUES ( @l_CarDT_ID,@p_REQ_ID,@pl_QUANTITY,@pl_FEE_TYPE,@pl_AMOUNT,@pl_NOTES,@pl_UNIT ) IF @@ERROR <> 0 GOTO ABORT1 FETCH NEXT FROM CarDTCur INTO @pl_REQ_DT_ID,@pl_REQ_ID,@pl_QUANTITY,@pl_FEE_TYPE,@pl_AMOUNT,@pl_NOTES,@pl_UNIT END CLOSE CarDTCur DEALLOCATE CarDTCur --lưới nhiên liệu DECLARE @lstNL TABLE( [FUEL_ID] VARCHAR(20), [REQ_ID] VARCHAR(20), [REFUEL_DATE] VARCHAR(20), [NUMBER_LITERS] decimal(18, 2), [NOTES] NVARCHAR(MAX), [AMOUNT] DECIMAL(18,0) ) Exec sp_xml_preparedocument @doc Output,@p_ListFuel INSERT INTO @lstNL SELECT * FROM OPENXML(@doc,'/Root/ListFuel',2) WITH ( FUEL_ID VARCHAR(20), REQ_ID VARCHAR(20), REFUEL_DATE VARCHAR(20), NUMBER_LITERS decimal(18, 2), NOTES NVARCHAR(MAX), AMOUNT DECIMAL(18,0) ) DECLARE NLCur CURSOR FOR SELECT REFUEL_DATE,NUMBER_LITERS,[NOTES],AMOUNT FROM @lstNL OPEN NLCur DECLARE @pl_REFUEL_DATE VARCHAR(20), @pl_NUMBER_LITERS decimal(18, 2), @AMOUNT DECIMAL(18,0) FETCH NEXT FROM NLCur INTO @pl_REFUEL_DATE,@pl_NUMBER_LITERS,@pl_NOTES,@AMOUNT WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_FUEL_ID VARCHAR(20) EXEC SYS_CodeMasters_Gen 'TR_REQ_CAR_FUEL', @l_FUEL_ID out IF @l_FUEL_ID='' OR @l_FUEL_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQ_CAR_FUEL ( [FUEL_ID],[REFUEL_DATE],[NUMBER_LITERS],[REQ_ID],[NOTES],[AMOUNT] ) VALUES ( @l_FUEL_ID,CONVERT(DATETIME,@pl_REFUEL_DATE,103),@pl_NUMBER_LITERS,@p_REQ_ID,@pl_NOTES,@AMOUNT ) IF @@ERROR <> 0 GOTO ABORT1 FETCH NEXT FROM NLCur INTO @pl_REFUEL_DATE,@pl_NUMBER_LITERS,@pl_NOTES,@AMOUNT END CLOSE NLCur DEALLOCATE NLCur SET @PROCESS_CURR = (SELECT PROCESS_ID FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID) IF(NOT EXISTS(SELECT 1 FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN)) BEGIN UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET TLNAME=@p_USER_UPDATE WHERE TYPE_JOB='XL' AND REQ_ID=@p_REQ_ID END -- Người cập nhật là chuyên viên -- Khi người cập nhật không phải chuyên viên update phiếu CV chưa gửi phiếu cho tài xế IF(@IS_CV=1 AND (@p_IS_CHANGE_USER_UPD=1 OR NOT EXISTS (SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_UPDATE) WHERE ROLE_ID='CVDDX')) --@p_USER_UPDATE NOT IN (SELECT ca.CDVAL FROM CM_ALLCODE ca WHERE ca.CDNAME='REQCAR')) AND @PROCESS_CURR NOT IN ('CVINFO_UPD','USER_SEND','CVCOSTUPD','COSTREJECT','CVREJUPD')) BEGIN UPDATE TR_REQUEST_CAR SET PROCESS_ID='CV_XL' WHERE REQ_ID=@p_REQ_ID IF @@Error <> 0 GOTO ABORT SET @PROCESS_CURR ='CV_XL' DELETE FROM PL_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='UPDATE' INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'UPDATE',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),104),N'Chuyên viên điều động xe cập nhật thông tin xe thành công',N'Chuyên viên điều động xe cập nhật thông tin xe' ) END ELSE IF(@IS_USER_UPD=1 AND @PROCESS_CURR IN ('CV_SEND','MAKER_REJ','MAKER_CONF','CV_REJECT')) --ELSE IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN AND PROCESS_ID IN('CV_SEND','USER_UPD','MAKER_REJ','MAKER_CONF','CV_REJECT'))) BEGIN -- UPDATE TR_REQUEST_CAR -- SET PROCESS_ID='USER_UPD' -- WHERE REQ_ID=@p_REQ_ID -- DECLARE @LSTREQCAR TABLE(REQ_ID VARCHAR(20),REQ_CODE VARCHAR(20),PROCESS_ID VARCHAR(15),START_TIME_TRIP DATETIME) -- INSERT INTO @LSTREQCAR -- SELECT REQ_ID,REQ_CODE,PROCESS_ID,A.START_TIME_TRIP -- FROM dbo.TR_REQUEST_CAR A -- LEFT JOIN (SELECT N_PLATE,START_TIME_TRIP FROM TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_ID) tmp ON A.N_PLATE = tmp.N_PLATE -- WHERE DATEDIFF(second,A.START_TIME_TRIP, tmp.START_TIME_TRIP)>0 AND REQ_ID<>@p_REQ_ID AND AUTH_STATUS='U' -- ORDER BY START_TIME_TRIP DESC --IF(EXISTS(SELECT 1 FROM @LSTREQCAR WHERE PROCESS_ID IN('USER_UPD','CV_SEND'))) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' Result, N'Lưu thất bại! Vui lòng xử lý PYC xe số: '+ -- (SELECT TOP(1)REQ_CODE FROM @LSTREQCAR WHERE PROCESS_ID IN('USER_UPD','CV_SEND') ORDER BY START_TIME_TRIP)+N' trước' ErrorDesc -- RETURN '-1' --END -- DECLARE @MILRAGE_RETURN_TRIP_OLD INT, @REQ_CODE_OLD VARCHAR(20) -- SELECT TOP(1) @MILRAGE_RETURN_TRIP_OLD = trc.MILRAGE_RETURN_TRIP, @REQ_CODE_OLD =trc.REQ_CODE FROM TR_REQUEST_CAR trc WHERE trc.N_PLATE = @p_N_PLATE AND trc.START_TIME_TRIP<@p_START_TIME_TRIP -- IF(@MILRAGE_RETURN_TRIP_OLD>@p_MILRAGE_RETURN_TRIP) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' Result, N'Lưu thất bại! Số KM hiện tại về nhỏ hơn phiếu yêu cầu xe số: '+ -- @REQ_CODE_OLD + '('+@MILRAGE_RETURN_TRIP_OLD+')' ErrorDesc -- RETURN '-1' --END DELETE FROM PL_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='UPDATE' INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'UPDATE',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),N'Tài xế cập nhật thông tin xe thành công',N'Tài xế cập nhật thông tin xe' ) END ELSE IF(@IS_CV=1 AND @PROCESS_CURR ='USER_SEND') BEGIN -- UPDATE TR_REQUEST_CAR -- SET PROCESS_ID='CVCOSTUPD' -- WHERE REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'UPDATE',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),N'Chuyên viên điều động xe cập nhật chi phí thành công',N'Chuyên viên điều động xe cập nhật chi phí' ) END ELSE IF(@IS_CV=1 AND @PROCESS_CURR = 'COSTREJECT') BEGIN UPDATE TR_REQUEST_CAR SET PROCESS_ID='CVREJUPD' WHERE REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'CVREJUPD',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),N'Chuyên viên điều động xe cập nhật thông tin thành công',N'Chuyên viên điều động xe cập nhật thông tin' ) END END COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_ID REQ_ID,@IS_SEND_APPR AS IS_SEND_APPR,@AUTH_STATUS AS AUTH_STATUS, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_ID, '' ErrorDesc RETURN '-1' END ABORT1: BEGIN CLOSE CarDTCur DEALLOCATE CarDTCur ROLLBACK TRANSACTION SELECT '-1' AS RESULT RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[DB_AMORT_ASSET_PIE]' GO -- BIEU DO O2 KHAU HAO TAI SAN ALTER PROC [dbo].[DB_AMORT_ASSET_PIE] @p_USER_LOGIN VARCHAR(250) = NULL, @p_TYPE_ID VARCHAR(5) = NULL, -- TSCD, CCLD, ALL='' @p_GROUP_ID VARCHAR(15) = NULL, -- ALL='' @p_BRANCH_ID VARCHAR(15) = NULL, -- ALL='' @p_YEAR VARCHAR(4) = NULL AS BEGIN --DECLARE @DEP_ID_LOG VARCHAR(15) =(SELECT DEP_ID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --DECLARE @BRN_ID_LOG VARCHAR(15) =(SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --DECLARE @DEP_ID_LOGIN VARCHAR(15), @DEP_GROUP VARCHAR(15),@p_BRANCH_LOGIN VARCHAR(15) --SET @DEP_ID_LOGIN =(SELECT DEP_ID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --SET @DEP_GROUP =(SELECT GROUP_ID FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID_LOGIN) --SET @p_BRANCH_LOGIN =(SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) --DECLARE @TABLE_ROLE TABLE (ROLENAME NVARCHAR(100)) --DECLARE @USERID INT --SET @USERID =(SELECT ID FROM TL_USER WHERE TLNANME = 'tscd_hoiso'@p_USER_LOGIN) ----- --INSERT INTO @TABLE_ROLE SELECT B.DisplayName FROM AbpUserRoles A -- INNER JOIN ABPROLES B ON A.RoleId = B.Id -- WHERE A.UserId = '13922'@USERID --DECLARE @tmp TABLE(BRANCH_ID VARCHAR(15)) --DECLARE @tmp_DEP TABLE(DEP_ID VARCHAR(15)) --INSERT INTO @tmp_DEP SELECT @DEP_ID_LOGIN --IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Admin')) --BEGIN -- insert into @tmp SELECT BRANCH_ID FROM [dbo].CM_BRANCH -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT --END ----- KIEM TRA NEU STAFF THI CHI THAY DEP_ID CUA MINH --IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Staff') OR @p_USER_LOGIN ='' OR @p_USER_LOGIN IS NULL) --BEGIN -- DELETE FROM @tmp -- INSERT INTO @tmp SELECT @p_BRANCH_LOGIN -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE GROUP_ID =@DEP_GROUP -- --SET @p_BRANCH_ID =@p_BRANCH_LOGIN --END --IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLENAME ='Manager') OR @p_USER_LOGIN ='' OR @p_USER_LOGIN IS NULL) --BEGIN -- DELETE FROM @tmp -- INSERT INTO @tmp SELECT BRANCH_ID FROM CM_BRANCH -- --SET @p_BRANCH_ID =@p_BRANCH_LOGIN -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE BRANCH_ID =@p_BRANCH_LOGIN -- INSERT INTO @tmp_DEP SELECT DEP_ID FROM CM_DEPARTMENT WHERE GROUP_ID =@DEP_GROUP --END -----END CAU HINH WORKFLOW ----- TIENLEE 03/03/2022 -- END AMORT = KHX DECLARE @RESULT TABLE ( AMORT_STATUS VARCHAR(15), TOTAL_COUNT FLOAT ) INSERT INTO @RESULT SELECT A.AMORT_STATUS AS AMORT_STATUS, COUNT(A.AMORT_STATUS) AS TOTAL_COUNT FROM ASS_MASTER A WHERE 1=1 AND (A.AMORT_STATUS = 'DKH' OR A.AMORT_STATUS = 'CKH' OR A.AMORT_STATUS = 'KHX') --AND (A.AMORT_STATUS = 'DKH' OR A.AMORT_STATUS = 'CKH' OR A.AMORT_STATUS = 'VNM' OR (A.AMORT_STATUS <> 'DKH' OR A.AMORT_STATUS <> 'CKH' OR A.AMORT_STATUS <> 'VNM')) 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.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='') AND (YEAR(A.BUY_DATE_KT) <= CAST(@p_YEAR AS INT) OR CAST(@p_YEAR AS INT) IS NULL OR CAST(@p_YEAR AS INT) = '' ) GROUP BY A.AMORT_STATUS -------Chuyển từ số lượng sang % ------------- DECLARE @SUM_TOTAL_COUNT INT = 0 SELECT @SUM_TOTAL_COUNT = SUM(TOTAL_COUNT) FROM @RESULT UPDATE @RESULT SET TOTAL_COUNT = ROUND(TOTAL_COUNT * 100 / @SUM_TOTAL_COUNT, 2) -------Chuyển từ số lượng sang % ------------- SELECT * FROM @RESULT ------------------------ END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_CAR_SendApp]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_CAR_SendApp] @p_REQ_ID VARCHAR(15) = NULL, @p_USER_LOGIN VARCHAR(15)=NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION DECLARE @p_MESSAGE NVARCHAR(500),@p_Pro_ID VARCHAR(20), @p_Process_ID NVARCHAR(15),@p_REQ_CODE VARCHAR(20) SELECT @p_Pro_ID= PROCESS_ID,@p_REQ_CODE=REQ_CODE FROM TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_ID IF(@p_Pro_ID IN('INSERT','REJECT')) BEGIN IF(EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS='R')) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Phiếu yêu cầu xe số: '+@p_REQ_CODE+ N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại' ErrorDesc RETURN '-1' END UPDATE PL_PROCESS SET PROCESS_ID='UPDATE_NT' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE' DELETE dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='R' IF(EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND IS_SEND_APPR='Y')) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result,'' REQ_CODE, '' REQ_ID, N'Phiếu yêu cầu xe đã được gửi phê duyệt trước đó' ErrorDesc RETURN '-1' END UPDATE TR_REQUEST_CAR SET IS_SEND_APPR = 'Y', SEND_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103),SENDER_ID=@p_USER_LOGIN,AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @p_IS_SEND_APPR VARCHAR(15) = 'Y' DECLARE @DEP_CREATE VARCHAR(15), @BRANCH_CREATE VARCHAR(15) SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_ID SET @p_Process_ID='SEND' -----------------Gửi phê duyệt lên trưởng DV------ SET @p_MESSAGE = N'PYC xe số: ' +@p_REQ_CODE+ N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt' ------Insert vào bảng lịch sử xử lý------------- INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'SEND', @p_USER_LOGIN, GETDATE(), N'Người tạo gửi phê duyệt thành công', N' Người tạo gửi phê duyệt') IF @@ERROR <> 0 GOTO ABORT INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD) VALUES ( @p_REQ_ID,'APPNEW', 'C','GDDV', @BRANCH_CREATE,IIF(@BRANCH_CREATE='DV0001',@DEP_CREATE,''),'',NULL,NULL,'N','', '', N'Chờ trưởng đơn vị phê duyệt',NULL ) END -- ELSE IF(@p_Pro_ID ='CV_SEND' AND EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID =@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN)) -- BEGIN -- SET @p_MESSAGE = N'PYC xe số: ' +ISNULL(@p_REQ_CODE,'')+ -- N' đã được gửi xác nhận thông tin thành công. Vui lòng đợi người tạo xác nhận' -- UPDATE TR_REQUEST_CAR -- SET PROCESS_ID='MAKER_APP' -- WHERE REQ_ID = @p_REQ_ID -- SET @p_Process_ID='MAKER_APP' -- IF @@ERROR <> 0 GOTO ABORT -- -- UPDATE PL_REQUEST_PROCESS SET CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=GETDATE(),IS_HAS_CHILD='1',NOTES=N'Đã điều phối nhân viên lái xe' WHERE ID=@PRO_ID -- -- INSERT INTO dbo.PL_REQUEST_PROCESS -- ( -- REQ_ID, PROCESS_ID, STATUS, ROLE_USER, CHECKER_ID, APPROVE_DT, -- PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD -- ) -- VALUES -- ( -- @p_REQ_ID,'MAKER_APP', 'C','','',CONVERT(DATETIME,GETDATE(),103),'','','', '', -- N'Chờ người tạo xác nhận thông tin','0' -- ) -- INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) -- VALUES(@p_REQ_ID, 'CV_SEND', @p_USER_LOGIN, GETDATE(), -- N'Chuyên viên điều động xe gửi xác nhận chi phí thành công', N' Chuyên viên điều động xe chuyển phiếu cho người tạo') -- END ELSE IF(@p_Pro_ID IN('CVREJUPD','COSTREJECT','CV_XL')) BEGIN DECLARE @p_USER NVARCHAR(50) SELECT @p_USER=B.TLFullName FROM dbo.TR_REQUEST_CAR A JOIN dbo.TL_USER B ON A.USER_UPDATE=B.TLNANME WHERE REQ_ID=@p_REQ_ID IF(@p_USER IS NULL) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Chuyển phiếu thất bại! Bạn cần chọn người nhập thông tin chuyến về' ErrorDesc RETURN '-1' END SET @p_MESSAGE = N'PYC xe số: ' +@p_REQ_CODE+ N' đã được gửi đến tài xế thành công' UPDATE TR_REQUEST_CAR SET PROCESS_ID='CV_SEND' WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT SELECT @p_USER=B.TLFullName FROM dbo.TR_REQUEST_CAR A JOIN dbo.TL_USER B ON A.USER_UPDATE=B.TLNANME WHERE REQ_ID=@p_REQ_ID SET @p_Process_ID='CV_SEND' INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'CV_XL', @p_USER_LOGIN, GETDATE(), N'Chuyên viên điều phối xử lý', N' Nhân viên tiếp nhận '+@p_USER) DECLARE @PRO_ID VARCHAR(20),@USER VARCHAR(50) SELECT @USER=USER_UPDATE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID SELECT @PRO_ID=ID FROM PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='CV_XL' UPDATE PL_REQUEST_PROCESS SET CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=GETDATE(),IS_HAS_CHILD='1',NOTES=N'Đã điều phối nhân viên lái xe' WHERE ID=@PRO_ID DELETE PL_REQUEST_PROCESS_CHILD Where REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD ( REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS ) VALUES ( @p_REQ_ID,@PRO_ID,@p_USER_LOGIN,'CV',1,'P','1' ) INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD ( REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS ) VALUES ( @p_REQ_ID,@PRO_ID,@USER,'XL',2,'C','1' ) END ELSE IF(@p_Pro_ID ='CV_SEND') BEGIN -- DECLARE @N_PLATE VARCHAR(20), @CREATE_DT DATETIME -- DECLARE @LSTREQCAR TABLE(REQ_ID VARCHAR(20),REQ_CODE VARCHAR(20),PROCESS_ID VARCHAR(15),CREATE_DT DATETIME) -- SELECT @N_PLATE=N_PLATE,@CREATE_DT=CREATE_DT FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID -- INSERT INTO @LSTREQCAR -- SELECT REQ_ID,REQ_CODE,PROCESS_ID,CREATE_DT -- FROM dbo.TR_REQUEST_CAR -- WHERE N_PLATE= @N_PLATE AND DATEDIFF(second,CREATE_DT , @CREATE_DT)>0 AND REQ_ID<>@p_REQ_ID AND AUTH_STATUS='U' -- ORDER BY CREATE_DT DESC -- IF(EXISTS(SELECT 1 FROM @LSTREQCAR)) -- BEGIN -- IF(EXISTS(SELECT 1 FROM @LSTREQCAR WHERE PROCESS_ID IN('USER_UPD','CV_SEND'))) -- BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' Result, N'Vui lòng xử lý PYC xe số: '+ -- (SELECT TOP(1)REQ_CODE FROM @LSTREQCAR WHERE PROCESS_ID IN('USER_UPD','CV_SEND') ORDER BY CREATE_DT)+N' trước' ErrorDesc -- RETURN '-1' -- END -- ELSE IF(EXISTS(SELECT TOP(1)REQ_CODE FROM @LSTREQCAR WHERE REQ_ID NOT IN (SELECT A.REQ_ID FROM @LSTREQCAR A JOIN CAR_DRIVE B ON B.REQ_CAR_ID=A.REQ_ID))) -- BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' Result, N'Phiếu yêu cầu xe số : '+ -- (SELECT TOP(1)REQ_CODE FROM @LSTREQCAR WHERE REQ_ID NOT IN (SELECT A.REQ_ID FROM @LSTREQCAR A JOIN CAR_DRIVE B ON B.REQ_CAR_ID=A.REQ_ID))+N' không tồn tại trong thông tin vận hành. Vui lòng thêm mới' ErrorDesc -- RETURN '-1' -- END -- -- ELSE IF(EXISTS(SELECT TOP(1)B.REQ_CODE FROM CAR_DRIVE A JOIN @LSTREQCAR B ON A.REQ_CAR_ID = B.REQ_ID WHERE A.AUTH_STATUS='U')) -- BEGIN -- SELECT * FROM CAR_DRIVE A JOIN @LSTREQCAR B ON A.REQ_CAR_ID = B.REQ_ID WHERE A.AUTH_STATUS='U' -- ROLLBACK TRANSACTION -- SELECT '-1' Result, N'Thông tin vận hành số có mã phiếu yêu cầu : '+ -- (SELECT TOP(1)B.REQ_CODE FROM CAR_DRIVE A JOIN @LSTREQCAR B ON A.REQ_CAR_ID = B.REQ_ID WHERE A.AUTH_STATUS='U')+N' chưa được duyệt' ErrorDesc -- RETURN '-1' -- END -- END DECLARE @USER_UPD VARCHAR(20) SET @USER_UPD = (SELECT TOP(1) 1 FROM TR_REQUEST_CAR WHERE REQ_ID =@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN) DECLARE @ID VARCHAR(20) --Trường hợp chuyên viên thay tài xế cập nhật chuyển phiếu IF(EXISTS(SELECT TOP(1) 1 FROM dbo.TL_USER_GET_ROLES (@p_USER_LOGIN)fgubr WHERE fgubr.ROLE_ID='CVDDX')) BEGIN UPDATE TR_REQUEST_CAR SET PROCESS_ID='MAKER_APP' WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT SET @p_Process_ID='MAKER_APP' UPDATE PL_PROCESS SET PROCESS_ID='USERUPD' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='USER_UPD' SET @p_MESSAGE = N'PYC xe số: ' +@p_REQ_CODE+ N' đã được gửi đến chuyên viên xử lý thành công. Chờ người tạo xác nhận chi phí' UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE REQ_ID=@p_REQ_ID AND STATUS_JOB='C' AND TYPE_JOB='XL' UPDATE PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=GETDATE(),NOTES=N'Chuyên viên điều động xe xử lý thành công' WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='CV_XL' INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'MAKER_APP', 'C',(SELECT MAKER_ID FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID), '','','',NULL,'CV_XL','N','', '', N'Chờ người tạo xác nhận chi phí',0 ) INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'CV_XL', @p_USER_LOGIN, GETDATE(), N'Chuyên viên gửi xác nhận chi phí thành công', N' Chuyên viên gửi xác nhận chi phí') END ELSE BEGIN UPDATE TR_REQUEST_CAR SET PROCESS_ID='USER_SEND' WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT UPDATE PL_PROCESS SET PROCESS_ID='UPDATE_NT' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE' SET @p_MESSAGE = N'PYC xe số: ' +@p_REQ_CODE+ N' đã được gửi đến chuyên viên thành công' SELECT @ID=ID FROM PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='CV_XL' UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE PROCESS_ID=@ID AND STATUS_JOB='C' AND TYPE_JOB='XL' UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C' WHERE PROCESS_ID=@ID AND STATUS_JOB='P' AND TYPE_JOB='CV' SET @p_Process_ID='USER_SEND' INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'USER_SEND', @p_USER_LOGIN, GETDATE(), N'Nhân viên lái xe chuyển phiếu chuyên viên điều động xe thành công', N' Nhân viên lái xe chuyển phiếu chuyên viên điều động xe') END END COMMIT TRANSACTION SELECT '0' AS Result, @p_REQ_ID REQ_ID ,@p_Process_ID PROCESS_ID,@p_IS_SEND_APPR IS_SEND_APPR, @p_MESSAGE ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result, '' REQ_ID ,'' IS_SEND_APPR, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[PL_IMPORT_Upd]' GO ALTER PROCEDURE [dbo].[PL_IMPORT_Upd] @p_IMPORT_ID VARCHAR(20), @p_PLAN_CODE VARCHAR(20), @p_IMP_YEAR INT = NULL, @p_IMP_NAME NVARCHAR(200), @p_FILE_NAME NVARCHAR(200) = NULL, @p_TOTAL_QTY NUMERIC(18,0) = NULL, @p_TOTAL_ATM NUMERIC(18,0) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(20) = NULL, @p_CREATE_DT varchar(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(20) = NULL, @p_APPROVE_DT varchar(20) = NULL, @p_XMLData XML=NULL AS BEGIN TRANSACTION DECLARE @TableTmp TABLE( IMP_YEAR VARCHAR(4), PLAN_TYPE_ID VARCHAR(15), PLAN_TYPE_CODE VARCHAR(15), PLAN_TYPE_NAME NVARCHAR(200), COST_ID VARCHAR(15), COST_CODE VARCHAR(100), COST_NAME NVARCHAR(200), BRANCH_ID VARCHAR(15), BRANCH_CODE VARCHAR(15), BRANCH_NAME NVARCHAR(200), DEP_ID varchar(15), DEP_CODE VARCHAR(15), DEP_NAME NVARCHAR(200), REF_ID INT, REF_CODE VARCHAR(20), REF_NAME NVARCHAR(200), GOOD_ID varchar(15), GOOD_CODE VARCHAR(20), GOOD_NAME NVARCHAR(200), QTY INT, TOTAL_AMT NUMERIC(18,2), NOTES NVARCHAR(1000) ); Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output, @p_XMLData INSERT INTO @TableTmp SELECT * FROM OPENXML(@hDoc,'/Root/XmlData',2) WITH ( IMP_YEAR VARCHAR(4), PLAN_TYPE_ID VARCHAR(15), PLAN_TYPE_CODE VARCHAR(15), PLAN_TYPE_NAME NVARCHAR(200), COST_ID VARCHAR(15), COST_CODE VARCHAR(100), COST_NAME NVARCHAR(200), BRANCH_ID VARCHAR(15), BRANCH_CODE VARCHAR(15), BRANCH_NAME NVARCHAR(200), DEP_ID varchar(15), DEP_CODE VARCHAR(15), DEP_NAME NVARCHAR(200), REF_ID INT, REF_CODE VARCHAR(20), REF_NAME NVARCHAR(200), GOOD_ID varchar(15), GOOD_CODE VARCHAR(20), GOOD_NAME NVARCHAR(200), QTY INT, TOTAL_AMT NUMERIC(18,2), NOTES NVARCHAR(1000) ) DECLARE @YEAR_CURR VARCHAR(4) SET @YEAR_CURR = (SELECT IMP_YEAR FROM dbo.PL_IMPORT WHERE IMPORT_ID=@p_IMPORT_ID) IF(EXISTS(SELECT * FROM @TableTmp WHERE IMP_YEAR <> @YEAR_CURR)) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Cập nhật thất bại, sai năm kế hoạch' ErrorDesc RETURN '-1' END --Update ID UPDATE @TableTmp SET BRANCH_ID=(SELECT TOP 1 BRANCH_ID FROM dbo.CM_BRANCH WHERE dbo.CM_BRANCH.BRANCH_CODE=[@TableTmp].BRANCH_CODE), DEP_ID=(SELECT TOP 1 DEP_ID FROM dbo.CM_DEPARTMENT WHERE dbo.CM_DEPARTMENT.DEP_CODE=[@TableTmp].DEP_CODE), COST_ID=(SELECT TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE dbo.CM_DVDM.DVDM_CODE=[@TableTmp].COST_CODE AND IS_DVDM=1), PLAN_TYPE_ID=(SELECT TOP 1 PLAN_TYPE_ID FROM dbo.CM_PLAN_TYPE WHERE dbo.CM_PLAN_TYPE.PLAN_TYPE_CODE=[@TableTmp].PLAN_TYPE_CODE), GOOD_ID=(SELECT TOP 1 GD_ID FROM dbo.CM_GOODS WHERE dbo.CM_GOODS.GD_CODE=[@TableTmp].GOOD_CODE) -- GIANT UPDATE NAME --Update ID UPDATE @TableTmp SET BRANCH_NAME=(SELECT TOP 1 BRANCH_NAME FROM dbo.CM_BRANCH WHERE dbo.CM_BRANCH.BRANCH_CODE=[@TableTmp].BRANCH_CODE), DEP_NAME=(SELECT TOP 1 DEP_NAME FROM dbo.CM_DEPARTMENT WHERE dbo.CM_DEPARTMENT.DEP_CODE=[@TableTmp].DEP_CODE), COST_NAME=(SELECT TOP 1 DVDM_NAME FROM dbo.CM_DVDM WHERE dbo.CM_DVDM.DVDM_CODE=[@TableTmp].COST_CODE AND IS_DVDM=1 ), PLAN_TYPE_NAME=(SELECT TOP 1 PLAN_TYPE_NAME FROM dbo.CM_PLAN_TYPE WHERE dbo.CM_PLAN_TYPE.PLAN_TYPE_CODE=[@TableTmp].PLAN_TYPE_CODE), GOOD_NAME=(SELECT TOP 1 GD_NAME FROM dbo.CM_GOODS WHERE dbo.CM_GOODS.GD_CODE=[@TableTmp].GOOD_CODE) DECLARE @Error NVARCHAR(MAX) --- Validate dữ liệu IF(EXISTS(SELECT BRANCH_ID FROM @TableTmp WHERE BRANCH_ID IS NULL OR BRANCH_ID='')) BEGIN SET @Error=(select STUFF( (select ';' + BRANCH_CODE from @TableTmp WHERE BRANCH_ID IS NULL OR BRANCH_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Mã đơn vị chưa tồn tại trên hệ thống: '+ @Error ErrorDesc RETURN '-1' END IF(EXISTS(SELECT DEP_ID FROM @TableTmp WHERE BRANCH_CODE IN ('069','799','899') AND ( DEP_ID IS NULL OR DEP_ID=''))) BEGIN SET @Error=(select STUFF( (select ';' + DEP_CODE from @TableTmp WHERE DEP_ID IS NULL OR DEP_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Mã phòng ban chưa tồn tại trên hệ thống: '+@Error ErrorDesc RETURN '-1' END IF(EXISTS(SELECT COST_ID FROM @TableTmp WHERE (COST_ID IS NULL OR COST_ID='') AND COST_CODE IS NOT NULL AND COST_CODE <>'')) BEGIN SET @Error=(select STUFF( (select ';' + COST_CODE from @TableTmp WHERE COST_ID IS NULL OR COST_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Mã đơn vị đầu mối chưa tồn tại trên hệ thống: '+@Error ErrorDesc RETURN '-1' END IF(EXISTS(SELECT PLAN_TYPE_ID FROM @TableTmp WHERE PLAN_TYPE_ID IS NULL OR PLAN_TYPE_ID='')) BEGIN SET @Error=(select STUFF( (select ';' + PLAN_TYPE_CODE from @TableTmp WHERE PLAN_TYPE_ID IS NULL OR PLAN_TYPE_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Mã loại ngân sách chưa tồn tại trên hệ thống: '+@Error ErrorDesc RETURN '-1' END IF(EXISTS(SELECT GOOD_ID FROM @TableTmp WHERE GOOD_ID IS NULL OR GOOD_ID='')) BEGIN SET @Error=(select STUFF( (select ';' + GOOD_CODE from @TableTmp WHERE GOOD_ID IS NULL OR GOOD_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, N'Mã hạn mục chưa tồn tại trên hệ thống: '+@Error ErrorDesc RETURN '-1' END --IF(EXISTS( --SELECT DT.TRADE_ID FROM dbo.PL_MASTER PM --LEFT JOIN dbo.PL_TRADEDETAIL DT ON PM.PLAN_ID=DT.PLAN_ID --WHERE EXISTS() --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, '' IMPORT_ID, N'Hạn mục chỉnh sửa đã sử dụng vượt hạn mức chỉnh sửa' ErrorDesc -- RETURN '-1' --END SET @p_AUTH_STATUS = 'U' UPDATE dbo.PL_IMPORT_DT SET IS_UPDATE=0 WHERE IMPORT_ID=@p_IMPORT_ID UPDATE dbo.PL_IMPORT SET PLAN_CODE=@p_PLAN_CODE,IMP_NAME=@p_IMP_NAME,FILE_NAME=@p_FILE_NAME,IMP_QTY=@p_TOTAL_QTY, IMP_ATM=@p_TOTAL_ATM,NOTES=@p_NOTES,EDITER_ID=@p_MAKER_ID,EDIT_DT=convert(datetime,@p_CREATE_DT,103),CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=convert(datetime,@p_APPROVE_DT,103),AUTH_STATUS=@p_AUTH_STATUS,IS_UPDATE=1 WHERE IMPORT_ID=@p_IMPORT_ID DECLARE ImportDT CURSOR FOR SELECT IMP_YEAR, PLAN_TYPE_ID, PLAN_TYPE_CODE, PLAN_TYPE_NAME, COST_ID, COST_CODE, COST_NAME, BRANCH_ID, BRANCH_CODE, BRANCH_NAME, DEP_ID, DEP_CODE, DEP_NAME, REF_ID, REF_CODE, REF_NAME, GOOD_ID, GOOD_CODE, GOOD_NAME, QTY, TOTAL_AMT, NOTES FROM @TableTmp OPEN ImportDT DECLARE @PLAN_TYPE_ID VARCHAR(15), @PLAN_TYPE_CODE VARCHAR(15), @PLAN_TYPE_NAME NVARCHAR(200), @COST_ID VARCHAR(15), @COST_CODE VARCHAR(15), @COST_NAME NVARCHAR(200), @BRANCH_ID VARCHAR(15), @BRANCH_CODE VARCHAR(15), @BRANCH_NAME NVARCHAR(200), @DEP_ID varchar(15), @DEP_CODE VARCHAR(15), @DEP_NAME NVARCHAR(200), @REF_ID INT, @REF_CODE VARCHAR(20), @REF_NAME NVARCHAR(200), @GOOD_ID varchar(15), @GODD_CODE VARCHAR(20), @GOOD_NAME NVARCHAR(200),@QTY INT,@TOTAL_AMT NUMERIC(18,2),@NOTES NVARCHAR(1000), @IMP_YEAR VARCHAR(4) ,@IMP_LOG_CODE VARCHAR(15) EXEC SYS_CodeMasters_Gen 'IMP_LOG_CODE', @IMP_LOG_CODE out IF @IMP_LOG_CODE='' OR @IMP_LOG_CODE IS NULL GOTO ABORT FETCH NEXT FROM ImportDT INTO @IMP_YEAR, @PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE, @BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_ID,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME,@QTY,@TOTAL_AMT,@NOTES WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_IMPORTDT_ID VARCHAR(20) SET @l_IMPORTDT_ID= (SELECT TOP 1 IMP_DT_ID FROM PL_IMPORT_DT WHERE IMPORT_ID=@p_IMPORT_ID AND ISNULL(PLAN_TYPE_ID,'')=ISNULL(@PLAN_TYPE_ID,'') AND ISNULL(COST_ID,'')=ISNULL(@COST_ID,'') AND BRANCH_ID=@BRANCH_ID AND ISNULL(REF_CODE,'')= ISNULL(@REF_CODE,'') AND ISNULL(DEP_ID,'')=ISNULL(@DEP_ID,'') AND ISNULL(GOOD_ID,'')=ISNULL(@GOOD_ID,'')) IF(@l_IMPORTDT_ID IS NULL OR @l_IMPORTDT_ID='') BEGIN EXEC SYS_CodeMasters_Gen 'IMPORT_DT', @l_IMPORTDT_ID out IF @l_IMPORTDT_ID='' OR @l_IMPORTDT_ID IS NULL GOTO ABORT INSERT INTO dbo.PL_IMPORT_DT ( IMP_DT_ID, IMPORT_ID, PLAN_TYPE_ID, PLAN_TYPE_CODE, PLAN_TYPE_NAME, COST_ID, COST_CODE, COST_NAME, BRANCH_ID, BRANCH_CODE, BRANCH_NAME, DEP_ID, DEP_CODE, DEP_NAME, REF_CODE, REF_NAME, GOOD_ID, GOOD_CODE, GOOD_NAME, QTY, TOTAL_AMT, NOTES, IMP_YEAR, IS_UPDATE ) VALUES ( @l_IMPORTDT_ID, -- IMP_DT_ID - varchar(20) @p_IMPORT_ID, -- IMPORT_ID - varchar(20) @PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE, @BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME,@QTY,@TOTAL_AMT,@NOTES,@IMP_YEAR,1 ) END ELSE BEGIN UPDATE dbo.PL_IMPORT_DT SET QTY=@QTY,TOTAL_AMT=@TOTAL_AMT,REF_NAME=@REF_NAME,IS_UPDATE=1 WHERE IMP_DT_ID=@l_IMPORTDT_ID END INSERT INTO dbo.PL_IMPORT_LOG ( IMP_LOG_CODE, IMP_ID, FILE_NAME, IMP_YEAR, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, EDITER_ID, EDIT_DT, CHECKER_ID, APPROVE_DT, PLAN_TYPE_ID, PLAN_TYPE_CODE, PLAN_TYPE_NAME, COST_ID, COST_CODE, COST_NAME, BRANCH_ID, BRANCH_CODE, BRANCH_NAME, DEP_ID, DEP_CODE, DEP_NAME, REF_CODE, REF_NAME, GOOD_ID, GOOD_CODE, GOOD_NAME, QTY, TOTAL_AMT ) VALUES ( @IMP_LOG_CODE, @p_IMPORT_ID, -- IMP_ID_OLD - varchar(20) @p_FILE_NAME, -- FILE_NAME - nvarchar(200) @p_IMP_YEAR, -- IMP_YEAR - int @p_NOTES, -- NOTES - nvarchar(1000) @p_RECORD_STATUS, -- RECORD_STATUS - varchar(1) @p_AUTH_STATUS, -- AUTH_STATUS - varchar(1) @p_MAKER_ID, -- MAKER_ID - varchar(15) convert(datetime,@p_CREATE_DT,103), -- CREATE_DT - datetime @p_MAKER_ID, -- EDITER_ID - varchar(15) convert(datetime,@p_CREATE_DT,103), -- EDIT_DT - datetime @p_CHECKER_ID, -- CHECKER_ID - varchar(15) convert(datetime,@p_APPROVE_DT,103), -- APPROVE_DT - datetime @PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE, @BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME, @QTY, -- QTY - int @TOTAL_AMT -- TOTAL_AMT - numeric(18, 2) ) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM ImportDT INTO @IMP_YEAR,@PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE, @BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_ID,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME ,@QTY,@TOTAL_AMT,@NOTES END CLOSE ImportDT DEALLOCATE ImportDT SET @p_TOTAL_ATM=(SELECT SUM(ISNULL(TOTAL_AMT,0)) FROM dbo.PL_IMPORT_DT WHERE IMPORT_ID=@p_IMPORT_ID) SELECT @p_TOTAL_QTY=(SELECT SUM(ISNULL(QTY,0)) FROM dbo.PL_IMPORT_DT WHERE IMPORT_ID=@p_IMPORT_ID) UPDATE dbo.PL_IMPORT SET IMP_QTY=@p_TOTAL_QTY,IMP_ATM=@p_TOTAL_ATM WHERE IMPORT_ID=@p_IMPORT_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_IMPORT_ID IMPORT_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' IMPORT_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CON_REQUEST_DOC_UpdXml]' GO ALTER PROCEDURE [dbo].[CON_REQUEST_DOC_UpdXml] @p_CONSTRUCT_ID varchar(15) = NULL, @p_CONSTRUCT_CODE varchar(15) = NULL, @p_CONSTRUCT_NAME nvarchar(100) = NULL, @p_PLAN_ID varchar(15) = NULL, @p_CONST_ID varchar(15) = NULL, @p_DIVI_ID varchar(15) = NULL, @p_CONSTRUCT_ADDR nvarchar(200) = NULL, @p_LENGTH decimal(18, 2) = NULL, @p_WIDTH decimal(18, 2) = NULL, @p_CONSTRUCT_AREA decimal(18) = NULL, @p_FLOORS int = NULL, @p_FLOORS_AREA decimal(18, 2) = NULL, @p_TOTAL_AREA_USE decimal(18, 2) = NULL, -- GIANT @p_UNUSED_AREA decimal(18, 2) = NULL, @p_TOTAL_COST decimal(18, 2) = NULL,-- GIANT @p_UNIT_PRICE decimal(18, 2) = NULL,-- GIANT @p_YEAR_EXE varchar(4) = NULL, @p_CONST_TYPE varchar(15) = NULL, @p_HQ_TYPE varchar(15) = NULL, @p_TOTAL_AMT decimal(18) = NULL, @p_COST_ESTIMATE decimal(18) = NULL, @p_COST_EXE decimal(18) = NULL, @p_COST_INCURRED decimal(18) = NULL, @p_CONST_PURPOSE varchar(15) = NULL, @p_DESCRIPTION nvarchar(2000) = NULL, @p_START_DT VARCHAR(20) = NULL, @p_END_DT VARCHAR(20) = NULL, @p_DATE_EXE VARCHAR(20) = NULL, @p_COMPLETION_DT VARCHAR(20) = NULL, @p_CONSTRUCT_PROGRESS decimal(18) = NULL, @p_RECORD_STATUS varchar(1) = '1', @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS varchar(1) = 'N', @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_REQUEST_ID VARCHAR(15) = NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_STREET NVARCHAR(200) = NULL, @p_LOCATION VARCHAR(15) = NULL, @p_UPD_DT varchar(20) = NULL, @p_SCALE NVARCHAR(1000) = NULL, @p_ENGINEER nvarchar(500) = NULL, @p_APPROVE_VALUE decimal(18) = NULL, @p_BRANCH_NAME_ETX nvarchar(500) = NULL, @P_ListRequestDoc XML = NULL, -- THONG TIN VE TO TRINH @P_ListBid XML = NULL, -- CHI PHI SUA CHUA @P_ListContract_DT XML = NULL, -- DANH SACH HO SO THI CONG @P_ListPayment XML = NULL, -- CAC DOT THANH TOAN @P_ListBid_DT XML = NULL, -- DANH SACH CHI TIET DON VI THAM GIA THAU @P_ListContractorArise XML = NULL, -- DANH SACH CHI TIET PHAT SINH TANG GIAM @P_ListReviewXML XML = NULL, -- ĐÁNH GIÁ NCC @P_ListConsProcessXML XML = NULL, -- TIẾN ĐỘ CÔNG TRÌNH @P_ListConsHHXML XML = NULL -- DANH SÁCH HÀNG HÓA AS --Validation is here /* DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM CON_REQUEST_DOC WHERE )) SET @ERRORSYS = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END */ DECLARE @OLD_REQUEST_ID VARCHAR(15) = @P_REQUEST_ID DECLARE @sErrorCode VARCHAR(20),@DEP_CREATE VARCHAR(15) = NULL SELECT @DEP_CREATE = DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID Declare @hdoc INT -- THONG TIN VE TO TRINH Exec sp_xml_preparedocument @hdoc Output,@P_ListRequestDoc DECLARE ListRequestDoc CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListRequestDoc',2) WITH ( CON_REQUEST_DOC_ID varchar(15), REQ_ID varchar(15), REQ_CODE nvarchar(100), REQ_NAME nvarchar(200), REQ_DT VARCHAR(20), REQ_CONTENT nvarchar(1000), CONSTRUCT_ID varchar(15), TOTAL_AMT decimal(18), BRANCH_ID varchar(15), PLAN_TYPE VARCHAR(1), IS_PARENT VARCHAR(1), IS_ARISE VARCHAR(1), BUDGET VARCHAR(15), YEAR_BUDGET INT, REQUEST_PARENT VARCHAR(15), APPROVE_DT VARCHAR(20) ) OPEN ListRequestDoc -- DANH SACH HO SO THI CONG (HOP DONG) Exec sp_xml_preparedocument @hdoc Output,@P_ListContract_DT DECLARE ListContract_DT CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListContract_DT',2) WITH ( CONTRACT_ID varchar(15), CONTRACT_CODE varchar(15), [CONTRACT_NAME] nvarchar(200), CONTRACT_TYPE varchar(15), BID_ID nvarchar(200), TOTAL_AMT DECIMAL(18), IS_PARENT varchar(1), REQUEST_ID varchar(15), REQDT_ID VARCHAR(15) ) OPEN ListContract_DT -- DANH SÁCH HÀNG HÓA Exec sp_xml_preparedocument @hdoc Output,@P_ListConsHHXML DECLARE ListHH CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListHH',2) WITH ( CON_REQ_HH_ID VARCHAR(15), REQ_CODE VARCHAR(50), REQ_ID VARCHAR(15), SUP_ID VARCHAR(15), SELLTEMENT_AMT DECIMAL(18,2), [DESCRIPTION] NVARCHAR(4000), -- KHOONG SU DUNG HH_ID VARCHAR(15), ESTIMATES_AMT DECIMAL(18,2), BRANCH_DO VARCHAR(15), CONS_DOCUMENT_ID VARCHAR(15), BID_ID VARCHAR(15), BID_CODE VARCHAR(50), REQDT_ID VARCHAR(15) ) OPEN ListHH -- ĐÁNH GIÁ NCC Exec sp_xml_preparedocument @hdoc Output,@P_ListReviewXML DECLARE ListReview CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListReview',2) WITH ( CON_REQ_REVIEW_ID VARCHAR(15), SUP_ID VARCHAR(15), QCKT_REVIEW NVARCHAR(4000), CONS_PROCESS VARCHAR(15), MAINTENANCE VARCHAR(15), REPORT_PLAN_EDIT VARCHAR(15), CONS_QUALITY VARCHAR(15), BEAUTY_IMAGE VARCHAR(15), REQ_ID VARCHAR(15), REQ_CODE VARCHAR(50), SUP_NAME NVARCHAR(1000), HANGHOA_ID VARCHAR(15) ) OPEN ListReview -- TIẾN ĐỘ CÔNG TRÌNH Exec sp_xml_preparedocument @hdoc Output,@P_ListConsProcessXML DECLARE ListConsProcess CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListConsProcess',2) WITH ( CON_REQ_PROCESS_ID VARCHAR(15), DATE_REPORT VARCHAR(50), PERCENT_COMPLETED DECIMAL(18,2), PERCENT_REMAIN DECIMAL(18,2), DEADLINE VARCHAR(50), ITEM_JOB NVARCHAR(MAX), NOTES NVARCHAR(MAX), DEADLINE_CON VARCHAR(50) ) OPEN ListConsProcess BEGIN TRANSACTION -- insert zô bảng tài liệu ---TAO BANG TAM DECLARE @TEMP TABLE ( [KEY] varchar(15), [REF_ID] varchar(15), [TYPE] varchar(50) ) -- UPDATE BANG THONG TIN VE TO TRINH DELETE CON_REQUEST_DOC WHERE REQUEST_PARENT = @p_REQUEST_ID DECLARE @INDEX int = 0, @CON_REQUEST_DOC_ID varchar(15), @REQ_ID varchar(15), @REQ_CODE nvarchar(100), @REQ_NAME nvarchar(200), @REQ_DT VARCHAR(20), @REQ_CONTENT nvarchar(1000), @CONSTRUCT_ID varchar(15), @TOTAL_AMT decimal(18), @BRANCH_ID varchar(15), @PLAN_TYPE VARCHAR(1), @IS_PARENT VARCHAR(1), @IS_ARISE VARCHAR(1), @REQ_BUDGET VARCHAR(15), @REQ_YEAR_BUDGET int, @REQUEST_PARENT VARCHAR(15), @APPROVE_DT VARCHAR(20), @DOC_REQUEST_TOTAL_AMT DECIMAL(18,2) = 0 --INSERT ListBid DETAIL FETCH NEXT FROM ListRequestDoc INTO @CON_REQUEST_DOC_ID, @REQ_ID, @REQ_CODE, @REQ_NAME, @REQ_DT, @REQ_CONTENT, @CONSTRUCT_ID, @TOTAL_AMT, @BRANCH_ID, @PLAN_TYPE, @IS_PARENT,@IS_ARISE, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @APPROVE_DT WHILE @@FETCH_STATUS = 0 BEGIN IF(@CON_REQUEST_DOC_ID IS NULL OR @CON_REQUEST_DOC_ID = '') BEGIN EXEC SYS_CodeMasters_Gen 'CON_REQUEST_DOC', @CON_REQUEST_DOC_ID out END IF @CON_REQUEST_DOC_ID='' OR @CON_REQUEST_DOC_ID IS NULL GOTO ABORT SET @INDEX = @INDEX + 1 IF (@INDEX = 1) -- TRA VE SO TO TRINH DAU TIEN BEGIN SET @P_REQUEST_ID = @CON_REQUEST_DOC_ID END SET @REQUEST_PARENT = @P_REQUEST_ID PRINT @REQUEST_PARENT INSERT INTO CON_REQUEST_DOC([CON_REQUEST_DOC_ID],[REQ_ID], [REQ_CODE], [REQ_NAME], [REQ_DT], [REQ_CONTENT], [CONSTRUCT_ID], [TOTAL_AMT], [NOTES], [RECORD_STATUS], [MAKER_ID], [CREATE_DT], [AUTH_STATUS], [CHECKER_ID], [APPROVE_DT], [BRANCH_ID], [PLAN_TYPE], [IS_PARENT] , [BUDGET], [YEAR_BUDGET], [REQUEST_PARENT], [IS_ARISE]) VALUES(@CON_REQUEST_DOC_ID,@REQ_ID, @REQ_CODE, @REQ_NAME, CONVERT(DATETIME, @REQ_DT, 103), @REQ_CONTENT, @CONSTRUCT_ID, @TOTAL_AMT, '', @p_RECORD_STATUS, @P_MAKER_ID, CONVERT(DATETIME, @P_CREATE_DT , 103), @P_AUTH_STATUS, @P_CHECKER_ID, CONVERT(DATETIME, @APPROVE_DT, 103), @BRANCH_ID, @PLAN_TYPE, @IS_PARENT, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @IS_ARISE) INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@CON_REQUEST_DOC_ID, 'CON_REQUEST_DOC') SET @DOC_REQUEST_TOTAL_AMT = @DOC_REQUEST_TOTAL_AMT + @TOTAL_AMT PRINT @@ERROR IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM ListRequestDoc INTO @CON_REQUEST_DOC_ID, @REQ_ID, @REQ_CODE, @REQ_NAME, @REQ_DT, @REQ_CONTENT, @CONSTRUCT_ID, @TOTAL_AMT, @BRANCH_ID, @PLAN_TYPE, @IS_PARENT,@IS_ARISE, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @APPROVE_DT END CLOSE ListRequestDoc DEALLOCATE ListRequestDoc -- THEM THONG TIN CONG TRINH IF (@p_TOTAL_COST > @DOC_REQUEST_TOTAL_AMT) BEGIN DECLARE @ERRORSYS NVARCHAR(200) = N'Tổng chi phí xây dựng không lớn hơn tổng giá trị các tờ trình ('+ cast(format(@DOC_REQUEST_TOTAL_AMT, 'N', 'en-US') AS VARCHAR(20)) +')' ROLLBACK TRANSACTION SELECT '-1' as Result, @ERRORSYS ErrorDesc RETURN '-1' END DECLARE @IS_FINISH VARCHAR(1) = 'N' UPDATE CON_MASTER SET [IS_FINISH] = @IS_FINISH, [CONSTRUCT_CODE] = @p_CONSTRUCT_CODE,[CONSTRUCT_NAME] = @p_CONSTRUCT_NAME,[PLAN_ID] = @p_PLAN_ID,[DIVI_ID] = @p_DIVI_ID,[CONSTRUCT_ADDR] = @p_CONSTRUCT_ADDR,[LENGTH] = @p_LENGTH,[WIDTH] = @p_WIDTH, [CONSTRUCT_AREA] = @p_CONSTRUCT_AREA, [FLOORS] = @p_FLOORS, [FLOORS_AREA] = @p_FLOORS_AREA, [YEAR_EXE] = @p_YEAR_EXE,[CONST_TYPE] = @p_CONST_TYPE, [HQ_TYPE] = @p_HQ_TYPE,[TOTAL_AMT] = @p_TOTAL_AMT,[COST_ESTIMATE] = @p_COST_ESTIMATE,[COST_EXE] = @p_COST_EXE, [COST_INCURRED] = @p_COST_INCURRED, [CONST_PURPOSE] = @p_CONST_PURPOSE, [DESCRIPTION] = @p_DESCRIPTION,[START_DT] = CONVERT(DATETIME, @p_START_DT, 103),[END_DT] = CONVERT(DATETIME, @p_END_DT, 103),[DATE_EXE] = CONVERT(DATETIME, @p_DATE_EXE, 103),[COMPLETION_DT] = CONVERT(DATETIME, @p_COMPLETION_DT, 103),[CONSTRUCT_PROGRESS] = @p_CONSTRUCT_PROGRESS,[RECORD_STATUS] = @p_RECORD_STATUS,[MAKER_ID] = @p_MAKER_ID--,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103) ,[DEP_CREATE] = @DEP_CREATE,[AUTH_STATUS] = @p_AUTH_STATUS,[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103),[CONST_ID] = @p_CONST_ID, [REQUEST_ID] = @p_REQUEST_ID, [BRANCH_ID] = @P_BRANCH_ID, [STREET] = @P_STREET, [LOCATION] = @P_LOCATION, [SCALE] = @P_SCALE, [ENGINEER] = @p_ENGINEER, [BRANCH_NAME_ETX] = @p_BRANCH_NAME_ETX, UPD_DT = CONVERT(DATETIME, @p_UPD_DT, 103), APPROVE_VALUE = @p_APPROVE_VALUE, TOTAL_AREA_USE = @p_TOTAL_AREA_USE,TOTAL_COST = @p_TOTAL_COST,UNIT_PRICE= @p_UNIT_PRICE,UNUSED_AREA = @p_UNUSED_AREA WHERE CONSTRUCT_ID = @p_CONSTRUCT_ID INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@p_CONSTRUCT_ID, 'CON_MASTER') IF @@Error <> 0 GOTO ABORT -- DANH SÁCH HÀNG HÓA DELETE CON_REQUEST_HH_DT WHERE CONSTRUCT_ID = @p_CONSTRUCT_ID DECLARE @CON_REQ_HH_ID VARCHAR(15), @SUP_ID VARCHAR(15), @SELLTEMENT_AMT DECIMAL(18,2), @DESCRIPTION NVARCHAR(4000), @HH_ID VARCHAR(15), @ESTIMATES_AMT DECIMAL(18,2), @BRANCH_DO VARCHAR(15), @CONS_DOCUMENT_ID VARCHAR(15), @BID_ID varchar(15), @BID_CODE VARCHAR(15), @REQDT_ID VARCHAR(15) FETCH NEXT FROM ListHH INTO @CON_REQ_HH_ID,@REQ_CODE, @REQ_ID, @SUP_ID, @SELLTEMENT_AMT, @DESCRIPTION, @HH_ID, @ESTIMATES_AMT,@BRANCH_DO,@CONS_DOCUMENT_ID,@BID_ID,@BID_CODE,@REQDT_ID WHILE @@FETCH_STATUS = 0 BEGIN EXEC SYS_CodeMasters_Gen 'CON_REQUEST_HH_DT', @CON_REQ_HH_ID out IF @CON_REQ_HH_ID='' OR @CON_REQ_HH_ID IS NULL GOTO ABORT SET @DESCRIPTION = (SELECT [DESCRIPTION] FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID) INSERT INTO [dbo].[CON_REQUEST_HH_DT] ( [CON_REQ_HH_ID], [SUP_ID], [SELLTEMENT_AMT], [DESCRIPTION], [HH_ID], [REQ_ID], [ESTIMATES_AMT], [BRANCH_DO], [CONS_DOCUMENT_ID], [BID_ID], [REQ_CODE], [CONSTRUCT_ID], [REQDT_ID], [BID_CODE] ) VALUES ( @CON_REQ_HH_ID, @SUP_ID, @SELLTEMENT_AMT, @DESCRIPTION, @HH_ID, @REQ_ID, @ESTIMATES_AMT, @BRANCH_DO, @CONS_DOCUMENT_ID, @BID_ID, @REQ_CODE, @p_CONSTRUCT_ID, @REQDT_ID, @BID_CODE ) INSERT INTO @TEMP([KEY],[REF_ID],[TYPE]) VALUES (@REQDT_ID, @CON_REQ_HH_ID, 'CON_REQUEST_HH_DT') FETCH NEXT FROM ListHH INTO @CON_REQ_HH_ID,@REQ_CODE, @REQ_ID, @SUP_ID, @SELLTEMENT_AMT, @DESCRIPTION, @HH_ID, @ESTIMATES_AMT,@BRANCH_DO,@CONS_DOCUMENT_ID,@BID_ID,@BID_CODE,@REQDT_ID END CLOSE ListHH DEALLOCATE ListHH -- UPDATE DANH SÁCH HỒ SƠ THI CÔNG -- HOP DONG & PHU LUC HOP DONG DELETE TR_CONTRACT WHERE REQUEST_ID = @OLD_REQUEST_ID DECLARE @CDT_INDEX int = 0, @CDT_CONTRACT_ID varchar(15), @CONTRACT_CODE varchar(15), @CONTRACT_NAME nvarchar(200), @CONTRACT_TYPE varchar(1), @CDT_BID_ID nvarchar(200), @CDT_TOTAL_AMT decimal(18), @CDT_IS_PARENT varchar(1), @CDT_REQUEST_ID varchar(15), @CDT_CONTRACT_PARENT varchar(15), @CDT_REQDT_ID VARCHAR(15) --INSERT ListContract_DT DETAIL FETCH NEXT FROM ListContract_DT INTO @CDT_CONTRACT_ID, @CONTRACT_CODE, @CONTRACT_NAME, @CONTRACT_TYPE, @CDT_BID_ID, @CDT_TOTAL_AMT, @CDT_IS_PARENT, @CDT_REQUEST_ID, @CDT_REQDT_ID WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_CON_REQUEST_CONTRACT_ID VARCHAR(15), @CDT_CON_REQ_HH_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'CON_REQUEST_CONTRACT', @l_CON_REQUEST_CONTRACT_ID out IF @l_CON_REQUEST_CONTRACT_ID='' OR @l_CON_REQUEST_CONTRACT_ID IS NULL GOTO ABORT SET @CDT_CON_REQ_HH_ID = (SELECT REF_ID FROM @TEMP WHERE [KEY] = @CDT_REQDT_ID) INSERT INTO CON_REQUEST_CONTRACT([CON_REQUEST_CONTRACT_ID],[CON_REQ_HH_ID],[CONTRACT_ID],[TOTAL_AMT],[REQDT_ID]) VALUES (@l_CON_REQUEST_CONTRACT_ID,@CDT_CON_REQ_HH_ID,@CDT_CONTRACT_ID,@CDT_TOTAL_AMT,@CDT_REQDT_ID) INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_CON_REQUEST_CONTRACT_ID, 'CON_REQUEST_CONTRACT') IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM ListContract_DT INTO @CDT_CONTRACT_ID, @CONTRACT_CODE, @CONTRACT_NAME, @CONTRACT_TYPE, @CDT_BID_ID, @CDT_TOTAL_AMT, @CDT_IS_PARENT, @CDT_REQUEST_ID, @CDT_REQDT_ID END CLOSE ListContract_DT DEALLOCATE ListContract_DT -- ĐÁNH GIÁ NCC DELETE CON_REQUEST_REVIEW_DT WHERE CONSTRUCT_ID = @p_CONSTRUCT_ID DECLARE @CON_REQ_REVIEW_ID VARCHAR(15), @QCKT_REVIEW NVARCHAR(4000), @CONS_PROCESS VARCHAR(15), @MAINTENANCE VARCHAR(15), @REPORT_PLAN_EDIT VARCHAR(15), @CONS_QUALITY VARCHAR(15), @BEAUTY_IMAGE VARCHAR(15), @SUP_NAME NVARCHAR(1000), @HANGHOA_ID VARCHAR(15) FETCH NEXT FROM ListReview into @CON_REQ_REVIEW_ID,@SUP_ID, @QCKT_REVIEW, @CONS_PROCESS, @MAINTENANCE, @REPORT_PLAN_EDIT, @CONS_QUALITY, @BEAUTY_IMAGE, @REQ_ID, @REQ_CODE, @SUP_NAME, @HANGHOA_ID WHILE @@FETCH_STATUS = 0 BEGIN EXEC SYS_CodeMasters_Gen 'CON_REQUEST_REVIEW_DT', @CON_REQ_REVIEW_ID out IF @CON_REQ_REVIEW_ID='' OR @CON_REQ_REVIEW_ID IS NULL GOTO ABORT INSERT INTO [dbo].[CON_REQUEST_REVIEW_DT] ( [CON_REQ_REVIEW_ID], [SUP_ID], [CONS_PROCESS], [MAINTENANCE], [REPORT_PLAN_EDIT], [CONS_QUALITY], [BEAUTY_IMAGE], [CONSTRUCT_ID], [QCKT_REVIEW], [SUP_NAME], [REQ_CODE], [REQ_ID], [HANGHOA_ID] ) VALUES ( @CON_REQ_REVIEW_ID, @SUP_ID, @CONS_PROCESS, @MAINTENANCE, @REPORT_PLAN_EDIT, @CONS_QUALITY, @BEAUTY_IMAGE, @p_CONSTRUCT_ID, @QCKT_REVIEW, @SUP_NAME, @REQ_CODE, @REQ_ID, @HANGHOA_ID ) INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@CON_REQ_REVIEW_ID, 'CON_REQUEST_REVIEW_DT') FETCH NEXT FROM ListReview INTO @CON_REQ_REVIEW_ID,@SUP_ID, @QCKT_REVIEW, @CONS_PROCESS, @MAINTENANCE, @REPORT_PLAN_EDIT, @CONS_QUALITY, @BEAUTY_IMAGE, @REQ_ID, @REQ_CODE, @SUP_NAME, @HANGHOA_ID END CLOSE ListReview DEALLOCATE ListReview -- TIẾN ĐỘ CÔNG TRÌNH DELETE CON_REQUEST_PROCESS_DT WHERE CONSTRUCT_ID = @p_CONSTRUCT_ID DECLARE @CON_REQ_PROCESS_ID VARCHAR(15), @DATE_REPORT VARCHAR(50), @PERCENT_COMPLETED DECIMAL(18,2), @PERCENT_REMAIN DECIMAL(18,2), @DEADLINE VARCHAR(50), @ITEM_JOB NVARCHAR(MAX), @NOTES NVARCHAR(MAX), @DEADLINE_CON VARCHAR(50) FETCH NEXT FROM ListConsProcess into @CON_REQ_PROCESS_ID,@DATE_REPORT, @PERCENT_COMPLETED, @PERCENT_REMAIN, @DEADLINE, @ITEM_JOB, @NOTES, @DEADLINE_CON WHILE @@FETCH_STATUS = 0 BEGIN EXEC SYS_CodeMasters_Gen 'CON_REQUEST_PROCESS_DT', @CON_REQ_PROCESS_ID out IF @CON_REQ_PROCESS_ID='' OR @CON_REQ_PROCESS_ID IS NULL GOTO ABORT INSERT INTO [dbo].[CON_REQUEST_PROCESS_DT] ( [CON_REQ_PROCESS_ID], [DATE_REPORT], [PERCENT_COMPLETED], [PERCENT_REMAIN], [DEADLINE], [CONSTRUCT_ID], [ITEM_JOB], [NOTES], [DEADLINE_CON] ) VALUES ( @CON_REQ_PROCESS_ID, CONVERT(DATETIME, @DATE_REPORT, 103), @PERCENT_COMPLETED, @PERCENT_REMAIN, CASE WHEN @DEADLINE IS NULL OR @DEADLINE = '' THEN NULL ELSE CONVERT(DATETIME, @DEADLINE, 103) END, @p_CONSTRUCT_ID, @ITEM_JOB, @NOTES, CASE WHEN @DEADLINE_CON IS NULL OR @DEADLINE_CON = '' THEN NULL ELSE CONVERT(DATETIME, @DEADLINE_CON, 103) END ) INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@CON_REQ_PROCESS_ID, 'CON_REQUEST_PROCESS_DT') FETCH NEXT FROM ListConsProcess INTO @CON_REQ_PROCESS_ID,@DATE_REPORT, @PERCENT_COMPLETED, @PERCENT_REMAIN, @DEADLINE, @ITEM_JOB, @NOTES, @DEADLINE_CON END CLOSE ListConsProcess DEALLOCATE ListConsProcess -- start hieuhm 09/11/2022 thêm lịch sử xử lí INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CONSTRUCT_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Cập nhật công trình thành công' , N'Đơn vị cập nhật công trình' ) -- end hieuhm 09/11/2022 thêm lịch sử xử lí COMMIT TRANSACTION SELECT '0' as Result, @p_REQUEST_ID REQ_ID, [REF_ID], [TYPE], '' ErrorDesc FROM @TEMP RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION CLOSE ListRequestDoc DEALLOCATE ListRequestDoc CLOSE ListBid DEALLOCATE ListBid CLOSE ListContract_DT DEALLOCATE ListContract_DT CLOSE PaymentDetail DEALLOCATE PaymentDetail CLOSE ContractorDetail DEALLOCATE ContractorDetail SELECT ErrorCode Result, @p_REQUEST_ID REQ_ID, '' [REF_ID], '' [TYPE], ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode RETURN '-1' End ABORT1: BEGIN ROLLBACK TRANSACTION CLOSE ListRequestDoc DEALLOCATE ListRequestDoc SELECT ErrorCode Result, @p_REQUEST_ID REQ_ID, '' [REF_ID], '' [TYPE],ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode RETURN '-1' End ABORT2: BEGIN ROLLBACK TRANSACTION CLOSE ListContract_DT DEALLOCATE ListContract_DT CLOSE PaymentDetail DEALLOCATE PaymentDetail CLOSE ContractorDetail DEALLOCATE ContractorDetail SELECT ErrorCode Result, @p_REQUEST_ID REQ_ID, '' [REF_ID], '' [TYPE], ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_DOC_DVMS_Upd]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_DVMS_Upd] @p_REQ_ID varchar(15), @p_REQ_CODE nvarchar(100) = NULL, @p_REQ_NAME nvarchar(200) = NULL, @p_REQ_DT nvarchar(30) = NULL, @p_REQ_TYPE int = NULL, @p_REQ_CONTENT NVARCHAR(1000)=NULL, @p_REQ_REASON NVARCHAR(500)=NULL, @p_PL_REQ_ID VARCHAR(15), @p_TOTAL_AMT decimal(18, 2) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(12) = NULL, @p_CREATE_DT nvarchar(30) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(12) = NULL, @p_APPROVE_DT nvarchar(30) = NULL, @p_BRANCH_DO VARCHAR(15)=NULL, @p_BRANCH_CREATE VARCHAR(15)=NULL, @p_USER_REQUEST VARCHAR(15)=NULL, @p_ListGood XML, @p_ListCostCenter XML, @p_ListTrREQFile XML, @p_IS_KT bit = null AS DECLARE @TEMP TABLE ( [KEY] varchar(15), [REF_ID] varchar(15), [TYPE] varchar(50) ) --IF EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID) --BEGIN -- SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001' -- RETURN '0' --END DECLARE @sErrorCode VARCHAR(20) BEGIN TRANSACTION UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DO=@p_BRANCH_DO, -----------------BAODNQ 26/05/2022: Chỉnh sửa update USER_DVMS--------- USER_DVMS=@p_MAKER_ID, --------------------END BAODNQ-------------------- IS_KT = @p_IS_KT WHERE REQ_ID=@p_REQ_ID -- UPDATE TOTAL_AMT MASTER UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT=(SELECT SUM(ISNULL(TOTAL_AMT,0)) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID) WHERE REQ_ID =@p_REQ_ID IF @@Error <> 0 GOTO ABORT IF @@Error <> 0 GOTO ABORT --DELETE FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID DELETE FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID --Insert into TABLE PL_REQUEST_DOC_DT -------------BAODNQ 6/12/2022------------------ DECLARE @p_TR_REPORT_PRICE_TYPE VARCHAR(30) ----------BBXG 10-100M--------- IF(EXISTS (SELECT * FROM TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID)) BEGIN SET @p_TR_REPORT_PRICE_TYPE = '10_100M' END ----------BBXG 1000-500M--------- ELSE IF(EXISTS (SELECT * FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID)) BEGIN SET @p_TR_REPORT_PRICE_TYPE = '100_500M' END ----------BBXG TRÊN 500M--------- ELSE IF(EXISTS (SELECT * FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID)) BEGIN SET @p_TR_REPORT_PRICE_TYPE = '500M' END ------------BAODNQ 25/10/2022-------------- DECLARE @p_ROW_COUNT INT = 0, @p_TRAN_TYPE_NAME NVARCHAR(500) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_ListGood DECLARE ListGoods CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListGood',2) WITH ( REQDT_ID varchar(15) , PL_REQDT_ID varchar(15) , GOODS_ID varchar(15) , [DESCRIPTION] nvarchar(500), QUANTITY decimal(18, 0) , PRICE decimal(18, 2) , TOTAL_AMT decimal(18, 2), NOTES nvarchar(1000), REQ_DT varchar(30), AMORT_MONTH DECIMAL(18,2), TRAN_TYPE_ID varchar(15), SUP_ID varchar(15), BID_ID VARCHAR(20), SUP_NAME NVARCHAR(2000), OFFERING_VALUE decimal(18, 2), NOTE_DVMS NVARCHAR(500), PO_ID VARCHAR(15), PO_AMT DECIMAL(18,2), TOTAL_AMT_ETM DECIMAL(18,2), CURRENCY VARCHAR(15), EXCHANGE_RATE DECIMAL(18,2), TAXES DECIMAL(18,2), -------------BAODNQ 21/4/2022 Thêm biến XML---- DES_GOOD NVARCHAR(500), UNIT_NAME NVARCHAR(100), HANGHOA_ID VARCHAR(15), --------------BAODNQ 23/8/2022 : Thêm chọn hợp đồng nếu chọn HTMS : mua sắm trực tiếp(HĐNT) CONTRACT_ID VARCHAR(15) ) OPEN ListGoods Declare @REQDT_ID varchar(15) , @PL_REQDT_ID varchar(15), @SUP_ID varchar(15), @GOODS_ID varchar(15), @DESCRIPTION nvarchar(500), @QUANTITY decimal(18, 0), @PRICE decimal(18, 2), @TOTAL_AMT decimal(18, 2), @NOTES nvarchar(1000), @TRAN_TYPE_ID varchar(15), @AMORT_MONTH DECIMAL(18,2), @REQ_DT varchar(30), @BID_ID VARCHAR(20), @SUP_NAME NVARCHAR(2000), @l_SUP_ID VARCHAR(15), @OFFERING_VALUE DECIMAL(18,2), @NOTE_DVMS NVARCHAR(500), @PO_ID VARCHAR(15), @PO_AMT DECIMAL(18,2), @TOTAL_AMT_ETM DECIMAL(18,2), @CURRENCY VARCHAR(15), @EXCHANGE_RATE DECIMAL(18,2), @TAXES DECIMAL(18,2), -------------BAODNQ 21/4/2022 Thêm biến XML---- @DES_GOOD NVARCHAR(500), @UNIT_NAME NVARCHAR(100), @HANGHOA_ID VARCHAR(15), @CONTRACT_ID VARCHAR(15) FETCH NEXT FROM ListGoods INTO @REQDT_ID, @PL_REQDT_ID, @GOODS_ID, @DESCRIPTION, @QUANTITY, @PRICE, @TOTAL_AMT, @NOTES, @REQ_DT, @AMORT_MONTH, @TRAN_TYPE_ID, @SUP_ID, @BID_ID, @SUP_NAME, @OFFERING_VALUE, @NOTE_DVMS, @PO_ID, @PO_AMT, @TOTAL_AMT_ETM, @CURRENCY, @EXCHANGE_RATE , @TAXES, @DES_GOOD, @UNIT_NAME, @HANGHOA_ID, @CONTRACT_ID WHILE @@FETCH_STATUS = 0 BEGIN SET @p_ROW_COUNT = @p_ROW_COUNT + 1 SET @p_TRAN_TYPE_NAME = (SELECT TRN_TYPE_NAME FROM CM_TRAN_TYPE WHERE TRN_TYPE = @TRAN_TYPE_ID) ----------------BAODNQ 1/12/2022 : HOT FIX : Không cho phép tự nhập tên NCC vào ô NCC-------- -------------------Bắt buộc phải chọn NCC từ popup-------------------- --------Tạm thời comment lại------------ --IF(@SUP_NAME IS NOT NULL AND @SUP_NAME <> '' AND (@SUP_ID IS NULL OR @SUP_ID = '')) --BEGIN -- CLOSE ListGoods -- DEALLOCATE ListGoods -- ROLLBACK TRANSACTION -- SELECT '-1' AS RESULT, '' REQ_ID, -- N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) -- + N'. Không được phép nhập thẳng tên nhà cung cấp vào ô nhà cung cấp, bắt buộc phải chọn nhà cung cấp trong hệ thống từ popup' ErrorDesc -- RETURN '-1' --END ------------------ENDBAODNQ----------------- -------BAODNQ 25/10/2022 : NẾU CHỌN HÌNH THỨC MUA SẮM KHÁC XUẤT KHO, KHÔNG THỰC HIỆN MUA SẮM---- ------------THÌ NHÀ CUNG CẤP BẮT BUỘC CHỌN----------------- IF(@TRAN_TYPE_ID NOT IN ('TRN0000000006', 'TRN0000000007') AND (@SUP_NAME IS NULL OR @SUP_NAME = '')) BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS RESULT, '' REQ_ID, N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + N'. Bắt buộc chọn nhà cung cấp nếu hình thức mua sắm không thuộc (Xuất kho, Không thực hiện mua sắm)' ErrorDesc RETURN '-1' END --------------ENDBAODNQ-------------------- --------------------BAODNQ 6/12/2022--------------------------- ------------------TH nếu có nhập BBXG----------------- IF(@p_TR_REPORT_PRICE_TYPE IS NOT NULL AND @p_TR_REPORT_PRICE_TYPE <> '') BEGIN -------------nếu chọn HTMS là chỉ định thầu hoặc mua sắm trực tiếp (HĐNT), ko cho lưu-------------- IF(@TRAN_TYPE_ID IN ('TRN0000000003', 'TRN0000000008')) BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS RESULT, '' REQ_ID, N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho biên bản xét giá.' + CHAR(10) + N'
* Nếu sử dụng biên bản xét giá, vui lòng chọn một trong các hình thức mua sắm : (Mua sắm trực tiếp, Chào hàng cạnh tranh, Đấu thầu hạn chế, Đấu thầu rộng rãi).' + CHAR(13)+CHAR(10) + N'
* Nếu chọn hình thức ' + @p_TRAN_TYPE_NAME + N', vui lòng xóa biên bản xét giá.' ErrorDesc RETURN '-1' END END ------------------TH nếu có nhập tờ trình CĐT/ tờ trình xin chi phí-------------------- IF(EXISTS(SELECT * FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID)) BEGIN ----------Nếu có 1 dòng có HTMS là (Mua sắm trực tiếp, Chào hàng cạnh tranh, Đấu thầu hạn chế, Đấu thầu rộng rãi), ko cho lưu------------------ IF(@TRAN_TYPE_ID IN ('TRN0000000001', 'TRN0000000002', 'TRN0000000004', 'TRN0000000005')) BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION --------------------Tờ trình chỉ định thầu------------------------ IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'CDT') BEGIN SELECT '-1' AS RESULT, '' REQ_ID, N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình chỉ định thầu.' + N' Nếu sử dụng tờ trình chỉ định thầu, vui lòng chọn hình thức mua sắm chỉ định thầu.' + N' Nếu chọn hình thức mua sắm ' + @p_TRAN_TYPE_NAME + N', vui lòng xóa tờ trình chỉ định thầu.' ErrorDesc RETURN '-1' END --------------------Tờ trình xin chi phí------------------------ ELSE IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'TTCP') BEGIN SELECT '-1' AS RESULT, '' REQ_ID, N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình xin chi phí.' + N' Nếu sử dụng tờ trình xin chi phí, vui lòng chọn hình thức mua sắm mua sắm trực tiếp (HĐNT).' + N' Nếu chọn hình thức mua sắm ' + @p_TRAN_TYPE_NAME + N', vui lòng xóa tờ trình xin chi phí.' ErrorDesc RETURN '-1' END END IF(@TRAN_TYPE_ID IN ('TRN0000000003', 'TRN0000000008')) BEGIN ---------------nếu làm tờ trình CĐT mà chọn HTMS là mua sắm trực tiếp (HĐNT), ko cho lưu----------------- IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'CDT' AND @TRAN_TYPE_ID = 'TRN0000000008' ) BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS RESULT, '' REQ_ID, N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình chỉ định thầu.' + N' Nếu sử dụng tờ trình chỉ định thầu, vui lòng chọn hình thức mua sắm chỉ định thầu.' + N' Nếu chọn hình thức mua sắm ' + @p_TRAN_TYPE_NAME + N', vui lòng xóa tờ trình chỉ định thầu.' ErrorDesc RETURN '-1' END ---------------nếu làm tờ trình xin chi phí mà chọn HTMS là chỉ định thầu, ko cho lưu----------------- ELSE IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'TTCP' AND @TRAN_TYPE_ID = 'TRN0000000003' ) BEGIN CLOSE ListGoods DEALLOCATE ListGoods ROLLBACK TRANSACTION SELECT '-1' AS RESULT, '' REQ_ID, N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình xin chi phí.' + N' Nếu sử dụng tờ trình xin chi phí, vui lòng chọn hình thức mua sắm mua sắm trực tiếp (HĐNT).' + N' Nếu chọn hình thức mua sắm ' + @p_TRAN_TYPE_NAME + N', vui lòng xóa tờ trình xin chi phí.' ErrorDesc RETURN '-1' END END END --------------------ENDBAODNQ 6/12/2022--------------------------- -------------BAODNQ 1/12/2022 : Nếu hình thức mua sắm là không thực hiện mua sắm thì ko lưu lại NCC-------- IF(@TRAN_TYPE_ID = 'TRN0000000007') BEGIN SET @SUP_NAME = NULL SET @SUP_ID = '' END ------------ENDBAODNQ----------------- ELSE BEGIN --LUCTV 21052020 KIEM TRA NEU CHUA TON TAI NHA CUNG CAP THI THEM MOI NHA CUNG CAP IF((@SUP_NAME IS NOT NULL AND @SUP_NAME <> '') AND NOT EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>'')) BEGIN EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT INSERT INTO CM_SUPPLIER([DISCIPLINES],[SUP_ID],[SUP_CODE],[SUP_NAME],[SUP_TYPE_ID],[REGION_ID],[ADDR],[EMAIL],[TAX_NO],[TEL],[CONTACT_PERSON],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],ACC_NUM) VALUES('', @l_SUP_ID ,@l_SUP_ID ,@SUP_NAME ,NULL ,NULL ,'' ,'' ,'' ,'' ,'' ,'' ,'1' ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,'U' ,NULL,NULL,NULL) END ---- --IF(@SUP_ID IS NULL OR @SUP_ID='') IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>'')) SET @SUP_ID =(SELECT TOP 1 SUP_ID FROM dbo.CM_SUPPLIER WHERE SUP_NAME=@SUP_NAME) IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>'' AND SUP_ID =@SUP_ID)) SET @SUP_ID =(SELECT TOP 1 SUP_ID FROM dbo.CM_SUPPLIER WHERE SUP_ID=@SUP_ID AND SUP_NAME = @SUP_NAME) IF(@SUP_NAME IS NULL AND @SUP_NAME = '') SET @SUP_ID = NULL END -----------BAODNQ 1/12/2022 : TẠM THỜI HOT FIX TỔNG SỐ TIỀN TÍNH THEO ĐƠN GIÁ--------------- IF(@CURRENCY != 'VND') BEGIN SET @TOTAL_AMT = ((@PRICE * @QUANTITY) + @TAXES) * @EXCHANGE_RATE END ELSE BEGIN SET @TOTAL_AMT = @PRICE * @QUANTITY * 1 END ------------ENDBAODNQ----------------- UPDATE dbo.TR_REQUEST_DOC_DT SET CURRENCY =@CURRENCY, EXCHANGE_RATE =@EXCHANGE_RATE, TAXES =@TAXES, PRICE=@PRICE, --TOTAL_AMT=ROUND(((QUANTITY * @PRICE + @TAXES) * @EXCHANGE_RATE),0), TOTAL_AMT = @TOTAL_AMT, TRAN_TYPE_ID=@TRAN_TYPE_ID, SUP_ID=@SUP_ID, BID_ID=@BID_ID, OFFERING_VALUE =@OFFERING_VALUE, NOTE_DVMS =@NOTE_DVMS, PO_ID = @PO_ID, PO_AMT = @PO_AMT, TOTAL_AMT_ETM = @TOTAL_AMT_ETM, ----------BADNQ 21/4/2022: Đổi tên biến cập nhật------- DESCRIPTION = @DES_GOOD, UNIT_NAME = @UNIT_NAME, QUANTITY = @QUANTITY, REQ_DT = CONVERT(DATETIME, @REQ_DT, 103), HANGHOA_ID = @HANGHOA_ID, CONTRACT_ID = @CONTRACT_ID WHERE REQDT_ID=@REQDT_ID UPDATE dbo.BID_MASTER SET REQUEST_ID=@p_REQ_ID WHERE BID_ID=@BID_ID IF @@ERROR <> 0 GOTO ABORT1 -- next Group_Id FETCH NEXT FROM ListGoods INTO @REQDT_ID, @PL_REQDT_ID, @GOODS_ID, @DESCRIPTION, @QUANTITY, @PRICE, @TOTAL_AMT, @NOTES, @REQ_DT, @AMORT_MONTH, @TRAN_TYPE_ID, @SUP_ID, @BID_ID, @SUP_NAME, @OFFERING_VALUE, @NOTE_DVMS, @PO_ID, @PO_AMT, @TOTAL_AMT_ETM, @CURRENCY, @EXCHANGE_RATE , @TAXES, @DES_GOOD, @UNIT_NAME, @HANGHOA_ID, @CONTRACT_ID END CLOSE ListGoods DEALLOCATE ListGoods IF @@Error <> 0 GOTO ABORT UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT=(SELECT SUM(TOTAL_AMT) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID --Insert into TABLE PL_REQUEST_DOC_DT Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter DECLARE ListCostCenters CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/ListCostCenter',2) WITH ( COST_ID varchar(15), NOTES nvarchar(1000), AUTH_STATUS varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(30), CHECKER_ID varchar(15), APPROVE_DT varchar(30) ) OPEN ListCostCenters Declare @COST_ID varchar(15), @AUTH_STATUS varchar(15), @MAKER_ID varchar(15), @CREATE_DT varchar(30), @CHECKER_ID varchar(15), @APPROVE_DT varchar(30) FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_REQ_COST_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT INSERT INTO dbo.TR_REQUEST_COSTCENTER ( REQ_COST_ID, COST_ID, REQ_ID, NOTES, AUTH_STATUS, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT ) VALUES ( @l_REQ_COST_ID, -- REQ_COST_ID - varchar(15) @COST_ID, -- COST_ID - varchar(15) @p_REQ_ID, -- REQ_ID - varchar(15) @NOTES, -- NOTES - nvarchar(500) @AUTH_STATUS, -- AUTH_STATUS - varchar(1) @MAKER_ID, -- MAKER_ID - varchar(15) convert(datetime,@CREATE_DT,103), -- CREATE_DT - datetime @CHECKER_ID, -- CHECKER_ID - varchar(15) convert(datetime,@APPROVE_DT,103)-- APPROVE_DT - datetime ) IF @@ERROR <> 0 GOTO ABORT1 -- next Group_Id FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT END CLOSE ListCostCenters DEALLOCATE ListCostCenters UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT= (SELECT SUM(TOTAL_AMT) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID --Insert into TABLE TR_REQUEST_DOC_FILE if(@p_ListTrREQFile is not null and cast(@p_ListTrREQFile as nvarchar(max)) != '') begin --Insert into TABLE TR_REQUEST_DOC_FILE DECLARE @tableTrREQFile TABLE( TR_REQUEST_DOC_FILE_ID varchar(20) , IS_VIEW bit, REQ_ID varchar(20), NOTES nvarchar(200) ) Declare @fdoc INT Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile INSERT INTO @tableTrREQFile SELECT * FROM OPENXML(@fDoc,'/Root/ListTrREQ',2) WITH ( TR_REQUEST_DOC_FILE_ID varchar(20) , IS_VIEW bit, REQ_ID varchar(20), NOTES nvarchar(200) ) delete TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID not in (select TR_REQUEST_DOC_FILE_ID from @tableTrREQFile) and REQ_ID = @p_REQ_ID DECLARE ListTrREQFile CURSOR FOR SELECT * FROM @tableTrREQFile OPEN ListTrREQFile Declare @TR_REQUEST_DOC_FILE_ID varchar(20) , @IS_VIEW bit, @REQ_ID varchar(20), @_NOTES nvarchar(200) FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_REQFile_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out --select @l_REQFile_ID --select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523' IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT ---------------------BAODNQ 23/5/2022: Chỉnh sửa đính kèm file------------ DECLARE @p_REF_ID VARCHAR(15) --INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE') IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0 begin update TR_REQUEST_DOC_FILE set IS_VIEW=isnull(@IS_VIEW,0),REQ_ID = @p_REQ_ID,NOTES=@_NOTES where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID SET @p_REF_ID = @TR_REQUEST_DOC_FILE_ID end else begin INSERT INTO dbo.TR_REQUEST_DOC_FILE ( [TR_REQUEST_DOC_FILE_ID] ,[IS_VIEW] ,[REQ_ID] ,[NOTES] ) VALUES ( @l_REQFile_ID ,isnull(@IS_VIEW,0) ,@p_REQ_ID, @_NOTES ) SET @p_REF_ID = @l_REQFile_ID end INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@p_REF_ID, 'TR_REQUEST_DOC_FILE') FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES END CLOSE ListTrREQFile DEALLOCATE ListTrREQFile end if(select count(*) from @TEMP) = 0 begin INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE') end COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_ID REQ_ID,[REF_ID], [TYPE] , @p_REQ_CODE AS ErrorDesc from @TEMP RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS RESULT RETURN '-1' End ABORT1: BEGIN CLOSE ListGoods DEALLOCATE ListGoods CLOSE ListCostCenters DEALLOCATE ListCostCenters ROLLBACK TRANSACTION SELECT '-1' AS RESULT RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_CAR_COST_SendConfirm]' GO ALTER PROC [dbo].[TR_REQUEST_CAR_COST_SendConfirm] @p_REQ_ID VARCHAR(20) NULL, @p_USER_LOGIN VARCHAR(20) NULL AS BEGIN TRANSACTION DECLARE @PROCESS_ID VARCHAR(20),@MAKER_ID VARCHAR(20) IF(NOT EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) WHERE ROLE_ID='CVDDX')) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Gửi xác nhận chi phí thất bại! Bạn không phải chuyên viên điều động xe' ErrorDesc RETURN '-1' END UPDATE TR_REQUEST_CAR SET PROCESS_ID='MAKER_APP' WHERE REQ_ID= @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_REQ_ID, 'CV_SEND', @p_USER_LOGIN, GETDATE(), N'Chuyên viên gửi xác nhận chi phí thành công' , N'Chuyên viên gửi xác nhận chi phí ' ) UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE REQ_ID=@p_REQ_ID AND STATUS_JOB='C' AND TYPE_JOB='CV' UPDATE PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=GETDATE(),NOTES=N'Chuyên viên điều động xe xử lý thành công' WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='CV_XL' DELETE PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='R' SELECT @MAKER_ID=MAKER_ID FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'MAKER_APP', 'C',@MAKER_ID, '','','',NULL,'CV_XL','N','', '', N'Chờ người tạo xác nhận chi phí',0 ) COMMIT TRANSACTION SELECT '0' as Result,N'Gửi xác nhận chi phí thành công' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Gửi xác nhận chi phí thất bại. Xin vui lòng thử lại' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_CAR_Cancel]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_CAR_Cancel] @p_REQ_ID varchar(15) = NULL, @p_CANCEL_DT VARCHAR(50) = NULL, @p_USER_NAME varchar(100) = NULL, @p_NOTES NVARCHAR(500)= NULL AS BEGIN BEGIN TRANSACTION DECLARE @p_PROCESS_ID VARCHAR(15),@p_IS_CV BIT =0,@p_REQ_CODE VARCHAR(20) SELECT @p_REQ_CODE=REQ_CODE,@p_PROCESS_ID=PROCESS_ID FROM dbo.TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_ID IF( @p_PROCESS_ID IN('CANCEL')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Phiếu yêu cầu đã bị hủy' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_USER_NAME) tugr WHERE tugr.ROLE_ID='CVDDX')) BEGIN SET @p_IS_CV=1 IF(@p_PROCESS_ID IN('CV_APP','CV_SEND')) BEGIN -- CẬP NHẬT TRẠNG THÁI CHO REQUEST_PROCESS UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_USER_NAME,APPROVE_DT=CONVERT(DATETIME, @p_CANCEL_DT, 103) WHERE REQ_ID=@p_REQ_ID AND [STATUS] ='C' IF @@Error <> 0 GOTO ABORT END UPDATE TR_REQUEST_CAR SET PROCESS_ID='CANCEL',AUTH_STATUS='D' WHERE REQ_ID=@p_REQ_ID IF @@Error <> 0 GOTO ABORT DECLARE @p_LOG_ID VARCHAR(20) EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @p_LOG_ID out IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT INSERT INTO [dbo].[CM_REJECT_LOG] VALUES (@p_LOG_ID,'CV',@p_REQ_ID,'TR_REQUEST_CAR',CONVERT(DATETIME,GETDATE(),103),'D',@p_NOTES,'N',@p_USER_NAME,CONVERT(DATETIME,GETDATE(),103)) -- insert log INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'CANCEL',@p_USER_NAME,CONVERT(DATETIME, @p_CANCEL_DT, 103),@p_NOTES,N'Hủy phiếu thành công' ) IF(EXISTS(SELECT 1 FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_CAR_ID=@p_REQ_ID)) BEGIN DECLARE @lstJob TABLE(REQ_ID VARCHAR(20)) INSERT INTO @lstJob SELECT REQ_ID FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_CAR_ID=@p_REQ_ID UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_USER_NAME,APPROVE_DT=CONVERT(DATETIME, @p_CANCEL_DT, 103) WHERE REQ_ID IN (SELECT REQ_ID FROM @lstJob) AND [STATUS] ='C' IF @@Error <> 0 GOTO ABORT UPDATE TR_REQUEST_CAR SET PROCESS_ID='CANCEL',AUTH_STATUS='D' WHERE REQ_ID IN (SELECT REQ_ID FROM @lstJob) IF @@Error <> 0 GOTO ABORT DECLARE @LOG_ID VARCHAR(20) EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @LOG_ID out IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT WHILE ((SELECT COUNT(*) FROM @lstJob) = 0) BEGIN DECLARE @tmp VARCHAR(20) SELECT TOP(1)@tmp FROM @lstJob INSERT INTO [dbo].[CM_REJECT_LOG] VALUES (@p_LOG_ID,'CV',@tmp,'TR_REQUEST_JOB_FORM',CONVERT(DATETIME,GETDATE(),103),'D',@p_NOTES,'N',@p_USER_NAME,CONVERT(DATETIME,GETDATE(),103)) DELETE @lstJob WHERE REQ_ID=@tmp END -- insert log INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @tmp,'CANCEL',@p_USER_NAME,CONVERT(DATETIME, @p_CANCEL_DT, 103),@p_NOTES,N'Phiếu PYC Xe'+@p_REQ_CODE+N' bị hủy' ) DELETE @lstJob WHERE REQ_ID=@p_REQ_ID END END COMMIT TRANSACTION SELECT '0' as Result, N'Hủy phiếu thành công' AS NOTIFATION,@p_IS_CV IS_CV,'CANCEL' PROCESS_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS RESULT RETURN '-1' End END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[MW_TRANSFER_Ins]' GO /*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('MW_TRANSFER','MWTF','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('MWTF','1','1')*/ /*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('MW_TRANSFER_DT','MWTDT','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('MWTDT','1','1')*/ ALTER PROCEDURE [dbo].[MW_TRANSFER_Ins] @p_TRN_DATE VARCHAR(20) = NULL, @p_TRN_TIME VARCHAR(50) = NULL, @p_QTY DECIMAL(18,2) = NULL, @p_PRICE NUMERIC(18, 0) = NULL, @p_TOTAL_AMT NUMERIC(18, 2) = NULL, @p_NOTES NVARCHAR(1000) = 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_KT_AUTH_STATUS VARCHAR(1) = NULL, @p_KT_MAKER_ID VARCHAR(15) = NULL, @p_KT_CREATE_DT VARCHAR(20) = NULL, @p_KT_CHECKER_ID VARCHAR(15) = NULL, @p_KT_APPROVE_DT VARCHAR(20) = NULL, @p_RECORD_STATUS VARCHAR(1) = NULL, @p_FRM_BRANCH_ID VARCHAR(15) = NULL, @p_FRM_DEPT_ID VARCHAR(15) = NULL, @p_XmlData XML = NULL, @p_BRANCH_CREATE VARCHAR(15) = NULL, @p_WARE_HOUSE VARCHAR(15) = NULL AS DECLARE --DVSD @p_TRANSFER_CODE NVARCHAR(100) =NULL, @TRANSFER_ID VARCHAR(15) = NULL, @MAST_BAL_ID VARCHAR(15) = NULL, @FR_BRN_ID VARCHAR(15) = NULL, @FR_DEPT_ID VARCHAR(15) = NULL, @FR_PRICE_ID VARCHAR(15) = NULL, @TO_BRN_ID VARCHAR(15) = NULL, @TO_DEPT_ID VARCHAR(15) = NULL, @QTY DECIMAL(18,2) = NULL, @QTY_OLD DECIMAL(18,2) = NULL, @PRICE NUMERIC(18, 0) = NULL, @TOTAL_AMT NUMERIC(18, 2) = NULL, @NOTES NVARCHAR(1000) = NULL, @COST_ACC VARCHAR(50) = NULL; DECLARE @hdoc INT; EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData; DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML (@hdoc, '/Root/XmlData', 2) WITH (TRANSFER_ID VARCHAR (15), MAST_BAL_ID VARCHAR (15), FR_BRN_ID VARCHAR (15), FR_DEPT_ID VARCHAR (15), FR_PRICE_ID VARCHAR (15), TO_BRN_ID VARCHAR (15), TO_DEPT_ID VARCHAR (15), QTY DECIMAL(18,2), QTY_OLD DECIMAL(18,2), PRICE NUMERIC (18, 2), TOTAL_AMT NUMERIC (18, 2), NOTES NVARCHAR (1000), COST_ACC VARCHAR(50) ); OPEN XmlData; BEGIN TRANSACTION; DECLARE @p_TRANSFER_ID VARCHAR(15); EXEC [MW_TRANSFER_CODE_Gen] @p_BRANCH_CREATE,@p_WARE_HOUSE, @p_TRANSFER_CODE OUT; EXEC SYS_CodeMasters_Gen 'MW_TRANSFER', @p_TRANSFER_ID OUT; IF @p_TRANSFER_ID = '' OR @p_TRANSFER_ID IS NULL GOTO ABORT; INSERT INTO [dbo].[MW_TRANSFER] ( [TRANSFER_ID], [TRN_DATE], [TRN_TIME], [QTY], [PRICE], [TOTAL_AMT], [NOTES], [AUTH_STATUS], [MAKER_ID], [CREATE_DT], [CHECKER_ID], [APPROVE_DT], [KT_AUTH_STATUS], [KT_MAKER_ID], [KT_CREATE_DT], [KT_CHECKER_ID], [KT_APPROVE_DT], [RECORD_STATUS], [FR_BRN_ID], FR_DEPT_ID, CORE_NOTE, BRANCH_CREATE, WARE_HOUSE,TRANSFER_CODE ) SELECT @p_TRANSFER_ID, CONVERT (DATETIME, GETDATE(), 103), CONVERT (DATE, @p_TRN_TIME, 103), @p_QTY, ROUND(@p_PRICE,0), @p_TOTAL_AMT, @p_NOTES, 'U', @p_MAKER_ID, CONVERT (DATETIME, GETDATE (), 0), NULL, NULL, 'U', NULL, NULL, NULL, NULL, '1', @p_FRM_BRANCH_ID, @p_FRM_DEPT_ID, '', @p_BRANCH_CREATE,@p_WARE_HOUSE,@p_TRANSFER_CODE; IF @@Error <> 0 GOTO ABORT; --Insert XmlData FETCH NEXT FROM XmlData INTO @TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @COST_ACC; DECLARE @INDEX INT =0 DECLARE @PRICE_CODE VARCHAR(30) --LUCTV 03062020 DIEU CHINH THEO HOP DONG BAO HANH BAO TRI: KHONG CHO CN, PGD DIEU CHUYEN VAT LIEU DO CHINH MINH TAO DECLARE @BRANCH_TYPE_CRE VARCHAR(15), @l_COST_ACC VARCHAR(50); --END LUCTV WHILE @@FETCH_STATUS = 0 BEGIN SET @INDEX = @INDEX +1 SET @PRICE_CODE = (SELECT PRICE_CODE FROM MW_MAST_PRICE WHERE PRICE_ID=@FR_PRICE_ID) SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC WHEN @COST_ACC = null then MT.EXP_ACCTNO WHEN @COST_ACC = '' then MT.EXP_ACCTNO ELSE MT.EXP_ACCTNO END FROM dbo.MW_MAST_BAL A LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID WHERE A.MAST_BAL_ID = @MAST_BAL_ID) IF(@l_COST_ACC <> @COST_ACC) BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí sai quy định. Bạn chỉ được điều chỉnh tài khoản chi phí của vật liệu thuộc nhóm Vật Liệu Thẻ Dùng Chung.' ErrorDesc RETURN '-1' END IF(@COST_ACC IS NULL OR @COST_ACC = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí không được để trống' ErrorDesc RETURN '-1' END IF(@QTY > @QTY_OLD) BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc RETURN '-1' END --LUCTV: KIEM TRA XEM MAST_BAL_ID CO DANG DIEU CHUYEN CHO DON VI NAO KHAC HAY KHONG 29-11-2018 --IF(EXISTS (SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID <>@p_TRANSFER_ID --AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE AUTH_STATUS IS NOT NULL AND KT_AUTH_STATUS <>'' AND KT_AUTH_STATUS <>'A' AND RECORD_STATUS ='1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, -- '' TRANSFER_ID, -- N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+ @PRICE_CODE +N' đang được điều chuyển. Vui lòng duyệt thông tin trước khi tạo đợt điều chuyển mới!'ErrorDesc; -- RETURN '-1'; --END ----LUCTV: 09-04-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC DIEU CHUYEN THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD --IF(EXISTS(SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS= '1' AND TRANSFER_ID <>@p_TRANSFER_ID))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, '' TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được điều chuyển. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc; -- RETURN '-1'; --END ----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC DIEU CHUYEN THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD --IF(EXISTS(SELECT * FROM MW_OUT_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND OUT_ID IN (SELECT OUT_ID FROM MW_OUT WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS= '1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, '' TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE+N' đang được xuất sử dụng. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc; -- RETURN '-1'; --END ----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC THANH LY THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD --IF(EXISTS(SELECT * FROM MW_LIQ_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND LIQ_ID IN (SELECT LIQ_ID FROM MW_LIQ_MASTER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS= '1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, '' TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được thanh lý. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc; -- RETURN '-1'; --END ----KIEM TRA LAI SO LUONG (VI SE CO TRUONG HOP VUA DIEU CHUYEN, VUA XUAT SD, VƯA THU HOI, VUA THANH LY TREN 1 MAST_BAL_ID) -- LUCTV 03062020 DIEU CHINH THEO HOP DONG BAO HANH BAO TRI: KHONG CHO CN, PGD DIEU CHUYEN VAT LIEU DO CHINH MINH TAO SET @BRANCH_TYPE_CRE =(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE) --IF(@BRANCH_TYPE_CRE IN ('PGD','CN') AND @p_BRANCH_CREATE =@TO_BRN_ID) IF(@p_BRANCH_CREATE =@TO_BRN_ID) -- DuyTN BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': CN và PGD không được phép điều chuyển vật liệu về chính CN, PGD đang tạo phiếu điều chuyển vật liệu' ErrorDesc RETURN '-1' END ----- IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID)) BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc RETURN '-1' END DECLARE @p_TRANSFER_DT_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'MW_TRANSFER_DT', @p_TRANSFER_DT_ID OUT; IF @p_TRANSFER_DT_ID = '' OR @p_TRANSFER_DT_ID IS NULL GOTO ABORT; INSERT INTO [dbo].[MW_TRANSFER_DT] ( [TRANSFER_DT_ID], [TRANSFER_ID], [MAST_BAL_ID], [FR_BRN_ID], [FR_DEPT_ID], [FR_PRICE_ID], [TO_BRN_ID], [TO_DEPT_ID], [QTY], [QTY_OLD], [PRICE], [TOTAL_AMT], [NOTES], [COST_ACC] ) VALUES (@p_TRANSFER_DT_ID, @p_TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @QTY*@PRICE, @NOTES, @COST_ACC); IF @@Error <> 0 GOTO ABORT; FETCH NEXT FROM XmlData INTO @TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @COST_ACC; END; CLOSE XmlData; DEALLOCATE XmlData; -- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ DELETE dbo.PL_PROCESS WHERE REQ_ID = @p_TRANSFER_ID AND PROCESS_ID = 'INSERT' INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_TRANSFER_ID, -- REQ_ID - varchar(15) 'INSERT', -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Thêm mới phiếu điều chuyển vật liệu thành công' , N'Thêm mới phiếu điều chuyển vật liệu' -- PROCESS_DESC - nvarchar(1000) ) COMMIT TRANSACTION; SELECT '0' AS Result, @p_TRANSFER_ID TRANSFER_ID, @p_TRANSFER_CODE TRANSFER_CODE, '' ErrorDesc; RETURN '0'; ABORT: BEGIN CLOSE XmlData; DEALLOCATE XmlData; ROLLBACK TRANSACTION; SELECT '-1' AS Result, '' TRANSFER_ID, '' ErrorDesc; RETURN '-1'; END; GO IF @@ERROR <> 0 SET NOEXEC ON GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_PLAN_TYPE_Search]' GO ALTER PROCEDURE [dbo].[CM_PLAN_TYPE_Search] @p_PLAN_TYPE_CODE varchar(15) = NULL, @p_PLAN_TYPE_NAME Nvarchar(300) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID varchar(20) = NULL, @p_CREATE_DT varchar(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(20) = NULL, @p_APPROVE_DT varchar(20) = NULL, @p_YEAR VARCHAR(4)=NULL, @p_BRANCH_ID VARCHAR(20) = NULL, @p_DEP_ID VARCHAR(20)=NULL, @p_COST_ID VARCHAR(20)=NULL, @p_IS_MAIN BIT=NULL, @P_TOP INT = 10 AS BEGIN -- PAGING IF(@P_TOP is NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*,B.AUTH_STATUS_NAME -- SELECT END FROM dbo.CM_PLAN_TYPE A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS = B.AUTH_STATUS WHERE 1 = 1 AND (A.PLAN_TYPE_CODE like + '%' + @p_PLAN_TYPE_CODE + '%' OR @p_PLAN_TYPE_CODE IS NULL OR @p_PLAN_TYPE_CODE = '') AND (A.PLAN_TYPE_NAME like '%' + @p_PLAN_TYPE_NAME + '%' OR @p_PLAN_TYPE_NAME IS NULL OR @p_PLAN_TYPE_NAME = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND A.RECORD_STATUS = '1' AND(EXISTS(SELECT * FROM dbo.PL_MASTER WHERE (BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL) AND (COST_ID=@p_COST_ID OR @p_COST_ID='' OR @p_COST_ID IS NULL) AND (DEPT_ID=@p_DEP_ID OR @p_DEP_ID='' OR @p_DEP_ID IS NULL) AND (PL_MASTER.YEAR=@p_YEAR OR @p_YEAR='' OR @p_YEAR IS NULL) AND PL_MASTER.PLAN_TYPE_ID=A.PLAN_TYPE_ID)OR @p_IS_MAIN=1 ) -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(@P_TOP)A.*,B.AUTH_STATUS_NAME -- SELECT END FROM CM_PLAN_TYPE A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS = B.AUTH_STATUS WHERE 1 = 1 AND (A.PLAN_TYPE_CODE like + '%' + @p_PLAN_TYPE_CODE + '%' OR @p_PLAN_TYPE_CODE IS NULL OR @p_PLAN_TYPE_CODE = '') AND (A.PLAN_TYPE_NAME like '%' + @p_PLAN_TYPE_NAME + '%' OR @p_PLAN_TYPE_NAME IS NULL OR @p_PLAN_TYPE_NAME = '') AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '') AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '') AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND A.RECORD_STATUS = '1' AND(EXISTS(SELECT * FROM dbo.PL_MASTER WHERE (BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL) AND (COST_ID=@p_COST_ID OR @p_COST_ID='' OR @p_COST_ID IS NULL) AND (DEPT_ID=@p_DEP_ID OR @p_DEP_ID='' OR @p_DEP_ID IS NULL) AND (PL_MASTER.YEAR=@p_YEAR OR @p_YEAR='' OR @p_YEAR IS NULL) AND PL_MASTER.PLAN_TYPE_ID=A.PLAN_TYPE_ID )OR @p_IS_MAIN=1 ) -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[MW_TRANSFER_KT_Upd]' GO /*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('MW_TRANSFER','MWTF','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('MWTF','1','1')*/ /*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('MW_TRANSFER_DT','MWTDT','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('MWTDT','1','1')*/ ALTER PROCEDURE [dbo].[MW_TRANSFER_KT_Upd] @p_TRANSFER_ID varchar(15) = NULL, @p_TRN_DATE VARCHAR(20) = NULL, @p_TRN_TIME varchar(50) = NULL, @p_QTY DECIMAL(18,2) = NULL, @p_PRICE NUMERIC(18, 0) = NULL, @p_TOTAL_AMT numeric(18, 2) = NULL, @p_NOTES nvarchar(1000) = 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_KT_AUTH_STATUS varchar(1) = NULL, @p_KT_MAKER_ID varchar(15) = NULL, @p_KT_CREATE_DT VARCHAR(20) = NULL, @p_KT_CHECKER_ID varchar(15) = NULL, @p_KT_APPROVE_DT VARCHAR(20) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_FRM_BRANCH_ID VARCHAR(15) = NULL, @p_FRM_DEPT_ID VARCHAR(15) = NULL, @p_XmlData XML = NULL, @p_CORE_NOTE VARCHAR(1000) = NULL, @p_WARE_HOUSE VARCHAR(15) = NULL AS DECLARE --DVSD @TRANSFER_DT_ID varchar(20) = NULL, @TRANSFER_ID varchar(15) = NULL, @MAST_BAL_ID varchar(15) = NULL, @FR_BRN_ID varchar(15) = NULL, @FR_DEPT_ID varchar(15) = NULL, @FR_PRICE_ID varchar(15) = NULL, @TO_BRN_ID varchar(15) = NULL, @TO_DEPT_ID varchar(15) = NULL, @QTY DECIMAL(18,2) = NULL, @QTY_OLD DECIMAL(18,2) = NULL, @PRICE NUMERIC(18, 0) = NULL, @TOTAL_AMT numeric(18, 2) = NULL, @NOTES nvarchar(1000) = NULL, @COST_ACC varchar(50) = NULL Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XmlData DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/XmlData',2) WITH ( TRANSFER_DT_ID varchar(20), TRANSFER_ID varchar(15) , MAST_BAL_ID varchar(15) , FR_BRN_ID varchar(15) , FR_DEPT_ID varchar(15) , FR_PRICE_ID varchar(15) , TO_BRN_ID varchar(15) , TO_DEPT_ID varchar(15) , QTY DECIMAL(18,2) , QTY_OLD DECIMAL(18,2) , PRICE NUMERIC(18, 0) , TOTAL_AMT numeric(18, 2) , NOTES nvarchar(1000), COST_ACC varchar(50) ) OPEN XmlData BEGIN TRANSACTION --LUCTV: NGAY 07 -06 2019. BO SUNG RANG BUOC NEU DANG TRA VE CHO HANH CHINH THI KHONG DUOC PHEP CAP NHAT THONG TIN IF( (SELECT AUTH_STATUS FROM MW_TRANSFER WHERE TRANSFER_ID = @p_TRANSFER_ID)<>'A') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result,'' TRANSFER_ID, N'Thông tin điều chuyển đang bị trả về bộ phận hành chính. Vui lòng chờ bộ phận hành chính kiểm duyệt' ErrorDesc RETURN '-1' END -- END LUCTV: NGAY 07 -06 2019. UPDATE [dbo].[MW_TRANSFER] SET [TRN_TIME] = CONVERT(DATE,@p_TRN_TIME,103), [QTY] = @p_QTY, [PRICE] = ROUND(@p_PRICE,0), [TOTAL_AMT] = @p_TOTAL_AMT, [NOTES] = @p_NOTES,KT_CREATE_DT =CONVERT(DATETIME,@p_KT_CREATE_DT,103), KT_MAKER_ID =@p_KT_MAKER_ID,FR_BRN_ID = @p_FRM_BRANCH_ID, FR_DEPT_ID = @p_FRM_DEPT_ID, CORE_NOTE = @p_CORE_NOTE,WARE_HOUSE=@p_WARE_HOUSE, KT_AUTH_STATUS ='U' WHERE [TRANSFER_ID] = @p_TRANSFER_ID IF @@Error <> 0 GOTO ABORT --Insert XmlData --DELETE FROM MW_TRANSFER_DT WHERE TRANSFER_ID =@p_TRANSFER_ID DECLARE @INDEX INT =0 DECLARE @l_COST_ACC VARCHAR(50); DECLARE @PRICE_CODE VARCHAR(30) FETCH NEXT FROM XmlData INTO @TRANSFER_DT_ID, @TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY , @QTY_OLD, @PRICE, @TOTAL_AMT , @NOTES, @COST_ACC WHILE @@FETCH_STATUS = 0 BEGIN SET @INDEX = @INDEX+1 SET @PRICE_CODE= (SELECT PRICE_CODE FROM MW_MAST_PRICE WHERE PRICE_ID =@FR_PRICE_ID) IF(@QTY > @QTY_OLD) BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc RETURN '-1' END SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC WHEN @COST_ACC = null then MT.EXP_ACCTNO WHEN @COST_ACC = '' then MT.EXP_ACCTNO ELSE MT.EXP_ACCTNO END FROM dbo.MW_MAST_BAL A LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID WHERE A.MAST_BAL_ID = @MAST_BAL_ID) IF(@l_COST_ACC <> @COST_ACC) BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí sai quy định. Bạn chỉ được điều chỉnh tài khoản chi phí của vật liệu thuộc nhóm Vật Liệu Thẻ Dùng Chung.' ErrorDesc RETURN '-1' END IF(@COST_ACC IS NULL OR @COST_ACC = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí không được để trống' ErrorDesc RETURN '-1' END ----LUCTV: KIEM TRA XEM MAST_BAL_ID CO DANG DIEU CHUYEN CHO DON VI NAO KHAC HAY KHONG 29-11-2018 --IF(EXISTS (SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID <>@p_TRANSFER_ID --AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE AUTH_STATUS IS NOT NULL AND KT_AUTH_STATUS <>'' AND KT_AUTH_STATUS <>'A' AND RECORD_STATUS='1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, -- '' TRANSFER_ID, -- 'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+ @PRICE_CODE +N' đang được điều chuyển. Vui lòng duyệt thông tin trước khi tạo đợt điều chuyển mới!'ErrorDesc; -- RETURN '-1'; --END ----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC XUAT SD THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD --IF(EXISTS(SELECT * FROM MW_OUT_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND OUT_ID IN (SELECT OUT_ID FROM MW_OUT WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, '' TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được xuất sử dụng. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc; -- RETURN '-1'; --END ----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC THANH LY THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD --IF(EXISTS(SELECT * FROM MW_LIQ_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND LIQ_ID IN (SELECT LIQ_ID FROM MW_LIQ_MASTER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, '' TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được thanh lý. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc; -- RETURN '-1'; --END -- DECLARE @p_TRANSFER_DT_ID VARCHAR(15) -- EXEC SYS_CodeMasters_Gen 'MW_TRANSFER_DT', @p_TRANSFER_DT_ID out -- IF @p_TRANSFER_DT_ID='' OR @p_TRANSFER_DT_ID IS NULL GOTO ABORT -- INSERT INTO [dbo].[MW_TRANSFER_DT] ([TRANSFER_DT_ID], [TRANSFER_ID], [MAST_BAL_ID], [FR_BRN_ID], [FR_DEPT_ID], [FR_PRICE_ID], [TO_BRN_ID], [TO_DEPT_ID], [QTY], [QTY_OLD], [PRICE], [TOTAL_AMT], [NOTES]) -- VALUES( @p_TRANSFER_DT_ID, @p_TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES) IF(ISNULL(@TRANSFER_DT_ID, '') = '') BEGIN print 'have not id' /* DECLARE @p_TRANSFER_DT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'MW_TRANSFER_DT', @p_TRANSFER_DT_ID out IF @p_TRANSFER_DT_ID='' OR @p_TRANSFER_DT_ID IS NULL GOTO ABORT INSERT INTO [dbo].[MW_TRANSFER_DT] ([TRANSFER_DT_ID], [TRANSFER_ID], [MAST_BAL_ID], [FR_BRN_ID], [FR_DEPT_ID], [FR_PRICE_ID], [TO_BRN_ID], [TO_DEPT_ID], [QTY], [QTY_OLD], [PRICE], [TOTAL_AMT], [NOTES], [COST_ACC]) VALUES( @p_TRANSFER_DT_ID, @p_TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @COST_ACC) */ END ELSE BEGIN UPDATE MW_TRANSFER_DT SET TO_BRN_ID = @TO_BRN_ID, TO_DEPT_ID = @TO_DEPT_ID, NOTES = @NOTES, COST_ACC = @COST_ACC WHERE TRANSFER_DT_ID = @TRANSFER_DT_ID END IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM XmlData INTO @TRANSFER_DT_ID, @TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY , @QTY_OLD, @PRICE, @TOTAL_AMT , @NOTES, @COST_ACC END CLOSE XmlData DEALLOCATE XmlData -- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ DELETE dbo.PL_PROCESS WHERE REQ_ID = @TRANSFER_ID AND PROCESS_ID = 'UPDATE_KT' INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @TRANSFER_ID, -- REQ_ID - varchar(15) 'UPDATE_KT', -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Cập nhật phiếu điều chuyển vật liệu kế toán thành công' , N'Cập nhật phiếu điều chuyển vật liệu kế toán' -- PROCESS_DESC - nvarchar(1000) ) COMMIT TRANSACTION SELECT '0' as Result, @p_TRANSFER_ID TRANSFER_ID ,'' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANSFER_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CM_PLAN_TYPE_Upd]' GO ALTER PROCEDURE [dbo].[CM_PLAN_TYPE_Upd] @p_PLAN_TYPE_ID varchar(15) = null , @p_PLAN_TYPE_CODE varchar(15) = NULL , @p_PLAN_TYPE_NAME Nvarchar(300) = NULL , @p_NOTES nvarchar(1000) = NULL , @p_RECORD_STATUS varchar(1) = NULL , @p_MAKER_ID varchar(20) = NULL , @p_EDIT_DT varchar(20) = NULL, @p_AUTH_STATUS varchar(50) = NULL , @p_CHECKER_ID varchar(20) = NULL , @p_APPROVE_DT varchar(20) = NULL AS BEGIN TRANSACTION --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( EXISTS ( SELECT * FROM dbo.CM_PLAN_TYPE WHERE PLAN_TYPE_CODE=@p_PLAN_TYPE_CODE AND PLAN_TYPE_ID<>@p_PLAN_TYPE_ID)) SET @ERRORSYS = 'PLCODE-0001' IF @ERRORSYS <> '' BEGIN ROLLBACK TRANSACTION SELECT ErrorCode Result, '' PLAN_TYPE_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END UPDATE dbo.CM_PLAN_TYPE SET [PLAN_TYPE_CODE] = @p_PLAN_TYPE_CODE,[PLAN_TYPE_NAME] = @p_PLAN_TYPE_NAME,[NOTES] = @p_NOTES,[RECORD_STATUS] = @p_RECORD_STATUS,[EDITER_ID] = @p_MAKER_ID,[EDIT_DT] = CONVERT(DATETIME, @p_EDIT_DT, 103),[AUTH_STATUS] = @p_AUTH_STATUS,[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE PLAN_TYPE_ID= @p_PLAN_TYPE_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_PLAN_TYPE_ID PLAN_TYPE_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' PLAN_TYPE_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_CAR_Del]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_CAR_Del] @p_REQ_ID varchar(15) AS IF ( NOT EXISTS ( SELECT * FROM TR_REQUEST_CAR WHERE REQ_ID= @p_REQ_ID)) BEGIN SELECT '-1' Result , 'Phiếu yêu cầu không tồn tại!' ErrorDesc RETURN '-1' END BEGIN TRANSACTION IF(EXISTS(SELECT * FROM TR_REQUEST_CAR WHERE REQ_ID =@p_REQ_ID AND (AUTH_STATUS <>'E' AND AUTH_STATUS <>'R'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Bạn chỉ được phép xóa khi phiếu đang ở tình trạng lưu nháp' ErrorDesc RETURN '-1' END Delete FROM TR_REQUEST_CAR WHERE REQ_ID= @p_REQ_ID Delete FROM TR_REQUEST_CAR_Detail WHERE REQ_ID= @p_REQ_ID Delete FROM dbo.TR_REQ_CAR_FUEL WHERE REQ_ID= @p_REQ_ID DELETE FROM PL_PROCESS WHERE REQ_ID= @p_REQ_ID DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID= @p_REQ_ID DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_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, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_JOB_FORM_PROCESS_Upd]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_JOB_FORM_PROCESS_Upd] @p_REQ_ID varchar(15) = NULL, @p_TYPE_PROCESS varchar(15) = NULL, @p_MAKERID varchar(100)= NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_CHECKER_ID VARCHAR(100) = NULL, @p_APPROVE_DT VARCHAR(50) = NULL, @p_NOTES NVARCHAR(500)= NULL AS BEGIN DECLARE @NOTIFATION NVARCHAR(200) = NULL, @NOTIFY_TO_USER NVARCHAR(100) = NULL, @EMAIL_CONTENT NVARCHAR(500) = NULL, @TYPEMAIL VARCHAR(20), @ROLE VARCHAR(20)= NULL, @BRANCHID VARCHAR(20)= NULL, @PROCESS_CURR VARCHAR(20)= NULL, @PROCESS_NEXT VARCHAR(20)= NULL, @BRANCH_NEXT VARCHAR(20)=NULL, @DEP_NEXT VARCHAR(20) = NULL, @DEP_ID VARCHAR(20) = NULL, @REQ_CODE VARCHAR(20) = NULL, @BRANCH_ID VARCHAR(20) = NULL, @DEPT_ID VARCHAR(20) = NULL DECLARE @p_LOG_ID VARCHAR(20),@COMPLETE BIT,@PROCESS_PARENT VARCHAR(20),@PROCESS_DES NVARCHAR(500),@EMP_ID NVARCHAR(500),@MAKER_ID VARCHAR(15),@STATUS VARCHAR(15) DECLARE @REQ_TYPE_BOOKING_AIR VARCHAR(15), @REQ_TYPE_BOOKING_HOTEL VARCHAR(15),@IS_SIGN BIT DECLARE @BRANCH_SIGN_ID VARCHAR(20),@DEP_SIGN_ID VARCHAR(20),@BRANCH_SIGN_TYPE VARCHAR(10),@ROLE_SIGN VARCHAR(20),@BRANCH_CREATE VARCHAR(20) SELECT @BRANCH_ID=tu.TLSUBBRID,@DEPT_ID=tu.DEP_ID,@EMP_ID =tmp.EMP_ID,@MAKER_ID = tmp.MAKER_ID, @REQ_TYPE_BOOKING_AIR=tmp.REQ_TYPE_BOOKING_AIR,@REQ_TYPE_BOOKING_HOTEL=tmp.REQ_TYPE_BOOKING_HOTEL,@BRANCH_CREATE=B.TLSUBBRID FROM (SELECT MAKER_ID,EMP_ID,REQ_TYPE_BOOKING_AIR,REQ_TYPE_BOOKING_HOTEL FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID) tmp JOIN TL_USER tu ON tmp.EMP_ID = tu.TLNANME LEFT JOIN dbo.TL_USER B ON tmp.MAKER_ID= B.TLNANME SET @REQ_CODE=(SELECT REQ_CODE FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID ) SET @PROCESS_CURR=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' ) SET @COMPLETE=0 --SET BEGIN TRANSACTION IF(@p_TYPE_PROCESS='NEW') BEGIN SET @TYPEMAIL ='SIGN' SET @STATUS = 'SIGN' DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS <> 'P' -----------------TH gửi phê duyệt sẽ by pass TDV phê duyệt----------- IF(EXISTS(SELECT 1 FROM CM_ALLCODE WHERE CDTYPE='REQ' AND CDNAME='CT_PASS' AND CDVAL=@EMP_ID)) BEGIN SELECT @REQ_TYPE_BOOKING_AIR=REQ_TYPE_BOOKING_AIR,@REQ_TYPE_BOOKING_HOTEL=REQ_TYPE_BOOKING_HOTEL FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID IF(@REQ_TYPE_BOOKING_AIR='AIR_B') BEGIN SET @TYPEMAIL='HO_APP' SET @STATUS = 'APPNEW' INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'HO_APP','C','NVDV',@BRANCH_CREATE,'',NULL,'APPNEW','N','','',N'Chờ Hành chính HO xử lý',NULL,'' ) INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'MAKER_CONF','U',@MAKER_ID,'', '', NULL,'HO_APP','N','','',N'Chờ người tạo xác nhận',NULL,'' ) INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'HCHO_XL','U','NVDV',@BRANCH_CREATE,'',NULL,'MAKER_CONF','N','','', N'Chờ Hành chính HO xử lý',NULL,'' ) INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'MAKER_APP','U',@MAKER_ID,'','',NULL,'HCHO_XL','N','','',N'Chờ người tạo phiếu xác nhận chuyến đi hoàn tất',NULL,'' ) SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được gửi duyệt thành công. Vui lòng đợi nhân viên hành chính HO xử lý phiếu' END ELSE IF(@REQ_TYPE_BOOKING_HOTEL='HOTEL_B') BEGIN SET @TYPEMAIL='HO_APP' SET @STATUS = 'APPNEW' INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID, 'HO_APP', 'C','NVDV', @BRANCH_CREATE, '',NULL, 'APPNEW','N','','',N'Chờ Hành chính HO xử lý',NULL,'' -- DEP_ID - varchar(20) ) INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,NOTES ) VALUES ( @p_REQ_ID,'APPROVE','U','','','',NULL,'HO_APP','Y',N'Hoàn tất' ) SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được gửi duyệt thành công. Vui lòng đợi nhân viên hành chính HO xử lý phiếu' END ELSE BEGIN SET @STATUS = 'APPNEW' SET @TYPEMAIL='APPROVE' UPDATE TR_REQUEST_JOB_FORM SET AUTH_STATUS = 'A',PROCESS_ID='APPROVE',CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_REQ_ID INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,NOTES ) VALUES ( @p_REQ_ID,'APPROVE','C','','','',NULL,'APPNEW','Y',N'Hoàn tất' ) SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã hoàn tất' END SET @COMPLETE = 1 END --TH Giám đốc khối tạo phiếu yêu cầu CT -> Không có PTGD, TGD duyệt trực tiếp ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK') AND NOT EXISTS(SELECT 1 FROM dbo.FN_GET_USER_MANAGER_BY_DVCM((SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID =@DEP_ID),'PTGD'))) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'SIGN','C','TKTGD',NULL,NULL,NULL,'','N','','','',N'Chờ Thư ký tổng giám đốc phê duyệt', NULL -- IS_HAS_CHILD - bit ) INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'APPNEW','U','TGD',NULL,NULL,'',NULL,'SIGN','N','','', N'Chờ tổng giám đốc phê duyệt' ,NULL -- IS_HAS_CHILD - bit ) UPDATE dbo.TR_REQUEST_JOB_FORM SET SIGN_USER='TKTGD' WHERE REQ_ID =@p_REQ_ID SET @TYPEMAIL='SEND' SET @STATUS = 'SEND' SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được gửi duyệt thành công. Vui lòng đợi thư ký tổng giám đốc vị phê duyệt' SET @COMPLETE = 1 END -----------------TH gửi phê duyệt có cấp duyệt trung gian----------- ELSE IF(EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND SIGN_USER IS NOT NULL)) BEGIN SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_REQ_ID) SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận' SET @IS_SIGN = 1 INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'SIGN','C',@ROLE_SIGN,@BRANCH_SIGN_ID,CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END,'',NULL,'','N','','',N'Chờ cấp phê duyệt trung gian xác nhận phiếu', NULL -- IS_HAS_CHILD - bit ) SET @TYPEMAIL='SEND' SET @STATUS = 'SEND' END IF(@COMPLETE <> 1) BEGIN IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK')) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'APPNEW',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'PTGD',NULL,NULL,'',NULL,'SIGN','N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID),N'Chờ phó tổng giám đốc phê duyệt' ,NULL -- IS_HAS_CHILD - bit ) END ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDDV')) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'APPNEW',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'GDK',NULL,NULL,'',NULL,'SIGN','N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID), N'Chờ giám đốc phê khối duyệt' ,NULL -- IS_HAS_CHILD - bit ) END ELSE BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'APPNEW',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'GDDV',@BRANCH_ID,CASE WHEN @BRANCH_ID='DV0001' THEN @DEPT_ID ELSE '' END,'',NULL,'SIGN','N','','', N'Chờ trưởng phòng phê duyệt' ,NULL -- IS_HAS_CHILD - bit ) END SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' gửi duyệt thành công. Vui lòng đợi trưởng phòng phê duyệt' END UPDATE TR_REQUEST_JOB_FORM SET IS_SEND_APPR = 'Y', SEND_DT = CONVERT(DATETIME, GETDATE(), 103),AUTH_STATUS='U',PROCESS_ID=@STATUS,SENDER_ID=@p_CHECKER_ID WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT ------Insert vào bảng lịch sử xử lý------------- INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'SEND', @p_CHECKER_ID, GETDATE(), N'Người tạo gửi phê duyệt thành công', N' Người tạo gửi phê duyệt') SET @COMPLETE = 1 IF @@ERROR <> 0 GOTO ABORT END ELSE IF(@p_TYPE_PROCESS='SEND') BEGIN IF(@PROCESS_CURR='SIGN') BEGIN IF NOT EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM trjf WHERE trjf.SIGN_USER=@p_CHECKER_ID OR EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) WHERE ROLE_ID =trjf.SIGN_USER)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải người phê duyệt trung gian' ErrorDesc RETURN '-1' END DELETE dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='R' UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Cấp phê duyệt trung gian đã xác nhận phiếu' WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='SIGN' UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U' SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' UPDATE TR_REQUEST_JOB_FORM SET AUTH_STATUS = 'U', SIGN_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103), PROCESS_ID='SIGN' WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'SIGN',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), @p_NOTES, N' Cấp trung gian xác nhận PYC công tác') SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt' SET @COMPLETE = 1 SET @TYPEMAIL ='SIGN' END IF(@PROCESS_CURR='HO_APP') BEGIN IF NOT EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID='UPDATE') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Xác nhận thất bại. Bạn chưa cập nhật thông tin cho phiếu' ErrorDesc RETURN '-1' END --kiểm tra đn có phải nvdv IF NOT EXISTS(SELECT 1 FROM [dbo].[TL_USER_GET_ROLES](@p_CHECKER_ID) WHERE ROLE_ID='NVDV') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải nhân viên đặt vé phòng hành chính' ErrorDesc RETURN '-1' END UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Hành chính HO đã xử lý' WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='HO_APP' UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U' SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' IF(@PROCESS_NEXT='APPROVE') BEGIN SET @TYPEMAIL='APPROVE' UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='APPROVE', AUTH_STATUS='A' WHERE REQ_ID = @p_REQ_ID SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được xác nhận thành công. PYC công tác đã được hoàn thành' END ELSE BEGIN SET @TYPEMAIL='SENDEMP' UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='HO_APP' WHERE REQ_ID = @p_REQ_ID SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được xác nhận thành thành công. Vui lòng đợi người tạo chọn chuyến bay' END IF @@ERROR <> 0 GOTO ABORT INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'HO_APP',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), N'Hành chính HO xử lý PYC công tác thành công', N' Hành Chính HO xử lý PYC công tác') SET @COMPLETE=1 END ELSE IF(@PROCESS_CURR='MAKER_CONF') BEGIN IF NOT EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID='UPDATE') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Trình phiếu thất bại! Bạn chưa cập nhật thông tin cho phiếu' ErrorDesc RETURN '-1' END --kiểm tra đn có phải người tạo or người sử dụng IF NOT EXISTS(SELECT 1 FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND (MAKER_ID=@p_CHECKER_ID OR EMP_ID=@p_CHECKER_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Trình phiếu thất bại! Bạn không phải người tạo hoặc người sử dụng phiếu này' ErrorDesc RETURN '-1' END UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Người tạo đã chọn vé thành công' WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='MAKER_CONF' UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U' SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='MAKER_CONF' WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'MAKER_CONF',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), N'Người tạo phiếu chọn vé cho chuyến bay thành công', N' Người tạo chọn vé cho chuyến bay') SET @COMPLETE = 1 SET @TYPEMAIL='SENDNVDV' SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được trình phiếu cho hành chính HO thành công. Vui lòng đợi hành chính HO đặt vé' END ELSE IF(@PROCESS_CURR='HCHO_XL') BEGIN IF NOT EXISTS(SELECT 1 FROM [dbo].[TL_USER_GET_ROLES](@p_CHECKER_ID) WHERE ROLE_ID='NVDV') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải nhân viên đặt vé phòng hành chính' ErrorDesc RETURN '-1' END UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Hành chính HO đặt vé thành công' WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='HCHO_XL' UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U' SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='HCHO_XL' WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT SET @COMPLETE= 1 SET @TYPEMAIL='NOFI' INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'HCHO_XL',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), N'Hành chính HO đặt vé thành công', N' Hành chính HO đặt vé thành công') SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được gửi thông báo thành công' END ELSE IF(@PROCESS_CURR='TRAIN_UPD') BEGIN IF NOT EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID='UPDATE') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Bạn chưa cập nhật thông tin cho phiếu' ErrorDesc RETURN '-1' END --kiểm tra đn có phải người tạo or người sử dụng phiếu IF NOT EXISTS(SELECT 1 FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND (MAKER_ID=@p_CHECKER_ID OR EMP_ID=@p_CHECKER_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Gửi phiếu thất bại! Bạn không phải người tạo hoặc người sử dụng phiếu yêu cầu công tác này' ErrorDesc RETURN '-1' END UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Cập nhật thông tin thành công' WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='TRAIN_UPD' UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U' SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID= CASE WHEN @PROCESS_NEXT='SIGN'THEN 'SEND' WHEN @PROCESS_NEXT='HO_APP'THEN 'APPNEW' ELSE 'SIGN' END WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'TRAIN_UPD',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), N'Người tạo thay đổi lộ trình', N' Người tạo thay đổi lộ trình thành công') SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được gửi duyệt thành công' END ELSE IF(@PROCESS_CURR='MAKER_APP') BEGIN IF NOT EXISTS(SELECT 1 FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND (MAKER_ID=@p_CHECKER_ID OR EMP_ID=@p_CHECKER_ID)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải người tạo hoặc người sử dụng phiếu này' ErrorDesc RETURN '-1' END UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Người tạo xác nhận hoàn thành chuyến công tác thành công' WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='MAKER_APP' UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U' SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='MAKER_APP' WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_REQ_ID, 'MAKER_APP',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), N'Người tạo xác nhận hoàn thành chuyến công tác. Chờ Hành chính xác nhận', N' Người tạo xác nhận hoàn tất chuyến đi') SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã xác nhận hoàn tất chuyến công tác thành công' DECLARE @PROCESS_ID_OLD VARCHAR(10) IF(EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE PROCESS_ID='UPDATE' AND REQ_ID=@p_REQ_ID)) BEGIN SET @PROCESS_ID_OLD ='HOAPP' -- INSERT INTO dbo.PL_REQUEST_PROCESS -- ( -- REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD -- ) -- VALUES -- ( -- @p_REQ_ID,'TDV_APP','C','GDDV',@BRANCH_ID,@DEPT_ID,'',NULL,'MAKER_APP','N','', '',N'Chờ trưởng đơn vị xác nhận' ,NULL -- ) --------------------------------LUONG GUI DUYET TRUONG PHONG-------------------------------- IF(EXISTS(SELECT 1 FROM CM_ALLCODE WHERE CDTYPE='REQ' AND CDNAME='CT_PASS' AND CDVAL=@EMP_ID)) BEGIN UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='TDV_APP'WHERE REQ_ID = @p_REQ_ID INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'HOAPP','C','NVDV',@BRANCH_CREATE,'','',NULL,'MAKER_APP','N','','',N'Chờ Hành chính xác nhận hoàn thành' ,NULL ) SET @TYPEMAIL = 'HOAPP' SET @COMPLETE = 1 END --TH Giám đốc khối tạo phiếu yêu cầu CT -> Không có PTGD, TGD duyệt trực tiếp ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK') AND NOT EXISTS(SELECT 1 FROM dbo.FN_GET_USER_MANAGER_BY_DVCM((SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID =@DEP_ID),'PTGD'))) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'SIGN_APP','C','TKTGD',NULL,NULL,NULL,'','TRAIN_UPD','','','',N'Chờ Thư ký tổng giám đốc phê duyệt', NULL -- IS_HAS_CHILD - bit ) INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'TDV_APP','U','TGD',NULL,NULL,'',NULL,'SIGN_APP','N','','', N'Chờ tổng giám đốc phê duyệt' ,NULL -- IS_HAS_CHILD - bit ) INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'HOAPP','U','NVDV',@BRANCH_CREATE,'','',NULL,'TDV_APP','N','','',N'Chờ Hành chính xác nhận hoàn thành' ,NULL ) SET @TYPEMAIL='SIGN_APP' SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được thay đổi thành công. Vui lòng đợi thư ký tổng giám đốc vị phê duyệt' SET @COMPLETE = 1 END -----------------TH gửi phê duyệt có cấp duyệt trung gian----------- ELSE IF(EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND SIGN_USER IS NOT NULL)) BEGIN SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_REQ_ID) SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã chỉnh sửa và gửi yêu cầu hoàn tất. Vui lòng đợi cấp phê duyệt trung gian xác nhận' SET @IS_SIGN = 1 INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'SIGN_APP','C',@ROLE_SIGN,@BRANCH_SIGN_ID,CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END,'',NULL,'TRAIN_UPD','N','','',N'Chờ cấp phê duyệt trung gian xác nhận phiếu', NULL -- IS_HAS_CHILD - bit ) SET @TYPEMAIL='SIGN_APP' SET @IS_SIGN = 1 END IF(@COMPLETE <> 1) BEGIN IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK')) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'TDV_APP',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'PTGD',NULL,NULL,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN_APP' ELSE 'TRAIN_UPD' END,'N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID),N'Chờ phó tổng giám đốc phê duyệt' ,NULL -- IS_HAS_CHILD - bit ) END ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDDV')) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'TDV_APP',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'GDK',NULL,NULL,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN_APP' ELSE 'TRAIN_UPD' END,'N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID), N'Chờ giám đốc phê khối duyệt' ,NULL -- IS_HAS_CHILD - bit ) END ELSE BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'TDV_APP',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'GDDV',@BRANCH_ID,CASE WHEN @BRANCH_ID='DV0001' THEN @DEPT_ID ELSE '' END,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN_APP' ELSE 'TRAIN_UPD' END,'N','','', N'Chờ trưởng phòng phê duyệt' ,NULL -- IS_HAS_CHILD - bit ) END INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'HOAPP','U','NVDV',@BRANCH_CREATE,'','',NULL,'TDV_APP','N','','',N'Chờ Hành chính xác nhận hoàn thành' ,NULL ) SET @COMPLETE = 1 IF(@TYPEMAIL IS NULL OR @TYPEMAIL ='') BEGIN SET @TYPEMAIL='TDV_APP' SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã chỉnh sửa và gửi yêu cầu hoàn tất. Vui lòng đợi trưởng phòng phê duyệt' END END -- end END ELSE BEGIN SET @PROCESS_ID_OLD ='MAKER_APP' SET @TYPEMAIL ='APPROVE' UPDATE TR_REQUEST_JOB_FORM SET AUTH_STATUS = 'A',PROCESS_ID='APPROVE',CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_REQ_ID END INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,NOTES ) VALUES ( @p_REQ_ID,'APPROVE', (CASE @PROCESS_ID_OLD WHEN 'MAKER_APP' THEN 'C'ELSE 'U'END),'','','',NULL,@PROCESS_ID_OLD,'Y',N'Hoàn tất' ) END ELSE IF(@PROCESS_CURR='HOAPP') BEGIN IF NOT EXISTS(SELECT 1 FROM [dbo].[TL_USER_GET_ROLES](@p_CHECKER_ID) WHERE ROLE_ID='NVDV') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải nhân viên đặt vé phòng hành chính' ErrorDesc RETURN '-1' END UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Người tạo xác nhận hoàn thành chuyến công tác thành công' WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='HOAPP' UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U' SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='APPROVE',AUTH_STATUS='A',CHECKER_ID=@p_CHECKER_ID WHERE REQ_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã xác nhận hoàn tất thành công' INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'HOAPP',@p_CHECKER_ID,GETDATE(),@p_NOTES,N'Hành chính HO đã phê duyệt' ) END END ELSE IF(@p_TYPE_PROCESS='CANCEL') BEGIN UPDATE dbo.TR_REQUEST_JOB_FORM SET PROCESS_ID='CANCEL',AUTH_STATUS='D' WHERE REQ_ID=@p_REQ_ID IF @@Error <> 0 GOTO ABORT SET @COMPLETE=1 SET @TYPEMAIL='CANCEL' IF(EXISTS (SELECT 1 FROM CM_REJECT_LOG WHERE TRN_ID = @p_REQ_ID)) BEGIN UPDATE CM_REJECT_LOG SET IS_LATEST ='N' WHERE TRN_ID =@p_REQ_ID END EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @p_LOG_ID out IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT INSERT INTO [dbo].[CM_REJECT_LOG] VALUES (@p_LOG_ID,'HC',@p_REQ_ID,'TR_REQUEST_JOB_FORM',CONVERT(DATETIME,GETDATE(),103),'R',@p_NOTES,'N',@p_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103)) UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P' WHERE REQ_ID=@p_REQ_ID AND STATUS ='C' DELETE dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS ='U' INSERT INTO dbo.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,DEP_ID,SUB_PROCESS_ID ) VALUES ( @p_REQ_ID,'CANCEL','C','','','',GETDATE(),'','','','',N'',NULL,'', '' ) -- insert log INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'CANCEL',@p_CHECKER_ID,CONVERT(DATETIME, @p_APPROVE_DT, 103),@p_NOTES,N'Hủy phiếu thành công' ) DECLARE @REQ_CAR_ID VARCHAR(20) SELECT @REQ_CAR_ID=REQ_CAR_ID FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID IF(@REQ_CAR_ID IS NOT NULL) BEGIN UPDATE dbo.TR_REQUEST_CAR SET AUTH_STATUS='D' WHERE REQ_ID=@REQ_CAR_ID END SET @NOTIFATION =N'Phiếu yêu cầu công tác số: '+ @REQ_CODE+N' đã bị hủy' END ELSE IF(@p_TYPE_PROCESS='TRAIN_UPD') BEGIN INSERT INTO dbo.PL_PROCESS ( REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID,'TRAIN_UPD', @p_CHECKER_ID, GETDATE(),N'Người tạo thay đổi lộ trình thành công', N'Người tạo thay đổi lộ trình' ) UPDATE dbo.TR_REQUEST_JOB_FORM SET PROCESS_ID ='TRAIN_UPD' WHERE REQ_ID=@p_REQ_ID /* declare variables */ DECLARE @FROM_TRAIN VARCHAR(15), @TO_TRAIN VARCHAR(15), @VEHICLE_TYPE VARCHAR(15), @CONSIGNMENT VARCHAR(5) DECLARE @lstID TABLE( TRAIN_ID VARCHAR(15) ) DECLARE @lstRJT TABLE( FROM_TRAIN VARCHAR(15), TO_TRAIN VARCHAR(15), VEHICLE_TYPE VARCHAR(15), CONSIGNMENT VARCHAR(5) ) --Lưới Danh sách Lộ Trình INSERT INTO @lstRJT SELECT FROM_TRAIN,TO_TRAIN,VEHICLE_TYPE,CONSIGNMENT FROM dbo.TR_REQUEST_JOB_TRAIN WHERE REQ_ID=@p_REQ_ID AND IS_OLD=0 DECLARE crTrain CURSOR FOR SELECT FROM_TRAIN,TO_TRAIN,VEHICLE_TYPE,CONSIGNMENT FROM @lstRJT OPEN crTrain FETCH NEXT FROM crTrain INTO @FROM_TRAIN,@TO_TRAIN,@VEHICLE_TYPE,@CONSIGNMENT WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_RJT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_REQUEST_JOB_TRAIN', @l_RJT_ID OUT INSERT INTO @lstID VALUES (@l_RJT_ID) INSERT INTO dbo.TR_REQUEST_JOB_TRAIN (TRAIN_ID,REQ_ID,FROM_TRAIN,TO_TRAIN,VEHICLE_TYPE,CONSIGNMENT,IS_OLD) VALUES (@l_RJT_ID, @p_REQ_ID,@FROM_TRAIN,@TO_TRAIN,@VEHICLE_TYPE, @CONSIGNMENT,0) FETCH NEXT FROM crTrain INTO @FROM_TRAIN,@TO_TRAIN,@VEHICLE_TYPE,@CONSIGNMENT IF @@ERROR <> 0 GOTO ABORT END CLOSE crTrain DEALLOCATE crTrain UPDATE TR_REQUEST_JOB_TRAIN SET IS_OLD=1 WHERE REQ_ID=@p_REQ_ID AND TRAIN_ID NOT IN (SELECT TRAIN_ID FROM @lstID) UPDATE TR_REQ_JOB_FLY SET IS_OLD = 1 WHERE REQ_ID =@p_REQ_ID UPDATE TR_REQ_JOB_TRIP SET RECORD_STATUS='0' WHERE REQ_ID =@p_REQ_ID UPDATE TR_REQ_JOB_RETURN_TRIP SET RECORD_STATUS='0' WHERE REQ_ID =@p_REQ_ID DELETE PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND (STATUS='U' OR STATUS='C') INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'TRAIN_UPD','C',@MAKER_ID,'','','','HCHO_XL','N','','',N'Chờ người tạo thay đổi thông tin',NULL,'' ) --------------------------------LUONG GUI DUYET TRUONG PHONG-------------------------------- IF(EXISTS(SELECT 1 FROM CM_ALLCODE WHERE CDTYPE='REQ' AND CDNAME='CT_PASS' AND CDVAL=@EMP_ID)) BEGIN SELECT @REQ_TYPE_BOOKING_AIR=REQ_TYPE_BOOKING_AIR,@REQ_TYPE_BOOKING_HOTEL=REQ_TYPE_BOOKING_HOTEL FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID IF(@REQ_TYPE_BOOKING_AIR='AIR_B') BEGIN SET @TYPEMAIL='SENDHO' INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'HO_APP','U','NVDV',@BRANCH_CREATE,'',NULL,'TRAIN_UPD','N','','',N'Chờ Hành chính HO xử lý',NULL,'' ) INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'MAKER_CONF','U',@MAKER_ID,@BRANCH_CREATE, '', NULL,'HO_APP','N','','',N'Chờ người tạo xác nhận',NULL,'' ) INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'HCHO_XL','U','NVDV',@BRANCH_CREATE,'',NULL,'MAKER_CONF','N','','', N'Chờ Hành chính HO xử lý',NULL,'' ) INSERT INTO dbo.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,DEP_ID ) VALUES ( @p_REQ_ID,'MAKER_APP','U',@MAKER_ID,@BRANCH_CREATE,'',NULL,'HCHO_XL','N','','',N'Chờ người tạo phiếu xác nhận chuyến đi hoàn tất',NULL,'' ) END SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được gửi duyệt thành công. Vui lòng đợi nhân viên hành chính HO xử lý phiếu' SET @COMPLETE = 1 END --TH Giám đốc khối tạo phiếu yêu cầu CT -> Không có PTGD, TGD duyệt trực tiếp ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK') AND NOT EXISTS(SELECT 1 FROM dbo.FN_GET_USER_MANAGER_BY_DVCM((SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID =@DEP_ID),'PTGD'))) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'SIGN','U','TKTGD',NULL,NULL,NULL,'','TRAIN_UPD','','','',N'Chờ Thư ký tổng giám đốc phê duyệt', NULL -- IS_HAS_CHILD - bit ) INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'APPNEW','U','TGD',NULL,NULL,'',NULL,'SIGN','N','','', N'Chờ tổng giám đốc phê duyệt' ,NULL -- IS_HAS_CHILD - bit ) UPDATE dbo.TR_REQUEST_JOB_FORM SET SIGN_USER='TKTGD' WHERE REQ_ID =@p_REQ_ID SET @TYPEMAIL='SEND' SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được gửi duyệt thành công. Vui lòng đợi thư ký tổng giám đốc vị phê duyệt' SET @COMPLETE = 1 END -----------------TH gửi phê duyệt có cấp duyệt trung gian----------- ELSE IF(EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND SIGN_USER IS NOT NULL)) BEGIN SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_REQ_ID) SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận' SET @IS_SIGN = 1 INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'SIGN','U',@ROLE_SIGN,@BRANCH_SIGN_ID,CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END,'',NULL,'TRAIN_UPD','N','','',N'Chờ cấp phê duyệt trung gian xác nhận phiếu', NULL -- IS_HAS_CHILD - bit ) SET @TYPEMAIL='SEND' END IF(@COMPLETE <> 1) BEGIN IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK')) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'APPNEW','U','PTGD',NULL,NULL,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN' ELSE 'TRAIN_UPD' END,'N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID),N'Chờ phó tổng giám đốc phê duyệt' ,NULL -- IS_HAS_CHILD - bit ) END ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDDV')) BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'APPNEW','U','GDK',NULL,NULL,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN' ELSE 'TRAIN_UPD' END,'N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID), N'Chờ giám đốc phê khối duyệt' ,NULL -- IS_HAS_CHILD - bit ) END ELSE BEGIN INSERT INTO dbo.PL_REQUEST_PROCESS ( REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD ) VALUES ( @p_REQ_ID,'APPNEW','U','GDDV',@BRANCH_ID,CASE WHEN @BRANCH_ID='DV0001' THEN @DEPT_ID ELSE '' END,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN' ELSE 'TRAIN_UPD' END,'N','','', N'Chờ trưởng phòng phê duyệt' ,NULL -- IS_HAS_CHILD - bit ) END SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+ N' gửi yêu cầu đổi lịch trình thành công. Vui lòng đợi trưởng phòng phê duyệt' SET @COMPLETE = 1 SET @TYPEMAIL = 'TRAIN_UPD' END END UPDATE dbo.PL_PROCESS SET PROCESS_ID='UPDATE_NT' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE' COMMIT TRANSACTION SELECT '0' as Result, @NOTIFATION AS NOTIFATION, '' ErrorDesc, @TYPEMAIL AS TYPEMAIL, @COMPLETE COMPLETE RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS RESULT RETURN '-1' End END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[MW_TRANSFER_Upd]' GO /*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('MW_TRANSFER','MWTF','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('MWTF','1','1')*/ /*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('MW_TRANSFER_DT','MWTDT','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('MWTDT','1','1')*/ ALTER PROCEDURE [dbo].[MW_TRANSFER_Upd] @p_TRANSFER_ID varchar(15) = NULL, @p_TRN_DATE VARCHAR(20) = NULL, @p_TRN_TIME varchar(50) = NULL, @p_QTY DECIMAL(18,2) = NULL, @p_PRICE NUMERIC(18, 0) = NULL, @p_TOTAL_AMT numeric(18, 2) = NULL, @p_NOTES nvarchar(1000) = 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_KT_AUTH_STATUS varchar(1) = NULL, @p_KT_MAKER_ID varchar(15) = NULL, @p_KT_CREATE_DT VARCHAR(20) = NULL, @p_KT_CHECKER_ID varchar(15) = NULL, @p_KT_APPROVE_DT VARCHAR(20) = NULL, @p_RECORD_STATUS VARCHAR(1)= NULL, @p_FRM_BRANCH_ID VARCHAR(15) = NULL, @p_FRM_DEPT_ID VARCHAR(15) = NULL, @p_XmlData XML = NULL, @p_WARE_HOUSE VARCHAR(15) = NULL AS DECLARE --DVSD @TRANSFER_ID varchar(15) = NULL, @MAST_BAL_ID varchar(15) = NULL, @FR_BRN_ID varchar(15) = NULL, @FR_DEPT_ID varchar(15) = NULL, @FR_PRICE_ID varchar(15) = NULL, @TO_BRN_ID varchar(15) = NULL, @TO_DEPT_ID varchar(15) = NULL, @QTY DECIMAL(18,2) = NULL, @QTY_OLD DECIMAL(18,2) = NULL, @PRICE NUMERIC(18, 0) = NULL, @TOTAL_AMT numeric(18, 2) = NULL, @NOTES nvarchar(1000) = NULL, @COST_ACC VARCHAR(20) = NULL Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XmlData DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/XmlData',2) WITH ( TRANSFER_ID varchar(15) , MAST_BAL_ID varchar(15) , FR_BRN_ID varchar(15) , FR_DEPT_ID varchar(15) , FR_PRICE_ID varchar(15) , TO_BRN_ID varchar(15) , TO_DEPT_ID varchar(15) , QTY DECIMAL(18,2) , QTY_OLD DECIMAL(18,2) , PRICE NUMERIC(18, 0) , TOTAL_AMT numeric(18, 2) , NOTES nvarchar(1000) , COST_ACC VARCHAR(20) ) OPEN XmlData BEGIN TRANSACTION UPDATE [dbo].[MW_TRANSFER] SET [TRN_TIME] = CONVERT(DATE,@p_TRN_TIME,103), [QTY] = @p_QTY, [PRICE] = @p_PRICE,KT_MAKER_ID = NULL,AUTH_STATUS='U', [TOTAL_AMT] = @p_TOTAL_AMT, [NOTES] = @p_NOTES,MAKER_ID = @p_MAKER_ID,FR_BRN_ID = @p_FRM_BRANCH_ID, FR_DEPT_ID = @p_FRM_DEPT_ID, WARE_HOUSE = @p_WARE_HOUSE WHERE [TRANSFER_ID] = @p_TRANSFER_ID IF @@Error <> 0 GOTO ABORT --Insert XmlData DECLARE @INDEX INT =0 DECLARE @PRICE_CODE VARCHAR(30) --LUCTV 03062020 DIEU CHINH THEO HOP DONG BAO HANH BAO TRI: KHONG CHO CN, PGD DIEU CHUYEN VAT LIEU DO CHINH MINH TAO DECLARE @p_BRANCH_CREATE VARCHAR(15), @BRANCH_TYPE_CRE VARCHAR(15), @l_COST_ACC VARCHAR(50); SET @p_BRANCH_CREATE =(SELECT BRANCH_CREATE FROM MW_TRANSFER WHERE TRANSFER_ID =@p_TRANSFER_ID) --END LUCTV DELETE FROM MW_TRANSFER_DT WHERE TRANSFER_ID =@p_TRANSFER_ID FETCH NEXT FROM XmlData INTO @TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY , @QTY_OLD, @PRICE, @TOTAL_AMT , @NOTES, @COST_ACC WHILE @@FETCH_STATUS = 0 BEGIN SET @INDEX = @INDEX +1 SET @PRICE_CODE = (SELECT PRICE_CODE FROM MW_MAST_PRICE WHERE PRICE_ID=@FR_PRICE_ID) SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC WHEN @COST_ACC = null then MT.EXP_ACCTNO WHEN @COST_ACC = '' then MT.EXP_ACCTNO ELSE MT.EXP_ACCTNO END FROM dbo.MW_MAST_BAL A LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID WHERE A.MAST_BAL_ID = @MAST_BAL_ID) IF(@l_COST_ACC <> @COST_ACC) BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí sai quy định. Bạn chỉ được điều chỉnh tài khoản chi phí của vật liệu thuộc nhóm Vật Liệu Thẻ Dùng Chung.' ErrorDesc RETURN '-1' END IF(@COST_ACC IS NULL OR @COST_ACC = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí không được để trống' ErrorDesc RETURN '-1' END IF(@QTY > @QTY_OLD) BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc RETURN '-1' END --LUCTV: KIEM TRA XEM MAST_BAL_ID CO DANG DIEU CHUYEN CHO DON VI NAO KHAC HAY KHONG 29-11-2018 --IF(EXISTS (SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID <>@p_TRANSFER_ID --AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE AUTH_STATUS IS NOT NULL AND KT_AUTH_STATUS <>'' AND KT_AUTH_STATUS <>'A' AND RECORD_STATUS='1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, -- '' TRANSFER_ID, -- 'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+ @PRICE_CODE +N' đang được điều chuyển. Vui lòng duyệt thông tin trước khi tạo đợt điều chuyển mới!'ErrorDesc; -- RETURN '-1'; --END ----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC DIEU CHUYEN THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD --IF(EXISTS(SELECT * FROM MW_OUT_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND OUT_ID IN (SELECT OUT_ID FROM MW_OUT WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, '' TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được xuất sử dụng. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc; -- RETURN '-1'; --END ----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC THANH LY THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD --IF(EXISTS(SELECT * FROM MW_LIQ_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND LIQ_ID IN (SELECT LIQ_ID FROM MW_LIQ_MASTER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, '' TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được thanh lý. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc; -- RETURN '-1'; --END --KIEM TRA XEM SO LUONG TON CO DU CHO VIEC DIEU CHUYEN NAY HAY KHONG --IF(@QTY > (SELECT SUM(QTY_BALANCE) FROM MW_MAST_BAL WHERE PRICE_ID = @FR_PRICE_ID AND MAST_BAL_ID=@MAST_BAL_ID)) --BEGIN -- CLOSE XmlData -- DEALLOCATE XmlData -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc -- RETURN '-1' --END IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID)) BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc RETURN '-1' END -- LUCTV 03062020 DIEU CHINH THEO HOP DONG BAO HANH BAO TRI: KHONG CHO CN, PGD DIEU CHUYEN VAT LIEU DO CHINH MINH TAO SET @BRANCH_TYPE_CRE =(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE) --IF(@BRANCH_TYPE_CRE IN ('PGD','CN') AND @p_BRANCH_CREATE =@TO_BRN_ID) IF(@p_BRANCH_CREATE =@TO_BRN_ID) -- Duy TN BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-2' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': CN và PGD không được phép điều chuyển vật liệu về chính CN, PGD đang tạo phiếu điều chuyển vật liệu' ErrorDesc RETURN '-2' END DECLARE @p_TRANSFER_DT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'MW_TRANSFER_DT', @p_TRANSFER_DT_ID out IF @p_TRANSFER_DT_ID='' OR @p_TRANSFER_DT_ID IS NULL GOTO ABORT INSERT INTO [dbo].[MW_TRANSFER_DT] ([TRANSFER_DT_ID], [TRANSFER_ID], [MAST_BAL_ID], [FR_BRN_ID], [FR_DEPT_ID], [FR_PRICE_ID], [TO_BRN_ID], [TO_DEPT_ID], [QTY], [QTY_OLD], [PRICE], [TOTAL_AMT], [NOTES], COST_ACC) VALUES( @p_TRANSFER_DT_ID, @p_TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @QTY*@PRICE, @NOTES, @COST_ACC) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM XmlData INTO @TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY , @QTY_OLD, @PRICE, @TOTAL_AMT , @NOTES, @COST_ACC END CLOSE XmlData DEALLOCATE XmlData -- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ DELETE dbo.PL_PROCESS WHERE REQ_ID = @p_TRANSFER_ID AND PROCESS_ID = 'UPDATE_HC' INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_TRANSFER_ID, -- REQ_ID - varchar(15) 'UPDATE_HC', -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Cập nhật phiếu điều chuyển vật liệu thành công' , N'Cập nhật phiếu điều chuyển vật liệu' -- PROCESS_DESC - nvarchar(1000) ) COMMIT TRANSACTION SELECT '0' as Result, @p_TRANSFER_ID TRANSFER_ID ,'' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANSFER_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_ADVANCE_PAYMENT_Byid]' GO /* INSERT INTO [dbo].[SYS_PREFIX](ID,Prefix,Description) VALUES('TR_REQUEST_PAMENT','TRPY','NONE') */ ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Byid] @p_REQ_PAY_ID varchar(15)= NULL AS SELECT A.*,ISNULL(B.AUTH_STATUS_NAME,N'Chờ duyệt') AS AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME, TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT, BR.BRANCH_NAME BRANCH_NAME, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME AS DEP_NAME, DP.DEP_CODE AS DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ, --Luanlt--2019/10/15-Sửa AL,AL1 BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME, A.REQ_AMT AS TOTAL_AMT_TEMP,CASE WHEN H.SOTIEN_TT IS NULL THEN ISNULL(A.PAY_AMT,0) ELSE ISNULL(H.SOTIEN_TT,0) END AS TOTAL_AMT_PAY_HIS, TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME, TL6.TLFullName AS REC_DEBIT_NAME, TL6.TLNANME AS REC_DEBIT_CODE, TL7.TLFullName AS EMP_NAME, TL7.TLNANME AS EMP_CODE, PO.PO_CODE, PO.PO_NAME AS ACC_NAME,SUP.SUP_NAME,SUP.TAX_NO AS SUP_TAX_NO,CUS.CUSTOMER_CODE AS CUST_CODE, CUS.CUSTOMER_NAME AS ACC_NAME,PM.PAY_PHASE AS KY_TAM_UNG, DV.DVDM_CODE, DV.DVDM_NAME, PR.PROCESS_DESC +N' vào lúc '+ CONVERT(VARCHAR(30), CONVERT(DATETIME, PR.APP_DT,103)) AS CONF_STATUS, PC1.NOTES AS NEXT_STEP, PC3.LEVEL_JOB, PC3.STATUS_JOB,PC3.TYPE_JOB,PC3.TLNAME AS EXEC_USER,TL8.TLFullName AS RECIVER_MONEY_FULLNAME, BR1.BRANCH_TYPE AS BRANCH_TYPE_CR, BR.BRANCH_TYPE FROM TR_REQ_ADVANCE_PAYMENT A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID LEFT JOIN dbo.CM_DEPARTMENT DP ON A.DEP_ID= DP.DEP_ID --Luanlt--2019/10/15-Sửa AL,AL1 LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE' LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME LEFT JOIN TL_USER TL6 ON A.RECEIVER_DEBIT = TL6.TLNANME AND A.REQ_TYPE='D' LEFT JOIN ( SELECT PAY_ADV_ID,(ISNULL(SUM(AMT_USE),0) - ISNULL(SUM(AMT_ADD),0) + ISNULL(SUM(AMT_REVERT),0)) AS SOTIEN_TT FROM TR_REQ_PAYMENT_DT WHERE AUTH_STATUS_KT ='A' GROUP BY PAY_ADV_ID ) H ON A.REQ_PAY_ID = H.PAY_ADV_ID LEFT JOIN TL_USER TL7 ON TL7.TLNANME = A.REF_ID AND A.REQ_TYPE='I' LEFT JOIN TR_PO_MASTER PO ON A.REF_ID = PO.PO_ID AND A.REQ_TYPE='P' LEFT JOIN CM_SUPPLIER SUP ON PO.SUP_ID = SUP.SUP_ID AND A.REQ_TYPE='P' LEFT JOIN LS_CUSTOMER CUS ON A.REF_ID = CUS.CUSTOMER_ID AND A.REQ_TYPE='D' LEFT JOIN TR_PO_PAYMENT PM ON A.PAY_PHASE = PM.PAY_ID AND A.REQ_TYPE='P' LEFT JOIN CM_DVDM DV ON A.DVDM_ID = DV.DVDM_ID --LEFT JOIN PL_PROCESS PR ON A.PROCESS = PR.PROCESS_ID AND A.REQ_PAY_ID = PR.REQ_ID LEFT JOIN ( SELECT MAX(PR.PROCESS_ID) AS PROCESS_ID , MAX(PR.REQ_ID) AS REQ_ID, MAX(PR.PROCESS_DESC) AS PROCESS_DESC, MAX(APPROVE_DT) AS APP_DT FROM PL_PROCESS PR GROUP BY PR.PROCESS_ID, PR.REQ_ID ) AS PR ON A.PROCESS = PR.PROCESS_ID AND A.REQ_PAY_ID = PR.REQ_ID --LEFT JOIN PL_REQUEST_PROCESS PC ON PC.REQ_ID= A.REQ_PAY_ID AND PC.ROLE_USER = @ROLE_ID AND PC.STATUS='C' LEFT JOIN PL_REQUEST_PROCESS PC1 ON PC1.REQ_ID= A.REQ_PAY_ID AND PC1.STATUS='C' LEFT JOIN PL_REQUEST_PROCESS_CHILD PC3 ON PC3.REQ_ID = A.REQ_PAY_ID AND PC3.STATUS_JOB ='C' LEFT JOIN PL_REQUEST_PROCESS_CHILD PC4 ON PC4.REQ_ID = A.REQ_PAY_ID AND PC4.STATUS_JOB ='C' LEFT JOIN TL_USER TL8 ON A.RECIVER_MONEY = TL8.TLNANME LEFT JOIN TL_SYSROLE SR ON TL.RoleName = SR.ROLE_ID WHERE 1=1 AND(A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL) GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_BUDGET_YEAR_Upd]' GO ALTER PROC [dbo].[TR_BUDGET_YEAR_Upd] @p_BUDGET_YEAR_LIMIT_ID VARCHAR(20), @p_GD_ID VARCHAR(20) = NULL, @p_BRANCH_ID VARCHAR(20), @p_BRANCH_CODE VARCHAR(20), @p_BRANCH_NAME NVARCHAR(250), @p_DEP_ID VARCHAR(20), @p_DEP_CODE VARCHAR(20), @p_DEP_NAME NVARCHAR(250), @p_BRANCH_TYPE VARCHAR(20) = NULL, @p_BUDGET_YEAR VARCHAR(20) = NULL, @p_BUDGET_TYPE VARCHAR(20) = NULL, @p_MAKER_ID VARCHAR(15)= NULL, @p_CHECKER_ID VARCHAR(15)= NULL, @p_ROLENAME VARCHAR(20) = NULL, @p_TLNAME VARCHAR(20) = NULL, @p_KHOI_ID VARCHAR(20) = NULL, @p_BUDGET_LIMIT_AMT DECIMAL(18, 2), @p_M1 DECIMAL(18, 0), @p_M2 DECIMAL(18, 0), @p_M3 DECIMAL(18, 0), @p_M4 DECIMAL(18, 0), @p_M5 DECIMAL(18, 0), @p_M6 DECIMAL(18, 0), @p_M7 DECIMAL(18, 0), @p_M8 DECIMAL(18, 0), @p_M9 DECIMAL(18, 0), @p_M10 DECIMAL(18, 0), @p_M11 DECIMAL(18, 0), @p_M12 DECIMAL(18, 0) AS BEGIN TRANSACTION -- validate here UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET GD_ID = @p_GD_ID, BRANCH_TYPE = @p_BRANCH_TYPE, BUDGET_YEAR = @p_BUDGET_YEAR, BRANCH_ID = @p_BRANCH_ID, DEP_ID = @p_DEP_ID, ROLENAME = @p_ROLENAME, TLNAME = @p_TLNAME, KHOI_ID = @p_KHOI_ID, BUDGET_LIMIT_AMT = @p_BUDGET_LIMIT_AMT, M1 = @p_M1, M2 = @p_M2, M3 = @p_M3, M4 = @p_M4, M5 = @p_M5, M6 = @p_M6, M7 = @p_M7, M8= @p_M8, M9 = @p_M9, M10 = @p_M10, M11 = @p_M11, M12 = @p_M12 WHERE BUDGET_YEAR_LIMIT_ID = @p_BUDGET_YEAR_LIMIT_ID COMMIT TRANSACTION SELECT '0' as Result, '' BUDGET_YEAR_LIMIT_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' BUDGET_YEAR_LIMIT_ID, '' ErrorDesc RETURN '-1' END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[rpt_TR_REQ_PAY_INVOICE_ByID_KT]' GO ALTER PROC [dbo].[rpt_TR_REQ_PAY_INVOICE_ByID_KT] @p_REQ_PAY_ID VARCHAR(15) = NULL AS BEGIN SELECT ROW_NUMBER() OVER (ORDER BY A.REQ_PAYDT_ID) AS STT, BR.BRANCH_CODE BRANCH_CODE, BR.BRANCH_NAME BRANCH_NAME, US.TLFullName TLFNAME, A.VAT_KT VAT, A.TRANS_NO TRANS_NO, CONVERT(VARCHAR(20),A.TRANS_DT) TRANS_DT, A.INVOICE_SIGN INVOICE_SIGN, A.INVOICE_NO_SIGN INVOICE_NO_SIGN, A.INVOICE_NO INVOICE_NO, CONVERT(VARCHAR(20),FORMAT(CONVERT(DATE,A.INVOICE_DT,103), 'dd/MM/yyyy')) INVOICE_DT, A.SELLER SELLER, A.TAX_NO TAX_NO, A.GOODS_NAME GOODS_NAME, A.PRICE_KT PRICE, A.TAX TAX, CASE WHEN A.TYPE_VAT = '0' THEN '353200001' ELSE '353200002' END AS ACC, A.TOTAL_AMT_KT AS TOTAL_AMT FROM TR_REQ_PAY_INVOICE A LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID LEFT JOIN CM_BRANCH BR ON B.BRANCH_ID = BR.BRANCH_ID LEFT JOIN TL_USER US ON B.MAKER_ID = US.TLNANME WHERE 1=1 AND (@p_REQ_PAY_ID = A.REQ_PAY_ID) AND ((A.MAKER_ID_KT IS NOT NULL AND A.MAKER_ID_KT <>'' AND A.TYPE_FUNC='KT') OR ((A.MAKER_ID_KT IS NULL OR A.MAKER_ID_KT ='') AND A.TYPE_FUNC='HC')) AND A.TAX >0 END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[REAL_ESTATE_L_C_Search]' GO ALTER PROCEDURE [dbo].[REAL_ESTATE_L_C_Search] @p_RET_L_C_ID varchar(15)=NULL, --@p_RET_NAME nvarchar(MAX)=NULL, @p_RET_ADDR nvarchar(MAX)=NULL, @p_RET_DESC nvarchar(MAX)=NULL, @p_REASON nvarchar(500)=NULL, @p_PROC_EXE nvarchar(500)=NULL, @p_BRANCH_CREATE varchar(15)=NULL, @p_BRANCH_ID varchar(15)=NULL, @p_BRANCH_LOGIN varchar(15)=NULL, @p_PROC_NEXT nvarchar(500)=NULL, @p_END_DT VARCHAR(20)=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_MaxResultCount INT=NULL, @p_LEVEL VARCHAR(50) = 'UNIT', @p_TOP INT = 300, -------BAODNQ 15/2/2022: Truyền thêm tham số------ @p_USER_LOGIN VARCHAR(15), @p_REAL_ESTATE_NAME NVARCHAR(1000) = NULL AS BEGIN -- PAGING declare @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN) --DECLARE @p_USER_LOGIN_ROLE VARCHAR(15) = (SELECT RoleName FROM TL_USER WHERE TLNANME = @p_USER_LOGIN) DECLARE @t_USER_LOGIN_ROLE_TABLE TABLE (BRANCH_ID VARCHAR(20), DEPT_ID VARCHAR(15), ROLE_ID VARCHAR(20)) INSERT INTO @t_USER_LOGIN_ROLE_TABLE(BRANCH_ID, DEPT_ID, ROLE_ID) SELECT * FROM [dbo].[TL_USER_GET_ROLES](@p_USER_LOGIN) IF(@p_TOP IS NULL OR @p_TOP = '' OR @p_TOP = 0) -- PAGING BEGIN SELECT --A.*, A.RET_L_C_ID, A.RET_ADDR, A.RET_DESC, A.REASON, A.PROC_EXE, A.PROC_NEXT, A.END_DT, A.NOTES, A.BRANCH_ID, A.BRANCH_CREATE, A.RECORD_STATUS, A.AUTH_STATUS, A.MAKER_ID, A.CREATE_DT, A.CHECKER_ID, A.APPROVE_DT, A.BRANCH_USE, A.BRANCH_MANAGE, A.BUY_DT, A.AREA, A.CONTRUCT_AREA, A.IS_SEND_APPR, A.SEND_APPR_DT, A.SIGN_USER, A.SIGN_DT, A.RET_ID, A.ASSET_PRICE, A.LAND_USE_RIGHTS_PRICE, A.MARKET_PRICE, A.FINISH_DT_REAL, RM.ASS_NAME AS REAL_ESTATE_NAME, A.BRANCH_USE BRANCH_USE_NAME, BRMN.BRANCH_NAME BRANCH_MANAGE_NAME, BRN.BRANCH_NAME, BRNC.BRANCH_NAME AS BRANCH_CREATE_NAME, D.AUTH_STATUS_NAME, TUM.TLFullName AS MAKER_NAME -- SELECT END FROM REAL_ESTATE_L_C AS A LEFT JOIN CM_BRANCH BRN ON BRN.BRANCH_ID = A.BRANCH_ID LEFT JOIN CM_BRANCH BRNC ON BRNC.BRANCH_ID = A.BRANCH_CREATE LEFT JOIN CM_BRANCH BRMN ON BRMN.BRANCH_ID = A.BRANCH_MANAGE LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN RET_MASTER RM ON A.RET_ID = RM.RET_ID LEFT JOIN TL_USER TUM ON A.MAKER_ID = TUM.TLNANME WHERE (@p_RET_L_C_ID IS NULL OR @p_RET_L_C_ID='' OR A.RET_L_C_ID LIKE N'%' + @p_RET_L_C_ID + '%') AND (@p_REAL_ESTATE_NAME IS NULL OR @p_REAL_ESTATE_NAME = '' OR RM.ASS_NAME LIKE + '%' + @p_REAL_ESTATE_NAME + '%') AND (@p_RET_ADDR IS NULL OR @p_RET_ADDR='' OR A.RET_ADDR LIKE N'%' + @p_RET_ADDR + '%') AND (@p_RET_DESC IS NULL OR @p_RET_DESC='' OR A.RET_DESC LIKE N'%' + @p_RET_DESC + '%') AND (@p_REASON IS NULL OR @p_REASON='' OR A.REASON LIKE N'%' + @p_REASON + '%') AND (@p_PROC_EXE IS NULL OR @p_PROC_EXE='' OR A.PROC_EXE LIKE N'%' + @p_PROC_EXE + '%') AND (@p_PROC_NEXT IS NULL OR @p_PROC_NEXT='' OR A.PROC_NEXT LIKE N'%' + @p_PROC_NEXT + '%') AND (@p_END_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.END_DT,CONVERT(datetime, @p_END_DT,103)) = 0) AND (@p_NOTES IS NULL OR @p_NOTES='' OR A.NOTES LIKE N'%' + @p_NOTES + '%') AND (@p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE='' OR A.BRANCH_CREATE = @p_BRANCH_CREATE) AND (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID='' OR A.BRANCH_ID = @p_BRANCH_ID) AND (@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR A.RECORD_STATUS = @p_RECORD_STATUS) AND (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS) AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR A.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_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 ((@P_LEVEL = 'ALL' AND A.BRANCH_CREATE IN (SELECT BRANCH_ID from @tmp)) OR ((@P_LEVEL = 'UNIT' AND A.BRANCH_CREATE = @p_BRANCH_LOGIN) OR (@p_BRANCH_LOGIN = '' OR @p_BRANCH_LOGIN IS NULL))) -------BAODNQ 15/2/2022: Thêm điều kiện search------- --AND (A.MAKER_ID = @p_USER_LOGIN ---- ng login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- ng login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ((@p_USER_LOGIN_ROLE IN('GDDV','PGD', 'TP', 'PP','TPGD','PPGD', 'TBP')) --- ng login là trưởng ĐV và đã gửi YC phê duyệt -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) -- ) --AND (A.MAKER_ID = @p_USER_LOGIN ---- user login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- user login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ( -- --user login là trưởng ĐV và đã gửi YC phê duyệt -- ( -- ------user login là trưởng ĐV ở hội sở-------- -- ( -- EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE AND BRANCH_TYPE = 'HS') -- AND (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) -- = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) -- ) -- ------user login là trưởng ĐV ở CN/PGD -- OR -- ( -- NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE AND BRANCH_TYPE = 'HS') -- AND A.BRANCH_CREATE = (SELECT TOP 1 BRANCH_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'PGD', 'TPGD', 'PPGD')) -- ) -- ) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) --) AND( A.BRANCH_CREATE = @p_BRANCH_LOGIN AND( (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE) OR(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN) <> 'HS' ) ) ORDER BY A.CREATE_DT DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(CONVERT(INT, @p_TOP)) --A.*, A.RET_L_C_ID, A.RET_ADDR, A.RET_DESC, A.REASON, A.PROC_EXE, A.PROC_NEXT, A.END_DT, A.NOTES, A.BRANCH_ID, A.BRANCH_CREATE, A.RECORD_STATUS, A.AUTH_STATUS, A.MAKER_ID, A.CREATE_DT, A.CHECKER_ID, A.APPROVE_DT, A.BRANCH_USE, A.BRANCH_MANAGE, A.BUY_DT, A.AREA, A.CONTRUCT_AREA, A.IS_SEND_APPR, A.SEND_APPR_DT, A.SIGN_USER, A.SIGN_DT, A.RET_ID, A.ASSET_PRICE, A.LAND_USE_RIGHTS_PRICE, A.MARKET_PRICE, A.FINISH_DT_REAL, RM.ASS_NAME AS REAL_ESTATE_NAME, A.BRANCH_USE BRANCH_USE_NAME, BRMN.BRANCH_NAME BRANCH_MANAGE_NAME, BRN.BRANCH_NAME, BRNC.BRANCH_NAME AS BRANCH_CREATE_NAME, D.AUTH_STATUS_NAME, TUM.TLFullName AS MAKER_NAME -- SELECT END FROM REAL_ESTATE_L_C AS A LEFT JOIN CM_BRANCH BRN ON BRN.BRANCH_ID = A.BRANCH_ID LEFT JOIN CM_BRANCH BRNC ON BRNC.BRANCH_ID = A.BRANCH_CREATE LEFT JOIN CM_BRANCH BRMN ON BRMN.BRANCH_ID = A.BRANCH_MANAGE LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN RET_MASTER RM ON A.RET_ID = RM.RET_ID LEFT JOIN TL_USER TUM ON A.MAKER_ID = TUM.TLNANME WHERE (@p_RET_L_C_ID IS NULL OR @p_RET_L_C_ID='' OR A.RET_L_C_ID LIKE N'%' + @p_RET_L_C_ID + '%') AND (@p_REAL_ESTATE_NAME IS NULL OR @p_REAL_ESTATE_NAME = '' OR RM.ASS_NAME LIKE + '%' + @p_REAL_ESTATE_NAME + '%') AND (@p_RET_ADDR IS NULL OR @p_RET_ADDR='' OR A.RET_ADDR LIKE N'%' + @p_RET_ADDR + '%') AND (@p_RET_DESC IS NULL OR @p_RET_DESC='' OR A.RET_DESC LIKE N'%' + @p_RET_DESC + '%') AND (@p_REASON IS NULL OR @p_REASON='' OR A.REASON LIKE N'%' + @p_REASON + '%') AND (@p_PROC_EXE IS NULL OR @p_PROC_EXE='' OR A.PROC_EXE LIKE N'%' + @p_PROC_EXE + '%') AND (@p_PROC_NEXT IS NULL OR @p_PROC_NEXT='' OR A.PROC_NEXT LIKE N'%' + @p_PROC_NEXT + '%') AND (@p_END_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.END_DT,CONVERT(datetime, @p_END_DT,103)) = 0) AND (@p_NOTES IS NULL OR @p_NOTES='' OR A.NOTES LIKE N'%' + @p_NOTES + '%') AND (@p_BRANCH_CREATE IS NULL OR @p_BRANCH_CREATE='' OR A.BRANCH_CREATE = @p_BRANCH_CREATE) AND (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID='' OR A.BRANCH_ID = @p_BRANCH_ID) AND (@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR A.RECORD_STATUS = @p_RECORD_STATUS) AND (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS) AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR A.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_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 ((@P_LEVEL = 'ALL' AND A.BRANCH_CREATE IN (SELECT BRANCH_ID from @tmp)) OR ((@P_LEVEL = 'UNIT' AND A.BRANCH_CREATE = @p_BRANCH_LOGIN) OR (@p_BRANCH_LOGIN = '' OR @p_BRANCH_LOGIN IS NULL))) -------BAODNQ 15/2/2022: Thêm điều kiện search------- --AND (A.MAKER_ID = @p_USER_LOGIN ---- ng login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- ng login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ((@p_USER_LOGIN_ROLE IN('GDDV','PGD', 'TP', 'PP','TPGD','PPGD', 'TBP')) --- ng login là trưởng ĐV và đã gửi YC phê duyệt -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) -- ) --AND (A.MAKER_ID = @p_USER_LOGIN ---- user login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- user login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ( -- --user login là trưởng ĐV và đã gửi YC phê duyệt -- ( -- ------user login là trưởng ĐV ở hội sở-------- -- ( -- EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE AND BRANCH_TYPE = 'HS') -- AND (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) -- = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) -- ) -- ------user login là trưởng ĐV ở CN/PGD -- OR -- ( -- NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE AND BRANCH_TYPE = 'HS') -- AND A.BRANCH_CREATE = (SELECT TOP 1 BRANCH_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'PGD', 'TPGD', 'PPGD')) -- ) -- ) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) --) AND( A.BRANCH_CREATE = @p_BRANCH_LOGIN AND( (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE) OR(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN) <> 'HS' ) ) ORDER BY A.CREATE_DT DESC -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[ASS_TRANSFER_CONFIRM_MASTER_Upd]' GO ALTER PROCEDURE [dbo].[ASS_TRANSFER_CONFIRM_MASTER_Upd] @p_TRANS_MULTI_MASTER_CONFIRM_ID varchar(15) = null, @p_TRANS_MULTI_MASTER_ID varchar(15) = null, @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION declare @p_APPROVE_DT varchar(15) declare @l_OLD_LOCHIST_ID varchar(15) declare @l_LOCHIST_ID varchar(15) declare @l_ASSHIST_ID varchar(15) declare @l_ASSET_ID varchar(15) declare @l_BRANCH_ID varchar(15) declare @l_DEPT_ID varchar(15) declare @l_EMP_ID varchar(15) declare @l_DESC nvarchar(1000) declare @l_LOCATION nvarchar(500) DECLARE @l_MAKER_ID varchar(15) DECLARE @l_CUR_BRANCH_ID VARCHAR(15), @l_ASSET_TYPE VARCHAR(15), @l_AMORT_ACCTNO VARCHAR(50), @l_ASSET_GROUP VARCHAR(15), @l_ET_ID VARCHAR(15), @l_TRN_REF_NO VARCHAR(15), @l_DO_BRANCH_ID VARCHAR(15), @l_CUR_AMORT_AMT DECIMAL(18), @l_AMORT_STATUS VARCHAR(15) DECLARE @NOTE NVARCHAR(500), @CRET DATETIME UPDATE ASS_TRANSFER_CONFIRM_MASTER SET CONFIRM_STATUS_BN = 'Y', MAKER_ID_BN = @p_MAKER_ID, CONFIRM_DT_BN = GETDATE() WHERE TRANS_MULTI_MASTER_CONFIRM_ID = @p_TRANS_MULTI_MASTER_CONFIRM_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_TRANS_MULTI_MASTER_ID, 'CONFIRM', @p_MAKER_ID, GETDATE(), N'Giao dịch viên bên nhận xác nhận thành công' , N'Giao dịch viên xác nhận' ) IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_TRANS_MULTI_MASTER_CONFIRM_ID TRANS_MULTI_MASTER_CONFIRM_ID, N'Xác nhận nhận tài sản thành công' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_CONFIRM_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_BUDGET_YEAR_Byid]' GO ALTER PROC [dbo].[TR_BUDGET_YEAR_Byid] @p_BUDGET_YEAR_LIMIT_ID varchar(15) AS BEGIN SELECT A.*, C.CDVAL AS BRANCH_TYPE, C.CDVAL, D.GD_CODE, D.GD_NAME, E.BRANCH_CODE, E.BRANCH_NAME, F.DEP_CODE, F.DEP_NAME, G.DVDM_ID AS KHOI_ID, G.DVDM_CODE AS KHOI_CODE, G.DVDM_NAME AS KHOI_NAME FROM TR_REQ_BUDGET_YEAR_LIMIT A LEFT JOIN CM_ALLCODE C ON A.BRANCH_TYPE = C.CDVAL AND C.CDNAME = 'BRANCH_TYPE' AND C.CDTYPE ='TR_REQ' LEFT JOIN CM_GOODS D ON A.GD_ID = D.GD_ID LEFT JOIN CM_BRANCH E ON A.BRANCH_ID = E.BRANCH_ID LEFT JOIN CM_DEPARTMENT F ON A.DEP_ID = F.DEP_ID LEFT JOIN CM_DVDM G ON F.KHOI_ID = G.DVDM_ID AND G.IS_KHOI = '1' WHERE A.BUDGET_YEAR_LIMIT_ID = @p_BUDGET_YEAR_LIMIT_ID END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[CON_LAYOUT_BLUEPRINT_APP]' GO ALTER PROC [dbo].[CON_LAYOUT_BLUEPRINT_APP] @p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT varchar(20) AS BEGIN TRANSACTION BEGIN DECLARE @PROCESS_ID VARCHAR(15),@LAYOUT_TYPE VARCHAR(15),@ERRORS NVARCHAR(2000),@BRANCH_ID VARCHAR(15),@DEPT_ID VARCHAR(15),@DVDM_ID VARCHAR(15),@BRANCH_TYPE VARCHAR(15), @USER_BRANCH VARCHAR(15),@USER_DEPT VARCHAR(15) SELECT @PROCESS_ID = B.PROCESS_ID, @LAYOUT_TYPE = LAYOUT_TYPE, @BRANCH_ID = P.BRANCH_ID, @DEPT_ID = P.DEP_ID, @DVDM_ID = P.DVDM_ID, @BRANCH_TYPE = BR.BRANCH_TYPE FROM CON_LAYOUT_BLUEPRINT B INNER JOIN dbo.PL_REQUEST_PROCESS P ON B.CON_LAYOUT_BLUEPRINT_ID = P.REQ_ID AND B.PROCESS_ID = P.PROCESS_ID LEFT JOIN dbo.CM_BRANCH BR ON BR.BRANCH_ID = P.BRANCH_ID WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID SELECT @USER_BRANCH = TLSUBBRID, @USER_DEPT = SECUR_CODE FROM dbo.TL_USER WHERE TLNANME = @p_CHECKER_ID -- LAY THONG TIN PHAN QUYEN KIEM NHIEM CUA USER --DECLARE @ASSIGN_ROLES TABLE (BRANCH_ID VARCHAR(20), DEPT_ID VARCHAR(15), ROLE_ID VARCHAR(20)) --INSERT INTO @ASSIGN_ROLES SELECT * FROM [dbo].[TL_USER_GET_ASSIGNED_BRANCH](@p_CHECKER_ID) -- LAY THONG TIN PHAN QUYEN HIEN TAI CUA USER DECLARE @USER_ROLES TABLE (BRANCH_ID VARCHAR(20), DEPT_ID VARCHAR(15), ROLE_ID VARCHAR(20)) INSERT INTO @USER_ROLES SELECT * FROM [dbo].[TL_USER_GET_ROLES](@p_CHECKER_ID) DECLARE @TMP TABLE (BRANCH_ID VARCHAR(15), DEPT_ID VARCHAR(15)) IF (@PROCESS_ID = 'SIGN') BEGIN IF (@p_CHECKER_ID <> (SELECT TOP 1 SIGN_USER FROM dbo.CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = CON_LAYOUT_BLUEPRINT_ID)) BEGIN SET @ERRORS = N'Người dùng không thể duyệt layout này vì không phải cấp phê duyệt trung gian' ROLLBACK TRANSACTION SELECT '-1' as Result, @ERRORS ErrorDesc RETURN -1 END UPDATE PL_REQUEST_PROCESS SET [NOTES]= N'Cấp phê duyệt trung gian đã phê duyệt', [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'APPNEW' UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'APPNEW' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CON_LAYOUT_BLUEPRINT_ID, 'APP', @p_CHECKER_ID, GETDATE(), N'Phê duyệt layout bản vẽ thành công' , N'Cấp phê duyệt trung gian phê duyệt thành công' ) END ELSE IF (@PROCESS_ID = 'APPNEW') BEGIN IF ((@BRANCH_TYPE = 'HS' AND NOT EXISTS (SELECT * FROM (SELECT * FROM @USER_ROLES WHERE ROLE_ID IN ('GDDV','TP')) T WHERE T.BRANCH_ID = @BRANCH_ID AND T.DEPT_ID = @DEPT_ID)) OR (@BRANCH_TYPE <> 'HS' AND NOT EXISTS (SELECT * FROM (SELECT * FROM @USER_ROLES WHERE ROLE_ID IN ('GDDV','TPGD')) T WHERE T.BRANCH_ID = @BRANCH_ID)) ) BEGIN SET @ERRORS = N'Người dùng không thể duyệt layout này vì không phải trưởng đơn vị' ROLLBACK TRANSACTION SELECT '-1' as Result, @ERRORS ErrorDesc RETURN -1 END UPDATE PL_REQUEST_PROCESS SET [NOTES]= N'Trưởng đơn vị đã phê duyệt', [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'GDK_HT' UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'GDK_HT' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CON_LAYOUT_BLUEPRINT_ID, 'APP', @p_CHECKER_ID, GETDATE(), N'Phê duyệt layout bản vẽ thành công' , N'Trưởng đơn vị phê duyệt thành công' ) END ELSE IF (@PROCESS_ID = 'GDK_HT') BEGIN INSERT INTO @TMP SELECT DT.BRANCH_ID, DT.DEP_ID FROM dbo.PL_COSTCENTER C JOIN dbo.PL_COSTCENTER_DT DT ON C.COST_ID = DT.COST_ID JOIN dbo.CM_DVDM DV ON C.DVDM_ID = dv.DVDM_ID WHERE dv.IS_KHOI = 1 AND DV.DVDM_ID = @DVDM_ID IF (NOT EXISTS(SELECT * FROM (SELECT * FROM @USER_ROLES WHERE ROLE_ID = 'GDK') T WHERE T.BRANCH_ID IN (SELECT BRANCH_ID FROM @TMP) AND T.DEPT_ID IN (SELECT DEPT_ID FROM @TMP)) ) BEGIN SET @ERRORS = N'Người dùng không thể duyệt layout này vì không phải giám đốc khối hỗ trợ' ROLLBACK TRANSACTION SELECT '-1' as Result, @ERRORS ErrorDesc RETURN -1 END UPDATE PL_REQUEST_PROCESS SET [NOTES]= N'Giám đốc khối hỗ trợ đã phê duyệt', [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID --start hieuhm 1/12/2022 Bỏ qua bước PTGD_TC --UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'PTGD_TC' --UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'PTGD_TC' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID --end hieuhm 1/12/2022 Bỏ qua bước PTGD_TC UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'PTGD_VH' UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'PTGD_VH' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CON_LAYOUT_BLUEPRINT_ID, 'APP', @p_CHECKER_ID, GETDATE(), N'Phê duyệt layout bản vẽ thành công' , N'Giám đốc khối hỗ trợ phê duyệt thành công' ) END ELSE IF (@PROCESS_ID = 'PTGD_TC') BEGIN INSERT INTO @TMP SELECT DT.BRANCH_ID, DT.DEP_ID FROM dbo.PL_COSTCENTER C JOIN dbo.PL_COSTCENTER_DT DT ON C.COST_ID = DT.COST_ID JOIN dbo.CM_DVDM DV ON C.DVDM_ID = dv.DVDM_ID WHERE dv.IS_KHOI = 1 AND DV.DVDM_ID = @DVDM_ID IF (NOT EXISTS(SELECT * FROM (SELECT * FROM @USER_ROLES WHERE ROLE_ID = 'PTGD') T WHERE T.BRANCH_ID IN (SELECT BRANCH_ID FROM @TMP) AND T.DEPT_ID IN (SELECT DEPT_ID FROM @TMP)) ) BEGIN SET @ERRORS = N'Người dùng không thể duyệt layout này vì không phải phó tổng giám đốc khối tài chính' ROLLBACK TRANSACTION SELECT '-1' as Result, @ERRORS ErrorDesc RETURN -1 END UPDATE PL_REQUEST_PROCESS SET [NOTES]= N'PTGĐ khối tài chính đã phê duyệt', [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'PTGD_VH' UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'PTGD_VH' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CON_LAYOUT_BLUEPRINT_ID, 'APP', @p_CHECKER_ID, GETDATE(), N'Phê duyệt layout bản vẽ thành công' , N'PTGĐ khối tài chính phê duyệt thành công' ) END ELSE IF (@PROCESS_ID = 'PTGD_VH') BEGIN INSERT INTO @TMP SELECT DT.BRANCH_ID, DT.DEP_ID FROM dbo.PL_COSTCENTER C JOIN dbo.PL_COSTCENTER_DT DT ON C.COST_ID = DT.COST_ID JOIN dbo.CM_DVDM DV ON C.DVDM_ID = dv.DVDM_ID WHERE dv.IS_KHOI = 1 AND DV.DVDM_ID = @DVDM_ID IF (NOT EXISTS(SELECT * FROM (SELECT * FROM @USER_ROLES WHERE ROLE_ID = 'PTGD') T WHERE T.BRANCH_ID IN (SELECT BRANCH_ID FROM @TMP) AND T.DEPT_ID IN (SELECT DEPT_ID FROM @TMP)) ) BEGIN SET @ERRORS = N'Người dùng không thể duyệt layout này vì không phải phó tổng giám đốc khối vận hành' ROLLBACK TRANSACTION SELECT '-1' as Result, @ERRORS ErrorDesc RETURN -1 END UPDATE PL_REQUEST_PROCESS SET [NOTES]= N'PTGĐ khối vận hành đã phê duyệt', [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID IF (@LAYOUT_TYPE = 'CN') BEGIN UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'TKTGD' UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'TKTGD' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID END ELSE BEGIN UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'APPROVE' UPDATE CON_LAYOUT_BLUEPRINT SET CHECKER_ID = @p_CHECKER_ID , APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103), PROCESS_ID = 'APPROVE',AUTH_STATUS = 'A' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID END INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CON_LAYOUT_BLUEPRINT_ID, 'APP', @p_CHECKER_ID, GETDATE(), N'Phê duyệt layout bản vẽ thành công' , N'PTGĐ khối vận hành phê duyệt thành công' ) END --ELSE IF (@PROCESS_ID = 'PTGD_HT') --BEGIN -- INSERT INTO @TMP -- SELECT DT.BRANCH_ID, DT.DEP_ID FROM dbo.PL_COSTCENTER C -- JOIN dbo.PL_COSTCENTER_DT DT ON C.COST_ID = DT.COST_ID -- JOIN dbo.CM_DVDM DV ON C.DVDM_ID = dv.DVDM_ID -- WHERE dv.IS_KHOI = 1 AND DV.DVDM_ID = @DVDM_ID -- IF (NOT EXISTS(SELECT * -- FROM (SELECT * FROM @ASSIGN_ROLES WHERE ROLE_ID = 'PTGD' UNION ALL SELECT * FROM @USER_ROLES WHERE ROLE_ID = 'PTGD') T -- WHERE T.BRANCH_ID IN (SELECT BRANCH_ID FROM @TMP) -- AND T.DEPT_ID IN (SELECT DEPT_ID FROM @TMP)) -- ) -- BEGIN -- SET @ERRORS = N'Người dùng không thể duyệt layout này vì không phải phó tổng giám đốc khối hỗ trợ' -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, @ERRORS ErrorDesc -- RETURN -1 -- END -- UPDATE PL_REQUEST_PROCESS SET [NOTES]= N'PTGĐ khối hỗ trợ đã phê duyệt', [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID -- IF (@LAYOUT_TYPE = 'CN') -- BEGIN -- UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'TGD' -- UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'TGD' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID -- END -- ELSE -- BEGIN -- UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'APPROVE',AUTH_STATUS = 'A' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID -- END -- INSERT INTO dbo.PL_PROCESS -- ( -- REQ_ID, -- PROCESS_ID, -- CHECKER_ID, -- APPROVE_DT, -- PROCESS_DESC, -- NOTES -- ) -- VALUES -- ( @p_CON_LAYOUT_BLUEPRINT_ID, -- 'APP', -- @p_CHECKER_ID, -- GETDATE(), -- N'Phê duyệt layout bản vẽ thành công' , -- N'PTGĐ khối hỗ trợ phê duyệt thành công' -- ) --END ELSE IF (@PROCESS_ID = 'TKTGD') BEGIN IF (NOT EXISTS(SELECT * FROM (SELECT * FROM @USER_ROLES WHERE ROLE_ID = 'TKTGD') T) ) BEGIN SET @ERRORS = N'Người dùng không thể duyệt layout này vì không phải thư kí tổng giám đốc' ROLLBACK TRANSACTION SELECT '-1' as Result, @ERRORS ErrorDesc RETURN -1 END UPDATE PL_REQUEST_PROCESS SET [NOTES]= N'Thư kí tổng giám đốc đã phê duyệt', [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'TGD' UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'TGD' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CON_LAYOUT_BLUEPRINT_ID, 'APP', @p_CHECKER_ID, GETDATE(), N'Phê duyệt layout bản vẽ thành công' , N'Thư kí tổng giám đốc phê duyệt thành công' ) END ELSE IF (@PROCESS_ID = 'TGD') BEGIN IF (NOT EXISTS(SELECT * FROM @USER_ROLES WHERE ROLE_ID = 'TGD')) BEGIN SET @ERRORS = N'Người dùng không thể duyệt layout này vì không phải tổng giám đốc' ROLLBACK TRANSACTION SELECT '-1' as Result, @ERRORS ErrorDesc RETURN -1 END UPDATE PL_REQUEST_PROCESS SET [NOTES]= N'Tổng giám đốc đã phê duyệt', [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'APPROVE' UPDATE CON_LAYOUT_BLUEPRINT SET CHECKER_ID = @p_CHECKER_ID , APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103), PROCESS_ID = 'APPROVE',AUTH_STATUS = 'A' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_CON_LAYOUT_BLUEPRINT_ID, 'APP', @p_CHECKER_ID, GETDATE(), N'Phê duyệt layout bản vẽ thành công' , N'Tổng giám đốc phê duyệt thành công' ) END 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'Altering [dbo].[ASS_TRANSFER_CONFIRM_MASTER_Ins]' GO ALTER PROCEDURE [dbo].[ASS_TRANSFER_CONFIRM_MASTER_Ins] @p_TRANS_MULTI_MASTER_ID varchar(15) = null, @p_TRANS_MULTI_MASTER_CONFIRM_ID varchar(15) = null, @p_MAKER_ID varchar(15) = NULL, @p_CREATE_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION declare @p_APPROVE_DT varchar(15) declare @l_OLD_LOCHIST_ID varchar(15) declare @l_LOCHIST_ID varchar(15) declare @l_ASSHIST_ID varchar(15) declare @l_ASSET_ID varchar(15) declare @l_BRANCH_ID varchar(15) declare @l_DEPT_ID varchar(15) declare @l_EMP_ID varchar(15) declare @l_DESC nvarchar(1000) declare @l_LOCATION nvarchar(500) DECLARE @l_MAKER_ID varchar(15) DECLARE @l_CUR_BRANCH_ID VARCHAR(15), @l_ASSET_TYPE VARCHAR(15), @l_AMORT_ACCTNO VARCHAR(50), @l_ASSET_GROUP VARCHAR(15), @l_ET_ID VARCHAR(15), @l_TRN_REF_NO VARCHAR(15), @l_DO_BRANCH_ID VARCHAR(15), @l_CUR_AMORT_AMT DECIMAL(18), @l_AMORT_STATUS VARCHAR(15) DECLARE @NOTE NVARCHAR(500), @CRET DATETIME UPDATE ASS_TRANSFER_CONFIRM_MASTER SET CONFIRM_STATUS_BG = 'Y', MAKER_ID_BG = @p_MAKER_ID, CONFIRM_DT_BG = GETDATE() WHERE TRANS_MULTI_MASTER_CONFIRM_ID = @p_TRANS_MULTI_MASTER_CONFIRM_ID INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_TRANS_MULTI_MASTER_ID, 'CONFIRM', @p_MAKER_ID, GETDATE(), N'Giao dịch viên bên giao xác nhận thành công' , N'Giao dịch viên xác nhận' ) COMMIT TRANSACTION SELECT '0' as Result, @p_TRANS_MULTI_MASTER_CONFIRM_ID TRANS_MULTI_MASTER_CONFIRM_ID, N'Xác nhận bàn giao tài sản thành công' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_CHECK_DEP]' GO ALTER PROCEDURE [dbo].[TR_CHECK_DEP] @p_BRANCH_ID VARCHAR(20) = NULL, @p_BRANCH_CODE VARCHAR(20) = NULL, @p_DEP_ID VARCHAR(20) = NULL, @p_DEP_CODE VARCHAR(20) = NULL, @p_TYPE nvarchar(200) = NULL AS DECLARE @l_DEP_ID VARCHAR(20) = NULL; IF(@p_TYPE = 'TR_PAYMENT_KT') BEGIN IF(@p_BRANCH_CODE = '699' OR @p_BRANCH_CODE = '799' OR @p_BRANCH_CODE = '899') BEGIN SELECT '0' AS Result, '' ErrorDesc RETURN '0' END ELSE BEGIN SET @l_DEP_ID = ( SELECT TOP 1 D.DEP_ID FROM CM_DEPARTMENT D WHERE D.DEP_CODE= @P_DEP_CODE AND D.BRANCH_ID = @p_BRANCH_ID ) --print @l_DEP_ID; IF(ISNULL(@l_DEP_ID, '') <> '') BEGIN SELECT '0' AS Result, '' ErrorDesc RETURN '0' END ELSE BEGIN SELECT '-1' AS Result, N'Mã phòng ban không hợp lệ' ErrorDesc RETURN '-1' END END END ELSE IF(@p_TYPE = 'MW_OUT_HC') BEGIN IF(@p_BRANCH_CODE = '699' OR @p_BRANCH_CODE = '799' OR @p_BRANCH_CODE = '899') BEGIN SELECT '0' AS Result, '' ErrorDesc RETURN '0' END ELSE BEGIN SET @l_DEP_ID = ( SELECT TOP 1 D.DEP_ID FROM CM_DEPARTMENT D WHERE D.DEP_CODE= @P_DEP_CODE AND D.BRANCH_ID = @p_BRANCH_ID ) --print @l_DEP_ID; IF(ISNULL(@l_DEP_ID, '') <> '') BEGIN SELECT '0' AS Result, '' ErrorDesc RETURN '0' END ELSE BEGIN SELECT '-1' AS Result, N'Mã phòng ban không hợp lệ' ErrorDesc RETURN '-1' END END END ELSE BEGIN SELECT '-1' AS Result, N'Lỗi không xác định' ErrorDesc RETURN '-1' END --exec TR_CHECK_DEP @p_BRANCH_ID = 'DV0001', @p_BRANCH_CODE = '', @p_DEP_ID = '', @p_DEP_CODE = '7990000', @p_TYPE = 'TR_PAYMENT_KT' GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[BUD_CONTRACT_CUST_MASTER_Search]' GO ALTER PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_Search] @p_CONTRACT_ID varchar(15) = NULL, @p_BUILDING_ID varchar(15) = NULL, @p_CONTRACT_NO nvarchar(100) = NULL, @p_VERSION_NO int =0, @p_CUST_ID varchar(15) = NULL, @p_INPUT_DT VARCHAR(20) = NULL, @p_AMEND_DT VARCHAR(20) = NULL, @p_FROM_DT VARCHAR(20) = NULL, @p_TO_DATE VARCHAR(20) = NULL, @p_CLOSE_DT VARCHAR(20) = NULL, @p_MONTHS int = NULL, @p_RENT_PRICE numeric(18) = NULL, @p_NOTES NVARCHAR(MAX) = NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_AUTH_STATUS varchar(1) = NULL, @p_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_XML_TEMP xml = NULL, @p_VAT DECIMAL(18,0)= NULL, @p_VAT_AMT DECIMAL(18,0) =NULL, @p_DEPOSITS_AMT DECIMAL(18,0) =NULL, @p_PAYMENT_SHEDULE NVARCHAR(500)= NULL, @p_TOP INT = 10, @p_FROM_MONTH int= NULL, @p_TO_MONTH int = NULL, @p_FROMDATE VARCHAR(25) = NULL, @p_TODATE VARCHAR(25)= NULL, @p_LEVEL VARCHAR(15)='ALL', @p_USER_LOGIN VARCHAR(15) -----BAODNQ 4/1/2021: Truyền thêm USER_LOGIN---- AS BEGIN -- PAGING declare @p_BRANCH_LOGIN VARCHAR(15) --set @p_BRANCH_LOGIN = (select TLSUBBRID from TL_USER where TLNANME=@p_MAKER_ID) set @p_BRANCH_LOGIN = (select TLSUBBRID from TL_USER where TLNANME=@p_USER_LOGIN) DECLARE @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN) --------BAODNQ 5/1/2021: Khai báo role USER_LOGIN------------------- --DECLARE @p_USER_LOGIN_ROLE VARCHAR(50) --SET @p_USER_LOGIN_ROLE = (SELECT RoleName FROM TL_USER WHERE TLNANME = @p_USER_LOGIN) DECLARE @t_USER_LOGIN_ROLE_TABLE TABLE (BRANCH_ID VARCHAR(20), DEPT_ID VARCHAR(15), ROLE_ID VARCHAR(20)) INSERT INTO @t_USER_LOGIN_ROLE_TABLE(BRANCH_ID, DEPT_ID, ROLE_ID) SELECT * FROM [dbo].[TL_USER_GET_ROLES](@p_USER_LOGIN) ----------- IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0) -- PAGING BEGIN SELECT A.*, CASE WHEN A.AUTH_STATUS = 'U' AND A.IS_SEND_APPR = 'Y' AND (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <> '') AND (A.SIGN_DT IS NULL OR A.SIGN_DT = '') THEN N'Chờ cấp phê duyệt trung gian xác nhận' ELSE B.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME, C.NUM_FLOOR, C.BUILDING_NAME,BR.BRANCH_NAME,CS.SUP_NAME AS CUSTOMER_NAME,CM.CONTENT AS TINHTRANG_HOPDONG, -----BAODNQ 30/12/2021: Lấy thêm cột full name---- D.TLFullName AS SIGN_USER_FULLNAME, TUM.TLFullName AS MAKER_NAME, TUC.TLFullName AS CHECKER_NAME -- SELECT END FROM BUD_CONTRACT_CUST_MASTER A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID --LEFT JOIN LS_CUSTOMER LS ON LS.CUSTOMER_ID = A.CUST_ID LEFT JOIN CM_SUPPLIER CS ON CS.SUP_ID = A.CUST_ID LEFT JOIN CM_ALLCODE CM ON A.[STATUS] = CM.CDVAL AND CDNAME='CONTRACT_STATUS' AND CDTYPE='CONTRACT' ----BAODNQ 30/12/2021: Kết thêm bảng TL_USER---- LEFT JOIN TL_USER D ON A.SIGN_USER = D.TLNANME LEFT JOIN TL_USER TUM ON A.MAKER_ID = TUM.TLNANME LEFT JOIN TL_USER TUC ON A.CHECKER_ID = TUC.TLNANME WHERE 1 = 1 AND (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_ID + '%' OR @p_CONTRACT_ID IS NULL OR @p_CONTRACT_ID = '') AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '') AND (A.CONTRACT_NO LIKE '%' + @p_CONTRACT_NO + '%' OR @p_CONTRACT_NO IS NULL OR @p_CONTRACT_NO = '') AND (A.CUST_ID LIKE '%' + @p_CUST_ID + '%' OR @p_CUST_ID IS NULL OR @p_CUST_ID = '') AND (A.INPUT_DT =CONVERT(DATE, @p_INPUT_DT, 103) OR @p_INPUT_DT IS NULL OR @p_INPUT_DT = '') AND (A.AMEND_DT =CONVERT(DATE, @p_AMEND_DT, 103) OR @p_AMEND_DT IS NULL OR @p_AMEND_DT = '') AND (A.TO_DATE =CONVERT(DATE, @p_TO_DATE, 103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '') AND (A.CLOSE_DT =CONVERT(DATE, @p_CLOSE_DT, 103) OR @p_CLOSE_DT IS NULL OR @p_CLOSE_DT = '') AND (A.RENT_PRICE = @p_RENT_PRICE OR @p_RENT_PRICE IS NULL OR @p_RENT_PRICE =0) AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '') AND ( A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR ( @p_AUTH_STATUS = 'S' AND A.AUTH_STATUS = 'U' AND A.IS_SEND_APPR = 'Y' AND (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <> '') AND (A.SIGN_DT IS NULL OR A.SIGN_DT = '') ) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '' ) AND (A.STATUS LIKE '%' + @p_STATUS + '%' OR @p_STATUS IS NULL OR @p_STATUS = '') AND (CONVERT(DATE,A.CREATE_DT,103) >=CONVERT(DATE, @p_FROMDATE, 103) OR @p_FROMDATE IS NULL OR @p_FROMDATE = '') AND (CONVERT(DATE,A.CREATE_DT,103) <=CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '') AND (ISNULL(A.MONTHS,0) >= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH = 0) AND (ISNULL(A.MONTHS,0) <= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH = 0) AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '') AND (A.APPROVE_DT =CONVERT(DATE, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '') AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp)) -----BAODNQ 4/1/2021: Thêm điều kiện select---- --AND (A.MAKER_ID = @p_USER_LOGIN -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') -- OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD', 'TBP')) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- (ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL ))) -- ) -- ) --) --AND (A.MAKER_ID = @p_USER_LOGIN ---- user login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- user login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ( -- --user login là trưởng ĐV và đã gửi YC phê duyệt -- ( -- ------user login là trưởng ĐV ở hội sở-------- -- ( -- EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) -- = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) -- ) -- ------user login là trưởng ĐV ở CN/PGD -- OR -- ( -- NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND A.BRANCH_ID = (SELECT TOP 1 BRANCH_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'PGD', 'TPGD', 'PPGD')) -- ) -- ) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) --) AND( A.BRANCH_ID = @p_BRANCH_LOGIN AND( (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE) OR (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN) <> 'HS' ) ) ORDER BY A.CREATE_DT DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(CONVERT(INT,@P_TOP))A.*, CASE WHEN A.AUTH_STATUS = 'U' AND A.IS_SEND_APPR = 'Y' AND (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <> '') AND (A.SIGN_DT IS NULL OR A.SIGN_DT = '') THEN N'Chờ cấp phê duyệt trung gian xác nhận' ELSE B.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME, C.NUM_FLOOR, C.BUILDING_NAME,BR.BRANCH_NAME,CS.SUP_NAME AS CUSTOMER_NAME,CM.CONTENT AS TINHTRANG_HOPDONG, -----BAODNQ 30/12/2021: Lấy thêm cột full name---- D.TLFullName AS SIGN_USER_FULLNAME, TUM.TLFullName AS MAKER_NAME, TUC.TLFullName AS CHECKER_NAME -- SELECT END FROM BUD_CONTRACT_CUST_MASTER A LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID --LEFT JOIN LS_CUSTOMER LS ON LS.CUSTOMER_ID = A.CUST_ID LEFT JOIN CM_SUPPLIER CS ON CS.SUP_ID = A.CUST_ID LEFT JOIN CM_ALLCODE CM ON A.[STATUS] = CM.CDVAL AND CDNAME='CONTRACT_STATUS' AND CDTYPE='CONTRACT' ----BAODNQ 30/12/2021: Kết thêm bảng TL_USER---- LEFT JOIN TL_USER D ON A.SIGN_USER = D.TLNANME LEFT JOIN TL_USER TUM ON A.MAKER_ID = TUM.TLNANME LEFT JOIN TL_USER TUC ON A.CHECKER_ID = TUC.TLNANME WHERE 1 = 1 AND (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_ID + '%' OR @p_CONTRACT_ID IS NULL OR @p_CONTRACT_ID = '') AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '') AND (A.CONTRACT_NO LIKE '%' + @p_CONTRACT_NO + '%' OR @p_CONTRACT_NO IS NULL OR @p_CONTRACT_NO = '') AND (A.CUST_ID LIKE '%' + @p_CUST_ID + '%' OR @p_CUST_ID IS NULL OR @p_CUST_ID = '') AND (A.INPUT_DT =CONVERT(DATE, @p_INPUT_DT, 103) OR @p_INPUT_DT IS NULL OR @p_INPUT_DT = '') AND (A.AMEND_DT =CONVERT(DATE, @p_AMEND_DT, 103) OR @p_AMEND_DT IS NULL OR @p_AMEND_DT = '') AND (A.TO_DATE =CONVERT(DATE, @p_TO_DATE, 103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '') AND (A.CLOSE_DT =CONVERT(DATE, @p_CLOSE_DT, 103) OR @p_CLOSE_DT IS NULL OR @p_CLOSE_DT = '') AND (A.RENT_PRICE = @p_RENT_PRICE OR @p_RENT_PRICE IS NULL OR @p_RENT_PRICE = 0) AND (A.RECORD_STATUS =1) AND ( A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR ( @p_AUTH_STATUS = 'S' AND A.AUTH_STATUS = 'U' AND A.IS_SEND_APPR = 'Y' AND (A.SIGN_USER IS NOT NULL AND A.SIGN_USER <> '') AND (A.SIGN_DT IS NULL OR A.SIGN_DT = '') ) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '' ) AND (A.STATUS LIKE '%' + @p_STATUS + '%' OR @p_STATUS IS NULL OR @p_STATUS = '') AND (CONVERT(DATE,A.CREATE_DT,103) >=CONVERT(DATE, @p_FROMDATE, 103) OR @p_FROMDATE IS NULL OR @p_FROMDATE = '') AND (CONVERT(DATE,A.CREATE_DT,103) <=CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '') AND (ISNULL(A.MONTHS,0) >= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH = 0) AND (ISNULL(A.MONTHS,0) <= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH = 0) AND (( (@p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp)) OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_ID) ) OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = '') --AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp)) AND ( A.VERSION_NO =(SELECT MAX(VERSION_NO) FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = A.CONTRACT_ID)) -----BAODNQ 4/1/2021: Thêm điều kiện select---- --AND (A.MAKER_ID = @p_USER_LOGIN -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') -- OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD','TBP')) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- (ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL ))) -- ) -- ) -- ) --AND (A.MAKER_ID = @p_USER_LOGIN ---- user login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- user login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ( -- --user login là trưởng ĐV và đã gửi YC phê duyệt -- ( -- ------user login là trưởng ĐV ở hội sở-------- -- ( -- EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) -- = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) -- ) -- ------user login là trưởng ĐV ở CN/PGD -- OR -- ( -- NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_ID AND BRANCH_TYPE = 'HS') -- AND A.BRANCH_ID = (SELECT TOP 1 BRANCH_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'PGD', 'TPGD', 'PPGD')) -- ) -- ) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) --) AND( A.BRANCH_ID = @p_BRANCH_LOGIN AND( (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE) OR (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN) <> 'HS' ) ) ORDER BY A.CREATE_DT DESC -- PAGING END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[rpt_TL_USER]' GO ALTER PROCEDURE [dbo].[rpt_TL_USER] @p_Filter nvarchar(50) = NULL, @p_Permission varchar(20) = NULL, @p_Role varchar(10) = NULL, @p_UserName varchar(10) = NULL, @p_AUTH_STATUS varchar(10) = NULL, @p_DEP_ID varchar(20) = NULL, @p_SubbrId NVARCHAR(20) = NULL, @p_OnlyLockedUsers bit = NULL, @p_LEVEL nvarchar(10) = NULL AS BEGIN -- PAGING declare @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_SubbrId) SELECT DISTINCT A.* , B.AUTH_STATUS_NAME, D.BRANCH_CODE, DE.DEP_NAME,DE.DEP_CODE, dbo.FN_GET_CHINHANH(D.BRANCH_ID,'KV') KHU_VUC, dbo.FN_GET_CHINHANH(D.BRANCH_ID,'CN') CHI_NHANH, D.BRANCH_NAME PGD, D.TAX_NO,E.POS_NAME, E.EMP_CODE,F.EMP_ID, T.RoleName2, (CASE A.IsActive WHEN 1 THEN N'Đã được kích hoạt' ELSE N'Bị khóa' END) AS ACTIVE, (CASE A.IsEmailConfirmed WHEN 1 THEN N'Đã được xác nhận' ELSE N'Chưa xác nhận email' END) AS SENDMAIL FROM TL_USER A LEFT JOIN CM_AUTH_STATUS B ON B.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH D ON D.BRANCH_ID = A.TLSUBBRID LEFT JOIN CM_DEPARTMENT DE ON A.DEP_ID = DE.DEP_ID LEFT JOIN AbpUserRoles UR ON A.ID = UR.UserId LEFT JOIN AbpRoles R ON R.Id = UR.RoleId LEFT JOIN CM_EMPLOYEE_LOG E ON A.TLNANME = E.USER_DOMAIN LEFT JOIN CM_EMPLOYEE F ON F.EMP_CODE = E.EMP_CODE INNER JOIN (SELECT A2.ID, (SELECT stuff((SELECT ',' + CONVERT(VARCHAR(MAX),R1.[DisplayName]) FROM TL_USER A1 LEFT JOIN AbpUserRoles UR1 ON A1.ID = UR1.UserId LEFT JOIN AbpRoles R1 ON R1.Id = UR1.RoleId WHERE A1.ID=A2.ID FOR XML PATH ('') ), 1, 1, '')) AS [RoleName2] FROM TL_USER A2 GROUP BY A2.ID) T ON T.ID=A.ID WHERE (A.TLNANME LIKE '%' + @p_UserName + '%' OR @p_UserName IS NULL OR @p_UserName = '') AND (UR.RoleId LIKE '%' + @p_Role + '%' OR @p_Role IS NULL OR @p_Role = '') AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '') AND (A.DEP_ID LIKE '%' + @p_DEP_ID + '%' OR @p_DEP_ID IS NULL OR @p_DEP_ID = '') AND (A.IsActive<> @p_OnlyLockedUsers OR @p_OnlyLockedUsers = '' OR @p_OnlyLockedUsers IS NULL) AND ((@p_LEVEL = 'ALL' AND A.TLSUBBRID IN (SELECT BRANCH_ID from @tmp)) OR (@p_LEVEL = 'UNIT' AND A.TLSUBBRID = @p_SubbrId) OR @p_SubbrId = '' OR @p_SubbrId IS NULL) AND (@p_Filter IS NULL OR @p_Filter = '' OR A.TLNANME LIKE '%' + @p_Filter + '%' OR A.TLFullName LIKE '%' + @p_Filter + '%' OR A.BRANCH_NAME LIKE '%' + @p_Filter + '%' OR A.BRANCH_NAME LIKE '%' + @p_Filter + '%' OR E.POS_CODE LIKE '%' + @p_Filter + '%' OR E.POS_NAME LIKE '%' + @p_Filter + '%' OR E.EMP_CODE LIKE '%' + @p_Filter + '%' OR DE.DEP_NAME LIKE '%' + @p_Filter + '%' ) END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQUEST_PROCESS_App]' GO ALTER PROCEDURE [dbo].[TR_REQUEST_PROCESS_App] @p_REQ_ID VARCHAR(15) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT varchar(30) = NULL, @p_ROLE_LOGIN VARCHAR(50) = NULL, @p_BRANCH_LOGIN VARCHAR(15), @p_PROCESS_DESC NVARCHAR(MAX), @p_XMLDATA XML AS --SET @p_APPROVE_DT= CAST(@p_APPROVE_DT AS DATE) --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)) SET @ERRORSYS = 'REQ-00002' IF @ERRORSYS <> '' BEGIN ROLLBACK TRANSACTION SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END BEGIN TRANSACTION -- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R')) OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc RETURN '-1' END DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50)) INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME = @p_CHECKER_ID) 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 ='') --UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103) --WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN)) Declare @hdoc INT EXEC sp_xml_preparedocument @hdoc Output,@p_XMLDATA DECLARE @lstFILE TABLE( ATTACH_ID VARCHAR(20), IS_READ BIT ) INSERT INTO @lstFILE SELECT * FROM OPENXML(@hDoc,'/Root/ATTACH_FILE',2) WITH ( ATTACH_ID VARCHAR(20), IS_READ BIT ) IF(EXISTS(SELECT TR_REQUEST_DOC_FILE_ID FROM dbo.TR_REQUEST_DOC_FILE WHERE REQ_ID=@p_REQ_ID AND IS_VIEW=1 AND EXISTS(SELECT ATTACH_ID FROM @lstFILE WHERE [@lstFILE].ATTACH_ID=TR_REQUEST_DOC_FILE.ATTACH_ID AND IS_READ=0))) BEGIN ROLLBACK TRANSACTION SELECT 'REQ-00001' Result, '' ROLE_NOTIFI, N'File đinh kèm bắt buộc đọc' ErrorDesc RETURN '0' END DECLARE @Result VARCHAR(5), @PROCESS_CURR VARCHAR(10), @STEP_CURR INT, @STEP_NEXT INT, @PROCESS_NEXT VARCHAR(10), @ROLE_USER_NOTIFI VARCHAR(50), @DEP_ID VARCHAR(15), @IS_LEAF VARCHAR(1), @NOTES NVARCHAR(50), @p_PROCESS_NOTES NVARCHAR(50) SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_CHECKER_ID) SET @PROCESS_CURR= (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C') SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR) SET @IS_LEAF=(SELECT TOP 1 IS_LEAF FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR) SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') --SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID=@p_ROLE_LOGIN) -----------------BAODNQ 11/6/2022-------------- IF(@PROCESS_CURR = 'GDK_PYC') BEGIN SET @p_PROCESS_NOTES = N'Giám đốc khối Hỗ Trợ' END ELSE IF (@PROCESS_CURR = 'GDK_CDT_TC') BEGIN SET @p_PROCESS_NOTES = N'Giám đốc khối Tài Chính' END ELSE IF (@PROCESS_CURR = 'PTGDK_CDT') BEGIN SET @p_PROCESS_NOTES = N'Phó Tổng Giám đốc khối Hỗ Trợ' END ELSE IF (@PROCESS_CURR = 'TKTGD_CDT') BEGIN SET @p_PROCESS_NOTES = N'Thư ký Tổng Giám đốc' END ELSE IF (@PROCESS_CURR = 'TGD_CDT') BEGIN SET @p_PROCESS_NOTES = N'Tổng Giám đốc' END ELSE IF (@PROCESS_CURR = 'GDK_TC') BEGIN SET @p_PROCESS_NOTES = N'Giám đốc khối Tài Chính' END UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='P', --NOTES=@NOTES+N' đã phê duyệt', NOTES = @p_PROCESS_NOTES + N' đã phê duyệt', CHECKER_ID=@p_CHECKER_ID, APPROVE_DT=convert(datetime,@p_APPROVE_DT,103) WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND ( ROLE_USER=@p_ROLE_LOGIN OR ROLE_USER IN (SELECT * FROM @TABLE_ROLE)) INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_REQ_ID, -- REQ_ID - varchar(15) @PROCESS_CURR, -- PROCESS_ID - varchar(10) @p_CHECKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime @p_PROCESS_DESC, --@NOTES+N' đã phê duyệt' -- PROCESS_DESC - nvarchar(1000) @p_PROCESS_NOTES + N' đã phê duyệt' ) IF(EXISTS(SELECT PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR AND [STATUS] ='P')) BEGIN UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID --------------------BAODNQ 6/7/2022----------------- DECLARE @p_NOTES NVARCHAR(MAX) IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = @PROCESS_NEXT AND (NOTES IS NULL OR NOTES = ''))) BEGIN IF(@PROCESS_NEXT = 'GDK_PYC') BEGIN SET @p_NOTES = N'Giám đốc khối Hỗ Trợ' END ELSE IF(@PROCESS_NEXT = 'GDK_CDT_TC' OR @PROCESS_NEXT = 'GDK_TC') BEGIN SET @p_NOTES = N'Giám đốc khối Tài Chính' END ELSE IF(@PROCESS_NEXT = 'PTGDK_CDT') BEGIN SET @p_NOTES = N'Phó Tổng Giám đốc khối Hỗ Trợ' END ELSE IF(@PROCESS_NEXT = 'TGD_CDT') BEGIN SET @p_NOTES = N'Tổng Giám đốc' END UPDATE PL_REQUEST_PROCESS SET NOTES = N'Chờ ' + @p_NOTES + N' phê duyệt' WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = @PROCESS_NEXT END --------------------END BAODNQ 6/7/2022----------------- END IF(@PROCESS_NEXT='APPROVE') BEGIN DECLARE @TempTB TABLE ( TOTAL_AMT DECIMAL(18,2), TRADE_ID VARCHAR(20), PLAN_ID VARCHAR(20) ) INSERT INTO @TempTB SELECT SUM(DT.TOTAL_AMT) TOTAL_AMT,PLDT.TRADE_ID,PLDT.PLAN_ID FROM dbo.TR_REQUEST_DOC_DT DT LEFT JOIN dbo.PL_REQUEST_DOC_DT PLDT ON DT.PL_REQDT_ID=PLDT.REQDT_ID WHERE TRAN_TYPE_ID IN (SELECT TRAN_TYPE_ID FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK') AND DT.REQ_DOC_ID=@p_REQ_ID GROUP BY PLDT.TRADE_ID,PLDT.PLAN_ID UPDATE dbo.PL_TRADEDETAIL SET AMT_EXE =AMT_EXE + (SELECT TOTAL_AMT FROM @TempTB WHERE [@TempTB].TRADE_ID=PL_TRADEDETAIL.TRADE_ID AND PL_TRADEDETAIL.PLAN_ID=[@TempTB].PLAN_ID) IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND REQ_PARENT_ID IS NOT NULL AND REQ_PARENT_ID <>'')) BEGIN DECLARE @PARENT_ID VARCHAR(20) SET @PARENT_ID =(SELECT REQ_PARENT_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) IF(EXISTS(SELECT PO_ID FROM dbo.TR_PO_MASTER WHERE REQ_DOC_ID=@PARENT_ID AND AUTH_STATUS='A')) BEGIN DECLARE lstPO CURSOR FOR SELECT PO_ID FROM dbo.TR_PO_MASTER WHERE REQ_DOC_ID=@PARENT_ID OPEN lstPO DECLARE @PO_ID VARCHAR(20),@TOTAL_ADD DECIMAL(18,2) FETCH NEXT FROM lstPO INTO @PO_ID WHILE @@FETCH_STATUS =0 BEGIN SET @TOTAL_ADD = (SELECT SUM(TOTAL_AMT) AS TOTAL FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND HANGHOA_ID IN (SELECT GOODS_ID FROM dbo.TR_PO_DETAIL WHERE PO_ID=@PO_ID )) UPDATE dbo.TR_PO_MASTER SET AMT_ADD =@TOTAL_ADD WHERE PO_ID=@PO_ID DECLARE @TOTAL_PERCENT INT,@TOTAL_AMT_REMAIN DECIMAL(18,2) SELECT @TOTAL_PERCENT= SUM([PERCENT]) ,@TOTAL_AMT_REMAIN=SUM(ISNULL(AMOUNT,0)) FROM TR_PO_PAYMENT WHERE PO_ID=@PO_ID AND NOT EXISTS (SELECT PAY_ID FROM dbo.TR_REQ_PAY_SCHEDULE WHERE TR_REQ_PAY_SCHEDULE.PAY_ID =TR_PO_PAYMENT.PAY_ID AND PO_ID =@PO_ID AND AUTH_STATUS_KT='A' AND (TRN_TYPE='PAY' OR TRN_TYPE='ADV') GROUP BY TR_REQ_PAY_SCHEDULE.PAY_ID HAVING SUM(ISNULL(AMT_PAY_REAL,0) + ISNULL(AMT_ADVANCE,0)) >= TR_PO_PAYMENT.AMOUNT) IF(EXISTS(SELECT PAY_ID FROM TR_PO_PAYMENT WHERE PO_ID=@PO_ID AND NOT EXISTS (SELECT PAY_ID FROM dbo.TR_REQ_PAY_SCHEDULE WHERE TR_REQ_PAY_SCHEDULE.PAY_ID =TR_PO_PAYMENT.PAY_ID AND PO_ID =@PO_ID AND AUTH_STATUS_KT='A' AND (TRN_TYPE='PAY' OR TRN_TYPE='ADV') GROUP BY TR_REQ_PAY_SCHEDULE.PAY_ID HAVING SUM(ISNULL(AMT_PAY_REAL,0) + ISNULL(AMT_ADVANCE,0)) >= TR_PO_PAYMENT.AMOUNT))) BEGIN UPDATE dbo.TR_PO_PAYMENT SET AMOUNT = ((@TOTAL_AMT_REMAIN + @TOTAL_ADD)/@TOTAL_PERCENT ) * [PERCENT] WHERE PO_ID=@PO_ID AND NOT EXISTS (SELECT PAY_ID FROM dbo.TR_REQ_PAY_SCHEDULE WHERE TR_REQ_PAY_SCHEDULE.PAY_ID =TR_PO_PAYMENT.PAY_ID AND PO_ID =@PO_ID AND AUTH_STATUS_KT='A' AND (TRN_TYPE='PAY' OR TRN_TYPE='ADV') GROUP BY TR_REQ_PAY_SCHEDULE.PAY_ID HAVING SUM(ISNULL(AMT_PAY_REAL,0) + ISNULL(AMT_ADVANCE,0)) >= TR_PO_PAYMENT.AMOUNT) END FETCH NEXT FROM lstPO INTO @PO_ID END END END ELSE IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK'))) BEGIN EXEC dbo.TR_REQ_DOC_Ins_To_PO @p_TR_REQ_ID = @p_REQ_ID -- varchar(15) END SET @Result='0' --------------BAODNQ 26/3/2022: Duyệt bb xét giá khi duyệt PYCMS hoàn tất------------ DECLARE @p_TR_REQUEST_DOC_TOTAL_AMT DECIMAL(18,0), @p_RECORD_ID_100 VARCHAR(15), --bb xét giá dưới 100 @p_RECORD_ID_100_500 VARCHAR(15), -- bb xét giá 100-500 @p_RECORD_ID_500 VARCHAR(15) --bb xét giá trên 500 SET @p_TR_REQUEST_DOC_TOTAL_AMT = ( SELECT TOTAL_AMT FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID ) SET @p_RECORD_ID_100 = (SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID) SET @p_RECORD_ID_100_500 = (SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID) SET @p_RECORD_ID_500 = (SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID) ----------TH BB XÉT GIÁ DƯỚI 100TR------ --IF(@p_TR_REQUEST_DOC_TOTAL_AMT < 100000000) --BEGIN -- SET @p_RECORD_ID = ( -- SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID -- ) -- IF(@p_RECORD_ID IS NOT NULL AND @p_RECORD_ID <> '') -- BEGIN -- -------DUYỆT BB XÉT GIÁ--------- -- UPDATE TR_REQ_DOC_XETGIA_DUOI_100M SET -- AUTH_STATUS = 'A', -- CHECKER_ID = @p_CHECKER_ID, -- APPROVE_DT = GETDATE() -- WHERE RECORD_ID = @p_RECORD_ID -- IF @@ERROR <> 0 GOTO ABORT -- END --END IF(@p_RECORD_ID_100 IS NOT NULL AND @p_RECORD_ID_100 <> '') BEGIN -------DUYỆT BB XÉT GIÁ--------- UPDATE TR_REQ_DOC_XETGIA_DUOI_100M SET AUTH_STATUS = 'A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = GETDATE() WHERE RECORD_ID = @p_RECORD_ID_100 IF @@ERROR <> 0 GOTO ABORT END ----------TH BB XÉT GIÁ TỪ 100TR - 500TR------ --ELSE IF (@p_TR_REQUEST_DOC_TOTAL_AMT >= 100000000 AND @p_TR_REQUEST_DOC_TOTAL_AMT < 500000000) --BEGIN -- SET @p_RECORD_ID = ( -- SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID -- ) -- IF(@p_RECORD_ID IS NOT NULL AND @p_RECORD_ID <> '') -- BEGIN -- -----DUYỆT BB XÉT GIÁ--------- -- UPDATE TR_REQ_DOC_XETGIA_100M_500M SET -- AUTH_STATUS = 'A', -- CHECKER_ID = @p_CHECKER_ID, -- APPROVE_DT = GETDATE() -- WHERE RECORD_ID = @p_RECORD_ID -- IF @@ERROR <> 0 GOTO ABORT -- END --END ELSE IF (@p_RECORD_ID_100_500 IS NOT NULL AND @p_RECORD_ID_100_500 <> '') BEGIN -----DUYỆT BB XÉT GIÁ--------- UPDATE TR_REQ_DOC_XETGIA_100M_500M SET AUTH_STATUS = 'A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = GETDATE() WHERE RECORD_ID = @p_RECORD_ID_100_500 IF @@ERROR <> 0 GOTO ABORT END ----------TH BB XÉT GIÁ TRÊN 500TR------ --ELSE --BEGIN -- SET @p_RECORD_ID = ( -- SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID -- ) -- IF(@p_RECORD_ID IS NOT NULL AND @p_RECORD_ID <> '') -- BEGIN -- -------DUYỆT BB XÉT GIÁ--------- -- UPDATE TR_REQ_DOC_XETGIA_TREN_500M SET -- AUTH_STATUS = 'A', -- CHECKER_ID = @p_CHECKER_ID, -- APPROVE_DT = GETDATE() -- WHERE RECORD_ID = @p_RECORD_ID -- IF @@ERROR <> 0 GOTO ABORT -- END --END ELSE IF (@p_RECORD_ID_500 IS NOT NULL AND @p_RECORD_ID_500 <> '') BEGIN -------DUYỆT BB XÉT GIÁ--------- UPDATE TR_REQ_DOC_XETGIA_TREN_500M SET AUTH_STATUS = 'A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = GETDATE() WHERE RECORD_ID = @p_RECORD_ID_500 IF @@ERROR <> 0 GOTO ABORT END ------------END BAODNQ 26/3/2022---------------- ----------------BAODNQ 11/6/2022 : Duyệt tờ trình CĐT khi duyệt PYCMS--------- DECLARE @p_PL_APPOINT_CONTRACTOR_ID VARCHAR(15) = ( SELECT REQ_ID FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID ) IF(@p_PL_APPOINT_CONTRACTOR_ID IS NOT NULL AND @p_PL_APPOINT_CONTRACTOR_ID <> '') BEGIN UPDATE PL_APPOINT_CONTRACTOR SET AUTH_STATUS = 'A', PROCESS_ID = 'APPROVE', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE TR_REQUEST_DOC_ID = @p_REQ_ID IF @@ERROR <> 0 GOTO ABORT END END ELSE BEGIN SET @Result='1' END COMMIT TRANSACTION SELECT @Result as Result , @ROLE_USER_NOTIFI AS ROLE_NOTIFI, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ROLE_NOTIFI ,'' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[MW_OUT_KT_Upd]' GO /*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('OUT','MWTF','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('MWTF','1','1')*/ /*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('OUT_DT','MWTDT','') INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('MWTDT','1','1')*/ ALTER PROCEDURE [dbo].[MW_OUT_KT_Upd] @p_OUT_ID VARCHAR(15) = NULL, @p_TRN_Date VARCHAR(25) = NULL, @p_TRN_TIME VARCHAR(50) = NULL, @p_BRN_ID VARCHAR(15) = NULL, @p_DEPT_ID VARCHAR(15) = NULL, @p_QTY DECIMAL(18,2) = NULL, @p_PRICE NUMERIC(18, 0) = NULL, @p_TOTAL_AMT NUMERIC(18, 2) = NULL, @p_NOTES NVARCHAR(1000)= NULL, @p_OUT_DESC NVARCHAR(500) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_MAKER_ID VARCHAR(15) = NULL, @p_CREATE_DT VARCHAR(25) = NULL, @p_CHECKER_ID VARCHAR(15) = NULL, @p_APPROVE_DT VARCHAR(25) = NULL, @p_KT_AUTH_STATUS VARCHAR(1) = NULL, @p_KT_MAKER_ID VARCHAR(15) = NULL, @p_KT_CREATE_DT VARCHAR(25) = NULL, @p_KT_CHECKER_ID VARCHAR(15) = NULL, @p_KT_APPROVE_DT VARCHAR(25) = NULL, @p_RECORD_STATUS VARCHAR(1) = NULL, @p_XmlData XML = NULL, @p_CORE_NOTE nvarchar(500) = NULL, @p_WARE_HOUSE VARCHAR(15) = NULL AS DECLARE --DVSD @OUT_ID VARCHAR(15) = NULL, @MAST_BAL_ID VARCHAR(15) = NULL, @CUST_NAME NVARCHAR(200) = NULL, @QTY DECIMAL(18,2) = NULL, @QTY_OLD DECIMAL(18,2) = NULL, @PRICE NUMERIC(18, 0) = NULL, @TOTAL_AMT NUMERIC(18, 2) = NULL, @NOTES NVARCHAR(1000), @TO_BRN_ID varchar(15) = NULL, @TO_DEPT_ID varchar(15) = NULL, @EVENT_NAME NVARCHAR(1000) = NULL, --LUCTV BO SUNG 15-02-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU @IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU @COST_ACC VARCHAR(50) = NULL DECLARE @hdoc INT; EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData; DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdoc, '/Root/XmlData', 2) WITH ( OUT_ID VARCHAR(15), MAST_BAL_ID VARCHAR(15), --FR_BRN_ID varchar(15) , --FR_DEPT_ID varchar(15) , --FR_PRICE_ID varchar(15) , --TO_BRN_ID varchar(15) , --TO_DEPT_ID varchar(15) , CUST_NAME NVARCHAR(200), QTY DECIMAL(18,2), QTY_OLD DECIMAL(18,2), --QTY_OLD int , PRICE NUMERIC(18, 0), TOTAL_AMT NUMERIC(18, 2), NOTES NVARCHAR(1000), TO_BRN_ID varchar(15), TO_DEPT_ID varchar(15),EVENT_NAME NVARCHAR(1000), IS_BCT VARCHAR(1), COST_ACC VARCHAR(50) ); OPEN XmlData; BEGIN TRANSACTION; --LUCTV: NGAY 07 -06 2019. BO SUNG RANG BUOC NEU DANG TRA VE CHO HANH CHINH THI KHONG DUOC PHEP CAP NHAT THONG TIN IF( (SELECT AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID)<>'A') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result,'' OUT_ID, N'Thông tin xuất vật liệu đang bị trả về bộ phận hành chính. Vui lòng chờ bộ phận hành chính kiểm duyệt' ErrorDesc RETURN '-1' END -- END LUCTV: NGAY 07 -06 2019. UPDATE [dbo].[MW_OUT] SET --[TRN_Date] = CONVERT(VARCHAR(20), @p_TRN_Date, 103), --[TRN_TIME] = @p_TRN_TIME, [QTY] = @p_QTY, --[QTY_OLD] = @p_QTY, [PRICE] = ROUND(@p_PRICE,0), [TOTAL_AMT] = @p_TOTAL_AMT, [NOTES] = @p_NOTES, KT_AUTH_STATUS ='U', KT_CREATE_DT = CONVERT(DATETIME, @p_KT_CREATE_DT, 103), KT_MAKER_ID =@p_KT_MAKER_ID, CORE_NOTE = @p_CORE_NOTE, DEPT_ID = @p_DEPT_ID WHERE [OUT_ID] = @p_OUT_ID; IF @@Error <> 0 GOTO ABORT; --Insert XmlData DELETE FROM MW_OUT_DT WHERE OUT_ID = @p_OUT_ID; FETCH NEXT FROM XmlData INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC DECLARE @INDEX INT =0 DECLARE @PRICE_CODE VARCHAR(30) WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @p_OUT_DT_ID VARCHAR(15); DECLARE @l_COST_ACC VARCHAR(50); EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT; IF @p_OUT_DT_ID = '' OR @p_OUT_DT_ID IS NULL GOTO ABORT; --INSERT INTO [dbo].[OUT_DT] ([OUT_DT_ID], [OUT_ID], [MAST_BAL_ID], [FR_BRN_ID], [FR_DEPT_ID], [FR_PRICE_ID], [TO_BRN_ID], [TO_DEPT_ID], [QTY], [QTY_OLD], [PRICE], [TOTAL_AMT], [NOTES]) --VALUES( @p_OUT_DT_ID, @p_OUT_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES) -- 07 -03 -2019 KIEM TRA LAI SO LUONG (VI SE CO TRUONG HOP VUA DIEU CHUYEN, VUA XUAT SD, VƯA THU HOI, VUA THANH LY TREN 1 MAST_BAL_ID) SET @INDEX = @INDEX +1 SET @PRICE_CODE =(SELECT PRICE_CODE FROM MW_MAST_PRICE WHERE PRICE_ID =(SELECT PRICE_ID FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID)) IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID)) BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, @OUT_ID OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng xuất sử dụng vượt quá số lượng tồn' ErrorDesc RETURN '-1' END SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC WHEN @COST_ACC = null then MT.EXP_ACCTNO WHEN @COST_ACC = '' then MT.EXP_ACCTNO ELSE MT.EXP_ACCTNO END FROM dbo.MW_MAST_BAL A LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID WHERE A.MAST_BAL_ID = @MAST_BAL_ID) IF(@l_COST_ACC <> @COST_ACC) BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí sai quy định. Bạn chỉ được điều chỉnh tài khoản chi phí của vật liệu thuộc nhóm Vật Liệu Thẻ Dùng Chung.' ErrorDesc RETURN '-1' END IF(@COST_ACC IS NULL OR @COST_ACC = '') BEGIN ROLLBACK TRANSACTION CLOSE XmlData; DEALLOCATE XmlData; SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí không được để trống' ErrorDesc RETURN '-1' END ----LUCTV: 03-1-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC XUAT SU DUNG THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD --IF(EXISTS(SELECT * FROM MW_OUT_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND OUT_ID<>@p_OUT_ID AND OUT_ID IN (SELECT OUT_ID FROM MW_OUT WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được xuất sử dụng. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc; -- RETURN '-1'; --END ----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC DIEU CHUYEN THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD --IF(EXISTS(SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được điều chuyển. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc; -- RETURN '-1'; --END ----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC THANH LY THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD --IF(EXISTS(SELECT * FROM MW_LIQ_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND LIQ_ID IN (SELECT LIQ_ID FROM MW_LIQ_MASTER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1'))) --BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được thanh lý. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc; -- RETURN '-1'; --END INSERT INTO [dbo].[MW_OUT_DT] ( [OUT_DT_ID], [OUT_ID], [MAST_BAL_ID], [CUST_NAME], [QTY], [QTY_OLD], [PRICE], [TOTAL_AMT], [NOTES], [TO_BRN_ID], [TO_DEPT_ID],[EVENT_NAME],[IS_BCT], [COST_ACC] ) SELECT @p_OUT_DT_ID, @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT, @COST_ACC IF @@Error <> 0 GOTO ABORT; FETCH NEXT FROM XmlData INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC END; CLOSE XmlData; DEALLOCATE XmlData; -- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ DELETE dbo.PL_PROCESS WHERE REQ_ID = @OUT_ID AND PROCESS_ID = 'UPDATE_KT' INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @OUT_ID, -- REQ_ID - varchar(15) 'UPDATE_KT', -- PROCESS_ID - varchar(10) @p_KT_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Cập nhật phiếu xuất vật kế toán thành công' , N'Cập nhật phiếu xuất vật liệu kế toán' -- PROCESS_DESC - nvarchar(1000) ) COMMIT TRANSACTION; SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc; RETURN '0'; ABORT: BEGIN CLOSE XmlData; DEALLOCATE XmlData; ROLLBACK TRANSACTION; SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc; RETURN '-1'; END; GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Appr]' GO ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Appr] --Luanlt 2019/17/10 - Sửa params @p_REQ_PAY_ID varchar(15)= NULL, @p_CHECKER_ID_KT varchar(15) = NULL, @p_AUTH_STATUS_KT VARCHAR(10) = NULL AS -- BEGIN VALIDATE IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID_KT = @p_CHECKER_ID_KT AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị tạm ứng này! Giao dịch viên không có quyền duyệt phiếu đề nghị tạm ứng' ErrorDesc RETURN '-1' END IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_CHECKER_ID_KT AND TYPE_JOB = 'KS')) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị tạm ứng này. Phiếu đề nghị tạm ứng đang được kiểm soát viên khác xử lý' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được kiểm soát viên phê duyệt trước đó' ErrorDesc RETURN '-1' END IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về giao dịch viên. Vui lòng kiểm tra lại thông tin' ErrorDesc RETURN '-1' END -- CHAN CUOI IF (EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT <> 'P' AND AUTH_STATUS_KT <> 'S' AND REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' chưa được gửi phê duyệt. Vui lòng đợi người tạo gửi phê duyệt trước khi phê duyệt phiếu' ErrorDesc RETURN '-1' END -- END VALIDATE DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TYPE_JOB='KS') SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1 BEGIN TRANSACTION IF(@LEVEL_JOB='1') BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT='A', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT = GETDATE() WHERE REQ_PAY_ID = @p_REQ_PAY_ID -- DOANPTT 291222: THEM LOG KPI UPDATE TR_REQ_KPI SET AUTH_STATUS_KT ='A', APPROVE_DT_KT = GETDATE(),CHECKER_ID_KT = @p_CHECKER_ID_KT, REQ_STATUS = 'APP' WHERE REQ_ID = @p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P' -- UPDATE LICH THANH TOAN UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND (TLNAME=@p_CHECKER_ID_KT OR 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_ID,'APP',@p_CHECKER_ID_KT,GETDATE(), N'Kiểm soát viên duyệt phiếu',N'Kế toán duyệt phiếu') --thieuvq ban vao core - 171219 BEGIN DECLARE @MAKER VARCHAR(15) = (SELECT MAKER_ID_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) DECLARE @RES VARCHAR(10) --- BAN BUT TOAN VAO CORE EXEC [dbo].[PAY_ENTRIES_POST_SetApp] @p_REQ_PAY_ID,@MAKER,@p_CHECKER_ID_KT, @RES OUT --END --- NEU LA TAM UNG DINH KI THI BO SUNG 1 KI THANHH TOAN --- KIEM TRA NEU LA THANH TOAN CAC HOP DONG DINH KI IF(((SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='P') AND (SELECT IS_PERIOD FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ='Y') BEGIN DECLARE @PAY_AMOUNT DECIMAL(18,0),@PAY_DT DATETIME,@l_CONTRACT_ID VARCHAR(15),@p_PAY_PHASE NVARCHAR(100),@REASON_TTDK NVARCHAR(2000) DECLARE CURS_PERIOD CURSOR FOR SELECT A.AMT_PAY,A.PAY_DT_REAL,A.CONTRACT_ID,A.PAY_PHASE,A.REASON FROM TR_REQ_PAY_PERIOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID ORDER BY A.CONTRACT_ID OPEN CURS_PERIOD FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@p_PAY_PHASE,@REASON_TTDK WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_PAY_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],[PAY_DT], [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT]) VALUES(@PAY_AMOUNT,GETDATE(), @l_PAY_ID ,@l_CONTRACT_ID ,@p_PAY_PHASE ,GETDATE(),100,@PAY_AMOUNT,'2' ,@REASON_TTDK ,'1' ,@p_CHECKER_ID_KT ,GETDATE() ,'A' ,@p_CHECKER_ID_KT,GETDATE()) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@p_PAY_PHASE,@REASON_TTDK END CLOSE CURS_PERIOD DEALLOCATE CURS_PERIOD -- CAP NHAT DETAIL UPDATE TR_REQ_PAY_PERIOD SET AUTH_STATUS_KT ='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID END END ELSE BEGIN -- CAP NHAT C CHO CAP CHA UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_CHECKER_ID_KT UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV) COMMIT TRANSACTION SELECT '2' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Xác nhận phiếu thành công' ErrorDesc RETURN '2' END IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được 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'Altering [dbo].[MW_OUT_Byid]' GO ALTER PROC [dbo].[MW_OUT_Byid] @p_OUT_ID VARCHAR(15) = NULL --AS --SELECT A.*, -- B.BRANCH_CODE AS FR_BR_CODE, -- B.BRANCH_NAME AS FR_BRNAME, -- BR.BRANCH_CODE AS TO_BRCODE, -- BR.BRANCH_NAME AS TO_BRNAME, -- C.DEP_CODE AS FR_DEPCODE, -- C.DEP_NAME FR_DEPNAME, -- CR.DEP_CODE AS TO_DEPCODE, CR.DEP_NAME AS TO_DEPNAME, -- MB.MATERIAL_ID, -- MB.PRICE_ID, -- MB.QTY_BALANCE, -- MI.MATERIAL_NAME --FROM MW_OUT_DT A -- LEFT JOIN dbo.MW_OUT O ON A.OUT_DT_ID = O.OUT_ID -- LEFT JOIN CM_BRANCH B ON O.BRN_ID = B.BRANCH_ID -- LEFT JOIN CM_BRANCH BR ON A.TO_BRN_ID = BR.BRANCH_ID -- LEFT JOIN CM_DEPARTMENT C ON O.DEPT_ID = C.DEP_ID -- LEFT JOIN CM_DEPARTMENT CR ON A.TO_DEPT_ID = CR.DEP_ID -- LEFT JOIN MW_MAST_BAL MB ON A.MAST_BAL_ID = MB.MAST_BAL_ID -- LEFT JOIN MW_MAST_PRICE MP ON MB.PRICE_ID = MB.PRICE_ID -- LEFT JOIN MW_IN MI ON MI.IN_ID= MP.MATERIAL_ID AS DECLARE @TABLE TABLE(MASTERBAL_ID VARCHAR(15), SL_TONG INT) INSERT INTO @TABLE SELECT MAST_BAL_ID, SUM(QTY) FROM MW_OUT_DT WHERE OUT_ID = @p_OUT_ID GROUP BY MAST_BAL_ID SELECT A.OUT_DT_ID, A.OUT_ID,A.MAST_BAL_ID,A.CUST_NAME,A.QTY,A.PRICE,A.TOTAL_AMT,A.NOTES, A.QTY_OLD QTY_OLD,A.TO_BRN_ID,A.TO_DEPT_ID,A.EVENT_NAME,A.IS_BCT,A.COST_ACC, B.BRANCH_CODE AS FR_BR_CODE, B.BRANCH_NAME AS FR_BRNAME, BR.BRANCH_CODE AS TO_BRCODE, BR.BRANCH_NAME AS TO_BRNAME, C.DEP_CODE AS FR_DEPCODE, C.DEP_NAME FR_DEPNAME, CR.DEP_CODE AS TO_DEPCODE, CR.DEP_NAME AS TO_DEPNAME, CR.BRANCH_ID AS TO_DEPT_BRN_ID, MB.MATERIAL_ID, MB.PRICE_ID, --EP.SL_TON QTY_BALANCE ,EP.SL_TON + TT.SL_TONG SL_TON_TT, ISNULL(EP.SL_TON,0) + TT.SL_TONG QTY_BALANCE ,ISNULL(EP.SL_TON,0) + TT.SL_TONG SL_TON_TT, --EP.SL_TON + TT.SL_TONG QTY_BALANCE ,EP.SL_TON SL_TON_TT, -- A.QTY_OLD - A.QTY QTY_BALANCE ,A.QTY_OLD SL_TON_TT, -- DuyTN MI.MATERIAL_NAME, MP.PRICE_CODE,MB.TOTAL_AMT AS CUR_AMT_MASTBAL, --doanptt them don vi tinh D.UNIT_ID, D.UNIT_CODE, D.UNIT_NAME, --doanptt 040722 them ma code cho don vi, phong ban nhan BR.BRANCH_CODE + ' - ' + BR.BRANCH_NAME AS TO_BRFULLNAME, CR.DEP_CODE + ' - ' + CR.DEP_NAME AS TO_DEPFULLNAME FROM MW_OUT_DT A LEFT JOIN @TABLE TT ON TT.MASTERBAL_ID = A.MAST_BAL_ID LEFT JOIN dbo.MW_OUT O ON A.OUT_DT_ID = O.OUT_ID LEFT JOIN CM_BRANCH B ON O.BRN_ID = B.BRANCH_ID LEFT JOIN CM_BRANCH BR ON A.TO_BRN_ID = BR.BRANCH_ID LEFT JOIN CM_DEPARTMENT C ON O.DEPT_ID = C.DEP_ID LEFT JOIN CM_DEPARTMENT CR ON A.TO_DEPT_ID = CR.DEP_ID LEFT JOIN MW_MAST_BAL MB ON A.MAST_BAL_ID = MB.MAST_BAL_ID LEFT JOIN MW_MATERIAL MT ON MB.MATERIAL_ID = MT.MATERIAL_ID LEFT JOIN CM_UNIT D ON MT.UNIT_ID= D.UNIT_ID LEFT JOIN MW_MAST_PRICE MP ON MB.PRICE_ID = MP.PRICE_ID LEFT JOIN MW_IN MI ON MP.MATERIAL_ID = MI.IN_ID LEFT JOIN MW_EXPORT_VIEW EP ON A.MAST_BAL_ID= EP.MAST_BAL_ID WHERE A.OUT_ID = @p_OUT_ID OR @p_OUT_ID IS NULL OR @p_OUT_ID = ''; GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Altering [dbo].[TR_REQ_PAYMENT_INVOICE_Import]' GO ALTER PROC [dbo].[TR_REQ_PAYMENT_INVOICE_Import] ( @p_FR_BR_ID VARCHAR(15) = NULL, @p_LEVLEL VARCHAR(15) = NULL, @p_WARE_HOUSE VARCHAR(15) = NULL, @p_XmlData XML=NULL ) AS BEGIN DECLARE @tmpTABLE TABLE( STT INT IDENTITY(1, 1) PRIMARY KEY, INVOICE_SIGN NVARCHAR(500), INVOICE_NO_SIGN VARCHAR(15), INVOICE_NO NVARCHAR(50), INVOICE_DT VARCHAR(20), SELLER NVARCHAR(500), TAX_NO NVARCHAR(15), GOODS_NAME NVARCHAR(500), PRICE DECIMAL(18,2), TAX DECIMAL(18,2), VAT DECIMAL(18,2), TOTAL_AMT DECIMAL(18,2) ) DECLARE @hdoc INT EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData INSERT INTO @tmpTABLE SELECT * FROM OPENXML(@hDoc, '/Root/XmlData', 2) WITH ( INVOICE_SIGN NVARCHAR(500), INVOICE_NO_SIGN VARCHAR(15), INVOICE_NO NVARCHAR(50), INVOICE_DT VARCHAR(20), SELLER NVARCHAR(500), TAX_NO NVARCHAR(15), GOODS_NAME NVARCHAR(500), PRICE DECIMAL(18,2), TAX DECIMAL(18,2), VAT DECIMAL(18,2), TOTAL_AMT DECIMAL(18,2) ) SELECT T.INVOICE_SIGN, T.INVOICE_NO, CONVERT(DATE,T.INVOICE_DT,103) AS INVOICE_DT, T.SELLER, T.TAX_NO, T.GOODS_NAME, T.PRICE, T.TAX, T.VAT, (T.PRICE + T.VAT) AS TOTAL_AMT FROM @tmpTABLE T ORDER BY T.STT ASC END