dbo.sp_ex_bc25

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

SQL Script

SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE PROCEDURE dbo.sp_ex_bc25(@id_sa_hdr bigint)
AS
BEGIN

  
 declare  @sa_no varchar(22),@tgllastin date, @kdbrgbom varchar(22)
 select @sa_no=SA_NO from tbl_sa_hdr
where id_sa_hdr = @id_sa_hdr

if (select count(*) from tbl_sa_bom where  id_sa_hdr = @id_sa_hdr) > 0
begin
  select '09' as status, ' DATA SUDAH ADA, JIKA AKAN DI GET BOM LAGI.. CANCEL DAHULU ' + cast(@id_sa_hdr as varchar ) as description
  return;

end

DECLARE db_cursorbom CURSOR FOR 
SELECT tbl_sa.ASSY_CODE 
FROM  tbl_sa 
left outer join tbl_bom_hdr on tbl_sa.ASSY_CODE = tbl_bom_hdr.ASSY_CODE
WHERE id_sa_hdr = @id_sa_hdr and tbl_bom_hdr.ASSY_CODE is null
OPEN db_cursorbom  
FETCH NEXT FROM db_cursorbom INTO @kdbrgbom
WHILE @@FETCH_STATUS = 0  
BEGIN  
 exec [spi_update_bom_ora] @kdbrgbom
      
FETCH NEXT FROM db_cursorbom INTO @kdbrgbom
END 
CLOSE db_cursorbom  
DEALLOCATE db_cursorbom
     
declare @id_bc_in_hdr bigint, @id_bc_in_dtl bigint, @jmlsat decimal(32,4), @jml_kepake decimal(32,4), @jml_tersedia decimal(32,4)
,@CAR varchar(30), @BC23no varchar(30), @BC23Tg date, @typedok varchar(20)
,@Serial int
,@KdBrg1 varchar(50)
,@BrgUrai varchar(200)
,@KdSat varchar(10)
,@DNilInv decimal(32,4)
,@KdVal varchar(10)
,@NoHs varchar(20)
,@harga_satuan decimal(32,4)
,@SERI_BAHAN_BAKU int
,@seri int
, @SERIBRG  int
declare @sisaterpenuhi decimal(32,4)

declare @id_sa bigint, @assy_code varchar(20), @total_set decimal(32,4), @seri_brg int, @tipe varchar(20),@qty_bom decimal(32,4)
,@sisakurang  decimal(32,4), @kpbc varchar(10), @tipe2 varchar(50), @tipe3 varchar(50)

declare @sama varchar(20)
set @seri = 9999 

--BEGIN TRY
-- BEGIN TRANSACTION


 DECLARE db_cursor CURSOR FOR 
 SELECT tbl_sa.id_sa, tbl_sa.ASSY_CODE, tbl_sa.TOTAL_SET * tbl_bom_dtl.QTY, tbl_sa.SERI_BRG,  substring(tbl_bom_dtl.PARTNO2, 1, 15) 
 FROM  tbl_sa inner join [tbl_bom_dtl] on  tbl_sa.ASSY_CODE =  [tbl_bom_dtl].ASSY_CODE
 WHERE id_sa_hdr = @id_sa_hdr
 order by SERI_BRG asc 
 OPEN db_cursor  
 FETCH NEXT FROM db_cursor INTO  @id_sa, @assy_code, @qty_bom , @SERIBRG, @tipe
 WHILE @@FETCH_STATUS = 0  
 BEGIN  
  set @tgllastin = (select top 1 doc_in_date  from  v_bc_in_dtl where Tipe2 like '%' + @tipe + '%'  order by doc_in_date desc)
  set @sisakurang = @qty_bom
  DECLARE db_cursor1 CURSOR FOR
   select v_bc_in_dtl.id_bc_in_hdr, v_bc_in_dtl.id_bc_in_dtl
   ,v_bc_in_dtl.CAR,v_bc_in_dtl.BC23No,v_bc_in_dtl.BC23Tg,v_bc_in_dtl.typedok
   , isnull(sum(JmlSat), 0) as jmlsat
   , isnull(sum(JUMLAH_SATUAN), 0) as jml_kepake
   , isnull(sum(JmlSat), 0)-isnull(sum(JUMLAH_SATUAN), 0) as jml_tersedia
   ,v_bc_in_dtl.Serial
   ,v_bc_in_dtl.KdBrg
   ,v_bc_in_dtl.BrgUrai
   ,v_bc_in_dtl.KdSat
   ,v_bc_in_dtl.DNilInv
   ,v_bc_in_dtl.KdVal
   ,v_bc_in_dtl.NoHs
   ,isnull(sum(v_bc_in_dtl.DNilInv), 0) / isnull(sum(JmlSat), 1) as harga_satuan
   ,v_bc_in_dtl.KdKpbc
   ,v_bc_in_dtl.Tipe
   from v_bc_in_dtl 
   left outer join tbl_sa_bom on v_bc_in_dtl.id_bc_in_dtl = tbl_sa_bom.id_bc_in_dtl
   where v_bc_in_dtl.tipe2 like '%' + @tipe + '%'   and doc_in_date >= DATEADD(MONTH, -12, '2020-04-16')   
   group by v_bc_in_dtl.id_bc_in_hdr, v_bc_in_dtl.id_bc_in_dtl,doc_in_date
   ,v_bc_in_dtl.CAR,v_bc_in_dtl.BC23No,v_bc_in_dtl.BC23Tg
   ,v_bc_in_dtl.typedok
   ,v_bc_in_dtl.Serial
   ,v_bc_in_dtl.KdBrg
   ,v_bc_in_dtl.BrgUrai
   ,v_bc_in_dtl.KdSat
   ,v_bc_in_dtl.DNilInv
   ,v_bc_in_dtl.KdVal
   ,v_bc_in_dtl.NoHs
   ,v_bc_in_dtl.KdKpbc
   ,v_bc_in_dtl.Tipe
   having  ( isnull(sum(JmlSat), 0)-isnull(sum(JUMLAH_SATUAN), 0) ) > 0
   order by doc_in_date asc
  OPEN db_cursor1  
  FETCH NEXT FROM db_cursor1 INTO  @id_bc_in_hdr , @id_bc_in_dtl , @CAR, @BC23no, @BC23Tg, @typedok, @jmlsat , @jml_kepake , @jml_tersedia 
  ,@Serial 
  ,@KdBrg1
  ,@BrgUrai 
  ,@KdSat 
  ,@DNilInv
  ,@KdVal 
  ,@NoHs
  ,@harga_satuan
  ,@kpbc
  ,@tipe3
  WHILE @@FETCH_STATUS = 0  
  BEGIN 
  

   if @seri <> @SERIBRG
   begin
    set @SERI_BAHAN_BAKU = 1
   end
   else
   begin
    set @SERI_BAHAN_BAKU = @SERI_BAHAN_BAKU + 1
   end

   set @sisakurang = @sisakurang -@jml_tersedia 
       
   if(select count(*) from referensi_pos_tarif where NOMOR_HS = @NoHs) = 0
   begin
    insert into [dbo].[referensi_pos_tarif](
     [ID]  
        ,[JENIS_TARIF_BM]
       ,[JENIS_TARIF_CUKAI]
       ,[KODE_SATUAN_BM]
       ,[KODE_SATUAN_CUKAI]
       ,[NOMOR_HS]
       ,[SERI_HS]
       ,[TARIF_BM]
       ,[TARIF_CUKAI]
       ,[TARIF_PPH]
       ,[TARIF_PPN]
       ,[TARIF_PPNBM]
    )
    exec(
    
' select [ID] ,[JENIS_TARIF_BM] ,[JENIS_TARIF_CUKAI] ,[KODE_SATUAN_BM] ,[KODE_SATUAN_CUKAI] ,[NOMOR_HS] ,[SERI_HS] ,[TARIF_BM] ,[TARIF_CUKAI] ,[TARIF_PPH] ,[TARIF_PPN] ,[TARIF_PPNBM] from openquery(TPBDB,''select * from referensi_pos_tarif where NOMOR_HS ='''''+ @nohs +
''''' limit 1 '' ) ') 
   end
       
   insert into tbl_sa_bom (
    [id_sa]
     ,[id_sa_hdr]
     ,[id_bc_in_hdr]
     ,[id_bc_in_dtl]
     ,[SA_NO]
     ,[KODE_BARANG]
     ,[PART_NO]
     ,[URAIAN]
     ,[JUMLAH_SATUAN]
     ,[JENIS_SATUAN]
     ,[CURR]
     ,[PRICE]
     ,[CIF]
    ,[NDPMB]
    ,[NDPDM_NOW]
     ,[HARGA_PABEAN]
     ,[HS]
   
     ,[NOMOR_DAFTAR_DOK_ASAL]
     ,[TANGGAL_DAFTAR_DOK_ASAL]
     ,[SERI_BARANG]
     ,[SERI_BAHAN_BAKU]
    ,[SERI_BAHAN_BAKU_ASAL]
     ,JUMLAH_SATUAN_ASAL
     ,[ASSY_NO]
     ,[KODE_JENIS_DOK_ASAL]
     ,[KODE_KANTOR]
     ,[NOMOR_AJU_DOK_ASAL]
     ,[KODE_ASAL_BAHAN_BAKU]
    
     ,[BM]
     ,[PPN]
     ,[PPH]
   -- ,[BM_RP]
   -- ,[PPN_RP]
   -- ,[PPH_RP]
   )

   select 
    @id_sa
   ,@id_sa_hdr
   ,@id_bc_in_hdr as id_bc_in_hdr 
   , @id_bc_in_dtl as id_bc_in_dtl 
   ,@sa_no
   ,@KdBrg1
   ,@tipe3
   ,@BrgUrai
   ,case when @sisakurang <= 0 then (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) else  @jml_tersedia - (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) end as diambil
   ,@KdSat 
   ,@KdVal
   ,@harga_satuan as harga_satuan
   ,@DNilInv as dnilinv
   ,dbo.get_rate_valuta(GETDATE(),'USD')
   ,dbo.get_rate_valuta(GETDATE(),@KdVal)
   --,(@harga_satuan * (case when @sisakurang <= 0 then (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) else @jml_tersedia - (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) end) ) as jmharga
   ,dbo.get_rate_valuta(GETDATE(),@KdVal) * (@harga_satuan  * (case when @sisakurang <= 0 then (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) else  @jml_tersedia - (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) end) )
   ,@NoHs
   , @BC23no
   ,@BC23Tg
   ,@SERIBRG as seribrg
   , @SERI_BAHAN_BAKU as serbrg
   ,@Serial as seribb
   ,@jmlsat as jmlsat
   ,@assy_code     
   ,case when  @typedok='BC271' then '27' else   REPLACE(@typedok,'BC','') end
   ,@kpbc
   ,@CAR
   ,case when @typedok = 'BC23' or  @typedok = 'BC27'  then 0 else 1 end 

   ,(select top 1 isnull(TARIF_BM,0)   from [dbo].[referensi_pos_tarif] where [NOMOR_HS] =  @NoHs) as BM
   ,(select top 1 isnull(TARIF_PPN,0)   from [dbo].[referensi_pos_tarif] where [NOMOR_HS] =  @NoHs) as BM
   ,(select top 1 isnull(TARIF_PPH,0)   from [dbo].[referensi_pos_tarif] where [NOMOR_HS] =  @NoHs) as BM
  -- ,( dbo.get_rate_valuta(GETDATE(),@KdVal) * (@harga_satuan * (case when @sisakurang <= 0 then (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) else @jml_tersedia - (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) end) ) * (select top 1 isnull(TARIF_BM,0) from [dbo].[referensi_pos_tarif] where [NOMOR_HS] = @NoHs) ) / 100
  -- ,( dbo.get_rate_valuta(GETDATE(),@KdVal) * (@harga_satuan * (case when @sisakurang <= 0 then (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) else @jml_tersedia - (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) end) ) * (select top 1 isnull(TARIF_PPN,0) from [dbo].[referensi_pos_tarif] where [NOMOR_HS] = @NoHs) ) / 100
  -- ,( dbo.get_rate_valuta(GETDATE(),@KdVal) * (@harga_satuan * (case when @sisakurang <= 0 then (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) else @jml_tersedia - (case when @sisakurang <= 0 then @jml_tersedia+@sisakurang else 0 end) end) ) * (select top 1 isnull(TARIF_PPH,0) from [dbo].[referensi_pos_tarif] where [NOMOR_HS] = @NoHs) ) / 100
   --
  
        
   set @seri = @SERIBRG 
   if @sisakurang <= 0 
   begin
    break
   end
      
  FETCH NEXT FROM db_cursor1 INTO  @id_bc_in_hdr , @id_bc_in_dtl , @CAR, @BC23no,@BC23Tg,@typedok, @jmlsat , @jml_kepake , @jml_tersedia 
  ,@Serial 
  ,@KdBrg1
  ,@BrgUrai 
  ,@KdSat 
  ,@DNilInv
  ,@KdVal 
  ,@NoHs
  ,@harga_satuan
  ,@kpbc
  ,@tipe3
  END 
  CLOSE db_cursor1  
  DEALLOCATE db_cursor1 

 FETCH NEXT FROM db_cursor INTO @id_sa, @assy_code, @qty_bom , @SERIBRG, @tipe
 END 
 CLOSE db_cursor  
 DEALLOCATE db_cursor  

 select '00' as status, ' DATA PROCESSED ' + cast(@id_sa_hdr as varchar ) as description
  
-- COMMIT
--END TRY
 
--BEGIN CATCH
  -- Whoops, there was an error
  --IF @@TRANCOUNT > 0
   -- ROLLBACK

  -- Raise an error with the details of the exception
  --DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
  --Set @ErrMsg = ERROR_MESSAGE()
  --set @ErrSeverity = ERROR_SEVERITY()
  --select @ErrMsg as description,@ErrSeverity as status
  --RAISERROR(@ErrMsg, @ErrSeverity, 1)
--END CATCH

 

END

GO

Used By

No items found