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 |
|---|---|---|---|
| @ASSY_CODE | varchar | 255 | |
| @Tgl_keluar | date | 3 | |
| @QUANTITY | float | 8 |
SQL Script
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE FUNCTION dbo.fn_data_bahan_baku(
@ASSY_CODE varchar(255)
, @Tgl_keluar date
, @QUANTITY float
)
RETURNS @mutasi TABLE (
urut bigint identity(1,1)
, id_bc_in_hdr bigint
, id_bc_in_dtl bigint
, id_data_in_hdr bigint
, id_data_in_dtl bigint
, sisa_qty float
, kode_barang varchar(255)
, part_name_customs varchar(255)
, satuan varchar(255)
, kdval varchar(255)
, harga float
, Ndpbm float
, BC23No varchar(255)
, BC23Tg date
, typedok varchar(255)
, Kdkpbc varchar(255)
, CAR varchar(255)
, hs_code varchar(255)
, bm float
, pakai float
, serial int
, ppn float
, pph float
, cif float
, KODE_ASAL_BAHAN_BAKU int
, HARGA_PABEAN float
, bm_rp float
, ppn_rp float
, pph_rp float
PRIMARY KEY (urut,id_data_in_dtl)
)
WITH EXECUTE AS CALLER
AS
BEGIN
declare @tmp_mutasi TABLE (
urut bigint identity(1,1)
, id_bc_in_hdr bigint
, id_bc_in_dtl bigint
, id_data_in_hdr bigint
, id_data_in_dtl bigint
, sisa_qty float
, kode_barang varchar(255)
, part_name_customs varchar(255)
, satuan varchar(255)
, kdval varchar(255)
, harga float
, Ndpbm float
, BC23No varchar(255)
, BC23Tg date
, typedok varchar(255)
, Kdkpbc varchar(255)
, CAR varchar(255)
, hs_code varchar(255)
, bm float
, pakai float
, serial int
, ppn float
, pph float
, cif float
, KODE_ASAL_BAHAN_BAKU int
, HARGA_PABEAN float
, bm_rp float
, ppn_rp float
, pph_rp float
PRIMARY KEY (urut,id_data_in_dtl)
)
declare @tmp_mutasi2 TABLE (
urut bigint identity(1,1)
, id_bc_in_hdr bigint
, id_bc_in_dtl bigint
, id_data_in_hdr bigint
, id_data_in_dtl bigint
, sisa_qty float
, kode_barang varchar(255)
, part_name_customs varchar(255)
, satuan varchar(255)
, kdval varchar(255)
, harga float
, Ndpbm float
, BC23No varchar(255)
, BC23Tg date
, typedok varchar(255)
, Kdkpbc varchar(255)
, CAR varchar(255)
, hs_code varchar(255)
, bm float
, pakai float
, serial int
, ppn float
, pph float
, cif float
, KODE_ASAL_BAHAN_BAKU int
, HARGA_PABEAN float
, bm_rp float
, ppn_rp float
, pph_rp float
, doc_in_date date
PRIMARY KEY (urut,id_data_in_dtl)
)
declare @total_sum_quantity float
insert into @tmp_mutasi2 (id_bc_in_hdr, id_bc_in_dtl , id_data_in_hdr, id_data_in_dtl , sisa_qty , kode_barang, part_name_customs, satuan, kdval , harga , Ndpbm , BC23No , BC23Tg , typedok, Kdkpbc, CAR, hs_code, bm, pakai, serial, doc_in_date)
select
c.id_bc_in_hdr
, g.id_bc_in_dtl
, b.id_data_in_hdr
, a.id_data_in_dtl
,(a.qty_in * isnull(a.pengali,1)) - isnull(e.qty_pakai,0) as sisa_qty
, d.kode_barang
, d.part_name_customs
, h.satuan
, a.kdval
, a.harga
, dbo.get_rate_valuta(c.BC23Tg,a.kdval)
, c.BC23No
, c.BC23Tg
, c.typedok
, isnull(c.KdKpbcBongkar, c.Kdkpbc)
, c.CAR
, replace(d.hs_code,'.','')
, d.bm
,(a.qty_in * isnull(a.pengali,1)) - isnull(e.qty_pakai,0) as sisa_qty
, g.Serial
, b.doc_in_date
from tbl_data_in_dtl a
Left Join tbl_data_in_hdr b ON a.id_data_in_hdr = b.id_data_in_hdr
Left Join tbl_bc_in_hdr c ON b.id_terkait = c.id_bc_in_hdr AND b.doc_in_from_id IN (2,3,4,5)
left Join tbl_data_part_hs d ON d.part_no2 = replace(a.part_no,' ','')
Left Join tbl_data_in_pakai e ON a.id_data_in_dtl = e.id_data_in_dtl
Left Join tbl_bc_in_dtl g ON c.id_bc_in_hdr = g.id_bc_in_hdr AND g.KdBrg = d.kode_barang AND 1 = case
when g.Tipe = '-' then 1
when g.Tipe is null then 1
when g.Tipe = a.part_no then 1
else 0
end
Left Join tbl_kode_barang h ON h.kode_barang = d.kode_barang
where a.part_no = @ASSY_CODE
AND (b.doc_in_date BETWEEN '2016-10-31' AND @Tgl_keluar)
AND b.status = 'APPROVED'
insert into @tmp_mutasi (id_bc_in_hdr, id_bc_in_dtl , id_data_in_hdr, id_data_in_dtl , sisa_qty , kode_barang, part_name_customs, satuan, kdval , harga , Ndpbm , BC23No , BC23Tg , typedok, Kdkpbc, CAR, hs_code, bm, pakai, serial)
select id_bc_in_hdr, id_bc_in_dtl , id_data_in_hdr, id_data_in_dtl , sisa_qty , kode_barang, part_name_customs, satuan, kdval , harga , Ndpbm , BC23No , BC23Tg , typedok, Kdkpbc, CAR, hs_code, bm, pakai, serial from @tmp_mutasi2 order by doc_in_date desc
set @total_sum_quantity = (select sum(sisa_qty) from @tmp_mutasi)
DECLARE @x2x_urut bigint
DECLARE @x2x_total_quantity decimal(24,4)
select top 1 @x2x_urut=urut ,@x2x_total_quantity = total from (
select urut,(select sum(xx.pakai) from @tmp_mutasi as xx where xx.urut>=dt.urut) as total
from @tmp_mutasi as dt
)xdata
where total>=cast(@QUANTITY as decimal(38,4))
order by urut desc
delete from @tmp_mutasi
where urut<@x2x_urut;
UPDATE @tmp_mutasi
SET pakai=pakai-(@x2x_total_quantity-@QUANTITY)
where urut=@x2x_urut
insert into @mutasi (id_bc_in_hdr, id_bc_in_dtl , id_data_in_hdr, id_data_in_dtl , sisa_qty , kode_barang, part_name_customs, satuan, kdval , harga , Ndpbm , BC23No , BC23Tg , typedok, Kdkpbc, CAR, hs_code, bm, pakai, serial, KODE_ASAL_BAHAN_BAKU, ppn, pph, cif , HARGA_PABEAN , bm_rp, ppn_rp, pph_rp)
select id_bc_in_hdr, id_bc_in_dtl , id_data_in_hdr, id_data_in_dtl , sisa_qty , kode_barang, part_name_customs, satuan, kdval , harga , Ndpbm , BC23No , BC23Tg ,
case
when typedok = 'BC23' then '23'
when typedok = 'BC262' then '262'
when typedok = 'BC271' then '27'
when typedok = 'BC40' then '40'
else ''
end
, Kdkpbc, CAR, hs_code, bm, pakai, serial,
case
when typedok = 'BC23' then 0
when typedok = 'BC262' then 1
when typedok = 'BC271' then 0
when typedok = 'BC40' then 1
else ''
end
, 10, 2.5, harga * pakai, harga * pakai * Ndpbm, (harga * pakai * Ndpbm) * (bm/100), (harga * pakai * Ndpbm) * (10/100), (harga * pakai * Ndpbm) * (2.5/100)
from @tmp_mutasi
RETURN;
end;
GO
GO
CREATE FUNCTION dbo.fn_data_bahan_baku(
@ASSY_CODE varchar(255)
, @Tgl_keluar date
, @QUANTITY float
)
RETURNS @mutasi TABLE (
urut bigint identity(1,1)
, id_bc_in_hdr bigint
, id_bc_in_dtl bigint
, id_data_in_hdr bigint
, id_data_in_dtl bigint
, sisa_qty float
, kode_barang varchar(255)
, part_name_customs varchar(255)
, satuan varchar(255)
, kdval varchar(255)
, harga float
, Ndpbm float
, BC23No varchar(255)
, BC23Tg date
, typedok varchar(255)
, Kdkpbc varchar(255)
, CAR varchar(255)
, hs_code varchar(255)
, bm float
, pakai float
, serial int
, ppn float
, pph float
, cif float
, KODE_ASAL_BAHAN_BAKU int
, HARGA_PABEAN float
, bm_rp float
, ppn_rp float
, pph_rp float
PRIMARY KEY (urut,id_data_in_dtl)
)
WITH EXECUTE AS CALLER
AS
BEGIN
declare @tmp_mutasi TABLE (
urut bigint identity(1,1)
, id_bc_in_hdr bigint
, id_bc_in_dtl bigint
, id_data_in_hdr bigint
, id_data_in_dtl bigint
, sisa_qty float
, kode_barang varchar(255)
, part_name_customs varchar(255)
, satuan varchar(255)
, kdval varchar(255)
, harga float
, Ndpbm float
, BC23No varchar(255)
, BC23Tg date
, typedok varchar(255)
, Kdkpbc varchar(255)
, CAR varchar(255)
, hs_code varchar(255)
, bm float
, pakai float
, serial int
, ppn float
, pph float
, cif float
, KODE_ASAL_BAHAN_BAKU int
, HARGA_PABEAN float
, bm_rp float
, ppn_rp float
, pph_rp float
PRIMARY KEY (urut,id_data_in_dtl)
)
declare @tmp_mutasi2 TABLE (
urut bigint identity(1,1)
, id_bc_in_hdr bigint
, id_bc_in_dtl bigint
, id_data_in_hdr bigint
, id_data_in_dtl bigint
, sisa_qty float
, kode_barang varchar(255)
, part_name_customs varchar(255)
, satuan varchar(255)
, kdval varchar(255)
, harga float
, Ndpbm float
, BC23No varchar(255)
, BC23Tg date
, typedok varchar(255)
, Kdkpbc varchar(255)
, CAR varchar(255)
, hs_code varchar(255)
, bm float
, pakai float
, serial int
, ppn float
, pph float
, cif float
, KODE_ASAL_BAHAN_BAKU int
, HARGA_PABEAN float
, bm_rp float
, ppn_rp float
, pph_rp float
, doc_in_date date
PRIMARY KEY (urut,id_data_in_dtl)
)
declare @total_sum_quantity float
insert into @tmp_mutasi2 (id_bc_in_hdr, id_bc_in_dtl , id_data_in_hdr, id_data_in_dtl , sisa_qty , kode_barang, part_name_customs, satuan, kdval , harga , Ndpbm , BC23No , BC23Tg , typedok, Kdkpbc, CAR, hs_code, bm, pakai, serial, doc_in_date)
select
c.id_bc_in_hdr
, g.id_bc_in_dtl
, b.id_data_in_hdr
, a.id_data_in_dtl
,(a.qty_in * isnull(a.pengali,1)) - isnull(e.qty_pakai,0) as sisa_qty
, d.kode_barang
, d.part_name_customs
, h.satuan
, a.kdval
, a.harga
, dbo.get_rate_valuta(c.BC23Tg,a.kdval)
, c.BC23No
, c.BC23Tg
, c.typedok
, isnull(c.KdKpbcBongkar, c.Kdkpbc)
, c.CAR
, replace(d.hs_code,'.','')
, d.bm
,(a.qty_in * isnull(a.pengali,1)) - isnull(e.qty_pakai,0) as sisa_qty
, g.Serial
, b.doc_in_date
from tbl_data_in_dtl a
Left Join tbl_data_in_hdr b ON a.id_data_in_hdr = b.id_data_in_hdr
Left Join tbl_bc_in_hdr c ON b.id_terkait = c.id_bc_in_hdr AND b.doc_in_from_id IN (2,3,4,5)
left Join tbl_data_part_hs d ON d.part_no2 = replace(a.part_no,' ','')
Left Join tbl_data_in_pakai e ON a.id_data_in_dtl = e.id_data_in_dtl
Left Join tbl_bc_in_dtl g ON c.id_bc_in_hdr = g.id_bc_in_hdr AND g.KdBrg = d.kode_barang AND 1 = case
when g.Tipe = '-' then 1
when g.Tipe is null then 1
when g.Tipe = a.part_no then 1
else 0
end
Left Join tbl_kode_barang h ON h.kode_barang = d.kode_barang
where a.part_no = @ASSY_CODE
AND (b.doc_in_date BETWEEN '2016-10-31' AND @Tgl_keluar)
AND b.status = 'APPROVED'
insert into @tmp_mutasi (id_bc_in_hdr, id_bc_in_dtl , id_data_in_hdr, id_data_in_dtl , sisa_qty , kode_barang, part_name_customs, satuan, kdval , harga , Ndpbm , BC23No , BC23Tg , typedok, Kdkpbc, CAR, hs_code, bm, pakai, serial)
select id_bc_in_hdr, id_bc_in_dtl , id_data_in_hdr, id_data_in_dtl , sisa_qty , kode_barang, part_name_customs, satuan, kdval , harga , Ndpbm , BC23No , BC23Tg , typedok, Kdkpbc, CAR, hs_code, bm, pakai, serial from @tmp_mutasi2 order by doc_in_date desc
set @total_sum_quantity = (select sum(sisa_qty) from @tmp_mutasi)
DECLARE @x2x_urut bigint
DECLARE @x2x_total_quantity decimal(24,4)
select top 1 @x2x_urut=urut ,@x2x_total_quantity = total from (
select urut,(select sum(xx.pakai) from @tmp_mutasi as xx where xx.urut>=dt.urut) as total
from @tmp_mutasi as dt
)xdata
where total>=cast(@QUANTITY as decimal(38,4))
order by urut desc
delete from @tmp_mutasi
where urut<@x2x_urut;
UPDATE @tmp_mutasi
SET pakai=pakai-(@x2x_total_quantity-@QUANTITY)
where urut=@x2x_urut
insert into @mutasi (id_bc_in_hdr, id_bc_in_dtl , id_data_in_hdr, id_data_in_dtl , sisa_qty , kode_barang, part_name_customs, satuan, kdval , harga , Ndpbm , BC23No , BC23Tg , typedok, Kdkpbc, CAR, hs_code, bm, pakai, serial, KODE_ASAL_BAHAN_BAKU, ppn, pph, cif , HARGA_PABEAN , bm_rp, ppn_rp, pph_rp)
select id_bc_in_hdr, id_bc_in_dtl , id_data_in_hdr, id_data_in_dtl , sisa_qty , kode_barang, part_name_customs, satuan, kdval , harga , Ndpbm , BC23No , BC23Tg ,
case
when typedok = 'BC23' then '23'
when typedok = 'BC262' then '262'
when typedok = 'BC271' then '27'
when typedok = 'BC40' then '40'
else ''
end
, Kdkpbc, CAR, hs_code, bm, pakai, serial,
case
when typedok = 'BC23' then 0
when typedok = 'BC262' then 1
when typedok = 'BC271' then 0
when typedok = 'BC40' then 1
else ''
end
, 10, 2.5, harga * pakai, harga * pakai * Ndpbm, (harga * pakai * Ndpbm) * (bm/100), (harga * pakai * Ndpbm) * (10/100), (harga * pakai * Ndpbm) * (2.5/100)
from @tmp_mutasi
RETURN;
end;
GO