CREATE PROCEDURE [dbo].[MW_TRANSFER_KT_App_HOTFIX] @p_TRANSFER_ID varchar(15) = NULL AS DECLARE @TRANSFER_DT_ID VARCHAR(15) = NULL,@ERROR NVARCHAR(500), @TOTAL_AMT NUMERIC(18, 0) = NULL, @BRANCH_CREATE VARCHAR(15) = NULL, @CORE_NOTE NVARCHAR(1000) = NULL, @KT_MAKER_ID VARCHAR(20) = NULL, @BRANCH_ID VARCHAR(15) = NULL, @DEPT_ID VARCHAR(15) = NULL, @PRICE_ID VARCHAR(15) = NULL, @GROUP_ID VARCHAR(15) = NULL, @MATERIAL_ID VARCHAR(15) = NULL,@TO_BRN_ID VARCHAR(15) = NULL,@TO_DEPT_ID VARCHAR(15) = NULL, @IS_PROMO VARCHAR(1) = NULL, @VAT NUMERIC(18, 0), @VAT_AMT NUMERIC(18, 0),@PRICE_VAT NUMERIC(18, 0), -- LUCTV 01 03 2019 BO SUNG NHUNG BIEN PHUC VU CHO CURSOR DUYET @MAST_BAL_ID varchar(15) = NULL, @FR_BRN_ID varchar(15) = NULL, @FR_DEPT_ID varchar(15) = NULL, @FR_PRICE_ID varchar(15) = NULL, @QTY DECIMAL(18,2) = NULL, @QTY_OLD DECIMAL(18,2) = NULL, @PRICE numeric(18, 2) = NULL, @NOTES nvarchar(500) = NULL DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0 DECLARE @l_REMAIN_AMT NUMERIC(18, 2)=0; DECLARE XmlData CURSOR FOR SELECT A.TRANSFER_DT_ID, A.TOTAL_AMT, A.TO_BRN_ID, A.TO_DEPT_ID, B.BRANCH_CREATE, B.CORE_NOTE, B.KT_MAKER_ID, C.BRANCH_ID, C.DEPT_ID, D.PRICE_ID, E.GROUP_ID, E.MATERIAL_ID, --LUCTV: BIEN CUA LUC THEM VO A.MAST_BAL_ID, A.FR_BRN_ID, A.FR_DEPT_ID, A.FR_PRICE_ID, A.QTY, A.QTY_OLD, A.PRICE, A.NOTES FROM MW_TRANSFER_DT A INNER JOIN MW_TRANSFER B ON A.TRANSFER_ID = B.TRANSFER_ID INNER JOIN MW_MAST_BAL C ON A.MAST_BAL_ID = C.MAST_BAL_ID INNER JOIN MW_MAST_PRICE D ON D.PRICE_ID = C.PRICE_ID INNER JOIN MW_IN E ON D.MATERIAL_ID = E.IN_ID WHERE A.TRANSFER_ID = @p_TRANSFER_ID OPEN XmlData BEGIN TRANSACTION DECLARE @EXP_ACCTNO VARCHAR(50), @MATERIAL_ACCTNO VARCHAR(50), @VAT_ACCTNO VARCHAR(50), @TCCT VARCHAR(50) DECLARE @p_ID VARCHAR(15) DECLARE @INDEX INT =0 DECLARE @IS_COLLECT VARCHAR(5),@TRN_TYPE VARCHAR(5) FETCH NEXT FROM XmlData INTO @TRANSFER_DT_ID, @TOTAL_AMT,@TO_BRN_ID,@TO_DEPT_ID, @BRANCH_CREATE , @CORE_NOTE ,@KT_MAKER_ID ,@BRANCH_ID ,@DEPT_ID ,@PRICE_ID ,@GROUP_ID ,@MATERIAL_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @QTY, @QTY_OLD, @PRICE, @NOTES WHILE @@FETCH_STATUS = 0 BEGIN -- 22-05-2019 : KIEM TRA DON VI TAO DIEU CHUYEN VAT LIEU VOI DON VI NHAN, NEU "PLAG" = Y THI LA THU HOI VAT LIEU, SET "TRN_TYPE=C", -------------- NGUOC LAI "TRN_TYPE =T". SET @IS_COLLECT = (SELECT [dbo].[FN_MW_CHECK_COLLECT](@BRANCH_CREATE,@TO_BRN_ID)) IF(@IS_COLLECT='Y') BEGIN SET @TRN_TYPE='C' END ELSE BEGIN SET @TRN_TYPE='T' END SET @INDEX = @INDEX +1 SELECT @l_SUM_QTY_BALANCE = SUM(QTY_BALANCE), @l_REMAIN_AMT = SUM(TOTAL_AMT) FROM MW_MAST_BAL WHERE MAST_BAL_ID = @MAST_BAL_ID; IF @TOTAL_AMT > @l_REMAIN_AMT SET @TOTAL_AMT = @l_REMAIN_AMT --THIEUVQ 070120 --UPDATE DATA GIAM SO LUONG DON VI DIEU CHUYEN /* UPDATE MW_MAST_BAL SET QTY_BALANCE = QTY_BALANCE - @QTY, TOTAL_AMT = TOTAL_AMT - @TOTAL_AMT WHERE MAST_BAL_ID = @MAST_BAL_ID AND BRANCH_ID = @FR_BRN_ID */ -- DOANPTT 30032023: FIX BUG FR_PRICE_ID NULL IF(ISNULL(@FR_PRICE_ID, '') = '') BEGIN SET @FR_PRICE_ID = (SELECT TOP 1 PRICE_ID FROM MW_MAST_BAL WHERE MAST_BAL_ID = @MAST_BAL_ID) END -- NEU CHUA CO MA VAT LIEU NAY O DON VI NHAN IF(NOT EXISTS(SELECT * FROM MW_MAST_BAL WHERE BRANCH_ID= @TO_BRN_ID AND DEPT_ID = @TO_DEPT_ID AND PRICE_ID = @FR_PRICE_ID)) BEGIN DECLARE @p_ID_MAS VARCHAR(15) EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL', @p_ID_MAS out INSERT INTO MW_MAST_BAL(MAST_BAL_ID, PRICE_ID, BRANCH_ID, DEPT_ID, QTY_BALANCE, MATERIAL_ID, TOTAL_AMT,PRICE) VALUES(@p_ID_MAS,@FR_PRICE_ID,@TO_BRN_ID,@TO_DEPT_ID,@QTY,(SELECT MATERIAL_ID FROM MW_IN WHERE IN_ID =(SELECT MATERIAL_ID FROM MW_MAST_PRICE WHERE PRICE_ID=@FR_PRICE_ID)), @TOTAL_AMT, @PRICE) --INSERT TANG DON VI DIEU CHUYEN EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @p_ID OUT INSERT INTO MW_MAST_BAL_STMT(STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, TRN_DESC, TOTAL_AMT,PRICE) VALUES (@p_ID,@p_TRANSFER_ID,@p_ID_MAS,(SELECT TRN_DATE FROM MW_TRANSFER WHERE TRANSFER_ID=@p_TRANSFER_ID), (SELECT TRN_TIME FROM MW_TRANSFER WHERE TRANSFER_ID=@p_TRANSFER_ID),@TRN_TYPE,'C',@QTY,@NOTES, @TOTAL_AMT,@PRICE) END -- NEU DA CO MA VAT LIEU NAY O DON VI NHAN ELSE BEGIN EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @p_ID out DECLARE @p_ID_MAS_BAL VARCHAR(15) SET @p_ID_MAS_BAL =(SELECT MAST_BAL_ID FROM MW_MAST_BAL WHERE BRANCH_ID= @TO_BRN_ID AND DEPT_ID = @TO_DEPT_ID AND PRICE_ID = @FR_PRICE_ID) --UPDATE DATA TANG SO LUONG DON VI NHAN UPDATE MW_MAST_BAL SET QTY_BALANCE = QTY_BALANCE +@QTY, TOTAL_AMT = TOTAL_AMT+@TOTAL_AMT WHERE MAST_BAL_ID= @p_ID_MAS_BAL --INSERT TANG DON VI DIEU CHUYEN INSERT INTO MW_MAST_BAL_STMT(STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, TRN_DESC, TOTAL_AMT,PRICE) VALUES (@p_ID,@p_TRANSFER_ID,@p_ID_MAS_BAL,GETDATE(), (SELECT TRN_TIME FROM MW_TRANSFER WHERE TRANSFER_ID=@p_TRANSFER_ID),@TRN_TYPE,'C',@QTY,@NOTES, @TOTAL_AMT,@PRICE) END --INSERT GIAM DON VI DIEU CHUYEN EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @p_ID out INSERT INTO MW_MAST_BAL_STMT(STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, TRN_DESC, TOTAL_AMT,PRICE) VALUES (@p_ID,@p_TRANSFER_ID,@MAST_BAL_ID,GETDATE(), (SELECT TRN_TIME FROM MW_TRANSFER WHERE TRANSFER_ID=@p_TRANSFER_ID),@TRN_TYPE,'D',@QTY,@NOTES, @TOTAL_AMT,@PRICE) FETCH NEXT FROM XmlData INTO @TRANSFER_DT_ID, @TOTAL_AMT,@TO_BRN_ID,@TO_DEPT_ID, @BRANCH_CREATE , @CORE_NOTE ,@KT_MAKER_ID ,@BRANCH_ID ,@DEPT_ID ,@PRICE_ID ,@GROUP_ID ,@MATERIAL_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @QTY, @QTY_OLD, @PRICE, @NOTES END CLOSE XmlData DEALLOCATE XmlData IF @@Error <> 0 GOTO ABORT 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