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_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, 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 = dbo.fChuyenCoDauThanhKhongDau(@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_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) 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) 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 = @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