
Create  PROCEDURE [dbo].[Sodor_Ghest]  @Msg_num Int Output ,@Id_Ghest BigInt,@Tmp_Id Int,@Main_Id_Havaleh BigInt ,@Main_Id_Sanad BigInt
As
Declare @LastId_Ghest    Bigint
Declare  @msg            Bigint
Declare    @Act          Smallint 
Declare    @Guy_Code     VarChar(20)
Declare    @T_Bedeh      Money
Declare    @PNote        NvarChar(90)
declare   @userid        smallint

set  @msg_num = 0
set  @msg = 0

 IF (SELECT  Count(dbo.TmpGhest.Id_Ghest) FROM  dbo.TmpHeadGh INNER JOIN
                dbo.TmpGhest ON dbo.TmpHeadGh.Id_Ghest = dbo.TmpGhest.Id_Ghest
     WHERE     (dbo.TmpHeadGh.Id_Ghest = @Id_Ghest)And (dbo.TmpGhest.Bedeh > 0) ) > 0 
 Begin

     Begin Tran G_Ghest  --  

     Insert Into dbo.HeadGh(Id_Havaleh , Id_Sanad ,Id_Manual,Kind_Flag,TarikhBargeh,T_Bedeh,T_Bestan,Guy_Code,Tarikh,[User_Id],Note,Act,New_Status,Old_Status)
      Select    @Main_Id_Havaleh,@Main_Id_Sanad,Id_Manual,Kind_Flag,TarikhBargeh,T_Bedeh,T_Bestan,Guy_Code,Tarikh,[User_Id],Note,Act,New_Status,Old_status
                         From TmpHeadGH Where (Id_Ghest=@Id_Ghest) 
      IF @@Error > 0
      begin    
           Set  @msg_num = -5  
           ROLLBACK TRANSACTION G_Ghest
           RETURN @msg_num 
      end

      Select @LastId_Ghest = @@Identity
      Select @Guy_Code = Guy_Code,@Act = Act,@T_Bedeh = T_Bedeh,@pNote = Note,@userid=User_Id From HeadGh Where Id_Ghest = @LastId_Ghest

      Exec  @Msg = Create_Sanad_Ghest  @msg , @Act  ,  @Guy_Code   ,@T_Bedeh ,0 ,@PNote ,@Main_Id_Havaleh ,@LastId_Ghest, '', Null,@userid
      IF @Msg < 0  -- ǐ   
      Begin
          Set  @msg_num = @Msg
          ROLLBACK TRANSACTION G_Ghest
          RETURN @msg_num 
       End

    Insert Into Dbo.Ghest (Id_Ghest , Aghsat_Nu,Bedeh,Bestan,Date_Pa, Date_Dr,FlagTypeAghsat,NumberFactor ,New_status,Old_status,status,MonthGhest,User_Id)
    SELECT  @LastId_Ghest, Aghsat_Nu,Bedeh,Bestan,Date_Pa, Date_Dr,FlagTypeAghsat,NumberFactor,New_status,Old_status,status,MonthGhest,@userid
    FROM     dbo.TmpGhest WHERE  (dbo.TmpGhest.Id_Ghest = @Id_Ghest) And (dbo.TmpGhest.Bedeh > 0 )

     IF @@Error > 0       
     begin    
         Set  @msg_num = -5  
         ROLLBACK TRANSACTION G_Ghest
         RETURN @msg_num 
     end
     Delete from dbo.TmpHeadGh Where  Id_Ghest=@id_Ghest
 End -- If (SELECT Count(dbo.TmpGhest.Id_Ghest) FROM dbo.TmpHeadGh INNER JOIN dbo.TmpGhest ON dbo.TmpHeadGh.Id_Ghest = dbo.TmpGhest.Id_Ghest
 Else 
 Begin
     Set @Msg_Num = -10
     Return @Msg_Num
 End 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Commit Tran G_Ghest
 Set @Msg_Num = @LastId_Ghest
 RETURN @msg_num
