CREATE OR ALTER PROCEDURE dbo.MW_OUT_KSV_KT_App @p_OUT_ID VARCHAR(15) =NULL, @p_CHECKER_ID VARCHAR(100) =NULL, @p_APPROVE_DT VARCHAR(20) =NULL, @p_XmlData XML=NULL AS DECLARE @OUT_ID VARCHAR(15) =NULL,@OUT_DT_ID VARCHAR(15) =NULL, @BRN_ID VARCHAR(15) =NULL, @DEPT_ID VARCHAR(20)=NULL, @MAST_BAL_ID VARCHAR(15) =NULL, @CUST_NAME NVARCHAR(200) =NULL, @QTY DECIMAL(18,2)=NULL, @PRICE NUMERIC(18, 0) =NULL, @TOTAL_AMT NUMERIC(18, 2) =NULL, @NOTES NVARCHAR(1000) =NULL, @TO_BRN_ID VARCHAR(15) =NULL, @TO_DEPT_ID VARCHAR(15) =NULL; DECLARE @hdoc INT; DECLARE @INDEX INT =0 DECLARE @p_ID_MAS_BAL VARCHAR(15); EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData; DECLARE @C_TO_BRN_ID VARCHAR(15), @C_TO_DEP_ID VARCHAR(15) DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdoc, '/Root/XmlData', 2) WITH( OUT_ID VARCHAR(15), OUT_DT_ID VARCHAR(15), MAST_BAL_ID VARCHAR(15), CUST_NAME NVARCHAR(200), QTY DECIMAL(18,2), PRICE NUMERIC(18, 0), TOTAL_AMT NUMERIC(18, 2), NOTES NVARCHAR(1000), TO_BRN_ID VARCHAR(15), TO_DEPT_ID VARCHAR(15) ); OPEN XmlData; BEGIN TRANSACTION; --Insert XmlData --DELETE FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID DECLARE @p_ID VARCHAR(15); FETCH NEXT FROM XmlData INTO @OUT_ID,@OUT_DT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID; DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0; DECLARE @l_SUM_TOTAL_AMT NUMERIC(18, 2)=0; DECLARE @l_TOTAL_AMT NUMERIC(18, 2)=0; IF(@@FETCH_STATUS=-1)BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION; SELECT '-1' AS Result, @p_OUT_ID OUT_ID, N'Vui lòng duyệt lại sau khi dữ liệu được load hoàn tất' ErrorDesc; RETURN '-1'; END; IF((SELECT mo.STATUS FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID)<> 'KSV_KT_APP') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' OUT_ID, N'Phiếu xuất chưa đến bước duyệt bạn không được phép cập nhật thông tin.' ErrorDesc RETURN '-1' END IF NOT EXISTS(SELECT tugr.ROLE_ID FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) tugr WHERE tugr.ROLE_ID = 'KSV') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' OUT_ID, N'Người dùng không có quyền duyệt phiếu này.' ErrorDesc RETURN '-1' END -- 24-03-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET IF((SELECT AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) ='R') BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Giao dịch đ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 DECLARE @CORE_NOTE NVARCHAR(1000) = NULL, @MATERIAL_ID VARCHAR(15) = NULL, @VAT NUMERIC(18, 0), @VAT_AMT NUMERIC(18, 0),@PRICE_VAT NUMERIC(18, 0), @FR_BRN_ID varchar(15) = NULL, @FR_DEPT_ID varchar(15) = NULL, @WARE_ID VARCHAR(15) = NULL DECLARE @EXP_ACCTNO VARCHAR(50), @MATERIAL_ACCTNO VARCHAR(50), @VAT_ACCTNO VARCHAR(50), @TCCT VARCHAR(50) DECLARE @l_DEP_CODE VARCHAR(15) = NULL; DECLARE @l_D_BRANCH_CODE VARCHAR(15) = NULL; DECLARE @l_C_BRANCH_CODE VARCHAR(15) = NULL DECLARE @l_MAT_CODE VARCHAR(15) = NULL; DECLARE @l_WARE_ID VARCHAR(15) = NULL; DECLARE @MATERIAL_ACCNO VARCHAR(15) = NULL; DECLARE @BR_CODE VARCHAR(25) = NULL; DECLARE @DP_CODE VARCHAR(25) = NULL; DECLARE @l_MAKER_ID VARCHAR(25) = NULL; DECLARE @p_MAKER_ID VARCHAR(25) = NULL; DECLARE @p_REQ_USER VARCHAR(25) = NULL; --- GEN ID KSV ĐỂ QUẢN LÝ GD HẠCH TOÁN BƯỚC KSV --- DECLARE @p_OUT_KSV_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'OUT_KSV_ID', @p_OUT_KSV_ID OUT; ----- SO GIAO DICH DECLARE @l_TRN_NO VARCHAR(15), @l_MAKER_KT VARCHAR(100), @l_ETP_ID VARCHAR(20), @l_ET_ID VARCHAR(20), @BR_CR_TYPE VARCHAR(20), @PYC VARCHAR(20) SELECT @p_MAKER_ID = A.MAKER_ID, @WARE_ID = A.WARE_ID, @BR_CR_TYPE = CB.BRANCH_TYPE, @CORE_NOTE = A.NOTES, @PYC = A.MW_REQ_ID, @p_REQ_USER = A.REQ_USER FROM MW_OUT A LEFT JOIN CM_BRANCH CB ON A.BRN_ID = CB.BRANCH_ID WHERE A.OUT_ID = @p_OUT_ID -------- NẾU CÓ PYC THÌ LẤY NGƯỜI TẠO PHIẾU LÀM NVHT, KHONG THÌ LẤY NGƯỜI YÊU CẦU ELSE MAKER IF @PYC IS NOT NULL AND @PYC <> '' BEGIN SET @l_MAKER_ID = (SELECT MR.MAKER_ID FROM MW_REQ MR WHERE MR.REQ_ID = @PYC) END ELSE SET @l_MAKER_ID = ISNULL(@p_REQ_USER,@p_MAKER_ID) EXEC ENTRIES_POST_GEN_NO_MW @p_BRANCH_ID = @l_MAKER_ID ,@p_TRN_DATE = @p_APPROVE_DT ,@p_KeyGen = @l_TRN_NO OUT ----------------- --Kiểm tra Kho nếu kho đặt biệt check đã yêu cầu hạch toán chưa nếu chưa yêu cầu chọn hạch toán mới được qua kế toán DECLARE @WARE_CODE VARCHAR(25),@ListWare_CODE VARCHAR(500); SELECT @WARE_CODE=cw.WARE_CODE FROM MW_OUT MO LEFT JOIN CM_WARE cw ON MO.WARE_ID = cw.WARE_ID WHERE MO.OUT_ID = @p_OUT_ID SELECT @ListWare_CODE = sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'MW_OUT_WARE_CUSTOMER' IF(EXISTS(SELECT 1 FROM STRING_SPLIT(@ListWare_CODE,',') A INNER JOIN CM_WARE B ON A.VALUE = B.WARE_CODE INNER JOIN MW_OUT C ON B.WARE_ID = C.WARE_ID WHERE C.OUT_ID = @p_OUT_ID )) BEGIN UPDATE B SET B.QTY_BALANCE = B.QTY_BALANCE - A.QTY, B.QTY_REAL = B.QTY_REAL - A.QTY, B.QTY_TEMP = B.QTY_TEMP + A.QTY, B.TOTAL_AMT = B.TOTAL_AMT - A.TOTAL_AMT FROM MW_OUT_DT A INNER JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID WHERE A.OUT_ID = @p_OUT_ID END IF(EXISTS(SELECT 1 FROM STRING_SPLIT(@ListWare_CODE, ',') WHERE VALUE = @WARE_CODE)) BEGIN IF EXISTS(SELECT 1 FROM MW_OUT_DT A LEFT JOIN MW_OUT B ON A.OUT_ID= B.OUT_ID WHERE A.OUT_ID = @p_OUT_ID AND ((A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID <> 'DV0001') OR (A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID = 'DV0001' AND ISNULL(B.DEPT_ID,'') = ISNULL(A.DEP_RECEIVE,'')) ) ) BEGIN UPDATE [dbo].[MW_OUT] SET AUTH_STATUS='A', CHECKER_ID=@p_CHECKER_ID, STATUS = CASE WHEN (SELECT REQ_ACOUNT FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) <> '1' THEN 'REQ_ACOUNT' ELSE 'OUT_KT' END, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) , OUT_KSV_ID = @p_OUT_KSV_ID WHERE [OUT_ID]=@p_OUT_ID; END ELSE BEGIN UPDATE [dbo].[MW_OUT] SET AUTH_STATUS='A', CHECKER_ID=@p_CHECKER_ID, STATUS ='CONFIRM', APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) , OUT_KSV_ID = @p_OUT_KSV_ID WHERE [OUT_ID]=@p_OUT_ID; END IF @@Error<>0 GOTO ABORT; WHILE @@FETCH_STATUS=0 BEGIN SET @INDEX = @INDEX+1 -- 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) -- 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 -- UPDATE MW_MAST_BAL KHI TDV DUYỆT LÔ VẬT LIỆU SẼ TRỪ SỐ LƯỢNG HỆ THỐNG, TRỪ SỐ LƯỢNG THỰC TẾ, CỘNG SỐ LƯỢNG TREO -- UPDATE MW_MAST_BAL SET QTY_BALANCE = QTY_BALANCE-@QTY, QTY_REAL = QTY_REAL-@QTY, QTY_TEMP = QTY_TEMP+@QTY WHERE MAST_BAL_ID = @MAST_BAL_ID -- IF @@Error<>0 GOTO ABORT; ------------- HACH TOAN BUOC DUYET KSV XUAT KHO ------------ SELECT @EXP_ACCTNO = B.EXP_ACCTNO, @VAT_ACCTNO = B.VAT_ACCTNO , @l_MAT_CODE = B.MATERIAL_CODE FROM MW_MAST_BAL A LEFT JOIN MW_MATERIAL B ON A.MATERIAL_ID = B.MATERIAL_ID WHERE A.MAST_BAL_ID = @MAST_BAL_ID DECLARE @FR_BRN_CODE VARCHAR(20) = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = (SELECT MO.BRN_ID FROM MW_OUT MO WHERE MO.OUT_ID = @p_OUT_ID)) DECLARE @FR_DEP_CODE VARCHAR(20) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = (SELECT MO.DEPT_ID FROM MW_OUT MO WHERE MO.OUT_ID = @p_OUT_ID)) DECLARE @TO_BRN_CODE VARCHAR(20) = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @TO_BRN_ID) DECLARE @TO_DEP_CODE VARCHAR(20) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @TO_DEPT_ID) ----------------HACH TOAN 05/09/2023 KHIEMCHG------------------ -------------------CHECK THEO LOAI KHO------------------------- DECLARE @l_HS_BRANCH_CODE VARCHAR(20) = (SELECT CB.BRANCH_CODE FROM CM_BRANCH CB WHERE CB.BRANCH_TYPE = 'HS') DECLARE @BRANCH_TYPE VARCHAR(20) = (SELECT CB.BRANCH_TYPE FROM CM_BRANCH CB WHERE CB.BRANCH_ID = @TO_BRN_ID) SET @WARE_CODE = (SELECT CW.WARE_CODE FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID) DECLARE @WARE_TRANSFER_NO VARCHAR(20) = (SELECT TOP 1 ACC_NO FROM ENTRIES_POST_ACCNO_MW WHERE WARE_CODE = @WARE_CODE AND ACC_TYPE LIKE 'TRANS_%') DECLARE @WARE_ACCNO VARCHAR(20) = (SELECT TOP 1 CW.ACC_ACCOUNTING FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID) DECLARE @ACCNO_KSV_OUT VARCHAR(20) = (SELECT TOP 1 ACC_NO FROM ENTRIES_POST_ACCNO_MW WHERE ACC_TYPE = 'KSV_OUT') --LAY MA BRANCH CODE -- DECLARE @DB_ID VARCHAR(15) = (SELECT CW.DEP_ID FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID) -- SELECT @DP_CODE = CD.DEP_CODE, @BR_CODE = CB.BRANCH_CODE -- FROM CM_DEPARTMENT CD LEFT JOIN CM_BRANCH CB ON CD.BRANCH_ID = CB.BRANCH_ID -- WHERE CD.DEP_ID = @DB_ID BEGIN --- TODO: NỢ EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE) VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT_KSV', @p_OUT_KSV_ID,@FR_BRN_CODE, @ACCNO_KSV_OUT, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_APPROVE_DT, 103), @l_MAKER_ID, @p_CHECKER_ID, @FR_DEP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE); IF @@Error <> 0 GOTO ABORT; --- TODO: CÓ EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE) VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT_KSV', @p_OUT_KSV_ID,@FR_BRN_CODE, @WARE_ACCNO, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_APPROVE_DT, 103), @l_MAKER_ID, @p_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE); IF @@Error <> 0 GOTO ABORT; END FETCH NEXT FROM XmlData INTO @OUT_ID,@OUT_DT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID; END; CLOSE XmlData; DEALLOCATE XmlData; DECLARE CUR_CONFIRM CURSOR FOR SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'') FROM MW_OUT_DT WHERE OUT_ID = @p_OUT_ID GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'') OPEN CUR_CONFIRM FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @p_OUT_CONF_ID VARCHAR(15); EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID OUT; IF(NOT EXISTS(SELECT 1 FROM MW_OUT_CONF WHERE OUT_ID = @p_OUT_ID AND ISNULL(BRANCH_RECIVE,'') = ISNULL(@C_TO_BRN_ID,'') AND ISNULL(DEP_RECIVE,'') = ISNULL(@C_TO_DEP_ID,''))) BEGIN INSERT INTO MW_OUT_CONF (ID, OUT_ID, BRANCH_RECIVE, DEP_RECIVE, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, BRANCH_CREATE, RECORD_STATUS,STATUS) VALUES (@p_OUT_CONF_ID,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM') END FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID END CLOSE CUR_CONFIRM DEALLOCATE CUR_CONFIRM --Thêm lịch sử INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_OUT_ID,'APPR',@p_CHECKER_ID,GETDATE(), N'Hành chính duyệt phiếu',N'Hành chính duyệt phiếu') END ELSE BEGIN UPDATE [dbo].[MW_OUT] SET AUTH_STATUS='A', CHECKER_ID=@p_CHECKER_ID, STATUS ='CONFIRM', --APPROVE_DT=CONVERT(DATE, @p_APPROVE_DT, 103) -- LUCTV 13092019 CHINH SUA LAI NGAY DUYET DE LAY DUNG DINH DANG NGAY THANG NAM H PHUT GIAY APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE [OUT_ID]=@p_OUT_ID; IF @@Error<>0 GOTO ABORT; WHILE @@FETCH_STATUS=0 BEGIN SET @INDEX = @INDEX+1 -- 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) -- 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 --Update MW_Mast_BAL khi TDV duyệt -- UPDATE MW_MAST_BAL SET QTY_BALANCE = (QTY_BALANCE-@QTY), QTY_REAL = (QTY_REAL-@QTY), QTY_TEMP = (QTY_TEMP+@QTY) WHERE MAST_BAL_ID = @MAST_BAL_ID DECLARE CUR_CONFIRM CURSOR FOR SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'') FROM MW_OUT_DT WHERE OUT_ID = @p_OUT_ID GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'') OPEN CUR_CONFIRM FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @p_OUT_CONF_ID_1 VARCHAR(15); EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID_1 OUT; IF(NOT EXISTS(SELECT 1 FROM MW_OUT_CONF WHERE OUT_ID = @p_OUT_ID AND ISNULL(BRANCH_RECIVE,'') = ISNULL(@C_TO_BRN_ID,'') AND ISNULL(DEP_RECIVE,'') = ISNULL(@C_TO_DEP_ID,''))) BEGIN INSERT INTO MW_OUT_CONF (ID, OUT_ID, BRANCH_RECIVE, DEP_RECIVE, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, BRANCH_CREATE, RECORD_STATUS,STATUS) VALUES (@p_OUT_CONF_ID_1,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM') END FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID END CLOSE CUR_CONFIRM DEALLOCATE CUR_CONFIRM INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES(@p_OUT_ID,'APPR',@p_CHECKER_ID,GETDATE(), N'Kiểm soát viên xuất kho.',N'Kiểm soát viên xuất kho duyệt phiếu thành công.') IF @@Error<>0 GOTO ABORT; FETCH NEXT FROM XmlData INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID; END; CLOSE XmlData; DEALLOCATE XmlData; END 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