dbo.f_stock_card_fg

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Null on Null Input

False

Schema Bound

False

Assembly

Parameters

Name Data Type Length Description
@tgstart date 3
@tgend date 3
@part_no varchar 50

SQL Script

SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
create FUNCTION dbo.f_stock_card_fg
( 
   @tgstart date, @tgend date, @part_no  varchar(50)
)
RETURNS  @mutasiwip table (
    doc_in_no varchar(100), 
     date_in_out date, 
    tipe varchar(10), 
    [part_number] varchar(100), 
    qty_in decimal(18,4), 
    qty_out decimal(18,4),
    [doc_out_to_id] varchar(10)
    ,[doc_out_no] varchar(55)
    ,no_inv varchar(55)
   
    )
AS
begin
 declare  @saldo_awal float 
   declare @datesaldoawal date
   declare @stsstockopname int, @dtsto date
   declare @jml_in float, @jml_out float

   
    set @saldo_awal = (
   select sum(qty) from [dbo].[tbl_stock_opname] a

      where a.[date_stock_opname] = (select max([date_stock_opname]) from [dbo].[tbl_stock_opname] b
      where b.[date_stock_opname] <= @tgend 
      )  and a.typebahan = 'FG' and part_no = @part_no
      group by part_no
  )


  set   @dtsto =  (select max(dt) from (
    select [date_stock_opname] as dt from [dbo].[tbl_stock_opname] a

        where a.[date_stock_opname] = (select max([date_stock_opname]) from [dbo].[tbl_stock_opname] b
        where b.[date_stock_opname] <= @tgstart and b.typebahan  = 'FG'
        )  and a.typebahan = 'FG'
        group by part_name_customs, [date_stock_opname]
    ) as x)
  set @datesaldoawal=dateadd(day, 1, @dtsto) 

  set @jml_in = (select sum(qty_in)
     from tbl_data_in_dtl inner join tbl_data_in_hdr on tbl_data_in_hdr.id_data_in_hdr = tbl_data_in_dtl.id_data_in_hdr  
       where 
       tbl_data_in_dtl.type_brg = 2 and tbl_data_in_hdr.doc_in_date between @datesaldoawal and  dateadd(day, -1, @tgstart)
       and tbl_data_in_dtl.part_no = @part_no
     
  )

  set @jml_out = (select sum(qty) from
     ( select sum([qty] * isnull(pengali, 1)) as qty
       
      
      FROM    tbl_data_out_dtl INNER JOIN
         tbl_data_out_hdr ON tbl_data_out_dtl.id_data_out_hdr = tbl_data_out_hdr.id_data_out_hdr 
      where [type_items] = 'FG' and tbl_data_out_hdr.approve_date is not null 
      --and (doc_out_to_id <> 6)
      and  tbl_data_out_hdr.doc_out_date  between  @datesaldoawal and dateadd(day, -1, @tgstart) 
      and [tbl_data_out_dtl].assy_code = @part_no
      group by assy_code
     ) x 
  )
  set @saldo_awal=(select isnull(@saldo_awal,0 ) + (@jml_in- @jml_out))
  
  
  ;with
  cte ( 

   [doc_in_no]
     ,[date_in_out]
     ,[typedok]
     ,[CAR]
     ,[part_number]
     ,[qty_in]
     ,qty_out
     ,part_no
     ,[out_date]
     ,[doc_out_to_id]
     ,[doc_out_no]
     ,[doc_out_date]  
     ,tipe 
     ,no_inv
   )  as (
  Select
  'SALDO_AWAL'
     ,@datesaldoawal
     ,'SALDO_AWAL'
     ,NULL
     ,@part_no
     ,@saldo_awal
     ,NULL
     ,@part_no
     ,NULL
     ,NULL
     ,NULL
     ,@datesaldoawal  
     ,'SALDO_AWAL' 
     ,''
  union all 
  SELECT
     [doc_in_no]
     ,doc_in_date
     ,'FG_IN'
     ,[from_file_name]
     ,[part_no]
     ,[qty_in]

     ,NULL as qty_out
     ,NULL as part_no
     ,NULL as [out_date]
      ,'-' as [doc_out_to_id]
     ,'-' as [doc_out_no]
     ,NULL as [doc_out_date]
     ,'IN'
     ,'-' as no_inv

    FROM [dbo].[v_data_assy_in]
    where part_no = @part_no and [doc_in_date] between @tgstart and @tgend
    union all
    SELECT 
     [doc_out_no]
     ,[doc_out_date]
     ,NULL
     ,NULL
     ,assy_code
     ,NULL
     ,[qty]
     ,assy_code
     ,[out_date]
     ,[Typedok2]
     ,[CAR2]
     ,[doc_out_date]
     ,'OUT'
     ,no_inv
     
    FROM [dbo].[v_data_assy_out2]
    where assy_code = @part_no and [doc_out_date] between @tgstart and @tgend
  )
  insert into @mutasiwip(
   doc_in_no , 
     date_in_out , 
    tipe , 
    [part_number] , 
    qty_in , 
    qty_out ,
    [doc_out_to_id] 
    ,[doc_out_no] 
    ,no_inv 
  
  
  )
  select
  doc_in_no, 
  convert(char(10), [date_in_out], 126) as date_in_out, 
  tipe, 
  [part_number],
  isnull(qty_in, 0) as qty_in, 
  isnull(qty_out, 0) as qty_out
  ,[doc_out_to_id]
  ,[doc_out_no]
  ,no_inv
    from cte
  order by [date_in_out]
  return
end
--go
--select * from [dbo].[f_stock_card_fg]('2017-08-01','2017-10-01','FFX4')
GO

Used By

No items found