NJC__Documentation::DB

dbo.sp_nonhib_insertcb23_recalculate_new_inv_bl

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

Name Data Type Length Description
@nobl varchar 20
@tgbl date 3
@typebc varchar 5
@noinv varchar -1

SQL Script

SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE PROCEDURE dbo.sp_nonhib_insertcb23_recalculate_new_inv_bl
@nobl as varchar(20), @tgbl as date, @typebc as varchar(5), @noinv as varchar(MAX)

AS
BEGIN
 declare @tbl_listinv_bl table  ( id_hdr bigint,noinv varchar(60))
 declare @sts varchar(2), @desc varchar(50)
 declare @ihdr bigint, @inoinv varchar(50)
 
 declare @idata varchar(50)
 DECLARE a_cursor CURSOR FOR 
 select data from  dbo.Split( @noinv, CHAR(124))
 OPEN a_cursor
 FETCH NEXT FROM a_cursor INTO @idata
 WHILE @@FETCH_STATUS = 0 
 BEGIN -- begin here
  insert into @tbl_listinv_bl (id_hdr, noinv) values((select data from  dbo.Split( @idata, ',') where ID = 1), (select data from  dbo.Split( @idata, ',') where ID = 2))
 FETCH NEXT FROM a_cursor INTO @idata
 END
 CLOSE a_cursor
 DEALLOCATE a_cursor
 
 
 
 --select * from @tbl_listinv_bl
 
 declare @id_bc_in_hdr_processed bigint
 set @id_bc_in_hdr_processed = (select [id_bc_in_hdr] from dbo.tbl_bc_in_hdr where nobl=@nobl and tglbl=@tgbl and [typedok] = @typebc)
 
 declare @car varchar(26)
 set @car =  (select CAR from dbo.tbl_bc_in_hdr where nobl=@nobl and tglbl=@tgbl and [typedok] = @typebc)
 declare @pasokneg varchar(50)
 set @pasokneg=(select top 1 dbo.tbl_bc_in_hdr.PasokNeg from dbo.tbl_bc_in_hdr where dbo.tbl_bc_in_hdr.id_bc_in_hdr=@id_bc_in_hdr_processed )
 
 declare @tmp_newinvoice table (
  serial int,
  part_name varchar(95),
  qty float, 
  satuan_bc varchar(3),
  jmlkemas int,
  DNilInv float
  
  )
 
 
-- -- insert invoice yang di kirim
 declare @lastserial int
    set @lastserial =isnull((
 SELECT     MAX(Serial) AS serial
 FROM         tbl_bc_in_dtl
 WHERE     (id_bc_in_hdr = @id_bc_in_hdr_processed)), 0)
  
 insert into @tmp_newinvoice  (serial, part_name, qty,  satuan_bc, jmlkemas, DNilInv )
 select 
 ( select top 1 serial from tbl_bc_in_dtl where BrgUrai = a.partname and id_bc_in_hdr = @id_bc_in_hdr_processed) ,
  a.partname,
  SUM(a.INVQTY) AS sumqty,
  (ISNULL((select top 1 KD_SAT_BC from dbo.tbl_satuan_bc where KD_SAT_INTERNAL = a.UOMPFX), a.UOMPFX)), 
   SUM(a.PACK) AS sumpack,
   SUM(a.hargacif * a.INVQTY)
 FROM
   dbo.v_nonhib_inv_dtl a
   INNER JOIN @tbl_listinv_bl b ON (a.id_nonhib_hdr = b.id_hdr)
 GROUP BY
   a.partname,
   a.UOMPFX
 
 declare @n int, @serial int
 declare @part_name varchar(100)
 set @n = @lastserial+1
 DECLARE tmp_newinvoice_cursor CURSOR FOR 
 SELECT serial, part_name from  @tmp_newinvoice order by serial
 OPEN tmp_newinvoice_cursor 
 FETCH NEXT FROM tmp_newinvoice_cursor INTO @serial, @part_name
 WHILE @@FETCH_STATUS = 0 
 BEGIN -- begin here
  update @tmp_newinvoice set serial = @n where serial is null and part_name=@part_name
  set @n = @n+1
  FETCH NEXT FROM tmp_newinvoice_cursor INTO @serial, @part_name
 END
 CLOSE tmp_newinvoice_cursor
 DEALLOCATE tmp_newinvoice_cursor 
 
 
 --(select * from @tmp_newinvoice) as x
 --------select x.part_name_customs, sum(x.jmlkemas), SUM(x.qty), satuan_bc from @tmp_newinvoice x group by part_name_customs, satuan_bc
 --return
  
---- cek apakah ada data baru
if (select COUNT(*) from @tmp_newinvoice )  > 0
begin
BEGIN TRY  
BEGIN TRANSACTION
    --delete from tbl_bc_in_dtl where Serial=3 or Serial=4 or Serial=5 or Serial=6 or Serial=7
 --- update detil
 merge tbl_bc_in_dtl AS t
 using (select x.serial, x.part_name, x.jmlkemas, x.qty, x.satuan_bc, x.DNilInv from @tmp_newinvoice x) as s
 ON t.serial = s.serial and t.id_bc_in_hdr=@id_bc_in_hdr_processed
 
 --ON t.BrgUrai = s.part_name_customs and t.KdSat = s.satuan_bc
 
 --WHEN MATCHED and t.JnsBarangDtl is null
 -- THEN DELETE
 
 WHEN MATCHED THEN 
  UPDATE SET t.KemasJm=t.KemasJm+s.jmlkemas, t.JmlSat=t.JmlSat+s.qty
    WHEN NOT MATCHED BY TARGET THEN 
     INSERT (serial, id_bc_in_hdr,  [CAR], [BrgUrai], KemasJm, JmlSat, KdSat, JnsBarangDtl, TujuanKirimDtl, NoHs, 
     seriTrp, DNilInv, KemasJn, BrgAsal, kdBrg, penggunaan,
     merk, Tipe, SpfLain) 
     values (s.serial, @id_bc_in_hdr_processed, @car,  s.part_name, s.jmlkemas,s.qty, s.satuan_bc, '01','02', isnull( (select top 1 replace(tbl_data_part_hs.hs_code,'.','') from tbl_data_part_hs where tbl_data_part_hs.part_name =s.part_name) , '')
     ,'0', s.DNilInv, 'BX',  @pasokneg, isnull((select top 1 kode_brg from  dbo.tbl_custom_name where custom_name=(select top 1 a.part_name_customs from dbo.tbl_data_part_hs a where a.part_name=s.part_name)), '-'),'1',
      '-','-','-');

  -- update contener
   merge tbl_bc_in_con AS t
   using (SELECT     a.CONTNO as CONTNO FROM  tbl_nonhib_dtl a INNER JOIN @tbl_listinv_bl b ON a.id_nonhib_hdr = b.id_hdr GROUP BY a.CONTNO)  as s
   ON t.ContNo = s.CONTNO
   WHEN NOT MATCHED BY TARGET THEN 
   INSERT (id_bc_in_hdr, CAR, ContNo, ContUkur, ContTipe)
   values (@id_bc_in_hdr_processed, @car, s.CONTNO, '40' ,'F' )
   ; 
   
   
   --update dokumen
   merge dbo.tbl_bc_in_dok AS t
   using (SELECT  b.id_hdr as id_nonhib_hdr,  b.noinv as noinv FROM @tbl_listinv_bl b)  as s
   ON t.DokNo = s.noinv
   WHEN NOT MATCHED BY TARGET THEN  
   INSERT (id_bc_in_hdr, CAR, DokKd,DokNo,DokTg)
   values (@id_bc_in_hdr_processed , @car, '380', noinv , (select top 1 tglinv from dbo.tbl_nonhib where id_nonhib_hdr=s.id_nonhib_hdr) )
   ; 
 
 --update header
 update tbl_bc_in_hdr set JmCont=(select COUNT(*) as cnt from tbl_bc_in_con where id_bc_in_hdr=@id_bc_in_hdr_processed)
 ,JmBrg=(select COUNT(*) as cnt from tbl_bc_in_dtl where id_bc_in_hdr=@id_bc_in_hdr_processed) 
 ,NilInv=(select SUM(DNilInv) as asum from tbl_bc_in_dtl where id_bc_in_hdr=@id_bc_in_hdr_processed) 
 where  id_bc_in_hdr=@id_bc_in_hdr_processed
 --OUTPUT $action,
 --DELETED.serial AS tserial,
 --DELETED.JmlSat AS tJmlSat,
 --INSERTED.serial AS sserial,
 --INSERTED.[BrgUrai] AS SBrgUrai;
 --SELECT @@ROWCOUNT;
 
 -- update partnumber detil
  insert into tbl_bc_in_dtl_partnumber (
       [inv_dtl]
      ,[inv_hdr_id]
      ,[id_bc_in_hdr]
      ,[noinv]
      ,[car]
      ,part_no2
      ,[part_number]
      ,part_name
      ,[part_name_customs]
      ,[bm]
      ,[qty]
      ,[unit]
      ,[harga]
      ,[kdval]
      ,[box]
      ,[pack]
      ,hscode
      ,id_partnumber
      ,seri_detil
    
    ) select
       dbo.v_nonhib_inv_dtl.id_nonhib_dtl
      ,dbo.v_nonhib_inv_dtl.id_nonhib_hdr
      ,@id_bc_in_hdr_processed
      ,dbo.v_nonhib_inv_dtl.INVOICE_NO
      ,'-'
      ,(select top 1 dbo.tbl_data_part_hs.part_no2 from tbl_data_part_hs where tbl_data_part_hs.part_no = dbo.v_nonhib_inv_dtl.partnumberx )
      ,dbo.v_nonhib_inv_dtl.partnumberx
      ,(select top 1 dbo.tbl_data_part_hs.part_name from tbl_data_part_hs where tbl_data_part_hs.part_no = dbo.v_nonhib_inv_dtl.partnumberx )
      ,isnull(dbo.v_nonhib_inv_dtl.partnamecustoms,'-UNKNOWN' + replace(convert(varchar(255) , newid()), '-','')) as part_name_customs
      ,(isnull((select top 1 dbo.tbl_data_part_hs.bm from tbl_data_part_hs where tbl_data_part_hs.part_name = dbo.v_nonhib_inv_dtl.partnumberx ), 0) ) as bm
      ,dbo.v_nonhib_inv_dtl.INVQTY
      ,(ISNULL((select top 1 KD_SAT_BC from dbo.tbl_satuan_bc where KD_SAT_INTERNAL = dbo.v_nonhib_inv_dtl.UOMPFX), dbo.v_nonhib_inv_dtl.UOMPFX))
      ,(isnull(v_nonhib_inv_dtl.hargacif, 0)) as cekprice -- i dont know from where
      ,'USD' -- i dont know from where
      ,0 -- i dont know from where
      ,dbo.v_nonhib_inv_dtl.PACK 
      ,(isnull((select top 1 dbo.tbl_data_part_hs.hs_code from tbl_data_part_hs where tbl_data_part_hs.part_name = dbo.v_nonhib_inv_dtl.partnumberx ), '000000000') ) as hscode
      ,(isnull((select top 1 dbo.tbl_data_part_hs.id from tbl_data_part_hs where tbl_data_part_hs.part_no = dbo.v_nonhib_inv_dtl.partnumberx ), 0) ) as idpart
      ,(select top 1 Serial from tbl_bc_in_dtl where id_bc_in_hdr = @id_bc_in_hdr_processed and BrgUrai= v_nonhib_inv_dtl.partnamecustoms )
    FROM @tbl_listinv_bl a INNER JOIN
    v_nonhib_inv_dtl ON a.id_hdr = v_nonhib_inv_dtl.id_nonhib_hdr
  
 
 update dbo.tbl_nonhib set dbo.tbl_nonhib.status = 'DATA PROCESSED' where dbo.tbl_nonhib.nobl = @nobl and dbo.tbl_nonhib.tgbl = @tgbl 
 INSERT INTO tbl_bc_in_hdr_h_status
                      (id_bc_in_hdr, statusdok, status_date)
 VALUES     (@id_bc_in_hdr_processed, (select top 1 tbl_bc_in_hdr.statusdok from tbl_bc_in_hdr where tbl_bc_in_hdr.inv_hdr_id = @id_bc_in_hdr_processed), GETDATE()) 
 
 
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 status,@ErrSeverity as description
  RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH  
select '00' as status, 'Data BC Added' as description   
 
end -- end if

      
     


-- set @sts = '00'
-- set @desc = 'Data Processed'
-- goto msg

--msg:
-- select @sts as status, @desc as description

--MERGE [AS TARGET]
--USING [AS SOURCE]
--ON
--[WHEN MATCHED
--THEN ]
--[WHEN NOT MATCHED [BY TARGET]
--THEN ]
--[WHEN NOT MATCHED BY SOURCE
--THEN ];
        

END
GO

Used By

No items found