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
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