dbo.aw_fn_mutasi_wip_baru

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

SQL Script

SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

CREATE FUNCTION dbo.aw_fn_mutasi_wip_baru
( 
 @tgstart date, @tgend date
)
RETURNS  @mutasiwip table (
     kodebarang varchar(100) null
    ,namabarang varchar(100) null
    ,qty_saldoawal int null
    ,qty_in int null
    ,qty_out int null
    
    ,saldo_akhir int null
    ,stock_opname int null
    ,selisih int null
    ,unit varchar(100) null
   
    )
AS
begin

declare @datesaldoawal date
declare @datasto integer
declare @datapenyesuaian integer

declare @datafgout integer
declare @datawireloss integer
declare @datawireloss2 integer
declare @datacopperloss integer
declare @datacopperloss2 integer
-- 07012018
declare @databpbj integer

set @databpbj = (SELECT  SUM( ttlQtyMeter * copper_kgkm )/ 1000 FROM AW.DB_PASI_20201106.dbo.tbl_finish_goods where tglprod between @tgstart and @tgend 
AND ttlQtyMeter * copper_kgkm >0
)
--

set @datesaldoawal=(select top 1 tgl_sto from AW.DB_PASI_20201106.dbo.tbl_stock_wip_copper order by tgl_sto desc)

set @datawireloss=(select  (sum(isnull(total_wire,0)) * 0.75) as qty from AW.DB_PASI_20201106.dbo.tbl_real_scrap_hdr where date_start between @tgstart and @tgend and kdbrg='scr01' group by kdbrg ) 

set @datacopperloss=(select sum(isnull(total_copper,0)) as qty from AW.DB_PASI_20201106.dbo.tbl_real_scrap_hdr where date_start between @tgstart and @tgend and kdbrg='scr02' group by kdbrg ) 

set @datawireloss2=(select  (sum(isnull(total_wire,0)) * 0.75) as qty from AW.DB_PASI_20201106.dbo.tbl_real_scrap_hdr where date_start between @datesaldoawal and dateadd(day,-1, @tgstart) and kdbrg='scr01' group by kdbrg ) 
set @datacopperloss2=(select sum(isnull(total_copper,0)) from AW.DB_PASI_20201106.dbo.tbl_real_scrap_hdr where date_start between @datesaldoawal and dateadd(day,-1, @tgstart)  and kdbrg='scr02'  group by kdbrg ) 

 
;with

 ct_kodebrg (kodebarang,namabarang,satuan) as (select kdbrg, nama_barang, satuan from AW.DB_PASI_20201106.dbo.tbl_master_material_code where kdbrg='VA001' group by kdbrg,nama_barang,satuan),
 ct_saldo_awal (kodebarang,qty) as (select kodebarang,sum(qty) from aw_fn_saldo_awal_wip(@tgstart,@tgend)  group by kodebarang),  
 --ct_saldo_awal (kodebarang,qty) as (select kdbrg,sum(qty) from tbl_stock_wip_copper where tgl_sto between @tgstart and @tgend group by kdbrg),
 ct_brg_in (kodebarang,qty) as (select kode_brg,sum(isnull(jumlah,0)) from AW.DB_PASI_20201106.dbo.tbl_pemasukan_barang where tgl_receive between @tgstart and @tgend and kode_brg='VA001' group by kode_brg),
 ct_brg_in_ceisa (kodebarang,qty) as (select KODE_BARANG,sum(isnull(JUMLAH_SATUAN,0))  from AW.DB_PASI_20201106.dbo.dv_data_pemasukan_ceisa_va001 where receive_date between @tgstart and @tgend group by KODE_BARANG),
 ct_brg_out (kodebarang,qty) as (select kdbrg2,((sum(isnull(ttl_copper,0))+ isnull(@datawireloss,0)+isnull(@datacopperloss,0))* 0.5) from AW.DB_PASI_20201106.dbo.tbl_finish_goods where tglprod between @tgstart and @tgend and kdbrg2='VA001' group by kdbrg2),
 ct_stock_opname (kodebarang,qty) as (select kode_barang,sum(isnull(qty,0)) from AW.DB_PASI_20201106.dbo.tbl_stock_opname_bb where tgl_sto between @tgstart and @tgend group by kode_barang),
 ct_brg_in_awal_periode (kodebarang,qty) as (select kode_brg,sum(isnull(jumlah,0)) from AW.DB_PASI_20201106.dbo.tbl_pemasukan_barang where tgl_receive  between @datesaldoawal and dateadd(day,-1, @tgstart) and kode_brg='VA001' group by kode_brg),
 ct_brg_in_awal_periode_ceisa (kodebarang,qty) as (select KODE_BARANG,sum(isnull(JUMLAH_SATUAN,0))  from AW.DB_PASI_20201106.dbo.dv_data_pemasukan_ceisa_va001 where receive_date between  @datesaldoawal and dateadd(day,-1, @tgstart)  group by KODE_BARANG ),
 ct_brg_out_awal_periode (kodebarang, qty) as (select kdbrg2,((sum(isnull(ttl_copper,0)) + isnull(@datawireloss2,0)+ isnull(@datacopperloss2,0))* 0.5) from AW.DB_PASI_20201106.dbo.tbl_finish_goods where tglprod between @datesaldoawal and dateadd(day,-1, @tgstart) and kdbrg2='VA001' group by kdbrg2)    

 insert into  @mutasiwip (kodebarang,namabarang,qty_saldoawal,qty_in,qty_out,saldo_akhir,stock_opname,selisih,unit )
 select ct_kodebrg.kodebarang, ct_kodebrg.namabarang,
   isnull(ct_saldo_awal.qty,0) + isnull(ct_brg_in_awal_periode.qty,0) - isnull(ct_brg_out_awal_periode.qty,0) as qty_saldoawal,
   (isnull(ct_brg_in.qty,0) + isnull(ct_brg_in_ceisa.qty,0))  as qty_in,
   isnull(ct_brg_out.qty,0) as qty_out,
   --(isnull(ct_saldo_awal.qty,0) + isnull(ct_brg_in_awal_periode.qty,0) - isnull(ct_brg_out_awal_periode.qty,0)) + isnull(ct_brg_in.qty,0) - isnull(ct_brg_out.qty,0) as saldo_akhir,
   case 
   when   (select top 1 qty from AW.DB_PASI_20201106.dbo.tbl_stock_opname_wip where tgl_sto between @tgstart and @tgend) is not null then (select top 1 qty from AW.DB_PASI_20201106.dbo.tbl_stock_opname_wip where tgl_sto between @tgstart and @tgend order by tgl_sto desc)
   else (isnull(ct_saldo_awal.qty,0) + isnull(ct_brg_in_awal_periode.qty,0) + isnull(ct_brg_in_awal_periode_ceisa.qty,0) - isnull(ct_brg_out_awal_periode.qty,0)) + isnull(ct_brg_in.qty,0) + isnull(ct_brg_in_ceisa.qty,0) - isnull(ct_brg_out.qty,0) end as saldo_akhir,
   isnull(ct_stock_opname.qty,0) as qty_out,
   (case when  @datasto is null  then 0 
   else (isnull(ct_saldo_awal.qty,0) + isnull(ct_brg_in_awal_periode.qty,0) + isnull(ct_brg_in_awal_periode_ceisa.qty,0)- isnull(ct_brg_out_awal_periode.qty,0)) + isnull(ct_brg_in.qty,0)  + isnull(ct_brg_in_ceisa.qty,0) - isnull(ct_brg_out.qty,0)  end),
   
   ct_kodebrg.satuan as unit
 from ct_kodebrg  
   left outer join ct_saldo_awal on ct_kodebrg.kodebarang = ct_saldo_awal.kodebarang
   left outer join ct_brg_in on ct_kodebrg.kodebarang = ct_brg_in.kodebarang
   left outer join ct_brg_in_ceisa on ct_kodebrg.kodebarang = ct_brg_in_ceisa.kodebarang
   
   left outer join ct_brg_out on ct_kodebrg.kodebarang = ct_brg_out.kodebarang
   left outer join ct_brg_in_awal_periode on ct_kodebrg.kodebarang = ct_brg_in_awal_periode.kodebarang
   left outer join ct_brg_in_awal_periode_ceisa on ct_kodebrg.kodebarang = ct_brg_in_awal_periode_ceisa.kodebarang
   left outer join ct_brg_out_awal_periode on ct_kodebrg.kodebarang = ct_brg_out_awal_periode.kodebarang 
   left outer join ct_stock_opname on ct_kodebrg.kodebarang = ct_stock_opname.kodebarang 
   
 return
end
GO