dbo.f_mutasi_wip1

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
@tgend date 3

SQL Script

SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE FUNCTION dbo.f_mutasi_wip1
( 
   @tgend date 
)
RETURNS  @mutasiwip table (
    part_no varchar(100) null
    ,part_name varchar(100) null
    ,qty float null
    ,qty_bom float null
    ,qty_pakebom float null 
    ,unit varchar(100) null
   
    )
AS
begin
declare @datesaldo date
declare @stsstockopname int, @dtsto date

set @datesaldo = (select max(date_stock) from [tbl_stock_awal] where typebahan='RM')
set @stsstockopname = 0

if (
    select count(*) from tbl_stock_opname where
 date_stock_opname between @datesaldo and @tgend
 ) > 0
begin
 set @stsstockopname = 1
 set @dtsto=(select MAX([date_stock_opname]) from [tbl_stock_opname] 
 where typebahan='RM' and date_stock_opname between @datesaldo and @tgend)
 --set @datesaldo=dateadd(day, 1, @dtsto)
 set @datesaldo=@dtsto 
end
 
;with cteparths(part_no, part_name_customs, satuan)
 as
 ( 
  select [kode_barang]
      ,[nama_barang]
      ,[satuan]
  FROM [dbo].[tbl_kode_barang]
 ),
 ctedata_out(
  part_name_customs, qty
 ) as
 (
  SELECT 
   [part_name_customs]
    ,sum([qty]) as qty
  FROM [tbl_data_out_dtl]
  inner join [dbo].[tbl_data_out_hdr] on [tbl_data_out_dtl].id_data_out_hdr=[tbl_data_out_hdr].id_data_out_hdr
  where  [type_items]='RM' and ([tbl_data_out_hdr].doc_out_to_id=1 or doc_out_to_id = 10)  and out_date between case when @stsstockopname=1 then @dtsto else @datesaldo end  and  @tgend 
  and [dbo].[tbl_data_out_hdr].approve_date is not null
  group by [part_name_customs]
 
 ) 

 insert into @mutasiwip (
  part_no
  ,part_name
  ,qty
  ,qty_bom
  ,qty_pakebom 
  ,unit
  
 )
   select cteparths.part_no, cteparths.part_name_customs, 
    isnull( ctedata_out.qty,0) as qty --(case when (isnull(sum(cte_fg_bom.qty) - isnull(sum(ctedata_out.qty),0), 0)) < 0 then 0 else (isnull(sum(cte_fg_bom.qty) - isnull(sum(ctedata_out.qty),0), 0)) end) as qty -- (tanpa kurag bom) isnull(sum(ctedata_out.qty),0) as qty
   ,isnull(cte_fg_bom.qty,0) as qty_bom
   ,case when isnull( ctedata_out.qty,0)<isnull(cte_fg_bom.qty,0) then 0 else isnull( ctedata_out.qty,0)-isnull(cte_fg_bom.qty,0) end  as hasil
 -- ,(case when (isnull(sum(ctedata_out.qty),0) - isnull(sum(cte_fg_bom.qty), 0)) < 0 then 0 else (isnull(sum(ctedata_out.qty),0) - isnull(sum(cte_fg_bom.qty), 0)) end) as qty_pakebom
   ,cteparths.satuan  as unit 
   from cteparths 
   left outer join ctedata_out on ctedata_out.part_name_customs = cteparths.part_name_customs
   left outer join [dbo].[f_fg_bom2] ( @tgend) as cte_fg_bom on cte_fg_bom.partnamecustom = cteparths.part_name_customs
    


  return
end
GO