ALTER PROCEDURE [dbo].[MW_IN_Upd] @p_IN_ID varchar(15), @p_TRN_Date datetime = NULL, @p_GROUP_ID varchar(15) = NULL, @p_MATERIAL_NAME nvarchar(1000) = NULL, @p_MATERIAL_DESC nvarchar(MAX) = NULL, @p_MAKER_ID_KT varchar(15) = NULL, @p_MATERIAL_ID varchar(15) = NULL, @p_CHECKER_ID_KT varchar(15) = NULL, @p_BRANCH_ID varchar(15) = NULL, @p_DEPT_ID varchar(15) = NULL, @p_CREATE_DT_KT datetime = NULL, @p_AUTH_STATUS_KT varchar(1) = NULL, @p_QTY int = NULL, @p_PO_CODE nvarchar(200) = 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 datetime = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT datetime = NULL, @p_APPROVE_DT_KT datetime = NULL, @p_TRN_TIME varchar(50) = NULL, @p_BUY_PRICE NUMERIC(18, 0) = NULL, @p_TOTAL_AMT numeric(18, 2) = NULL, @p_VAT decimal(18, 2) = NULL, @p_PRICE_VAT decimal(18, 0) = NULL, @p_IS_PROMO varchar(1) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_INVOICE_NO NVARCHAR(200) = NULL, @p_INVOICE_DT DATETIME = NULL, @p_DIVISION_ID VARCHAR(15) = NULL, @p_ENTRY_BOOKED varchar(1) = NULL, @p_CORE_NOTE nvarchar(500) = NULL, @p_IN_CODE NVARCHAR(100) = NULL, @p_WARE_HOUSE VARCHAR(15) = NULL, @p_XmlData XML = NULL AS DECLARE @sErrorCode VARCHAR(20) = '' DECLARE @l_IN_ID VARCHAR(15) DECLARE @l_IN_DT_ID VARCHAR(15) -- LUCTV BO SUNG VAO NGAY 15 10 2020 DECLARE @GROUP_LEVEL VARCHAR(15) --- KHAI BAO BIEN CURSOR DECLARE @IN_ID VARCHAR(15) = NULL, @GROUP_ID VARCHAR(15) = NULL, @MATERIAL_ID VARCHAR(15) = NULL, @MATERIAL_NAME NVARCHAR(200) = NULL, @QTY INT = NULL, @VAT NUMERIC(18, 0) = NULL, @TOTAL_AMT NUMERIC(18, 2) = NULL, @NOTES NVARCHAR(1000) = NULL, @IS_PROMO VARCHAR(1) = NULL DECLARE @hdoc INT; --- EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData; DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML (@hdoc, '/Root/ADDNEWDT', 2) WITH ( IN_ID VARCHAR(15), GROUP_ID VARCHAR(15), MATERIAL_ID VARCHAR(15), MATERIAL_NAME NVARCHAR(200), QTY INT, VAT NUMERIC(18, 0), TOTAL_AMT NUMERIC(18, 2), NOTES NVARCHAR(1000), IS_PROMO VARCHAR(1)); OPEN XmlData; DELETE FROM MW_IN WHERE IN_MASTER_ID =@p_IN_ID BEGIN TRANSACTION -- UPDATE MASTER UPDATE [dbo].[MW_IN_MASTER] SET --[TOTAL_AMT] = @p_BUY_PRICE, --[BUY_PRICE] = @p_BUY_PRICE/@p_QTY, --[TRN_Date] = @p_TRN_Date, --[GROUP_ID] = @p_GROUP_ID, --[MATERIAL_NAME] = @p_MATERIAL_NAME, [MATERIAL_DESC] = @p_MATERIAL_DESC, --[MAKER_ID_KT] = @p_MAKER_ID_KT, --[MATERIAL_ID] = @p_MATERIAL_ID, --[CHECKER_ID_KT] = @p_CHECKER_ID_KT, [BRANCH_ID] = @p_BRANCH_ID, [DEPT_ID] = @p_DEPT_ID, --[CREATE_DT_KT] = @p_CREATE_DT_KT, --[AUTH_STATUS_KT] = @p_AUTH_STATUS_KT, --[QTY] = @p_QTY, [PO_CODE] = @p_PO_CODE, [NOTES] = @p_NOTES, [RECORD_STATUS] = @p_RECORD_STATUS, [AUTH_STATUS] = 'U', [MAKER_ID] = @p_MAKER_ID, --[CREATE_DT] = @p_CREATE_DT, --[CHECKER_ID] = @p_CHECKER_ID, --[APPROVE_DT] = @p_APPROVE_DT, --[APPROVE_DT_KT] = @p_APPROVE_DT_KT, --[TRN_TIME] = @p_TRN_TIME, --[VAT] = @p_VAT, --[PRICE_VAT] = @p_PRICE_VAT, [IS_PROMO] = @p_IS_PROMO, [BRANCH_CREATE] = @p_BRANCH_CREATE , [INVOICE_NO] = @p_INVOICE_NO , [INVOICE_DT] = @p_INVOICE_DT , [DIVISION_ID] = @p_DIVISION_ID , [ENTRY_BOOKED] = @p_ENTRY_BOOKED, [CORE_NOTE] =@p_CORE_NOTE,WARE_HOUSE =@p_WARE_HOUSE WHERE IN_ID = @p_IN_ID ----------- UPDATE MW_IN_MASTER SET @p_PO_CODE =@p_PO_CODE, [MAKER_ID] = @p_MAKER_ID,INVOICE_NO= @p_INVOICE_NO,[NOTES] = @p_NOTES,[INVOICE_DT]= @p_INVOICE_DT WHERE IN_ID =@p_IN_ID -- INSERT DETAIL FETCH NEXT FROM XmlData INTO @IN_ID,@GROUP_ID ,@MATERIAL_ID ,@MATERIAL_NAME,@QTY,@VAT,@TOTAL_AMT,@NOTES,@IS_PROMO WHILE @@FETCH_STATUS = 0 BEGIN ---------------------------------------- EXEC SYS_CodeMasters_Gen 'MW_IN', @l_IN_DT_ID out IF @l_IN_DT_ID='' OR @l_IN_DT_ID IS NULL GOTO ABORT --SET @p_TOTAL_AMT = @p_BUY_PRICE --SET @p_BUY_PRICE = ROUND(@p_TOTAL_AMT/@p_QTY,0) -- LUCTV BO SUNG VAO NGAY 15 10 2020 SET @GROUP_LEVEL =(SELECT TOP 1 GROUP_LEVEL FROM MW_GROUP WHERE GROUP_ID =@GROUP_ID) IF(@GROUP_LEVEL='1') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' IN_ID, N'Bạn không thể nhập kho vật liệu với mã nhóm cấp 1 (THẺ hoặc HC). Vui lòng chọn các nhóm vật liệu khác hai nhóm này' ErrorDesc RETURN '-1' END INSERT INTO dbo.MW_IN ( IN_MASTER_ID,IN_ID,TRN_Date, GROUP_ID,MATERIAL_NAME, MATERIAL_DESC,MAKER_ID_KT,MATERIAL_ID,CHECKER_ID_KT, BRANCH_ID, DEPT_ID,CREATE_DT_KT,AUTH_STATUS_KT,QTY,PO_CODE,NOTES,RECORD_STATUS, AUTH_STATUS,MAKER_ID,CREATE_DT,CHECKER_ID,APPROVE_DT,APPROVE_DT_KT,TRN_TIME, BUY_PRICE,TOTAL_AMT,VAT,PRICE_VAT,IS_PROMO,BRANCH_CREATE,INVOICE_NO, INVOICE_DT,DIVISION_ID,ENTRY_BOOKED,CORE_NOTE ) VALUES ( @p_IN_ID, @l_IN_DT_ID, @p_TRN_Date, @GROUP_ID,@MATERIAL_NAME, @NOTES, @p_MAKER_ID_KT, @MATERIAL_ID,@p_CHECKER_ID_KT, @p_BRANCH_ID,@p_DEPT_ID, CONVERT(DATETIME,@p_CREATE_DT_KT, 103) , @p_AUTH_STATUS_KT, @QTY,@p_PO_CODE, @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), CONVERT(DATETIME,@p_APPROVE_DT_KT, 103),@p_TRN_TIME, ROUND(@TOTAL_AMT/@QTY,0), @TOTAL_AMT, @VAT,@TOTAL_AMT*@VAT/100, @IS_PROMO,@p_BRANCH_CREATE,@p_INVOICE_NO, @p_INVOICE_DT,@p_DIVISION_ID,@p_ENTRY_BOOKED,@p_CORE_NOTE ) ---------------------------------------- IF @@Error <> 0 GOTO ABORT; FETCH NEXT FROM XmlData INTO @IN_ID,@GROUP_ID ,@MATERIAL_ID ,@MATERIAL_NAME,@QTY,@VAT,@TOTAL_AMT,@NOTES,@IS_PROMO END CLOSE XmlData; DEALLOCATE XmlData; COMMIT TRANSACTION SELECT '0' as Result, @l_IN_ID IN_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlData; DEALLOCATE XmlData; ROLLBACK TRANSACTION SELECT '-1' as Result, '' IN_ID, '' ErrorDesc RETURN '-1' End