ALTER PROCEDURE [dbo].[MW_OUT_Ins] @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), @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_BRANCH_CREATE VARCHAR(15) =NULL,@p_WARE_HOUSE VARCHAR(15) = NULL AS DECLARE --DVSD --@OUT_DT_ID varchar(15), @p_OUT_CODE NVARCHAR(100) = NULL, @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) =NULL, @TO_BRN_ID VARCHAR(15) =NULL, @TO_DEPT_ID VARCHAR(15) =NULL,@EVENT_NAME NVARCHAR(1000) = NULL, @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 @INDEX INT =0 DECLARE @PRICE_CODE VARCHAR(30) 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), CUST_NAME NVARCHAR(200), QTY DECIMAL(18,2), QTY_OLD 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),EVENT_NAME NVARCHAR(1000),IS_BCT VARCHAR(1),COST_ACC VARCHAR(50)) OPEN XmlData; BEGIN TRANSACTION; DECLARE @p_OUT_ID VARCHAR(15), @l_COST_ACC VARCHAR(50); EXEC [MW_OUT_CODE_Gen] @p_BRANCH_CREATE,@p_WARE_HOUSE, @p_OUT_CODE OUT; EXEC SYS_CodeMasters_Gen 'MW_OUT', @p_OUT_ID OUT; IF @p_OUT_ID='' OR @p_OUT_ID IS NULL GOTO ABORT; INSERT INTO [dbo].[MW_OUT]([OUT_ID], [TRN_Date], [TRN_TIME], [BRN_ID], [DEPT_ID], [QTY], [PRICE], [TOTAL_AMT], [NOTES], [OUT_DESC], [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], [CORE_NOTE], [BRANCH_CREATE],[WARE_HOUSE],[OUT_CODE]) SELECT @p_OUT_ID, CONVERT(DATETIME, @p_TRN_Date, 103), @p_TRN_TIME, @p_BRN_ID, @p_DEPT_ID, @p_QTY, @p_PRICE, @p_TOTAL_AMT, @p_NOTES, @p_OUT_DESC, 'U', @p_MAKER_ID, CONVERT(DATETIME, @p_CREATE_DT, 103), NULL, NULL, 'U', NULL, NULL, NULL, NULL, '1', @p_CORE_NOTE, @p_BRANCH_CREATE,@p_WARE_HOUSE,@p_OUT_CODE; IF @@error<>0 GOTO ABORT; --Insert XmlData 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 WHILE @@fetch_status=0 BEGIN 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)) 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: 30-11-2018 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 IN (SELECT OUT_ID FROM MW_OUT WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1' AND OUT_ID <> @p_OUT_ID))) --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ã là '+@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 ---- 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) -- 22/04/2022 doanptt dòng 124-131 không chính xác, cần xác nhận lại IF(@QTY > @QTY_OLD) BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, @OUT_ID OUT_ID, N'Danh sách đơn vị, khách hàng nhậ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 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 --END DECLARE @p_OUT_DT_ID VARCHAR(15); 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].[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, @p_OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @QTY*@PRICE, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC --INSERT INTO [dbo].[MW_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) 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; UPDATE MW_OUT SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID) WHERE OUT_ID =@p_OUT_ID -- doanptt 12/07/2022: Thêm process DELETE dbo.PL_PROCESS WHERE REQ_ID = @p_OUT_ID AND PROCESS_ID = 'INSERT' INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_OUT_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 xuất vật liệu thành công' , N'Thêm mới phiếu xuất vật liệu' -- 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 ALTER PROCEDURE [dbo].[MW_OUT_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), @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) = NULL, @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 @INDEX INT =0 DECLARE @PRICE_CODE VARCHAR(30) 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) , 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),-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU COST_ACC VARCHAR(50) ); OPEN XmlData; BEGIN TRANSACTION; UPDATE [dbo].[MW_OUT] SET [QTY] = @p_QTY, AUTH_STATUS='U', [PRICE] = @p_PRICE, [TOTAL_AMT] = @p_TOTAL_AMT, [NOTES] = @p_NOTES, MAKER_ID=@p_MAKER_ID, [CORE_NOTE] = @p_CORE_NOTE, WARE_HOUSE= @p_WARE_HOUSE,DEPT_ID = @p_DEPT_ID WHERE [OUT_ID] = @p_OUT_ID; IF @@Error <> 0 GOTO ABORT; --Insert XmlData DECLARE @l_COST_ACC VARCHAR(50); 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 WHILE @@FETCH_STATUS = 0 BEGIN 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)) 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(@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(@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 --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 -- 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) -- 22/04/2022 doanptt IF(@QTY > @QTY_OLD) BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, @OUT_ID OUT_ID, N'Danh sách đơn vị, khách hàng nhậ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 DECLARE @p_OUT_DT_ID VARCHAR(15); 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].[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, @p_OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @QTY*@PRICE, @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_HC' INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @OUT_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 xuất vật liệu thành công' , N'Cập nhật phiếu xuất vật liệu' -- PROCESS_DESC - nvarchar(1000) ) --- UPDATE MW_OUT SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID) WHERE OUT_ID =@p_OUT_ID 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 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 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