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_mesinsparepart_bc23
( @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_mesinsparepart] 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
)
SELECT top 1
'-'
,(select top 1 invoice_no from @tbltemp)
,(select top 1 invoice_date from @tbltemp)
,(select top 1 id_invoice_mesinsparepart from [dbo].[tbl_invoice_mesinsparepart] where nobl=@nobl and tglbl=@tglbl and status_data='new')
,'DATA BARU'
,@typebc
,'INVBP' -- '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 '4' end)
,'USD' as KdVal
,(select sum(price) from [dbo].[tbl_invoice_mesinsparepart] where nobl=@nobl and tglbl=@tglbl and status_data='new' ) as NilInv
,'1'
,(select sum(inv_qty) from [dbo].[tbl_invoice_mesinsparepart] 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_mesinsparepart] where nobl=@nobl and tglbl=@tglbl and status_data='new' ) as Fob
,(case when @moda='AIR' then 'IDCGK' when @moda='SEA' then 'IDTPP' else 'IDCGK' end)
,GETDATE()
FROM [dbo].[tbl_invoice_mesinsparepart]
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
,KemasJm
) select
'-'
,row_number() over(order by (select 0))
,[part_name]
,[price]
,'84669400' as NoHs
,@idhdr
,'01'
,'02'
,'0'
,'-'
,'-'
,'-' as SpfLain
,[part_no]
,[inv_qty]
,'PCE'
,(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'
,[inv_qty]
FROM [dbo].[tbl_invoice_mesinsparepart]
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
update [dbo].[tbl_invoice_mesinsparepart] 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_mesinsparepart]
-- ,[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_mesinsparepart]
-- 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
GO
CREATE PROCEDURE dbo.spi_proses_mesinsparepart_bc23
( @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_mesinsparepart] 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
)
SELECT top 1
'-'
,(select top 1 invoice_no from @tbltemp)
,(select top 1 invoice_date from @tbltemp)
,(select top 1 id_invoice_mesinsparepart from [dbo].[tbl_invoice_mesinsparepart] where nobl=@nobl and tglbl=@tglbl and status_data='new')
,'DATA BARU'
,@typebc
,'INVBP' -- '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 '4' end)
,'USD' as KdVal
,(select sum(price) from [dbo].[tbl_invoice_mesinsparepart] where nobl=@nobl and tglbl=@tglbl and status_data='new' ) as NilInv
,'1'
,(select sum(inv_qty) from [dbo].[tbl_invoice_mesinsparepart] 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_mesinsparepart] where nobl=@nobl and tglbl=@tglbl and status_data='new' ) as Fob
,(case when @moda='AIR' then 'IDCGK' when @moda='SEA' then 'IDTPP' else 'IDCGK' end)
,GETDATE()
FROM [dbo].[tbl_invoice_mesinsparepart]
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
,KemasJm
) select
'-'
,row_number() over(order by (select 0))
,[part_name]
,[price]
,'84669400' as NoHs
,@idhdr
,'01'
,'02'
,'0'
,'-'
,'-'
,'-' as SpfLain
,[part_no]
,[inv_qty]
,'PCE'
,(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'
,[inv_qty]
FROM [dbo].[tbl_invoice_mesinsparepart]
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
update [dbo].[tbl_invoice_mesinsparepart] 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_mesinsparepart]
-- ,[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_mesinsparepart]
-- 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
Depends On
8Used By
No items found