dbo.spi_proses_inv_bc40

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

Name Data Type Length Description
@username varchar 100
@xmldata xml -1
@typebc varchar 50

SQL Script

SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

CREATE PROCEDURE dbo.spi_proses_inv_bc40
( @username varchar(100), @xmldata xml, @typebc varchar(50))
AS
BEGIN
 SET ANSI_PADDING ON
    SET CONCAT_NULL_YIELDS_NULL ON
    
    SET ANSI_NULLS ON
 SET ANSI_WARNINGS ON
   
--DECLARE @DocHandle int;
--EXEC sp_xml_preparedocument @DocHandle OUTPUT, @PARAMETER;


--EXEC sp_xml_removedocument @DocHandle;
    declare @sts varchar(2), @desc varchar(50)
    declare @tbltemp table(
 
  [maker] [varchar](50) NULL,
  [order_no] [varchar](50) NULL,
  [invoice_no] [varchar](50) NULL,
  [invoice_date] [date] NULL,
  [nobl] [varchar](50) NULL,
  [tglbl] [date] NULL
 )
    
    insert into @tbltemp (
  [invoice_no],
  [invoice_date],
  [maker],
  [order_no],
  [nobl],
  [tglbl]
    )
    
    SELECT
  fileds.value('invoiceno[1]', 'varchar(50)') as invoiceno,
  fileds.value('invoicedate[1]', 'date') as invoicedate,
  fileds.value('kodesupplier[1]', 'varchar(50)') as maker,
  fileds.value('orderno[1]', 'varchar(50)') as orderno,
  fileds.value('nobl[1]', 'varchar(50)') as invoiceno,
  fileds.value('tglbl[1]', 'date') as invoicedate
 from @xmlData.nodes('//data/dataxml') as xmldata(fileds)
 
 
 
 if (select COUNT(*) from @tbltemp where (invoice_date is null or [invoice_date] = '1900-01-01')) > 0
 begin
  select '06' as status, 'Date Invoice tidak boleh kosong' as description
  return
 end
 
 if (select COUNT(*) from (select nobl from @tbltemp group by nobl) as c) > 1 
 begin
  select '06' as status, 'Pilih No BL Yang Sama.. Jika Mau dijadikan 1 no bl, update dahulu' as description
  return
 end
 
 if (select COUNT(*) from (select nobl from @tbltemp where ([nobl] = '' or nobl = '-')   group by nobl) as c) > 0
 begin
  select '06' as status, 'No BL or Tanggal BL Tidak Boleh Kosong' as description
  return
 end 
 
BEGIN TRY  
 BEGIN TRANSACTION 
 
 declare @tgl datetime
    set @tgl = GETDATE()
    declare @nobl varchar(100), @tglbl date
    
    set @nobl = (select top 1 nobl from @tbltemp) 
    set @tglbl = (select top 1 [tglbl] from @tbltemp) 
    
    declare @maker varchar(10)
    set @maker= (select top 1 maker from @tbltemp) 
    declare @moda varchar(10)
    set @moda= (select top 1 shipping_by FROM [dbo].[tbl_invoice_bc40] where nobl=@nobl and tglbl=@tglbl and status_data='new' ) 
    declare @now date
 set @now = GETDATE()
    declare @ndpdm float
 set @ndpdm = (
  select top 1 nilai from dbo.tblKurs where (TgAkhir >= @now and TgAwal <= @now) and KdKurs = 'USD'  
 )
    
    insert into dbo.tbl_bc_in_hdr (
  [CAR]
  ,noinv
  ,tginv
  ,inv_hdr_id
  ,statusdok 
  ,typedok
  ,bc_in_from_in
  ,KdKpbc
  ,Tujuan
  ,JnsBarang
  ,TujuanKirim
  ,PasokNama
  ,PasokAlmt
  ,PasokNeg
  ,AngkutNama
  ,AngkutFl
  ,Moda
  ,KdVal
  ,NilInv
  ,KdHrg
  ,JmBrg
  ,Registrasi
  ,UsahaId
  ,UsahaNpwp
  ,UsahaNama
  ,UsahaAlmt
  ,UsahaStatus
  ,KdTPB
  ,ApiKd
  ,ApiNo
  ,KdKpbcBongkar
  ,KdKpbcAwas
  ,Namattd
  ,KotaTtd
  ,nobl
  ,tglbl
  ,Ndpbm
  ,Fob
  ,PelBkr
  ,TglTtd
  ,Bruto
  ,Netto
  ) 
      SELECT top 1
        '-'
  ,(select top 1 invoice_no from @tbltemp)
  ,(select top 1 invoice_date from @tbltemp)
  ,(select top 1 id_invoice_bc40 from [dbo].[tbl_invoice_bc40] where nobl=@nobl and tglbl=@tglbl and status_data='new')
  ,'DATA BARU' 
  ,@typebc
  ,'INVMS' --
  ,'150300'
  ,'1'
  ,'03'
  ,'02'
        ,isnull((select top 1 supplier_name from dbo.tbl_data_supplier where subcode_as400 = @maker), @maker)
  ,(select top 1 supplier_address from dbo.tbl_data_supplier where subcode_as400 = @maker)
  ,(select top 1 supplier_country from dbo.tbl_data_supplier where subcode_as400 = @maker)
      ,''
      ,''
      ,(case when @moda='AIR' then '4' when @moda='SEA' then '1' else '3' end)
      ,'IDR' as KdVal
      ,(select sum(amount) from [dbo].[tbl_invoice_bc40] where nobl=@nobl and tglbl=@tglbl and status_data='new' ) as NilInv
      ,'1' 
      ,(select count(inv_qty) from [dbo].[tbl_invoice_bc40] where nobl=@nobl and tglbl=@tglbl and status_data='new' ) as JmBrg
      ,(select top 1 Registrasi from tblImportir)
  ,(select top 1 IMPID from tblImportir)
  ,(select top 1 IMPNPWP from tblImportir)
  ,(select top 1 IMPNAMA from tblImportir)
  ,(select top 1 impalmt from tblImportir)
  ,(select top 1 usahastatus from tblImportir)
  ,(select top 1 KdTPB from tblImportir)
  ,(select top 1 ApiKd from tblImportir)
  ,(select top 1 ApiNo from tblImportir)
  ,'150300'
  ,'150300'
  ,(select top 1 Namattd from tblImportir)
  ,(select top 1 KotaTtd from tblImportir)
      ,[nobl]
      ,[tglbl]
      ,ISNULL(@ndpdm, 0)
      ,(select sum(amount) * sum(inv_qty) from [dbo].[tbl_invoice_bc40] where nobl=@nobl and tglbl=@tglbl and status_data='new' ) as Fob
      ,(case when @moda='AIR' then 'IDCGK' when @moda='SEA' then 'IDTPP' else 'IDTPP' end)
      ,GETDATE()
   ,(select sum(bruto) from [dbo].[tbl_invoice_bc40] where nobl=@nobl and tglbl=@tglbl and status_data='new' ) as bruto
   ,(select sum(netto) from [dbo].[tbl_invoice_bc40] where nobl=@nobl and tglbl=@tglbl and status_data='new' ) as netto
    FROM [dbo].[tbl_invoice_bc40]
    where nobl=@nobl and tglbl=@tglbl and status_data='new' 
    group by 
     [maker]
      ,[shipping_by]
      ,[status_inv]
      ,[nobl]
      ,[tglbl]
      ,[nocar]
      ,[tglaju]
 
 declare @idhdr bigint
 set @idhdr = @@IDENTITY
  
 -- detil inv begin here
 insert into dbo.tbl_bc_in_dtl (
  [CAR]
  ,Serial
  ,BrgUrai
  ,DNilInv
  ,NoHs
  ,id_bc_in_hdr
  ,JnsBarangDtl
  ,TujuanKirimDtl
  ,SeriTrp
  ,Merk
  ,Tipe
  ,SpfLain
  ,KdBrg
  ,JmlSat
  ,KdSat
  ,BrgAsal
  ,Penggunaan
  ,KemasJn
  ,NettoDtl
  --,KemasJm
 ) select 
  '-'
   ,row_number() over(order by (select 0))
   ,[part_name]
   ,[amount]
   ,'' as NoHs
   ,@idhdr
   ,'01'
   ,'02'
   ,'0'
   ,'-'
   ,UPPER(dbo.trim(LEFT([part_no], 15))) as Tipe
   ,'-' as SpfLain
   ,UPPER(dbo.trim(LEFT(kode_barang, 15)))
   ,[inv_qty] 
   ,UPPER(dbo.trim(LEFT(inv_unit, 3)))
   ,(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=@idhdr )
   ,'1'
   ,'CT'
   ,netto
   --,[inv_qty]
 FROM [dbo].[tbl_invoice_bc40]
    where nobl=@nobl and tglbl=@tglbl and status_data='new' 
 
 -- update dokumen
 insert into dbo.tbl_bc_in_dok (
  CAR
  ,DokKd
  ,DokNo
  ,DokTg  
     ,id_bc_in_hdr
 ) select 
   '-'
   ,'380'
   ,[invoice_no]
   ,[invoice_date]
   ,@idhdr
 from @tbltemp
 GROUP BY
  [invoice_no],
  [invoice_date]   
 
 insert into dbo.tbl_bc_in_dok (
  CAR
  ,DokKd
  ,DokNo
  ,DokTg  
     ,id_bc_in_hdr ) 
 select 
   '-'
   ,'705'
   ,[nobl]
   ,[tglbl]
   ,@idhdr
 from @tbltemp
 GROUP BY
  [nobl],
  [tglbl] 

-- tblbc23fas
 
 insert into dbo.tbl_bc_in_fas
 (
 [id_bc_in_hdr]
      ,[CAR]
      ,[Serial]
      ,[KdFasBM]
      ,[FasBM]
      ,[KdFasCuk]
      ,[FasCuk]
      ,[KdFasPpn]
      ,[FasPpn]
      ,[KdFasPph]
      ,[FasPph]
      ,[KdFasPbm]
      ,[FasPbm]
 )
 select 
   @idhdr
   ,'-'
 ,Serial
 ,'2'
 ,100
 ,''
 ,0
 ,'2'
 ,100
 ,'2'
 ,100
 ,''
 ,0
 from dbo.tbl_bc_in_dtl where id_bc_in_hdr=@idhdr  
 
 insert into tbl_bc_in_kms (
      [id_bc_in_hdr]
      ,[JnKemas]
          ,[JmKemas]
          ,[merkkemas]
     ) 
 
 select
 @idhdr
 ,'CT'
 ,sum(JmlSat)
 ,'-'
 from dbo.tbl_bc_in_dtl where id_bc_in_hdr=@idhdr 

 update [dbo].[tbl_invoice_bc40] set status_data='data processed bc' where nobl=@nobl and tglbl=@tglbl and status_data='new'
 
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 

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

msg:
  select @sts as status, @desc as description    
 
 
 
 
   
    
 --SELECT [id_invoice_bc40]
 -- ,[part_name]
 -- ,[part_no]
 -- ,[maker]
 -- ,[order_qty]
 -- ,[order_no]
 -- ,[order_date]
 -- ,[req_eta_date]
 -- ,[shipping_by]
 -- ,[invoice_no]
 -- ,[invoice_date]
 -- ,[inv_qty]
 -- ,[rec_date]
 -- ,[rec_qty]
 -- ,[status_inv]
 -- ,[amount]
 -- ,[remark]
 -- ,[nobl]
 -- ,[tglbl]
 -- ,[nocar]
 -- ,[tglaju]
 -- ,[status_data]
 -- ,[create_date]
 -- ,[create_by]
 -- ,[update_date]
 -- ,[update_by]
 -- FROM [dbo].[tbl_invoice_bc40]
 -- where nobl=@nobl and tglbl=@tglbl
 --MERGE tbl_invoice_mesinsparepart AS TARGET
 --USING @tbltemp AS SOURCE
 --on (TARGET.invoice_no = SOURCE.invoice_no and TARGET.order_no = SOURCE.order_no and TARGET.maker = SOURCE.maker )
 --WHEN MATCHED THEN
 --UPDATE SET
 --TARGET.[invoice_date] = (case when SOURCE.[invoice_date]='1900-01-01' then null else SOURCE.[invoice_date] end),
 --TARGET.update_date = @tgl,
 --TARGET.update_by = @username
 --;
END
GO

Used By

No items found