ALTER PROCEDURE [dbo].[MW_MATERIAL_Ins] --@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 DECLARE @sErrorCode VARCHAR(20) = '' DECLARE @l_MATERIAL_ID VARCHAR(15) 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) BEGIN SET @sErrorCode = 'MW-00022' END IF @sErrorCode <> '' BEGIN SELECT '-1' Result, '' AMORT_MONTH, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode 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 ---- GEN MA CODE TU DONG DECLARE @MAX_MATERIAL_CODE VARCHAR(15), @INDEX_CODE INT, @GROUP_CODE VARCHAR(15) SET @GROUP_CODE =(SELECT GROUP_CODE FROM MW_GROUP WHERE GROUP_ID =@p_GROUP_ID) SET @MAX_MATERIAL_CODE =ISNULL((SELECT RIGHT(MAX(MATERIAL_CODE),4) FROM MW_MATERIAL WHERE GROUP_ID =@p_GROUP_ID), '0') SET @INDEX_CODE = CONVERT(INT,RIGHT(@MAX_MATERIAL_CODE,3)) +1 --IF(LEN(CONVERT(VARCHAR,@INDEX_CODE,20)) =1) SET @p_MATERIAL_CODE =@GROUP_CODE + RIGHT('000' + CONVERT(VARCHAR,@INDEX_CODE,20),4) --ELSE --SET @p_MATERIAL_CODE =@GROUP_CODE + RIGHT('00' + CONVERT(VARCHAR,@INDEX_CODE,20),4) --- END GEN MA CODE EXEC SYS_CodeMasters_Gen 'MW_MATERIAL', @l_MATERIAL_ID out IF @l_MATERIAL_ID='' OR @l_MATERIAL_ID IS NULL GOTO ABORT INSERT INTO dbo.MW_MATERIAL ( MATERIAL_ID, MATERIAL_CODE, MATERIAL_NAME, GROUP_ID, UNIT_ID, IS_CALC_EXP, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, [MATERIAL_ACCTNO], [EXP_ACCTNO], [INC_ACCTNO], [LIQ_ACCTNO], [MATERIAL_ACCTNO_NHNN], [VAT_ACCTNO] ) VALUES ( @l_MATERIAL_ID, @p_MATERIAL_CODE, @p_MATERIAL_NAME, @p_GROUP_ID, @p_UNIT_ID, @p_IS_CALC_EXP, @p_NOTES, @p_RECORD_STATUS, @p_AUTH_STATUS, @p_MAKER_ID, CONVERT(DATETIME, @p_CREATE_DT, 103), @p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), @p_MATERIAL_ACCTNO, @p_EXP_ACCTNO, @p_INC_ACCTNO, @p_LIQ_ACCTNO, @p_MATERIAL_ACCTNO_NHNN, @p_VAT_ACCTNO ) IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, @l_MATERIAL_ID id, @p_MATERIAL_CODE material_code, -- DuyTN thêm id --CAST(@l_AMORT_MONTH as varchar(100)) AMORT_MONTH, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, --'' AMORT_MONTH, '' ErrorDesc RETURN '-1' End