dbo.sp_bahan_baku_asal

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

Name Data Type Length Description
@id_sa_hdr bigint 8
@current_urut int 4

SQL Script

SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

CREATE PROCEDURE dbo.sp_bahan_baku_asal
(@id_sa_hdr bigint
,@current_urut int=0 OUTPUT
)
AS
BEGIN
   SET ANSI_NULLS ON
 SET ANSI_WARNINGS ON
 
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_PADDING ON
  declare  @ASSY_CODE varchar(255) 
, @id_sa bigint
, @TOTAL_SET float
, @Tgl_keluar date
, @SA_NO varchar(255)
, @ASSY_NO varchar(255)
, @PARTNO2 varchar(255)
, @QTY_BOM float
, @QUANTITY float
, @SISA_QTY float
, @KODE_BARANG varchar(255)
, @URAIAN varchar(255)
, @JENIS_SATUAN varchar(255)
, @CURR varchar(255)
, @PRICE float
, @NDPMB float
, @NOMOR_DAFTAR_DOK_ASAL varchar(255)
, @TANGGAL_DAFTAR_DOK_ASAL date
, @KODE_JENIS_DOK_ASAL varchar(255)
, @KODE_KANTOR varchar(255)
, @NOMOR_AJU_DOK_ASAL varchar(255)
, @KODE_ASAL_BAHAN_BAKU int
, @id_bc_in_hdr bigint
, @id_bc_in_dtl bigint
, @id_data_in_hdr bigint
, @id_data_in_dtl bigint
, @HS varchar(255)
, @BM float
, @CIF float
, @HARGA_PABEAN float
, @BM_RP float
, @PPN_RP float
, @PPH_RP float


declare @tmp_bom table(
 id bigint identity(1,1)
 , id_sa bigint
 , id_sa_hdr bigint
 , ASSY_CODE varchar(255)
 , ASSY_NO varchar(255)
 , SA_NO varchar(255)
 , Tgl_keluar date
 , Quantity float  
)
Declare @tmp_bom_dtl TABLE(
 ASSY_CODE varchar(255),
 PART_NO varchar(255) NULL,
 QTY decimal(38,4) NULL,
 PARTNO2 varchar(255)  ,
 ASSY_NO varchar(255) NULL,
 FLAG varchar(255) NULL,
 STATUS varchar(255) NULL,
 primary key(ASSY_CODE,PARTNO2)
) 
DECLARE @TSQL varchar(8000)
, @itemcount int
, @TSQL2 varchar(8000)


set @Tgl_keluar = getdate()
select Top 1 @Tgl_keluar = TgDok from tbl_sa_dok where id_sa_hdr = @id_sa_hdr order by TgDok ASC
 
IF CURSOR_STATUS('global','loopchecking')>=-1
BEGIN
 DEALLOCATE loopchecking
END
declare @total_ASSY_CODE int
Declare loopchecking CURSOR FOR 
 
 select id_sa, a.id_sa_hdr,a.ASSY_CODE, a.TOTAL_SET, b.SA_NO,isnull(c.total,0) as total from tbl_sa a
 left outer join vw_tbl_bom_hdr_check as c on a.ASSY_CODE=c.ASSY_CODE
 Left Join tbl_sa_hdr b ON a.id_sa_hdr = b.id_sa_hdr
 where b.id_sa_hdr = @id_sa_hdr 
 
OPEN loopchecking
FETCH NEXT FROM loopchecking INTO @id_sa, @id_sa_hdr,@ASSY_CODE, @TOTAL_SET, @SA_NO,@total_ASSY_CODE
WHILE @@FETCH_STATUS = 0 
BEGIN
 
 if(@total_ASSY_CODE)  = 0
 begin
   
  Delete From @tmp_bom_dtl

  SELECT  @TSQL = 'SELECT ASSY_CODE, NULL, ''FROMORACC'', 0, GETDATE() FROM OPENQUERY(ORACC,''SELECT * FROM PARTLIST_VIEW WHERE ASSY_CODE = ''''' + @ASSY_CODE + ''''''') GROUP BY ASSY_CODE'

  insert into dbo.tbl_bom_hdr ( ASSY_CODE, ASSY_NO, filename, itemcount, dateexec)
  EXEC (@TSQL)

  
  SELECT  @TSQL2 = 'SELECT *, replace(PART_NO,'' '','''') AS PART_NO2 FROM OPENQUERY(ORACC,''SELECT * FROM PARTLIST_VIEW WHERE PART_NO is not null and ASSY_CODE = ''''' + @ASSY_CODE + ''''''')'

  insert into @tmp_bom_dtl ( ASSY_CODE, PART_NO, QTY, PARTNO2)
  EXEC (@TSQL2)


  MERGE dbo.tbl_bom_dtl AS TARGET
  USING @tmp_bom_dtl  AS SOURCE 
  ON (  SOURCE.ASSY_CODE = TARGET.ASSY_CODE and SOURCE.PARTNO2 = TARGET.PARTNO2 )
  WHEN MATCHED
  THEN
  UPDATE set 
  TARGET.QTY = SOURCE.QTY
  ,TARGET.status_bom = (case when (select count(*) from dbo.tbl_data_part_hs where part_no2=SOURCE.PARTNO2 ) = 0 then 'not found part no' else 'ok' end)
  WHEN NOT MATCHED BY TARGET THEN
  INSERT (
   ASSY_CODE, ASSY_NO,PART_NO, QTY, PARTNO2, FLAG, STATUS
   ,status_bom

  ) VALUES (
   
   SOURCE.ASSY_CODE, SOURCE.ASSY_NO,SOURCE.PART_NO, SOURCE.QTY, SOURCE.PARTNO2, SOURCE.FLAG, SOURCE.STATUS
   , (case when (select count(*) from dbo.tbl_data_part_hs where part_no2=SOURCE.PARTNO2 ) = 0 then 'not found part no' else 'ok' end)
   
   
  );

  select @itemcount = count(*) from tbl_bom_dtl where ASSY_CODE = @ASSY_CODE
  update tbl_bom_hdr set itemcount = @itemcount where ASSY_CODE = @ASSY_CODE



 end

 
/* IF CURSOR_STATUS('global','cari_bom')>=-1 BEGIN DEALLOCATE cari_bom END Declare cari_bom CURSOR FOR select ASSY_NO, PARTNO2, QTY from tbl_bom_dtl where ASSY_CODE = @ASSY_CODE ORDER BY PARTNO2 OPEN cari_bom FETCH NEXT FROM cari_bom INTO @ASSY_NO, @PARTNO2, @QTY_BOM WHILE @@FETCH_STATUS = 0 BEGIN set @QUANTITY = @TOTAL_SET * @QTY_BOM insert into @tmp_bom (id_sa,id_sa_hdr, ASSY_CODE, ASSY_NO, SA_NO ,Tgl_keluar, Quantity) Values (@id_sa, @id_sa_hdr,@PARTNO2,@ASSY_NO, @SA_NO, @Tgl_keluar, @QUANTITY) FETCH NEXT FROM cari_bom INTO @ASSY_NO, @PARTNO2, @QTY_BOM END CLOSE cari_bom DEALLOCATE cari_bom */
  insert into @tmp_bom (id_sa,id_sa_hdr, ASSY_CODE, ASSY_NO, SA_NO ,Tgl_keluar, Quantity)
  select @id_sa, @id_sa_hdr, PARTNO2, ASSY_NO, @SA_NO, @Tgl_keluar ,@TOTAL_SET * QTY  from tbl_bom_dtl where ASSY_CODE = @ASSY_CODE ORDER BY PARTNO2
 --Values (@id_sa, @id_sa_hdr,@PARTNO2,@ASSY_NO, @SA_NO, @Tgl_keluar, @QUANTITY)

 FETCH NEXT FROM loopchecking INTO @id_sa, @id_sa_hdr,@ASSY_CODE, @TOTAL_SET, @SA_NO,@total_ASSY_CODE
END
CLOSE loopchecking    
DEALLOCATE loopchecking
 
IF CURSOR_STATUS('global','loopchecking2')>=-1
BEGIN
 DEALLOCATE loopchecking2
END
 
Declare loopchecking2 CURSOR FOR select  id_sa, id_sa_hdr , ASSY_CODE,ASSY_NO, SA_NO,Tgl_keluar, Quantity from @tmp_bom
OPEN loopchecking2
FETCH NEXT FROM loopchecking2 INTO @id_sa,@id_sa_hdr,@ASSY_CODE,@ASSY_NO,@SA_NO, @Tgl_keluar, @Quantity
WHILE @@FETCH_STATUS = 0 
BEGIN

 insert into tbl_sa_bom (id_bc_in_hdr, id_bc_in_dtl, id_data_in_hdr ,id_data_in_dtl,id_sa,id_sa_hdr,SA_NO,KODE_BARANG,URAIAN,JUMLAH_SATUAN,JENIS_SATUAN,CURR,PRICE,NDPMB,NOMOR_DAFTAR_DOK_ASAL,TANGGAL_DAFTAR_DOK_ASAL,ASSY_NO,KODE_JENIS_DOK_ASAL,KODE_KANTOR,NOMOR_AJU_DOK_ASAL,KODE_ASAL_BAHAN_BAKU, HS, BM, PPN, PPH, CIF, HARGA_PABEAN, BM_RP, PPN_RP, PPH_RP, SERI_BAHAN_BAKU_ASAL,PART_NO)
 select id_bc_in_hdr, id_bc_in_dtl, id_data_in_hdr ,id_data_in_dtl,@id_sa,@id_sa_hdr,@SA_NO,KODE_BARANG,part_name_customs,pakai,satuan,kdval,harga,Ndpbm,BC23No,BC23Tg,@ASSY_NO,typedok,Kdkpbc,CAR,KODE_ASAL_BAHAN_BAKU, hs_code, bm, PPN, PPH, CIF, HARGA_PABEAN, BM_RP, PPN_RP, PPH_RP, Serial,@ASSY_CODE from dbo.fn_data_bahan_baku(@ASSY_CODE,@Tgl_keluar,@Quantity)
 
 MERGE tbl_sa_bom AS target  
 USING ( 
  select  id_sa_bom, id_sa,id_sa_hdr
  ,ROW_NUMBER() OVER(PARTITION BY id_sa
  ORDER BY id_sa_bom) AS rownum
  from tbl_sa_bom
  where id_sa=@id_sa 
 ) AS source (id_sa_bom, id_sa,id_sa_hdr,rownum)  
 ON (target.id_sa_bom = source.id_sa_bom) AND (target.id_sa = source.id_sa)    
 WHEN MATCHED THEN   
 UPDATE SET SERI_BAHAN_BAKU = source.rownum ;  

 insert into tbl_bc_in_pakai (id_bc_in_dtl, qty_pakai, id_sa, id_sa_hdr)
 select id_bc_in_dtl, JUMLAH_SATUAN, @id_sa, @id_sa_hdr from tbl_sa_bom Where id_sa = @id_sa
  
 --VALUES (@id_bc_in_hdr, @id_bc_in_dtl, @id_data_in_hdr ,@id_data_in_dtl,@id_sa,@id_sa_hdr,@SA_NO,@KODE_BARANG,@URAIAN,@QUANTITY,@JENIS_SATUAN,@CURR,@PRICE,@NDPMB,@NOMOR_DAFTAR_DOK_ASAL,@TANGGAL_DAFTAR_DOK_ASAL,@ASSY_NO,@KODE_JENIS_DOK_ASAL,@KODE_KANTOR,@NOMOR_AJU_DOK_ASAL,@KODE_ASAL_BAHAN_BAKU, ltrim(rtrim(replace(replace(@HS,' ',''),'.',''))), @BM, 10, 2.5, @CIF, @HARGA_PABEAN, @BM_RP, @PPN_RP, @PPH_RP)

 


 FETCH NEXT FROM loopchecking2 INTO @id_sa,@id_sa_hdr,@ASSY_CODE,@ASSY_NO,@SA_NO, @Tgl_keluar, @Quantity
END
CLOSE loopchecking2    
DEALLOCATE loopchecking2
 
set @current_urut= 1 
 
END
--go
--exec('[spuload_bc25] @filepath=''C:/wamp/www/pemi/loaderfiles/exim/bc25/'', @filename=''PIB_BERKALA_242_1.csv'', @username=''admin'', @tipe=''bc25'', @trx=''add'', @id=0 ')

GO

Used By

No items found