dbo.fn_data_bahan_baku

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