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(100) = NULL, @p_CREATE_DT VARCHAR(25) = NULL, @p_CHECKER_ID VARCHAR(100) = NULL, @p_APPROVE_DT VARCHAR(25) = NULL, @p_KT_AUTH_STATUS VARCHAR(1) = NULL, @p_KT_MAKER_ID VARCHAR(100) = NULL, @p_KT_CREATE_DT VARCHAR(25) = NULL, @p_KT_CHECKER_ID VARCHAR(100) = 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, @UNIT_RECEIVE VARCHAR(50)= NULL, @DEP_RECEIVE VARCHAR(50)= NULL, @UNIT_CHARGE VARCHAR(50)= NULL, @DEP_CHARGE VARCHAR(50)= NULL, @UNIT_PAY VARCHAR(50)= NULL, @QTY_RECEIVE DECIMAL(18,2) = NULL, @QTY_DAMAGED DECIMAL(18,2) = NULL, @QTY_LOSS DECIMAL(18,2) = NULL, @RECEIVE_NOTES NVARCHAR(1000) = NULL, @VAT DECIMAL(18,2) = NULL, @PRICE_VAT DECIMAL(18,2) = 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), UNIT_RECEIVE VARCHAR(50), DEP_RECEIVE VARCHAR(50), UNIT_CHARGE VARCHAR(50), DEP_CHARGE VARCHAR(50), UNIT_PAY VARCHAR(50), QTY_RECEIVE DECIMAL(18,2), QTY_DAMAGED DECIMAL(18,2), QTY_LOSS DECIMAL(18,2), RECEIVE_NOTES NVARCHAR(1000), VAT DECIMAL(18,2), PRICE_VAT DECIMAL(18,2) ); OPEN XmlData; BEGIN TRANSACTION; IF((SELECT STATUS FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID) <> 'OUT_KT') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' OUT_ID, N'Phiếu xuất chưa đến đến bước kế toán cập nhật.' ErrorDesc RETURN '-1' END --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 ='E', 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,@UNIT_RECEIVE,@DEP_RECEIVE,@UNIT_CHARGE,@DEP_CHARGE,@UNIT_PAY,@QTY_RECEIVE, @QTY_DAMAGED, @QTY_LOSS, @RECEIVE_NOTES,@VAT,@PRICE_VAT 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 IF(@UNIT_CHARGE IS NULL OR @UNIT_CHARGE = '') BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, @OUT_ID OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Đơn vị chịu chi phí không được để trống' ErrorDesc RETURN '-1' END IF( EXISTS(SELECT 1 FROM CM_BRANCH CB WHERE CB.BRANCH_ID = @UNIT_CHARGE AND CB.BRANCH_TYPE = 'HS') AND (@DEP_CHARGE IS NULL OR @DEP_CHARGE = '')) BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, @OUT_ID OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Phòng ban chịu chi phí không được để trống' 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 NOT EXISTS(SELECT 1 FROM ENTRIES_POST_ACCNO_MW WHERE ACC_NO = @COST_ACC) --OR NOT EXISTS(SELECT 1 FROM MW_GROUP WHERE EXP_ACCTNO = @COST_ACC OR MATERIAL_ACCTNO = @COST_ACC OR INC_ACCTNO = @COST_ACC OR LIQ_ACCTNO = @COST_ACC OR MATERIAL_ACCTNO_NHNN = @COST_ACC OR VAT_ACCTNO = @COST_ACC) --OR NOT EXISTS(SELECT 1 FROM MW_MATERIAL WHERE EXP_ACCTNO = @COST_ACC OR MATERIAL_ACCTNO = @COST_ACC OR INC_ACCTNO = @COST_ACC OR LIQ_ACCTNO = @COST_ACC OR MATERIAL_ACCTNO_NHNN = @COST_ACC OR VAT_ACCTNO = @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.' 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 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], UNIT_RECEIVE, DEP_RECEIVE, UNIT_CHARGE, DEP_CHARGE, UNIT_PAY, QTY_RECEIVE, QTY_DAMAGED, QTY_LOSS, RECEIVE_NOTES, VAT, PRICE_VAT ) 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, @UNIT_RECEIVE, @DEP_RECEIVE, @UNIT_CHARGE, @DEP_CHARGE, @UNIT_PAY, @QTY_RECEIVE, @QTY_DAMAGED, @QTY_LOSS, @RECEIVE_NOTES, @VAT, @PRICE_VAT 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,@UNIT_RECEIVE,@DEP_RECEIVE,@UNIT_CHARGE,@DEP_CHARGE,@UNIT_PAY,@QTY_RECEIVE, @QTY_DAMAGED, @QTY_LOSS, @RECEIVE_NOTES,@VAT,@PRICE_VAT END; CLOSE XmlData; DEALLOCATE XmlData; INSERT INTO dbo.MW_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'Giao dịch viên cập nhật phiếu xuất vật liệu thành công' , N'Giao dịch viên c ập nhật 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