SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON 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_DMMS_OPINION NVARCHAR(MAX) = 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, @p_XMP_TEMP_TEMPLATE_REQUEST_DOC XML = 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, DMMS_OPINION = @p_DMMS_OPINION --NGUYENTD 30072024_SECRETKEY: CẬP NHẬT Ý KIẾN DMMS 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(MAX), 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(MAX), 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), HH_DT_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(MAX), @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(MAX), @UNIT_NAME NVARCHAR(100), @HANGHOA_ID VARCHAR(15), @CONTRACT_ID VARCHAR(15), @HH_DT_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, @HH_DT_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 ---------------------NGUYENTD NẾU HTMS LÀ MUA SẮM TRỰC TRIẾP (HĐNT) VÀ KHÔNG CHỌN HỢP ĐỒNG THÌ KHÔNG CHO LƯU ------------------------------- IF(@TRAN_TYPE_ID = 'TRN0000000008' AND (@CONTRACT_ID IS NULL OR @CONTRACT_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': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không chọn hợp đồng.' + CHAR(10) + N'
* Nếu chọn hình thức ' + @p_TRAN_TYPE_NAME + N', vui lòng chọn hợp đồng.' ErrorDesc RETURN '-1' 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 -- LUCTV 12062023_SECRETKEY KIỂM TRA NẾU NHÀ CUNG CẤP CHƯA TỒN TẠI THÌ BÁO LỖI --- hieuhm 24072023_SECRETKEY tắt check nhà cung cấp không có trong hệ thống -- IF((@SUP_NAME IS NOT NULL AND @SUP_NAME <> '') AND NOT EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_ID = @SUP_ID AND SUP_NAME IS NOT NULL AND 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': Nhà cung cấp: ' + @SUP_NAME +N' chưa tồn tại trong hệ thống. Vui lòng vào danh mục quản lý nhà cung cấp khới tạo & phê duyệt nhà cung cấp này trước khi sử dụng' -- ErrorDesc -- RETURN '-1' -- --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 -- LUCTV 19062023_SECRETKEY KIỂM TRA NẾU NHÀ CUNG CẤP CHƯA ĐƯỢC DUYỆT THÌ BÁO LỖI HIEUHM ĐỔI SUP_NAME THÀNH SUP_ID 22062023_SECRETKEY IF((@SUP_NAME IS NOT NULL AND @SUP_NAME <> '') AND EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_ID =@SUP_ID AND SUP_NAME IS NOT NULL AND SUP_NAME <>'' AND ISNULL(AUTH_STATUS,'') <> 'A')) 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': Nhà cung cấp: ' + @SUP_NAME +N' chưa được duyệt. Vui lòng vào danh mục quản lý nhà cung cấp phê duyệt nhà cung cấp này trước khi sử dụng' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_ID =@SUP_ID AND ISNULL(AUTH_STATUS,'') <> 'A')) 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': Nhà cung cấp: ' + @SUP_NAME +N'có mã: '+ @SUP_ID +N' chưa được duyệt. Vui lòng vào danh mục quản lý nhà cung cấp phê duyệt nhà cung cấp này trước khi sử dụng' ErrorDesc RETURN '-1' END ----LUCTV 22062023_KIEM TRA BỎ QUA VIỆC LẤY NCC THEO TÊN, SẼ LẤY MẶC ĐỊNH THEO ID NCC --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 @TAXES = 0 SET @EXCHANGE_RATE = 1 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, HH_DT_ID = @HH_DT_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, @HH_DT_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 --NGUYENTD 31072024_SECRETKEY: THÊM TỜ TRÌNH NGHIỆP VỤ Ở DMMS -- NÂNG CẤP GD 4 IF(@p_XMP_TEMP_TEMPLATE_REQUEST_DOC.exist('*') = 0) BEGIN SET @p_XMP_TEMP_TEMPLATE_REQUEST_DOC = NULL; END --XOÁ TỜ TRÌNH NGHIỆP VỤ CŨ ADD MỚI DELETE CM_TEMPLATE_REQUEST_DOC WHERE TRN_ID = @p_REQ_ID DECLARE @hdocTemplateRequestDoc INT EXEC sp_xml_preparedocument @hdocTemplateRequestDoc OUTPUT, @p_XMP_TEMP_TEMPLATE_REQUEST_DOC; -- DS TO TRINH NGHIEP VU DECLARE @REQUEST_TEMPLATE_ID VARCHAR(20), @REQUEST_TEMPLATE_CODE VARCHAR(20), @REQUEST_TEMPLATE_NAME NVARCHAR(500), @TYPE_TEMPLATE_NAME NVARCHAR(500), @REPORT_NO NVARCHAR(500), @BRANCH_NAME NVARCHAR(100), @REPORT_DT VARCHAR(25), @APPROVE_DT1 VARCHAR(25) DECLARE XmlDataTemplateRequestDoc CURSOR LOCAL FOR SELECT * FROM OPENXML(@hdocTemplateRequestDoc, 'Root/XmlDataTemplateRequestDoc',2) WITH(REQUEST_TEMPLATE_ID VARCHAR(20), REQUEST_TEMPLATE_CODE VARCHAR(20), REQUEST_TEMPLATE_NAME NVARCHAR(500), TYPE_TEMPLATE_NAME NVARCHAR(500), REPORT_NO NVARCHAR(500), BRANCH_NAME NVARCHAR(100), REPORT_DT VARCHAR(25), APPROVE_DT VARCHAR(25)) OPEN XmlDataTemplateRequestDoc --- INSERT TO TRINH NGHIEP VU FETCH NEXT FROM XmlDataTemplateRequestDoc INTO @REQUEST_TEMPLATE_ID, @REQUEST_TEMPLATE_CODE, @REQUEST_TEMPLATE_NAME, @TYPE_TEMPLATE_NAME, @REPORT_NO, @BRANCH_NAME, @REPORT_DT, @APPROVE_DT1 WHILE @@fetch_status=0 BEGIN DECLARE @l_CM_TEMPLATE_REQUEST_DOC_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'CM_TEMPLATE_REQUEST_DOC', @l_CM_TEMPLATE_REQUEST_DOC_ID OUT; IF @l_CM_TEMPLATE_REQUEST_DOC_ID='' OR @l_CM_TEMPLATE_REQUEST_DOC_ID IS NULL GOTO ABORT; INSERT INTO [dbo].[CM_TEMPLATE_REQUEST_DOC] ([CM_TEMPLATE_REQUEST_DOC_ID] ,[TRN_ID] ,[REQUEST_TEMPLATE_ID] ,[MAKER_ID] ,[CREATE_DT] ) VALUES (@l_CM_TEMPLATE_REQUEST_DOC_ID ,@p_REQ_ID ,@REQUEST_TEMPLATE_ID ,@p_MAKER_ID , GETDATE()) IF @@error<>0 GOTO ABORT; FETCH NEXT FROM XmlDataTemplateRequestDoc INTO @REQUEST_TEMPLATE_ID, @REQUEST_TEMPLATE_CODE, @REQUEST_TEMPLATE_NAME, @TYPE_TEMPLATE_NAME, @REPORT_NO, @BRANCH_NAME, @REPORT_DT, @APPROVE_DT1 END; CLOSE XmlDataTemplateRequestDoc; DEALLOCATE XmlDataTemplateRequestDoc; --NGUYENTD 31072024_SECRETKEY: THÊM TỜ TRÌNH NGHIỆP VỤ Ở DMMS --INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) --SELECT value,'UPD', @p_MAKER_ID, GETDATE(),N'Nhân viên cập nhật ký kiến DMMS với nội dung: ' + @p_DMMS_OPINION, N' Nhân viên xử lý phiếu' --FROM WSISPLIT(@p_REQ_ID,',') 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 --12012024_SECRETKEY --10062025_secretkey