U8触发器

来源:互联网 发布:windows nt 4.0补丁包 编辑:程序博客网 时间:2024/05/18 04:00
USE [UFDATA_002_2016]
GO
/****** Object:  Trigger [dbo].[[tri_update_SO_SOMain_extradefine]]    Script Date: 01/25/2017 11:32:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[tri_update_SO_SOMain_extradefine]
on [dbo].[SO_SOMain_extradefine]   
for update    
as   
--if UPDATE (iQuotedPrice)   
SELECT * FROM SO_SOMain_extradefine 
 declare @tpcDepCode varchar(20)
 DECLARE @CODE varchar(20)
 SELECT @CODE = cSOCode  FROM  inserted  a inner join SO_SOMain  b
 on a.ID  =  B.ID
 select @tpcDepCode = cDepCode from SO_SOMain WHERE cSOCode = @CODE 
 if (@tpcDepCode like '106%') 
BEGIN 
 SET NOCOUNT ON; 
 declare @iNatSum numeric(15,2)  --本币价税合计
 declare @iMoney numeric(15,2)  --原币无税金额
 declare @iSum numeric(15,2)    --原币价税合计
 declare @iNatMoney numeric(15,2)  --本币无税金额 
 declare @iUnitPrice numeric(15,2)  --原币无税单价
 declare @iTaxUnitPrice numeric(15,2)  --原币含税单价
 declare @iNatUnitPrice numeric(15,2)  --本币无税单价
 declare @iDisCount numeric(15,2)  --原币折扣额
 declare @iNatDisCount numeric(15,2)  --本币折扣额
 declare @KL numeric(15,2)  --扣率
 declare @CBDEFINE6 numeric(15,2)   --自定义6  折后价格
 declare @CBDEFINE7 numeric(15,2)   --累计折扣额
 declare @CBDEFINE8 numeric(15,2)  --折扣率
  declare @CBDEFINE9 numeric(15,5)  --折后单价
 declare @isoid varchar(20)   --子表与自定义表关联ID
 declare @cSOCode varchar(20)  --销售订单号
 declare @e varchar(20)
 
--  select @isoid = A.iSOsID  , @CBDEFINE6 = CBDEFINE6,@CBDEFINE7 = CBDEFINE7 , @CBDEFINE8 = CBDEFINE8 ,@CBDEFINE9 = CBDEFINE9 from [SO_SODetails_extradefine]  a inner join SO_SODetails b
--on a.iSOsID = b.ID  where B.cSOCode = @CODE 
 
   --select @isoid = iSOsID from  inserted  b

 
-- select @e = ippartid from SO_SODetails
-- if (@e is not null)
--PRINT @E
-- ---销售订单主表 SO_SOMain  
-----销售订单子表SO_SODetails
----自定义字段表  SO_SODetails_ExtraDefine
---- select * from SO_SOMain    
----select * from SO_SODetails
--ELSE
--BEGIN
--select @isoid = iSOsID , @CBDEFINE6 = CBDEFINE6 from inserted 
--update SO_SODetails set iNatSum = @CBDEFINE6 ,iMoney = @CBDEFINE6,iSum = @CBDEFINE6,iNatMoney = @CBDEFINE6 where iSOsID = @isoid  
-- select @CBDEFINE7 = CBDEFINE7 from inserted 
-- update SO_SODetails set iDisCount = @CBDEFINE7,iNatDisCount = @CBDEFINE7  where iSOsID = @isoid  
--  select @CBDEFINE8 = CBDEFINE8 from inserted 
-- update SO_SODetails set KL = @CBDEFINE8  where iSOsID = @isoid 
-- select @CBDEFINE9 = CBDEFINE9 from inserted 
-- update SO_SODetails set iUnitPrice = @CBDEFINE9 , iTaxUnitPrice = @CBDEFINE9 , iNatUnitPrice = @CBDEFINE9  where iSOsID = @isoid 
--END
 DECLARE @socode varchar(20)
 DECLARE @actID varchar(10)
select * from SO_SOMain_extradefine
SET @socode = @CODE

--SELECT  A.ID,a.cSOCode , *  FROM  SO_SOMain A INNER JOIN SO_SODetails B
--ON A.ID = B.ID 
--WHERE A.cSOCode  LIKE '234141231231'
--if( @actID = '000002' and @socode is not null)
-- begin
 --IF EXISTS(SELECT * FROM tpjjtable)
 if object_id('tpjjtable','U') is not null
  drop table tpjjtable
 --create table #tpjjtable
 --( socode varchar(20) ,
 --  quantity int ,
 --  price numeric(10,2),
 --  total numeric(10,2)
   
 --  )

 declare @id varchar(10)
 declare @total_price numeric(10,2)
 declare @allprice numeric(10,0)
 declare @d2 int
 declare @d3 numeric(6,2)
 declare @d4 numeric(6,2)
 declare @d5 numeric(6,2)
 declare @d6 numeric(6,2)
 declare @c numeric(6,6)
 SELECT  @id = A.ID FROM  SO_SOMain A INNER JOIN SO_SODetails B
 ON A.ID = B.ID 
 WHERE A.cSOCode  LIKE @socode
 SELECT   A.ID,A .cSOCode ,b.iQuantity ,b.iQuotedPrice , (b.iQuantity *b.iQuotedPrice) as total into tpjjtable FROM  SO_SOMain A INNER JOIN SO_SODetails B
 ON A.ID = B.ID 
 WHERE A.cSOCode  LIKE @socode and cInvCode not like '99%'--'234141231231'
 select * from tpjjtable
 select @d2 = chdefine2 , @d3 = chdefine3, @d4  = chdefine4,@d5 = chdefine5, @d6 = chdefine6  from SO_SOMain_extradefine where ID = @id --1000000226 
 select @total_price = SUM(total) from tpjjtable
 set @allprice = ( @total_price * @d3 - @d2 ) * @d4 * @d5 --- @d6 
 print @allprice

set @c = @allprice / @total_price 
print @c
update SO_SODetails set KL = @c where cSOCode = @socode
--select * from #tpjjtable
update SO_SODetails set iUnitPrice = iQuotedPrice  *@c ,iTaxUnitPrice = iQuotedPrice  *@c ,iNatUnitPrice = iQuotedPrice  *@c where cSOCode = @CODE
update SO_SODetails set iSum = iUnitPrice  *iQuantity , iMoney = iUnitPrice  *iQuantity ,
iNatMoney = iUnitPrice  *iQuantity , iUnitPrice = iQuotedPrice  *iQuantity 
where cSOCode = @CODE

--数量*报价-数量*含税单价
update  SO_SODetails set iNatDisCount = ((iQuantity * iQuotedPrice) - (iQuantity*iTaxUnitPrice )),
iDisCount = ((iQuantity * iQuotedPrice) - (iQuantity*iTaxUnitPrice ))
where cSOCode = @CODE
COMMIT
 
--update SO_SODetails set iNatSum = (KL  * total) from SO_SODetails a
--inner join tpjjtable b
--on a.AutoID = b.ID

 IF EXISTS(SELECT * FROM tpjjtable)
  drop table tpjjtable
 
 
 
 
 
 END
0 0
原创粉丝点击