--@Msg_Num=-10 با اين شمره موردي براي صدور وجود ندارد
--@Msg_Num=-11
--@msg-num = -5 خطاي سيستم


-- جدول تمپ رسيد وجه را در جدول اصلي ان کپي مي کند 
CREATE   PROCEDURE [dbo].[Sodor_Vajeh]  @Msg_num BigInt Output ,@Id_Cheqe BigInt,@Tmp_Id numeric(18,0),@Main_Id_Havaleh BigInt ,@Main_Id_Sanad bigint
As
set @msg_num=0
Declare @LastId_Cheqe Bigint
Declare @Nu_Sanad       Bigint
-- كنترل باز بودن سند
IF @Main_Id_Sanad = 0 
    SELECT @Nu_Sanad=Nu_Manual FROM dbo.heads where (DateDiff(day,Tarikh_User,getdate() ) =0 ) And (Auto=1)  and (Fiexd=1 )
Else 
    SELECT @Nu_Sanad=Nu_Manual FROM dbo.heads where Fiexd=1 And Id_Sanad = @Main_Id_Sanad
iF ( @Nu_Sanad ) > 0 
begin
   Set  @msg_num= cast ('-99'+Ltrim(str(@Nu_Sanad)) as int)-- -10  --msg-num = -10 سند مربوطه بسته است --msg-num = -10 سند مربوطه بسته است
   RETURN   @msg_num  --@@Error
 End
------------------------
Else

 If (SELECT     Count(dbo.TmpCheqe.Id_Cheqe)
     FROM       dbo.TmpHeadC INNER JOIN
                dbo.TmpCheqe ON dbo.TmpHeadC.Id_Cheqe = dbo.TmpCheqe.Id_Cheqe
     WHERE     (dbo.TmpHeadC.Id_Cheqe = @Id_Cheqe)And (dbo.TmpCheqe.CH_Price > 0) ) > 0 Begin
   
   Begin Tran F1 
-- هدر تمپ رسيد وجه را با شماره اصلي در جدول هد سي کپي مي کند
   Insert Into dbo.Headc(Id_Havaleh      ,    Id_Sanad  ,Id_Manual,Kind_Flag,Items,TarikhBargeh,TotPrice,Note,Guy_Code,Guy_Bank,AccCode,Tarikh,[User_Id], Store_Code)
               Select    @Main_Id_Havaleh,@Main_Id_Sanad,Id_Manual,Kind_Flag,Items,TarikhBargeh,TotPrice,Note,Guy_Code,Guy_Bank,AccCode,Tarikh,[User_Id], Store_code
                       From TmpHeadC Where (Id_Cheqe=@Id_Cheqe) 
    IF @@Error > 0        
    Begin 
       Set  @msg_num=-5  --msg-num = -5 خطاي سيستم
       ROLLBACK TRANSACTION 
       RETURN @msg_num --@@Error -- @msg_num
    End

    Select @LastId_Cheqe=Scope_Identity()  --  Last_Id = به دست آوردن شماره آخرين چک
   -- ديتيل مربوط رسيد وجه را از جدول تمپ در جدول اصلي کپي مي کند
    Insert Into Dbo.Cheqe (Id_Cheqe     , Ch_Note,Ch_no,Ch_Tarikh,Ch_Price,Ch_Pass,ch_pass_New,Ch_Desc,Acc_Code,Act_Code,Ch_Bank,Tmp_Main_Auto_Sanad,Guid_Cheqe, Nu_Hesab  )
      SELECT              @LastId_Cheqe, Ch_Note,Ch_no,Ch_Tarikh,Ch_Price,Ch_Pass,Ch_Pass,Ch_Desc,Acc_Code,Act_Code,Ch_Bank  ,Tmp_Main_Auto_Sanad,Guid_Cheqe, Nu_Hesab
      FROM       dbo.TmpHeadC INNER JOIN
                 dbo.TmpCheqe ON dbo.TmpHeadC.Id_Cheqe = dbo.TmpCheqe.Id_Cheqe
      WHERE     (dbo.TmpHeadC.Id_Cheqe = @Id_Cheqe) And (dbo.TmpCheqe.CH_Price > 0)

   IF @@Error > 0        
   Begin
       Set  @msg_num=-5  --msg-num = -5 خطاي سيستم
       ROLLBACK TRANSACTION 
       RETURN @msg_num --@@Error -- @msg_num
   End 
   
   -- اطلاعات مربوط به جدول لينک چک با سند را در جدول مربوطه کپي مي کند
   Insert Into Dbo.Acc_Cheqe_Link(Guid_Cheqe,Guid_Sanad )
SELECT     dbo.TmpAcc_Cheqe_link.Guid_Cheqe, dbo.TmpAcc_Cheqe_link.Guid_Sanad
FROM         dbo.TmpAcc_Cheqe_link INNER JOIN
                      dbo.TmpCheqe ON dbo.TmpAcc_Cheqe_link.Guid_Cheqe = dbo.TmpCheqe.Guid_Cheqe
     WHERE     (dbo.TmpCheqe.Id_Cheqe =@Id_Cheqe ) 

  IF @@Error > 0       
  Begin
       Set  @msg_num=-5  --msg-num = -5 خطاي سيستم
       ROLLBACK TRANSACTION 
       RETURN @msg_num --@@Error -- @msg_num
  End
    ----------------------------------------------------------------------
-- حذف اطلاعات مربوط به رسيد وجه که در جدولهاي تمپ وجود دارد لازم به ذکر است با حذف هدر دتيل آن به صورت اتوماتيک حذف مي شود
    Delete from dbo.TmpHeadc Where  Id_Cheqe=@id_Cheqe
 End --If
 Else Begin
   Set @Msg_Num=-10
   Return @Msg_Num
 End 
      
 Commit Tran F1
  Set @Msg_Num=@LastId_Cheqe
 RETURN @msg_num
