--ALTER PROCEDURE [dbo].[usp_CalAppFTV] DECLARE @Applno NVARCHAR(20) SET NOCOUNT ON; --declare @Applno NVARCHAR(20) --set @Applno ='AP00008-200917-00087' declare @TmpApplno nvarchar(50) declare @TmpTableName nvarchar(100) declare @SQLTxt01 varchar(max) declare @SQLTxt02 varchar(max) declare @SQLTxt03 varchar(max) declare @movmntID uniqueidentifier declare @marketvalues decimal(18,2) declare @smktValue decimal(18,2) declare @grpCollaLessAmt decimal(18,2) declare @valueCollateral decimal(18,2) declare @valueAPP162 decimal(18,2) declare @AppState int declare @checkStatus int declare @Exposure decimal(18,2) declare @pgmCde nvarchar(20) declare @checkauthTyp int set @checkStatus=0 set @valueAPP162=0 set @marketvalues=0 set @smktValue =0 set @valueCollateral=0 set @movmntID = (select movmntID from cbmsapp010 where applno = @Applno and recsts='A') set @AppState=(select appstate from cbmsapp010 where applno = @Applno and recsts='A') set @Exposure =(select exposure from CBMSAPP010 where applno = @Applno and recsts='A') set @pgmCde =(select pgmCde from CBTBMKT040 where pgmNam like '%top up%' and pgmCde in (select pgmCde from CBMSAPP010 where applNo=@Applno and recsts='A' )) print @pgmCde IF(@AppState>40) BEGIN select @checkStatus=COUNT(*) from CBMSAPP162 where movmntID = @movmntID and recSts='A' and procTyp = 0 --ไม่นำส่ง -- ราคาประเมิน จากฝ่ายรับรองราคา select @valueAPP162=authValue from CBMSAPP162 where movmntID = @movmntID and recSts='A' and authSys=1 and apists=3 --ฝ่ายรับรองมาแล้ว select @checkauthTyp = (SELECT authTyp FROM CBMSAPP162 WHERE movmntID = @movmntID and recSts='A') ---- กรณีมีหลักประกันมากกว่า 1 รายการ จะเอา ราคาประเมิน 2 หลักประกัน มารวมกัน แล้ว Update APP162 --===================UPDATE BY Lannicha Kaensusadee 2020-08-21=================== --ราคาประเมิน* ที่ tab หลักประกัน SELECT @valueCollateral = SUM(app.smktValue) FROM( SELECT ISNULL(PP150.smktValue,0) as smktValue --ที่ดินพร้อมสิ่งปลูกสิ่งปลูกสร้าง FROM CBMSAPP212 PP212 left join CBMSAPP150 PP150 ON PP212.collaDetailId =PP150.collaDetailId and PP150.recSts='A' WHERE PP212.movmntID=@movmntID and PP212.recSts='A' UNION SELECT ISNULL(PP151.smktValue,0) as smktValue --ที่ดิน FROM CBMSAPP212 PP212 left join Cbmsapp151 PP151 ON PP212.collaDetailId =PP151.collaDetailId and PP151.recSts='A' WHERE PP212.movmntID=@movmntID and PP212.recSts='A' UNION --updated by was SELECT ISNULL(PP154.smktValue,0) as smktValue --คอนโด FROM CBMSAPP212 PP212 left join CBMSAPP154 PP154 ON PP212.collaDetailId =PP154.collaDetailId and PP154.recSts='A' WHERE PP212.movmntID=@movmntID and PP212.recSts='A' --end updated by was ) AS app --ราคาซื้อขาย* ที่ tab หลักประกัน --CBMSAPP150 ที่ดินพร้อมสิ่งปลูกสร้าง SELECT @marketvalues = SUM(AppMarketvalues.marketvalues) FROM( SELECT ISNULL(PP150.marketvalues,0) as marketvalues FROM CBMSAPP212 PP212 left join CBMSAPP150 PP150 ON PP212.collaDetailId =PP150.collaDetailId and PP150.recSts='A' WHERE PP212.movmntID=@movmntID and PP212.recSts='A' UNION --CBMSAPP151 ที่ดิน SELECT ISNULL(PP151.marketvalues,0) as marketvalues FROM CBMSAPP212 PP212 left join Cbmsapp151 PP151 ON PP212.collaDetailId =PP151.collaDetailId and PP151.recSts='A' WHERE PP212.movmntID=@movmntID and PP212.recSts='A' UNION --CBMSAPP154 คอนโด SELECT ISNULL(PP154.mktValue,0) as marketvalues FROM CBMSAPP212 PP212 left join CBMSAPP154 PP154 ON PP212.collaDetailId =PP154.collaDetailId and PP154.recSts='A' WHERE PP212.movmntID=@movmntID and PP212.recSts='A' UNION --CBMSAPP154 สิ่งปลูกสร้าง SELECT ISNULL(PP152.mktValue,0) as marketvalues FROM CBMSAPP212 PP212 left join CBMSAPP152 PP152 ON PP212.collaDetailId =PP152.collaDetailId and PP152.recSts='A' WHERE PP212.movmntID=@movmntID and PP212.recSts='A' ) AS AppMarketvalues IF(@valueCollateral>0) --ราคาประเมิน จากหลักประกันมีค่ามากกว่า 0 จะอัพเดต ธนาคารรับรองราคา BEGIN UPDATE CBMSAPP162 SET authValue=@valueCollateral --authValue ธนาคารรับรองราคา WHERE movmntID=@movmntID and recSts='A' SET @smktValue= @valueCollateral END IF(@valueAPP162>0) -- กรณีรับรองราคามาแล้ว BEGIN ---@valueAPP162 ธนาคารรับรองราคา ---@marketvalues ราคาซื้อขาย --select 'case 1',@marketvalues,@valueAPP162 SELECT @grpCollaLessAmt=case when @marketvalues > @valueAPP162 then @valueAPP162 else @marketvalues end -- update ราคาประเมิน ด้วยราคาที่ธนาคารรับรองมา update PP150 set smktValue = @valueAPP162 FROM CBMSAPP150 PP150 where collaDetailId in (select collaDetailId from CBMSAPP212 where movmntID = @movmntID) update PP151 set smktValue = @valueAPP162 FROM CBMSAPP151 PP151 where collaDetailId in (select collaDetailId from CBMSAPP212 where movmntID = @movmntID) update PP154 set smktValue = @valueAPP162 FROM CBMSAPP154 PP154 where collaDetailId in (select collaDetailId from CBMSAPP212 where movmntID = @movmntID) END ELSE BEGIN --กรณียังไม่รับรองราคา --select 'case 2' ,@marketvalues ,@smktValue ---@smktValue ราคาประเมิน ---@marketvalues ราคาซื้อขาย SELECT @grpCollaLessAmt=case when @marketvalues > @smktValue then @smktValue else @marketvalues end END IF(@checkStatus>0) --กรณีไม่นำส่งประเมิน BEGIN --select 'case 3' ,@marketvalues ,@smktValue ---@smktValue ราคาประเมิน ---@marketvalues ราคาซื้อขาย SELECT @grpCollaLessAmt=case when @marketvalues > @smktValue then @smktValue else @marketvalues end END -------------------------------------------------------------------------------- IF (@checkauthTyp = 2) --รับรองราคา ไม่รับรอง กำหนดให้ไม่มีค่าราคาประเมินนำไปคำนวณ BEGIN SET @grpCollaLessAmt = 0 END DECLARE @TbDataCalFTV TABLE ( applno nvarchar(20), movmntID uniqueidentifier, prdTyp nvarchar(10), accTypCde varchar(20), amount decimal(18,4), grpCollalessamt decimal(18,4), FTVPacc decimal(18,2) ) INSERT INTO @TbDataCalFTV SELECT a.applno ,a.movmntID ,APP100.prdTyp ,APP100.accTypCde ,APP100.amount ,@grpCollaLessAmt , case when (@grpCollaLessAmt >0) and (ISNULL(@pgmCde,'')<>'') then round((isnull(@Exposure,0) / isnull(@grpCollaLessAmt,0)) * 100,2) --case top up else case when (@grpCollaLessAmt >0) and (ISNULL(@pgmCde,'')='') then round((isnull(APP100.amount,0) / isnull(@grpCollaLessAmt,0)) * 100,2) --case ปกติ else 0 end end as FTVPacc from CBMSAPP010 a left join CBMSAPP100 APP100 on (a.applno = APP100.applno and APP100.recsts = 'A' and APP100.pgmMRTA<>1) where a.applno = @Applno and a.recsts = 'A' and APP100.pgmMRTA<>1 --select FTV.FTVPacc --FROM CBMSAPP100 APP100 --INNER JOIN @TbDataCalFTV FTV ON APP100.applNo=FTV.applno AND APP100.accTypCde=FTV.accTypCde --WHERE APP100.applNo=@Applno --AND APP100.recSts='A' --select * from @TbDataCalFTV ------Update APP100---- UPDATE APP100 SET FTVPacc = FTV.FTVPacc FROM CBMSAPP100 APP100 INNER JOIN @TbDataCalFTV FTV ON APP100.applNo=FTV.applno AND APP100.accTypCde=FTV.accTypCde WHERE APP100.applNo=@Applno AND APP100.recSts='A' ------Update APP010----- UPDATE APP010 set FTVPerc = case when (isnull(b.amt,0) > 0) and (isnull(b.grpCollalessamt,0) > 0 ) and (ISNULL(@pgmCde,'')<>'') --case top up then round((isnull(@Exposure,0)/b.grpCollalessamt) * 100,2) else case when (isnull(b.amt,0) > 0) and (isnull(b.grpCollalessamt,0) > 0 ) and (ISNULL(@pgmCde,'')='') --case ปกติ then round((b.amt/b.grpCollalessamt) * 100,2) else 0 end end from CBMSAPP010 APP010,( select applno,grpCollalessamt,sum(amount) as amt from @TbDataCalFTV group by applno,grpCollalessamt) b where APP010.applno = b.applno and APP010.applno = @Applno --select FTVPerc,* from CBMSAPP010 where applno = @Applno END --================================ปิด function ที่พี่กบเขียน วันที่ 2020-08-21 ที่พี่กบเขียน ====================================== --set @TmpApplno = REPLACE(@Applno,'-','') --set @TmpTableName = '#AppCalFTV'+@TmpApplno -- set @SQLTxt01 = N'select a.applno,a.movmntID,APP100.prdTyp,APP100.accTypCde,APP100.amount,APP162.grpCollalessamt -- ,case when isnull(APP162.grpCollalessamt,0) >0 then -- round(isnull(APP100.amount,0) / isnull(APP175.grpCollaLessAmt,isnull(APP162.grpCollalessamt,0)) * 100,2) -- else 0 end -- as FTVPacc -- into '+@TmpTableName+' -- from cbmsapp010 a -- left join cbmsapp100 APP100 on (a.applno = APP100.applno and APP100.recsts = ''A'') -- --left join CBMSAPP175 APP175 on APP175.movmntID = a.movmntID and APP175.recSts = ''A'' -- left join ( select movmntID,isnull(grpCollalessamt,0) as grpCollalessamt -- from cbmsapp162 -- where movmntID = '''+cast(@movmntID as varchar(100))+''' -- and authSys = 1 -- and recsts = ''A'') APP162 on (a.movmntID = APP162.movmntID) -- left join cbmsapp175 APP175 on (a.movmntID=APP175.movmntID AND APP175.recSts=''A'') -- where a.applno = '''+@Applno+''' -- and a.recsts = ''A'' -- ' --set @SQLTxt02 = N'update cbmsapp100 set FTVPacc = b.FTVPacc -- from cbmsapp100 a,'+@TmpTableName+' b -- where a.applno = b.applNo -- and a.accTypCde = b.accTypCde -- and a.recsts = ''A'' -- ' --set @SQLTxt03 = N'update cbmsapp010 set FTVPerc = case when isnull(b.amt,0) > 0 and isnull(b.grpCollalessamt,0) > 0 then round(b.amt/b.grpCollalessamt * 100,2) else 0 end -- from cbmsapp010 a,( select applno,grpCollalessamt,sum(amount) as amt -- from '+@TmpTableName+' -- group by applno,grpCollalessamt) b -- where a.applno = b.applno -- and a.applno = '''+@Applno+''' ' -- --print @SQLTxt01+@SQLTxt02 -- --print @SQLTxt03 -- --print(@SQLTxt01) --EXECUTE( @SQLTxt01 + @SQLTxt02 + @SQLTxt03)