Create   TRIGGER [dbo].[TI_Hamrah] ON [dbo].[TmpHavaleh]
For Insert
AS 
Declare @KindFlag Char(1)

Select @KindFlag = Kind_Flag From TmpHeadH Where Id_Havaleh  = (Select Id_Havaleh From Inserted Group By Id_Havaleh)
IF  @KindFlag  not in (1,3,4)
Begin
If (Select inserted.Hamrah_Flag From inserted) = 1 
Begin -- اگر داراي همراه است 
  --تعريف متغيرهاي فچ 
  Declare @F_K_Code              Varchar(15)
  Declare @F_K_Qty1                Real
  Declare @F_EditQty_Flag    Flag
  Declare @F_Qty_K_Code     Real
  Declare @F_A_Code_H        Varchar(5)  
  -------------------------------------------------------
  -- تعريف متغيير هاي تمپ حواله
  Declare @TmpIdHavaleh     Numeric(18,0)
  Declare @TmpSender          varchar(5)
  Declare @TmpReciver         Varchar(5)
  Declare @TmpK_Code         varchar(15)
  Declare @TmpQty                Real
  Declare @TmpAutoId           Bigint
  ---------------------------------------------------------
-- تعريف متغيرهاي کمکي
  Declare @msg_num Numeric(18,0)
  Declare @Last_AutoId BigInt
---------------------------------------------------------
  -- خواندن مقادير اضافه شده در جدول تمپ حواله   
  Select   @TmpIdHavaleh=Id_Havaleh , @TmpSender=Sender , @TmpReciver=Reciver 
             , @TmpK_Code=K_Code ,  @TmpQty=K_Qty1  ,  @TmpAutoId=AutoId  From Inserted  
  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  -- تعريف يک فچ روي جدول کالاهاي همراه
  Declare HamrahFetch Cursor For
       Select   H.K_Code_H, H.K_Qty1 , H.EditQty_Flag , H.Qty_K_Code , H.A_Code_H
       From   Hamrah_Kala H
       Where H.K_Code=@TmpK_Code
  ---------------------------------------------------------------
  -- باز نمودن فايل همراه
  Open HamrahFetch
  -----------------------------------
  -- خواندن اولين رکورد جدول همراه
  Fetch Next From HamrahFetch  Into @F_K_Code , @F_K_Qty1,@F_EditQty_Flag , @F_Qty_K_Code, @F_A_Code_H
  -----------------------------------------------------
  ----------------- در اين حلقه يکي يکي کالاهاي همراه را خوانده و به تمپ حواله اضافه مي کند
   WHILE @@FETCH_STATUS = 0 Begin
       -- در صورت عوض شدن بايد تعداد همراه به همان نسبت کالاي اصلي اضافه شود
       -- 1=تعداد قابل عوض شدن است      
       -- 0=تعداد ثابت است
       
       If (@F_EditQty_Flag=1 )   AND  ( ISNULL(@F_Qty_K_Code,0)  = 0)
         Set @F_K_Qty1=@F_K_Qty1 * @TmpQty
       -----------------------------------------------------------------------------------------------------------------------       
-- قابل ويرايش و داراي شرايط جايزه
     if  (@F_EditQty_Flag=1  )  AND  ( ISNULL(@F_Qty_K_Code,0)  > 0)
          Set @F_K_Qty1 = Cast ( (@TmpQty   /@F_Qty_K_Code  )    as Int  ) *   @F_K_Qty1

-- غير قابل ويرايش و داراي شرايط  جايزه
     if  (@F_EditQty_Flag<>1 )  AND  ( ISNULL(@F_Qty_K_Code,0)  > 0)
    begin
             if  @TmpQty >=  ISNULL(@F_Qty_K_Code,0) 
                  Set @F_K_Qty1 =  @F_K_Qty1
            else
                Set @F_K_Qty1 = 0 
      end
    
     if (ISNULL(@F_A_Code_H , 0 ) <> 0 )
       Set @TmpSender =  @F_A_Code_H 
   
   if ISNULL(@F_K_Qty1,0) >0 OR  @F_K_Qty1 >0 
            Exec   Add_One_Kala   @msg_num,@Last_AutoId ,@TmpIdHavaleh ,
                                                 @TmpSender,@TmpReciver,@F_K_Code,@F_K_Qty1,@F_EditQty_Flag,@TmpAutoId,'0'

       Fetch Next From HamrahFetch  Into @F_K_Code , @F_K_Qty1,@F_EditQty_Flag  , @F_Qty_K_Code, @F_A_Code_H
  End
  -----------------------------------------------------------------------------------------------------------------------------------------
  -- بستن و غير فعال ساختن فچ
  CLOSE HamrahFetch
  DEALLOCATE HamrahFetch
  ------------------------------------------------
End
End
