ALTER PROCEDURE [dbo].[MW_MATERIAL_Upd] @p_MATERIAL_ID varchar(15), @p_MATERIAL_CODE nvarchar(100) = NULL, @p_MATERIAL_NAME nvarchar(1000) = NULL, @p_GROUP_ID varchar(15) = NULL, @p_UNIT_ID varchar(15) = NULL, @p_IS_CALC_EXP varchar(1) = NULL, @p_NOTES nvarchar(1000) = NULL, @p_RECORD_STATUS varchar(1) = 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_MATERIAL_ACCTNO varchar(50) = NULL , @p_EXP_ACCTNO varchar(50) = NULL , @p_INC_ACCTNO varchar(50) = NULL , @p_LIQ_ACCTNO varchar(50) = NULL , @p_MATERIAL_ACCTNO_NHNN varchar(50) = NULL , @p_VAT_ACCTNO VARCHAR(50) = NULL AS --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM MW_MATERIAL WHERE MATERIAL_ID = @p_MATERIAL_ID)) BEGIN SET @ERRORSYS = '' END IF (@p_MATERIAL_CODE IS NOT NULL AND @p_MATERIAL_CODE <> '') IF EXISTS(SELECT 1 FROM dbo.MW_MATERIAL A WHERE A.MATERIAL_CODE = @p_MATERIAL_CODE AND A.MATERIAL_ID <> @p_MATERIAL_ID) BEGIN SET @ERRORSYS = 'MW-00022' END IF @ERRORSYS <> '' BEGIN SELECT '-1' Result, '' DEP_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN 0 END IF(@p_MATERIAL_ACCTNO IS NULL OR @p_MATERIAL_ACCTNO ='' OR LEN(@p_MATERIAL_ACCTNO) <> 9) BEGIN SELECT '-1' Result, '' DEP_ID, N'Số tài khoản vật liệu bắt buộc phải nhập đủ 9 ký tự' ErrorDesc RETURN 0 END IF(@p_EXP_ACCTNO IS NULL OR @p_EXP_ACCTNO ='' OR LEN(@p_EXP_ACCTNO) <> 9) BEGIN SELECT '-1' Result, '' DEP_ID, N'Số tài khoản chi phí bắt buộc phải nhập đủ 9 ký tự' ErrorDesc RETURN 0 END IF(@p_VAT_ACCTNO IS NULL OR @p_VAT_ACCTNO ='' OR LEN(@p_VAT_ACCTNO) <> 9) BEGIN SELECT '-1' Result, '' DEP_ID, N'Số tài khoản VAT bắt buộc phải nhập đủ 9 ký tự' ErrorDesc RETURN 0 END BEGIN TRANSACTION UPDATE [dbo].[MW_MATERIAL] SET [MATERIAL_CODE] = @p_MATERIAL_CODE, [MATERIAL_NAME] = @p_MATERIAL_NAME, [GROUP_ID] = @p_GROUP_ID, [UNIT_ID] = @p_UNIT_ID, [IS_CALC_EXP] = @p_IS_CALC_EXP, [NOTES] = @p_NOTES, [RECORD_STATUS] = @p_RECORD_STATUS, [AUTH_STATUS] = @p_AUTH_STATUS, [MAKER_ID] = @p_MAKER_ID, [CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103), [CHECKER_ID] = @p_CHECKER_ID, [APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103), [MATERIAL_ACCTNO] = @p_MATERIAL_ACCTNO, [EXP_ACCTNO] = @p_EXP_ACCTNO, [INC_ACCTNO] = @p_INC_ACCTNO, [LIQ_ACCTNO] = @p_LIQ_ACCTNO, [MATERIAL_ACCTNO_NHNN] = @p_MATERIAL_ACCTNO_NHNN, [VAT_ACCTNO] = @p_VAT_ACCTNO WHERE [MATERIAL_ID] = @p_MATERIAL_ID; IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @p_MATERIAL_ID MATERIAL_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' MATERIAL_ID, '' ErrorDesc RETURN '-1' End